term タグ別の記事一覧

HandBrake日本語版 0.9.4(Windows版)リリース

 HandBrake日本語版 0.9.4をリリースしました。詳しい情報はWikiページをどうぞ。

新機能としてはアングル指定サポートや、プレビュー機能などがあります。いっぽう、0.9.4ではAVI形式がサポート対象外になりました。AVI形式を使いたい場合は0.9.3を使う必要があります。0.9.3もちょっとアップデートする予定なので、しばしお待ちを。

 また、プリセットのロード/セーブに失敗するという話があります。こちらも現在確認中です……。

HandBrake日本語版 0.9.4

HandBrake日本語版 0.9.4

HandBrake 0.9.4日本語版開発中

 先日本家からHandBrake 0.9.4がリリースされていたので、日本語化をちょこちょこと進め中。現在の状況ですが、おおむね(外観的には)日本語になっている、という感じ。あとは設定ファイル周りと、HandBrakeコマンドに渡すオプション周り、ツールチップ周りをいじればひとまず完了、という感じでしょうか。

年内にリリースできるといいなぁ……。これが終わったら、0.9.3で発見した0.9.2の日本語化版の細かいミスを修正する予定。

 ちなみに0.9.4の新機能の1つは「プレビュー」機能。結構便利。

HandBrake 0.9.4の新機能、「プレビュー」

HandBrake 0.9.4の新機能、「プレビュー」

Mac OS X向けのHandBrakeの日本語化版もとりあえずリリース

 日本語化をちょこちょことやっているHandBrakeですが、Mac OS X版もとりあえずリリースしてみました。

 ダウンロードはファイル置き場、ソースコード置き場に利用している SourceForge.JPのHandBrake日本語版プロジェクト からどうぞ。

 Universal Binaryではビルドできなかった(やろうと思えばできるのだが相当に面倒くさそう)ので、とりあえずPPC版とIntel版で別のパッケージにしました。あと、Intel版は自分の環境で動作チェックできているのですが、PPC版は環境がない(一応あるにはあるがMac OS X 10.4なので動かない)ので、もし起動できないなどの問題が起こったらお教えいただけると助かります。

 あと、ほとんどの個所は日本語化しているんですがH.264エンコードの詳細設定あたりはまだ英語のままです。いじってもそんなに変わらない上にもしかしたら大仕事になりそうな気もしたので後回しですが、いずれこちらも日本語化予定。

 あとは本家に日本語化のために加えた変更点のパッチを送るかどうかですね……。

HandBrake Mac OS X版・日本語化

正月にだらけまくっていたのと、1月がちょっと忙しかったので進捗が遅れていたのですが、HandBrakeのMac OS X版の日本語化が一通り完了。ところが。開発環境はCore 2 DuoのIntel Macなので、とりあえずリリース用にUniversal Binaryでビルドしなきゃなぁ、と思ってリビルドかけたらライブラリのコンパイルでエラー頻出……。ちょっと前までは問題なくビルドできていたはずなのだが。ということで、もう少し公開には時間がかかりそう。

HandBrake日本語版開発日誌(1/5)

  1/1の記事 で紹介したgenstringsを使ってソースコード中のテキスト文字列をローカライズしていたんだけど、genstringsではすべての文字列を抜き出してStringsファイルを作ってくれるわけではない(当たり前だが)。というか、genstringsはどちらかというとソースコード中でNSLocalizedString()を使っている個所からテキストを抜き出す、というのがメインの目的のようだ。ということで、genstringsで自動的に抜き出してくれた以外のテキストを検索し、NSLocalizedString()に置き換える作業を行う。

 ただし、すべてをNSLocalizedString()に置き換えてしまうとどのテキストがどこで呼ばれているのか分からなくなるので、適宜コメントを入れたり、テーブル(=テキストデータが格納されているStringsファイル)を適宜分けたりして対処する。ちなみにNSLocalizedString()の引数は下記のとおり。

NSLocalizedString( @"キー", @"コメント" )

 この「コメント」の部分に入れたコメントは、genstringsが自動的にStringsファイル中にコメントとして埋め込んでくれる。なお、NSLocalizedString()は<言語>.lprojディレクトリ以下の「Localizable.strings」というファイルからテキストを読み出す。別のStringsファイルからテキストを読み出したい場合はNSLocalizedStringFromTable()を使えばよい。

NSLocalizedStringFromTable( @"キー", @"Stringsファイル名", @"コメント" )

NSLocalizedStringFromTable()は、第2引数で指定したファイルからキーに対応するテキストを読み出す。なお、Stringsファイルの拡張子は「.strings」で、拡張子を除いた部分を第2引数に指定する。

 今回、HandBrakeの日本語化ではソースファイルごとに別のStringsファイルにテキストを格納することにし、さらに全アプリケーションで共通に呼び出されるテキストはLocalizable.stringsに格納することにした。

 なお、これらの作業(どのファイルにどのテキストリソースを保存するのかの決定)は翻訳作業を行う前に行っておくべきである。自分は翻訳作業に手を付けて始めてからテキストリソースの多さに気付き分割を行ったが、genstringsツールにはすでに翻訳していたテキストをマージする機能がないため、別途スクリプトを作って翻訳済みテキストをマージする羽目になった。

HandBrake日本語版開発日誌(1/2)

 Mac OS X版HandBrakeの日本語化継続中。GUI部分の日本語化はほぼ完了。つづいてソースコード中のテキストの日本語化を進める。プレファレンスやプリセット周りでドロップダウンリストのテキストを参照している部分がところどころあるようなので、その辺りの修正が必要と思われる。

開発メモ:ソースコード中文字列のローカライズ

 OS Xでは、ソースコード中の文字列をローカライズする仕組みとして「Stringsファイル」というものが用意されている。これは、ソースコード中で使用する文字列データをリソースフォルダ中のStringsファイル(拡張子は.string)からロードする仕組みで、言語環境に会わせて使用するStringsファイルを切り替えることで、それぞれの言語に合わせた文字列を選択できるようにするものだ。

 なお、詳細なドキュメントとしてはADCの Internationalization Programming Topics: Strings Files があるので、こちらも参照すべし。

Stringsファイルの構造

 Stringsファイルの構造は次のようになっている。

/* Insert Element menu item */
"Insert Element" = "Insert Element";
/* Error string used for unknown error types. */
"ErrorString_1" = "An unknown error occurred.";

 「/*」〜「*/」ガコメントで、続いて「”キー” = “文字列”」というデータが並ぶ構造となっている。Stringsファイルはアプリケーションバンドルの「<言語名>.lproj」ディレクトリ以下に収納されている。ちなみにデフォルトのStringsファイル名は「Localizable.strings」だが、任意の名前を付けることが可能。

Stringsファイルから文字列をロードする

 Strginsファイルから文字列を取り出すには、下記の関数を利用できる、

  • Core Foundation macros:

  • CFCopyLocalizedString

  • CFCopyLocalizedStringFromTable

  • CFCopyLocalizedStringFromTableInBundle

  • CFCopyLocalizedStringWithDefaultValue

  • Foundation macros:

  • NSLocalizedString

  • NSLocalizedStringFromTable

  • NSLocalizedStringFromTableInBundle

  • NSLocalizedStringWithDefaultValue

 たとえばデフォルトStringsファイル(Localizable.strings)中に下記のような記述があったとする。

/* A comment */
"Yes" = "はい";

 この場合、下記のようにしてローカライズ文字列を読み出せる。

NSString* theString;
theString = NSLocalizedString (@"Yes", @"A comment");

 なお、NSLocalizedStringの第2引数は省略可能。また、Localizable.strings以外のStringsファイルからテキストをロードしたい場合はNSLocalizedStringFromTableを利用する。

Stringsファイルを作成するツール

 ローカライズする文字列を抜き出すためのツールとして、「genstrings」というものがある。たとえば、下記のように実行すると、カレントディレクトリ以下の*.mファイルからローカライズすべきテキストを抜き出し、Japanese.lprojディレクトリ以下のLocalizable.stringsファイルに書き出すとともに、*.mファイル中のテキスト文字列を「NSLocalizedString(@”文字列”, @”)に置き換えてくれる。

genstrings -o Japanese.lproj *.m

Mac OS X版HandBrake日本語化メモ1

HandBrakeの日本語化 作業メモ。

Appleの開発者向けサイトにある国際化ドキュメント に目を通す。しかし役に立つ話は非常に少ない。マイコミジャーナルの OS X ハッキング! 記事にある、ローカライズ絡みの話にひと通り目を通しておけばOS Xアプリの日本語化についての基礎的な知識は十分っぽい。

あと、今回のような日本語化には ibtool というものを活用すべし、という話。次のように実行すると、nibファイル中のテキスト要素がファイルに書き出される。

ibtool -L en.lproj/MainMenu.nib > ./MainMenu.strings

書き出されたファイルは次のような「アイテム=テキスト」というのが並んでいるテキストファイルとなるので、こいつを翻訳する。

/* Class = "NSMenuItem"; title = "About HandBrake"; ObjectID = "58"; */"58.title" = "About HandBrake";

翻訳後、次のように翻訳したテキストをnibファイルにぶち込む。

ibtool -d de.lproj/MainMenu.strings en.lproj/MainMenu.nib -W de.lproj/MainMenu.nib

ちなみにHandBrakeはリソースファイルにnib形式ではなくxib形式を使っているが、xib形式でも同様にibtoolで処理できるようだ。xib形式はnib形式を扱いやすいように1つのXMLファイルにまとめたものだそうで、普通にInterface Builderで読み込める。nibファイルはファイルシステム的にはディレクトリとして扱われるためSubversionとかでのバージョン管理が厄介だったのだが、xib形式だと純粋に1ファイルなので問題が起こらなくて便利。

で、リソースファイルをぼちぼちと日本語化しつつ、Mac OS X版のソースを眺める。Windows版もそうだったけど、設定項目(プルダウンメニューのやつ)の日本語化が非常にやりづらいソースになっているのだが、とりあえずそれ以外はリソースファイルを書き換えるだけでOKっぽい。