[PR]口が臭う人の共通点…:臭いが見える対策は?


○ Caminoのローカライズ
2006-01-11 文字列発見の項を追加、いろいろと訂正

 ローカライズに必要なツール
 はじめに:MacOSXの言語リソースの仕組み
 基本的な方法1:nibファイルのローカライズ
 基本的な方法2:Localizable.stringsのローカライズ
 注意点:CaminoViews.paletteのインストール
 AppleGlot:はじめに
  ステップ1 ローカライズ環境フォルダの作成
  ステップ2 Initial Pass
   ※ Initial Passの動作内容
  ステップ3 .wg ファイルの編集
  ステップ4 Incremental Pass と Final Pass
  ステップ5 生成されたアプリケーションの修正
  ステップ6 次回のローカライズ

 AppleGlot Glossary:<origin>タグについて
 AppleGlot Glossary:.lg ファイルの使い方
 .stringsファイルに書き出されていない文字列を発見する


○ ローカライズに必要なツール

CaminoはCocoaアプリケーションなので、MacOSXのCocoaローカライズツールを使います。 リンク:Apple ローカライズツール

○ はじめに:MacOSXの言語リソースの仕組み


res_folder
MacOSXのCocoaアプリケーションはパッケージ形式になっており、Finderのコンテキストメニューで「パッケージの内容を表示...」すると中身を見ることができます。
この中身のうち、「English.lproj」や「Japanese.lproj」などの言語名を冠した .lproj フォルダが言語リソースを含むフォルダです。
環境設定の“言語環境”で、最優先になっている言語のリソースが自動選択されます。
つまり、Caminoを日本語化する場合は、適切な「Japanese.lproj」を作ればよいわけです。




prefpane
Caminoは、 Contents/PreferencePanes 内の 各prefpane もそれぞれ言語リソースを内蔵しています。
これらについても同様に「Japanese.lproj」を作らねばなりません。






さらに、Contents/Plugins/PrintPDE.plugin も言語リソースを内蔵しています。
これも「Japanese.lproj」を作らねばなりません。




○ 基本的な方法1:nibファイルのローカライズ


copy res まず、 Contents/Resources フォルダ内に「Japanese.lproj」という名前のフォルダを作ります。
次に、 English.lproj 内のファイルを Japanese.lproj にコピーします。
後は、Japanese.lproj 内のファイルをローカライズしていきます。






nib ファイルはInterface Builderを使ってローカライズします。
申し訳ありませんが、Interface Builder の詳しい説明は省略します。(説明していると膨大な量になるため)
使用上のヒントのみ書いておきます。




○ 基本的な方法2:Localizable.stringsのローカライズ

Localizable.stringsはXcodeを使ってローカライズします。



“=”の左側は変更せずにおき、右側の文字列をローカライズします。
例を挙げると、
 "ChooseDirectoryOKButton" = "Select";
 を
 "ChooseDirectoryOKButton" = "選択";
のように変更します。



○ 注意点:CaminoViews.paletteのインストール

Camino1.0では独自のInterface Builderパレットが追加されており、それをインストールしておかないとローカライズが行えない部分が出てきます。
Caminofreak Indexにある「Camino1.0ローカライズ用IBPallete」をダウンロードしてインストールしてください。


○ AppleGlot:はじめに

AppleGlotとは、Appleが配布しているローカライズツールです。
ローカライズ可能文字列の抜き出し、アプリの差分取りが可能で、うまく使えばローカライズを省力化することができます。
ただし、この「うまく使えば」というのが重要です。
AppleGlotはテキストベースでローカライズを行う設計になっており、Interface Builderのように直感的なローカライズができません。GUIパーツのサイズ・位置調整などもできません。
逆に、Interface BuilderとXcodeを使う方法では手作業の部分が多くなり、アプリケーションがアップデートされた時などの再ローカライズに時間がかかります。

まずは、Interface BuilderとXcodeを使ってローカライズを一通り行い、次にAppleGlotを導入するのが良いでしょう。
以下に、AppleGlotを併用して効率よくローカライズを進める方法について説明します。


○ AppleGlot:ステップ1 ローカライズ環境フォルダの作成
  1. 適当な場所に、ローカライズ環境を保存するための空きフォルダを作ります。
  2. AppleGlotを起動します。


    まず、環境設定の “General”で、
    「Automatically set the Base and Base Target Localse for a new project」をONに、
    Base Locale を “English” に、
    Target Locale を “Japanese” にしておきます。




  3. さらに、環境設定の“Glossary”で、Glossary EncodingをUTF-8にしておきます。


  4. 次に、Toolsメニューの「Create Empty Environment...」を選択し、先ほど作った空きフォルダを指定します。
    すると、空きフォルダが内にいくつかのフォルダが作られます。
    これがローカライズ環境フォルダとなります。


    ローカライズ環境フォルダ内のサブフォルダのうち、特に重要なものを以下に示します。
     _ApplicationDictionaries --.ad ファイルが作られます。
     _LanguageGlossaries --必要に応じて、.lg ファイルを置きます。
     _NewBase --ローカライズされていない、_OldBaseよりも新しいアプリケーションを置きます。
     _NewLoc --AppleGlotによってローカライズ済みアプリケーションが生成されます。
     _OldBase --ローカライズされていないアプリケーションを置きます。
     _OldLoc --_OldBaseフォルダのアプリケーションをローカライズしたものを置きます。
     _Translators --リソースフォーク変換用ファイルを置きます。
     _WorkGlossary --未ローカライズ文字列を抜き出した .wg ファイルが作られます。



  5. _Translators に、AppleGlotディスクイメージのTranslatorsフォルダに入っている .mtpl ファイルをすべてコピーします。
※ Translatorsの参照位置はAppleGlotの環境設定で変更可能です。

○ AppleGlot:ステップ2 Initial Pass
  1. ステップ1で作られたフォルダに、アプリケーションをコピーします。


     _NewBase --ローカライズされていない、_OldBaseと同じor新しいバージョンのアプリケーションを置きます。
     _OldBase --ローカライズされていないアプリケーションを置きます。
     _OldLoc --_OldBaseフォルダのアプリケーションをローカライズしたものを置きます。
    注:_NewBaseフォルダにアプリケーションがないとInitial Passが実行できません。


  2. AppleGlotを起動、Fileメニューの「Open...」を選択し、ステップ1で作ったローカライズ環境フォルダを指定します。
    すると以下のようなウインドウが開きます。
    スクリーンショットのように、左端のチェックボックスをONにします。(チェックされたものがAppleGlotの作業対象になります)
    注:_NewBaseフォルダにアプリケーションがないと、AppleGlotがフォルダ内容を認識しない場合があります。





    まず、Base Locale と Target Locale を設定します。


    Tools メニューの「Set Target and Base Locales...」を選択し、
    Base Locale を “English” に、
    Target Locale を“Japanese” にします。


    そして、左端のアップルマーク欄のチェックボックスをONにして、Actionsメニューの「Initial Pass」を選択すると、
     ・_NewLocフォルダにローカライズ済みアプリケーションを生成
     ・_ApplicationDictionariesフォルダに .ad ファイルを生成
     ・_WorkGlossaryフォルダに .wg ファイルを生成
    が行われます。



○ Initial Passの動作内容

Initial Passは、次のような動作を行います。
以下、
 Base Localeに設定した言語リソース = Baseリソース
 Target Localeに設定した言語リソース = Targetリソース
とします。
  1. _NewBaseと_OldBaseのBaseリソースを比較する。
  2. 比較の結果より変化していない部分が判ったら、_OldLocが持つTargetリソースのうち変化していない部分を_NewLocにコピーする。
  3. 変化している部分は、_NewBaseのBaseリソースから_NewLocのTargetリソースにコピーする。
  4. 変化していない部分は_ApplicationDictionariesの .ad ファイルに書き出される。
    _OldLocから_NewLocにコピーされたTargetリソースの内容も反映される。
  5. 変化している部分の文字列を_WorkGlossaryの .wg ファイルに書き出す。
    このとき、_LanguageGlossariesに .lg ファイルがあると、その内容が .wg ファイルに反映される。
    また、.ad ファイルに同じ文字列がすでにある場合も反映される。

○ AppleGlot:ステップ3 .wg ファイルの編集

_WorkGlossaryの .wg ファイルには、まだローカライズしていない文字列が書き出されています。
これを翻訳していきます。
.wg ファイルはUTF-8のテキストファイルなので、UTF-8が扱えるテキストエディタで編集できます。
AD Viewerがあれば編集が楽です。Appleサイトからダウンロードしておきましょう。


生成された .wg ファイルを開きます。





.wg ファイルはXMLプロパティ形式になっています。
翻訳可能な文字列は、<TextItem>タグでくくられています。
このうち、<base>タグの文字列を翻訳し、<tran>タグに書き込みます。
左の画像は、“Preferences...”を“環境設定...”と翻訳している途中です。




○ AppleGlot:ステップ4 Incremental Pass と Final Pass

.wg ファイルの翻訳が一通り終わったら、AppleGlotに戻り、Actionsメニューの「Incremental Pass」を選択すると、
 ・ .wg ファイルの翻訳内容を、_NewLocのTargetリソースに挿入
 ・ 挿入された部分を .wg ファイルから削除
が行われます。
.wg ファイルにまだ未翻訳の部分が残っている場合は、その部分がなくなるまで翻訳 → 「Incremental Pass」を繰り返します。

.wg ファイルの翻訳が終了したら、Actionsメニューの「Final Pass」を選択すると一時ファイルの削除が行われ、ローカライズが完了されます。


○ AppleGlot:ステップ5 生成されたアプリケーションの修正

ここまでの一連のステップで、_NewLocにローカライズ済みアプリケーションが生成されました。
これを実際に起動してみると、翻訳が間違っていたり、GUIパーツの配置がおかしかったりすることがあるかもしれません。
Interface BuilderやXcodeを使って、_NewLocのアプリケーションを修正します。

○ AppleGlot:ステップ6 次回のローカライズ

アプリケーションがバージョンアップした時などは、再ローカライズが必要になります。
次からは、バージョンアップにより変更された部分だけのローカライズを行うようになります。
  1. _OldBaseと_OldLocに置いたアプリケーションを削除します。
  2. _NewBaseのアプリケーションを_OldBaseに、_NewLocのアプリケーションを_OldLocに移動します。
  3. 新しいバージョンのアプリケーション(未ローカライズ)を、_NewBaseに置きます。
    _NewLocが空なのを確認してください。
  4. AppleGlotを起動し、ローカライズ環境フォルダを開きます。
    再び「Incremental Pass」を選択します。
  5. .wg ファイルが更新されるので、ステップ3〜5を行います。



○ AppleGlot Glossary:<origin>タグについて




_ApplicationDictionariesに生成された .ad ファイルを見てみると、<tran>タグの origin プロパティに文字列が入っていると思います。
この文字列は、その翻訳文がどこから抜き出されたかを示すものです。

OldLoc exact match _OldLocのローカライズ済みリソースに存在したもの。
LG matched text .lg ファイルに同一の文字列が存在したもの。
AD matched text .ad ファイルに同一の文字列が存在したもの。
空白 .wg ファイルから挿入されたもの。

この中で重要なのが“OldLoc exact match”です。
上記のステップ通りの手順 = “_OldLocにローカライズ済みアプリケーションを置いてInitilal Passを実行”を踏んでいると、.ad ファイル内のすべての翻訳文が“OldLoc exact match”になるはずです。
そして、“OldLoc exact match”になっている部分は、_OldLocのローカライズ済みアプリケーションからそのままコピーされ、GUIパーツの位置やサイズもそのままコピーされます。
すなわち、アプリケーションのバージョンアップに伴うGUIパーツの位置やサイズ調整の手間を最小限に抑えることができるわけです。

○ AppleGlot Glossary:.lg ファイルの使い方

最初からアプリケーションのローカライズを行う場合、 .lg ファイルを_LanguageGlossariesに置いておくと、Initial Pass実行時に .lg ファイルに存在する翻訳文が .wg ファイルに挿入されます。
多くのアプリケーションに共通する語句「カット」「コピー」「ペースト」「保存」「環境設定...」などが挿入されるため、ローカライズの手間を少し減らすことができるでしょう。
ここでは、Appleが配布している .ad ファイルを使う方法を記します。
ローカライズしようとするアプリケーションの .ad ファイルをすでに持っている場合は、それを使うのがよいでしょう。
  1. Appleサイトより、日本語のGlossaryファイルをダウンロードします。
    リンク:Apple ローカライズツール
  2. ダウンロードした .ad ファイルのうち、好みのアプリケーションのものを_LanguageGlossariesにコピーします。
  3. コピーしたファイルの拡張子を .ad から .lg に変更します。
  4. その .lg ファイルを開き、originタグをすべて空白にします。
    例えば、「origin="OldLoc exact match" 」を「origin=""」のように変更します。
  5. _NewBaseに未ローカライズのアプリケーションを置き、(_OldBase、_OldLocにアプリケーションを置かなくてもOKです)AppleGlotでInitial Passを実行します。
以上の手順で生成された .wg ファイルには、.lg ファイルに存在する翻訳文がすでに存在しているはずです。
あとはIncremental Pass、Final Passを実行して_NewLocに生成されたアプリケーションを改めてローカライズしてもよし、そのまま .wg ファイルを翻訳するもよし、好きな方法を選択してください。


○ .stringsファイルに書き出されていない文字列を発見する

ソースコード内のNSLocalizedStringのうち、.stringsファイルに書き出されていない文字列を発見するには、ターミナルからNSShowNonLocalizedStringsオプションをYESにしてCaminoを起動します。
例:% /Applications/Camino.app/Contents/MacOS/Camino -NSShowNonLocalizedStrings YES
すると、.stringファイルにない文字列が表示されます。



Caminoを使おう:トップに戻る



[PR]当たる!無料占いで仕事鑑定:大人気!無料占い『スピリチュアルの館』