有沒有人對JavaME國際化有一些瞭解?我正在尋找儘可能多的信息,例如實例,經驗和一些最佳實踐。 謝謝JavaME國際化(國際化)
回答
一些想法。 J2ME不支持i18n,因爲它的API支持不存在(不能使用資源包)。但我們可以在一定程度上做到這一點。這是我發現的。
- 對於給定的J2ME應用程序,如果不是不可能支持英語並說中文語言(印刷字符),則很困難。但更容易支持英文,並說西班牙語(我忘了正確的術語來談論國際化支持,但你明白了)。
- 我們可以在一個配置類中包含所有字符串,這樣您就可以將這個字符串替換爲不同的語言。
- 我們可以在初次啓動應用程序時從服務器下載文本/字符串,從而可以從服務器中將其交換出去。
- 由於屏幕尺寸不同,最好使用自定義字體,以便在顯示代碼時可以編寫代碼以計算文本長度。這將使多語言支持變得更容易。
- 也可以根據不同的語言從服務器下載圖像資產。但我不認爲我們可以改變midlet圖標,所以它應該是通用的。
考慮到這一點,可以設計多種語言支持。
omemuhammed的答案是在移動領域本地化的優秀覆蓋範圍。
我只需要支持EFIGS(英文,法文,意大利文,德文和西班牙文)。我們將所有字符串存儲在XML中,併爲每種語言提供了一個XML包。然後,我們可以將這些XML包編譯爲專有的二進制數據,並且能夠將所有5種語言構建到構建中,在應用程序大小緊張的情況下只有一種構建語言,或者從服務器下載二進制文件。
本地化的其他考慮因素是屏幕布局。我還推薦自定義字體,以便更好地控制許多不同設備上的顯示。您需要一些自動換行代碼才能適應不同的屏幕分辨率和寬高比,並且您需要一種方法來處理某些設備上的屏幕上運行的字符串。分頁或滾動將是一個很好的解決方案。
最後,只要知道德國人會搞砸你的格式。嘗試允許20-30%的英語填充菜單和其他UI元素,因爲德語翻譯將比其他語言長得多。
看到實際的國際規格的的JavaME:http://www.jcp.org/en/jsr/detail?id=238
最新Symbian手機應該支持這一點。
一個明顯的建議是在本地電話上實際嘗試你的應用程序:從瑞士(它應該支持至少4種語言)和另一個來自香港(有3個不同版本的「中文」)的電話。這也許值得考察東歐/前蘇聯。
如果實際字符不是通常的ascii字符,則需要使用TextBox或TextField以便在屏幕上顯示本地化的本地控件。
請記住,當你使用RTL(右擊到左)語言,如阿拉伯語,你應該反轉屏幕上幾乎所有的位置,就像一個列表看起來像這樣在拉丁語
- 名單項目1
- 列表項2
- 列表項3
,但子彈會在屏幕上的阿拉伯另一側(試圖使它在這裏,但我could'n產生吶inverte d列表:P)
另一個問題是,最好將字符串存儲在類中而不是純文本屬性,因爲這可能會導致某些錯誤解釋某些語言的unicode,具體取決於操作系統和文本編輯器使用。
我通常做的是有一個I18nManager類,它在startApp中存儲語言,並通過這個類獲得我需要的所有字符串。
- 1. Rails 3 ActiveForm國際化(國際化)
- 2. 國際化INLIST
- 3. PHP國際化
- 4. Spring國際化
- 5. PyQt國際化
- 6. Log4j國際化
- 7. 國際化與
- 8. YAML國際化
- 9. GWT國際化
- 10. Rails國際化
- 11. Struts2 +國際化
- 12. Batmanjs國際化
- 13. 國際化mx:MenuBar?
- 14. 國際化
- 15. Spring國際化
- 16. 國際化sitemesh
- 17. Mono國際化
- 18. Java國際化
- 19. jqGrid國際化
- 20. activeadmin +國際化
- 21. 國際化QNames/CURIs
- 22. 國際化驗證
- 23. Cakephp 2.6國際化
- 24. Python國際化(gettext)
- 25. 國際化與jQuery
- 26. JavaScript內國際化
- 27. Spring MVC國際化
- 28. Struts2 +國際化+ Java
- 29. Drupal的國際化 -
- 30. Android WebView國際化
謝謝,我會記住你的建議。 只有一件事,關於第3點,這將是一個問題,因爲它需要簽名Midlet或設備將會抱怨並要求授權。 – 2009-02-01 21:18:01
我假定已簽名的應用程序。這是J2ME在大多數運營商(至少在美國)工作的一個不幸的方面。他們需要應用程序簽署網絡連接 – omermuhammed 2009-02-01 21:22:43