Tag: internationalization

JSF国际化f:loadbundle或通过faces-config:性能点

有两种方法可以将属性文件加载到JSF 2.0中。 全局资源包全局加载属性文件,以便所有jsf页面都可以访问消息。 您可以创建“faces-config.xml”文件并显式声明属性文件。 faces-config.xml中 com.mkyong.messages msg 选项2:本地资源包在本地或仅为指定页面加载属性文件。 在需要访问messages.properties中的消息的页面中声明标记。 在这两个中哪一个给了我更好的表现? 假设我使用第一个选项,是否意味着在应用程序启动期间所有捆绑包都被加载或是否是延迟加载? (一经请求) 如果选择第二个选项,是否可能导致每个ViewRoot多次加载bundle? Java ResourceBundle是工厂类,它在servlet容器中提供单例对象吗? 我的意思是getBundle方法是工厂方法,它总是创建单独的对象? ResourceBundle myResources = ResourceBundle.getBundle(“MyResources”, currentLocale); 假设我有一个页面abc.xhtml,我使用的是f:loadBundle,有1000个用户访问此页面,这是否意味着会创建1000个resouceBundle对象? 或者它只是所有页面实例共享的对象?

使用iText Java的pdf中的日文/中文文本

我需要在java中使用iText将xml web响应中的日文/中文文本添加到pdf中。 我将KozMinPro-Regular.ttf复制到我的c:\ WINDOWS \ Fonts文件夹后尝试了以下代码但是失败了。 Font font = new Font(BaseFont.createFont(“KozMinPro-Regular”, “UniJIS-UCS2-H”, BaseFont.EMBEDDED), 10); 谁能帮我?

使用AcceptHeaderLocaleResolver和i18n的Spring Security

我卡住了,可能在文档中遗漏了一些东西或犯了一些小错误。 Spring Security 3.0.5集成在我的Spring MVC 3.0.5应用程序中。 AcceptHeaderLocaleResolver用于区域设置检测和本地化工作正常,但安全性错误消息除外。 我从spring安全包复制了messages.properties并重命名并添加到带有值列表的现有“messageSource”bean(ResourceBundleMessageSource) 。 如前所述,所有文本和消息都已正确本地化,除了安全接缝以使用硬编码的英语消息。 任何想法如何解决这个问题? 更新: 我的xy-servlet.xml包含: … … defaultMessages securityMessages 和文件 defaultMessages.properties defaultMessages_en.properties defaultMessages_de.properties defaultMessages_sl.properties 和 securityMessages.properties securityMessages_en.properties securityMessages_de.properties securityMessages_sl.properties 但defaultMessages工作正常。 securityMessages没有。 我对所有securityMessages文件进行了小的更改,但忽略它们并显示硬编码的英语消息。 更新v2:我的dispatcher-servlet.xml: defaultMessages securityMessages org/springframework/security/messages_de

beanvalidation默认参数的顺序?

我目前正在尝试使用beanvalidation提供自定义validation消息。 目前使用spring mvc 3.1.1 + apache beanvalidation。 在我的bean中,我指定: @Size(min=1, max=50) private String title; 在我的messages.properties中: Size.addForm.title=The title must not be empty and must not exceed {1} characters. 从实验中我发现: {0}指’标题’ {1}指的是最大值,即50 {2}指的是min,即1 并且它将显示为The title must not be empty and must not exceed 50 characters. 哪个是对的。 但所有这些都来自实验。 我想知道是否有文件说明默认约束的参数顺序 ? 我希望使用Size.addForm.title=The title must not be empty and must not […]

编写Spring Resource Boundle时是否有单一规则来处理单引号?

Spring的ResourceBundleMessageSource使用MessageFormat替换消息中的占位符( {0} )。 MessageFormat要求使用两个单引号( ” )转义单引号( ” )(请参阅: MessageFormat Javadoc )。 但是,默认情况下, MessageFormat不会解析不包含任何参数的消息,因此不需要对不带参数的消息中的单引号进行转义。 因此,您的翻译人员必须了解编写和维护资源包的两个规则 : 如果带有单引号的消息也包含至少一个占位符( {0} ),则写入( ” ); 如果带有单引号的消息不包含占位符,则写入( ‘ )。 编写Spring Resource Boundle时是否有单一规则来处理单引号?

Java i18n:每个包使用一个ResourceBundle访问器,还是整个项目使用一个?

我对国际化一无所知。 我有一个包含多个包的项目。 我正在使用Eclipse的内置“Externalize Strings”向导将我的类中的String常量提取到属性文件,并将这些字符串替换为对静态访问器的调用。 而不是 System.out.println(“Hello, world!”); 我结束了 System.out.println(Messages.getString(“MyKey”)); 每个包中都有一个Messages实用程序类(它提供了一个静态getString方法,用于从ResourceBundle获取所需的String [在本例中为.properties文件])。 是否最好在每个包中都有一个Messages类,或者为整个项目设置一个Messages类?

在Java中,我如何找到我的Resource Bundle可用的语言

我在主jar中打包了一些资源包 widget_en.properties widget_de.properties 我根据我的默认语言环境检索资源包作为folows ResourceBundle.getBundle(“widget”, Locale.getDefault()); 但我想向用户提供支持的可用语言列表,以便选择可能与其计算机默认的语言不同的语言 但我在ResourceBundle中找不到列出可用语言环境的方法,我不想对列表进行硬编码,因为我可能忘记在添加另一个资源包时更新它。 编辑 由于我只使用不同语言的资源包(我没有国家改进)所以我通过迭代所有已知的语言代码生成了一个列表,并检查每一个作为资源。 String[]langs = Locale.getISOLanguages(); for(String lang:langs) { URL rb = ClassLoader.getSystemResource(“widget_”+lang+”.properties”); if(rb!=null) { System.out.println(“Found:”+rb.toString()); } }

JavaFX:在运行时更改应用程序语言

我正在使用FXML中描述的核心组件制作JavaFX桌面应用程序,我想为用户提供更改语言的选项。 但是,一旦从FXML加载组件,我还没有找到任何直接的方法来更改语言。 问题是如何处理在JavaFX中切换语言的任何标准方法。

如何使用ResourceBundle

我正在尝试掌握java应用程序的内部化,如下所示。 我不能。 我创建了一个扩展ListResourceBundle的类,并尝试检索键。 我不断得到例外。 如果您查看教程,它会说使用.class文件。 这不可能是对的,可以吗? [项目树] [源代码] 以下是我正在使用的两个类,只是MainWindow_xx_XX.java文件中的一个,因为它们基本相同。 首先是ListResourceBundle: public class MainWindow_en_US extends ListResourceBundle { @Override protected Object[][] getContents() { return contents; } private Object[][] contents = { {“fileLabel”, “File”}, {“newSessionLabel”, “New session…”}, {“openSessionLabel”, “Open session…”}, {“saveLabel”, “Save”}, {“exitLabel”, “Exit”}, {“editLabel”, “Edit”}, {“toolsLabel”, “Tools”}, {“helpLabel”, “Help”} }; } 现在我用它加载它的方法: private static final int DEFAULT_LOCALE […]

Custom Spring Boot starter:你如何向MessageSource贡献i18n消息?

我正在编写一个自定义的Spring Boot启动程序,其他开发人员将放入他们的应用程序,这个启动程序包含开箱即用的控制器和UI屏幕。 这些UI屏幕是国际化的,i18n键/值位于包文件中: com/foo/wherever/i18n.properties 。 我想确保在启动时加载我的启动器时,这些i18n.properties在应用程序的MessageSource自动可用,以便我的UI页面工作(通过普通的Spring Controller + ViewResolver + View实现呈现), 而app开发人员不必指定这个文件本身 。 换句话说,他们应该能够将我的启动器添加到他们的运行时类路径中,并且一切“正常工作”而无需配置任何东西。 现在,我发现app开发人员可以创建自己的src/main/resources/messages.properties文件, 并在application.properties手动配置其他消息文件: spring.messages.basename = messages, com.foo.wherever.i18n 这将有效。 但是,这需要以下两个方面: 他们必须手动配置spring.messages.basename属性 – 它不是自动的。 和 它们必须在其应用程序类路径中拥有自己的messages.properties文件。 如果messages.properties文件不存在,则spring.messages.basename甚至不起作用。 即使他们不关心i18n,这仍然是必需的 – 不可取。 我想我可以将我的i18n.properties文件移动到启动器.jar中的类路径:/messages.properties文件中,但这似乎不是一个好的解决方案:如果app dev有自己的messages.properties文件只有一个它们将被读取,导致消息值丢失。 看起来好像Spring Boot MessageSourceAutoConfiguration应该有一个CompositeMessageSource的概念,它迭代Spring ApplicationContext中可用(和Order ed)的一个或多个MessageSource实例,并由DispatcherServlet使用。 这将允许任何启动器仅通过在其自动配置中声明MessageSource来贡献可用消息 有可能做我的要求吗? 应用程序开发人员最关心的解决方案是什么?