ローカライズ作業とは何だ

2011 年 3 月 3 日

生まれて来たのはなぜだ♪~、教えてボクらは誰さ♪~
という訳で、今回の記事は webOS の日本語化を更に進めるための、ローカライズ作業について書きますね。

もう皆さんお気付きかと思いますが、webOS 2.x.x になって、各アプリごとのresourcesフォルダ以下の構造に、多少の変更が加えられています。

まず1.x.xの頃はどうだったかを振り返ってみますと

◆1.x.x のフォルダ構成

com.palm.app.アプリ名
    └──resources    
          └──ja_jp    
              ├──appinfo.json    
              ├──strings.json    
              ├──stylesheets    
              │       └──*.css    
              └──views    
                  ├─ビュー名1    
                  │   └──*.html
                  ├─ビュー名2    
                  :   └──*.html
                  :
                  └─ビュー名n
                      └──*.html

以上のようにリソースは「言語_国」と一対の構造でしたよね。
ところが、2.x.xでは「言語」を親として、そこにそれぞれの「国」がぶら下がる、という構造に変更されたみたいです。

◆2.x.x のフォルダ構成

例えば「日本語」の場合、この言葉を使うのは「日本」だけですから、フォルダ構造は以下のようになります

(単一の国で使用される言語の場合)

com.palm.app.アプリ名
    └──resources    
          └──ja    
             ├──appinfo.json    
             ├──strings.json    
             ├──stylesheets    
             │         └──*.css    
             └──views    
                  ├─ビュー名1    
                  │  └──*.html
                  ├─ビュー名2    
                  :  └──*.html
                  :
                  └─ビュー名n
                     └──*.html

ところが「スペイン語」のように、その言葉を使う国が複数存在する場合、フォルダ構造は以下のように、ちょいと複雑になってきます。

(複数の国で使用される言語の場合)

com.palm.app.アプリ名
    └──resources    
          └──es    
             ├─es
             │    ├──appinfo.json
             │    └──strings.json
             │
             ├─mx
             │    ├──appinfo.json
             │    └──strings.json
             │
             ├──appinfo.json *1
             ├──strings.json *1    
             │
             ├──stylesheets    
             │            └──*.css    
             └──views    
                 ├─ビュー名1    
                 │      └──*.html
                 ├─ビュー名2    
                 :      └──*.html
                 :
                 └─ビュー名n
                    └──*.html

*1 : 国によらずその言語共通の部分

◆strings.jsonの内部構造と翻訳方法

次に、strings.jsonの内部構造とその翻訳方法について、このファイルの中身は

“オリジナルの英文” : “それを翻訳した文” ,

という書式のレコード(行)が、ASCIIコード昇順に列記されたものです。
例えば以下のような構造になっています


{
     ” (Default Calendar)”: ” (デフォルトのカレンダ)”,
     ” and “: ” と “,
     ・
     ・
     ・
     “year(s)”: “年間”,
}

以上のように、1レコード(行)ずつ手作業で翻訳する作業になります。

◆ビュー(html)の翻訳方法

ビュー(html)には、strings.jsonのような規則性は有りません
翻訳すべき英文表記の文字列部分を見つけ、ひとつひとつ地道に翻訳する作業となります

<div id=”pav_no_calendars_msg” class=”palm-body-text”>
          You do not have calendars enabled for this account.
</div>

というような英文表記の文字列部分があれば、例えば

<div id=”pav_no_calendars_msg” class=”palm-body-text”>
          あなたはこのアカウントでカレンダを有効にできません.
</div>

という風に書き変えて行く作業となります

以上、説明しましたことは webOS 自体のローカライズに留まらず、海外のアプリを日本語化するときにも応用できる基礎知識です。

フォントの話

2011 年 3 月 1 日

とりあえず日本語化を終えたPre2で、鼻歌混じりにネットサーフィンしていた時のこと。
ふと、あるページを見て唖然としました、何と、文字化けしてトーフだらけじゃあ~りませんか!
「おじさん、またやっちゃったかな(+_+;;)\バキ!!」と一瞬思いましたが、
よくよく調べてみるとHeisei Kaku Gothicには、第2水準までしか入っておらず、補助漢字や、第3、第4水準の漢字はトーフになるようです。

少し雑な調査方法ですが、Pre2のブラウザで以下のページを見てください。
http://www.shuiren.org/chuden/teach/code/main5.htm

まず補助漢字の一部
ホントはこんなのが
hojyo

Pre2ではこうなります
prehojyo

次に第3水準の一部
ホントはこんなのが
dai3

Pre2ではこうなります
predai3

最後に第4水準の一部
ホントはこんなのが
dai4

Pre2ではこうなります
predai4

まぁ、以上のような訳で、PalmやClieを使っていた方にとっては「何か問題あるの?」と思われるかも知れません、だってPalmOSは第2水準までで、特に不満もなく使えてましたものね(^^)

でもね、今は昔と違います、スマートフォンがパソコンの代わりだよ~、という時代ですから、パソコンで表示できる漢字は、スマフォでも表示して欲しいですよね。

Mini’s Japanese Quick Setup II を導入された方で、以上の点がどうしても気になる方は、Heisei Kaku Gothic を他のフォントに差し替えると大丈夫ですよ。

Mini’s Japanese Quick Setup Ⅱ

2011 年 2 月 27 日

前回の記事でお知らせしました通り、webOS 2.x.x を搭載した Pre2 の日本語化作業を自動化するスクリプトを公開いたします。
検証を行ったマシンはアンロック版(P102UEU)のPre2です、これ以外のキャリア版Pre2でも大丈夫だと思いますが、不具合など出ましたらお知らせください。

◆ スクリプトの使い方

(1)novaterm のプロンプトから、以下の呪文を入力してください。

cd tmp
wget http://mini.x0.com/webos/japanese2.sh
sh japanese2.sh

(2)後は自動で日本語環境を構築してくれます(あっと言う間に終わります)
構築が終わりましたら、マシンをリブートして完了です。

◆ スクリプトの処理内容

ひとつ前の記事に書きました通り、以下の3つの作業をしています。

・ロケール
日本語を追加した locale.txt を所定のフォルダへ上書きコピーします

・リージョン
mojoとmojo2両方のフレームワークに日本語リソースフォルダを作り、そこへ datetime_table.json をコピーします。

・フォント
Heisei Kaku Gothic のみ残し、それ以外の3つのファイルを無効化します

◆ スクリプト実行時の様子

mjqs2

ご注意

◆ 中国語ロケールについて
Pre2には、中国語IMEが標準搭載されているという情報を聞き「それなら、お国の為にゴニョゴニョしなくちゃ」と考えまして、ついでに中国語ロケールも追加してみましたが、残念ながらボクのPre2には、お目当てのIMEが搭載されていない模様です。
※中国語IME搭載は、今後発売予定のチャイナテレコム版から?

mjqs21

◆ 旧 webOS 1.x.x 搭載マシンの方
ここで公開しましたスクリプトは webOS 2.x.x 専用です。旧 webOS 1.x.x 搭載マシンの方は、以前のスクリプトをお使いください
Mini’s Japanese Quick Setup V1.20

日本語化の検証中です

2011 年 2 月 19 日

webOSのマシンを日本語化する為に。手を加えるところは「ロケール」「リージョン」「フォント」である事は、過去の解析により既に判明しております。
webOS 2.x.x を搭載した Pre2 でも、この手法はそのまま応用可能です。

■ ロケール
Pre2 でもおなじみの locale.txt を書き換えます。
テキストエディタで Japanese を追加し、書き戻す事で対処可能です。
Pre2 での、locale.txt の所在は以下の2か所です。

/etc/palm/locale.txt
/usr/lib/luna/customization/locale.txt

pre2jp2

■ リージョン
こちらもおなじみの datetime_table.json を書き換えます。
ただ、Pre2で注意すべきは。mojo frameworks が、旧来の mojo と mojo2 の二つになりましたので、
それぞれのフォルダに対して、同じ作業が発生します。

(ひとつ目)
以下のフォルダを新規作成し、お隣の en_us フォルダから内容をコピー
/usr/palm/frameworks/mojo/submissions/363/resources/ja_jp
そして、このフォルダへ datetime_table.json を上書きします

(ふたつ目)
以下のフォルダを新規作成し、お隣の en フォルダから内容をコピー
/usr/palm/frameworks/mojo2/submissions/93/resources/ja
そして、このフォルダへ datetime_table.json を上書きします

リージョン追加で「年月日曜日」の書式になった様子

pre2jp3

■ フォント
Pre2では、特にフォントを弄らなくても、日本語の表示は問題無いのですが、
良く見ると、日本語の書体としては不自然な文字が若干含まれています。

調査しましたところ、Pre2には全角文字を含むフォントファイルが、以下の4つ有りました。

pre2jp11

この4つのフォントを比べてお判りの通り、Heisei Kaku Gothic が日本語として一番自然な書体であると判断しました。
実際の作業としては、この Heisei Kaku Gothic 以外のフォントを無効にしてみました。

フォントの所在
/usr/share/fonts

HeiS_nb.ttf → HeiS_nb.xxf にリネーム
HeiT_nb.ttf → HeiT_nb.xxf にリネーム
Dotum_nb.ttf → Dotum_nb.xxf にリネーム

まぁ、このフォントが一番自然かなぁ。。。
(おっと、言い忘れてましたが Pre2でMini’s IME 動作OKです)

pre2jp4

以上の作業を自動化する為のスクリプトを近日中に公開します、
しばらくお待ちください。