L20n reinvents software localization. Users should be able to benefit from the entire expressive power of a natural language. L20n keeps simple things simple, and at the same time makes complex things possible.
L20n.js is a localization framework for websites which want to offer a best-in-class translation experience for their users. L20n takes advantage of modern web technologies to offer a fast and lean localization of HTML and JavaScript.
Include the following code in the <head>
section of your HTML:
<meta name="defaultLanguage" content="en-US">
<meta name="availableLanguages" content="de, en-US, fr, pl">
<link rel="localization" href="locales/myApp.{locale}.l20n">
<script defer src="dist/compat/web/l20n.js"></script>
L20n.js supports three kinds of translation resources:
- L20n syntax, as documented at http://l20n.org/learn/,
- properties syntax: https://en.wikipedia.org/wiki/.properties (deprecated),
- JSON files parsed by
tools/parse.js -o entries
.
A straight-forward example in English:
<brandName "Firefox">
<about "About {{ brandName }}">
<preferences "{{ brandName }} Preferences">
And the same thing in Polish:
<brandName {
nominative: "Firefox",
genitive: "Firefoksa",
dative: "Firefoksowi",
accusative: "Firefoksa",
instrumental: "Firefoksem",
locative: "Firefoksie"
}>
<about "O {{ brandName.locative }}">
<preferences "Preferencje {{ brandName.genitive }}">
Visit L20n by Example to learn more about L20n's syntax.
You can take advantage of HTML bindings to localize your HTML documents with L20n. See docs/html for documentation and examples.
It is also possible to use L20n programmatically, for instance in order to localize dynamic content. Refer to docs/node and docs/view for more details.
We'd love to hear your thoughts on L20n! Whether you're a localizer looking for a better way to express yourself in your language, or a developer trying to make your app localizable and multilingual, or a hacker looking for a project to contribute to, please do get in touch on the mailing list and the IRC channel.
- mailing list: https://lists.mozilla.org/listinfo/tools-l10n
- IRC channel: irc://irc.mozilla.org/l20n
L20n is open-source, licensed under the Apache License, Version 2.0. We encourage everyone to take a look at our code and we'll listen to your feedback.
We use Bugzilla to track our work. Visit our Tracking page for a collection of useful links and information about our release planning. You can also go straight to the Dashboard or file a new bug.
We <3 GitHub, but we prefer text/plain
patches over pull requests. Refer to
the Contributor's documentation for more information.