Thank you very much for the write up!

I also believe L20n is (was) one of the legacy FxOS smart phone
project left to the Web -- there are no comparable solution for
localization for client web application out there.


On Sat, Mar 12, 2016 at 3:50 AM,  <[email protected]> wrote:
> Hi all,
>
> Wanted to give you an update on the current status of L10n/Intl in Gaia.
>
> === Current Status ===
>
> I just successfully finished migrating all TV apps to L20n and I migrated as 
> many "Phone" apps to L20n as I could over last months.
>
> I believe that at this point all critical apps (like System, Settings, 
> Keyboard etc.) that are likely to be useful for future CD projects or as a 
> base for new apps have really clean L10n API usage and they all rely on 
> L20n.js which is uses the final version of the L10n API.
>
> All the code in ./shared/ and ./tv-apps also have all their code refactored 
> and up to the current API standards.
>
> On top of that, we have four more elements of the system:
>  - mozIntl[0] is a wrapper on Intl API that gives us access to future Intl 
> API extensions like UnitFormatter, ListFormatter, RelativeTimeFormatter, 
> DurationFormatter etc.
>  - IntlHelper[1] is a small library that simplifies writing code that caches 
> Intl formatter and invalidates them when language/timeformat etc. changes.
>  - L20n Service[2] is an extension of L20n.js library that operates in 
> ServiceWorker which makes us ready for the NGA (and is used by the Music app)
>  - L20n Build[3] System is our plug into Gaia build system that enables us to 
> prepare and optimize Gaia apps.
>
> L10n Team (Stas and me) are committed to maintain this code and we will reuse 
> it in other projects so expect us to keep dropping updates to those files and 
> small refactors of code in gaia repository if needed.
>
> === What's left ===
>
> There are several things we did not finish, and they still require work:
>
>  - There are still apps that rely on obsolete use of mozL10n.get call. It's 
> been a very long ride, but since Firefox OS 1.4 we reduced the number of call 
> of this function from around 1500 to 289 [4].
> All of the remaining ones are in ./apps (none in ./shared or ./tv_apps). The 
> biggest offender is ./communications with around 100 of those calls.
> I don't see us working on that anymore, as it requires good understanding of 
> the app code, deep reviews and requires extra carefulness to avoid 
> regressions and I don't believe we are in a good position to secure that.
>
>  - There is still code in ./shared that uses l10n.js' `navigator.mozL10n` API 
> instead of l20n.js' `document.l10n`. It's not significant - 10 calls in 6 
> files, mostly related to ./communications code.
>
> We landed a l10n.js-2-l20n.js proxy in L10n.js, which means that code that 
> relies on l10n.js can use l20n.js API, so those should be safe to migrate if 
> anyone is going to work on those.
>
>  - Because of the use of mozL10n.get, there are still 21 apps in ./apps 
> folder that use l10n.js. We are not going to maintain that library, and if 
> any of those apps will be planned for production, they should migrate to 
> l20n.js before they are released. We'll be happy to help with the transition.
>
>
> === What's next for us ===
>
> As I said before, we're committed to maintain the L10n/Intl APIs that we 
> developed for Gaia. We believe that they are the best technologies for 
> writing multi-lingual web applications, and we are going to use them for all 
> future projects.
> I'm not aware of any CD projects that are at the stage of writing production 
> ready code yet, so we expect to use Firefox Desktop components and Firefox OS 
> TV as our driving platforms for now.
>
> The next big thing, that we've been putting off for way too long and which 
> has been limiting our localization capabilities is the new file format for 
> L10n.
> Because our primary target has been Gaia and Gaia originally chose a 
> proprietary modification of the .properties format, L20n.js has been using it 
> so far, but we've always believed that we need a new file syntax that will 
> allow localizers to design better messages  and lately, we've been exploring 
> the potential of interactions between localization (messages) and 
> internationalization (date formatting, unit formatting, list formatting, 
> plural forms etc.).
>
> We're pretty close to start testing it on localizers and we expect to spend 
> first part of the next quarter on getting our toolchain up to speed, getting 
> tutorials and documentation and making the new syntax work in parallel with 
> .properties.
>
> We're also working with TC39 group to move pieces of L20n/mozIntl that we 
> designed for Gaia to EcmaScript 2016 and 2017.
>
> If you're working on a project that will need l10n/intl, you can safely rely 
> on the L10n/Intl APIs that I listed above. We're very confident that it's the 
> best technology on the market :)
>
> Enjoy hacking the Free Web!
> zb.
>
> [0] https://github.com/mozilla-b2g/gaia/blob/master/shared/js/moz_intl.js
> [1] https://github.com/mozilla-b2g/gaia/blob/master/shared/js/intl_helper.js
> [2] https://github.com/mozilla-b2g/gaia/tree/master/shared/js/intl
> [3] https://github.com/mozilla-b2g/gaia/blob/master/build/l10n/l20n.js
> [4] https://bugzilla.mozilla.org/show_bug.cgi?id=1020138
> _______________________________________________
> dev-fxos mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-fxos
_______________________________________________
dev-fxos mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-fxos

Reply via email to