Planet Mozilla L10N

May 17, 2013

Mozilla L10n Blog

Teach yourself L20n at L20n.org

Language can be very difficult to capture within software localization. Each natural language in the world evolves at its own pace and in its own unique way, creating vibrant and rich means of expression. Sadly, simple static string translation is often ill-equipped to properly accommodate gender, conjugation, plural, or case changes required within the language by changing string variables and other run-time string composition issues. This is why we created L20n.

We’re super happy to announce that we’ve released an amazing tool to help localizers, engineers, and localization tool developers learn and practice L20n themselves! l20n.org contains a real-time text editor that allows you to edit L20n code and visually see how it impacts localization. The real-time editor is part of the “Learn” section of l20n.org dedicated to walk you through what L20n has to offer, feature by feature, and give you a chance to try these features out in real-time.

L20n is a localization framework (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’s demands.

l20n.org is live and running now! Go give it a try! Not only is it live, but its hosted on github for you to fork and contribute to. Enjoy testing out L20n!

 

May 17, 2013 09:40 PM

May 15, 2013

Burning Edge - Firefox

Firefox Nightly 23, weeks 1-6

Speed & memory:

For more, read Taras's Snappy blog and MemShrink blog posts.

New web technologies:

For more, read Firefox 23 for developers.

Security & privacy:

Other notable fixes:

Sources:

May 15, 2013 02:25 AM

April 08, 2013

Burning Edge - Firefox

Firefox Nightly 22, weeks 1-6

Speed & memory:

  • Fixed: 840282 - Land OdinMonkey (asm.js optimizing compiler).
  • Fixed: 759585 - Change the granularity of collection from compartment to zone.
  • Fixed: 829747 - Do Async Canvas layers update.
  • Fixed: 716859 - Streaming WebGL Buffers (Double-buffering, etc).
  • Fixed: 751418 - Enable OpenGL acceleration on Skia.
  • Fixed: 753768 - Move page thumbnails I/O off the main thread.
  • Fixed: 716140 - Multithreaded image decoding.
  • Fixed: 689623 - Layout needs to provide information on which images are visible or likely to be visible.
  • Fixed: 810151 - Use readahead for ordered jar files such as omni.ja. Should be ~10% startup speedup.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 629801 - HTML: Implement <time> element.
  • Fixed: 839371 - HTML: Implement <data> element.
  • Fixed: 841948 - HTML: Enable <input type=range> on Nightly and Aurora.
  • Fixed: 345195 - HTML: Replace the anonymous <input type='text'> in <input type='file'> by a simple text.
  • Fixed: 829602 - JS: ParallelDo intrinsic and self-hosted ParallelArray.
  • Fixed: 846406 - JS: Implement arrow functions.
  • Fixed: 789897 - JS: Implement the preventExtensions and isExtensible trap for proxies.
  • Fixed: 839979 - JS: Implement Object.is.
  • Fixed: 690659 - XHR: Filename parameter in the FormData.append method.
  • Fixed: 604039 - DOM: Prototype Gamepad (Joystick) API.
  • Fixed: 650295 - DOM: Add support for speech input.
  • Fixed: 782211 - DOM: Implement notification API spec.
  • Fixed: 736324 - DOM: Allow naming blob URL.
  • Fixed: 783129 - DOM: Implement the document.register interface method.
  • Fixed: 407983 - DOM: Add clipboardData to the onpaste event.
  • Fixed: 737100 - DOM: Extend Pointer Lock for non-fullscreen elements.
  • Fixed: 805613 - Fullscreen: Handle multiple fullscreen documents concurrently.
  • Fixed: 724554 - Fullscreen: Don't exit fullscreen when focusing window on different display.
  • Fixed: 700023 - Fonts: Enable Graphite font shaping by default.
  • Fixed: 419588 - Image: Add support for multiple ICO and ICNS sizes.

For more, read Firefox 22 for developers.

Security & privacy:

Other notable fixes:

  • Fixed: 82301 - Today History folder should be expanded by default.
  • Fixed: 767944 - Implement a manager for centralized quota and storage handling.
  • Fixed: 253564 - Plain text documents should word-wrap. (Toggle using View > Page Style or the pref “plain_text.wrap_long_lines”)
  • Fixed: 548763 - [Mac] Show download progress in dock icon.
  • Fixed: 844604 - [Windows] Increase default text size on hidpi displays.
  • Fixed: 748740 - New tab is not opening after "Ctrl/Cmd+Click" on a link if there is "event.stopPropagation()" in the "click" handler.
  • Fixed: 738952 - PDF: make "Save as..." File menu entry and Ctrl+S work.
  • Fixed: 743252 - PDF: Don't print the URL and other information when printing PDFs.
  • Fixed: 830267 - Don't store plugin preferences via pluginreg.dat: store them per-mimetype.
  • Fixed: 760140 - AAC and MP3 not supported in <audio> (but AAC supported as a <video> sound track!) when the Fluendo Complete Codec Pack is installed.

Sources:

April 08, 2013 08:41 PM

April 03, 2013

Robert Kaiser

15, 14, 13, 8, 7, 2 years ago, and the future? My Web Story

It all started on March 31, 1998. Just a few days off from 15 years ago.

Netscape open-sourced the code to its "Communicator" Internet suite, using its own long-standing internal code name as a label for that project: Mozilla.

I always liked the sub-line of a lot of the marketing material for this time - under the Mozilla star/lizard logo and a huge-font "hack", the material said "This technology could fall into the right hands". And so it did, even if that took time. You can learn a lot about that time by watching the Code Rush movie, which is available under a Creative Commons license nowadays. And our "Chief Lizard Wrangler" and project leader Mitchell Baker also summarized a lot of the following history of Mozilla in a talk that was recorded a couple of years ago.

Just about a year later, in May 1999, so 14 years ago, I filed my first bug after I had downloaded one of the early experimental builds of the Mozilla suite, building on the brand-new Gecko rendering engine. This one and most I filed back then were rendering issues with that new engine, mostly with my pretty new and primitive first personal homepage I had set up on my university account. After some experiments with CSS-based theming of the Mozilla suite, I did some playing around with exchanging strings in the UI and translating them to German, just to see how this new "XUL" stuff worked. This ended up in my first contribution contact and me providing a first completely German-language build on January 1, 2000.

A few months after that, in May, I submitted my first patch to the Mozilla project, which was a website change, actually. But only weeks later, I created a bug and patch against the actual Mozilla code - in June of 2000, 13 years ago. And it would by far not be the last one, even though my contributions the that code were small for years, a fix for a UI file here, a build fix for L10n stuff there. My main contributions stayed in doing the German localization for the suite and in general L10n-related issues. Even when Firefox came along in 2004, I helped that 1.0 release with some localization-related issues, esp. around localized snippets for its Google-based and -hosted start page - and stayed with L10n for the full suite otherwise (while Kadir would do the German Firefox L10n). I wrote a post in 2007 about how I stumbled into my Mozilla career.

As Firefox became rapidly successful and took an increasingly large standing in the project and community, I stuck with the suite as I liked a more integrated experience of email and browser - and I liked the richer feature set that the suite had to offer (Firefox did cut out a lot of functionality in the beginning to be able to found its new, leaner and more consumer-friendly UI). When in March of 2005, it became clear that the suite was going into strict maintenance mode and be abandoned by the "official" Mozilla project, I joined the team that took over maintenance and development of that suite - once again using a long-standing internal code name for that: SeaMonkey. In all that project-forming process 8 years ago, I took over a lot of the organizational roles, so that the coders in our group could focus at the actual code, and eventually was credited as "project coordinator" within the project management group we call the "SeaMonkey Council".

When I founded my own business 7 years ago, in January of 2006, I was earning money in surprising ways, and trying to lead the SeaMonkey project into the future. We were just about to release SeaMonkey 1.0 and convince the first round of naysayers that we actually could have the suite running as a community project. In the next years, we did quite some interesting and good work on that software, and a lot of people were finally realizing that "we made it" when we could release a 2.0 version that was based on the same "new" toolkit that Firefox and Thunderbird were built upon, removing a lot of old, cruft code and replacing it with newer stuff, including the now common-place add-ons system and automated updates among a ton of other things. I would end up doing a number of the major porting jobs from Firefox to SeaMonkey, including the places-based history and bookmarks systems, the download manager (including a UI that was similar to the earlier suite style), and the OpenSearch system. With the Data Manager, I even contributed a completely new and (IMHO) pretty innovative component into SeaMonkey. In those times, I think I did more coding work (in JS, mostly) than ever before, perhaps with the exception of the PHP-based CBSM community and content management platform I had done before that.

The longer I was in the SeaMonkey project, the more I realized, though, that the innovation I would like to have seen around the suite wasn't really happening - all the innovation to the suite came from porting Firefox and Thunderbird features and/or code, and that often with significant delay. Not sure if anything other than the Data Manager actually was a genuine SeaMonkey innovation, and I only came up with that when trying to finally get some innovation going, back in 2010. I was more and more unsatisfied with the lack of progress and innovation and the incredible push-back we got on the mailing list on every try to actually do something new. In October of 2010, I took a flight to Mountain View, California, to meet up with Mitchell Baker and talk about the future of SeaMonkey - and I also mentioned how I wanted to be more on the front of innovation even though I seem to not manage to get the SeaMonkey community there. Not sure if it came out of this or was in the back of her head before, in one of those conversations I had with her, she asked me if I would like to work for Mozilla and Firefox. I said that this caught me by surprise but we should definitely keep that conversation going. Just after that I met then-Mozilla-CEO John Lilly, and he asked if Mitchell had offered me a job - just to make sure. As you can imagine, that got me thinking a lot more about that, and gave me the freedom to think outside SeaMonkey for my future. I was at the liberty to think about my personal priorities in more depth, and it became clear that the winds of change were clearly blowing through my life.

After some conversations with people at Mozilla, I decided I wanted to try a job there, and Chris Hofmann proposed my working on tracking crashes and stability, so I started contracting for Mozilla on the CrashKill team in February 2011, first half-time, finally full-time. So, 2 years ago, I opened a completely new chapter in my personal web story. Tracking crash statistics for our products - Firefox desktop, Firefox from Android, and now Firefox OS - and working with our employees and community to improve stability has turned out to be a more interesting job than I expected when I started. Knowing that my work actually helps thousands or even millions of people, who have a more stable Firefox because of what I do, is a quite high award. And I'm growing into a more managerial role, which is something I really appreciate. And I'm connected to all kinds of innovation going on at Mozilla: A lot of the new features landing (like new JIT compilers for JavaScript, WebRTC, etc.) need stability testing and we're tracking the crash reports from those, Firefox for Android needed a lot of stability work to become the best mobile browser out there - and with Firefox OS, I was even involved in how the crash reporting features and user experience flow were implemented. I'm also involved in a lot of strategic meetings on what we release and when - an interesting experience by itself.

Where this all will lead me in the future? No idea. I'm interested in moving to the USA and working there at least for some time - not just because it would make my day cycle sane and having most or all my meetings within the confines of the actual work days in the region I'm living in, but also because I learned to like a lot that country has to offer, from Country Music to Football and many other things (not to mention Louisiana-style Cajun cuisine). I'm also interested in working from an office with other Mozillians for a change, and in possibly becoming even more of a manager. Of course, I'd like to help moving the Mozilla mission forward where I can, openness, innovation and opportunities on the web are something I stand behind nowadays more than ever - and Firefox OS as well as associated technologies promise to really make a huge impact on the web of the future. I'm looking forward to quite exciting times! :)

April 03, 2013 10:13 PM

March 13, 2013

Mozilla L10n Blog

New locales added to Firefox Aurora

Today we’re very pleased to announce the addition of three new locales to the Firefox Aurora channel: Azerbaijani (az), Burmese (my), and Sakha (sah).

Azerbaijani (az), also known as Azeri, is primarily spoken in Iran, Azerbaijan, Turkey, Armenia, Georgia, Russia, Afghanistan, Iraq, Turkmenistan, and Syria. Ethnologue reports that there are approximately 25,000,000 native Azerbaijani speakers. To help their localization of Firefox move to the Release channel, join the Azerbaijani l10n team.

Burmese (my), also known as Myanmar, is primarily spoken in Burma/Myanmar, Thailand, Malaysia, and Singapore. Ethnoloque reports that there were approximately 32,000,000 native speakers of Burmese in 2000. To help their localization of Firefox move to the Release channel, join the Burmese l10n team.

Sakha (sah), also known as Yakut, is spoken primarily in the Sakha Republic of the Russian Federation. Ethnologue reports that there were approximately 450,000 native Sakha speakers in 2010.

Congratulations to these teams! We look forward to seeing their hard work on the Release channel soon.

March 13, 2013 05:44 PM

February 19, 2013

Burning Edge - Firefox

Firefox Nightly 21, weeks 1-6

Speed & memory:

  • Fixed: 784591 - Don't leave around decoded image data for display: none images.
  • Fixed: 836010 - When startup is determined to be slow, tell users about ways to improve their startup time.
  • Fixed: 823147 - Avoid hitting D2D slow path when drawing radial gradients from css.
  • Fixed: 821361 - JS: Optimize closures that only run once.
  • Fixed: 807853 - JS: Add parallel compilation mode.
  • Fixed: 715419 - JS: Specialize Array.prototype.sort when given the comparator is "return arg1 - arg2".
  • Fixed: 835417 - DOM: Mark DOM getters as pure when they are.
  • Fixed: 239254 - [Linux] Support disk cache on a local path.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 820508 - Add support for <main> element.
  • Fixed: 508725 - Implement scoped stylesheets.
  • Fixed: 440046 - Implement window.crypto.getRandomValues (secure PRNG).
  • Fixed: 828261 - Implement window.location.origin.
  • Fixed: 792263 - Implement decodeAudioData.
  • Fixed: 796463 - Enable WebRTC's PeerConnection by default.

For more, read Firefox 21 for developers.

Security & privacy:

  • Fixed: 838557 - Create and use a common interface for ASan/Valgrind memory handling functions.
  • Fixed: 821892 - Click-to-play: "Page Info" -> Permissions needs to be aware of plugin permission differentiation.
  • Fixed: 774315 - Click-to-play: Add "Hide this plugin" to context menu, to work around broken sites.
  • Fixed: 822371 - Mixed content: Improved UI for users who have set security.mixed_content.block_active_content.

Other notable fixes:

  • Fixed: 833511 - Add rotation gesture support to image documents.
  • Fixed: 765398 - Implement three-state UI for DNT (do not track me, okay to track me, decline to state).
  • Fixed: 815640 - Make permission manager aware of "file://" (without dirty hacks).
  • Fixed: 726275 - Shift-click on back/forward button doesn't load page.
  • Fixed: 712763 - Session restore loads saved windows in reverse order.
  • Fixed: 608735 - DOM: XMLHttpRequest's getAllResponseHeaders() returns null if the request is the result of CORS.
  • Fixed: 838269 - DOM: Support cross-global |... instanceof DOMInterface|.
  • Fixed: 777385 - DOM: Support Paris bindings objects that are either nsISupports or non-cycle-collected as weak map keys.
  • Fixed: 818023 - JS: function.caller does not always work.
  • Fixed: 786135 - JS: Make parseInt("042") === 42.
  • Fixed: 827784 - [Windows] Provide an option to disable favicons on webpage shortcuts.
  • Fixed: 837859 - [Windows] Enable Windows Media Foundation support for H.264 AAC, and MP3 playback on Windows 7 and later.
  • Fixed: 813488 - [Windows] Enable metro browser build.

All 4385 changes between FIREFOX_AURORA_20_BASE and FIREFOX_AURORA_21_BASE

February 19, 2013 06:53 PM

February 15, 2013

Axel Hecht

Risk management for releases at scale

Let me share some recent revelations I had. It all started with the infamous Berlin airport. Not the nice one in Tegel, but the BBI desaster. The one we’ve thought we’d open last year, and now we don’t know which year.

Part of the newscoverage here in Germany was all about how they didn’t do any risk analysis, and are doomed, and how that other project for the Olympics in London did do risk analysis, and got in under budget, ahead of time.

So what’s good for the Olympics can’t be bad for Firefox, and I started figuring out the math behind our risk to ship Firefox, at a given time, with loads of localizations. How likely is it that we’ll make it?

Interestingly enough, the same algorithm can also be applied to a set of features that are scheduled for a particular Firefox release. Locales, features, blockers, product-managers, developers, all the same thing :-). Any bucket of N things trying to make a single deadline have similar risks. And the same cure. So bear with me. I’ll sprinkle graphs as we go to illustrate. They’ll link to a site that I’ve set up to play with the numbers, reproducing the shown graphs.

The setup is like this: Every single item (localization, for exampe) has a risk, and I’m assuming the same risk across the board. I’m trying to do that N times, and I’m interested in how likely I’ll get all of them. And then I evaluate the impact of different amounts of freeze cycles. If you’re like me, and don’t believe any statistics unless they’re done by throwing dices, check out the dices demo.

Anyway, let’s start with 20% risk per locale, no freeze, and up to 100 locales.

80%, no freeze, up to 100

Ouch. We’re crossing 50-50 at 3 items already, and anything at scale is a pretty flat zero-chance. Why’s that? What we’re seeing is an exponential decay, the base being 80%, and the power being how often we do that. This is revelation one I had this week.

How can we help this? If only our teams would fail less often? Feel free to play with the numbers, like setting the successrate from 80% to 90%. Better, but the system at large still doesn’t scale. To fight an exponential risk, we need a cure that’s exponential.

Turns out freezes are just that. And that’d be revelation two I had this week. Let’s add some 5 additional frozen development cycles.

80%, 5 freezes, up to 100

Oh hai. At small scales, even just one frozen cycle kills risks. Three features without freeze have a 50-50 chance, but with just one freeze cycle we’re already at 88%, which is better than the risk of each individual feature. At large scales like we’re having in l10n, 2 freezes control the risk to mostly linear, 3 freezes being pretty solid. If I’m less confident and go down to 70% per locale, 4 or 5 cycles create a winning strategy. In other words, for a base risk of 20-30%, 4-5 freeze cycles make the problem for a localized release scale.

It’s actually intuitive that freezes are (kinda) exponentially good. The math is a tad more complicated, but simplified, if your per-item success rate is 70%, you only have to solve your problem for 30% of your items in the next cycle, and for 9% in the second cycle. Thus, you’re fighting scale with scale. You can see this in action on the dices demo, which plays through this each time you “throw” the dices.

Now onwards to my third revelation while looking at this data. Features and blockers are just like localizations. Going in to the rapid release cycle with Firefox 5 etc, we’ve made two rules:

That worked fine for a while, but since then, mozilla has grown as an organization. We’ve also built out dependencies inside our organization that make us want particular features in particular releases. That’s actually a good situation to be in. It’s good that people care, and it’s good that we’re working on things that have organizational context.

But this changed the risks in our release cycle. We started off having a single risk of exponential scale after the migration date (l10n). Today, we have features going in to the cycle, and localizations thereof. At this point, having feature-freeze and string-freeze being the same thing becomes a risk for the release cycle at large. We should think about how to separate the two to mitigate the risk for each effectively, and ship awesome and localized software.

I learned quite a bit looking at our risks, I hope I could share some of that.

February 15, 2013 03:26 PM

January 28, 2013

Burning Edge - Firefox

Firefox Nightly 20, weeks 1-6

Speed & memory:

  • Fixed: 816642 - Avoid fragmenting cache files.
  • Fixed: 807021 - Move LocalStorage writes off the main thread.
  • Fixed: 789932 - nsExternalAppHandler downloads files on the main thread.
  • Fixed: 813559 - JS: enable off-thread ion compilation by default.
  • Fixed: 747289 - JS: CSE on DOM getters when possible.
  • Fixed: 808245 - JS regexp: Use YARR's new MatchOnly JIT mode.
  • Fixed: 717853 - Testing: Integrate DMD into the browser.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 548206 - HTML: Implement the auto value for the HTML dir attribute.
  • Fixed: 676619 - HTML: Implement proposed download attribute.
  • Fixed: 769385 - HTML: Support <input type="date">.
  • Fixed: 808148 - JS: Math.imul().
  • Fixed: 817368 - JS: Map.prototype.{keys,values,entries}.
  • Fixed: 814562 - JS: WeakMap.clear().
  • Fixed: 795542 - JS Workers: StringEncoding API (TextDecoder and TextEncoder interfaces).
  • Fixed: 617532 - DOM: UndoManager.
  • Fixed: 564815 - DOM: Implement window.devicePixelRatio.
  • Fixed: 654352 - DOM: Implement document.caretPositionFromPoint().
  • Fixed: 819741 - DOM: Support ArrayBufferView instances as parameters to XMLHttpRequest.send().
  • Fixed: 811701 - DOM: Move innerHTML/outerHTML/insertAdjacentHTML from HTMLElement to Element.
  • Fixed: 779917 - Implement CSS.supports().
  • Fixed: 783409 - CSS flexbox. (No longer behind a pref.)
  • Fixed: 793617 - CSS mask-type.
  • Fixed: 818400, 648722 - CSS :scope (for the upcoming scoped stylesheets feature).
  • Fixed: 329212 - Display the <svg:title> as a tooltip.
  • Fixed: 803124 - Canvas: isPointInStroke().
  • Fixed: 748433 - Canvas: Extend compositing with blend modes.
  • Fixed: 495040 - Video: Implement playbackRate and related bits.
  • Fixed: 799315 - Video: Windows Media Foundation backend for media playback.
  • Fixed: 825594 - WebRTC: Enable mozGetUserMedia.

For more, read Firefox 20 for developers.

Security & privacy:

  • Fixed: 818732 - Switch Nightly to per-window private browsing.
  • Fixed: 456884 - Provide a way to open a link into private browsing mode.
  • Fixed: 810082 - Click-to-play: improve handling of invisible or hidden plugins (e.g. on music sites like Pandora).
  • Fixed: 746374 - Click-to-play: differentiate by plugin type.

Other notable fixes:

  • Fixed: 675902 - New Downloads view for Places Library.
  • Fixed: 433168 - Context menu is not shown for form buttons and select elements.
  • Fixed: 614304 - ESC key stops animations and aborts XMLHttpRequest and WebSocket. (Jonas explains why) (Install SuperStop to make Shift+Esc do something similar.)
  • Fixed: 786120 - There should be default action settings for each direction which can override current settings.
  • Fixed: 263433 - Links in UI ('text-link' XUL widget) should open tabs rather than windows.
  • Fixed: 814952 - SVG ellipse with stroke but no fill is not displayed.
  • Fixed: 455165 - Firefox fails on chained ogg stream.
  • Fixed: 731974 - requestAnimationFrame generates too short/long frames, especially at the beginning of animation.
  • Fixed: 814101 - [Windows] Azure does not honor Windows cleartype setting.
  • Fixed: 805591 - [Windows] Add UI to be shown when plugin is unresponsive.
  • Fixed: 765215 - [Windows] Hangs on resuming from sleep.

All 4260 changes between FIREFOX_AURORA_19_BASE and FIREFOX_AURORA_20_BASE

January 28, 2013 04:23 AM

January 23, 2013

Mozilla L10n Blog

Giving linguistic feedback for Firefox localizations

Testing and getting feedback about a localization’s linguistic quality is critical to delivering a browser that will meet users’ needs. We want to attract people in any region to the world’s best browser by making sure that it is the best localized browser available. The language availability and feedback mechanisms vary according to the language’s current status.

At Mozilla, we release Firefox desktop localizations in two ways: through language packs (also known as langpacks) and official builds. Before a language hops on the rapid release train to be distributed as an official build, it is distributed through the Firefox add-ons manager (AMO) as a langpack. L10n teams will update these langpacks as they progress with their l10n efforts. Users in that region (or users whose preferred language is found as a langpack instead of an official build) can download, install, and give feedback on the langpack’s linguistic quality all on the langpack’s AMO page. Here’s a list of all of the current localizations distributed as langpacks.

Official localized builds of Firefox desktop can be found here. These localizations have been technically evaluated by passing rigorous technical reviews. Although they’re on the rapid release train, these Mozilla l10n teams still benefit greatly from receiving feedback from their users. The best way users can provide feedback on a localization’s linguistic quality is to download and install the localized Firefox Aurora build and begin using it as their default browser. As users see translation errors they can log them in Firefox Input, located in the toolbar under Help > Submit Feedback. The Mozilla l10n team responsible for that localization can see their users’ feedback and then make corrections as needed.

Giving feedback is simple and can take as little time as 1-3 minutes to do. If you haven’t already downloaded and installed your language’s Firefox Aurora build or langpack, go for it! Your Mozilla l10n team will be grateful for your help.

January 23, 2013 11:06 PM

January 04, 2013

Mozilla L10n Blog

Goal setting for your locale

We work on two different cycles at Mozilla: a quarterly cycle (this is being posted in Q1) and a six week rapid release cycle. On a quarterly basis, the l10n drivers are responsible for setting goals for the progress they’d like to make on facilitating the localizer’s ability to get involved, the number of new locales we’d like to add to the shipping line-up, and the number of locales who, for one reason or another, have fallen behind and we’d like to help catch up. We attempt to make these goals based on what we assume to know about the l10n teams we’re working with, however, we’ve seen that we often don’t have enough visibility to accurately predict the number of new locales we’ll add to the shipping list or the number of locales that can catch up in a quarter. As you can imagine, these goals aren’t always met by the end of the quarter, largely because they don’t take into account the localizer’s schedule, commitment level, technical experience, or the l10n team’s goals. Well, we’d like to change that :-)

This quarter, along with the l10n team health evaluations, we’d like to encourage all l10n teams to start setting quarterly goals with us and publishing them on their l10n team wiki page under this heading:

===Team quarterly goals===

What type of goals would a l10n team set?

Here’s an example of a l10n team’s quarterly goals:

===Team quarterly goals===
* Sign off on Firefox Beta channel by week 2 of cycle.
* Add Fennec to project's list and set goal for which release to ship 
fully localized Fennec.
* Catch up on Firefox Aurora backlog. Be ready to sign off and ship 
up-to-date localized Firefox desktop at version 22.
* Recruit 2 new localizers-in-training.
* Make sure all team members have profiles in Mozillians directory and 
are in both the l10n and l10n:[locale-code] groups.

How will this help my team?

Planning and goal setting not only help you and your team to be more organized and successful, but it allows you to identify areas where new contributors could pick up tasks and join the group. By publishing these goals on your team wiki pages, we’re able to see your efforts and help where we can. Plus, it helps us identify what excites and motivates you as a team. Maybe [insert motivator here, like competition, SWAG, events, accomplishment, etc.] makes your team excited to localize and proud to be part of Mozilla. Your transparent goals will help us to see that and respond in a more personalized manner to your needs.

Need help with goal setting?

If your team needs help setting goals, please reach out. I’m happy to help you focus your efforts and make goals that will improve your efforts. You can also explore the l10n teams directory and see what goals other teams have set and see if they also apply to you.

January 04, 2013 10:08 PM

December 12, 2012

Mozilla L10n Blog

Documenting how to localize Gaia

Everyone is eager to get their hands on Firefox OS in their own language. Since Firefox OS will land in the Brazilian market first, localization is a very high priority. Some l10n teams have already hit the ground running with localizing Gaia. If you take a look at the Firefox OS project on Pootle, you’ll see that Fulah, Scottish Gaelic, and Welsh are already at 100% complete!

Of course we don’t want to stop there; we want everyone to be able to localize Gaia! But where do you start? What tool do you use? How can you test your work in Gaia? Those are the questions that we’re working on answering. In the next few months, we’ll be working on adapting the existing documentation to a wider audience and to our l10n documentation information model. We’ll also be updating it’s content. With this in place, anyone will be able to come in and localize Gaia into their own language!

If you have or are currently localizing Gaia and have already experimented with answering these questions, please get in touch with me (jbeatty [at] mozilla [dot] org) and I’ll be sure to add your experience and learning to the new Gaia l10n documentation.

 

December 12, 2012 08:32 PM

November 23, 2012

Staś Małolepszy

Gaia string freeze

Good news, everyone! Gaia is now string-frozen. This means no more string changes nor additions. From now on, all bugs with l10n impact should have the late-l10n keyword and a review request on :stas.

The purpose of the string freeze is to stabilize the UI and give localizers time to work on and test the translations. Small changes to the English copy like typo fixes, grammar and (sometimes) style are usually fine to make even after a string freeze, but bigger ones will need to be reviewed for impact on localizations. Usually, it’s a matter of fixing en-US and breaking all other locales at the same time. Obviously, that’s something we’d like to avoid.

What’s new?

Both bucket 1 apps and bucket 2 apps are now string-frozen. We followed the style guidelines written by Josh and Matej and fixed many typos and inconsistencies in the UI. Most of these changes were English-only and the identifiers didn’t change.

You can see the diff in Mercurial or a summary of changes by Scoobidiver.

I finally added the possibility to localize manifest files. In each app’s folder you will find a manifest.properties file (see all). The strings there are responsible for the name of apps displayed on the homescreen and in the card view.

Lastly, some bucket 1 string-freeze breaking changes were hard to avoid. The affected apps are: browser, camera, clock, comms/contacts, comms/dialer, gallery, sms, video.

Here are the total stats as of today:

If your locale was green or almost green before this update, you’ll likely be at around 55-60% today.

Follow the instructions on the L10n:B2G wikipage to get started. The English files are in https://hg.mozilla.org/gaia-l10n/en-US/.

When are the translations due?

The deadline is December 17th.

What’s next?

We’re making a lot of progress on producing nightly device and desktop builds. See the tracking bug 766962 and its dependencies, and also read the Testing section below.

There are still a few remaining late-l10n bugs, mostly related to legal, that didn’t make the string freeze and that we will want to fix in the near future (and thus, we will need to break the string freeze for them).

(You may also want to follow the l12y bugs which don’t have direct impact on translations, but are important to Gaia’s localizability.)

The roadmap

The roadmap for the next 1 or 2 weeks is as follows:

In the next few months we will be also focusing on localization of support articles, the marketplace and payment workflows, in-product pages and the dev hub at the marketplace.

Testing with the desktop builds

I know some of the localizers use the default desktop builds (with 4 locales enabled) and then follow the instructions on the wiki (DEBUG=1 make etc.) to test your localizations. If you’re one of them, then I have some news for you.

The good & the very good

The annoying bug which hindered testing on Linux has been fixed and has now landed on central, aurora and beta! This means that there should be no more need of my custom b2g builds.

Even better news: we’re making excellent progress on producing official localized builds. If you’re interested, follow these two bugs:

It looks like we might be able to get those builds going next week!

The bad

The perf is better, and we’re about to start doing localized nightlies? What’s not to like?

Unfortunately, there’s currently a bug which breaks profiles made with DEBUG=1. I’m not 100% what’s the root cause, but I’m suspecting bug 802976 and bug 813900.

The workaround

If you run into the black screen bug mentioned above, you could try doing your l10n testing in Firefox, instead of a b2g desktop build.

Follow all the testing instructions on the wiki like you’d normally would. However, instead of running the b2g-bin binary with -profile, run Firefox. For instance:

/usr/bin/firefox -profile gaia/profile

A browser window will open and it will be black. This is a known issue. Just open a new tab and go to about:config. Look for intl.accept_languages and prepend your locale code to its value. So if you’re Polish, you’d do:

intl.accept_languages           pl, en-US, en

Then, browse to any app, for example:

http://browser.gaiamobile.org:8080/

And voilá! Use the Responsive Design Mode (ToolsWeb Developer) to adjust the size of the viewport. You can even use the Inspector and try out different translations on the fly!

This is what running Gaia in Firefox might look like:

Discussion

Come to the mozilla.dev.l10n newsgroup if you have questions!

November 23, 2012 10:59 PM

November 19, 2012

Burning Edge - Firefox

Firefox Nightly 19, weeks 1-6

Speed & memory:

  • Fixed: 715402 - Wait until chrome is painted before executing code not critical to making the initial window visible.
  • Fixed: 756313 - Don't load homepage URI before first paint.
  • Fixed: 750417 - Closing a tab reflows the entire tab bar during the animation, making the animation crappy.
  • Fixed: 811176 - Clean up JIT code more aggressively.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

For more, read Firefox 19 for developers.

Security improvements:

  • Fixed: 799009 - Remove support for obsolete SSL-related warning prompts.
  • Fixed: 788653 - Make enablePrivilege pref name more dire.
  • Fixed: 801576 - Align Gecko and the spec on cross-origin access to window.history.
  • Fixed: 803181 - Change update background download interval from 10 minutes to 1 minute and update check interval from 24 hours to 12 hours.

Other notable fixes:

  • Fixed: 661881 - Implement about:telemetry.
  • Fixed: 486918 - [Windows, Linux] Improve image downscaling.

All 3995 changes between FIREFOX_AURORA_18_BASE and FIREFOX_AURORA_19_BASE

November 19, 2012 11:33 PM

Firefox Nightly 18, weeks 1-6

Speed & memory:

  • Fixed: 650180 - Build a new optimizing JavaScript compiler. (Blog post about IonMonkey)
  • Fixed: 747288 - Generate faster jitcode for DOM getters/setters.
  • Fixed: 539356 - DLBI - Replace Invalidate() calls in reflow with display list analysis.
  • Fixed: 769764 - Remove synchronous proxy API and synchronous DNS resolution in nsProxyAutoConfig.js.
  • Fixed: 726125 - Certificate of a signed extension is validated on each startup.
  • Fixed: 650968 - Enabling a lightweight theme (Persona) causes significant startup slowness.
  • Fixed: 773460 - Pref on Azure canvas.
  • Fixed: 666317 - Discard decoded images on a memory-pressure notification.
  • Fixed: 718910 - [Mac] Hide the profile-cache directory so Spotlight doesn't index it.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 666041 - CSS Flexbox Layout Level 3. (Behind a pref: layout.css.flexbox.enabled)
  • Fixed: 703537 - Implement Harmony direct proxies.
  • Fixed: 564815 - Implement window.devicePixelRatio.
  • Fixed: 793294 - Implement AudioBuffer.
  • Fixed: 745025 - Implement CanvasElement.mozPrintCallback.
  • Fixed: 719286 - Implement embedded SVG glyphs in OpenType fonts.
  • Fixed: 694807 - Implement PeerConnection object. (Behind a pref: media.peerconnection.enabled) (Mozilla Hacks post)
  • Fixed: 594935 - Support calc() on gradient stop positions.
  • Fixed: 726615 - Support W3C touch event instead of MozTouch event.
  • Fixed: 720083 - Workers: add support for transferable objects from HTML5 spec.

For more, read Firefox 18 for developers.

Security improvements:

  • Fixed: 754472 - Click-to-play: implement multiple plugin doorhanger ui.
  • Fixed: 772897 - Implement UI for plugins made click-to-play by the blocklist.
  • Fixed: 62178 - Implement mechanism to prevent sending insecure requests from a secure context. (summary)
  • Fixed: 781617 - http is given from history even when https is explicitly typed in address bar.

Other notable fixes:

  • Fixed: 674373 - [Mac] Support HiDPI mode.
  • Fixed: 603880 - [Windows] HiDPI: Apply the system scale factor.
  • Fixed: 408284 - [Linux] Support translucent windows.
  • Fixed: 254139 - File | Save Page As should default to <title>, not filename.
  • Fixed: 772319 - Add an option to disable the "Close other tabs" prompt.
  • Fixed: 87717 - Allow connections to localhost (127.0.0.1) when "Offline".
  • Fixed: 440093 - Don't overwrite current tab when opening multiple bookmarks in tabs.
  • Fixed: 468568 - Printing pages with downloadable fonts doesn't render all fonts on the page.

All 6114 changes between FIREFOX_AURORA_17_BASE and FIREFOX_AURORA_18_BASE

November 19, 2012 11:32 PM

November 14, 2012

Robert Kaiser

Weekly Status Report, W44/2012

Here's a short summary of Mozilla-related work I've done in week 44/2012 (October 29 - November 4, 2012):

Due to my traveling to London for MozFest, I completely missed making this report public even though I had finished it up before. Will follow up with a report for last week soon. :)

November 14, 2012 02:25 PM

November 05, 2012

Toni Hermoso Pulido

We are starting to live RESTful times in Biosciences

It's a long time since Molecular Biology data (from sequence strings to protein structural coordinates) are being released openly to the public, as it's the Web an interface for exploring and visualizing those data. Indeed, my first approaches to Bioinformatics and to, more or less, serious programing were preparing CGI points to command-line applications or to results of analysed data.

I think most Bioinformaticians of my age learned or assumed that serious business had to be done by bulk downloading raw files and then working on them (normally, by that time, in not very popular operating systems). At the same time, I have the impression that web interfaces were usually regarded as a kind of accessory commodity for less tech-savvy scientists (for instance, our wet lab colleagues).

As more and more data were produced, and at a fastest step, taking care of being up-to-date or handle different releases (sometimes in different variety of formats) became a real issue.

With this scenario, as a compromise for enabling automated access and not having to tangle with all the infrastructure and management difficulties resulting from handling large data, some providers started to offer APIs for their resources.

In some cases, such as ENSEMBL API, it consisted in a powerful abstract interface to a MySQL public-access database, allowing scientists to design their queries in a more biologically-oriented fashion (thinking about concepts such as sequences, annotation or chromosome locations) instead of having to pay attention to whatever DB structure is behind.

Parallelly, coming from enterprise environments, other solutions started to make themselves a place, such as SOAP. This web services protocol, despite its powerfulness and possibilities in a two-way communication, still represented a barrier for a larger adoption among 3rd party clients (which, most of the times, might simply desire a read-only easy-to-use access).

Finally, we are progressively seeing an increasing number of knowledgebases and services that are adopting RESTful APIs. That's the case of NCBI E-Utilities, released some years ago and, more recently, a platform such as ENSEMBL is making the step

This latter access to resources eases the creation of more diverse client solutions, such as webapps, which are essentially based on Javascript and can process XML or JSON responses very naturally. Depending on the case, despite it can still be necessary to have an intermediary layer between the primary source and the final client app, the workflow gets simplified by interiorising a more web-dominant communication.

In my opinion, this approach can enable more parties —who can afford to be less familiar with all the historical intricacies of Bioinformatics conventions— to explore biological data coming from other backgrounds where the Web is already succeeding and conveying this knowledge to audiences who might also benefit of it nowadays. These audiences should include from scientists to final citizens interested about themselves or about how we understand Life.

This last paragraph summarises the statement of principles that nurtured the BioData Design Jam Alina Mierluș and me prepared for last Campus Party 2012 in Berlin. This Saturday November 10, as part of the enormous Mozilla Festival 2012 (in London) we will iterate again on this with all those who want to join (more details).

 Some extra links

 

November 05, 2012 04:08 PM

October 30, 2012

Robert Kaiser

Weekly Status Report, W43/2012

Here's a short summary of Mozilla-related work I've done in week 43/2012 (October 22 - 28, 2012):

When working on the Mandelbrot app for a bit on Sunday, I found again that appCache is tricky to use when it comes to updating. On my mobile devices, I apparently ended up with the app only being partially updated to the new version. I guess I need to dig deeper on how to make this work smoothly...

October 30, 2012 08:50 PM

October 25, 2012

Mozilla L10n Blog

Open source shines at Localization World Seattle

As many of you know, Mozilla had the chance to attend and present sessions at one of the premiere localization industry events, Localization World Seattle (LocWorld). It was a great pleasure to participate in the conference and network with interesting people within the l10n industry. It was also a great success for both open source l10n and Mozilla’s l10n efforts.

 

Check out some of the greatness coming from our time at LocWorld:

 

L20n feedback
First, the audience in our session gave us great feedback and suggestions for L20n:
Pontoon feedback
Second, the audience also gave us great feedback for Pontoon:
General successes
Generally speaking, there were a lot of elements at LocWorld which combined to make the whole experience a great success. For example:
We’re excited to continue to participate in these events and look forward to attracting more interest on our l10n community’s excellent work! If you have any questions about our experience, shoot us an email.

October 25, 2012 09:10 PM

Robert Kaiser

Weekly Status Report, W42/2012

Here's a short summary of Mozilla-related work I've done in week 42/2012 (October 15 - 21, 2012):

I spent this weekend in Torino, Italy, for a workshop with students, and held a session there on how we go for measuring stability and investigating crashes. I wonder how many such sessions it takes to get more people to help us there. It's not hard to get in, but monitoring reports might sound tedious - but when you find a problem and it actually gets solved because of that before it hits too many users, it's a good feeling that you saved people out there from problems! :)

October 25, 2012 02:09 PM

October 18, 2012

Robert Kaiser

Weekly Status Report, W41/2012

Here's a short summary of Mozilla-related work I've done in week 41/2012 (October 8 - 14, 2012):

My status reports will probably be pretty short in the next weeks, if I am even able to do them. There's a lot on my plate right now, and taking care of stability of our products is quite time-consuming, even more so now that we are getting ready to introducing yet another product with Firefox OS. :)

October 18, 2012 11:33 PM

October 09, 2012

Robert Kaiser

Weekly Status Report, W40/2012

Here's a short summary of Mozilla-related work I've done in week 40/2012 (October 1 - 7, 2012):

It's probably quite visible in my updates that B2G / Firefox OS has become a much larger focus in my work recently, as it's moving from a feature work into a performance improvement and stabilization phase. The crash reporting UX is probably right at the borderline of that, as it's technically feature work, but needed as a large help for improving stability. I'm also testing the system a lot, with the default apps including the browser as well as my own apps, most importantly Lantea Maps, where it find it most annoying that I currently cannot save anything from the app to a file on the phone, so though I can record GPS tracks, I need to throw them away afterwards. I'll need to find a solution there.
That said, the system is shaping up nicely for a first edition geared towards a low-end smartphone market. I hope it will be successful in that setting, as it will only show its full power once we have that step behind us and can move to devices with more resources in addition to the low-end ones. :)

October 09, 2012 08:14 PM

Mozilla L10n Blog

New localizations for Firefox 16 desktop

We’re happy to announce that we’re adding new localizations towith the release of Firefox 16 desktop.

The Kazakh (kk) and Acholi (ach) teams have been working tirelessly to produce the world’s first ever Kazakh and Acholi versions of Firefox desktop for native speakers of the languages wordwide. According to our friends at Wikipedia, there are more than an estimated 10 million native Kazakh speakers and 1.22 native Acholi speakers around the world. Native Kazakh speakers can be found in Kazakhstan, China, Mongolia, Afghanistan, Tajikistan, Turkey, Turkmenistan, Ukraine, Uzbekistan, Russia, and Iran. Native Acholi speakers can be found in Uganda and South Sudan. Thanks to these teams and their efforts, more than 11.22 million native Kazakh and Acholi speakers can now enjoy the option to browse the Web with Firefox 16. The release of a these Firefox desktop localizations brings our total number of regularly shipped languages to 80. Congratulations to the Kazakh and Acholi l10n teams!

We also want to thank all of our l10n teams for their consistent, dedicated efforts to bring the latest innovations of the web to the people of their regions.

See all the different language versions at https://www.mozilla.org/en-US/firefox/all.html.

October 09, 2012 02:36 PM

October 05, 2012

Mozilla L10n Blog

Process changes for releasing new locales

There are a bunch of new teams out there who have been waiting on progress. Sorry for the wait, but here’s what you’ve been waiting for.

We changed a few things around releasing new localizations. Many things did not change, but I’ll start off with the new.

We’ve redone the process points from review request to being on the rapid release cycle. The purpose was to put less emphasis on the bugs and the technical details, and more emphasis on the l10n dashboard.

We hope to get to a point where localizers are working on the aurora branch on each cycle, and the contribution gets wider testing on beta, and then seamlessly goes to release. We want to have most things lined up before going into aurora and having aurora ready in one 6 week period. Then migrate to beta, get wider testing, and on the same version go to final, if the community review passes.

To do that we did the following:

And again, we put your team page front and center. That’s where you find what’s up to do, in the initial phase and beyond as we move from one cycle to the next.

Things that did not change:

The next batch of localizations we’re taking is going to ride along Firefox 18, coming on to Aurora next week.

October 05, 2012 07:31 PM

October 03, 2012

Mozilla L10n Blog

Awesome l10n contributor: Ibrahima Saar

Part of a series similar to the Awesome L10n Communities series where individual contributors are spotlighted for their efforts.

Ibrahima Saar

 

Started with Mozilla project: Firefox
Nationality: Senegalese/Mauritanian
Languages: Fulah (Pulaar-Fulfulde), Wolof, Arabic, Soninke, French, English, Spanish, survival Italian
Background: I studied Applied Linguistics, Language  Teaching Methodology, Translation and CALL (Computer Assisted Language Learning) at Moray House College in Edinburgh, Scotland.

My team and I have been involved in Fulah translation and localization as well as promoting the language on the Internet (www.pulaagu.com). In 2009, I led the Fulah teams on the 100 locales program and successfully completed the work for locales for Fulah_sn, Fulah_mr, and Fulah_gn. I also created most Fulah terminology for ICT, especially Firefox terminology.  Fulah is not a well-resourced language and almost everything had to be created from scratch. But we have implemented a method of creating terminology that respects consistency and coherence.

I started translating Joomla and other open source CMSs. Then I discovered Tuxpaint and started translation with PoEdit. In 2009 I completed the Fulah part of the “locales for 100 African languages” project. I was also involved in translation of Pootle’s basic terminology and Pootle server into Fulah.

Our biggest achievement yet is the localization of Firefox in Fulah which is released this summer (2012).

I have worked extensively on font creation, keyboard layouts creation and I am planning to build a  physical “pan-Senegalese/Mauritanian” keyboard usable to type Fulah,  Wolof, Soninke, Sereer. I speak, read and write English, French, Fulah (Pulaar-Fulfulde) Mauritanian Arabic, and Wolof. I read and write Spanish, some Italian and Arabic.

I like web and graphics design and when I have time, I write news articles for my website in Fulah (www.pulaagu.com), the first website ever in the Fulah language and the most visited. I use the Internet daily as administrator of two websites and a community blog and my personal blog, all of these dedicated to the Fulah language and culture.

Role in L10n community:
Fulah localisation team lead and major contributor (95% of Firefox). SUMO contributor and KB l10n. Created most of Fulah Internet and IT terminology from scratch.

Projects you’re currently working on:
Firefox, SUMO KB, “50 videos for mastering Firefox in Fulah”, Firefox OS localization (unofficially).

How did you get started with the Mozilla project?

I usually say I have been a localizer ever since because as a kid (from 8/9), I used to translate letters written in French for Fulah speakers who are illiterate. But I started the Firefox project with ANLOC (African Network for Localization). After successfully completing the localization of many other projects like TuxPaint, Abiword, Virtaal and Pootle, Dwayne Bailey from Translate.org.za proposed to localize Firefox. We could not believe it since I have always been a true believer in open source but also a user of Firefox since early releases.

I was not afraid of big projects, so I tried to get a few people from Fulah communities together to start working, but many were either not motivated or have not enough knowledge of IT. Since 95% of IT related terminology had yet to be created, I thought I would start the work and show people that nothing is impossible. It is only when the first early screenshots of the Firefox interface in Fulah were published that many joined. Dwayne created language packs so we could test our Firefox locally, and that has definitely triggered major interest in the Fulah community.

What tips or tricks do you use for overcoming blocks and bugs in your L10n work?

As I mentioned earlier, we had a real chance to have Dwayne Bailey helping out should we have any issues to deal with, and it is Dwayne who runs and manages the Pootle server we are using for the localization work. Pootle has fantastic built-in features for checking errors, bugs and other terminology related issues. With the translation memory, it is a lot easier to manage terminology consistency and Pootle does that really well.

So I would say that Dwayne’s help has been crucial and I learned a lot from him and also Friedel Wolff, one of the authors of Virtaal.

How do you help your team find new L10n contributors?

Fulah has a huge contributor potential because we are very “language conscious” people. Many Fulah people living in those twenty countries have strong feelings about being a Fulah, and the language is what makes us feel we belong the same people, although we are nationals of many countries.

Unfortunately, the Internet is the only way we can communicate and that is not yet considered as “real.” You have to meet people in person, convince them to work as volunteers, then train them to use all these tools. Recruiting is quite easy, but most who are really fluent in Fulah are not necessarily motivated to spend hours working for free! Or they just cannot access the Internet at home or maybe just don’t have a personal computer.

I am planning a number of l10n workshops in France, Senegal, Mali and Mauritania to trains SUMO volunteers. Most of the potential and actual contributors live in Africa. So it is not very efficient to just use email as it is too “unreal” and distant to get people to really feel they are involved. I hope Mozilla will help achieve this. Basically, contributors are there but you have to reach out to them in a more humanized manner to motivate them even more.

What’s your philosophy/method on mentoring new contributors?

Usually those who are involved already know me from other contributions to Fulah digitization, codification and promotion. So it is usually an honor for them when I contact them to ask them to work for Firefox. But again in my culture, you really need to meet people to establish a real contact and show them you are there to help, train, and support.

But I must say it is very hard to get people to work for free when they are struggling to make ends meet. So [I try] to have a personal relationship with them, [which usually leads to us] becoming friends. I call them quite often and not only to talk about contributing. That is the best way of having them around even when they are not really contributing.

But the most efficient way of mentoring them is to show them that they can do things and that they should not be afraid of all these tech terms they are not very familiar with. They can call me, invite me to talk on Skype, or post on my Facebook wall.

Since people are working as volunteers, you need to constantly make them feel they are actually making a difference no matter how much they contribute.

If you could identify several best practices that have helped you to become a successful Mozilla localizer, what would they be?

I think my personal motivation helped me a good deal in going ahead with the Mozilla project. So to keep motivation at a satisfactory level, it is important to adopt a effective strategy to make the work less tedious. As for Fulah, I could certainly not have been so successful [had I] not used Pootle server and Virtaal (translation editor).

Since Virtaal is an offline editor, I used it for translating .po files then checking errors offline before uploading to the server (Pootle). Then we can use Pootle to make the usual checks. So Pootle and Virtaal are really efficient tools that allow you to adopt a workflow that makes the task less scary.

As a team lead, I worked very hard to complete the biggest files to motivate others. So being the biggest contributor is also a good way of boosting others’ motivation.
Finally, in any type of work, being organized is a key strategy. When you start a huge project like Firefox l10n, you live in doubt whether you are fit for the job or not. You think you will never finish and soon wonder if it is worth carrying on something that will never end. What I believe is you have to fit the project into your everyday life.

These are just what worked for me and I hope it will help others to start, complete or update their localization. And I one day, I got this message from Milos Dinic:

Thanks folks,
I just want to say we’re happy how things are evolving and that Fulah is one of the very few locales that we’re releasing in one train (started in aurora with Firefox 14, moved to beta in Firefox 14, and releasing in Firefox 14).
So, yes, we’re releasing Firefox in Fulah in this cycle, and I’ll close the tracking bug past the release (July 14).
Keep up the good work!

These are the most beautiful words I have heard recently and I was speechless when I read that jaw-dropping news that drove me to tears.

What are you most looking forward to accomplishing this year?

Since we have completed Firefox with such efficiency, my objective this year and in 2013 is to hold talks and organize workshops in Africa to recruit dozens of contributors  and spread the word about Firefox and Mozilla products.

I’d like to do so by attending major cultural events like the Blues du Fleuve festival which is organized by Senegalese world music superstar Baaba Maal, humanitarian activist and Global Ambassador for OXFAM (www.baabamaal.tv) or the Water Festival in the same region.

What projects are you most looking forward to working on this year?

Good question! Firefox OS!! Localization for Firefox OS is something that I am ready for and jsut too excited about. You know for a people that are divided into 20 countries, life is the web and the web in African is mobile, and mobile it will remain. So Mozilla you know what’s next now… ;-)

Five things you may not know about me:

  1.  Because of my commitment to making Fulah a fully digitized language, many call me “tear wiper.” ;-)
  2. At the age of eight, I walked 5 kilometers (there and back) a day to go to school from my uncle’s home (did that for 2 years). On Saturdays, another 11 kilometers back to my parents’ village where there were only 2 classrooms! And back on Sunday to my uncle’s who lived “only” 5 km away from my school.
  3. I am a weird ambidextrous (left and right handed) but I am also able to write in both directions with either hands. That’s not all: I can write simultaneously with both hands, in opposite directions but it has to be the same text!
  4. I am a freelance journalist writing news articles in Fulah for my website www.pulaagu.com.
  5. I am a veteran Flight Simulator enthusiast and have been flying hardcore for many years. Just love aeronautics, flying, planes, airports, etc.

October 03, 2012 05:23 PM

Robert Kaiser

Weekly Status Report, W39/2012

Here's a short summary of Mozilla-related work I've done in week 39/2012 (September 24 - 30, 2012):

A lot of my time right now goes into various B2G discussions as well as testing the system on my device. That takes away time from e.g. writing those weekly updates, but OTOH help making Firefox OS much better once we ship it - and even if we're scrambling to make our deadlines, I think it's shaping up nicely and the final product will rock! :)

October 03, 2012 05:09 PM

September 28, 2012

Staś Małolepszy

Bucket 1 Gaia apps are now string-frozen

Good news, everyone! The first string freeze for Gaia is now in effect.

Thanks for waiting patiently as we polished the final wording. Read on to find all the answers you might have about how to jump straight into the work.

Which apps are string-frozen?

This is the first string freeze (there will be a second one in October) and the list of apps that you can start working on (the “bucket 1”) is as follows:

See https://wiki.mozilla.org/L10n:B2G for details.

How many strings are there?

It’s 366 strings, with a total of 868 words. Not so many :)

How much time do we have?

You have until October 26th to complete this batch.

Where are the files?

The files live in Mercurial in the special gaia-l10n hierarchy. One unusual change from the regular Firefox workflow is that the en-US files can also be found in gaia-l10n. Remember to clone via SSH, for instance:

hg clone ssh://hg.mozilla.org/gaia-l10n/pl

You can use compare-dirs (pip install compare-locales will get you compare-dirs, too) to see the stats.

Some locales will see some strings localized, taken from the git repository. If you’re one of those locales, please review all the existing translations carefully.

This is important! If you worked on Gaia l10n before the string freeze, please make sure your translations are up-to-date. English strings may have changed!

What about the dashboard?

You can see the compare-locales output on your locale’s team dashboard (the example I linked to is for Polish). (We’ll make it look nicer.)

If you can’t see Gaia in there, sign up on the community-gaia-list etherpad and we will hook your locale up.

Sign off when you’re done and have tested your work.

How to test my localization?

Use a desktop build! See the quick & dirty instructions to get started. If they don’t work for you, email me or talk to me on IRC. With your help, I can make this HOWTO much more robust and accurate.

You might also want to check out my two blog posts: Running Boot to Gecko on your desktop and How to test localizability of Gaia system apps.

Going beyond Bucket 1

What else is in store? There will be a second string freeze, expect updates on the schedule. And we’ll also soon start the localization of the Gecko part of Firefox OS, taken from mozilla-aurora. Think netError.dtd, global.dtd, intl.properties etc. Most of that already exists in mobile/ so I don’t think there will be a lot of work there.

I’ll also post about the nightly builds once we start makig them.

Questions?

Impossible, I thought I covered everything! :)

Please do ask questions in the mozilla.dev.l10n thread or on IRC. This process is an interesting mix of old and new. There might be hiccups along the way, but my goal is to make it as smooth as possible. I’ll appreciate your feedback and ideas!

September 28, 2012 05:47 PM

September 27, 2012

Robert Kaiser

Weekly Status Report, W38/2012

Here's a short summary of Mozilla-related work I've done in week 38/2012 (September 17 - 23, 2012):

Things are busy again, esp. due to deadlines coming up in the B2G project and the general pace of Firefox OS work picking up. I have we finally are on the breakthrough to also get crash reporting in this system in the right direction so we can more efficiently help to make this a damn stable experience for our users!

September 27, 2012 11:31 PM

Mozilla L10n Blog

Get to know a L10n driver: Axel Hecht

I’ve been contributing to the Mozilla project since 1999. Today I’m an employee based in Berlin, Germany and I work on coordination and infrastructure for our L10n efforts.

You can find me on IRC as Pike. I’m usually on a variety of channels there. I also follow our .l10n and .planning newsgroups, as well as various product and project groups.

On bugzilla, you can CC me as l10n@mozilla.com for L10n stuff, axel@pike.org for RDF, and I follow the :l10n and :rtl aliases. You can also follow me on my blog.

Some things you may not know about me:

* I’m a founding member of Mozilla Europe.
* Technically, I’m also the RDF module owner, but that just means that I keep everyone else from breaking it until we remove it.

September 27, 2012 09:36 PM

Axel Hecht

Language packs are restartless now

Language packs are add-ons that you can install to add additional localizations to our desktop applications.

Starting with tomorrow’s nightly, and thus following the Firefox 18 train, language packs will be restartless. That was bug 677092, landed as 812d0ba83175.

To change your UI language, you just need to install a language pack, set your language (*), and open a new window. This also works for updates to an installed language pack. Opening a new window is the workaround for not having a reload button on the chrome window.

The actual patch turned out to be one line to make language packs restartless, and one line so that they don’t try to call in to bootstrap.js. I was optimistic that the chrome registry was already working, and rightfully so. There are no changes to the language packs themselves.

Tests were tricky, but Blair talked me through most of it, thanks for that.

(*) Language switching UI is bug 377881, which has a mock-up for those interested. Do not be scared, it only shows if you have language packs installed.

September 27, 2012 11:04 AM

September 24, 2012

Mozilla L10n Blog

Documenting L20n.js

L20n’s JS lib is getting test cases and better documentation to make the code easier to work with and understand.

The JavaScript implementation of L20n is composed of 4 main components:

At this point, we’re almost feature frozen for all of these four components. We’re fixing bugs and making sure the public API is consistent and understandable.

Last two weeks saw us working hard on the context part. We finished a major code refactoring and introduced a robust locale fallback, which I’ll blog about in a future post.

Testing with Mocha

Another important improvement introduced recently was the addition of a full-featured testing framework, Mocha. We’ve written over 200 test cases for the compiler and currently we’re creating more tests for other components. As an nice bonus, Mocha also gives us beautiful test coverage reports.

Mocha is based on node.js, so we had to make a few small modifications to the codebase in order to support it. For example, we make use of node-XMLHttpRequest to mimic the XHR interface available in the browser.

Project page on GitHub

We created a GitHub page to serve as the entry point for all of the docs that we’re writing. Check it out at l20n.github.com/l20n.js.

We use excellent Docco to generate documentation from the comments in the code. See the compiler docs for an example.

September 24, 2012 10:26 PM

Staś Małolepszy

Documenting L20n.js

The JavaScript implementation of L20n is composed of 4 main components:

At this point, we’re almost feature frozen for all of these four components. We’re fixing bugs and making sure the public API is consistent and understandable.

Last two weeks saw us working hard on the context part. We finished a major code refactoring and introduced a robust locale fallback, which I’ll blog about in a future post.

Testing with Mocha

Another important improvement introduced recently was the addition of a full-featured testing framework, Mocha. We’ve written over 200 test cases for the compiler and currently we’re creating more tests for other components. As an nice bonus, Mocha also gives us beautiful test coverage reports.

Mocha is based on node.js, so we had to make a few small modifications to the codebase in order to support it. For example, we make use of node-XMLHttpRequest to mimic the XHR interface available in the browser.

Project page on GitHub

We created a GitHub page to serve as the entry point for all of the docs that we’re writing. Check it out at l20n.github.com/l20n.js.

We use excellent Docco to generate documentation from the comments in the code. See the compiler docs for an example.

September 24, 2012 10:23 PM

September 21, 2012

Mozilla L10n Blog

Coming to your twitter feed

I am very happy to announce that @mozilla_l10n is officially live!

Here’s what you can expect from following @mozilla_l10n:

In brief, this handle is for you! Let us know if there are specific announcements you’d like to be tweeted. Need more localizers? We’ll tweet about it! Having a l10n sprint to get your channels up-to-date? We’ll tweet about it!

If you’re a fellow tweeter, please follow us and encourage your fellow localizers to do the same.

 

September 21, 2012 04:38 PM

September 20, 2012

Robert Kaiser

Weekly Status Report, W37/2012

Here's a short summary of Mozilla-related work I've done in week 37/2012 (September 10 - 16, 2012):

That week was a bit short as I only came back late from Warsaw on Monday, then needed to catch up with work and get rested again, and on Thursday I took most of the day off (except for some meetings) because it was my birthday. The report on the week comes quite late, though as this week was more intense again - but more about that in the next report. ;-)

September 20, 2012 10:30 PM

Staś Małolepszy

September 21 - First string freeze for Gaia

As work on Gaia move forward, we are now getting ready to start the localization efforts. There will be two string freezes for Gaia, with two buckets of apps, each freezing at a different time.

The first string freeze is coming this Friday, September 21st.

We were able to stabilize 14 apps out of 20 that constitute Gaia. Some of the bigger apps, like Email, Calendar, Settings and System are not ready yet in terms of features and UI at this point, but we decided to seize the opportunity to start the localization early with apps that are stable and finished.

The first bucket of apps

The apps string-freezing this Friday, or the first bucket apps as we have dubbed them, represent around half of all the strings that will eventually be part of Gaia. In terms of numbers, we’re talking less than 400 strings freezing this Friday, and the remaining ~400 freezing sometime at the beginning of October.

You will have until October 26th to complete and test your translations. That’s 5 full weeks!

Increasing the participation

By opening up the localization effort to everyone, we’re creating a place for you to play. We want you to test localizability, come up with new vocabulary, grow the community and evangelize third-party webapp developers. Show the world that you’re interested!

That said, the first devices will be shipped in Latin America, and there is no guarantee that we will be able to ship your locale on the actual device anytime soon. This is important to understand and we want to set the expectations very clearly. (And yes, we have learned from the Fennec experience, thanks for asking :) )

What it’s going to look like

Thanks to the collaboration between the Gaia team (especially Kazé and Vivien), as well as the Releng team (John and Hal), we will be able to use our regular workflows and tools. The localization files (.properties) will be stored in Mercurial, in http://hg.mozilla.org/gaia-l10n/. Note that not all repositories have been created at this point, see bug 768373 and bug 792593 for details.

The localization dashboard will show compare-locales statistics for your locale, too.

Some of the string will need to be localized in Gecko, i.e. in mozilla-central or mozilla-aurora (think netError messages). Expect more updates about this soon.

We will be also working on getting localized builds out the door.

Stay tuned

I will post more details on Saturday, with the exact list of apps that are string-frozen, specific cloning instructions and a testing guide. For now, just stay tuned! It’s an exciting moment for Mozilla’s l10n community!

As always, feel free to post in mozilla.dev.l10n if you have questions, or ping us on IRC.

September 20, 2012 01:55 PM

September 18, 2012

Toni Hermoso Pulido

Mozcamp 2012 i què es pot fer des de l'àmbit català

El passat cap de setmana va tenir lloc a Varsòvia una altra edició del Mozcamp, el nom que reben les trobades internacionals de la comunitat de Mozilla. Concretament de la comunitat catalana vam ser convidats n'Alina, n'Eduard i jo. Malauradament, n'Eduard, que tot just se n'havia anat a Boston, no va poder participar-hi.
L'esdeveniment, amb el sobrenom de 'Mobilize Mozilians', va centrar-se sobretot en la importància d'estendre's al món mòbil.

Mobilize Mozilla

Gran part de les sessions van tractar del futur FirefoxOS, un ambiciós sistema operatiu mòbil amb nucli GNU/Linux que es basa a nivell d'aplicació únicament en tecnologies web (i sense que això requereixi una connexió permanent!). Tot i que fins l'any que ve (i, en principi, només a Brasil) no hi haurà un dispositiu al mercat que l'incorpori de fàbrica, ara mateix ja és possible anar creant aplicacions web (webapps) que poden funcionar tant en aquest sistema operatiu, com també a la majoria de dispositius Android que tinguin instal·lat el Firefox mòbil.

Sense cap mena de dubte, ens trobem en temps molt excitants per a tots aquells que treballem amb el Web. Precisament, un dels majors reptes del Firefox OS és portar la tecnologia web i, en particular el JavaScript, a límits insospitables fins ara. Per tal de fer possible un dispositiu íntegrament web per a l'usuari final, s'estan elaborant un gran nombre d'API per a funcionalitats com ara l'accés a sensors o l'enviament de SMS que, fins ara, només eren disponibles per a programadors d'aplicacions natives.

Aquest nou panorama obre també nous reptes per a les comunitats de Mozilla, cada cop mes diverses i que s'estan estenent a territoris on fins ara tenien una presència residual, com ara el Magreb. La comunitat catalana també comparteix aquests reptes i, amb això, se'ns planteja desafiaments que hem de saber afrontar.

A continuació detallo alguns aspectes on crec que es podria millorar la implantació de les tecnologies Mozilla i/o dels principis d'obertura del web a la nostra societat.

Traducció:

La comunitat catalana de Mozilla va néixer al voltant del seu projecte de traducció a Softcatalà, on precisament el Navegador (antecessor del Firefox) va ser la primera aplicació que va traduir aquesta associació. Malauradament, malgrat la popularitat dels programes, ens trobem actualment amb una greu manca de col·laboradors, estant en perill la continuïtat de la traducció en la nostra llengua.

Documentació:

Tot i que els productes de Mozilla acostumen a ser fàcils de fer servir, sempre poden sorgir problemes i dubtes. El lloc web support.mozilla.com, que recull la majoria de documentació dels productes actuals, fa temps que no té contribucions en català. També hi ha altres llocs on pot haver-hi usuaris desatesos, com ara les xarxes socials (Facebook, Twitter) o els fòrums de Softcatalà.

Difusió i informació:

Per a la comunitat catalana el lloc central de difusió ha estat sempre mozilla.cat, nascut gràcies a Albert Juhé. Tot i així, encara ens fa falta l'ajuda de més gent per explicar de prop tot allò que es cou a Mozilla, tant des del mateix bloc com també a les xarxes socials.

Evangelisme tecnològic:

Totes les aproximacions i tecnologies mòbils que s'estan creant des de Mozilla són una gran oportunitat per al desenvolupament d'aplicacions web molt potents. Per això és necessària tota una tasca de difusió d'aquests avenços entre les comunitats professionals i/o de pràctica ja existents al nostre país, sigui mitjançant xerrades o tallers pràctics. Al mateix temps, no cal oblidar, la preparació d'aquest tipus d'actes són alhora una excel·lent forma d'autoaprenentatge.

Formació social:

Un dels objectius cabdals de Mozilla és garantir una major competència digital a la xarxa per a un cada cop més ampli sector de la població, siguin infants, adults o gent gran. Per tal d'aconseguir-ho, cal formar totes aquelles persones del sector social que vulguin ajudar en aquesta ambiciosa empresa i alhora establir diferents metodologies de les activitats que es vagin impartint.

Aquestes són algunes de les diferents propostes on es pot col·laborar; però segurament que n'hi ha moltes més que podeu haver pensat, que creieu que s'alineen amb els principis de Mozilla i que voldríeu que es poguessin fer realitat…

September 18, 2012 10:16 PM

September 16, 2012

Pascal Chevrel

Vidéo de démo du serveur intégré à PHP 5.4

J'ai fait une petite vidéo de démo de l'utilisation du serveur web intégré dans PHP 5.4, vous la trouverez ici :

September 16, 2012 07:55 PM

September 12, 2012

Robert Kaiser

Weekly Status Report, W36/2012

Here's a short summary of Mozilla-related work I've done in week 36/2012 (September 3 - 9, 2012):

This was a week where most things I did outside of my routine were either preparation for MozCamp or of course attending it. Once again, this was a great event, energizing and mobilizing while at the same time quite straining due to short nights and the need of a lot of concentration in meetings. I demoed Firefox OS to a number of people, had a few conversations about its (upcoming) crash reporting story, stability work in general, as well as L10n and a few other topics I'm interested in. Of course, I also hosted a session on stability together with Benjamin Smedberg, and I think that was a good overview on what's being done there, which issues we're facing and where we need help. All in all, a lot for me has been circling around Firefox OS for sure, as I really want to help making that system a great success. And I hope there's a lot of other people willing to help there! :)

September 12, 2012 08:20 PM

September 07, 2012

Mozilla L10n Blog

Localization sessions at MozCamp EU 2012

MozCamp EU 2012 is just around the corner and it just wouldn’t be MozCamp if the L10n Drivers didn’t host a variety of sessions dealing with current l10n topics.

As you may know, the MozCamp session format is being reinvented. Each session is now meant to be a workshop. This means that rather than having one person presenting on a topic while the audience listens, the presenter and audience focus on a clear, deliverable objective and produce something together. This new approach gives us a rare opportunity to get deeply involved in your localization effort.

In addition to the approved set of sessions, there will be breakout l10n sessions on Sunday morning in the common hang out area. Below you’ll find a list of both the approved sessions and the “impromptu” breakout sessions. Hope to see you there!

Approved sessions

Breakout sessions

September 07, 2012 06:16 AM

September 06, 2012

Robert Kaiser

Weekly Status Report, W35/2012

Here's a short summary of Mozilla-related work I've done in week 35/2012 (August 27 - September 2, 2012):

I caught a bit of a cold over the weekend, but it looks like I'm recuperating fine in time for MozCamp Europe - which I'll be joining the upcoming weekend in Warsaw. I've set my personal mission for that event to be completely centered around Firefox OS as I really want to help it being successful. I'm looking forward to showing its current state to as many people as possible on this event and get to talk to many people about it and other Mozilla topics. Most of all, I'm looking forward to meeting a lot of Mozillians - hope to see you there as well! :)

September 06, 2012 12:19 AM

August 31, 2012

Mozilla L10n Blog

New branding for Mozilla l10n

For the longest time we have used an icon of a sphere made up of many of the world’s flags to identify the l10n program. With the change to the new One Mozilla theme on all mozill.org websites, we thought it was time to modernize and re-brand the program that puts users first, no matter where they are (or what language they speak).

Behold, the new icon for Mozilla l10n!

 

August 31, 2012 10:48 PM

August 29, 2012

Burning Edge - Firefox

Firefox Nightly 17, weeks 1-6

Speed & memory:

  • Fixed: 754671 - Thumbnails directory (in profiles directory) keeps growing infinitely.
  • Fixed: 774811 - Thumbnail_capture causes 125ms of jank during load of webgl aquarium.
  • Fixed: 753448 - Preload new-tab pages in the background and swap them in when opening a new tab.
  • Fixed: 683290 - We won't discard any images on the current tab even if they are not in the DOM.
  • Fixed: 685516 - Mitigate flickering problems when inserting images into the DOM that have no decoded data.
  • Fixed: 614732, 776054 - SVG display lists.
  • Fixed: 706179 - Async CSS animation.
  • Fixed: 768440 - Animate CSS Transitions on the compositor.
  • Fixed: 755084 - Do animations on the compositor thread when possible.
  • Fixed: 691651 - Only reframe fixed-positioned descendants when whether an element has a transform changes.
  • Fixed: 625199 - JS: Remove dummy frames.
  • Fixed: 753158 - JS: Emit ALIASEDVAR ops for upvars.
  • Fixed: 778724 - JS: Allow purging analysis-temporary while retaining jitcode.
  • Fixed: 767013 - JS: Only store aliased variables in scope objects.
  • Fixed: 769911 - JS: Generate ICs which see through ListBase proxies.
  • Fixed: 462300 - JS: Implement infrastructure for self-hosting JS builtins.
  • Fixed: 779183 - JS GC: Incremental sweeping of atoms table.
  • Fixed: 729760 - JS GC: Incremental sweeping of shapes and types.
  • Fixed: 743112 - JS GC: Incremental deferred release.
  • Fixed: 769273 - CCW "Nuke" feature for sandboxes.
  • Fixed: 770000 - Video control on html5 video repaint too often on Youtube player.
  • Fixed: 709297 - Limit disk cache size until/unless "clear recent data" can be done async.
  • Fixed: 673470 - Replace the sqlite safeb store with a flat file.
  • Fixed: 617453 - Kill least-recently-used WebGLContexts upon reaching a limit.
  • Fixed: 750570 - Suspect native cycle collected objects.

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 341604 - Implement HTML5 sandbox attribute for IFRAMEs.
  • Fixed: 746142 - Add @inputmode to input element.
  • Fixed: 697230 - Make style image decode block onload.
  • Fixed: 719320 - DOM: Implement wheel event.
  • Fixed: 782190 - DOM: Implement onwheel attribute.
  • Fixed: 579638 - DOM: Reinstate intersectsNode on Range.
  • Fixed: 725909 - JS: Make Maps and Sets iterable.
  • Fixed: 772733 - JS: Implement harmony string methods: .startsWith, .endsWith, .contains.
  • Fixed: 352437 - JS: String.link does not escape url.
  • Fixed: 433529 - JS: Statically name anonymous JavaScript functions for the debugger and Error.stack.
  • Fixed: 308801 - CSS: min-height/max-height does not work for box-sizing:border-box.
  • Fixed: 562169 - CSS: Implement the :dir(rtl/ltr) selector.
  • Fixed: 774335 - CSS: Implement unicode-bidi: isolate-override.
  • Fixed: 649740 - CSS: Feature queries (@supports, @-moz-supports).

For more, read Firefox 17 for developers.

Other notable fixes:

  • Fixed: 783282 - When dragging a tab within the tab strip, move it directly instead of displaying a drop indicator.
  • Fixed: 780345 - PageDown scrolls too far on pages with fixed header elements.
  • Fixed: 391834 - Security: Don't allow alert/confirm/prompt in onbeforeunload, onunload and onpagehide.
  • Fixed: 553102 - Security: Flip __exposedProps__ default for non-WN objects to default-safe. (jorge's blog post)
  • Fixed: 215450 - Uploading files that are larger the 2GB fails.
  • Fixed: 435325 - Offline-mode error page should switch to online mode when clicking 'Try Again'.
  • Fixed: 781476 - Expando properties aren't accessible on certain objects when running same origin code in different compartment.
  • Fixed: 761723 - Implement toString of function objects by saving source.
  • Fixed: 782115 - Dictionary add-ons should be compatible by default.
  • Fixed: 669999 - Add a library for parsing and consuming source map files to Firefox.
  • Fixed: 776208 - Provide API for JavaScript extensions to create native plugins previews for specific mime type.
  • Fixed: 752841 - On the new tab page, make the number of thumbnails adjustable.
  • Fixed: 110894 - [Windows] Use favicons on webpage shortcuts.
  • Fixed: 574229 - [Mac] Choosing "New Window" from Firefox's dock menu does not open the new window in the active Space.
  • Fixed: 733905 - [Mac] Switch compiler from apple-gcc to clang.
  • Fixed: 728106 - [Mac] On Mac OS X 10.8, use Notification Center instead of Growl.
  • Fixed: 772682 - [Mac] Make Mac OS X 10.6 the minimum system version.
  • Fixed: 751749 - [Linux] Cannot configure keyboard shortcuts to use Meta modifier instead of Alt.

All 4152 changes between FIREFOX_AURORA_16_BASE and FIREFOX_AURORA_17_BASE

2012-08-27 nightly builds (discussion)

August 29, 2012 05:05 AM

August 28, 2012

Robert Kaiser

Weekly Status Report, W34/2012

Here's a short summary of Mozilla-related work I've done in week 34/2012 (August 20 - 26, 2012):

The Firefox 15 releases we just shipped for desktop systems and Android (phones plus tablets!) are surely worth checking out - fewer add-on memory leaks, improved developer tools, Android tablet support and more are really nice highlights of this update.
What thrills me most though is that web technology is improving to make a lot of things possible in a website or web app that almost everyone thought to be impossible previously. And there are demo games to showcase those features, like BrowserQuest, which works nicely on desktop as well as mobile devices, and - hold your breath - a first-person shooter running smoothly in the browser! See Lawrence's blog post for more about that "BananaBread" demo, and a link to test it yourself (for the latter, you'll need Firefox 15 or newer, on Linux possibly even Firefox 16).

Seeing that in action, I have no doubts any more that the web can be a great platform even for gaming (and all that without OS boundaries mattering). ;-)

August 28, 2012 05:42 PM

August 22, 2012

Mozilla L10n Blog

Translate-a-thon in Mexico

Yucatec Maya is spoken daily by nearly 700,000 people in the Southern Mexico. It’s a living language, descendant of the civilization of antiquity, which has stood for centuries, with a growing artistic production. It is also used in daily speech among the Spanish-speaking Mexicans who live in the states of Yucatán, Campeche and Quintana Roo.

Among the younger bilingual speakers (Mayan/Spanish), there is a growing interest in using digital tools in their mother tongue. Therefore Nacnati (an NGO formed by digital enthusiasts under the age of 30), the Mozilla Mexico chapter, Wikimedia Mexico and the National Commission for Development of Indigenous Peoples of the government of Mexico held a Mayan Translatón (translate-a-thon) in Merida, Yucatan, commemorating the International Day of Indigenous Peoples on August 9th. Among the group of 31 translators were anthropologists, lawyers, researchers, graduate students in Maya and even high school students from nearby boroughs, such as Peto, Tekax, Valladolid, Halachó and Muna.

During the Translatón, which occurred from 8 am to 6 pm, participants localized Mozilla Firefox, increased the articles of Yucatec Mayan Wikipedia — which is still at Wikimedia Incubator — and uploaded the first documents of the Google Endangered Languages project.

With this event, the event’s participants and sponsors began a very important activity for new and current generations of our Mayan communities. Articles have been added to Wikipedia, the Firefox browser in Maya will now be published sooner, and Maya linguists are uploading documents to the Google Endangered Languages project. But the highlight of the Mayan Translatón is that 31 mayan language advocates are committed to follow this initiative and repeat this activity for the next event.

Ko’one’ex! (Hooray! in maya.)

August 22, 2012 07:54 PM

Robert Kaiser

Weekly Status Report, W33/2012

Here's a short summary of Mozilla-related work I've done in week 33/2012 (August 13 - 19, 2012):

If you have Flash 11.3 running, please update to the just-released 11.4 version as soon as possible (Adobe should send the update your way anyhow). We're trying to help Adobe on improving their plugin on the basis of the newest release, which is that one now - and they tell us there should be some improvements in this one already. Also, if you have reproducible cases of the plugin crashing or freezing/hanging, please file reports in Bugzilla against the Plugins product and "Flash (Adobe)" component and CC me or someone else from the stability team so we can track this!

August 22, 2012 04:39 PM

August 17, 2012

Mozilla L10n Blog

Get to know a L10n driver: Arky

I’m an Indian living in Hanoi, Vietnam.
At mozilla, I’m a Community Manager (L10N), helping create, connect and support new localization teams around the world.

I’m a technologist, hacktivist and an artist. I’ve worked with various FLOSS project over the last 10 years, helping various business and non-project organisations adopt/leverage FLOSS software.

You can follow my personal blog here.

 

August 17, 2012 06:42 PM

August 16, 2012

Robert Kaiser

Weekly Status Report, W32/2012

Here's a short summary of Mozilla-related work I've done in week 32/2012 (August 6 - 12, 2012):

This update is late again, as I was limited in work time at the start of the week due to a family birthday party.
That said, with the ongoing focus on Flash stability and the Google doodle issue, the last week was quite busy and intense in Firefox stability matters. It looks like we are making progress on all fronts, though, so I'm definitely positive that things will get better in the long run.
And in other news, I now know that I'll attend MozCamp Europe in Warsaw. Hope to meet many Mozillians there! :)

August 16, 2012 11:10 PM

August 08, 2012

Mozilla L10n Blog

SUMO L10n redesign

Enjoy this guest post from SUMO Community Manager, Rosana Ardila.

We have good news for our SUMO localizers: we will have some development time to enhance the SUMO l10n tools! We know that our tools were designed for the past release cycle, and now that we have a new Firefox version every 6 weeks we have many updates. I have talked to many of you and we know that we could do some things better. So please, give us your feedback and we will make the tools better for you.

Right now we have so many articles that need an update, so as you do this work, you can think about the main pain points and give us your ideas to make this better. We would love to implement all of your ideas and solve all of your problems, but we don’t have the resources to do it. So please keep in mind that we will have to choose a couple of changes and that we can’t promise you to fix all. But I’m sure we will find a way to make the tools much better!

We want to make this a collective effort, so we created the project plan and three etherpads to track the bugs that were already created, the main pain points and your ideas. It would be great if all of you give us your input or just put your name and a +1 next to an idea or comment you support. If you would like to have a conversation about tools with me or with other localizers we can organize a video, phone or IRC meeting let me know, I’d be more than happy to host it. The idea is to work on this together and create tools that work well for you, our localizers.

You can find the project plan here: http://mzl.la/OCMFdh. Please circle this with all SUMO localizers and give us as much feedback as you can. If you have comments on the project plan or any questions I’m here to help.

August 08, 2012 04:54 PM

August 06, 2012

Robert Kaiser

Weekly Status Report, W31/2012

Here's a short summary of Mozilla-related work I've done in week 31/2012 (July 30 - August 5, 2012):

It's a rare day that I start my work day late and see the reason for that waiting on xkcd! :)
I'm still in awe how such a complex mechanism works so perfectly on the first try, esp. as I know how easy you can get things right - in the software business I think everyone is aware how hard it is to stay completely free of bugs. In my work with crash analysis, I see daily how far off that we are. All that makes me even more aware of what a feat it is to be successful with a landing like MSL/Curiosity made early today. After all, there's no second try, this needed to go right on the first shot. And it did. Awesome.

August 06, 2012 08:07 PM

Staś Małolepszy

How to test localizability of Gaia system apps

Gaia is a collection of HTML5 apps running ontop of Gecko. These apps are akin to regular websites you visit on the Web every day and they’re made using the same technologies: HTML, JavaScript and CSS.

And just like other webapps, Gaia can be run in Firefox and tested using Firefox’s developer tools!

This is a gamechanger for localization. You can preview the structure of any Gaia app in the Inspector. You can adjust the size of the viewport with the Responsive Design View. You can live-edit the underlying HTML code using Firebug. And if you change some code or edit a localization file, just reload to see your changes right away.

I recorded a 15-minute-long screencast to show how easy it can be to work on Gaia localization. Using the aproaches that I show in the screencast, you can:

Note: As of August 2012, you’ll need Firefox Nightly or Aurora to make the most of Gaia webapps. Beta and Release don’t support all the APIs yet. (What are the release channels?)

Watch the screencast

Fun fact: while recording the part about looking for potential localizability issues (around the 9:00 mark), I stumbled upon a real localizability bug. I submitted a pull request with a fix, which has since been merged into Gaia’s main codebase.

Script

Here are the notes that you can see me use in the screencast.

How to test the desktop builds

How to test Gaia in the browser

How to use the devtools and Firebug with Gaia

Discussion

Don’t hesitate to ping me (stas on irc.mozilla.org) in #l10n, #gaia or #b2g. For localization-related questions, I encourage you to ask in the mozilla.dev.l10n newsgroup.

August 06, 2012 12:07 PM

August 01, 2012

Robert Kaiser

Weekly Status Report, W30/2012

Here's a short summary of Mozilla-related work I've done in week 30/2012 (July 23 - 29, 2012):

If you are on Windows 7 or Vista and seeing stability problems with Flash, please update to their newest version (currently 11.3.200.268) and if the issues persist, please try to find reliable steps how to reproduce the problems. Report those to us, we are working with Adobe so they can fix their plugin, but it much easier for them to find solutions if they can reproduce the crashes or hangs themselves.

August 01, 2012 04:07 PM

July 30, 2012

Mozilla L10n Blog

Pontoon is looking for a pilot project

Taken from Matjaž Horvat’s blog:

I haven’t blogged about Pontoon for months and there’s no excuse for that. But that doesn’t mean it wasn’t keeping us busy.

In case you forgot, Pontoon is a website localization tool, which provides localizers with features never before seen in an open source website localization tool: WYSIWYG context and in-place editing.

Many things have changed in the last couple of months, including a transition to the Mozilla server infrastructure and to Playdoh – a web application template based on Django. We also implemented an AJAX-based user registration and login using Persona.

Translations are now automatically saved to a [translation memory] after every change, but you can also manually save your work to a predefined Transifex project. This is particularly useful for sites which cannot be fully localized using in-place string editing.

I’d like to thank the amazing Transifex team who helped me a lot with using their API and even modified it to suit our needs. Special thanks go to Ratnadeep Debnath, who volunteered his time to vastly improve our PO export and is now finishing the Django hooks. You rock!

All of this has brought us to the stage where we’re looking for a pilot project. Any not-yet-localized Mozilla website would be appropriate, but not too big in terms of number of strings to translate and locales to participate. We don’t want to hurt our localizers too much! :-)

Any candidates?

July 30, 2012 05:11 PM

July 28, 2012

Staś Małolepszy

Pushing the B2G string freeze back a few weeks

If you followed my recent announcements on this blog and in the mozilla.dev.l10n newsgroup, you were probably expecting a string freeze for B2G, a.k.a. Firefox OS, this Friday, July 27th.

The string freeze didn’t happen and we are pushing the localization schedule for B2G back a few weeks. I don’t expect the localization to start by the end of August.

What is the new localization schedule?

The exact schedule is yet to be determined. I hope to have more details in a week or two, so please do follow the newsgroup and expect more posts coming soon.

Is this a good thing?

Yes :) Having more time is obviously beneficial in many respects:

Can the localizers work on something else today?

Meanwhile, there still are a few other things that you can do today to help B2G and Gaia be ready for localization.

Review the wireframes of Gaia apps.

Read more in this thread on mozilla.dev.l10n.

Test desktop builds and file bugs

I blogged about the desktop builds a week ago.

Localize Mozilla Marketplace

The Marketplace will be an important part of the Firefox OS experience. Watch out for Wil Clouser’s emails to the mozilla.dev.l10n list about the AMO localization to learn more.

Localize Mozilla Persona

Mozilla Persona (previously: BrowserID) will, again, be an important identity-management piece of Firefox OS and the Marketplace. See Matjaž Horvat’s emails to the mozilla.dev.l10n list about Persona localization.

Discussion

I started a thread in the newsgroup about this change to the schedule. Please post your thoughts and ask questions there.

July 28, 2012 08:07 PM

July 23, 2012

Robert Kaiser

Weekly Status Report, W29/2012

Here's a short summary of Mozilla-related work I've done in week 29/2012 (July 16 - 22, 2012):

A lot of exciting things are going on these days, for example our first Firefox Beta for Android with both the fast new user interface and tablet support - or Nightly builds being available for ARMv6 phones. If you can help test any of those, that would be very welcome!
Also, B2G (Firefox OS) should be (mostly) feature complete now - unfortunately I can't test as I have no phone running that system. I still hope I'll be able to get one some time, so that I can do testing on the crash reporting functionality.
Ah, and BrowserID is now rebranded and a part of Mozilla Persona! I've already switched integration in my websites to point directly to the new brand. :)

July 23, 2012 07:48 PM

July 20, 2012

Axel Hecht

Why l10n tools should be editors instead of serializers

If your tool serializes internal state instead of editing files, it’ll do surprising things if it encounters surprising content. Like, turn

errNotSemicolonTerminated=Named character reference was not terminated by a semicolon. (Or “&” should have been escaped as “&amp;”.)

into

errNotSemicolonTerminated=Named character reference was not terminated by a semicolon. (Or “” should have been escaped as “amp;”.)

And that’s for a string the localizer never touched.

(likely narro issue 316)

July 20, 2012 04:18 PM

Staś Małolepszy

Running Boot to Gecko on your desktop

If you want to preview B2G and Gaia, you might be interested in knowing that the release engineering team started producing desktop builds which you can run on your desktop computer a few days ago.

As Ben Hearsum explains in his blog:

Please note that these are NOT full B2G builds. These are developer-targeted builds which only run on desktop machines, and cannot be flashed onto a phone or tablet. These builds are primarily useful to developers, QA and localizers working on Gaia. They can also be used by anyone who wishes to test out their websites or apps through a B2G-like client.

Also note that these builds are not localized yet, although you will find that a few locales have been enabled and that some strings show up translated.

What you’ll need

To keep things organized, I created a separate directory for the desktop builds. On my machine, it’s ~/moz/b2g/desktop/.

Get Boot to Gecko

You can download the desktop builds from ftp.mozilla.org.

Get Gaia

Now that we have a build of B2G, we need to download Gaia and create a profile for it which will store our settings and the webcache.

Clone the Gaia repository and create a profile by runnning the following commands in your working directory:

    $ git clone https://github.com/mozilla-b2g/gaia gaia
    $ DEBUG=1 make -C gaia profile

Run it

You’re good to go. Make sure you’re still in your working directory and run B2G with:

    $ b2g/b2g -profile gaia/profile

Or, if you’re on Mac OS X, run:

    $ /Applications/B2G.app/Contents/MacOS/b2g -profile gaia/profile

Hint: the Esc Home key behaves like the main hardware button, allowing you to quit Gaia apps.

Update it

There are no autoupdates for the desktop builds of B2G yet. The builds are produced every night, however, so you can just re-download them and extract like I described it above.

For Gaia, just cd into your Gaia repo clone, and pull the new commits:

    $ git pull

Bonus: a script

I whipped up a script that does all of the above for me. If you’re on Linux, you’re welcome to use it.

Go to your working directory and download the script:

    $ curl -O https://raw.github.com/gist/3149861/boot2gecko.sh
    $ chmod +x boot2gecko.sh

Lastly, just run it!

    $ ./boot2gecko.sh

If you need help…

Don’t hesitate to ping me (stas on irc.mozilla.org) in #l10n, #gaia or #b2g. And, as always, the mozilla.dev.l10n newsgroup is your friend.

July 20, 2012 12:07 PM

July 19, 2012

Robert Kaiser

Weekly Status Report, W28/2012

Here's a short summary of Mozilla-related work I've done in week 28/2012 (July 9 - 15, 2012):

This report is a bit late but I'm somewhat busy given that it's release week. We have just released Firefox 14, as well as an update to our Firefox for Android phones - and we've uplifted code on the other channels as well, so new betas and aurora builds are just around the corner, still to be released this week. Of course, I'm keeping track of stability of all those together with my collegues and trying to make sure we can catch any problems to improve further releases. Release weeks are always somewhat busy - but quite interesting. :)

July 19, 2012 06:06 PM

Mozilla L10n Blog

Mozilla L10n’s Google Summer of Code project

The annual Google Summer of Code (GSoC) event attracts some of the brightest minds from around the world to work on projects they are passionate about with the help of a mentor and Google’s support. This year, Mozillian localizer Gautam Akiwate, had an idea for a project to help standardize a team’s localization work by leveraging its already localized content in a very unique and open source way: using machine translation (MT). MT has been a controversial topic between hackers and translators, as many have seen it as an alternative to human translation. Gautam, however, sought to use MT as a supplement and jump start for new L10n teams.
I had the chance to talk with Gautam about his ambitious project. Here is our conversation.

 

Gautam Akiwate

 

Started with Mozilla project: Started contributing for Mozilla in March. Not very long ago :)
Nationality: India (Pune, Maharashtra)
Languages: Marathi, Hindi, English
Background: Studied Information Technology from the College of Engineering, Pune (Equivalent to a Computer Science & Engineering elsewhere)
Role in L10n community: A new localizer :)

 

What inspired you to start this project and submit it to GSoC?

 

I met Arky in India and I talked with him about the need to help localize into Indic languages and getting involved with the L10n program. I began localizing Firefox into Marathi. I soon discovered linguistic ambiguity issues with terminology and it drove me mad! The Marathi team’s reviewers had to make a lot of corrections to my work because of terminology & orthographical ambiguity as well as a lack of standardization within the L10n team. Even those orthographic standards that existed weren’t part of a central resource for newcomers to refer to. I had to constantly refer back to previous localizations to find those standards, which doubled the time it took for me to localize strings accurately. As you can imagine, I became very interested in leveraging this previous work.

So I went to the #l10n channel and discussed this problem with Pike. I told him that I wanted to do something that would help me develop a termbase for L10n standardization. At the time, I did not initially consider MT. Pike referred me to Phillipe (French Mozilla) to leverage the content from the Transvision alignments. That idea transformed into using MT as an alignment tool and then utilizing the alignments to create a standard termbase. In other words, I would take a target and source content, align them, create a termbase from alignment, and it would provide terminology and orthography suggestions. I quickly realized that we could also use this tool to rate the quality of previous localizations, as well as localizations in other projects. If successful, we could begin bringing MT into the localization workflow, opening up a MT post-editing workflow within the Mozilla L10n project.

Around this time, GSoC came up and I saw the opportunity to do this under GSoC with Mozilla.

What is the current state of the project?

 

The project is not yet complete, but hopefully will be by the end of August.

 

What experience do you have with machine translation?

I’m a CS student. My only prior experience with MT was while in college. Since I had very limited experience with MT, there was a large learning curve. But, I felt so passionate about using MT in the L10n workflow that I didn’t have any issues with learning it. Since the project started, I’ve become very familiar with MT.

 

What resources did you use to learn about machine translation?

 

I found Google scholar articles on MT, I evaluated existing Mozilla l10n tools, and I read the Moses MT wiki. I also looked into data on which tools are most widely used.

I didn’t, however, spend much time looking into proprietary tools because of licensing issues. It can be really complicated to get tangled up in. Besides, I’m not a fan of proprietary tools anyway :) .

 

How did you hear about the Moses MT project and why did you choose it over other MT systems?

 

I looked at the range of MT tools available and saw that Moses MT was open source and what I deemed to be the best out there. I also looked into incorporating termbases into MozillaTranslator, and it had a lot of potential. [Another thing that led me to Moses is that] there’s a lot of community support (it’s still a very active project) and supports more languages than most of the other open source MT projects.

 

Since your aim was essentially to create a large termbase, why did you decide to use MT to index terminology within the Transvision TMX instead of using a term extractor script and creating a TBX (i.e., what were the advantages of using MT over standard TBX)?

 

At first I wanted to create scripts that worked like term extractors then create TBXs (TermBase eXchange files), but MT has a wider scope and framework for future use than scripted term extractors. With MT, you can reduce your workload through its auto-translate function. Besides, I wasn’t very happy with the term extractor scripts’ results. I realized that while running them, I was lacking volume of translated strings. I wanted to give strings to the MT to learn the translation instead. Not only that, but the existing term extractors don’t work well with Indic languages. MT has a wider character support scope and is simply more scalable.

MT, however, has not matured enough to not require manual intervention. Plus, the community needs to have a say in it. I wanted to provide an option and let them either choose to fully implement MT or use a TBX file created from the MT utility.

 

What were some of your biggest challenges in this project?

 

Moses MT is still not very mature and I had installation issues with it. Some people have worked on creating installation packages for Linux (Debian, Fedora, and Ubuntu). Ubuntu seems to be the best supported platform for Moses and natural language processing tools.

MT also requires a lot of existing data. It was difficult to find enough data and convert it into a format that Moses could understand. Unfortunately, the amount of suitable Mozilla L10n data for this type of conversion is very limited. Moses needs this data in what’s know as a parallel corpus. I found that .lang files were the easiest to convert into a parallel corpus.

Special characters were also an issue when converting files into parallel corpuses. The challenge is basically to extract the data from .lang, .properties, and .dtd files, and only the .land files could do it well enough. I even ran into problems with .tmx files that contained special characters (e.g., brackets, etc.). I tried creating other data without going to the trouble of converting those files, but it would have required a lot of time. Most of the data that Mozilla has created are not suitable for MT.

Finally, I found that I cannot speak enough languages to really know if the resulting termbase data was good enough!

 

If you would like to learn more about Gautam’s GSoC project, visit the project’s wiki page.

July 19, 2012 05:03 PM

Staś Małolepszy

Response to yesterday's CFP for Boot to Gecko

Yesterday I started a thread in mozilla.dev.l10n and published a post on my blog outlining the localization schedule for Boot to Gecko and asking localizers to respond if they’re interested in participating in the localization effort.

The community’s response to such questions is usually overwhelming, and B2G is no exception.

Within less than 24 hours, we have already heard from more than 30 interested locales!

Way to go! Even though the B2G devices will initially market only in South America, this proves the point that the localization effort should be global and scalable.

Here’s an interesting side note about the South America part above. (This wouldn’t be Mozilla if I didn’t learn something new today.) As Rhoslyn Prys mentioned in the newsgroup, in Argentina, there are around 50,000 Patagonians of Welsh descent, many of whom speak Welsh as first or second language.

What next?

I will be posting more details soon about how and what exactly to localize. Expect more updates this and the next week. The first freeze is scheduled for July 27th, which is next Friday.

If you want to get involved, check out the thread in mozilla.dev.l10n and contact other localizers from your locale.

July 19, 2012 04:17 PM

July 18, 2012

Staś Małolepszy

Boot to Gecko localization update, July 18

Mozilla is gearing up for releasing a mobile OS based on Gecko and HTML, codenamed Boot to Gecko, or B2G. It is a stack comprised of a Linux kernel and low-level userspace layer, with Gecko running on top of it, and all UI and other apps implemented in HTML and JS. Gaia is the name of the UI, which will consist of HTML5 apps, like the Homescreen, Dialer, Contacts, Browser, Email, Gallery, Camera, Clock, Calculator, Lockscreen, Settings etc.

The wiki has more information about the architecture and codenames.

The schedule

Update (July 28th): The schedule outlined below has been canceled. The new one has not been decided yet, but keep an eye on the newsgroup for updates. Read more in this thread on mozilla.dev.l10n.

We will be soon kicking off the localization effort for B2G. The plan is this:

Why two string freezes?

We are already hearing from developers that they won’t be able to freeze everything by 7/27 (think error messages and rare and unexpected paths the interaction might follow). We prefer to freeze what we can early (7/27) and start the localization right then. For the second string freeze we will probably see some additions, but I’ll do my best to limit changes to already localized strings.

What’s the workload?

We don’t really know yet for sure, as not all the UI has landedas of this moment. Today’s numbers are the following (for some context, the entire Firefox Desktop with toolkit is ~6600, Firefox Mobile is ~5000 strings):

Lastly, keep in mind that the first devices will be marketed in South America, so we will be focusing on Spanish and Brazilian Portuguese for the first release. This does not mean, however, that we can’t ship B2G with more locales available, for users in the said geographies, and for testing everywhere else. We are also investigating the feasibility of having langpacks for B2G.

OK, count me in!

Great! Just head to the mozilla.dev.l10n thread that I opened today and reply with your locale code.

July 18, 2012 02:07 PM

July 17, 2012

Mozilla L10n Blog

More language support added to Firefox 14

We’re happy to announce that a localized Fulah (ff) Firefox build has been added to the list of supported languages for Firefox 14. We also want to extend congratulations to the Fulah (ff) team! Native Fulah speakers (approximately 13 million speakers spread throughout 20 African nations) can download their localized build here.

Tristan Nitot has also written a very moving congratulations to Ibrahima Saar and the Fulah team, as well as a valuable description about how our localization philosophy differs from that of most companies on the Mozilla Beyond the Code blog. Don’t miss it!

Congratulations Fulah!

July 17, 2012 07:17 PM

Mozilla Developer DevNews

Firefox 14 is now available

Firefox 14 is now available as a free download for Windows, Mac, and Linux from http://www.mozilla.org/firefox/new/. As always, we recommend that users keep up to date with the newest version of Firefox for the latest features and fixes. The release notes for Firefox 14 are available at http://www.mozilla.org/en-US/firefox/14.0.1/releasenotes/. Firefox 14 is also now available for Android. The associated release notes are available at https://www.mozilla.org/en-US/mobile/14.0.1/releasenotes/index.html.

-Alex Keybl
Release Manager at Mozilla

July 17, 2012 03:02 PM

Staś Małolepszy

L20n features explained. DOM overlays

When it comes to localizing web content, you’re likely to end up with a lot of HTML inside of your source strings. You might be see markup like strong and em, or simply links to other resources with a tags.

Consider the following paragraph taken from www.mozilla.org.

Portions of this content are ©1998–2012 by individual mozilla.org contributors. Content available under a Creative Commons license.

The HTML code for this paragraph is this:

    <p>
        Portions of this content are ©1998–2012 by individual 
        mozilla.org contributors. Content available under a <a 
        href="/foundation/licensing/website-content.html">Creative 
        Commons license</a>.
    </p>

You’ll notice the a tag with an href attribute. The href is a URL, and it makes this HTML significantly harder to read.

If we wanted to localize this paragraph, the L20n code for English would look like this:

    <licenseInfo """
        Portions of this content are ©1998–2012 by individual 
        mozilla.org contributors. Content available under a 
        <a href="/foundation/licensing/website-content.html">Creative 
        Commons license</a>.
    """>

The URL will always be /foundation/licensing/website-content.html, regardless of the user’s locale. It makes little sense, then, to have it in the source string. The tag makes the string harder to read and increases the risk of introducing an error (e.g., removing a quotation mark or accidentally editing the URL).

In fact, the href attribute is part of the document’s structure rather than its source content, and as such, does not belong in the L20n code at all.

What if L20n let you skip attributes that are not related to the source content? What if it copied those attributes from the developer-defined code, thus sparing the localizer all the trouble?

Enter DOM overlays

The premise is simple: only localizable source content should live in L20n files. Let’s modify the HTML code and the licenseInfo string accordingly.

    <p l10n-id="licenseInfo">
        <a href="/foundation/licensing/website-content.html"></a>
    </p>

The actual content, both source & target, will be injected with L20n code. This way the developer doesn’t have to (although they can) put it in HTML. All that matters is the l10n-id="licenseInfo" part, as well as the a tag with the href attribute defined in HTML. All the rest happens in the L20n file.

    <licenseInfo """
        Portions of this content are ©1998–2012 by individual        
        mozilla.org contributors. Content available under a 
        <a>Creative Commons license</a>.
    """>

We keep the a tag in the L20n file so that the localizer has control over what islinked and what is not. However, the attributes of the tag are not localizable and thus, are absent in the string. The strings is easier to read, and also harder to accidentally break.

Matching and reordering multiple overlays

L20n’s DOM overlays match HTML nodes by type, name and position. If licenseInfo had two a child nodes, their attributes would be matched and copied from the source string in their respective order.

Consider the following example.

Welcome to Pancake, Staś.

The HTML and L20n code responsible for this message might look like this:

    <p l10n-id="welcome">
        <a href="/"></a>
        <a href="/profile"></a>
    </p>
    <welcome """
        Wecome to <a>{{ brandName }}</a>, <a>{{ $user.firstname }}</a>.
    """>

The a elements are in the same order in the source code and in the L20n code. L20n will thus copy the href attribute from the first a element in the source code to the first a element in the L20n code.

Let’s suppose now that the localizer wishes to change the order of the links. Maybe the grammar requires her to do so, or maybe the register is more (or less) formal in her locale. The expected result would be (translated back to English for the sake of this example) this:

Hi Staś. Welcome to Pancake.

Because the order is different, the localizer cannot rely on L20n’s automatching any more. Instead, she needs to instruct L20n which a element corresponds to which one in the source. L20n allows her to do so via the l10n-path attribute set on the element, like so:

    <welcome """
        Hi <a l10n-path="a[2]">{{ $user.firstname }}</a>.
        Welcome to <a l10n-path="a[1]">{{ brandName }}</a>.
    """>

Using the XPath syntax, the localizer identifies which source a element to copy attributes from.
The first a element in the translation will be matched against the second a element in the source. The meaning of a[2] in XPath is:

the second child (descendant of the first generation) of the context node that is an a element.

(The context node is the source node that’s being localized, in this example the p element with l10n-id="welcome".)

In most of the cases, the XPath expression will be very basic and minimal, like in the examples above. The full XPath syntax is supported, however, allowing for more complex matching.

Lastly, the l10n-path is only required when changing order of elements of the same type, like two a elements. If you want to change the order of child nodes in a string with one strong and one em tag, you can do so without having to specify the l10n-path attributes.

Privileges and autoextraction

The next step is to see if there’s a need to prevent some attributes from being copied. It might be interesting to extend DOM overlays with a mechanism which only accepts whitelisted attributes, or blocks blacklisted ones from being copied from the source strings to the translation. This could be done globally, or even per-entity.

I also started working on a maintainance script which extracts the contents of source nodes and automatically creates valid L20n code ready to be localized. It supports whitelisting attributes, but generally leaves most of the attributes out of the L20n code. You can find the code on Github, but bear in mind that this was more of an experiment and is very much a work-in-progress.

Discussion

Please post your thoughts in the mozilla.dev.l10n newsgroup.

July 17, 2012 02:17 AM

Burning Edge - Firefox

Firefox Nightly 16, weeks 1-6

Speed & memory:

  • Fixed: 157681 - We reflow when we should just move.
  • Fixed: 734015 - Slow down parsing of web pages in background tabs.
  • Fixed: 765435 - JS: Make heap growth factor depend on the heap size after a GC and GC frequency.
  • Fixed: 761739 - JS: Incremental GCs are very rare.
  • Fixed: 659577 - JS: Don't alias stack variables.
  • Fixed: 758034 - Clean up how the browser triggers GCs.
  • Fixed: 754495 - Represent an entire compartment as a single CC node when tearing down a page.
  • Fixed: 616262 - Remove cycle collection static initializers.
  • Fixed: 773755 - Don't force a cycle collection with 0 suspected objects.
  • Fixed: 634444 - Long lines with many warnings from javascript.options.strict cause memory spikes when a console or Firebug is in use.
  • Fixed: 770993 - ConsoleAPI.js consumes excessive amounts of memory.
  • Fixed: 750454 - FUEL causes lots of leaks until shutdown, can also cause 10+minute shutdown times.
  • Fixed: 765411 - about:home loading performance optimizations.
  • Fixed: 655413 - Firefox locks system timer resolution to 1000Hz once Flash is used once.
  • Fixed: 764117 - Prefer performance over avoiding seaming.
  • Fixed: 687724 - about:memory - Per-tab reporting. (nick's blog entry) (might get disabled on Aurora 16)
  • Fixed: 704623 - about:memory - Track memory used by orphan DOM nodes.
  • Fixed: 732173 - Poison write during shutdown in a debug build. (Preparation for instant shutdown)

For more, read Taras's Snappy blog and Nick's MemShrink blog.

New web technologies:

  • Fixed: 591467 - Implement HTML Microdata API.
  • Fixed: 715041 - Add API for content to be notified on "OS idle".
  • Fixed: 772341 - Enable Opus support by default.
  • Fixed: 565274 - Implement the accept attribute for the form and file upload controls for custom MIME types.
  • Fixed: 574130 - JS: Prototype Harmony's spread operator for arrays.
  • Fixed: 726378 - Unprefix IndexedDB.
  • Fixed: 771678 - Unprefix CSS calc().
  • Fixed: 762303 - Unprefix CSS transitions.
  • Fixed: 745523 - Unprefix CSS transforms.
  • Fixed: 762302 - Unprefix CSS animation properties and @keyframes rule.
  • Fixed: 752187 - Unprefix CSS gradients.

For more, read Firefox 16 for developers.

Other notable fixes:

  • Fixed: 768150 - Dev tools: Enable the developer toolbar.
  • Fixed: 737873 - Dev tools: Highlight "mixed content" in the web console.
  • Fixed: 587909 - Improve the visual style of location bar results.
  • Fixed: 239307 - Remove "Send Link..." from context menus.
  • Fixed: 764216 - Turn on frame pointers on Nightly desktop builds.
  • Fixed: 764513 - Turn persistent telemetry back on.
  • Fixed: 650355 - Stop accepting MD5 as a hash algorithm in signatures.
  • Fixed: 606286 - Add a pref to make Back button work through client-side redirects (accessibility.blockjsredirection).
  • Fixed: 753542 - Add prefs to enable/disable E4X (javascript.options.xml.content and .chrome).
  • Fixed: 764481 - Add pref to enable landing of experimental forms features (dom.experimental_forms).
  • Fixed: 744193 - [Linux] Install web app on host OS.
  • Fixed: 754452 - [Windows] Synthetic italics under GDI causes spacing problems for tahoma.

All 3787 changes between 2012-06-02 nightly and FIREFOX_AURORA_16_BASE

2012-07-16 nightly builds (discussion)

July 17, 2012 12:24 AM

July 16, 2012

Mozilla L10n Blog

Tips & tricks: Cleaning up Narro exports

If you’ve ever used Narro to localize a project, you may have spent time cleaning up your exported files before they are committed to your locale’s repository. If you don’t catch the errors within your Narro export, you’ll find that some files may be reverted or corrupted in other ways that can ultimately break your localization. On the other hand, cleaning up these exported files can require some time and smooth hacking skills.
While these Narro bugs are being fixed, here’s a work around that you can easily use to make sure that your L10n work is squeaky clean before it goes into your locale repository.

First we’re gonna update your local, cloned repo by running the following commands from your local directory:

hg pull
hg update -C -r default

Then, select, drag, and drop the Narro export into your updated repo.

Now that you have your export in your local directory, review the file status by using this command:

hg status

Running this command will display what files in your local directory have been modified, added, and removed compared to the mercurial repository. You’ll see output like this:

M toolkit/crashreporter/crashreporter.ini
M toolkit/defines.inc
! browser/README.txt
! toolkit/chrome/mozapps/xpinstall/xpinstallConfirm.properties
? browser/branding/official/brand.dtd
? browser/branding/official/brand.properties

What does the output mean? It’s actually rather straight forward to interpret.

You’ll use the printed status output to evaluate what areas of your local repository need to be cleaned up before committing to your hg locale repo.

Here are issues to keep your eye on within your status output:

find . -name \*.orig -exec rm \{\} \;

or copying and pasting your output from the command line to your favorite text
editor and using its Find function, then removing those files by drag and drop.

hg revert -C -r default browser/chrome/browser-region browser/searchplugins
hg diff dom/chrome/layout/htmlparser.properties browser/chrome/browser/quitDialog.properties browser/chrome/browser-region/region.properties browser/installer/custom.properties browser/installer/mui.properties browser/installer/override.properties toolkit/chrome/global/commonDialogs.properties toolkit/chrome/passwordmgr/passwordmgr.properties toolkit/chrome/search/search.properties
hg revert -r default dom/chrome/layout/htmlparser.properties  browser/chrome/browser/quitDialog.properties  browser/chrome/browser-region/region.properties  browser/installer/custom.properties browser/installer/mui.properties  browser/installer/override.properties  toolkit/chrome/global/commonDialogs.properties  toolkit/chrome/passwordmgr/passwordmgr.properties  toolkit/chrome/search/search.properties

Some final notes:

      For example, you may see something like below and notice that it is missing its &
character in the localized string.

   CONTEXT_OPTIONS របៀបសុវត្ថិភាព $Brand&ShortName

Additional resources:

July 16, 2012 11:40 PM

L20n features explained. DOM overlays.

(This is a crosspost from my blog: http://informationisart.com/8/.  Check it out for better code formatting and syntax highlighting.)

With L20n’s DOM overlays, developers can amend localized strings with additional non-localizable HTML markup. This improves the separation of content and structure and reduces the cruft in localization files.

When it comes to localizing web content, you’re likely to end up with a lot of HTML inside of your source strings. You might be see markup like <strong> and <em>, or simply links to other resources with <a> tags.

Consider the following paragraph taken from www.mozilla.org.

Portions of this content are ©1998–2012 by individual mozilla.org contributors. Content available under a Creative Commons license.

The HTML code for this paragraph is this:

 <p> Portions of this content are ©1998–2012 by individual mozilla.org contributors. Content available under a <a href="/foundation/licensing/website-content.html">Creative Commons license</a>. </p> 

You’ll notice the <a> tag with an href attribute. The href is a URL, and it makes this HTML significantly harder to read.

If we wanted to localize this paragraph, the L20n code for English would look like this:

 <licenseInfo """  Portions of this content are ©1998–2012 by individual   mozilla.org contributors. Content available under a   <a href="/foundation/licensing/website-content.html">Creative   Commons license</a>.  """> 

The URL will always be /foundation/licensing/website-content.html, regardless of the user’s locale. It makes little sense, then, to have it in the source string. The tag makes the string harder to read and increases the risk of introducing an error (e.g., removing a quotation mark or accidentally editing the URL).

In fact, the href attribute is part of the document’s structure rather than its source content, and as such, does not belong in the L20n code at all.

What if L20n let you skip attributes that are not related to the source content? What if it copied those attributes from the developer-defined code, thus sparing the localizer all the trouble?

Enter DOM overlays

The premise is simple: only localizable source content should live in L20n files. Let’s modify the HTML code and the licenseInfo string accordingly.

 <p l10n-id="licenseInfo"> <a href="/foundation/licensing/website-content.html"></a> </p> 

The actual content, both source & target, will be injected with L20n code. This way the developer doesn’t have to (although they can) put it in HTML. All that matters is the l10n-id="licenseInfo" part, as well as the a tag with the href attribute defined in HTML. All the rest happens in the L20n file.

 <licenseInfo """  Portions of this content are ©1998–2012 by individual   mozilla.org contributors. Content available under a   <a>Creative Commons license</a>.  """> 

We keep the <a> tag in the L20n file so that the localizer has control over what is linked and what is not. However, the attributes of the tag are not localizable and thus, are absent in the string. The strings is easier to read, and also harder to accidentally break.

Matching and reordering multiple overlays

L20n’s DOM overlays match HTML nodes by type, name and position. If licenseInfo had two <a> child nodes, their attributes would be matched and copied from the source string in their respective order.

Consider the following example.

Welcome to Pancake, Staś.

The HTML and L20n code responsible for this message might look like this:

 <p l10n-id="welcome"> <a href="/"></a> <a href="/profile"></a> </p> 
 <welcome """  Wecome to <a>{{ brandName }}</a>, <a>{{ $user.firstname }}</a>.  """> 

The <a> elements are in the same order in the source code and in the L20n code. L20n will thus copy the href attribute from the first <a> element in the source code to the first <a> element in the L20n code.

Let’s suppose now that the localizer wishes to change the order of the links. Maybe the grammar requires her to do so, or maybe the register is more (or less) formal in her locale. The expected result would be (translated back to English for the sake of this example) this:

Hi Staś. Welcome to Pancake.

Because the order is different, the localizer cannot rely on L20n’s automatching any more. Instead, she needs to instruct L20n which <a> element corresponds to which one in the source. L20n allows her to do so via the l10n-path attribute set on the element, like so:

 <welcome """  Hi <a l10n-path="a[2]">{{ $user.firstname }}</a>.  Welcome to <a l10n-path="a[1]">{{ brandName }}</a>.  """> 

Using the XPath syntax, the localizer identifies which source a element to copy attributes from. The first <a> element in the translation will be matched against the second <a> element in the source. The meaning of a[2] in XPath is:

the second child (descendant of the first generation) of the context node that is an <a> element.

(The context node is the source node that’s being localized, in this example the <p> element with l10n-id="welcome".)

In most of the cases, the XPath expression will be very basic and minimal, like in the examples above. The full XPath syntax is supported, however, allowing for more complex matching.

Lastly, the l10n-path is only required when changing order of elements of the same type, like two a elements. If you want to change the order of child nodes in a string with one <strong> and one <em> tag, you can do so without having to specify the l10n-path attributes.

Privileges and autoextraction

The next step is to see if there’s a need to prevent some attributes from being copied. It might be interesting to extend DOM overlays with a mechanism which only accepts whitelisted attributes, or blocks blacklisted ones from being copied from the source strings to the translation. This could be done globally, or even per-entity.

I also started working on a maintenance script which extracts the contents of source nodes and automatically creates valid L20n code ready to be localized. It supports whitelisting attributes, but generally leaves most of the attributes out of the L20n code. You can find the code on Github, but bear in mind that this was more of an experiment and is very much a work-in-progress.

Discussion

Please post your thoughts in the mozilla.dev.l10n newsgroup.

July 16, 2012 09:08 PM

July 11, 2012

Mozilla L10n Blog

Mozilla at Localization World 2012 in Seattle

Staś Małolepszy and I (Jeff Beatty) are happy to announce that we have been selected to represent Mozilla at the semi-annual Localization World conference in Seattle in October this year. We will be presenting on both Pontoon and L20n and how we hope they will impact the future of localization within the open source community. Here is a synopsis of our presentation:

As the web continues to grow, Mozilla seeks to uphold the standards and practices that keep it open for all. Through two of our latest open-source projects, l20n and Pontoon, we are creating a new generation of tools and resources that put more power in the localizers’ hands. Localizers reach a higher level of free linguistic expression with l20n, unencumbered by an application’s logic. Pontoon provides web localizers with something they’ve never had before in an open-source localization tool: WYSIWYG context, real-time translation editing, and collaborative review features. This  presentation will give participants a glimpse into the future of  open-source localization.
Staś and I are looking forward to showcase these tools, as well as the incredible and dedicated efforts of the Mozilla L10n teams, at one of the L10n industry’s premiere events.

July 11, 2012 10:08 PM

July 10, 2012

Robert Kaiser

Weekly Status Report, W27/2012

Here's a short summary of Mozilla-related work I've done in week 27/2012 (July 2 - 8, 2012):

A lot of things are moving at Mozilla. While the rewritten Firefox for Android has been released now and is getting awesome reviews (most people are calling it the "best browser for Android" phones now - note that the tablet version is only going to release in a few weeks), we are working hard to push the next big product to become market-ready. The phone operating system code-named "Boot to Gecko" (B2G) is now being branded as "Firefox OS" and won a number of additional supporters. Until actual devices can be shipped around the turn of the year, a lot of work on the OS and the ecosystem of web apps still needs to be done and we are fully behind that (while at the same time continuing to improve desktop and Android Firefox, of course). Interesting times are upon us! :)

July 10, 2012 05:49 PM

Weekly Status Report, W23-24/2012

Here's a short summary of Mozilla-related work I've done in weeks 23-24/2012 (June 4 - 17, 2012):

Both doing some work out of the Mountain View offices and the Stability Work Week were extremely welcome to me due to the amount of productive discussions as well as casual chats I could have with people there. The latter is completely absent from work as a remotee, but can have a lot of positive effects on work as well as personal feelings. The stability discussions gave us a good view of where problems lie and how we can improve things in the future. Some of this needs followup discussions, some only concrete work to be done - in all cases we improved mutual understanding of how things work or where we run into certain problems. All in all, a heavily successful two weeks in MV.

The following two weeks (June 18 - July 1), I took some time off to go on vacation in Northern California (and a bit of Southern Oregon, actually).

July 10, 2012 04:58 PM

July 05, 2012

Mozilla L10n Blog

Why we localize Firefox

Mozillians participating in L10n are very diverse. They come from many different backgrounds, countries, languages, and experiences. For most, software development,  IT, and translation are their background. Others are Social Workers, Teachers, even Financial Civil Servants. Some are even employees of other open source projects similar to Mozilla (e.g., RedHat). I recently had the chance to ask Mozillians about their motivations for localizing Firefox. I learned that their reasons for localizing Firefox can be just as unique and varied as they are.

Let’s take a look at some of these reasons. While most were unique, there were also some common trends within the responses. These are top three motivators for localizing Firefox, according to Mozillians:

  1. To help users in my region have access to the web in their language.
  2. To preserve my language.
  3. To participate in open source software projects.

In addition to these, localizers also had very personal reasons for getting involved:

“I tried to help Armenian localizers so my grandfather could use Firefox in Armenian.”

“I wanted to do something which had an impact on others. This is difficult to do when you are a student and all your work is something which is graded and then forgotten. Contributing to an open source project was my way of having
an impact. Mozilla was a good fit for me because the Mozilla browser was so much better than what I had before, and I wanted to be part of it. Mozilla became my choice because the project seemed to balance principles against market relevance, whereas other open source projects at the time had a narrow focus on principles.”

“I was intrigued by the web-style XUL-based UI design and found that I could just edit a couple of text files to change the strings to German, which was fantastic compared to any other software I knew.”

It was also interesting to note that these reasons rarely change over time. The only difference between a localizer’s first reasons for localizing Firefox and their current reasons is that they have become more focused. As time goes on, a localizer’s focus gradually moves toward giving back to Mozilla and preserving their language.

“Now I also do it to give back to Mozilla.”

“Original priorities regarding language revitalization and open web are now greater than ever. Firefox Cymraeg was the first popular piece of software available of Welsh. It has shown the way and has set expectations for a multitude of other software to be available also in Welsh. Long may it continue. Melys moes mwy.”

“I am not a student anymore, so looking for a place to have an impact is not that important to me anymore. The Mozilla mission means a lot more to me now.”

When asked to share any final thoughts about their reasons for localizing Firefox, this is what some localizers had to say:

“Nowadays is easier to find software available in you own language, the real challenge is to deliver a professional quality product and prove that an Open Source community driven by volunteers is capable of doing it.”

“Having Firefox in our language is a very powerful tool for language revitalization. Because the Firefox brand is so well respected, it gives respect to our language also. It normalizes our language on the web and provides a good example to localizers of other software.”

“Minority languages need a presence on the Internet to enhance their raison d’etre and to provide a source of support and pride for their speakers.”

“Our web needs a good community based browser that is translated into as many languages as possible.”

What are your reasons for localizing Firefox, or any Mozilla project? Please tell us about your experience below or by emailing here.

If you’re not currently contributing to Mozilla L10n and would like to, please visit this site to find all of the L10n opportunities available to you.

July 05, 2012 05:13 PM

June 28, 2012

Mozilla L10n Blog

Mozilla and language preservation

Experts have discovered that there are approximately 7,000 spoken languages around the world, as cited by Ethnologue. Many of these are well known and are spoken by millions of people. Others are on the brink of extinction. It is estimated that nearly half of the world’s 7,000 languages could become extinct within this century, according to the Endangered Languages Project. Preserving these cherished languages has become a high priority for many organizations and people worldwide, including the localization teams at Mozilla.

Mozilla’s localization efforts aim to bring the open web to every corner of the globe, offering every user a regionally customized web experience. We are only able to accomplish this mission by teaming up with a very talented and dedicated, global community of volunteers who share our same values. Many of these volunteers are native speakers of languages that are considered to be endangered. For many of them, they localize Firefox for two reasons: they love the web and they want to preserve their language.

Mozilla works closely with volunteer localization teams who form part of organizations such as AnLoc in Africa and Nacnati in Mexico, as well as individuals and small groups who localize Firefox into the following languages:

To support these teams, we provide the framework and vehicle for them to distribute their work as either official language packs or official localized Firefox builds. We seek to mentor their efforts wherever possible through dedicated Localization Community and Program Managers. In addition, we actively encourage experienced localizers to join us in mentoring these teams. As part of our mentor efforts, we work to visit these teams as often as possible, providing them with one-on-one trainings called L10n Sprints.

We love all of our localization teams and look forward to our continued opportunities to aid in preserving the languages of the world.

June 28, 2012 02:21 PM

June 22, 2012

Staś Małolepszy

Boot to Gecko localization update, June 22

This is the first localization update about Boot to Gecko and Gaia, where I’ll be summarizing the development and the progress of the localization plan for B2G.

There are a few tracks in which the work is taking place in parallel.

As Gaia can be thought of as a collection of HTML apps, we needed a way to localize web content on the client side. This is actually something we’ve never done before—our web pages are normally localized on the server side. So the first task was to develop a way to show localized content in HTML by using JavaScript to replace original strings with their translations. This work has been done by Kazé and the library he wrote is available on github.

Kazé based his work on the .properties format which is widely used in other Mozilla products. We want to be able to leverage the existing localization infrastructure like Elmo and make it possible to use many different translation tools like Mozilla Translator, Narro and Translate Toolkit and Pootle. I’m working with Kazé on making sure his work is compatible with the existing localization ecosystem.

We will also soon need localized builds for testing purposes, both for devices and desktop emulators alike. I filed bug 766962 to let the Release Engineering team know about our requirements.

At the same time, the User Experience team is hard at work finalizing the wireframes and the interaction designs for all Gaia apps. This is a great moment to start reviewing these designs in terms of localizability. All apps can be found on the Gaia wiki, e.g.
wiki.mozilla.org/Gaia/Clock links to the Clock app interaction design spec (pdf).

I posted a call for reviews in mozilla.dev.l10n earlier today. If you have a moment, feel free to take a look at the interaction design PDFs and respond with your thoughts in the newsgroup. Starting the reviews so early will help us flag potential localizability issues and fix them in a timely manner.

Read the call for reviews for Gaia wireframes.

June 22, 2012 10:55 PM

Mozilla L10n Blog

Boot to Gecko localization update, June 22

(This is a crosspost from my blog: http://informationisart.com/7/)

This is the first localization update about Boot to Gecko and Gaia, where I’ll be summarizing the development and the progress of the localization plan for B2G.

There are a few tracks in which the work is taking place in parallel. As Gaia can be thought of as a collection of HTML apps, we needed a way to localize web content on the client side. This is actually something we’ve never done before—our web pages are normally localized on the server side. So the first task was to develop a way to show localized content in HTML by using JavaScript to replace original strings with their translations. This work has been done by Kazé and the library he wrote is available on github.

Kazé based his work on the .properties format which is widely used in other Mozilla products. We want to be able to leverage the existing localization infrastructure like Elmo and make it possible to use many different translation tools like Mozilla Translator, Narro and Translate Toolkit and Pootle. I’m working with Kazé on making sure his work is compatible with the existing localization ecosystem.

We will also soon need localized builds for testing purposes, both for devices and desktop emulators alike. I filed bug 766962 to let the Release Engineering team know about our requirements.

At the same time, the User Experience team is hard at work finalizing the wireframes and the interaction designs for all Gaia apps. This is a great moment to start reviewing these designs in terms of localizability. All apps can be found on the Gaia wiki, e.g.
wiki.mozilla.org/Gaia/Clock links to the Clock app interaction design spec (pdf).

I posted a call for reviews in mozilla.dev.l10n earlier today. If you have a moment, feel free to take a look at the interaction design PDFs and respond with your thoughts in the newsgroup. Starting the reviews so early will help us flag potential localizability issues and fix them in a timely manner.

Read the call for reviews for Gaia wireframes.

June 22, 2012 04:00 PM

June 15, 2012

Mozilla L10n Blog

Get to know a L10n driver: Matjaž Horvat

Role at mozilla: Pontoon developer and L10n driver (currently driving BrowserID L10n)

Where I’m from: Slovenia, AKA the country where Donald Trump’s latest wife comes from

Languages I know: Slovenian, English, Croatian & Bosnian & Serbian, German, Latin

Years with the project: almost 11. I started on Fri, July 12 2002 at 21:36:52 CEST by sending email:
http://liste2.lugos.si/pipermail/lugos-slo/2002-July/003621.html

Professional experience: I graduated from Computer and Information Science in 2009 and before joining Mozilla full-time in 2011 I worked for three successful Slovenian IT companies: Zemanta, Vox.io and XLAB.

Blog: http://horv.at/blog/
Twitter: @mathjazz

5 things you may not know about me:

* I learned to play the accordion for three years. Luckily (for my listeneres), I forgot everything.
* I represented Slovenia at IT competition for students organised by Microsoft for two years in a row. Please don’t fire me for that.
* I was featured in a Wired UK article titled Mozilla vs. King Corporate.
* I used to be a journalist. I wrote a couple of hundred pieces for the leading slovenian IT-magazine and the leading slovenian IT-website.
* I skipped a grade at the primary school.

June 15, 2012 06:10 PM

June 14, 2012

Mozilla L10n Blog

Aurora: The localizer’s workspace

A little over a year ago we radically changed the release process for all Mozilla products, most notably Firefox. Not only were new versions of Firefox going to be released every six weeks, but anyone could follow Firefox development by downloading builds from any of four different channels (corresponding repos), Nightly (mozilla-central), Aurora (mozilla-aurora), Beta (mozilla-beta), and Release (mozilla-release).

It’s clear that each channel had its unique dev and QA purpose.

So where does L10n fit in (**hint** look at this blog post’s title)? You got it, the Aurora channel! For L10n, the release channels are used in a similar fashion to dev and QA, with the main exception being where the bulk of the work takes place.

Since new versions of Firefox (and all other projects following this cycle) are migrated from between channels every six weeks, this implies that localizers must be vigilent about watching their Aurora repository and translating new strings as they come. If they aren’t vigilent, they run the risk of falling behind and having more and more new strings added to their repos as each new version passes through the Aurora channel. If this is a new locale’s first time producing a localized version of Firefox, they run the risk of not shipping in the Release channel.

To sum it all up, these are best practices to keep in mind:

For more information on these channels visit the Becoming an official release wiki page.

June 14, 2012 02:44 PM

June 09, 2012

Axel Hecht

Rapid releases and the l10n dashboard are friends now

Wait a second, we’re on the rapid release schedule for almost a year now, and 9 releases. How can the l10n dashboard be friends with the trees only now?

Well, I’ve hacked and lied and tweaked and spoofed the data for a year. No more.

The obvious changes are:

On the team page, you’ll now see something like

You’ll notice the difference between the Current sign-off with the green check-mark, and the fx14 one with the looking glass. In the past, we’ve shown the green check-mark for both, now we’re actually showing the version that we’re using instead of the current one, and the looking glass is there to indicate that the localizer should actually look into this. There’s been a good deal of confusion about this, and I sure hope that this will resolve it a good deal.

There’s a ton of follow-up work, for one on elmo. This bug has been blocking a lot of other patches and work, both for the localizer-facing parts as well as the release infrastructure-facing parts.

More so, the state of localizations changes from “n missing strings, probably in this bucket” to “didn’t update since fx12″. That’s changing how we guide our work as l10n drivers a good deal. The impact between what we do and what localizers do becomes less anecdotal, and more science.

And there’s quite a few things we need to do, in particular for desktop.

June 09, 2012 07:07 PM