I am building a site that will allow the site owner to add/remove pages and blog posts in different languages.

The URLs to each page or blog post looks like:

  • http://site.com/en/path/to/some/page
  • http://site.com/es/blog/path/to/some/post

I plan to add a language or country selector at the top of the page which allows a user to switch languages. When a new language is set, this language applies for the whole session (main interface language is also switched) until they switch languages again.

So, if I am browsing the english blog post http://site.com/en/blog/my-awesome-blog-post, clicking the spanish button will redirect me to http://site.com/es/blog/mi-blog-impresionante.

The problem is that blog posts/pages might be posted in one language, but it might take a while for the translated version to be translated.

In the above case, let's say the spainish version has not been created yet, what should I do?

  • Do not show a language switch button for spanish (misleading as the language switch should also switch the global site language.
  • Redirect user to a place holder page that says translation is currently unavaliable.
  • Redirect the user to the home page in spanish.
  • Anything better than the above?
  • i'd suggest a dropdown box (those div ones for style, not the standard) for each post and has a label like: "Available in:"
    – Joseph
    Commented Jan 17, 2012 at 2:01
  • Take a look at ux.stackexchange.com/a/66870/50425, i wrote about similar topic.
    – 1ubos
    Commented Oct 23, 2014 at 20:52

3 Answers 3


If you're using buttons to switch languages, I'd change the appearance of the languages that are not yet available, but still make them clickable. For example, make the buttons appear faded for languages for which a translated version of the page is not yet available.

If the user clicks a "faded" button, then switch the main interface to the language of their choice, but display the blog/page content in English. In addition, display a translated notice at the top of the page along the lines of "This page is not yet available in [language]".


I would say do not display the button for Spanish until the Spanish version is created(something like this in the code - if(spanish){display button} ), but if you must have the button at all time you should "Redirect user to a place holder page that says translation is currently unavailable."

There you could offer them to submit their emails so once the owner makes the translation you could email the user a link to the post in Spanish. You will have to write some extra code, but a really good way to solicit users for their emails :D (this is a win/win - the owner gets their emails and the users get the post translated in a language they can read.)

The only better way would be if you do not make the post public until you have the EN and the SP versions, but this way you will have to think about how long does it take for a post to be translated and if it is too long than you should go with the version above. You should ask the owner how critical is for him/her to wait until the translation to make the post public.

  • I got the impression that Spanish was just one of the possible translations.
    – Erics
    Commented Jan 17, 2012 at 0:38
  • The same applies for all languages.
    – Radi
    Commented Jan 17, 2012 at 1:00
  • A small problem with this approach is that the language selector affects the language for the whole website and not just that of the article. I could have 2 selections, language for the whole website, and then another one to select the language for an article, but my feeling is that this is way too confusing for users.
    – F21
    Commented Jan 17, 2012 at 2:05
  • I think by pressing a button to change the language people expect to see the whole website in this language, and not only the article's or the website's navigation.
    – Radi
    Commented Jan 17, 2012 at 4:49

You are overloading two functions onto a single control: switch the main language, and switch the language for this article.

Look at it from the point of view of a user arriving at the Blog, and they don't speak the language of the page they are looking at. That will be nearly all the users of this language switch feature. Most people searching will arrive at the correct language to begin with; most users won't be switching languages frequently. They will pick their language and from that point on, they will barely even be aware of the other translations.

So your most important use case is 'Help, I'm lost on a foreign language page, where is my lifeline?' They don't care if this blog post is available in another language... they need to switch even to understand the navigation features. Because of this, you should always have the language switch feature available on every page. If the target post is unavailable in the desired language, you should note this with an error or notification message (such as a red "I'm sorry, but the that post is not available in English. You have been redirected to the home page. If you are interested in translating, click here.")

Your second most common user of this feature will be bilingual, and they may be interested in seeing the article in another translation based on fluency, to practice their understanding, or to know what translations need doing. You could have a separate 'This article is available in: EN, ES, DE, IT" in a drop down or such.

But I think both these needs could be met by a single widget. At the top of the page, list the languages you support (Depending on count you could use flags, two letter codes, or full words). Languages that the current article is available in could be highlighted or bolder; languages the current article is not available in could be faded.

This method provides an escape route for single-language speakers, while simultaneously providing multilingual users information about what languages are available for the article after a couple occasions of trial and error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.