WebObjects/Project WONDER/Frameworks/ERExtensions/ERXLocalizer
ERXLocalizer 提供了對本地化的簡單 KVC(鍵值編碼)訪問。有關簡短描述和所有可用方法的完整列表,請參閱 api (http://webobjects.mdimension.com/wonder/api/er/extensions/ERXLocalizer.html).
在您的 WebObjects 應用程式中使用本地化的最簡單方法是使用 Project Wonder 的內建本地化支援,使用 ERXSession 類中的 localizer() 方法。localizer() 方法允許您將本地化的語言字串直接繫結到您的元件。假設您想將 WebObjects 應用程式本地化為英語和德語。您只需在應用程式的資源目錄中建立所需的語言資源即可。如果您使用 Eclipse 開發 WebObjects 應用程式,則這是應用程式根目錄中的 ./Resources 目錄。對於英語和德語本地化,您需要建立以下檔案和目錄
Resources | +-English.lproj | | | +-Localizable.strings | +-German.lproj | | | +-Localizable.strings
Localizable.strings 檔案包含您的本地化的鍵值對。鍵始終是翻譯的佔位符,它用於在您的 WebObjects 應用程式中定址本地化值。如果您的應用程式是一個簡單的hello world應用程式,則您的本地化檔案可能如下所示
{
"hello" = "Hello";
"world" = "World";
}
對於 English.lproj 目錄中的 Localizable.strings 檔案,以及
{
"hello" = "Hallo";
"world" = "Welt";
}
對於 German.lproj 目錄中的 Localizable.strings 檔案。
要使用本地化字串,只需將鍵繫結到適當的 WOComponent(假設您在應用程式中從 ERXSession 繼承了 Session 物件)。
<p>The application says: <webobject name="langHello"/> <webobject name="langWorld"/></p>
(HTML 檔案)
langHello : WOString {
value = session.localizer.hello;
}
langWorld : WOString {
value = session.localizer.world;
}
(WOD 檔案)
如果使用英語語言環境,ERXLocalizer 會神奇地檢測您的系統語言環境並輸出以下 HTML 程式碼
<p>The application says: Hello World</p>
這些是 ERXLocalizer 的預設設定
er.extensions.ERXLocalizer.defaultLanguage=English
er.extensions.ERXLocalizer.fileNamesToWatch=("Localizable.strings","ValidationTemplate.strings")
er.extensions.ERXLocalizer.availableLanguages=(English,German)
er.extensions.ERXLocalizer.frameworkSearchPath=(app,ERDirectToWeb,ERExtensions)
您可以在應用程式屬性檔案中提供自己的預設值,或在應用程式的初始化程式碼中的某個位置設定預設值,例如:
public Application() {
NSLog.out.appendln("Welcome to " + this.name() + " !");
/* ** put your initialization code in here ** */
ERXLocalizer.setDefaultLanguage("English");
}
如果您正在建立 UTF-8 應用程式,請注意,Localizable.strings 檔案的 UTF-8 支援似乎不起作用。與其感到絕望,不如簡單地將您的 Localizable.strings 檔案轉換為 UTF-16。本地化字串將在您的 UTF-8 應用程式中以正確的方式顯示。有關更多資訊,請參閱 Apple 開發者連線中的本地化屬性標籤。