我從事Java軟件的本地化工作,我的項目同時擁有.properties文件和XML資源。我們目前使用評論來指導譯員不翻譯某些字符串,但評論的問題是他們不是機器可讀的。如何將資源指定爲不需要翻譯?
我能想到的唯一解決方案是在_DNT_
之前加上每個do-not-translate關鍵字的前綴,並訓練我們的翻譯工具忽略這些條目。有沒有人有更好的主意?
我從事Java軟件的本地化工作,我的項目同時擁有.properties文件和XML資源。我們目前使用評論來指導譯員不翻譯某些字符串,但評論的問題是他們不是機器可讀的。如何將資源指定爲不需要翻譯?
我能想到的唯一解決方案是在_DNT_
之前加上每個do-not-translate關鍵字的前綴,並訓練我們的翻譯工具忽略這些條目。有沒有人有更好的主意?
你可以將文件分解成要翻譯的文件或不需要翻譯的文件,然後只發送要翻譯的文件? (不知道結構,哈日DTO知道回答時,如果這是實際的...)
Eclipse的JDT也使用意見,以防止某些字符串的翻譯:
How to write Eclipse plug-ins for the international market
我想你的翻譯工具應該以類似的方式工作?
像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找不到與本地語言匹配的消息文件時,使用默認值。
但是這在運行時不起作用。
最簡單的解決方案是不要將不轉換字符串(DNT)放到資源文件中。
的.properties文件沒有提供多少在元數據處理的方式,因爲你沒有在運行時需要的數據,其在的.properties存在文件將是一個副作用,而不是東西這是可取的。也要考慮,部分DNT中包含可翻譯字符串中包含的內容(如品牌名稱或URI)的內容。
"IDENTIFIER english en en en" -> "french fr IDENTIFIER fr fr"
據我所知,即使是像XLIFF標準沒有考慮到的DNTs考慮,你必須通過自定義元數據文件,terminology files和/或意見(如XLIFF的note元素對其進行管理)。
如果您決定在屬性文件中使用不翻譯註釋,我建議您遵循Eclipse convention。這沒什麼特別的,但如果我們都使用相同的魔術串,生活會更容易!
(Eclipse不真正支持DO-NOT-翻譯評論,因爲據我所知,但Tennera Ant-Gettext具有從資源包轉換成gettext的PO文件時使用上述方案的實現。)
是的,我們可以移動不要將字符串轉換成他們自己的文件,保持他們的位置。問題在於你的資源變得混亂。雖然不是世界上最糟糕的事情。謝謝 – 2009-03-06 04:21:16
低技術解決方案難以解決譯員的錯誤:-) 資源是否以ResourceBundle的形式完成? – TofuBeer 2009-03-06 04:22:51