跳转到内容

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");
   }

Unicode 支持

[编辑 | 编辑源代码]

如果您正在创建 UTF-8 应用程序,请注意,Localizable.strings 文件的 UTF-8 支持似乎不起作用。与其感到绝望,不如简单地将您的 Localizable.strings 文件转换为 UTF-16。本地化字符串将在您的 UTF-8 应用程序中以正确的方式显示。有关更多信息,请参阅 Apple 开发者连接中的本地化属性标签

华夏公益教科书