5

OK, the goal of this question is not strictly programming related but it is a question programmers can answer using programming tools, and programmers may find useful answers here. Bear with me.

I find changing the system language in Mac OS X a useful way to augment my learning of natural languages, eg French. However sometimes I find a menu item or dialog box in French that I can't understand and it's a bore to google the translation or change the system language back to English. But I know that the English translation is hidden away somewhere in the localisation file and maps somehow to the French phrase. So what I want to do is extract all the text from all the localisation files to develop a mapping of this phrase in English = that phrase in French so I can look it up easily.

I know that the localisation files are stored in something like Localizable.strings, lproj files and nib files but I can't make head or tail of how they are stored or how to work with them. I can program but I've never written anything in Xcode. All the information I can find is for Mac OS / iOS programmers to localise their software, not for hackers to extract already made localisation information.

How can I extract the foreign language information as plain text from Mac OS X system and 3rd party software localisation files? Thanks!

4

1 に答える 1

1

文字列ファイルは簡単です。プロパティ リストとしてシリアル化された単なる辞書です。ディクショナリ キーは、特定のローカリゼーションの指定された文字列を検索するためにプログラムによって使用されます。英語から別の言語へのマッピングを作成するには、両方の辞書を読み込み、キーを反復処理し、英語辞書の値を出力のキーとして使用し、他の言語辞書の値を出力の値として使用します。

NIBはより困難です。ビルド プロセスは、NIB ファイルを編集や解析に適していない形式に "コンパイル" します。コンパイルされていない NIB ファイルにアクセスできる場合はibtool --export-strings-file、文字列ファイルをダンプするために使用できます。このファイルは、上記のように処理できます。そうしないと、大変なことになると思います。

于 2013-03-27T09:14:56.547 に答える