2009-03-06 31 views
1

我從事Java軟件的本地化工作,我的項目同時擁有.properties文件和XML資源。我們目前使用評論來指導譯員不翻譯某些字符串,但評論的問題是他們不是機器可讀的。如何將資源指定爲不需要翻譯?

我能想到的唯一解決方案是在_DNT_之前加上每個do-not-translate關鍵字的前綴,並訓練我們的翻譯工具忽略這些條目。有沒有人有更好的主意?

回答

4

你可以將文件分解成要翻譯的文件或不需要翻譯的文件,然後只發送要翻譯的文件? (不知道結構,哈日DTO知道回答時,如果這是實際的...)

+0

是的,我們可以移動不要將字符串轉換成他們自己的文件,保持他們的位置。問題在於你的資源變得混亂。雖然不是世界上最糟糕的事情。謝謝 – 2009-03-06 04:21:16

+0

低技術解決方案難以解決譯員的錯誤:-) 資源是否以ResourceBundle的形式完成? – TofuBeer 2009-03-06 04:22:51

0

像axelclk貼在他的鏈接...日食提供

// $ NON-NLS-1 $

聲明,通知,在該行的第一個字符串不應該翻譯項目。所有其他字符串可以通過調用 Source-> Externalize Strings

外部字符串包括您想要支持的所有語言。

文件,其中包括翻譯看起來像:其中閱讀翻譯 PluginPage.Error1 = text1的 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$ 

編輯:

當一個字符串被外化並且您想使用原始字符串時,您可以從所有屬性文件中刪除外部化字符串,而不使用默認字符串。當Bundle找不到與本地語言匹配的消息文件時,使用默認值。

但是這在運行時不起作用。

0

最簡單的解決方案是不要將不轉換字符串(DNT)放到資源文件中。

的.properties文件沒有提供多少在元數據處理的方式,因爲你沒有在運行時需要的數據,其在的.properties存在文件將是一個副作用,而不是東西這是可取的。也要考慮,部分DNT中包含可翻譯字符串中包含的內容(如品牌名稱或URI)的內容。

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

據我所知,即使是像XLIFF標準沒有考慮到的DNTs考慮,你必須通過自定義元數據文件,terminology files和/或意見(如XLIFF的note元素對其進行管理)。

0

如果您決定在屬性文件中使用不翻譯註釋,我建議您遵循Eclipse convention。這沒什麼特別的,但如果我們都使用相同的魔術串,生活會更容易!

(Eclipse不真正支持DO-NOT-翻譯評論,因爲據我所知,但Tennera Ant-Gettext具有從資源包轉換成gettext的PO文件時使用上述方案的實現。)