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 开发者连接中的本地化属性标签。