首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Java中,资源包是否有可能退回到宏语言(例如nynorsk -> norsk)

在Java中,资源包是否有可能退回到宏语言(例如nynorsk -> norsk)
EN

Stack Overflow用户
提问于 2011-03-18 04:18:11
回答 2查看 1.3K关注 0票数 1

web浏览器可以使用接受语言头请求一种语言,并列出若干种语言。Safari只列出OSX上的一种语言,这是操作系统中的当前语言集。现在,这是一个问题,当涉及到挪威。挪威有三种语言代码ISO 639-1 (nb,nn,no).nb是Bokm l,nn是Nynorsk,no是组成这两种语言的“宏语言”。

如果我们只有一个Bokm l l10n,那么最好将Bokm l版本提供给请求Nynorsk的人,而不是回到默认的语言。在我看来,在没有完美匹配的情况下,应该可以解决“最佳匹配”服务器端的问题(例如,nb和nn似乎都会回到不匹配状态,这似乎是一个小小的飞跃)。目前,客户端有责任提供一份已被接受的语言列表。

应用程序在JSP中,并使用JSTL来本地化最终被解析为资源包的String。

同样的问题也适用于以书面形式存在的其他宏语言。

那么,如何在不重复语言资源的情况下处理这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-22 04:32:52

因此,我以一种通用的方式解决了这个问题,它允许我为所有的way应用程序集中定义“后备”语言服务器端。

我所做的就是包装HttpServletRequest并拦截getAttribute用于javax.servlet.jsp.jstl.fmt.localizationContext.request。它通常是一个字符串(ResourceBundle的基本名称),但是您可以解析它并用一个LocalizationContext替换它,然后fmt:message标记将使用它。解析它时,您将传递一个ResourceBundle.Control,即执行适当映射的实现getFallbackLocale

现在,看一看宏观语言列表,我没有看到任何其他显而易见的语言,这些语言是常见的(例如,我怀疑人们用当地的阿拉伯语冲浪,但现在我已经做好了准备:)但在挪威,我认为Bokm l和Nynorsk都是不可避免的,在网络上普遍使用,而且肯定有很多网站只局限于其中之一。

票数 1
EN

Stack Overflow用户

发布于 2011-03-18 04:36:50

为Nynorsk语言创建一个类资源包,并将其父包设置为Bokmal包。有关如何加载包的说明,请参见http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader%29

代码语言:javascript
运行
AI代码解释
复制
public class foobar_nn extends ListResourceBundle {
    public foobar_nn {
        setParent(ResourceBundle.getBundle("foobar", new Locale("nb")));
    }

    @Override 
    protected Object[][] getContents()  {
        return new Object[0][0];
    }
}

或者,只需更改构建过程,以便将每个xxx_nb.properties文件复制到xxx_nn.properties。

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

https://stackoverflow.com/questions/5351863

复制
相关文章

相似问题

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