0
Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆ 2002 年 9 月 8 日 NTT   DoCoMo Kansai,Inc. Masahiro Watanabe Cobalt Users C...
Windows マシン、 Unix マシンと Cobalt の違い  <ul><li>Cobalt ServerはUNIXの省スペース性と、Webブラウザを使ったGUIでの簡易な操作を兼ね備えたServer Applianceである。 </li...
Sausalitoとはなにか  <ul><li>Sausalito とは、 Cobalt Server のソフトウェアに一貫した操作性を与えるために開発された、新アーキテクチャである。  </li></ul>サーバ管理用デーモン( CCE) 経...
Sausalitoの特長  <ul><li>1)柔軟な機能拡張が可能 </li></ul><ul><ul><li>XML を用いたメニュー自動生成処理( Navigation Manager )により、メニューツリーへのメニュー追加が他の既存の...
Sausalitoの特長(つづき) <ul><li>4)サードパーティのアプリケーションにおいても Sausalito のユーザ認証の利用が可能 </li></ul><ul><ul><li> サードパーティのアプリケーションにおいても、 Nav...
Sausalito版Cobalt Server <ul><li>Sausalito アーキテクチャを採用している Cobalt Server は以下のとおり </li></ul><ul><ul><li>Sun Cobalt Qube3 </li...
Sausalitoの画面構成(ログイン画面) <ul><li>※  この画面は MMQUBE2 のものである。 </li></ul>test.cobalt*qube.org
Sausalitoの画面構成(ログイン後) <ul><li>※  この画面は MMQUBE2 のものである。 </li></ul>
Sausalito 対応アプリケーション作成の準備 <ul><li>用意するもの </li></ul><ul><ul><li>Sausalito アーキテクチャのサーバ </li></ul></ul><ul><ul><ul><li>管理者権限が...
Sausalito 対応アプリケーション作成の準備 <ul><li>あるとうれしい予備知識(なくても可?) </li></ul><ul><ul><li>Telnet および Shell を使ったことがある </li></ul></ul><ul>...
Sausalito のディレクトリ構成(後で使うよ) /usr/ share/locale/ ja/LC_MESSAGES/ ***.mo String ファイル en/LC_MESSAGES/ ***.mo ・・・ sausalito/ co...
本日のお題 <ul><li>課題1) Sausalito メニューに“ HelloWorld” アプリを追加する </li></ul><ul><li>課題2) Sausalito のメッセージを大阪弁に変更する </li></ul>
課題1:メニュー追加 <ul><li>  Sausalito メニューに“ HelloWorld” アプリを追加しよう </li></ul>
STEP1:メニューの構造を探ってみる <ul><li>/usr/sausalito/ui/menu の下を覗く </li></ul>[admin admin]$ cd /usr/sausalito/ui/menu [admin menu]$ ...
STEP2:xmlファイルの構造を推測する <ul><li>① 既存のxmlファイルを見てみる </li></ul><ul><ul><li>ソース1: monitor.xml </li></ul></ul><ul><ul><li>ソース2: a...
STEP2:続き <ul><li>② xmlファイルの構造を推測する (id 属性) </li></ul><ul><ul><li>item  エレメントの id 属性は自分自身の ID を指しているらしい。 </li></ul></ul><ul...
STEP2:続き <ul><li>③ xmlファイルの構造を推測する (order 属性) </li></ul><ul><ul><li>parent エレメントの order 属性は同じ親に属しているものの間の順序を指しているらしい。 </li...
STEP2:続き <ul><li>④ xmlファイルの構造を推測する (label,description 属性) </li></ul><ul><li>monitor.xml の item エレメントの </li></ul><ul><li>la...
STEP2:続き <ul><li>⑤ xmlファイルの構造を推測する (url 属性) </li></ul><ul><ul><li>amStatus.xml  ファイルの item エレメントの URL 属性の URL を左上のロゴのビットマッ...
STEP2:まとめ <ul><li>xmlファイルの構造 </li></ul>amStatus.xml <item id=&quot;base_amStatus&quot; label=&quot;[[base-am.amStatusMenuN...
STEP3:メニューツリーを確認する <ul><li>管理者ログイン時のメニューツリーを知る </li></ul><ul><ul><ul><li>メニューツリーのTOPはrootである。 </li></ul></ul></ul>①  ② ③ ④...
STEP4: 課題の Hello メニューをチェックする <ul><ul><ul><li>Hello メニューは「プログラム」タブの中にある。 </li></ul></ul></ul><ul><ul><ul><ul><li>base_progr...
STEP5:Helloメニューを作成する <ul><li>これまでの情報を用いて、Helloメニューを作成する </li></ul>hello.xml helloworld.xml <item id=&quot;base_hello&quot;...
STEP5:続き <ul><li>どこに XML ファイルを置くか? </li></ul><ul><ul><li>Sausalito は /usr/sausalito/ui/menu の下のフォルダを再帰的に探索する。 </li></ul></...
STEP6:hello.htmを作成する <ul><li>メニューからリンクされる HTML ファイルを作成する </li></ul><ul><li>hello.htm </li></ul><ul><li>HTML ファイルの配置場所は /us...
課題1:完成!
課題2:メッセージの書き換え <ul><li>課題2) Sausalito のメッセージを大阪弁に変更しよう </li></ul><ul><ul><li>電源切断手順画面を大阪弁に変更する </li></ul></ul>
STEP1:メッセージのありかを探す <ul><li>/usr/share/locale/ja/LC_MESSAGES/ の下を覗く </li></ul><ul><li>*.mo というファイルが多数存在する。 </li></ul><ul><l...
STEP2:Stringファイルとは <ul><li>String ファイルとは、文字列にタグ (ID) をつけて格納したもの。 </li></ul><ul><li>String ソースファイル (*.po) から生成される。 </li></u...
STEP3:Stringソースファイルの書式 <ul><li>  msgid:  メッセージの ID をあらわす </li></ul><ul><li>msgstr:  メッセージの文字列。日本語可。文字コードは </li></ul><ul><l...
STEP4:msgfmt,msgunfmtの使い方 <ul><li>msgfmtコマンド </li></ul><ul><ul><li>書式:  msgfmt  xxx.po  [  -o  xxx.mo  ] </li></ul></ul><u...
STEP5:*mo ファイルから *po ファイルを作成 <ul><li>Stringファイルから、Stringソースファイルを作成する </li></ul>[root LC_MESSAGES]#  msgunfmt base-power.mo...
STEP6:*po ファイルをPCに転送する <ul><ul><li>STEP5 で生成した base-power.po を FFFTP を利用してPCに転送する。 </li></ul></ul><ul><ul><ul><li>ASCII モー...
STEP7:*.po ファイルを編集する <ul><ul><li>msgunfmt コマンドで生成された  *.po ファイルは、文字列が長い場合80文字で改行されているため、文字列を一本にする。 </li></ul></ul>
STEP7:続き(関西人用) <ul><li>文字列をチェックし、変な日本語をすべて大阪弁に書き換える。 </li></ul>編集が完了したら、 base-power-osaka.po というファイル名で保存する。
STEP7:続き(関西人以外用) <ul><li>インターネット上の大阪弁変換フィルタ等を用いて、メッセージを大阪弁に変換する。 </li></ul><ul><ul><li>例: http://www.yorosiku.net/yan/imod...
STEP8: 編集後の *.po ファイルをアップする。 <ul><ul><li>編集後の base-power-osaka.po ファイルをサーバにFTPする。 </li></ul></ul><ul><ul><ul><li>・ ASCII モ...
STEP9:*.moファイルを作成し入替える <ul><li>書き換えた、 base-power-osaka.po ファイルを元に、 base-power.mo ファイルを作成し、元のファイルと入替えを行う。 </li></ul>注意:自分で試...
課題2:完成!
おまけ1:メニュ内でStringファイルを使う <ul><li>hello.po </li></ul><ul><li>hello.xml </li></ul><ul><li>helloworld.xml </li></ul>/usr/share...
おまけ1:出力結果
おまけ2:日本語文字が化ける場合 <ul><li>S-JIS 漢字中に含まれる 0x5c() キャラクターコードをエスケープすることにより回避する。 </li></ul><ul><ul><li>enadd.pl :漢字中に 0 x 5c が含ま...
おまけ3:メニューツリーのrootを変える <ul><li>ログイン後特定のメニューを root にして、 Navigation Manager を立ち上げる </li></ul><ul><li>http:// サーバ :444/ login....
おまけ3:結果
Upcoming SlideShare
Loading in...5
×

1MB

486

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
486
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "1MB"

  1. 1. Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆ 2002 年 9 月 8 日 NTT   DoCoMo Kansai,Inc. Masahiro Watanabe Cobalt Users Conference2002/Summer
  2. 2. Windows マシン、 Unix マシンと Cobalt の違い <ul><li>Cobalt ServerはUNIXの省スペース性と、Webブラウザを使ったGUIでの簡易な操作を兼ね備えたServer Applianceである。 </li></ul>可( GUI ) 可( CUI ) 不可 遠隔メンテナンス GUI ( LCD コンソールおよび Web ブラウザ) CUI (コマンドラインインターフェース) GUI (ウィンドウシステム) 操作の手段 不要( LCD コンソールあり) 不要(接続可) 要 ディスプレイおよびキーボード Cobalt 一般的な Unix Windows
  3. 3. Sausalitoとはなにか <ul><li>Sausalito とは、 Cobalt Server のソフトウェアに一貫した操作性を与えるために開発された、新アーキテクチャである。 </li></ul>サーバ管理用デーモン( CCE) 経由でアクセス Perl にてアクセス システムリソースへのアクセス 表示されるメッセージを String ファイルとして独立させ、 String ファイルを言語毎に用意することにより対応(ソースは各国語版同一) 各国版毎に Perl のソースを書き換えてリリース 国際版対応 Sausalito 内の独自認証を利用(ユーザ権限ごとにメニュー構成を変更することが可能) HTTP の BASIC 認証を利用 管理画面の認証方法 XML を使って自動生成されたメニューと、 PHP の UIFC ライブラリを利用して作成した画面から構成 画面ごとに Perl の CGI で作成 管理画面の構成 Sausalito 従来の Cobalt
  4. 4. Sausalitoの特長 <ul><li>1)柔軟な機能拡張が可能 </li></ul><ul><ul><li>XML を用いたメニュー自動生成処理( Navigation Manager )により、メニューツリーへのメニュー追加が他の既存のメニューに影響を与えずに可能 </li></ul></ul><ul><li>2)各国語版パッチリリースに要する期間の短縮および信頼性の向上 </li></ul><ul><ul><li>各国語版間でソースが共通であるため、シンプルなバージョン管理が可能 </li></ul></ul><ul><li>3)ユーザインターフェースの Look & Feel の統一性の保持が可能 </li></ul><ul><ul><li>ユーザインターフェース用 API ( UIFC )が公開されているため、サードパーティのアプリケーションにおいても Cobalt オリジナル機能と同一の Look & Feel を実現可能 </li></ul></ul>
  5. 5. Sausalitoの特長(つづき) <ul><li>4)サードパーティのアプリケーションにおいても Sausalito のユーザ認証の利用が可能 </li></ul><ul><ul><li> サードパーティのアプリケーションにおいても、 Navigation Manager および UIFC を用いることにより、 Sausalito のユーザ認証を利用可能(独自の認証機構を準備する必要がない) </li></ul></ul><ul><li>5) Sausalito 対応機種間でのアプリケーションの移植が容易 </li></ul><ul><ul><li> ハードウェアやシステム情報へのアクセス用の API ( CCE )が提供されていることにより、機種間のアプリケーションの移植が従来に比べ容易であると思われる。 </li></ul></ul>
  6. 6. Sausalito版Cobalt Server <ul><li>Sausalito アーキテクチャを採用している Cobalt Server は以下のとおり </li></ul><ul><ul><li>Sun Cobalt Qube3 </li></ul></ul><ul><ul><li>NTT DoCoMo MMQUBE2   (OEM 版 Qube3) </li></ul></ul><ul><ul><li>Sun Cobalt Qube3 Plus </li></ul></ul><ul><ul><li>Sun Cobalt RaQ550 </li></ul></ul><ul><ul><li>SunCobalt Control Station </li></ul></ul><ul><li>(2002 年 9 月現在) </li></ul><ul><li>備考: </li></ul><ul><li>  Sun Cobalt XTR は部分的に Sausalito が使われている。 </li></ul>
  7. 7. Sausalitoの画面構成(ログイン画面) <ul><li>※  この画面は MMQUBE2 のものである。 </li></ul>test.cobalt*qube.org
  8. 8. Sausalitoの画面構成(ログイン後) <ul><li>※  この画面は MMQUBE2 のものである。 </li></ul>
  9. 9. Sausalito 対応アプリケーション作成の準備 <ul><li>用意するもの </li></ul><ul><ul><li>Sausalito アーキテクチャのサーバ </li></ul></ul><ul><ul><ul><li>管理者権限が必要 </li></ul></ul></ul><ul><ul><li>IE5 以上が動作する PC </li></ul></ul><ul><ul><li>Telnet クライアントフト </li></ul></ul><ul><ul><ul><li>TeraTerm( フリーウェア ) がおすすめ </li></ul></ul></ul><ul><ul><li>FTP クライアントソフト </li></ul></ul><ul><ul><ul><li>FFFTP( フリーウェア ) がおすすめ </li></ul></ul></ul><ul><ul><li>tar,gzip,rpm に対応した圧縮・解凍ソフト </li></ul></ul><ul><ul><ul><li>ExpLzh( シェアウェア )+tar32.dll がおすすめ </li></ul></ul></ul><ul><ul><li>テキストエディタ </li></ul></ul><ul><ul><ul><li>秀丸 ( シェアウェア ) がおすすめ </li></ul></ul></ul>
  10. 10. Sausalito 対応アプリケーション作成の準備 <ul><li>あるとうれしい予備知識(なくても可?) </li></ul><ul><ul><li>Telnet および Shell を使ったことがある </li></ul></ul><ul><ul><li>html のソースを見たり書いたことがある </li></ul></ul><ul><ul><li>xml について知っている </li></ul></ul><ul><ul><li>rpm の SPEC ファイルを書いたことがある </li></ul></ul><ul><ul><li>Perl 、 PHP 、 Awk のソースを見たことがある </li></ul></ul><ul><ul><li>EUC 、 SJIS コードとは何のことか知っている </li></ul></ul><ul><ul><li>vi 、 more を使ったことがある </li></ul></ul><ul><ul><li>‘ /’ と書いて root と読める </li></ul></ul>
  11. 11. Sausalito のディレクトリ構成(後で使うよ) /usr/ share/locale/ ja/LC_MESSAGES/ ***.mo String ファイル en/LC_MESSAGES/ ***.mo ・・・ sausalito/ constructor/ destructor/ handler/ schema/ ***.pl ***.pl ***.schema ***.pl CCE 関連ファイル (今回は作成しない) ui/ menu/ web/ style/ conf/ libPhp/ bin/ lib/ ・・・ Sausalito システムディレクトリ (ユーザは直接使用しない) ***.xml ***. php ,html,pl ***.xml menu 定義ファイル CGI ファイル Style ファイル
  12. 12. 本日のお題 <ul><li>課題1) Sausalito メニューに“ HelloWorld” アプリを追加する </li></ul><ul><li>課題2) Sausalito のメッセージを大阪弁に変更する </li></ul>
  13. 13. 課題1:メニュー追加 <ul><li>  Sausalito メニューに“ HelloWorld” アプリを追加しよう </li></ul>
  14. 14. STEP1:メニューの構造を探ってみる <ul><li>/usr/sausalito/ui/menu の下を覗く </li></ul>[admin admin]$ cd /usr/sausalito/ui/menu [admin menu]$ ls -F VM/ base/ ioffice/ live/ palette/ [admin menu]$ cd base [admin base]$ ls -F addressbook/ carmel/ firewall/ network/ telnet/ wizard/ am/ dhcpd/ ftp/ power/ time/ workgroup/ apache/ disk/ import/ quotastats/ user/ appleshare/ dns/ ldap/ snmp/ webmail/ backup/ email/ maillist/ swupdate/ webstats/ cache/ fileshare/ multidrop/ system/ winshare/ [admin base]$ cd am [admin am]$ ls -F amSettings.xml amStatus.xml monitor.xml monitorLight.xml
  15. 15. STEP2:xmlファイルの構造を推測する <ul><li>① 既存のxmlファイルを見てみる </li></ul><ul><ul><li>ソース1: monitor.xml </li></ul></ul><ul><ul><li>ソース2: amStatus.xml </li></ul></ul><item id=&quot;base_monitor&quot; label=&quot;[[base-am.activeMonitor]]&quot; description=“[[base-am.activeMonitor_help]]”   > <parent id=&quot;base_administration&quot; order=&quot;80&quot;/> </item> <item id=&quot;base_amStatus&quot; label=&quot;[[base-am.amStatusMenuName]]&quot; description=&quot;[[base-am.amStatusMenuDesc]]&quot; url=“/base/am/amStatus.php”   > <parent id=&quot;base_monitor&quot; order=&quot;10&quot;/> </item>
  16. 16. STEP2:続き <ul><li>② xmlファイルの構造を推測する (id 属性) </li></ul><ul><ul><li>item エレメントの id 属性は自分自身の ID を指しているらしい。 </li></ul></ul><ul><ul><li>parent エレメントの id 属性は自分の親の ID を指しているらしい。 </li></ul></ul>base_administration base_monitor base_amStatus
  17. 17. STEP2:続き <ul><li>③ xmlファイルの構造を推測する (order 属性) </li></ul><ul><ul><li>parent エレメントの order 属性は同じ親に属しているものの間の順序を指しているらしい。 </li></ul></ul><ul><ul><li>monitor.xml の parent エレメントの order 属性を 80 から25に変更してみる </li></ul></ul>アクティブモニタのメニューの 場所が移動した。 注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず     バックアップしてから行うこと!
  18. 18. STEP2:続き <ul><li>④ xmlファイルの構造を推測する (label,description 属性) </li></ul><ul><li>monitor.xml の item エレメントの </li></ul><ul><li>label description 属性を右のよ </li></ul><ul><li>うに書き換えてみる </li></ul>注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず     バックアップしてから行うこと! メニュータイトルとアクティブヘルプが書き換わった! <item id=&quot;base_monitor&quot; label=&quot;base_monitor の Label だよ &quot; description=&quot;base_monitor の description だよ &quot;> <parent id=&quot;base_administration&quot; order=&quot;80&quot;/> </item>
  19. 19. STEP2:続き <ul><li>⑤ xmlファイルの構造を推測する (url 属性) </li></ul><ul><ul><li>amStatus.xml ファイルの item エレメントの URL 属性の URL を左上のロゴのビットマップの URL に書き換えてみる。 </li></ul></ul><ul><ul><ul><li>※ URL のドキュメントルートは /usr/sausalito/ui/web である。 </li></ul></ul></ul>注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず     バックアップしてから行うこと! amStatus.xml クリックすると、ロゴが表示された! <item id=&quot;base_amStatus&quot; label=&quot;[[base-am.amStatusMenuName]]&quot; description=&quot;[[base-am.amStatusMenuDesc]]&quot; url=&quot;/libImage/topLogo.gif“ > <parent id=&quot;base_monitor&quot; order=&quot;10&quot;/> </item>
  20. 20. STEP2:まとめ <ul><li>xmlファイルの構造 </li></ul>amStatus.xml <item id=&quot;base_amStatus&quot; label=&quot;[[base-am.amStatusMenuName]]&quot; description=&quot;[[base-am.amStatusMenuDesc]]&quot; url=“/base/am/amStatus.php”   > <parent id=&quot;base_monitor&quot; order=&quot;10&quot;/> </item> メニューの並び(小さいほど上または、左に表示される。) order parent 自分がぶら下がるメニュー項目 ID id parent メニュー項目クリック時に表示される URL url item アクティブヘルプに表示される文字列(日本語も使用可。 S-JIS で指定する必要がある。) description item メニューに表示される文字列(日本語も使用可。 S-JIS で指定する必要がある。) label item 自分自身のメニュー項目 ID  (すべてのメニュー項目でユニークである必要がある) id item 意味 属性 エレメント
  21. 21. STEP3:メニューツリーを確認する <ul><li>管理者ログイン時のメニューツリーを知る </li></ul><ul><ul><ul><li>メニューツリーのTOPはrootである。 </li></ul></ul></ul>①  ② ③ ④  ⑤ ⑥ ⑦ root root ① base_administration ② base_software ③ base_programs ④ base_personalProfile ⑤ base_updateLight ⑥ base_monitorLight ⑦ base_logout
  22. 22. STEP4: 課題の Hello メニューをチェックする <ul><ul><ul><li>Hello メニューは「プログラム」タブの中にある。 </li></ul></ul></ul><ul><ul><ul><ul><li>base_programs の子メニューとなる </li></ul></ul></ul></ul><ul><ul><ul><li>HelloWorld メニューは「 Hello 」メニューの中にある </li></ul></ul></ul><ul><ul><ul><ul><li>Hello メニューの ID の子メニューとなる。 </li></ul></ul></ul></ul><ul><ul><ul><li>HelloWorld アプリケーションは「 HelloWorld 」メニューから呼び出される。 </li></ul></ul></ul>base_programs base_hello base_helloWorld
  23. 23. STEP5:Helloメニューを作成する <ul><li>これまでの情報を用いて、Helloメニューを作成する </li></ul>hello.xml helloworld.xml <item id=&quot;base_hello&quot; label=“Hello&quot; description=“Hello メニューです。”  > <parent id=&quot;base_administration&quot; order=“21&quot;/> </item> <item id=&quot;base_helloWorld&quot; label=“HelloWorld” description=“HelloWorld アプリケーションです。 &quot; url=“hello/hello.htm”   > <parent id=&quot;base_hello&quot; order=&quot;10&quot;/> </item>
  24. 24. STEP5:続き <ul><li>どこに XML ファイルを置くか? </li></ul><ul><ul><li>Sausalito は /usr/sausalito/ui/menu の下のフォルダを再帰的に探索する。 </li></ul></ul><ul><ul><li>アプリごとにxmlファイル配置のためのディレクトリを分けることが望ましい。 </li></ul></ul><ul><ul><ul><li>今回は、 ui/menu の下に、 hello というディレクトリを作成し、その中に配置する。 </li></ul></ul></ul>注意: Sausalito は、シンボリックリンクのディレクトリは探索    しないため、実体のディレクトリ内に入れる必要がある
  25. 25. STEP6:hello.htmを作成する <ul><li>メニューからリンクされる HTML ファイルを作成する </li></ul><ul><li>hello.htm </li></ul><ul><li>HTML ファイルの配置場所は /usr/sausalito/ui/web/hello/ </li></ul><HTML> <body> Hello   World アプリケーションの出力です。 </body> </html>
  26. 26. 課題1:完成!
  27. 27. 課題2:メッセージの書き換え <ul><li>課題2) Sausalito のメッセージを大阪弁に変更しよう </li></ul><ul><ul><li>電源切断手順画面を大阪弁に変更する </li></ul></ul>
  28. 28. STEP1:メッセージのありかを探す <ul><li>/usr/share/locale/ja/LC_MESSAGES/ の下を覗く </li></ul><ul><li>*.mo というファイルが多数存在する。 </li></ul><ul><li>これらは String ファイルと呼ばれるものである。 </li></ul>admin admin]$ cd /usr/share/locale/ja/LC_MESSAGES/ [admin LC_MESSAGES]$ ls base-fileshare.mo base-sys.mo base-firewall.mo base-system.mo base-ftp.mo base-telnet.mo base-import.mo base-time.mo base-lcd.mo base-user.mo base-ldap.mo base-webmail.mo adamnet.mo base-maillist.mo base-webstats.mo base-addressbook.mo base-memory.mo base-winnetwork.mo base-am.mo base-modem.mo base-winshare.mo base-apache.mo base-multidrop.mo base-wizard.mo base-appleshare.mo base-network.mo base-workgroup.mo base-backup.mo gnupg.mo base-cache.mo base-power.mo palette.mo base-carmel.mo base-power.mo.org sharutils.mo base-cce.mo base-quotastats.mo swatch.mo base-dhclient.mo base-sauce-basic.mo tar.mo base-dhcpd.mo base-services.mo textutils.mo base-disk.mo base-snmp.mo trueBlue.mo base-dns.mo base-ssl.mo util-linux.mo base-email.mo base-swupdate.mo [admin LC_MESSAGES]$
  29. 29. STEP2:Stringファイルとは <ul><li>String ファイルとは、文字列にタグ (ID) をつけて格納したもの。 </li></ul><ul><li>String ソースファイル (*.po) から生成される。 </li></ul><ul><li>国際化ライブラリにて使用される。 </li></ul>String ソースファイル (*.po) String ファイル (*.mo) encode decode msgfmt コマンド msgunfmt コマンド
  30. 30. STEP3:Stringソースファイルの書式 <ul><li>  msgid: メッセージの ID をあらわす </li></ul><ul><li>msgstr: メッセージの文字列。日本語可。文字コードは </li></ul><ul><li>         S-JIS を使用する。 </li></ul>msgid “ ユニークな ID1” msgstr “ メッセージ 1”   ( 空行 ) msgid “ ユニークな ID2” msgstr “ メッセージ 2”    ( 空行 )   ・・・・・・ msgid “ ユニークな IDn” msgstr “ メッセージ n”
  31. 31. STEP4:msgfmt,msgunfmtの使い方 <ul><li>msgfmtコマンド </li></ul><ul><ul><li>書式: msgfmt xxx.po  [ -o xxx.mo ] </li></ul></ul><ul><ul><li>String ソースファイル  xxx.po  から、 String ファイル  xxx.mo を生成する。 -o オプションが無指定の場合は  message  というファイル名のファイルに出力する。 </li></ul></ul><ul><li>msgunfmt コマンド </li></ul><ul><ul><li>書式: msgunfmt xxx.mo [ -o xxx.po] </li></ul></ul><ul><ul><li>String ファイル  xxx.mo から、 String ファイル xxx.po  を生成する。 -o オプションが無指定の場合は、標準出力に出力する。 </li></ul></ul>
  32. 32. STEP5:*mo ファイルから *po ファイルを作成 <ul><li>Stringファイルから、Stringソースファイルを作成する </li></ul>[root LC_MESSAGES]# msgunfmt base-power.mo -o /tmp/base-power.po [root LC_MESSAGES]# head /tmp/base-power.po msgid &quot;askRebootConfirmation&quot; msgstr &quot; サーバを再起動してよろしいですか? &quot; msgid &quot;power&quot; msgstr &quot; 電源 &quot; msgid &quot;powerHelp&quot; msgstr &quot; サーバを再起動できます。 &quot; msgid &quot;reboot“ ・・・・・
  33. 33. STEP6:*po ファイルをPCに転送する <ul><ul><li>STEP5 で生成した base-power.po を FFFTP を利用してPCに転送する。 </li></ul></ul><ul><ul><ul><li>ASCII モードで転送する。 </li></ul></ul></ul><ul><ul><ul><li>文字コードは、変換しない。 </li></ul></ul></ul>
  34. 34. STEP7:*.po ファイルを編集する <ul><ul><li>msgunfmt コマンドで生成された  *.po ファイルは、文字列が長い場合80文字で改行されているため、文字列を一本にする。 </li></ul></ul>
  35. 35. STEP7:続き(関西人用) <ul><li>文字列をチェックし、変な日本語をすべて大阪弁に書き換える。 </li></ul>編集が完了したら、 base-power-osaka.po というファイル名で保存する。
  36. 36. STEP7:続き(関西人以外用) <ul><li>インターネット上の大阪弁変換フィルタ等を用いて、メッセージを大阪弁に変換する。 </li></ul><ul><ul><li>例: http://www.yorosiku.net/yan/imode/iosaka.html </li></ul></ul><ul><ul><li>を用いる。 </li></ul></ul>編集が完了したら、 base-power-osaka.po というファイル名で保存する。
  37. 37. STEP8: 編集後の *.po ファイルをアップする。 <ul><ul><li>編集後の base-power-osaka.po ファイルをサーバにFTPする。 </li></ul></ul><ul><ul><ul><li>・ ASCII モードで転送する。 </li></ul></ul></ul><ul><ul><ul><li>・文字コードは、変換しない。 </li></ul></ul></ul>
  38. 38. STEP9:*.moファイルを作成し入替える <ul><li>書き換えた、 base-power-osaka.po ファイルを元に、 base-power.mo ファイルを作成し、元のファイルと入替えを行う。 </li></ul>注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず     バックアップしてから行うこと! [root /tmp]# msgfmt base-power-osaka.po -o base-power.mo [root /tmp]# cd /usr/share/locale/ja/LC_MESSAGES/ [root LC_MESSAGES]# mv base-power.mo base-power.mo.org [root LC_MESSAGES]# cp /tmp/base-power.mo . [root LC_MESSAGES]#
  39. 39. 課題2:完成!
  40. 40. おまけ1:メニュ内でStringファイルを使う <ul><li>hello.po </li></ul><ul><li>hello.xml </li></ul><ul><li>helloworld.xml </li></ul>/usr/share/locale/ja/ LC_MESSAGES/hello.mo *.mo ファイル名 msgid msgid &quot;hellogroup&quot; msgstr &quot;Hello でっせ &quot; msgid &quot;helloworldgroup&quot; msgstr &quot;HelloWorld どすえ &quot; <item id=&quot;base_hello&quot; label=&quot;[[hello.hellogroup]]&quot; description=&quot;HelloWorld メニューです &quot; type=&quot;monitorOn&quot; > <parent id=&quot;base_programs&quot; order=&quot;21&quot;/> </item> <item id=“base_hello_helloApp” label=“[[hello.helloworldgroup]]” description=“HelloWorld でっせ。よろしゅうたのむわ” url=&quot;/hello/hello.htm&quot; > <parent id=&quot;base_hello&quot; order=&quot;21&quot;/> </item>
  41. 41. おまけ1:出力結果
  42. 42. おまけ2:日本語文字が化ける場合 <ul><li>S-JIS 漢字中に含まれる 0x5c() キャラクターコードをエスケープすることにより回避する。 </li></ul><ul><ul><li>enadd.pl :漢字中に 0 x 5c が含まれている場合、その前に 0x5c を挿入する。( msgfmt の前に使用 ) </li></ul></ul><ul><ul><li>endel.pl :漢字中に 0 x 5c が 2 回連続して含まれている場合、 0x5c をひとつ削る。( msgunfmt の後に使用 ) </li></ul></ul>enadd.pl endel.pl #!/usr/bin/perl while(<>){ s//g; print; } #!/usr/bin/perl while(<>){ s//g; print; }
  43. 43. おまけ3:メニューツリーのrootを変える <ul><li>ログイン後特定のメニューを root にして、 Navigation Manager を立ち上げる </li></ul><ul><li>http:// サーバ :444/ login.php?target= </li></ul><ul><li>/nav/cList.php%3Froot= メニュー ID %3FCommFrame= 追加スクリプト </li></ul><ul><li>例 :http://192.168.0.30:444/login.php?target=/nav/cList.php%3Froot=base_administration </li></ul>
  44. 44. おまけ3:結果
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×