國際化(i18n)在我們的軟件項目中非常重要。 它主要帶來以下好處:
- 將UI字符串外部化為除代碼文件之外的外部文件,以及易于管理的UI內容。
- 支持多種語言。
在這篇文章中,將為Eclipse和Java項目提供一個簡短的i18n實際示例,包括定制i18n機制以具有更可維護和封裝的方法。
- 首先,我們必須具有一些類,其中包括在用戶界面上顯示的字符串值:
![]() |
UI類示例 |
- 然后,我們必須有一個i18n實用程序類的實例。 通常,這是Java中的兩種之一:
- java.util.ResourceBundle(不需要spring依賴項)
![]() |
ResourceBundle初始化 |
- org.springframework.context.support.ResourceBundleMessageSource(具有多個單詞外部化功能(稍后將介紹))。
![]() |
ResourceBundleMessageSource初始化 |
由于本教程的擴展功能,我們將在本教程中使用ResourceBundleMessageSource實例。
- 然后右鍵單擊該類,然后選擇“源”->“外部化字符串”。 將顯示如下窗口。 在右列中輸入字符串的鍵。 鍵將以默認的類名開始。 密鑰在系統上必須唯一,因此應應用預定義的模式(例如<class_name>。<type_id>。<description>)
![]() |
Eclipse字符串外部化窗口 |
- 單擊下一步–>完成,您的字符串將如下更改。 還將自動創建Messages類和externalizer屬性文件(右側的自動注釋是eclipse的標記,這意味著
“外部化”):
![]() |
帶外部字符串的類 |
![]() |
自動創建的i18n實用程序和屬性類 |
- 至此,外部化已完成。 但是我們需要i18??n,而且我們必須支持多種語言。 為此,定義另一個帶有位置標記的屬性文件(例如“ EN”,“ FR”,“ TR”等),復制鍵并用新語言填充值,并在適當的位置/位置設置資源包的語言環境您的應用程序(例如在設置窗口或登錄頁面上):
![]() |
每種語言有多個屬性文件 |
![]() |
Messages_tr_TR.properties文件內容 |
![]() |
為資源包設置新的語言環境 |
- 作為最后一步,我們要封裝i18n實用程序類,還希望使用功能更強大的i18n實用程序(例如
ResourceBundleMessageSource )。 為此,請如下定義一個類:
![]() |
定制和封裝的消息源(i18n實用程序)類 |
- 最后,將“ Messages.getString”語句更改為新實例:
![]() |
具有外部化字符串的類(具有定制的i18n實用程序類) |
- 您也可以使用您的類將參數化的字符串外部化。 其用法如下:
![]() |
從i18n實用程序獲取參數化的字符串 |
![]() |
在屬性文件中定義參數化的字符串 |
參考: Java的定制國際化(i18n)–來自我們JCG合作伙伴的分 步指南 ? Cagdas Basaraner在CodeBuild博客上。
翻譯自: https://www.javacodegeeks.com/2012/02/customized-internationalization-i18n-in.html