‘webOS’ カテゴリーのアーカイブ

リージョン

2009 年 10 月 25 日 日曜日

ここで申し上げる「リージョン」とは、国ごとの通貨記号や、数値、日付、時刻のフォーマットなどを定義したデータテーブルの事を指します。
このデータテーブルは、旧PalmOS の時代には Boot モジュール内に存在しておりましたが、webOSでも同様の仕組みが実装されております。

リージョンは原則、フォーマット(並び方)について定義しただけのものであり、ユーザが自由に設定出来ます。
しかしながら、更に詳細な日付や時間の表示内容について定義されたテーブルが、これとは別に存在しており、こちらの方はシステムのロケールに連動して決め打ちされます。

では、webOSにおけるリージョンの解析とカスタマイズ、そして、その成果として Calendar アプリの日本語ローカライズについてレポートいたします。

■リージョンの解析

webOSにおけるリージョンのデータテーブルには、Regional Settings に連動するものと、ロケールに連動して決め打ちされるものが有ります。

☆ Regional Settings に連動するもの

こちらのデータテーブルは以下のフォルダに存在します

/usr/palm/frameworks/mojo/submissions/200.18/formats

国ごとに、拡張子 json のファイルで格納されております、もちろん jp.json (日本)のテーブルもココに有ります。
以下は jp.json のファイルの中身であります。

{
“numberTripleDivider”: “,”,
“numberDecimal”: “.”,
“currencyPrepend”: “¥”,
“currencyAppend”: “”,
“percentageSpace”: “false”,

“fullDate”: “yyyy年M月d日EEEE”,
“longDate”: “yyyy年M月d日”,
“mediumDate”: “yyyy/MM/dd”,
“defaultDate”: “yyyy/MM/dd”,
“shortDate”: “yy/MM/dd”,
“dateFieldOrder”: “ymd”,

“fullTime24″: “H時mm分ss秒”,
“fullTime12″: “H時mm分ss秒”,
“longTime24″: “HH:mm:sszzz”,
“longTime12″: “hh:mm:ss azzz”,
“mediumTime24″: “H:mm:ss”,
“mediumTime12″: “h:mm:ss a”,
“defaultTime24″: “H:mm:ss”,
“defaultTime12″: “h:mm:ss a”,
“shortTime24″: “H:mm”,
“shortTime12″: “h:mm a”,
“dateTimeFormat” : “DATE TIME”,

“is12HourDefault”: “true”,
“firstDayOfWeek”: 0
}

 

 

☆ ロケールに連動して決め打ちされるもの

こちらのデータテーブルは以下のフォルダに存在します

/usr/palm/frameworks/mojo/submissions/200.18/resources

国ごとに、更にフォルダ分けされて格納されております、残念ながら jp_jp (日本)のフォルダは有りません。
今の段階では、en_us フォルダの中に有る datetime_table.json を書き換えることにします。
以下に書き換え後の datetime_table.json のファイルの中身を示します。

{
“long”: {
“day”: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"],
“month”: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
},
“medium”: {
“day”: ["日", "月", "火", "水", "木", "金", "土"],
“month”: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
},
“short”: {
“day”: ["日", "月", "火", "水", "木", "金", "土"],
“month”: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"],
“date”: ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
"31"]
},

“single”: {
“day”: ["日", "月", "火", "水", "木", "金", "土"],
“month”: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
“date”: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
"31"]
},

“relative”: {
“yesterday”: “昨日”,
“today” : “本日”,
“tomorrow” : “明日”
},

“am”: “AM”,
“pm”: “PM”
}

 

 


追記:2009/11/14
リージョンの日本語化について
(1)まず以下のフォルダ内に ja_jp というフォルダを新しく作ります
/usr/palm/frameworks/mojo/submissions/***.**/resources

ご注意:***.**という部分はバージョン番号です、お使いのマシンにより変わります

(2)以下より datetime_table.json をダウンロードし、先の ja_jp フォルダにコピーします
datetime_table.json のダウンロード

(3)マシンをリブートします

追記:2009/11/24
Symキーで表示される記号の入力パネルについて
上で作りました ja_jp フォルダに、以下のファイルもコピーしてください。
そうしないとSymキーを押しても記号の入力パネルが表示されません、
なお、これらのファイルは en_us フォルダに入っているものをコピーすれば良いでしょう。

alternatechars_fulltable.json
alternatechars_fulltable_azerty.json
alternatechars_fulltable_qwertz.json
alternatechars_table.json
alternatechars_table_azerty.json
alternatechars_table_qwertz.json

■Calendarアプリの日本語ローカライズ

リージョン解析の成果として、Calendarアプリの日本語ローカライズ作業を行いました、これで、日本人が使用するにあたって、全く違和感の無いアプリに変身いたしました。

calendar_2009-25-10_172233

calendar_2009-25-10_172243

calendar_2009-25-10_172251

calendar_2009-25-10_172400

calendar_2009-25-10_172411

なおサンプルとして入力しました予定は、すべてフィクションです m(_ _)m

上で作りました ja_jp フォルダには、以下のファイルもコピーしてください

alternatechars_fulltable

ないと記号の入力パネルが表示されません
/usr/palm/frameworks/mojo/submissions/***.**/resources

カスタマイズ環境構築

2009 年 10 月 22 日 木曜日

順番が後先になってしまいましたが、今回は Palm Pre をカスタマイズする為の環境構築について述べます。

これまでの記事で「ソースは普通のテキストエディタで編集出来る」と申し上げてきましたが、今のところPreには、そのような用途向けのエディタアプリは存在しません、ですから、一旦PCに持って来て → 編集して → 書き戻す、という方法でソースを書き換えております。

とりあえず、ボクの場合は novaterm と WinSCP の2つのツールを併用して、書き換え作業をしております。

脱獄りんごやN810のように、root権限でsshを使えれば WinSCP だけで済む話なのですが、残念ながら Palm Pre の場合は、user権限でしかsshを使えないようです。 

※ root権限でsshする方法をご存知の方、いらっしゃいましたら、どうかお教えください m(_ _)m

それでは、Windows PC で、novaterm と WinSCP を使えるようにして、ソースを書き換える作業方法についてレポートいたします。

■novaterm を使えるようにしよう

novaterm は以下よりダウンロード、解凍されたファイルを適当なフォルダへコピーします

novaterm
http://tkgeisel.com/stuff/novaterm-1.zip

Pre 本体のディスクトップ(何もアプリを起動していない状態)から、キーボードで以下のコナミコマンドを入力します

コナミコマンド
upupdowndownleftrightleftrightbastart

すると、非表示になっていた隠しアプリのアイコンが現れます、マシンは DeveloperMode となります

2009-22-10_182745

Pre 付属のUSBケーブルで PC と接続します

「Just Charge」ボタンを選択します

2009-22-10_182800

novaterm を起動し、Connect ボタンを押します
以下のプロンプト(root@castle)が表示されたら成功です

 image32

■WinSCP を使えるようにしよう

novaterm のプロンプトから、以下の呪文を入力します、何だか良く判りません(笑)、これで ssh server が Pre に導入されます
※詳しい解説はココを見て → http://www.webos-internals.org/wiki/Next_steps

呪文は1行ずつ入力してくださいね、どのタイミングか忘れましたが、途中で2回程質問して来ます。

1つ目は、確かこんな感じの質問でした
1.EVDO/WiFi, 2.EVDO, 3.WiFi ?
※ ボクはWiFiを選択しました

2つ目は「ユーザ名」と「パスワード」の入力でした
※ ボクはユーザ名をminiとしました
※ パスワードは「1234」とか、いい加減なものでは駄目で、真面目に入力しないと受け付けてくれません

cd /tmp
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh
sh optware-bootstrap.sh
source /etc/profile.d/optware

cd /tmp
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh
sh quilt-bootstrap.sh

呪文を全部入れ終わったら、Pre を再起動してくださいね

次に、PC側にssh Clientをインストールします
以下のページからWinSCPを入手し、PCへインストールしてください
http://www.tab2.jp/~winscp/

WinSCP の設定です、Pre のIPアドレスは WiFi Preferences で確認出来ます、ポート番号は 222 としてください

image11

無事接続出来るようになりましたか?、これでカスタマイズ環境の構築は完了です

image2
 

■何も恐れる事はありません、ソースを書き換えてみよう

ソースを書き換える手順を説明します
例として「webOSで日本語入力成功!(暫定版)」の記事中で紹介した、◎+Aショートカットを変更する方法を紹介します。

(1) WinSCPで書き換えるファイルをPCへ持って来ます
/usr/palm/frameworks/mojo/builtins/palmInitFramework200_18.js

(2) 適当なテキストエディタで、上記ファイルの該当部分を書き換えます

(3) novaterm で以下のように入力します
mount -o remount,rw /
cd /usr/palm/frameworks/mojo/
chmod 0777 builtins
cd builtins
mv palmInitFramework200_18.js palmInitFramework200_18.js$

(4) WinSCPで先のファイルを Pre へ書き戻します

(5) Pre を再起動します

如何でしょうか?、これで ◎+A が ◎+Enter に変わりましたか?

旧PalmOS で ARMコードにパッチを当てる時など、いつもドキドキしたものです(だって、失敗したら最悪リセットループですもの)
それに比べれば webOS はホントにお気軽です、java script をゴニョゴニョする程度では、余程の事をしない限り、マシンが死亡する事なんて無いのでは・・・
皆さんも Pre を入手されたら、色々とチャレンジしてみてくださいね。

ローカライズ

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

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