2009-01-30 263 views

回答

3

一些想法。 J2ME不支持i18n,因爲它的API支持不存在(不能使用資源包)。但我們可以在一定程度上做到這一點。這是我發現的。

  1. 對於給定的J2ME應用程序,如果不是不可能支持英語並說中文語言(印刷字符),則很困難。但更容易支持英文,並說西班牙語(我忘了正確的術語來談論國際化支持,但你明白了)。
  2. 我們可以在一個配置類中包含所有字符串,這樣您就可以將這個字符串替換爲不同的語言。
  3. 我們可以在初次啓動應用程序時從服務器下載文本/字符串,從而可以從服務器中將其交換出去。
  4. 由於屏幕尺寸不同,最好使用自定義字體,以便在顯示代碼時可以編寫代碼以計算文本長度。這將使多語言支持變得更容易。
  5. 也可以根據不同的語言從服務器下載圖像資產。但我不認爲我們可以改變midlet圖標,所以它應該是通用的。

考慮到這一點,可以設計多種語言支持。

+0

謝謝,我會記住你的建議。 只有一件事,關於第3點,這將是一個問題,因爲它需要簽名Midlet或設備將會抱怨並要求授權。 – 2009-02-01 21:18:01

+0

我假定已簽名的應用程序。這是J2ME在大多數運營商(至少在美國)工作的一個不幸的方面。他們需要應用程序簽署網絡連接 – omermuhammed 2009-02-01 21:22:43

1

omemuhammed的答案是在移動領域本地化的優秀覆蓋範圍。

我只需要支持EFIGS(英文,法文,意大利文,德文和西班牙文)。我們將所有字符串存儲在XML中,併爲每種語言提供了一個XML包。然後,我們可以將這些XML包編譯爲專有的二進制數據,並且能夠將所有5種語言構建到構建中,在應用程序大小緊張的情況下只有一種構建語言,或者從服務器下載二進制文件。

本地化的其他考慮因素是屏幕布局。我還推薦自定義字體,以便更好地控制許多不同設備上的顯示。您需要一些自動換行代碼才能適應不同的屏幕分辨率和寬高比,並且您需要一種方法來處理某些設備上的屏幕上運行的字符串。分頁或滾動將是一個很好的解決方案。

最後,只要知道德國人會搞砸你的格式。嘗試允許20-30%的英語填充菜單和其他UI元素,因爲德語翻譯將比其他語言長得多。

1

看到實際的國際規格的的JavaME:http://www.jcp.org/en/jsr/detail?id=238

最新Symbian手機應該支持這一點。

一個明顯的建議是在本地電話上實際嘗試你的應用程序:從瑞士(它應該支持至少4種語言)和另一個來自香港(有3個不同版本的「中文」)的電話。這也許值得考察東歐/前蘇聯。

如果實際字符不是通常的ascii字符,則需要使用TextBox或TextField以便在屏幕上顯示本地化的本地控件。

0

請記住,當你使用RTL(右擊到左)語言,如阿拉伯語,你應該反轉屏幕上幾乎所有的位置,就像一個列表看起來像這樣在拉丁語

  • 名單項目1
  • 列表項2
  • 列表項3

,但子彈會在屏幕上的阿拉伯另一側(試圖使它在這裏,但我could'n產生吶inverte d列表:P)

另一個問題是,最好將字符串存儲在類中而不是純文本屬性,因爲這可能會導致某些錯誤解釋某些語言的unicode,具體取決於操作系統和文本編輯器使用。

我通常做的是有一個I18nManager類,它在startApp中存儲語言,並通過這個類獲得我需要的所有字符串。