View Source Strings File and I18n
It's a good idea to extract any human-readable strings in your application out into a configuration file. The reason is two-fold:
- It makes it easier for developers to update "copy" in the application and even allows non-developers on a team to make copy changes.
- When your application supports multiple languages, it is easy for translators to provide translations for all of your copy at once.
In Legendary, we provide a set of tools for doing this via linguist.
- (English) strings are stored in config/i18n/en.yml.
- You can call
Legendary.I18n.t!/2
to get a string by its key. For example:Legendary.I18n.t! "en", "site.title"
retrieves the english version of the string labeled "title" under the section "site" on en.yml.
Tip: if you use t! a lot (good job!), you can import it in your view module to save some typing like
import Legendary.I18n, only: [t!: 2]
and then use it like<%= t! "en", "site.title" %>
in your templates.
Note that the first argument is a two-letter language code. In order to support other languages, you can provide more yml files in config/i18n (example, config/i18n/fr.yml for French) and call t!/2 with that language code instead.
Linguist also supports templated translations. If you have a section in en.yml like this:
app:
hello_message: Hello, %{name}!
then you could call t!
substitutions like this:
t! "en", "app.hello_message", name: "Legend"
to get the string "Hello, legend!"
On the roadmap: in the future, we intend to provide a mechanism for detecting and managing each visitor's language and providing those strings if available.