We upgraded from Kentico 8.2 to (9 and then to) 10 and lost our Language Selector. It was in our master page and appears throughout our site. We've switched to the LanguageDataSource but it was not returning all available languages. Rather, it was returning only the languages into which the current page was translated. In other words, if the current page has English and German versions, the language data source would only return English and German, but not Spanish, even though we have Spanish enabled in Kentico.
We found the checkbox which excludes untranslated pages (and defaults to checked) and unchecked it. This appeared to fix the problem, as English/German pages now showed the French option as well. However, we learned that when an unauthenticated user views the same page, (s)he only sees the English and German.
How do we get the language data source to return all available languages, rather than just the languages into which the current page has been translated, and get it to do so for all users, rather than just authenticated users?
This functionality was probably dropped in the version 9. There's probably no way of doing it without a piece of custom code. However, you can recover the abandoned web part as described in the documentation.
It turned out that the master page had two language data sources on it. One was used for desktops and one for mobile. The strange behavior was due to the mobile one having the 'exclude untranslated pages' checked. The result of this was being cached and was also being used in the desktop one. We removed the extra data source (though it probably would have worked fine if we had just unchecked the exclude box in the mobile data source) and the remaining one behaves as desired. Thanks, everyone, for the input.
Related
So after much effort and pain (I'm an iOS developer, not a web developer), I have my website (https://359north.com) set up to support 16 different languages/countries (thanks https://ahrefs.com - I get 100% on their site audit). Set up like https://359north.com/it/ etc. for the various country/language combinations.
I'd like to make sure this setup actually works.
It seemed reasonable to test in the iOS Simulator by setting the region and language to Italia and Italiano. Using Safari, some sites like google.com and Mozilla.org show up correctly in Italian, while others like ibm.com and Microsoft.com do not.
When the phone is set to Italian, 359north.com displays in English, not Italian, and when I search for it in Google (359north) it comes back with a link to the US English site (the main site).
Am I doing something wrong here? The website is on Github Pages at https://github.com/359north/359north.github.io
I currently have an English language Rails application that I am internationalizing to support Chinese(zh) translations.
The original URL structure is standard:
www.mysite.com, www.mysite.com/pages, ...
I've implemented the I18n using the standard Rails gem implementation, using the subfolder approach.
I now see the following:
Country-specific pages show as www.mysite.com/en, www.mysite.com/zh,
www.mysite.com/en/pages, www.mysite.com/zh/pages, etc.
The root URL, www.mysite.com, now displays the home page based
upon the last known language setting, i.e., if viewing Chinese
pages, going to www.mysite.com will show the www.mysite.com/zh
content (URL remains www.mysite.com). The same for English.
Will the new route, www.mysite.com/en, affect the link juice already attributed to www.mysite.com?
If yes, how do I redirect so that the English pages remain as www.mysite.com/ vs www.mysite.com/en/?
How do I ensure that going to www.mysite.com always displays the English homepage, regardless of current language selection, and www.mysite.com/zh/ is the only way to display the Chinese homepage?
note: Language selection is chosen by the user through a button in the header - no geolocation, browser language settings, etc.
Will the new route, www.mysite.com/en, affect the link juice already
attributed to www.mysite.com?
Using a consistent 301 redirect will not impact it much at all. Assuming your users come from Google, the new link will eventually replace the old link - and any minor penalties from redirects will dissolve as old backlinks fade and new ones reference the new 'main' page.
If yes, how do I redirect so that the English pages remain as
www.mysite.com/ vs www.mysite.com/en/?
You can host the english just on the root if you want. Or on /en/. But don't do both. This duplicates the content and confuses Google unless you use a rel=canonical to tell it which is the default. If you're running a multi lingual site - you want different directories for different languages. Set the language they choose via Cookie and you can redirect when the arrive to the correct page then.
How do I ensure that going to www.mysite.com always displays the
English homepage, regardless of current language selection, and
www.mysite.com/zh/ is the only way to display the Chinese homepage?
I've a better question - do you expect your users to always discover you via Google? If so, use hreflang codes either on your pages or sitemap (or both). This will ensure only the relevant language page comes up in a search from your targeted language region. You can broadly target 'en' rather than a region specific code and this will work.
I would like to get translation from one ( best - automatically detected) language to 4 different using google-translate. My idea is to wrote a html document which contain 4 frames - in one of them I can find text form and button. After click on it, Internet browser will send demand to google translate and show results in 4 frames.
If you want a self service, hosted service that does translations and content management for you check out Localize.js
This is going to be terribly translated. As someone that speaks English well, Russian poorly, and Spanish even more poorly, I can detect that these auto-translations never come out right.
My recommendation is to serve your page through a basic system that will allow you to respond to submitted form values. Pass in &LANG=two country iso code and then have your backend serve up the correct data.
Have someone that speaks both languages prepare the content for you. Then, whenever you are serving these pages, you can also conditionally adjust CSS to account for differences in format which come from difference in language length.
If you don't have those capabilities available, make 5 pages. One in English and the other 4 in the other languages. You will seriously seem retarded to anyone that speaks those languages well if you use an auto-translate. I think this is a bad idea for any kind of professional page, even if you can work out the technical issues.
-Brian J. Stinar-
Google has an API to its translate tool that will enable you to send it some text and receive back that text translated into any language you choose.
edit: This is now a paid service
I would show IE6 visitors a site with limited css (Progressive Enhancement) but would also like them to gently show a header informing them they can/should upgrade to a modern browser. There are initiatives out there, like ie6nomore, who do just that. But the list of modern browsers and the headertext is hardcoded.
My site is localised, so I rather have a link to an external website, that autodetects their browser language, and informs them of modern browsers in their own langauge.
That way my 'advice' will always be up to date and fully localized.
It's not a complete list, but Microsoft had to setup a browser choise page which shows the top 12 browsers, based on market share. This list will be re-evaluated every six months.
You can read more about this here:
Browser Choice FAQ
So if you detect an old browser, you could display a nice message and a link to this page.
Hope that helps.
At least safari goes directly to the windows download, so its not really a universal solution.
And its only in english.
The browser landingpages are available in all languages, so so should be the browserchoice page. Unlike firefox and chrome apple doesn't have an auto browser language detecting landingpage, so I rerouted it via google search to achieve that.
(why can't I add this as a comment to the previous post?)
Scenario
The web server gets a request for http://domain.com/folder/page. The Accept-Language header tells us the user prefers Greek, with the language code el. That's good, since we have a Greek version of page.
Now we could do one of the following with the URL:
Return a Greek version keeping the current URL: http://domain.com/folder/page
Redirect to http://domain.com/folder/page/el
Redirect to http://domain.com/el/folder/page
Redirect to http://el.domain.com/folder/page
Redirect to http://domain.com/folder/page?hl=el
...other alternatives?
Which one is best? Pros, cons from a user perspective? developer perspective?
I would not go for option 1, if your pages are publically available, i.e. you are not required to log in to view the pages.
The reason is that a search engine will not scan the different language versions of the page.
The same reason goes agains option no 5. A search engine is less likely to identify two pages as separate pages, if the language identification goes in the query string.
Lets look at option 4, placing the language in the host name. I would use that option if the different language versions of the site contains completely different content. On a site like Wikipedia for example, the Greek version contains its own complete set of articles, and the English version contains another set of articles.
So if you don't have completely different content (which it doesn't seem like from your post), you are left with option 2 or 3. I don't know if there are any compelling arguments for one over the other, but no. 3 looks nicer in my eyes. So that is what I would use.
But just a comment for inspiration. I'm currently working on a web application that has 3 major parts, one public, and two parts for two different user types. I have chosen the following url scheme (with en referring to language of course):
http://www.example.com/en/x/y/z for the public part.
http://www.example.com/part1/en/x/y/z for the one private part
http://www.example.com/part2/en/x/y/z for the other private part.
The reason for this is that if I were to split the three parts up into separate applications, it will be a simple reconfiguration in the web server when I have the name of the part at the top of the path. E.g. if we were to use a commercial CMS system for the public part of the site
Edit:
Another argument against option no. 1 is that if you ONLY listen to accept-language, you are not giving the user a choice. The user may not know how to change the language set up in a browser, or may be using a frinds computer setup to a different language. You should at least give the user a choice (storing it in a cookie or the user's profile)
I'd choose number 3, redirect to http://example.com/el/folder/page, because:
Language selection is more important than a page selection, thus selected language should go first in a true human-readable URL.
Only one domain gets all Google's PR. That's good for SEO.
You could advert your site locally with a language code built-in. E.g. in Greece you would advert as http://example.com/el/, so every local visitor will get to a site in Greece and would avoid language-choosing frustration.
Alternatively, you can go for number 5: it is fine for Google and friends, but not as nice for a user.
Also, we should refrain to redirect a user anywhere, unless required. Thus, in my mind, a user opening http://example.com/folder/page should get not a redirect, but a page in a default language.
Number four is the best option, because it specifies the language code pretty early. If you are going to provide any redirects always be sure to use a canonical link tag.
Pick option 5, and I don't believe it is bad for SEO.
This option is good because it shows that the content for say:
http://domain.com/about/corporate/locations is the same as the content in
http://domain.com/about/corporate/locations?hl=el except that the language differs.
The hl parameter should override the Accept-language header so that the user can easily control the matter. The header would only be used when the hl parameter is missing. Granted linking is a little complicated by this, and should probably be addressed through either a cookie which would keep the redirection going to the language chosen by the hl parameter (as it may have been changed by the user from the Accept-language setting, or by having all the links on the page be processed for adding on the current hl parameter.
The SEO issues can be addressed by creating index files for everything like stackoverflow does, these could include multiple sets of indices for the different languages, hopefully encouraging showing up in results for the non-default language.
The use of 1 takes away the differentiator in the URL. The use of 2 and 3 suggest that the page is different, possibly beyond just language, like wikipedia is. And the use of 4 suggests that the server itself is separated, perhaps even geographically.
Because there is a surprisingly poor correlation of geographic location to language preferences, the issue of providing geographically close servers should be left to a proper CDN setup.
My own choice is #3: http://domain.com/el/folder/page. It seems to be the most popular out there on the web. All the other alternatives have problems:
http://domain.com/folder/page --- Bad for SEO?
http://domain.com/folder/page/el --- Doesn't work for pages with parameters. This looks weird: ...page?par1=x&par2=y/el
http://domain.com/el/folder/page --- Looks good!
http://el.domain.com/folder/page --- More work needed to deploy since it requires adding subdomains.
http://domain.com/folder/page?hl=el --- Bad for SEO?
It depends. I would choose number four personally, but many successful companies have different ways of achieving this.
Wikipedia uses subdomains for various
languages (el.wikipedia.org).
So does Yahoo (es.yahoo.com for Spanish), although it doesn't support Greek.
So does Gravatar (el.gravatar.com)
Google uses a /intl/el/ directory.
Apple uses a /gr/ directory (albeit in English and limited to an iPhone page)
It's really up to you. What do you think your customers will like the most?
None of them. A 'normal user' wouldn't understand (and so remember) any of those abbreviations.
In order of preference I'd suggest:
http://www.domain.gr/folder/page
http://www.domain.com/
http://domain.com/gr/folder/page
3 or 4.
3: Can be easily dealt with using htaccess/mod_rewrite. The only downside is that you'd have to write some method of automatically injecting the language code as the first segment of the URI.
4: Probably the best method. Using host headers, it can all be sent to the same web application/content but you can then use code to extract the language code and go from there.
Simples. ;)
I prefer 3 or 4