4. September 2013 12:48
According to W3 we should put a language attribute in our HTML tag. I’ve seen a lot of ugly and unmaintainable solutions for putting language tags in the HTML. With MVC the problem is less
With ugly I mean the following: you don’t want to encapsulate one tag in a macro. Do you? As you might know, I hate inline macro’s anyway.
<umbraco:Macro language=”cshtml” runat=”server”>
with unmaintainable I mean:
<html lang=”<umbraco:item field=”lang” runat=”server” recursive=”true”/>”>
You don’t want to allow the user to choose and mistype the language. Certainly because you already set the culture on the root node?
Set culture on root node
If you haven’t you should. It’s not difficult. Right click the home page node, and choose “Manage hostnames”.
The best solution?
If you have set the culture on the parent node, you can reuse default “CurrentCulture” ASP.net object to pick up the language. I’ve added the namespace so that it works for less technical readers, but you could strip that out off course.
<html lang="<%= System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.ToLower() %>">
If you use MVC in umbraco it’s even more readable:
How do you solve this? Let me know in the comments!