2009-03-06 14 views
1

私はJavaソフトウェアのローカリゼーションを担当しており、私のプロジェクトには.propertiesファイルとXMLリソースの両方があります。現在、翻訳者に特定の文字列を翻訳しないように指示するためにコメントを使用していますが、コメントの問題はそれらが機械可読ではないということです。リソースを翻訳しないように指定するにはどうすればよいですか?

私が考えることができる唯一の解決策は、それぞれの非翻訳キーの前に_DNT_のようなものを付け、これらのエントリを無視するように翻訳ツールを訓練することです。そこにいる誰かが良いアイデアを持っていますか?

答えて

4

ファイルを翻訳するファイルや翻訳しないファイルに分割して、翻訳するファイルのみを送信できますか?

+0

はい、文字列を自分のファイルに変換しないで移動することができます。この問題は、リソースが混乱してしまうことです。しかし、世界で最悪のことではありません。ありがとう –

+0

翻訳者が間違っているのは難しい技術です:-) リソースはResourceBundleとして完了していますか? – TofuBeer

+0

はい。問題は、ファイルを送信する前にファイルを前処理するツールがあることです。私はすべてのリソースを分析し、新しい/変更された英語の文字列のみを送信するので、私はすべてのdo-not-translate文字列を無視したい。 –

0

を(それが実用的である場合HAR DTOが答えるとき知っているので...構造を知ってはいけない)のEclipse JDTはまた、特定の文字列の翻訳を防ぐためにコメントを使用しています。

How to write Eclipse plug-ins for the international market

私は思いますあなたの翻訳ツールも同様に動作するはずですか?彼のリンクに掲載さaxelclk同様

0

は...日食この行の最初の文字列が翻訳されてはならないプロジェクトに通知するために

// $ NON-NLS-1 $

声明を提供しています。 ソース - >文字列の外部化

外部文字列には、サポートしたいすべての言語が含まれています。

のように見えるの翻訳が含まれるファイル: PluginPage.Error1 =テキスト1 PluginPage.Error2 =テキスト2

クラス翻訳に

private static final String BUNDLE_NAME = "com.plugin.name"; //$NON-NLS-1$ 

    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); 

    private PluginMessages() { 
    } 

    public static String getString(String key) { 
     // TODO Auto-generated method stub 
     try { 
      return RESOURCE_BUNDLE.getString(key); 
     } catch (MissingResourceException e) { 
      return '!' + key + '!'; 
     } 
    } 

を読んで、あなたが好きそれを呼び出すことができます。

String msg = PluginMessages.getString("PluginPage.Error2"); //$NON-NLS-1$ 

編集:

文字列を外部化して元の文字列を使用する場合は、デフォルトの文字列を除くすべてのプロパティファイルからexternalize文字列を削除できます。バンドルがローカル言語に一致するメッセージファイルを見つけることができない場合は、デフォルトが使用されます。

これは実行時には機能しません。

+0

ありがとうございます。これは、文字列の外部化ツールに特定の文字列を外部化しないよう指示するという点で、少し異なります。私の質問は、彼らが外在化された後に、翻訳しないようにする方法です。 –

+0

ああ...私はあなたを理解していない。ご意見ありがとうございます –

0

最も簡単な解決策は、リソースファイルにdo-not-translate文字列(DNT)を入れないことです。ファイルは、メタデータの処理の方法で多くを提供していない、とあなたは、実行時にデータを必要としないので、の.propertiesファイルにおけるその存在は副作用ではなく、ものになるだろう

の.propertiesそれが望ましい。翻訳可能な文字列(例えば、ブランド名やURIなど)に翻訳できないものがある部分的なDNTについても考慮してください。

"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr" 

私の知る限り、XLIFFのようにも基準が考慮DNTSを取ることはありません、あなたはカスタムメタデータファイルを介してそれらを管理する必要があります、terminology filesおよび/または、そのようなXLIFFでnote要素としてコメント( )。

0

プロパティファイルでdo-not-translateコメントを使用する場合は、Eclipse conventionに従うことをお勧めします。それは特別なものではありませんが、同じ魔法の文字列を使うと人生はより楽になります!

(Eclipseは実際に私の知る限り、まだDO-NOT-TRANSLATEコメントをサポートしていますが、のGettext POファイルにリソースバンドルから変換するときに使用されている上記のスキームの実装をTennera Ant-Gettext持っていません。)

関連する問題