Blog

Wrapping up i18n

We migrated this website to a new platform, and are working to correct formatting errors in older blog posts as a result. If you encounter an error, please send an email to scholarslab@virginia.edu. Thanks!

Yesterday I was able to wrap up the internationalization of the site. It took us a while to figure out how we wanted the user to choose languages. We have several options: A setting on the browser can decide; users can indicate their preferences in the user account; we can have the location of your IP address decide for you. In the end we opted for the language link approach. No flags in our case, just links with the name.

Once the links were made, the next challenge was to make the language choices stick. In order to accomplish this, I had to set all link methods in our rails application attach the ?locale parameter automatically. In practice this meant that every link helper in any of our pages would generate the right language after we had already set the variable for locale at least once. If you didn’t do anything the locale would default to English.

Hard links were a completely different matter. Thus far, I was only able to find one hard-link to worry about: the link to the about page on the header section. In order to deal with hard links we had to come up with a little rails hack. We (I had help from Eric Rochester figuring this one out) sent a variable from the actual header tag back into the yml file to have the yml file generate the links in the right language. The code looks something like this:

on app/views/layouts/_header.html.erb

<p class="description"><%= t 'header.description_html',
:about_url => url_for(:controller => 'pages', :action =>
'about') %></p>

on the config/locales yml files

   description: >
      Prism es un conjunto de herramientas que sirven
      para <a href='%{about_url}'>colectivizar la
      interpretación </a>de textos...
Cite this post: Alex Gil. “Wrapping up i18n”. Published April 03, 2012. https://scholarslab.lib.virginia.edu/blog/wrapping-up-i18n/. Accessed on .