2011-02-19 37 views
1

我打算國際化我用Java編寫的程序。 我希望安裝我的程序的過程中會有顯示的一些問題,如:如何在Java中國際化應用程序?

  1. 在哪個國家你是
  2. 哪種語言,你preffer(這裏應該建議lanuage(個),所選國家
  3. 其它必要的問題

粥那個節目將放入內存中的所有必要信息:

  1. 貨幣使用dispalying
  2. 其他必要的(標準)信息

  • 日期和時間的方式這將是一件好事也有一些編輯器,使我們能夠改變文本的程序界面到其他語言顯示。

    已經爲其他程序執行此項工作的某人的貢獻將受到高度讚賞。

  • +0

    問題是? –

    +0

    不錯的問題描述。你的問題是什麼? –

    +0

    這種語言可能是好的開始,所以你可以問你在哪個國家使用該語言。 –

    回答

    5

    java中最常用的方法是使用ResourceBundle

    您可以爲每種語言創建一個屬性文件,並在其中放置應用程序的所有文本。使用正確的名稱創建新文件是添加新語言的難點。

    所以要編輯這些文件,只需使用任何文本編輯器即可。

    1

    在Java中,您通常可以通過撥打Locale.getLocale()獲取語言和國家信息。這是用戶的系統(或帳戶)配置的內容。然後,您不必在設置中詢問,或者至少可以爲您的用戶提供良好的默認選擇。

    許多語言環境中的「常用數字格式」(包括貨幣換算)等大多數信息已包含在Java運行時中,並且可以使用不同的API,如NumberFormat,DateFormat,PrintWriter,Formatter,Collat​​or等。查看use page for class Locale以瞭解已經存在的內容(以及您自己還需要做的)。

    0

    我假設你的意思是桌面應用程序(因爲安裝程序)。在這種情況下,通過閱讀this鏈接開始思考i18n。

    至於你寫的是什麼,向用戶詢問他在哪裏是沒有意義的。你也不需要在內存中存儲任何東西。只需使用當前的區域設置,它通過可檢測:

    Locale currentLocale = Locale.getDefault(); 
    

    當你有這樣的對象,就可以輕鬆格式的日期,時間,貨幣和數字採用適當的格式類:

    DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.getDefault()); 
    DateFormat dateTimeFormatter = DateFormat.getDateTimeInstance(
           DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.getDefault()); 
    Date now = new Date(); 
    String formattedDate = dateFormatter.format(now); 
    String formattedDateAndTime = dateTimeFormatter.format(now); 
    

    等,只需閱讀鏈接。您可能還需要支持區域感知排序(通過所謂的Collat​​or)和字符串國際化(通過Augusto提到的ResourceBundle)。你也需要學習MessageFormat來格式化複合字符串(而不是僅僅連接它們)。

    這還不是全部,i18n實際上是一個巨大的話題,但這將是一個好的開始。