ローカライズ

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を発売する事になったら、こんな感じになるんでしょうね。

フォントのカスタマイズ

2009 年 10 月 18 日

Palm Pre には日本語フォントが最初から入っており、デフォルトの状態でも日本語が表示出来ます。
ただし、中国や台湾のフォントも混じっており、日本語としては、かなり不自然な字体になります。

今回は、この問題を回避する方法や、自分好みのフォントに入れ替える方法をレポートいたします。

■中国や台湾のフォントを無効にしよう

まず、Palm Preのフォントデータは以下のフォルダに存在します

/usr/share/fonts

このフォルダには沢山のフォントファイル(TrueType)が入っておりますが、
この中で、中国や台湾のフォントと思われるものが2つ有ります、
今回は、これらのファイルの拡張子を変更する方法で、無効にしてみました。

(手順)

uming.ttc → uming.xxc にリネームしました
batang.ttf → batang.xxf にリネームしました

リネーム後、本体を再起動する事で、自然な字体(VLゴシック)で日本語が表示されるようになります。

☆作業前(デフォルト状態)

browser_2009-18-10_142054

☆作業後

browser_2009-18-10_141135

■自分好みのフォントに入れ替えてみよう

例として、ボクのNokia E51で使わせてもらっている、フリーフォントに入れ替えてみます。

M+1P+IPAG-circle.ttf
http://mix-mplus-ipa.sourceforge.jp/preview.html

このフォントの特長は、全角ひらがなとカタカナで半濁点が強調された字体で、
特に小さいポイントで見た時の認識性が良くて、ボクのお気に入りのフォントです。

(手順)

まず、Palm Pre 標準のVLゴシックフォントを無効にします。

VL-PGothic-Regular.ttf → VL-PGothic-Regular.xxf にリネームしました

次に、M+1P+IPAG-circle.ttf のファイル名を VL-PGothic-Regular.ttf にリネームしたファイルを、/usr/share/fonts へコピーします。

本体を再起動する事で、自分好みのフォントで表示されるようになります。

☆作業後

browser_2009-18-10_144254

違いがちょっと判りずらいかも知れません、
タッチパネルの「パ」とか、ポイントの「ポ」とかに注目してください。

webOSで日本語入力成功!(暫定版)

2009 年 10 月 15 日

ime

現在のところ、使えるIMEが存在しないwebOSですが、webベースのかな漢字変換サービスで、そこそこ使えるモノを見つけました。

Japaese IME
http://colspan.net/japaneseime/

多少使い辛い部分も有りますが、とりあえずこのサービスを利用すれば、webOS上で日本語入力が可能になります。

■操作方法
ブラウザ上で、本サービスで立ち上げ、日本語の文章を入力したら

Select All [◎+A] → 文章全体を選択
Copy [◎+C] → コピーして
Paste [◎+V] → 他のアプリのテキスト入力欄にペースト

という流れになります。

◎はジェスチャーエリアを指でタッチしながらという意味

■Preのカスタマイズ
しかしながら、Select All [◎+A] を実行する時に、ちょっと不具合が・・・、
ショットカットキー操作で、文章全体を選択した時に、末尾に余計な「a」が1文字付いちゃうんですよ。
この「a」という文字は、ショートカット[◎+A] の A なんです。

そこで [◎+A] のショートカットを [◎+Enter] に変更してみる事にしました。
このようにしますと末尾に余計な文字が付きません。

書き換えたモジュールは
/usr/palm/frameworks/mojo/builtins/palmInitFramework200_18.js

書き換えた部分は

(オリジナル)
Mojo.Menu.selectAllItem={label:$LL(’Select All’),command:Mojo.Menu.selectAllCmd,shortcut:’a',checkEnabled:true};

(書き換え後)
Mojo.Menu.selectAllItem={label:$LL(’Select All’),command:Mojo.Menu.selectAllCmd,shortcut:’\r’,checkEnabled:true};

「そんな根っこのモジュール書き換えて大丈夫なの?」と思われるかも知れません。
でもね、ソースリスト丸見え、テキストエディタで簡単に変更出来ちゃう訳です、やらない方がどうにかしてますよね、ダメなら戻せば良いだけの話ですから。
自分の思い通り、徹底的にカスタマイズ出来るマシン、
それがPalm Preなんですよ(^^)

■記念カキコの動画

124番はボクです(^^)

続 Palm Pre 雑感

2009 年 10 月 13 日

例えて申し上げるなら、自分の思い通りの自由な色に染めれる、まっ白なキャンバス、それがPalm Preであります。

数日弄ってみて、Preの良い部分、悪い部分が段々見えて来たような・・・、少しずつ tips も織り交ぜながらのレポート続報です。

■スライド機構
少し固めです、ちょっと引っ掛かるような感じがします、あくまでも個体差かも知れません。
スライドさせてキーボードを出すと、スリープから復帰して液晶が点灯します。

■電池ブタの脱着方法
電池ブタの脱着で「脱」の方は少しコツが必要です、本体底面にあるノッチを押さえながら、フタと本体の隙間に爪を入れて、慎重にパキパキっと外します。
Preにはリセットボタンが有りません、バッテリ抜きリセット時には、毎回この作業をする事になります。

pre10

■Ringerスイッチ
Ringerスイッチとは、本体頭部のスライドスイッチの事で、日本流に言えばマナーモードスイッチですね。
このスイッチを入れておけば、Treoやセントロ君では、どんな場合でも、本体スピーカから音がカットされたのですが、
Preでは異なるようで、バグかも知れませんが、YouTubeなどの音が出るアプリではスイッチonでも、
タイミングによっては音が出る場合が有りました、これは注意が必要ですね。

■ヘッドフォンジャック
ジャックは3.5φの一般的なモノになりました、従来の変換アダプタ無しで、好みのヘッドフォンが利用可能です。

■USBインターフェイス
充電は、付属のACアダプタや、PCのUSBポートから可能で、Pre本体のUSBコネクタへ給電します。
ただ、このコネクタのキャップがイマイチで、キャップをビロ~ンと外さないと、ケーブルのモールド部分と干渉します、もうちょっと考えて欲しかったなぁ・・・、
ちなみにこのコネクタ、一般的なミニUSBでは無く、更に小さい「マイクロUSB」になっていますので注意が必要です。

pre11

■付属ACアダプタ
丁度カメラのフィルムケースと同じくらいの大きさ、大変コンパクトです、このサイズで容量は 5V 1A です。
先日、Tamagogohanさんから頂いたメールで「付属品以外の一般で市販されているACアダプタでは、充電出来るモノと出来ないモノが有りました」
と報告を頂きましたので、早速調べてみました。
Pre付属ACアダプタでは、下図に示す2番-3番ピン間がショート、つまり電気的に繋がっていました。
市販のACアダプタの多くは、2番-3番ピン間はオープンになっているモノが多いです、これが明暗を分けた原因です。

pre12

pre13

■電話をoffにする方法
Sprint版を日本で使う場合、電話はoffで使うのがデフォルトです、以下はその設定方法です。
まず「フライトモード」にし、電話、WiFi、Blutooth 全てoffにします。
次に、WiFiを使用する場合は「Wi-Fiアプリ」で、Blutoothを使用する場合は「Blutoothアプリ」で、それぞれonに設定すればOKです。