ひらがな環境の作り方(旧バージョンの翻訳データの移行)

Squeakland2005以前のバージョンでメンテナンス・使用していた翻訳データがあるかもしれません。しかしOLPC Etoysでは翻訳エンジンの設計が変更されたため、いままでの手順でそのままOLPC Etoys (またはSqueakland OLPC)流用することができません。これを持っていくための手順についてまとめてみます。(チュートリアルのネタの下書きです)

ここでは、蜂須賀さんが作られていたひらがなSqueakを例題としています。

材料の準備

  • チャンクフォーマットで書き出した翻訳データ。既にイメージ中にロードされている翻訳データは、LanguageEditorを使えば書き出すことができます。蜂須賀さんが作られたひらがなのデータはこちらです。
  • 作業用に使う OLPC Etoysの開発者用イメージと実行環境。最新のパッチまであげておきます。

予備知識:翻訳エンジンの設計変更の概要

従来のSqueakでは、NaturalLanguageTranslator というオブジェクトが翻訳を取り仕切っていました。このエンジンは翻訳データをイメージ内部の辞書として保持していました。

OLPC Etoysでは、新たにGetTextTranslatorというエンジンが開発されました。辞書はイメージの外部に置いたMOファイルで管理しており、検索は gettextをエミュレートしています。
従来の翻訳エンジンは InternalTranslator に改名されて残っています。
これら2種類のエンジンをまとめる抽象クラスとして NaturalLanguageTranslatorが新たに導入されました。名前は昔と同じですがまったく役割が異なるので注意してください。

イメージ内の辞書をメンテナンスするツール LanguageEditorは 現時点ではまだ残っています。ただしメンテナンスの対象は、InternalTranslator側です。翻訳データのメンテナンスがgettext系に移行すると使わないので、将来イメージから取り除かれるかもしれません。

翻訳データの下ごしらえとロード

旧バージョンで書き出した翻訳データは、先頭にあるDoItの記述を上記のクラス構造の変更にあわせてあらかじめ修正しておく必要があります。
修正前:

'Translation dictionary'!
'From Squeakland 3.8-05 of 7 September 2005 [latest update: #527] on 12 March 2006 at 8:23:41 am'!
!(NaturalLanguageTranslator localeID: (LocaleID isoString: 'ja-hiragana'))!
('          rest          '->'          きゅうふ')!
('  soft '->'  おんりょうしょう')!||<

修正後:

'Translation dictionary'!
'From Squeakland 3.8-05 of 7 September 2005 [latest update: #527] on 12 March 2006 at 8:23:41 am'!
!(InternalTranslator localeID: (LocaleID isoString: 'ja-hiragana'))!
('          rest          '->'          きゅうふ')!
('  soft '->'  おんりょうしょう')!||<

その後、OLPC Etoysの中で、LanguageEditorを起動して、修正後の翻訳データをロードします。
この時点でロードされた言語は選択可能にはなりませんので、いったんイメージを上書
き保存してください。再起動後はロードした言語も選択可能になります。

この状態でも使えないことはないですが、未来につなげるため、gettext形式に移行することをお勧めします(次のステップ)

翻訳データをPO形式で書き出す

まず、InternalTranslatorの内部辞書から、gettextのPOファイルに書き出します。

  • 翻訳ロード済みのイメージで、書き出したい言語を選択します。
  • ワークスペースを開き、以下のコマンドを実行します。
GetTextExporter2 new exportTranslator: (InternalTranslator newLocaleID: LocaleID current).

そうすると、po/etoysフォルダに、ロケール名.po というファイルが作成されているはずです。

翻訳データのメンテナンス

POファイルは、標準のgettextの形式ですから、POを扱える任意のツールでメンテナンスできます。また、あなたの言語の翻訳データにマージしたい場合は、etoysチームに依頼してください。
POファイルはテキストファイルですから直接エディタで閲覧編集することもできます。ただLinux以外のマシンでPOファイルを直接操作する場合、ファイル形式(UTF-8, 改行はLF)を壊さないように注意してください。

翻訳データのコンパイルと利用

gettext形式で作成した翻訳データをEtoysから使います。
まず翻訳データをコンパイルします。Windows機であればcygwin環境があればコンパイルできます。(MOのファイル名はetoys.moとしてください)

msgfmt -o etoys.mo POファイル名

次にコンパイルしたMOファイルを実行環境におきます。

  • XO上であれば、/usr/share/etoys/lang/言語コード/LC_MESSAGES 以下
  • 他の環境であれば、etoysのイメージが置いてある場所の下の lang/言語コード/LC_MESSAGE 以下

上の場所にMOファイルを置けば、特別な組み込み作業をしなくても、Etoysが起動時に自動的に認識し、使えるようになります。