• Updating Localization Notes

    September 22nd, 2009 by seth bindernagel with 7 comments »

    Tomer, from the Hebrew localization team, highlighted an interesting problem the other day when he emailed the l10n-drivers to point out an issue that has been bothering him and many other localizers.  Sometimes, developers will change entities in our locales/en-US directory, but forget to change the localization note above it to reflect the new entity.  As Tomer explains,

    “This causes the comment to become irrelevant to the text it references.  Additionally, if someone then fixes the localization note, localizers won’t be notified on this change, and the comment does not get changed in our translations…As some of us are actually reading such comments before translating, it is important to get it 100% accurate.”

    Here is an example that Tomer provides.

    <!– LOCALIZATION NOTE (bookmarksSidebarGtkCmd.commandkey): This command
    -  key should not contain the letters A-F, since these are reserved
    -  shortcut keys on Linux. –>
    <!ENTITY bookmarksGtkCmd.commandkey “o”>

    You can see that example in our code on MXR here:  http://mxr.mozilla.org/mozilla1.9.2/source/browser/locales/en-US/chrome/browser/browser.dtd#110

    For those readers who may not be seeing what is happening here, notice that the <!– LOCALIZATION NOTE –> is referencing “bookmarksSidebarGtkCmd.commandkey“, but the !ENTITY variable name is actually “bookmarksGtkCmd.commandkey“.

    That mismatch in the entity names has made that localization note untrackable by any locaization tools.  Unfortunately, localization tools will not understand which comment belongs to bookmarksGtkCmd.commandkey.  Furthermore, localizers who use these notes for translations will have to make the educated guess where the comment is pointing.  If the note gets updated in the future, it’s likely that localizers will miss it.

    Tomer suggested writing a script to look for these mismatches.  In the very least, I am hoping this post will spread the awareness to developers to remember to do this.  A quick request from l10n community: please maintain localization notes if entities get changed.

  • More on Firefox in the Philippines

    September 22nd, 2009 by seth bindernagel with 4 comments »

    While we were in the Philippines, Gen and I learned quite a bit about the local Internet landscape there.  I thought I would share some more information that I picked up from the trip.

    • Population is 92 million, online population is between 20-24 million
    • English is one of the official languages of the Philippines.  Tagalog is spoken by roughly 22 million people in and around Manila.  Cebuano is another language spoken by nearly 20 million Filipinos south of the Luzon region (where Manila is located).
    • Depending on what factor we use as a multiplier for our blocklist/AUS ping data, we can estimate that between 3 and 6 million Filipinos are using Firefox.  That is a rough guess, but it places Firefox market share at a low-end of 12.5% and a high-end of 30%
    • Most people we spoke to browse the Web in English (Firefox US version), but some did suggest that a local version would have appeal.
    • Even further debate arose on whether a Tagalog version would have traction, with an audience of bloggers at Wordcamp responding collectively that it might not.

    That latter point does not rule out Mozilla shipping a local version of Firefox.  But, like every other localization, if we were to ship something localized to the Philippines, it will be because a local community member(s) responds to my call to action and decides to help us complete the body of work.

    Obviously, Mozilla Firefox is taking off in the the Philippines, so I wouldn’t be surprised to see if the nascent community stepped forward with an offer to localize Firefox.

    Finally, take a look at some stats about Firefox in the Philippines.  (All numbers are based on our blocklist data.)

    Growth of blocklist pings over one year

    Growth of blocklist pings over one year

    The Philippines is #4 on the list

    The Philippines is #4 on the list

    Usage in the Philippines by local geography

  • Presentation at WordCamp Philippines

    September 18th, 2009 by seth bindernagel with 5 comments »

    Gen and I attended WordCamp Philippines and I presented today to the audience of about 100-150 people. The purpose of our visit and participation was straightforward:

    1. To gain further insight into the landscapeof the Web and Internet in the Philippines;
    2. To assess whether or not a localized version is something our community here mightpursue;
    3. To meet our community of campus reps and others.

    It’s been a steamy (as in the humidity), but amazingly kind reception here and we booked our schedules full with meetings and events. That’s all Gen’s amazing work.

    As for my WordCamp chat, here is my presentation. I started by taking the audience through our open web demos (video, canvas, svg, css, js etc. thank you Paul Rouget…), and then honed in on describing our Mozilla community, using localization as an example of how we are a global community of passionate contributors working to promote Mozilla’s mission.

    My call to action was two-fold: the blogging community can help promote the Open Web through their blogs, AND, if people feel empowered to do so, let’s start a localization for Filipino users.

    Feedback from these local bloggers was energetic, questions were poignant, and the message was embraced. My prediction, a Mozilla community here is going to take off if we continue to nurture, empower, and participate.

    I am trying to embed the presentation here, based on some code that Gen shared with me, but it looks like it is not working.

  • Firefox Mongolian Direct Outreach

    September 16th, 2009 by seth bindernagel with 2 comments »

    Over the past couple Firefox releases, the Mozilla community has proudly shipped a Mongolian localization of Firefox.  And, based on the blocklist pings that Firefox makes everyday, we can estimtate that we have between 10,000 and 20,000 active daily users in that locale.  That’s a nice accomplishment by the Mongolian community!

    However, as we ramp up our efforts to localize Firefox 3.6, and a mobile Firefox, we have been reaching out to our “mn” community leader, Natsagdorj (Nagi) Shagdar, but have had no response to the emails we have sent.  I guess it’s an inevitability to have some turnover when a 100% volunteer community rallies together to ship Firefox in over 70 languages.  Building sustainable communities is critical to our ongoing success and something we take very seriously.

    Therefore, this is an open blog post to reconnect with our Mongolian team in order to make sure everything is OK and receive a status update on the work/team going forward.  It would be terrific to receive an email from Nagi or others to let me know how to proceed with work on the mn locale.

    This post serves a secondary purpose because we also would like to invite any others interested in joining the Mozilla Mongolian community to contact us.  We are looking for community members to help take up some of the localization effort so we don’t lose all that we have accomplished with the mn version.  Plus, we don’t want to let down thousands of our Mongolian users who will be looking for the latest and greatest when Firefox 3.6 comes out.

    If you have interest in joining the community or know of anyone who might help in some capacity (even with simple referrals), then contact me through the comment section of this blog.  We have a robust set of community members and tools that makes localization easy and fun.

    As a matter of fact, we are welcoming all newcomers, so just ping me.  Thanks, everyone!

  • Improving LOL

    August 28th, 2009 by seth bindernagel with 6 comments »

    One more post coming from l10n intern, Jeremy Hiatt.  The following word-for-word post describes his work to improve the format of LOL, making it more readable and understandable for the developers and localizers who might use it.

    ————————————-

    Today I gave a presentation to some of the guys from the platform team about the state of l20n. In my previous posts I’ve blogged about the advantages and drawbacks for each of the formats we’ve considered, and I got some more good feedback about that in today’s brownbag. After the talk, I chatted with fantasai about how we could improve the LOL format to made it more readable and understandable. She had some interesting ideas that I’d like to share.

    Dropping Angle Brackets

    First, she (and a few others) pointed out that angle brackets make LOL look like XML. However, this resemblance might be confusing since LOL is otherwise nothing like XML. The intention for angle brackets in LOL was to delimit entity definitions and give clear visual separation. These cues are helpful for our parser, especially when it comes to error recovery. In an error case, the parser can drop all tokens until it recognizes an opening bracket (<) and resume the parse. If you have suggestions for implementing effective error recovery if we do remove the brackets from the syntax, please leave them below.

    Encoding Properties

    Another potentially confusing aspect of LOL files is that an entity may have properties defined in addition to its value. Here’s our usual example of a noun with a specified gender:

    <appName: "Jägermeister"
     gender: "male">

    This can be disambiguated slightly with indentation, but fantasai noted that the current syntax does little to explain the difference between the first assignment (which is specifying appName itself), and the second assignment to the appName.gender property. She suggested a syntax that differentiates assigning the value from assigning properties: use ‘=’ for the first assignment, and curly braces to delimit additional properties. Here’s the same example from above:

    appName = "Jägermeister" {
        gender: "male" }

    In this format, LOL would look a lot like CSS.

    Indexing

    An entity that mentions a variable gendered noun may define different forms for different genders. For example:

    <complex[appName.gender]: {
    	male: "Ein hübscher ${appName}s.",
    	female: "Ein hübsches ${appName}s."}>

    In the current syntax, square brackets following the entity key denote the index used to select the proper form. The suggestion was to move that to the RHS of the assignment:

    complex = [appName.gender] {
            male: "Ein hübscher ${appName}s.",
    	female: "Ein hübsches ${appName}s."}

    If you’re familiar with a switch statement in programming, you’ll probably notice that we basically adopted the standard syntax, but substituted square brackets for the switch( ) keyword.

    Objects with Multiple Attributes

    Objects in the UI, such as buttons, typically have a “label” and “accesskey” attribute but no canonical string value. This is subtly distinct from the cases above, where in the first case we wished to specify additional properties, and in the second the string value was resolved based on an external index. Example time:

    <button: {value: "Push me", accesskey: "p"}>

    In this case, it doesn’t make sense to refer to just “button”: you want either the label or the accesskey, which are available through the “.” accessor (e.g. button.label). To draw attention to this distinction, we could require a syntactic difference, or we could simply omit the index from the switch syntax above.

    Summary

    There are plenty more features of l20n that I’d love to put under the microscope here, but in the interest of focusing the discussion I’ll add them to a future post instead. As always, please share your opinion. You can also find us on IRC if you’re looking to start a lively debate; just look for me (jhiatt), Pike, and gandalf. Thanks to everyone from the brownbag today, and thanks especially to fantasai for taking the time to help us out!