I have my personal website made with Sphinx. It generates static HTML pages. Currenty, the content is just in English or German only. I would like to expand this to multiple languages. I do not know how to structure my URLs, yet.
The following should be done:
Static folders like /_download, /_download and /_images must still be on the server only once, I do not have that much space.
The languages might be on equal footing, but that is not that important.
Old URLs still work without a problem and default to English. I do not want to cause a single 404 error.
I currently have the following ideas:
Put the English site on `example.de/, put the German site on de.example.de/ and redirect de.example.de/_download to example.de/_download with a .htaccess file.
Put the English site on example.de/ and put the German site on example.de/de/. Redirects as above.
English site on en.example.de/ and German on de.example.de/. And redirect for all languages.
English site on example.de/en/ and German on example.de/de/. Redirects as above.
What would make the most sense?
While the .de domain suffix indicates Germany, many folks associate .de with German. Displaying English by default adds confusion, which acts as a roadblock to those seeking other languages.
Setting the English site on en.example.de and German on de.example.de is most consistent, and will be most easily intuited by your multi-lingual audience.
Another option, which was not listed by the OP, would be to set the English site on example.de/en, and German on example.de/de.
Related
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'm planning to release a community website that doesn't have a PRIMARY audience that is english speaking. This means that URLs that point to /profile /forums and so on will be in english and not in their native language. I'm not concerned if a user is using the website while accessing different URL paths in English, but I am concerned if I were to use non english URLs then would a search engine pickup on pages on the website better or worse?
Anyone care to share their opinions?
In my opinion, it would be better to have URLs that reflect the primary language of your users as it would make them finding your website easier on search engines (supposing they search using their primary language). From a SEO perspective, if possible try to also include in your URLs the relevant search terms you think would be used by your audience. If you have a forum, for example, include in the thread URLs the full thread title if possible, and so on.
Sources: my own experience with building and managing powershell.it and sqlserver.it, two of the most important Italian technology-related communities.
The best place to start on this issue would be Google's Webmaster Central section on Internationalization.
If you will have versions of the same URL in multiple languages, you can connect them using the rel="alternate"mechanism, which is explained at Google's Webmaster Tools page.
1. Summary
Using non-English URLs for non-English websites is fine.
2. Argumentation
Google Senior Webmaster Trends Analyst John Mueller said in a recent SEO snippets video that using non-English URLs for non-English websites is fine and that Google is able to crawl, index and rank them.
This includes non-Latin characters in your URLs. John Mueller said “as long as URLs are valid and unique, that’s fine.” He added, “So to sum it up, yes, non-English words and URLs are fine, and we recommend using them for non-English websites.”
Read full article here.
3. Disclaimer
Data of this answer were relevant in March 2018 and may be obsolete in the future.
I'm currently writing an ASP.NET MVC 3 web application that supports multiple languages.
I already managed to translate all the routes so that calls like:
www.mysite.de/Kontakt and www.mysite.de/Contact will route to the same Controller/Action.
By design it is so that when calling www.mysite.de the language (stored in the session object) will automatically be set to a default language (here German). The navigation of the site is then dynamically setup accordingly.
The language in the session object can be changed by either hitting the "English version" link or when manually calling e.g. www.mysite.de/Contact. In this case it is recognized that the link (/Contact) matches a route that is
defined as English and so I change the language in the session object to English. Of course the content of the sites is also localized.
My question now is how does that cooperate with SEO, especially with Google?
I already add the Content-Language meta tag dynamically to each page. So I think that with a proper sitemap.xml should be sufficient.
Does Google recognize this correctly? Is it when searching Google in German that I get "Kontakt" as result and "Contact" when searching in English?
Another issue is what happens when the link is the same for different languages? E.g. the link to "Jobs" would/could be the same as well in English as in German.
I hope that the question is understandable as my issue is rather complicated.
Cheers,
Simon
Google does not only rely on you telling them what language your site is in, you only hint them.
The pages will be analyzed and presented as a page in "German" or a page in "English" based on the language of the content.
But your base assumption is correct.
Yes, if I search for your page in German, and Google has indexed the page as a page in German, Google will return Kontakt.
As for your second question, unless you provide another mean to change the language other than the path (query string or language in browser setting), those links will only be in your default (German) language.
If you would like them to appear in english, use a different, additional URL: Jobs-EN that you only have in your SiteMap.xml (and route, of course).
Another issue is what happens when the link is the same for
different languages? E.g. the link to "Jobs" would/could be
the same as well in English as in German.
You might consider having the language as part of your URL, for example:
www.mysite.de/de/Kontakt
www.mysite.de/en-us/Contact
www.mysite.de/en-gb/Contact
I have a multilingual site with the same content in different languages with descriptive seo urls incorporating the title of each pages article. To switch between said languages of translated articles I have an action which looks up the translated title using the previous language and redirects to it. This all works fine except I noticed, despite there being no view, google has indexed said redirect urls.
Is this bad practice? I don't want to 301 redirect as it seems having links on every page to 301 redirects is a really bad idea. Do I somehow include a meta tag or is there some other approach?
The reason I currently have this is I want each article page to link to all of its translations using flags at the top of each page. The more I think about it I should just generate the direct url as this itself may have seo benefits. The reason I didn't go down this path originally was page rendering speed. I'd have to look up multiple articles solely for their url slug and expire caches of all languages upon any title change (it's a wiki style user generated content). Also, in some cases a translation wouldn't exist in which case I would need to link instead, say, to the category of article with a flash message.
So thinking through this while writing maybe this seems the preferable if more difficult to implement solution?
Hey Mark, from a search engine perspective you definitely don't want to rely on redirects everywhere, if for nothing other than performance. Search engines allocate a certain amount of bandwidth to each site based on ranking, if you're redirecting every page, you're eating up more of that bandwidth than you need to, and potentially not getting as much content crawled as you could otherwise.
Your second solution of generating the localized URLs and sticking them at the top of the page is the best option for search engines. That will give a unique URL for each page, and will provide a direct link to each page that Google and Bing (e.g. Yahoo) can follow and index.
I provided a set of best practices for SEO & Localized sites on another stackoverflow Q&A, here's a link, I think you'll find it valuable too: Internationalization and Search Engine Optimization
Good luck!
I have an app that I'm building that supports ten languages: English, simplified and traditional Chinese, French, Spanish, Russian, Japanese, German, and Hindi.
I tried a number of things but what I ended up doing was making :en default and then switching by where the request was coming from and then when uses signup they can set a default language. So if it was coming from mainland China I use :scn, and if it comes from Hong Kong I use :tcn traditional Chinese/simplified Chinese.
This way the application maintains a state of a language and there is no redirection.
I think any redirection is going to be troublesome so I wouldn't do that. Also, I am working on a dynamic site map that will list all of the links to google, which will have 10 different translations per 'page'.
I haven't deployed my application yet so I cannot check the Chinese search engines etc... to see if they are indexing my content.
Can someone tell me how to set language of a web page on the knowledge of IP address of visitor so that he automatically gets page in his country's language. Of course if that language is implemented by web developer. Even better I sow some examples of automatic Google translation of the text.
So how to achieve that visitor from USA gets text on my page in English and visitor from France in French. All that translated by Google from some third original language.
Thanks a lot.
When it come to automatic language selection I'd go the mod_rewrite route if you're using Apache. It's easier to change in a production environment that touching application code. mod_rewrite grabs the "Accept-Language" out of the header then applies the rewrite rule.
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ /fr/ [L,R=301]
You can stack the rewrite conditions and rules to work as a catch all language variations (fr, fr-ca, fr-fr, fr-mo, fr-ch all go to fr)
Checkout the official mod-rewrite documentation
good language example:
http://tech-blog.borychowski.com/index.php/2009/03/htaccess/redirect-according-to-browser-language-mod-rewrite-and-http_accept_language/
Once you push the user to the right general language (when none is defined in the URL) the application can set a session language, write links with the set lang. It's also good to allow people to change language on the fly since most users in bilingual locals (i.e. Quebec) work in more than one language. I've worked with French speaking programmers who prefer reading technical documents in English.
When it comes to Google translating text I'd be careful. If you're doing any e-commerce transaction your international customers (or local customers with international browser settings) may get incorrect or inaccurate product information, descriptions and "terms and conditions". If you don't save the exact Google translation text to your DB for every on the fly translation there is no way to track what the user has committed to in their language. Some non-translated legal copy may be in order.
I hope this helps.
Either:
Guess language from location (which you can get from their IP).
Look at the request header's "accept-language" value.
To see what's in your request header, have a look here: http://www.ericgiguere.com/tools/http-header-viewer.html
This is a bad idea from the offset.
Geolocating on IP address doesn't always work (and doesn't work if you use TOR)
Even if you get this right, what would you do for countries like Canada or Switzerland?
Automatic translation is ok, but it would be better to tell someone that you don't have the site in their language - they may then prefer to read it in a different language.