{"id":194,"date":"2012-03-15T18:27:40","date_gmt":"2012-03-15T18:27:40","guid":{"rendered":"http:\/\/blog.mozilla.org\/l10n\/?p=194"},"modified":"2012-03-26T18:22:14","modified_gmt":"2012-03-26T18:22:14","slug":"l20n_next_stage","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/l10n\/2012\/03\/15\/l20n_next_stage\/","title":{"rendered":"L20n: the next stage of l10n for localizers"},"content":{"rendered":"<div id=\"magicdomid265\"><em>Due to the extensive amount of information on l20n, I will be splitting up the information according to audience. Part one and two will cover information useful to localizers (one will be description, two will include applicable examples) and part three and four will cover information useful to coders and L10n tool authors.<\/em><\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid260\">Over the last few years localizers have become gradually familiar with the l20n project. It been described as a way to improve a localizer&#8217;s ability to localize software into their native language (in this case, mozilla applications specifically) without limiting their langauge&#8217;s\u00a0 expressiveness or robustness due to limitations within the programming language used to develop the software. Although the project has been in open development for years, localizers tend to know or understand little of what l20n will bring to the table. As the project gradually approaches it&#8217;s first major release, the time has come to describe what\u00a0 l20n means for localizers, coders, and L10n tool authors.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid5\"><strong>What is l20n?<\/strong><\/div>\n<div><\/div>\n<div id=\"magicdomid252\">L20n is a localization framework (which is partly comprised of a pseudo-programming language) meant to transfer the ability to localize software using the fullness of any language from the developer to the localizer. L20n empowers localizers to be more independent of source language developers and have more control and flexibility in localizing software according to their native language&#8217;s demands.<\/div>\n<p>&nbsp;<\/p>\n<div id=\"magicdomid7\"><\/div>\n<div id=\"magicdomid8\"><strong>More control and flexibility for localizers<\/strong><\/div>\n<div><\/div>\n<div id=\"magicdomid237\">One\u00a0 of the primary challenges localizers face is that they have to rely on\u00a0 an application&#8217;s programmed logic to appropriately process strings in\u00a0 their native language. Localizers have almost no control over how an application will handle their language&#8217;s plural, singular, and gender syntax, not to mention the challenges presented when an application concatenates strings (combination of variables containing strings) with only the source language in mind.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid246\">Currently the responsibility for resolving these challenges falls on the shoulders of the developers. While coding, they must incorporate internationalization and\u00a0 localizable coding practices into their applications that account for these challenges. Unfortunately, this presents a larger-than-life expectation for coders: not every coder can understand the syntactical\u00a0 intricacies of every single language. In addition, developer toolkits don&#8217;t always contain pre-localized materials to help them internationalize. Should a localizer encounter a L10n bug, they cannot fix it themselves without understanding how to code, and even then they\u00a0 risk creating bugs in the application itself. How many of you have found yourself in that same situation? This is because an application&#8217;s programming logic and its localization logic are organically connected. Enter l20n.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid248\">L20n seeks to separate these two logic sets, allowing localizers to have more control over how their language appears and operates within the application&#8217;s programming logic. Localizers will be able to establish their own contextual plural and gender-specific forms\u00a0 within specific strings (or even chain multiple plural forms within a single string) without causing disruptions within the application. Establishing context also changes the way that strings are concatenated within the application.<\/div>\n<p>&nbsp;<\/p>\n<div id=\"magicdomid12\"><\/div>\n<div id=\"magicdomid13\"><strong>Localizing with ease<\/strong><\/div>\n<div><\/div>\n<div id=\"magicdomid232\">Sound complicated? It actually isn&#8217;t. To quote Sta\u015b Ma\u0142olepszy, one of the L10n drivers working on the project, &#8220;In its simplest form, l20n is very basic and easy to use. People really shouldn&#8217;t be scared about using it in their projects.&#8221; According to the current plan, implementing l20n into a project should still allow localizers with limited to no technical background to localize mozilla applications through the L10n\u00a0 tools they&#8217;re familiar with. If anything, localizing will be simplified\u00a0 because of the added ability to identify and add context to source strings.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid226\">As with any tool, however, localizers interested in using the full range of functionality from l20n will need to become familiar\u00a0 with how it is implemented and its unique syntax.<\/div>\n<p>&nbsp;<\/p>\n<div id=\"magicdomid16\"><\/div>\n<div id=\"magicdomid17\"><strong>Status update<\/strong><\/div>\n<div><\/div>\n<div id=\"magicdomid228\">L20n is currently still in open development, but the team is hoping to use the Gaia project as the flagship release for l20n implementation.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid231\">While it is still in development, you have the chance to provide the l20n team with valuable feedback. You can find more detailed information about l20n in the resources list below. If you have concerns, ideas, contributions, or need further explanation, please don&#8217;t hesitate to contact Sta\u015b or Gandalf via the <a href=\"http:\/\/irc.mozilla.org\/#l20n\">#l20n IRC channel<\/a> or the <a href=\"http:\/\/groups.google.com\/group\/localization-20\">l20n Google group<\/a>.<\/div>\n<p>&nbsp;<\/p>\n<div><\/div>\n<div id=\"magicdomid20\">In the next installment on l20n, I&#8217;ll outline some use case examples of how l20n will streamline L10n for localizers.<\/div>\n<p>&nbsp;<\/p>\n<div id=\"magicdomid21\"><\/div>\n<div id=\"magicdomid22\"><strong>Resources:<\/strong><\/div>\n<div><\/div>\n<ul>\n<li><a href=\"https:\/\/wiki.mozilla.org\/L20n:Characteristics\">https:\/\/wiki.mozilla.org\/L20n:Characteristics<\/a><\/li>\n<li><a href=\"https:\/\/wiki.mozilla.org\/L20n\/Toolbox\">https:\/\/wiki.mozilla.org\/L20n\/Toolbox<\/a> &#8211; For localizers with some coding knowledge.<\/li>\n<li><a href=\"https:\/\/wiki.mozilla.org\/L20n:Background\">https:\/\/wiki.mozilla.org\/L20n:Background<\/a><\/li>\n<li><a href=\"https:\/\/wiki.mozilla.org\/Gaia\">https:\/\/wiki.mozilla.org\/Gaia<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Due to the extensive amount of information on l20n, I will be splitting up the information according to audience. Part one and two will cover information useful to localizers (one &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/l10n\/2012\/03\/15\/l20n_next_stage\/\">Read more<\/a><\/p>\n","protected":false},"author":385,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[610],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts\/194"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/users\/385"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/comments?post=194"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/media?parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/categories?post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/l10n\/wp-json\/wp\/v2\/tags?post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}