当前位置: 首页 > 面试题库 >

如何在Java中将Microsoft Locale ID(LCID)转换为语言代码或Locale对象

伊锦
2023-03-14
问题内容

我需要将Microsoft语言环境ID(例如1033(对于美国英语))转换为ISO
639语言代码
或直接转换为Java
语言环境实例。(编辑:或者甚至只是进入Microsoft表中的“语言-
国家/地区”。)

这可能吗,最简单的方法是什么?当然,最好仅使用JDK标准库,但如果不可能,则使用第三方库。


问题答案:

看起来似乎还没有现成的Java解决方案可以进行这种映射,因此至少在目前为止,我们花了大约20分钟的时间来展示我们自己的东西。

我们从马口中获取了信息,即http://msdn.microsoft.com/en-
us/goglobal/bb964664.aspx
,并将其复制粘贴(通过Excel)到.properties文件中,如下所示:

1078 = Afrikaans - South Africa
1052 = Albanian - Albania
1118 = Amharic - Ethiopia
1025 = Arabic - Saudi Arabia
5121 = Arabic - Algeria 
...

(如果您有类似的需求,可以在这里下载文件。)

然后是一个非常简单的类,该类将.properties文件中的信息读取到映射中,并具有进行转换的方法。

Map<String, String> lcidToDescription;

public String getDescription(String lcid) { ... }

是的,这实际上并不映射到 语言代码Locale对象 (这是我最初要求的),而是映射到Microsoft的“语言-
国家/地区”描述。事实证明,这足以满足我们当前的需求。

免责声明:这确实是用Java自己完成的一种简单的“虚拟”方式,显然,在您自己的代码库中保留(和维护)LCID映射信息的副本不是很优雅。(另一方面,我既不想包含一个巨大的库jar,也不想为这个简单的映射做任何过于复杂的事情。)因此,尽管有这个答案,但是如果您知道类似的东西,请
随时发布更优雅的解决方案或现有的库



 类似资料:
  • 我正在尝试将我的Java类转换为静态编程语言,这是Java代码: 这就是我把它转换成的: Lambda符号似乎根本不起作用,或者我就是搞不懂。我在Kotlin中发现的所有双函数示例都直接返回这样的值 双函数{名称,年龄- 这在语法上是正确的,但在返回某些内容之前,我需要一些额外的逻辑。出现两条错误消息: > 类型不匹配。必需:单位,找到:字符串 但我确实想返回一个字符串,我还显式声明了它。但是,还

  • 问题内容: 有没有办法将a 变成a 或将一个字母变成a (例如如何将a 变成a 和a 变成an )?(如果可以,请链接到相关文档)。 我该如何找到在文档中才隐约知道的类似内容? 问题答案: 您可以通过确定可能涉及的类来查找文档。在这里,候选人是和。 您应该先熟悉以下内容: 原始包装 中的Java Collection框架 它还有助于通过教程更慢地介绍API。 处理字符串中的字符

  • 问题内容: 我正在将Java库移植到C#。我使用的是Visual Studio 2008,因此没有停止使用的Microsoft Java语言转换助手程序(JLCA)。 我的方法是创建一个与Java库具有类似项目结构的新解决方案,然后将Java代码复制到ac#文件中,并将其逐行转换为有效的c#。考虑到我觉得Java易于阅读,两种语言之间的细微差别使我感到惊讶。 有些事情很容易移植(命名空间,继承等)

  • 如何将hashmap转换或强制转换为Java中的JSON对象,并再次将JSON对象转换为JSON字符串?

  • 最近,我开始使用OpenCSV的CSVReader将数据从CSV文件获取到java中的JTable,但我不断收到错误。DaTroop在这里给出了如何从CSV获取数据的答案:将CSV导入JTable 到Netbeans IDE 7.4,但我一直得到错误“不兼容的类型-对象无法转换为TableModel”。在……里 有什么想法吗? 谢谢 正如在评论中一样,请找到我的整个代码片段。JFrame可以工作和

  • 问题内容: 我有一个3band的geotiff图像。 band1,2是实际图像值,band3是实例角度值。 band1,2是float32数据类型 根据代码是我尝试过的。 但这不起作用。 我认为频段数据的范围太大,所以不会 我怎么解决这个问题?? 问题答案: 您可以为此使用。 您可以在这里阅读文档 上面的代码仅创建了一个带1缩放到字节范围的jpg文件。您可以通过添加等来添加更多频段。另外请注意,小