{"id":52,"date":"2006-06-07T23:54:53","date_gmt":"2006-06-08T06:54:53","guid":{"rendered":"http:\/\/www.schwieb.com\/blog\/archives\/16"},"modified":"2006-06-07T23:54:53","modified_gmt":"2006-06-08T06:54:53","slug":"nihonngo-wo-hanasemasu-ka","status":"publish","type":"post","link":"https:\/\/www.schwieb.com\/blog\/nihonngo-wo-hanasemasu-ka\/","title":{"rendered":"Nihonngo wo hanasemasu ka?"},"content":{"rendered":"<p>I saw <a href=\"http:\/\/crueltobekind.org\/archive\/2006-06-07\/how_to_make__get_normal_people\">this link<\/a> in a post on Scoble&#8217;s blog today, and it made me think of all the work the MacBU does for its international software releases.  Shall I tell you about it?  (Too bad if you said &#8220;No!&#8221;)<br \/>\nIn an earlier post, I told you how a large part of my day-to-day job over the past year has been driving our transition to Xcode.  That&#8217;s not all I do, however.  I&#8217;ve been very privileged to have been the US-based point-of-contact in MacBU engineering for our localization work ever since we started work on Office X.  I work to coordinate the efforts of our localization teams in Dublin, Ireland and Chofu, Japan.<br \/>\nInternally, &#8216;localization&#8217; refers to the whole process by which we take a piece of English software and create the Japanese or whatever version.  This includes everything from the actual translation of the text elements to tweaking the layout of dialog box controls to renaming certain files on the disk images to actually assembling the disk images for the new languages.  Additionally, localization involves ensuring that we don&#8217;t use any politically or socially incorrect terminology in any of the product languages, including English.  We currently localize Office into Japanese, French, German, Spanish, Swedish, Italian, and Dutch.<br \/>\nMy role is basically to provide developer expertise in this area to the teams in Ireland and Japan, as well as to assist our Redmond and Silicon Valley-based developers in making their feature designs localizable.  Features are localizable when they don&#8217;t hardcode strings into the source (use resources instead like .strings files), don&#8217;t hardcode string substitutions (since the order of subjects, objects, and verbs changes from language to language), allows for dialog and control layouts to shift (German text tends to be up to 1\/3 longer than English, so dialogs have to be able to reflow to a larger size), etc.<br \/>\nI don&#8217;t do any of the actual translations, however.  I speak enough Japanese to wander around Tokyo and look for <a href=\"http:\/\/www.ghibli.jp\/\">Studio Ghibli<\/a> goods (I found a cel from the opening credits of <a href=\"http:\/\/www.nausicaa.net\/miyazaki\/totoro\/\">Tonari no Totoro<\/a> for my son&#8217;s room the last time I went to Tokyo), but not to do any official business work.  I&#8217;ve forgotten almost all of my high-school French, and while my last name is German, I can&#8217;t even count to 10 in that language&#8230;<br \/>\nAnyway, back to localization.  &#8216;Loc&#8217; is a very important thing to get right.  Look at this laundry list from Nicole Simon&#8217;s post that I linked to above:<\/p>\n<blockquote><p>\nThere are not many tablet users in Germany, but many may be interested in using one. I could be a blogging about how happy the tablet makes me, but I have to admit, I cannot. Because it does not let me do the stuff I want to do &#8211; and therefor I do not expose my peers to it.<br \/>\nI will not blog much about Flickr, because it uses English and all the help and exposure I could give would be irrelevant because I would need to do translation as well.<br \/>\nI will not blog much about Google Spreadsheet, because the first thing people will notice is that you cannot even start to use it for German calculation.<br \/>\nI will not blog much about Office 2007, because it is unusable for me and I also assume that I will not be able to even install it without bigger problems on my machine.<br \/>\nIf you look at my examples they may sound non relevant, but they are little step stones toward a bigger picture: We do get used to ignoring you over here because you don&#8217;t care about us. And while we are busy conducting our lives, you bring one firework after another &#8211; just on the other side of the earth ball.\n<\/p><\/blockquote>\n<p>Politics aside, we can&#8217;t afford (literally) to mess up the localized versions.  We&#8217;ve got to get all these little things right &#8212; and I don&#8217;t think her list is so little. Consider Excel.  We&#8217;ve got scads of code to do things like Japanese Imperial date formats, commas instead of periods for European decimals, translated function names for cell formulas, etc.  And, all that data that gets saved into the file has to look right when opened in, say, English Excel.  So we have to be able to map from SUM to SUMME and back for German Excel, for example.<br \/>\nThe really tricky part of localization is that much of the work has to happen after we&#8217;ve locked down the visual aspect of the current release.  It is expensive to keep translating and retranslating text of a feature that is in flux.  Yet, over the last 10 years we&#8217;ve gone from a 6-month delay between English and localized releases to somewhere on the order of 2 weeks delay.  This means that we&#8217;ve compressed the same amount of work into less time, so that the international Mac community gets their hands on the next version of Mac Office at almost the same time as English speakers do.  That compression means that we don&#8217;t have much time to fix bugs in the main codebase that are only revealed by the localization process!<br \/>\nOne of the ways we deal with that is a process called &#8216;pseudo-localization.&#8221;  This has nothing to do with &#8216;pseudo-code&#8217;; instead, it is a way of forcing text into some translation automatically, yet still have that text be mostly readable.  It works by taking the normal Roman alphabet and changing each of the characters into some similar character, perhaps one with an accent, or a copyright symbol instead of a C.  We also pad each string with extra text to make it wider to check for dialog mis-layout and string insertions.<br \/>\nSo &#8220;pseudo-localization&#8221; might become &#8220;[=== \u0013ps\u00e9\u00fc?\u00f8l\u00f8\u00e7\u00e5l\u00eez\u00e5\u2020\u00ee\u00f8\u00f1 ===]&#8221; &#8212; still mostly humanly-readable, wider to force dialog layout, and bracketed so we can tell if a dev hardcoded string insertions.  We can do this in an entirely automated fashion, and this technique lets us test perhaps 50% of Office as if it were localized, so that we can catch obvious dev mistakes right away.  We thus reduce the risk of finding a bad localization bug so late in the release process that we can&#8217;t fix it safely.  Pseudo-loc does sometimes generate bogus bugs (for example, if it auto-translates something into a value the code never expects, like &#8220;10&#8221; into &#8220;[=== 10 ===]&#8221; and we are only expecting a series of digits) so we can&#8217;t use it for everything.<br \/>\nIt takes a lot of work, and I&#8217;m very proud to be a small part of our international efforts.  I know we don&#8217;t get it all right, but we try our darndest to make our software relevant, useful, and usable by the international community.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I saw this link in a post on Scoble&#8217;s blog today, and it made me think of all the work the MacBU does for its international software releases. Shall I tell you about it? (Too bad if you said &#8220;No!&#8221;) In an earlier post, I told you how a large part of my day-to-day job [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-all","category-macbu"],"_links":{"self":[{"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":0,"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/posts\/52\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/categories?post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schwieb.com\/blog\/wp-json\/wp\/v2\/tags?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}