2009 年 10 月 20 日 のアーカイブ

ローカライズ

2009 年 10 月 20 日 火曜日

海外の端末を日本語化する時に、忘れてはならない作業に「ローカライズ」が有ります。

ローカライズとは、アプリの画面で表示される文言や、メニューストリング等の、主に文字列リソースを、意味の通る日本語に翻訳していく作業の事です。

順番から申し上げて、webOSのシステムとカレントを jp_jp ロケール(日本語_日本)にしてから作業を進めて行くのが理想なのですが、残念ながら今のところ、ロケールを変更する方法をまだ見つけられません。

そんな訳で、考え方を変えまして、en_us ロケール(英語_米国)のままでローカライズを試してみました。
将来的に jp_jp ロケールにする方法が判明した時にも、移行が容易に済むような方法で、作業を進めていくことにします。
では、ローカライズの例として Clockアプリ を日本語化してみましょう。

■アプリのフォルダ構造

Palm Pre 標準搭載のアプリは、すべて以下のフォルダに収録されております。

/usr/palm/applications

各アプリごとに細かくフォルダに分けられており、Clockアプリが有る場所は以下のフォルダになります。

/usr/palm/applications/com.palm.app.clock

さて、Clockアプリの場所は判りました、では、更にこのフォルダの下は、どんな構造になっていて、どんなファイルが有るのでしょう?、フォルダの中身を覗いてみましょう。


Clockアプリのフォルダ内部構造    
com.palm.app.clock    
  ├──.project    
  ├──app    
  │    ├──controllers    
  │    │    ├──alarm-assistant.js    
  │    │    ├──alarmdash-assistant.js    
  │    │    ├──alarms-assistant.js    
  │    │    ├──app-assistant.js    
  │    │    ├──clock-assistant.js    
  │    │    ├──ring-assistant.js    
  │    │    ├──settings-assistant.js    
  │    │    └──themes-assistant.js    
  │    ├──models    
  │    │    ├──alarm.js    
  │    │    ├──alarms.js    
  │    │    ├──settings.js    
  │    │    └──themes.js    
  │    └──views    
  │         ├──alarm    
  │         │    ├──alarm-scene.html    
  │         │    └──alarms-scene.html    
  │         ├──alarmdash    
  │         │    └──alarmdash-scene.html    
  │         ├──alarms    
  │         │    ├──alarms-scene.html    
  │         │    ├──list-container.html    
  │         │    ├──list-item.html    
  │         │    └──nothing.html    
  │         ├──clock    
  │         │    └──clock-scene.html    
  │         ├──ring    
  │         │    └──ring-scene.html    
  │         ├──settings    
  │         │    └──settings-scene.html    
  │         └──themes    
  │              ├──divider.html    
  │              ├──example.html    
  │              └──themes-scene.html    
  ├──appinfo.json    
  ├──framework_config.json    
  ├──icon.png    
  ├──images    
  │    ├──backdrop-dark.png    
  │    ├──header-icon-clock.png    
  │    ├──list-icon-analog.png    
  │    ├──list-icon-digital.png    
  │    ├──menu-icon-alarm.png    
  │    ├──menu-icon-clock.png    
  │    ├──notification-alarm-large.png    
  │    ├──notification-alarm-small.png    
  │    ├──palm-notification-button.png    
  │    ├──palm-notification-button-affirmative.png    
  │    ├──palm-notification-button-alternate.png    
  │    └──prefs-mute.png    
  ├──index.html    
  ├──resources    
  │    └──es_us    
  │         ├──appinfo.json    
  │         ├──strings.json    
  │         ├──stylesheets    
  │         │    └──clock.css    
  │         └──views    
  │              ├──alarm    
  │              │    ├──alarm-scene.html    
  │              │    └──alarms-scene.html    
  │              ├──alarms    
  │              │    └──alarms-scene.html    
  │              ├──ring    
  │              │    └──ring-scene.html    
  │              ├──settings    
  │              │    └──settings-scene.html    
  │              └──themes    
  │                   └──themes-scene.html    
  ├──sources.json    
  ├──stylesheets    
  │    └──clock.css    
  └──themes    
       ├──analog    
       │    ├──analog-clock.html    
       │    ├──analog-clock-functions.js    
       │    ├──analog-theme.css    
       │    └──images    
       │         ├──base.png    
       │         ├──gloss.png    
       │         ├──hour.png    
       │         ├──hour-shadow.png    
       │         ├──minute.png    
       │         ├──minute-shadow.png    
       │         ├──second.png    
       │         ├──second-shadow.png    
       │         └──second-simple.png    
       ├──digital    
       │    ├──digital-clock.html    
       │    ├──digital-clock-functions.js    
       │    ├──digital-theme.css    
       │    └──images    
       │         ├──am.png    
       │         ├──am-landscape.png    
       │         ├──de_de-am.png    
       │         ├──de_de-am-landscape.png    
       │         ├──de_de-pm.png    
       │         ├──de_de-pm-landscape.png    
       │         ├──digit-0.png    
       │         ├──digit-0-landscape.png    
       │         ├──digit-1.png    
       │         ├──digit-1-landscape.png    
       │         ├──digit-2.png    
       │         ├──digit-2-landscape.png    
       │         ├──digit-3.png    
       │         ├──digit-3-landscape.png    
       │         ├──digit-4.png    
       │         ├──digit-4-landscape.png    
       │         ├──digit-5.png    
       │         ├──digit-5-landscape.png    
       │         ├──digit-6.png    
       │         ├──digit-6-landscape.png    
       │         ├──digit-7.png    
       │         ├──digit-7-landscape.png    
       │         ├──digit-8.png    
       │         ├──digit-8-landscape.png    
       │         ├──digit-9.png    
       │         ├──digit-9-landscape.png    
       │         ├──en_gb-am.png    
       │         ├──en_gb-am-landscape.png    
       │         ├──en_gb-pm.png    
       │         ├──en_gb-pm-landscape.png    
       │         ├──es_es-am.png    
       │         ├──es_es-am-landscape.png    
       │         ├──es_es-pm.png    
       │         ├──es_es-pm-landscape.png    
       │         ├──flippers-landscape.png    
       │         ├──flippers-portrait.png    
       │         ├──fr_ca-am.png    
       │         ├──fr_ca-am-landscape.png    
       │         ├──fr_ca-pm.png    
       │         ├──fr_ca-pm-landscape.png    
       │         ├──fr_fr-am.png    
       │         ├──fr_fr-am-landscape.png    
       │         ├──fr_fr-pm.png    
       │         ├──fr_fr-pm-landscape.png    
       │         ├──it_it-am.png    
       │         ├──it_it-am-landscape.png    
       │         ├──it_it-pm.png    
       │         ├──it_it-pm-landscape.png    
       │         ├──pm.png    
       │         └──pm-landscape.png    
       ├──manualanalog    
       │    ├──images    
       │    │    ├──clock.png    
       │    │    ├──hour.png    
       │    │    ├──miniSecond0.png    
       │    │    ├──miniSecond1.png    
       │    │    ├──minute.png    
       │    │    ├──second0.png    
       │    │    └──second1.png    
       │    ├──manualanalog-clock.html    
       │    ├──manualanalog-clock-functions.js    
       │    └──manualanalog-theme.css    
       └──themes.json    

ここで注目して頂きたいのが resouces フォルダと、その直下の es_us フォルダです。

ご存知のように、Palm Pre Sprint版では「英語」と「スペイン語」がサポートされております。ですから、この es_us フォルダ以下には、スペイン語固有のリソースが格納されている事が、容易に想像出来ますよね。

そこで、resouces フォルダ直下に、es_us フォルダ以下の構造ごとコピーした、en_us フォルダを新たに作り、ここに含まれているファイルを片っ端から日本語に翻訳してみました。

翻訳したファイルをココに置いておきます、普通のテキストエディタで見れます、興味をお持ちの方は、一度ご覧ください。(注:エンコードはutf8です)

■ローカライズの結果

ローカライズ作業後の Clockアプリ の画面キャプチャをご覧ください。

clock_2009-20-10_185225

clock_2009-20-10_185236

clock_2009-20-10_185323

clock_2009-20-10_185333

clock_2009-20-10_185401

clock_2009-20-10_185412

如何でしょう?、万一、docomoさんがPreを発売する事になったら、こんな感じになるんでしょうね。