ASP.NET MVC 3 multilingual SEO - asp.net-mvc

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

Related

Rails I18n and SEO - Are HTTP Redirects Necessary?

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.

Organizing same website in different languages on a single domain

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.

Rails - search engine indexing of redirect action

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.

What is the advantage of putting the language indicator into the URL?

I'm doing a site which supports multiple languages. At the moment, I’m doing like /en/… in the URL path and using .htaccess to determine which language the user is on. Actually, this is very common for sites with multiple languages to either do http://en.example.com or http://example.com/en/.
My question is: Why is it so common to show in the URL which language the user is viewing? I can't see any technical advantages. Is it for optimizing user experience?
Because you could easily just use sessions/cookies and hide it from the user which I'm leaning to at the moment.
Thanks in advance :)
For easy bookmarking probably.
Specifying the language information in the URL is 1 way to indicate that you want to view in that particular language, ignoring your current locale.
Wrapping this information in the URL is better than using a cookie for example, as some users may delete all cookies after each browsing session.
And because of this pseudo REST like URL, /en/, it is easily bookmarkable, and search engine friendly
I think it's used as a substitute for not owning the domain within each TLD. (ie company.co.uk and company.com).
It's also usable because of the uri's possibility to be localised: ikea.com/se/stolar could be the localised variant of ikea.com/en/chairs; usable both for the end user and SEO.
It is not directory, but mod_rewrite - such url as:
http://google.pl/en
gets rewritten server side for:
http://google.pl?lang=en
and for every language it will be more handy.
Why? Because if client saves link to our page in favorites and sends it to his friend, he can pass also the language of the page he was viewing. If the default language was for example polish, and he changed it to english, he saves friend some time to search and click specific button.
If you put it in the URL the search engines will store every page in every language. If you use cookies, they will only store one. So it's more a SEO advantage I think.

Do search engine robots read localized text from resource files?

In my asp.net mvc project all text is in resource files, and in view for text values roots to the resource file. I have english and german text. Current culture is read from cookies and rooted from global.asax.
Will this work correctly with search robots or is it better to have an additional parameter value like /en/ in my url?
The question is really if search engines will use/submit a cookie, and with that be able to get to the pages in other languages. See is-localization-using-cookies-search-engine-compatible.
Make sure you also have a non cookie based way to get to those pages.
For search robots like google this will not be any problem.
Google is most professional search engine and has the possibility to see the difference between languages.
Anyways it will link most of the time to your index.

Resources