语言切换-L10N I18N

时间:2019-10-17 11:15:28

标签: java localization internationalization vaadin

语言切换在Java / Vaadin中如何工作?我有一个Web应用程序,并且想要集成一个组合框,该组合框会更改此应用程序中每个文本的语言。我是否需要标记应手动翻译的每个文本并定义其翻译?将这个功能实现到现有项目中有多复杂?

3 个答案:

答案 0 :(得分:3)

  

我需要标记每个应手动翻译的文本并定义其翻译吗?

您应该使用ResourceBundles来存储/读取字符串的翻译。

  

语言切换在Java / Vaadin中如何工作?

您需要提供一个实现await的类。可以找到有关该文档的文档here

实施正确后,您将可以在任何组件上(因此在任何视图上调用I18NProvider,因为它们必须扩展组件),以接收ResourceBundle中定义的键“ HelloWorld”的翻译,当前用户界面语言环境的文件。

更改语言环境时,将通知扩展了getTranslation("HelloWorld")的视图,然后您可以再次调用LocaleChangeObserver来查找新设置的语言的翻译。

  

我想集成一个组合框,该组合框可以更改此应用程序中每个文本的语言。

请参阅我的this SO answer,我在其中发布了getTranslation("HelloWorld")组件的示例代码,该组件充当语言切换器。它同时使用ResourceBundle和I18NProvider。 (您也可以使用ComboBox,但缺点是只能显示所选值的字符串)

该代码中最重要的部分是Select具有一个Select来设置VaadinSession的语言环境,这又将触发您的视图现在应实现的LocaleChangeObserver的ValueChangeListener方法。在localeChange方法中,您可以重新翻译视图中每个组件的可翻译字符串;在localeChange中设置新文本,为Labels设置新标签和占位符,等等。

  

将此功能实现到现有项目中有多复杂?

这在很大程度上取决于您对TextFields的定义以及您对ResourceBundles的熟悉程度。当然,没有那么复杂的主题了,但是I18N绝非易事。我认为,Vaadin在为开发人员提供在我们的应用程序中使用I18N的方法方面做得非常出色。

答案 1 :(得分:0)

大多数人使用某种翻译文件系统进行本地化。基本上,您会使用键和值系统为每种语言创建一个文本文件,并在其中使用键和翻译后的值命名每条翻译的消息。然后,您可以使用这些键(应该预先定义)来获取所需语言的正确消息。这些文件确实可以是任何东西,但是如果您正在寻找一个简单的Java实现,那么可以使用非常简单的方法来实现。例如看here

答案 2 :(得分:0)