首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语言切换- l10n I18n

语言切换- l10n I18n
EN

Stack Overflow用户
提问于 2019-10-17 19:15:29
回答 3查看 289关注 0票数 1

Java/Vaadin中的语言切换是如何工作的?我有一个网络应用程序,并想集成一个组合框,它改变了这个应用程序中的每个文本的语言。是否需要标记每个需要手动翻译的文本并定义其翻译?将此函数实现到exting项目中有多复杂?

EN

回答 3

Stack Overflow用户

发布于 2019-10-17 20:24:54

是否需要标记每个需要手动翻译的文本并定义其翻译?

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

如何在Java/Vaadin中进行语言切换?

您需要提供一个实现I18NProvider的类。有关这方面的文档可以在here中找到

一旦正确实现,您将能够在任何组件上调用getTranslation("HelloWorld") (因此在任何视图上,因为它们必须扩展组件),以接收在当前UI-Locale的ResourceBundle-file中定义的键"HelloWorld“的翻译。

当区域设置发生更改时,会通知扩展LocaleChangeObserver的视图,然后您可以再次调用getTranslation("HelloWorld")来查找新设置的语言的翻译。

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

参见我的this SO answer,我在那里发布了一个充当语言切换器的Select组件的示例代码。它同时使用ResourceBundle和I18NProvider。(您也可以使用ComboBox,但缺点是您只能显示所选值的字符串)

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

将此函数实现到exting项目中有多复杂?

这在很大程度上取决于您对complex的定义,以及您对ResourceBundles的熟悉程度。当然,还有比这更简单的主题,但I18N从来都不容易。在我看来,Vaadin为开发者提供了一种在我们的应用程序中使用I18N的方法,这是一项非常伟大的工作。

票数 3
EN

Stack Overflow用户

发布于 2019-10-17 19:19:37

基本上,您使用键和值系统为每种语言创建一个文本文件,在该文件中使用键和翻译值命名每个翻译后的消息。然后,您可以使用这些键(应该是预定义的)来获取所需语言的正确消息。这些文件可以是任何东西,但是如果你正在寻找一个简单的java实现,那么有一些非常简单的方法可以做到。有关示例,请查看here

票数 0
EN

Stack Overflow用户

发布于 2019-10-17 19:53:18

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58431328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档