- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们有一个 Java 应用程序,可以根据浏览器语言设置在用户的浏览器 session 中呈现本地化文本。该应用程序读取浏览器语言设置 [在应用程序请求的 header 中设置] 并准备本地化文本。但最近我们遇到了 Mozilla 5.0 版本浏览器的问题。请注意我们的代码在 IE 中运行良好。以“ja”语言为例,我们希望浏览器将可接受的语言发送为“ja-JP”[IE 会这样做]——但不幸的是,Mozilla (FF) 不会——它只将浏览器接受的语言发送为“ja”。因此,我们着手使用默认语言生成内容。
由于我们正在为相同的问题提供修复 - 基本上类似于映射 [语言代码到语言国家代码] 比如 - 'ja' 到 'ja-JP' 然后创建一个新的语言环境 [仅当 2 位语言代码出现在 in 之后request] - 我的问题是针对其他浏览器的,例如
Mạ crôm
Safari
等
header 中发送的语言格式是什么?
所以有一个像这样的数组
ja-JP = ja-JP
ja = ja-JP
并将浏览器语言映射到语言国家代码将有助于解决该问题。但是,我们是否需要解决任何特定的限制条件——比如是否存在在多个地方使用的语言——如果是这样,那么我们将如何处理?
还有什么需要注意的吗?
Cảm ơn trước.
câu trả lời hay nhất
看java.util.ResourceBundle
类,主要是getBundle()
方法。 (你可以使用这个,或者自己实现一个类似的机制。)
原则上,您有语言环境的层次结构,只要没有特别支持语言环境,您就会回退到父语言环境。在您的情况下,"ja_JP"
(以 Java 表示法)具有父语言环境 "ja"
,而父语言环境又具有父语言环境 ""
.
由于大多数日文页面并不特定于日本,您通常会为 ja
完成所有日文翻译,并且仅当某些特殊内容仅对日本的日文用户有效时,才会另外添加ja_JP
。那么如果某些用户发送 jp_US
也没有问题,因为他在美国使用日语。
如果您只想使用 Java ResourceBundle 机制来指示我们有哪些区域设置的数据,您可以创建(例如)这些(空)文件:
然后在你的程序中你会写
Locale rLocale = request.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle("MyLocale", rLocale);
Locale selectedLocale = bundle.getLocale();
现在 selectedLocale 肯定是“”、“de”、“en”、“jp”之一,无论 rLocale 是什么区域设置。例如,对于“en”、“en_GB”、“en_US”,在所有情况下都会选择“en”,“ja”和“ja_JP”都会导致“ja”,而“de_DE”和“de_AT”都会结果为“de”,“it_IT”、“eo”和大多数其他语言环境将导致“”。
执行此操作的“正确 Java 方法”:您不会询问您的包有关其 Locale 的信息,而只是将包用作 ResourceBundle,从中获取本地化资源。所以,当你需要一些文本时,你会这样做
String text = bundle.getText("greeting.hello");
然后输出文本。有时您会使用 MessageFormat 来格式化带有插入值的文本(或 Formatter)。 (那么您的属性文件当然不会是空的,而是包含如下行:
greeting.hello = Hello World!
(在英文文件中)
greeting.hello = Hallo Welt!
(在德语文件中)
请注意,浏览器通常不仅会发送一个区域设置代码,还会发送一个首选代码列表。因此,您实际上应该为这些代码中的每一个执行此“捆绑搜索”,并获取第一个确实返回除“”之外的其他内容的代码,并且仅当没有请求的语言匹配时才回退到“”。 (例如,我的浏览器发送“eo”、“de_DE”、“de”、“en”。由于大多数网站不支持世界语,它们会回退到德语(如果可用并且选择正确实现),或者到默认语言(如果他们只查看第一个条目))。
关于java - 检测浏览器区域设置/语言并生成输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047298/
在使用 GDI 进行图形处理的传统 Windows 程序中,您必须担心只绘制需要重绘的窗口区域;这是“更新矩形”,可以通过 PAINTSTRUCT.rcPaint 或通过调用 GetUpdateRec
我对 TFS 中的所有内容感到困惑。有人可以解释一下所有这些是如何组合在一起的吗? 团队项目合集 团队项目 团队 地区 迭代 来自 this page,我认为一个(团队)项目集合可以包含多个(团队)项
这对我来说根本没有意义。创建新的 API 网关时,您可以指定它是区域优化的还是边缘优化的。但话又说回来,当您为 API Gateway 创建自定义域名时,您可以在两者之间进行选择。 最糟糕的是,您可以
我有一个工作表,其中包含我想循环遍历的许多不同区域。我将进行一些计算,并认为它比在列中逐个单元格地更快/更有效。 我尝试了一些不同的东西,但不知道如何跳到下一个区域。我已经发表了一些评论,最有希望的是
最近迁移到 TFS 2010 后,我想知道对于区域而言,最佳或最广泛接受的定义或配置是什么? 我能在网上找到的唯一有用的文章是 this one并且是我认为是正确的。然而,这让我开始思考是否以下任何一
我在“北欧”有一个存储帐户,现在我想使用生命周期管理将冷 blob 移动到存档层。 但是我每次尝试都会遇到以下失败:无法为存储帐户“myStorageAccount”添加生命周期管理规则。错误:管理策
我正在开发一个项目,您在扫描仪中输入州的缩写,然后程序会告诉您该州位于美国的哪个地区。我认为我的大部分代码都是正确的,但我有以前从未使用过 switch。 我已经将我的工作改进为一个错误,即我的第一个
我正在尝试学习 AngularJS,我想我有一个架构问题。 如果我想开始开发一个应用程序,比方说,比如 youtube,我如何在“区域”(比如 Marionette)中组织页面?我的意思是:顶部导航栏
我正在制作一个动态内存分配器,当我释放其中的一部分时,我需要检查我传递给函数的指针实际上是否在该区域内。我有一个指向 malloc 区域开头的指针 typedef unsigned char byte
有时我想看看 到底在哪里页面上图片上的标签。 在 Javascript 中有没有办法改变颜色或隐藏与区域标签对应的图像部分? 最佳答案 也许您正在寻找类似 mapper.js 的内容.它允许您在鼠标
我有一个使用 D3 js 创建的时间序列图表。我想为特定时间间隔添加高亮区域,以显示在该特定时间发生的特定事件(会有不同类型的事件,因此每个高亮标记将根据其类型具有不同的颜色)。我希望这个突出显示区域
我正在尝试创建网站的密码保护区。我想通过检查 MySql 表中的用户名和密码来允许访问,然后启动一个 session 并允许在 session 处于事件状态时访问多个页面。如果有人尝试直接访问这些页面
在 ScrollView 中我添加了几个按钮。正如您在图片中看到的,2 个按钮完全可见,第三个按钮半可见。当我向右滚动看到第三个时;1-如果滚动条很短,则它会滚动回到第一个位置。2- 如果滚动足够则显
我正在开发我的第一个 spritekit 应用程序,并且有一个关于如何处理我想到的事情的快速问题。我正在制作一个我想要的棋盘游戏原型(prototype),并希望在 iOS map 中进行一些集思广益
在我的 C# 程序中,我收到这样的日期和时间:DateTime.Now 我得到:19/09/2010 20:10:30 因为我的地区是:希伯来语(以色列) 但是如果我将我的程序安装在区域为 Engli
有时我在 Visual Studio 的源文件中运行(在我的例子中是 2010),我看到很多区域,我必须点击 + 号才能一个一个地打开它们! 是否有任何快捷方式或菜单选项可以使这对我来说更容易,并且对
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện câu hỏi này? Cập nhật câu hỏi để việc chỉnh sửa bài đăng này có thể trả lời nó bằng các sự kiện và trích dẫn. Đã đóng 7 năm trước. Cải thiện
我正在寻找二维数据中的峰值区域(如果您愿意,灰度图像或二维景观,通过霍夫变换创建)。 峰值区域是指局部最大峰值,但不是单个点而是周围的一部分strong>contributing region 随之而
我希望能够将任何字符或字符串转换为形状或区域,以便我可以按照我喜欢的任何大小、样式、效果等来绘制该字符。 更具体地说,我将使用视差绘制它,以便它仅在特定角度清晰定义(这就是为什么我不能使用 html
我非常喜欢数学(或者你们大多数人会说的“数学”!),但我还没有达到知道这个问题答案的程度。我有一个主圆,它可以在显示器上的任何 x 和 y 处有一个中心点。其他圆圈将随意在显示器周围移动,但在任何给定
Tôi là một lập trình viên xuất sắc, rất giỏi!