gpt4 book ai didi

java - 在 Java/Spring 中,如何优雅地处理缺失的翻译值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:59 32 4
gpt4 key购买 nike

我正在为一个国际网站使用 Java + Spring。

这两种语言是 ZH 和 EN(中文和英文)。

我有 2 个文件:messages.properties(用于英文键/值对)和 messages_zh.properties。

该网站使用#springMessage 标签以英文编码。然后我使用 Poeditor.com 让翻译人员为每个英文短语提供中文值。因此,尽管英文 messages.properties 文件始终是完整的,并且尽管 messages_zh.properties 文件始终包含所有,但 messages_zh.properties 文件有时会有空白 因为几天后我收到了翻译人员的翻译。

我需要我的系统在缺少中文值时显示等效的英文值(在我的网站上)。

当中文值不可用时,我如何告诉 Spring “后退”以使用英文?我需要在逐个值的基础上发生这种情况。

现在,我在网站上看到缺少中文值的空白按钮标签。我宁愿在中文空白时使用英语(默认语言)。

最佳答案

您可以为此目的创建自己的自定义消息源。

类似于:

public class SpecialMessageSource extends ReloadableResourceBundleMessageSource {

@Override
protected MessageFormat resolveCode(String code, Locale locale) {
MessageFormat result = super.resolveCode(code, locale);
if (result.getPattern().isEmpty() && locale == Locale.CHINESE) {
return super.resolveCode(code, Locale.ENGLISH);
}
return result;
}

@Override
protected String resolveCodeWithoutArguments(String code, Locale locale) {
String result= super.resolveCodeWithoutArguments(code, locale);
if ((result == null || result.isEmpty()) && locale == Locale.CHINESE) {
return super.resolveCodeWithoutArguments(code, Locale.ENGLISH);
}
return result;
}
}

并在spring xml中将这个messageSource bean配置为

<bean id="messageSource" class="SpecialMessageSource">
.....
</bean>

现在要解析标签,您将调用 MessageSource 的以下任一方法

String getMessage(String code, Object[] args, Locale locale);
String getMessage(String code, Object[] args, String defaultMessage, Locale locale);

resolveCode() 将在您的消息标签有参数并且您通过 args 参数传递这些参数时调用,如下所示
invalid.number= {0} 无效
然后调用 messageSource.getMessage("INVALID_NUMBER", new Object[]{2d}, locale)

resolveCodeWithoutArguments() 将在您的消息标签没有参数并且您将 args 参数作为 null
时调用validation.success = 验证成功
然后调用 messageSource.getMessage("INVALID_NUMBER", null, locale)

关于java - 在 Java/Spring 中,如何优雅地处理缺失的翻译值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152710/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com