2012-01-17 45 views
1

我已經通過爲各種歐洲語言/方言添加正確的資源文件來本地化我的應用程序。BlackBerry - 對中文的語言支持

我有我的項目中所需的文件夾:./res/com/demo/localization

它包含所需的文件,例如Demo.rrh,Demo.rrc,Demo_de.rrc等

我想添加對2種中文方言的支持,並且我在Excel文件中有翻譯。在iPhone上,它們由代碼引用zh_TW & zh_CM。遵循德語模式,我創建了2個額外的文件,名爲Demo_zh_TW.rrc & Demo_zh_CN.rrc。

我打開使用Eclipse的文本編輯器文件Demo_zh_CN.rrc,並使用正常的資源文件格式在中國翻譯線粘貼:

  • START_LOCATION#0="開始位置";

當我試圖保存文件,我得到了Eclipse有關Cp1252字符編碼的錯誤:

保存無法完成。

原因: 某些字符無法使用「Cp1252」字符編碼進行映射。 請更改編碼或刪除「Cp1252」字符編碼所支持的不是 的字符。

看來Eclipse編輯器會接受中文字符,但資源工具希望這些字符必須以Java Unicode/u編碼的形式保存在資源文件中。


如何爲這兩個區域添加語言支持而無需在每個字符串中手動複製粘貼?

是否有可用於Java的工具Unicode/u從Excel中對字符串進行編碼,以便它們可以保存在代碼頁1252只有拉丁字符?

回答

1

我不知道任何現成的工具與BlackBerry的特有的本地化風格工作。

下面是本Java SE代碼片段我用的UTF-8字符串,我得到了使用黑莓轉換:

private static String unicodeEscape(String value, CharsetEncoder encoder) { 
    StringBuilder sb = new StringBuilder(); 
    for(char c : value.toCharArray()) { 
     if(encoder.canEncode(c)) { 
      sb.append(c); 
     } else { 
      sb.append("\\u"); 
      sb.append(hex4(c)); 
     } 
    } 
    return sb.toString(); 
} 

private static String hex4(char c) { 
    String ret = Integer.toHexString(c); 
    while(ret.length() < 4) { 
     ret = "0" + ret; 
    } 
    return ret; 
} 

呼叫unicodeEscape與8859編碼器Charset.forName("ISO-8859-1").newEncoder()

0

我建議你看看Blackberry Hindi and Gujarati text display

您需要使用資源編輯器,以與正確的編碼這些文件。 Eclipse將自動轉義字符。

+0

我見這迫使編輯器使用/ u編碼保存字符,但是當查看時,它們以中文字符顯示。這很好,但是在所有字符串中進行手動複製並不理想。 –

-1

這是您的資源文件的編碼問題。 1252 Code Page只包含拉丁字符。

我從來沒有使用過Eclipse,但應該在某處指定文件的編碼,如果可能,應該將文件的默認編碼設置爲UTF-8。這將處理你的漢字。

您也可以使用像Notepad++EMEditor這樣的好編輯器來設置文件的編碼。

有關如何配置Eclipse以默認使用UTF-8的信息,請參閱here

+0

thx,但這似乎不成問題。我將資源文件更改爲UTF-8,我發現它可以保存中文字符。但是,似乎BlackBerry語言資源工具實際上並不讀中文。當我手動將它們複製到編輯器中時,它會自動/ u轉義所有字符(建議由@Sheepdogsheep提供)。 –

+0

UTF-8通常是正確的解決方案,但在Windows上構建時,BlackBerry工具無法配置爲使用UTF-8。無法用cp1252表示的字符可以用'java unicode escape'表示http://en.wikibooks.org/wiki/Java_Programming/Syntax/Unicode_Escape_Sequences –