1

ですから、これは StackOverflow 形式にとっては良い質問ではないことはわかっています。しかし、私は少し途方に暮れています。これを別の場所に置くことをお勧めします。

私は Python プログラムをローカライズするための xgettext に精通しています。現在、ユーザー設定を文字列として保存しています (例: user_prefs = {'temperature':u'\u00b0C Fahrenheit', 'volumetric':'Cubic inches', ...})

これは正常に機能し、外国語で操作する場合、文字列のローカライズを保存する前に英語に戻すことを試みます (ほとんどの場合成功します)。保存された文字列が常に英語版になるようにし、プログラムの起動時にローカライズします。

'Cubic inches'ただし、 に変更しu'in\u00b3' たり、 のような小さな変更を加えたりすると、後で問題が発生'Cubic inches''Cubic Inches'ます。常に小文字で比較を行うことでこれをいくらか補正しましたが、私にはハックのように感じられ、id を保存するなどのより良い方法があるに違いないと思われます (配列へのインデックスであっても、単にいくつかの一意の識別子)。しかし、ユーザーの好みが常に認識されるように、将来のプルーフに関する他のユーザーの経験について疑問に思っています。

これはクローズされると思いますが(主観的な回答を求めます)、そうなる前に良い洞察を得ることができるかもしれません

4

2 に答える 2

1

テキストの英語表現をメッセージの一意の ID として使用しようとしているようですが、英語表現を変更すると、以前に保存した設定ファイルの ID と一致しなくなります。解決策は、メッセージごとに一意で永続的な ID を使用することです。この ID は英語で読めるものでもかまいませんが、絶対に変更しないようにする必要があります。この ID には、Unicode 文字や大文字を使用しない、単純で標準化された命名規則を使用すると便利です。たとえば、1 つのメッセージ ID が「立方インチ」の場合があります。もう1つは「華氏」かもしれません

次に、このメッセージを英語を含むすべての言語で表示するために、国際化されたテキストを定義する必要があります。したがって、英語のシステムで「立方インチ」メッセージを表示したい場合は、この ID に相当する英語を検索し、「立方インチ」、「立方インチ」、「u'in\u00b3」など、好きなものを取得します。その後、アプリケーションはそのテキストを表示できます。ただし、永続的なメッセージ ID (「立方インチ」) は常に設定ファイルに保存します。これにより、以前に保存された設定ファイルの ID を無効にすることなく、ユーザーに表示されるメッセージの英語表現を柔軟に変更できます。

于 2014-09-17T21:59:13.180 に答える
0

私はあなたの実際の問題を理解していません。どこに保管していますか。しかし、「base64 utf エンコーディング デコーディング」が問題を解決できることを願っています。

于 2013-05-18T10:49:56.323 に答える