个性化阅读
专注于IT技术分析

GWT国际化

本文概述

介绍:

  • 以一种可以与不同地区或国家/地区语言兼容的方式设计应用程序的技术。
  • 国际化要求将要国际化的使用数据分离到属性文件中。
  • 它类似于Java编程语言, 在Java编程语言中, 国际化是通过Resource Bundles实现的。为每个需要支持的语言环境创建.properties文件的位置。

国际化技术的类型

  1. 静态字符串国际化
  2. 动态字符串国际化
  3. 可本地化的界面

静态字符串国际化

  • 这是翻译常量和参数化字符串的好技术。
  • 这是最简单的实现方法, 因为它只需要很少的开销。
  • 它使用标准Java属性文件存储转换后的字符串和参数化消息。

动态字符串国际化

  • 动态字符串国际化比静态字符串国际化慢, 但更灵活。
  • 使用此技术的应用程序看起来像模块主页中的本地化字符串。由于这种技术, 添加新的语言环境时不需要重新编译它们。

可本地化的界面

  • 这是实现接口的最强大的技术。
  • 这是一种很少使用的高级国际化技术。
  • 我们需要高级来实现Localizable接口, 以实现简单的字符串替换。它还会创建自定义类型的本地化版本。

GWT国际化的实施

步骤1:实施I18N:扩展模块XML文件中的语言环境值, 以提及应用程序要支持的每个语言环境值, 如下所示。

<module>
<inherits name="com.google.gwt.user.User"/>
<inherits name="com.google.gwt.i18n.I18N"/>
<entry-point/>
<extend-property name="locale" values="fr"/>
<extend-property name="locale" values="hi"/>
</module>

步骤2:为每个语言环境创建.properties文件:所有资源包必须具有相同的基本名称, 并且后缀必须不同, 以指示语言环境。消息查找算法考虑消息的基本名称, 当前语言环境和密钥。将所有.properties文件放在src包中。

AppConstants.properties适用于默认语言环境, 即英语, 具有以下键/值对。

username: Username
password: Password
login: Login

AppConstants_fr.properties支持法语语言环境。键/值对如下。

username: Nom d'utilisateur
password: Mot de passe
login: connexion

步骤3:创建与属性文件相对应的接口:

  • 创建一个扩展GWT常量接口的接口。
  • 通过将资源束绑定到此接口, 可以使用它们。
  • 属性文件的基本名称和接口名称必须相同。
  • 界面中的每个方法都对应于属性文件中的键。
public interface AppConstants extends Constants {

String username();
String password();
String login();

}

步骤4:设置入口点类

public void onModuleLoad() {
// Getting the values from resource bundle through interface methods
		Label username=new Label(constants.username());
		Label passsword=new Label(constants.password());
		TextBox ubox=new TextBox();
		PasswordTextBox pbox=new PasswordTextBox();
		Button button = new Button(constants.login());
	}

码:

public class LoginI18nDemo implements EntryPoint {
public LoginI18nDemo () {}
AppConstants constants=(AppConstants)GWT.create(AppConstants.class);
public void onModuleLoad() {
Label username=new Label(constants.username());
Label passsword=new Label(constants.password());
TextBox ubox=new TextBox();
PasswordTextBox pbox=new PasswordTextBox();
Button button = new Button(constants.login());
Grid g=new Grid(3, 2);
g.setWidget(0, 0, username);
g.setWidget(0, 1, ubox);
g.setWidget(1, 0, passsword);
g.setWidget(1, 1, pbox);
g.setWidget(2, 1, button);
HorizontalPanel links=new HorizontalPanel();
Anchor french=new Anchor("French", GWT.getHostPageBaseURL()+"?locale=fr");
Anchor hindi=new Anchor("Hindi", GWT.getHostPageBaseURL()+"?locale=hi");
links.add(french);
links.add(hindi);
links.setSpacing(5);
RootPanel.get().add(g);
RootPanel.get().add(links);
	}
}

输出:

GWT国际化1
GWT国际化2
GWT国际化3
赞(0)
未经允许不得转载:srcmini » GWT国际化

评论 抢沙发

评论前必须登录!