{"id":615,"date":"2009-08-17T00:14:52","date_gmt":"2009-08-17T08:14:52","guid":{"rendered":"http:\/\/blog.mozilla.org\/webdev\/?p=615"},"modified":"2009-10-02T15:40:56","modified_gmt":"2009-10-02T23:40:56","slug":"improving-mozilla-web-localization-part-3-challenges-for-tools","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/","title":{"rendered":"Improving Mozilla Web Localization, Part 3: Challenges for Tools"},"content":{"rendered":"<p><img decoding=\"async\" src=\"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg\" alt=\"Tools\" class=\"alignright\" aligh=\"right\" \/><em>This is the final post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven\u2019t read it, please start with the <a href=\"http:\/\/blog.mozilla.org\/webdev\/2009\/08\/11\/improving-mozilla-web-localization-part-1-whats-wrong\/\">first post<\/a>. Again, this is a discussion starter and nowhere close to a final decision. Your opinion on the issue is very valuable, so please leave comments.<\/em><\/p>\n<p>In part 2 of the series, I explained some organizational challenges when growing a web localization team healthily. In this post, I want to outline some of issues <strong>localization tools<\/strong> are facing on the web.<\/p>\n<p>Note: In this article, the term <em>localization tools<\/em> is referring to <em>developer tools<\/em> that human beings can use to localize web applications. This is unrelated to automatic translation tools like <a href=\"http:\/\/translate.google.com\/\">Google Translate<\/a> or <a href=\"http:\/\/babelfish.yahoo.com\/\">Yahoo Babel Fish<\/a>.<\/p>\n<h3>The thin line between developer and localizer<\/h3>\n<p>Most translatable Web content at Mozilla is represented as <a href=\"http:\/\/en.wikipedia.org\/wiki\/GNU_gettext\">GNU gettext<\/a> .po files as part of the regular the source code. Localizing web applications is therefore still very much a technical task: Checking out a source tree, editing a .po file, checking it back in, (optionally waiting for the staging server to pick up the changes and checking out one&#8217;s changes online), that sounds very much like a developer&#8217;s work, not as much like the core concern of a localizer. <\/p>\n<p>A lot of tools do not try to change that. They are mere frontends to translating .po files, but they do not help you translate the <em>website<\/em>. One way to change this would be building a <a href=\"http:\/\/ozten.com\/psto\/2009\/08\/14\/a-sketch-of-po-liveedit\/\">&#8220;PO live edit&#8221;<\/a> tool, as my colleague Austin King describes in a recent blog post.<\/p>\n<p>Please read his post for more details, but the idea is to build a translation tool that requires zero set-up, has a small learning curve, and ties web site translation together &#8220;end-to-end&#8221;, i.e., from development to deployment in one go.<\/p>\n<h3>.po or not .po?<\/h3>\n<p>Another problem we have is that not all of our pages are completely localizable in .po files only. Most notably, the web site mozilla.com mainly consists of straight HTML files, tied together with some PHP. But also other pages, like AMO, have some content in localizable HTML files. The rationale is that these texts would add a huge number of strings to the .po files if they were split up in that fashion, and it would be significantly harder for localizers to translate these out of context. Therefore, having localizers translate straight HTML from a file is considered the &#8220;lesser evil&#8221;.<\/p>\n<p>The reason why these are so different is that these pages sometimes do not only contain translatable content, but they may also require the localizer to add or remove bullet points, or replace links to a US-centered site with another locally applicable option.<\/p>\n<p>Currently, we are not aware of a tool that makes these localizations easier. Some tools, like <a href=\"http:\/\/translate.sourceforge.net\/wiki\/toolkit\/html2po\">html2po<\/a>, try to extract strings from an HTML file and drop them into a .po file (one string per <a href=\"http:\/\/en.wikipedia.org\/wiki\/HTML_element#Block_elements\">block-level element<\/a>, for example), with varying success. While this allows using .po-capable tools on the resulting files, it removes the flexibility to perform &#8220;content-changing localization&#8221; as described above. Finally, it also makes the .po file <em>authoritative<\/em>, i.e., if one localizer edits the generated .po file but another one prefers editing the HTML template, we are going to run into non-trivial merging problems.<\/p>\n<p>Making HTML translation easier is definitely a &#8220;slippery slope&#8221; towards building a full-blown HTML editor, which by all means we want to avoid. However, I can imagine integrating <a href=\"https:\/\/bespin.mozilla.com\/\">Bespin<\/a> with a web site instance and allowing localizers to collaboratively edit the HTML file right where it will show up eventually.<\/p>\n<h3>Comments?<\/h3>\n<p>This is where you come in: <strong>Please leave comments.<\/strong> If you are a localizer yourself, please tell us what does or what does not work well for you. What is your workflow like? Are you happy with it or would you like to change it? If you have used or witnessed a tool before that you found provided an <em>innovative solution<\/em> to the problems outlined above, please tell us. <\/p>\n<h3>Acknowledgments<\/h3>\n<p>This series of blog posts was a result of many discussions with sethb, gandalf, stas, ozten, pascal, pike and others interested in making Web localization better. Thanks for your input, guys!<\/p>\n<p><small>Photo Credit: <a href=\"http:\/\/www.flickr.com\/photos\/22280677@N07\/2504310138\/\">\u201cOld Tools\u201d<\/a>, CC by-sa licensed by Svadilfari on flickr.<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the final post in a series of three posts on Next-Generation Web Localization at Mozilla. If you haven\u2019t read it, please start with the first post. Again, this is a discussion starter and nowhere close to a final &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/\">Continue reading<\/a><\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[199],"tags":[7,264781],"coauthors":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Improving Mozilla Web Localization, Part 3: Challenges for Tools - Mozilla Web Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fred Wenzel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/\",\"name\":\"Improving Mozilla Web Localization, Part 3: Challenges for Tools - Mozilla Web Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg\",\"datePublished\":\"2009-08-17T08:14:52+00:00\",\"dateModified\":\"2009-10-02T23:40:56+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/e8184fb431024d8d2a8a3cc5fda9c8fc\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage\",\"url\":\"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg\",\"contentUrl\":\"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/webdev\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improving Mozilla Web Localization, Part 3: Challenges for Tools\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/webdev\/\",\"name\":\"Mozilla Web Development\",\"description\":\"For make benefit of glorious tubes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/e8184fb431024d8d2a8a3cc5fda9c8fc\",\"name\":\"Fred Wenzel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/bd91279ab3c5239e7276d9887fd1662f\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/68dd77647e31e778c07218c63d2d0e0b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/68dd77647e31e778c07218c63d2d0e0b?s=96&d=mm&r=g\",\"caption\":\"Fred Wenzel\"},\"description\":\"Fred is the former web development manager of Mozilla's Developer Ecosystem team. He likes to solve tricky problems, is an Open Source geek, and brings German Engineering to the webdev crowd. Fred spends his spare time on the hunt for great food and real Italian espresso.\",\"sameAs\":[\"http:\/\/fredericiana.com\/\"],\"url\":\"https:\/\/blog.mozilla.org\/webdev\/author\/fwenzelmozillacom\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Improving Mozilla Web Localization, Part 3: Challenges for Tools - Mozilla Web Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/","twitter_misc":{"Written by":"Fred Wenzel","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/","url":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/","name":"Improving Mozilla Web Localization, Part 3: Challenges for Tools - Mozilla Web Development","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage"},"thumbnailUrl":"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg","datePublished":"2009-08-17T08:14:52+00:00","dateModified":"2009-10-02T23:40:56+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/e8184fb431024d8d2a8a3cc5fda9c8fc"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#primaryimage","url":"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg","contentUrl":"http:\/\/farm4.static.flickr.com\/3132\/2504310138_f7d3e1aec3_m.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/webdev\/2009\/08\/17\/improving-mozilla-web-localization-part-3-challenges-for-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/webdev\/"},{"@type":"ListItem","position":2,"name":"Improving Mozilla Web Localization, Part 3: Challenges for Tools"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/webdev\/#website","url":"https:\/\/blog.mozilla.org\/webdev\/","name":"Mozilla Web Development","description":"For make benefit of glorious tubes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/webdev\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/e8184fb431024d8d2a8a3cc5fda9c8fc","name":"Fred Wenzel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/webdev\/#\/schema\/person\/image\/bd91279ab3c5239e7276d9887fd1662f","url":"https:\/\/secure.gravatar.com\/avatar\/68dd77647e31e778c07218c63d2d0e0b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/68dd77647e31e778c07218c63d2d0e0b?s=96&d=mm&r=g","caption":"Fred Wenzel"},"description":"Fred is the former web development manager of Mozilla's Developer Ecosystem team. He likes to solve tricky problems, is an Open Source geek, and brings German Engineering to the webdev crowd. Fred spends his spare time on the hunt for great food and real Italian espresso.","sameAs":["http:\/\/fredericiana.com\/"],"url":"https:\/\/blog.mozilla.org\/webdev\/author\/fwenzelmozillacom\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/615"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/comments?post=615"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/posts\/615\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/media?parent=615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/categories?post=615"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/tags?post=615"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/webdev\/wp-json\/wp\/v2\/coauthors?post=615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}