GWT国际化

本文概述

  • 静态字符串国际化
  • 动态字符串国际化
  • 可本地化的界面
  • 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: 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国际化

文章图片

    推荐阅读