本文概述
- 静态字符串国际化
- 动态字符串国际化
- 可本地化的界面
- GWT国际化的实施
- 以一种可以与不同地区或国家/地区语言兼容的方式设计应用程序的技术。
- 国际化要求将要国际化的使用数据分离到属性文件中。
- 它类似于Java编程语言, 在Java编程语言中, 国际化是通过Resource Bundles实现的。为每个需要支持的语言环境创建.properties文件的位置。
- 静态字符串国际化
- 动态字符串国际化
- 可本地化的界面
- 这是翻译常量和参数化字符串的好技术。
- 这是最简单的实现方法, 因为它只需要很少的开销。
- 它使用标准Java属性文件存储转换后的字符串和参数化消息。
- 动态字符串国际化比静态字符串国际化慢, 但更灵活。
- 使用此技术的应用程序看起来像模块主页中的本地化字符串。由于这种技术, 添加新的语言环境时不需要重新编译它们。
- 这是实现接口的最强大的技术。
- 这是一种很少使用的高级国际化技术。
- 我们需要高级来实现Localizable接口, 以实现简单的字符串替换。它还会创建自定义类型的本地化版本。
<
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: Usernamepassword: Passwordlogin: Login
AppConstants_fr.properties支持法语语言环境。键/值对如下。
username: Nom d'utilisateurpassword: Mot de passelogin: 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 methodsLabel 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国际化】输出:
文章图片
文章图片
文章图片
推荐阅读
- GWT简介
- GWT安装详细步骤
- GWT HTMLPanel用法
- GWT历史记录机制
- GWT网格用法
- GWT FormPanel用法
- GWT FlowPanel用法
- GWT FlexTable用法
- GWT对话框