Java 本地化2024年9月10日 | 阅读10分钟 国际化是指开发软件应用程序的过程,使其能够适应不同的语言和地区,而无需修改应用程序。开发区域性应用程序会增加应用程序的成本,还需要大量的维护。 本地化是指通过翻译文本和添加特定于区域设置的组件来为特定地区或国家调整国际化软件的过程。 因此,最好使用国际化概念来开发应用程序。它节省时间,降低开发成本,并需要较少的维护工作。 在理解本地化一词之前,了解一个经常与它一起阅读的概念很重要,那就是“国际化”。 国际化国际化是指开发支持各种语言、数字格式、货币、日期、时间和其他格式的应用程序的过程。它是任何现代多语言系统的组成部分。由于“i”和“n”之间有 18 个字符,因此国际化生产有一个非常流行的缩写(可能比实际名称更流行)——“I18N”。 现代商业系统需要服务于来自世界不同地区/国家或许多文化区域的人们。不同的文化或语言区域不仅决定了语言的具体含义,还决定了货币类型、数字表示,甚至日期和时间的变体。 例如,看看不同国家的十进制和千位分隔符约定
同样,日期和时间格式也不同。例如
更重要的是,我们知道不同国家有独特的货币符号
请注意,即使某些国家/地区拥有相同的货币和货币符号(如法国和意大利),其货币符号的位置也可能不同。 本地化在 Java 中,我们有一个名为 Locale 类的绝佳功能。它允许我们快速区分文化区域并适当地格式化我们的内容。与 I18N 类似,本地化也有其缩写——“I10N”,因为“I”和“N”之间有 10 个字母。使用 Locale 的主要原因是所有必需的本地特定格式都可以访问,而无需重新编译。应用程序可以一次处理多个区域设置,因此支持新语言非常简单。 本地化也可以定义为使产品内容适应特定地点或语言的过程。翻译单词是此过程的一个广为人知的部分,但它不是唯一的部分。区域设置实践通常包括
即使在语言相同的国家/地区,您也会发现差异,例如,美式英语与英式英语。 本地化的好处
让我们了解如何在编程中实现本地化。 Locale.Builder 另一种选择是 Locale.Builder。Locale.Builder 有五个 set 方法,我们可以使用它们来构建对象,同时验证这些值 上述 Locale 的字符串表示形式是 fr_CA_POSIX_#Latn。 值得注意的是,“variant”设置可能有点棘手,因为对不同的值没有法律限制,尽管 set 方法要求符合 BCP-47。否则,它将抛出 IllformedLocaleException。 在我们需要使用不超过保证的值的情况下,我们可以使用 Locale 构造函数,因为它们不验证值。 Locale 类的重要性Locale 类的对象代表一个地理或文化区域。可以使用此对象来获取区域设置特定的信息,例如国家名称、语言、变体等。 Locale 类的字段Java Locale 类有以下字段
Java Locale 类的构造函数Locale 类有以下三个构造函数,如下所示
Java Locale 类的方法以下是用于本地化 Java 应用程序的方法。 A. getDefault()检测此 Java 虚拟机事件的当前默认位置。 Java 虚拟机在实现期间根据主机位置设置默认位置。当没有显式位置时,它在区域中使用许多区域设置敏感方法。可以使用 setDefault() 方法更改它。 返回值 此 Java 虚拟机实例的默认区域设置。 B. setDefault()为此 Java 虚拟机事件设置默认位置。这不会影响主机的位置。 如果存在安全管理器,则在更改默认位置之前,会调用其 checkPermission 方法 PropertyPermission (“ user.language ”, “ write ”)。 Java 虚拟机在实现期间根据主机位置设置默认位置。当没有显式位置时,它在区域中使用许多敏感方法。 由于更改位置可能会影响许多不同的操作系统环境,因此此方法仅应在调用者准备好重置同一 Java 虚拟机内运行的区域设置敏感代码时使用。 通过以这种方式设置默认位置,该阶段的所有默认区域也将设置为指定的位置。 参数 newLocale: 新的默认区域设置 抛出 SecurityException:如果存在安全管理器,并且其 checkPermission 方法不允许该操作。 NullPointerException:如果 newLocale 为 null C. getISOCountries()返回 ISO 3166 中定义的所有两位国家代码列表。可用于创建区域设置。 注意:Locale 类还支持其他国家/地区代码,例如 UN M.49 3 位城市代码。因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。返回值 ISO 3166 两位国家代码数组。 D. getISOLanguages()语法 它返回 ISO 639 中定义的所有两位语言代码列表。可用于创建区域设置。 注意:ISO 639 不是一个稳定的标准。一些语言代码已更改。此函数返回的列表包含已更改代码的语言的新旧代码。Locale 类还支持最多 8 个字符的语言代码。因此,此方法返回的列表不包含可用于创建区域设置的所有有效代码。 返回值 ISO 639 两位语言代码数组。 E. getScript()语法 它返回此区域设置的脚本,该脚本必须为空字符串或 4 位 ISO 15924 脚本代码。第一个字母大写,其余字母小写(例如“Latin”、“Kyrl”)。 返回值 脚本代码,或在未定义时为空字符串。 F. getCountry()语法 返回此区域设置的国家/地区代码,该代码应为空字符串、大写的 ISO 3166 两位代码或 UN M.49 3 位代码。 返回值 国家/地区代码,或在未定义时为空字符串。 G. toString()语法 它返回此区域设置对象的可视化字符串表示形式,包括语言、国家/地区、变体、脚本和扩展,如下所示。 覆盖 Object 类的 toString() 方法。 返回值 Locale 的可视化字符串表示形式,用于调试。 请注意,语言始终为小写,国家/地区始终为大写,脚本始终为标题大小写,扩展始终为小写。当区域设置没有脚本或扩展时,结果与 Java 6 及更早版本相同。 如果语言和国家/地区字段都缺失,则函数将返回空字符串,即使变体、脚本或扩展字段存在(您不能只有一个变体区域设置,变体必须伴随一个格式正确的语言或国家/地区代码)。如果存在脚本或扩展而缺少变体,则不会在“#”之前添加下划线。 此行为支持调试和与 toString 的旧用途的兼容性,其中只期望语言、国家/地区和变体字段。使用 toLanguageTag() 将 Locale 表示为用于交换目的的字符串。 示例
H. getISO3Language()它返回给定区域设置的三字母语言缩写。如果语言与两位 ISO 6391 代码匹配,则返回相应的三字母 ISO 6392/T 小写代码。可以在 Internet 上找到 ISO 6392 语言代码。如果区域设置指定了三字母语言,则按原样返回该语言。如果区域设置未指定语言,则返回空字符串。 返回值 此区域设置语言的三字母缩写。 抛出 MissingResourceException:如果此区域设置没有三字母语言缩写,则抛出 MissingResourceException。 I. getISO3Country()返回此区域设置的国家/地区的三字母缩写。如果国家/地区与 ISO 31661 alpha2 代码匹配,则返回相应的大写 ISO 31661 alpha3 代码。如果区域设置未指定国家/地区,则为空字符串。ISO 3166-1 代码可在网上找到。 返回值 此区域设置国家/地区的三字母缩写。 J. getDisplayLanguage()返回应显示给用户的本地语言名称。如果可能,恢复的名称将在默认 DISPLAY 位置本地化。例如,如果区域设置为 fr_FR 且默认 DISPLAY 位置设置为 en_US,则 getDisplayLanguage() 返回“French”。如果区域设置为 en_US 且默认 DISPLAY 位置设置为 fr_FR,则 getDisplayLanguage() 返回“inglais”。如果无法在默认 DISPLAY 位置本地化恢复的名称(假设没有克罗地亚语的日语名称),此函数将使用英语名称,并以 ISO 代码作为最后的手段。如果区域设置未指定语言,此函数将返回空字符单元。 返回值 显示语言的名称。 K. getDisplayScript()返回适合向用户显示的区域设置脚本名称。如果可能,该名称将在默认 DISPLAY 区域设置中本地化。如果此区域设置未指定脚本代码,则返回空字符串。 返回值 当前默认 DISPLAY 区域设置的脚本代码的显示名称 L. getDisplayCountry()返回适合向用户显示的区域的国家/地区名称。如果可能,返回的名称将在默认 DISPLAY 区域设置中本地化。例如,如果区域设置为 fr_FR 且默认 DISPLAY 区域设置为 en_US,则 getDisplayCountry() 返回“France”。如果区域设置为 en_US 且默认 DISPLAY 区域设置为 fr_FR,则 getDisplayCountry() 返回“EtatsUnis”。如果无法在默认 DISPLAY 区域设置中本地化返回的名称(假设没有克罗地亚语的日语名称),此函数将使用英语名称,并以 ISO 代码作为最后的手段。如果区域设置未指定国家/地区,此函数将返回空字符串。 返回值 适合区域设置的国家/地区名称。 M. getDisplayVariant()返回适合向用户显示的区域设置变体代码的名称。如果可能,该名称将在默认 DISPLAY 区域设置中本地化。如果区域设置未指定变体代码,此函数将返回空字符串。 返回值 适合区域设置的显示变体代码的名称。 N. getDisplayName()返回适合向用户显示的区域设置名称。这将是 getDisplayLanguage()、getDisplayScript()、getDisplayCountry() 和 getDisplayVariant() 返回的值组合成一个字符串。非空值按顺序使用,第二个及后续名称放在括号中。示例
国家/地区取决于区域设置中指定的字段。如果语言、脚本、国家/地区和变体字段为空,此函数将返回空字符串。 返回值 适合显示的区域设置名称。 让我们在应用程序中实现本地化。 LocaleExample.java 输出 United States English English (United States) USA eng en US 下一个主题Java 中的最小 XOR 值对 |
将矩阵的组件按全向递增顺序排列,需要确保它们在行和列上都递增。为确保矩阵中的数字始终按升序排列,我们可以将矩阵展平成一维数组,对其进行排序,然后重新创建矩阵……
阅读 6 分钟
Java 中的布尔求值是编程逻辑的基础,它使开发人员能够基于求值为 true 或 false 的条件做出决策和控制程序流。这个基本概念围绕使用布尔值、逻辑运算符和条件语句来创建健壮且……
阅读 4 分钟
在竞争性编程中,使用高效可靠的库确实对生产力和性能产生了巨大的影响。在本教程中,我们将重点介绍 Collection Framework 中最重要的容器。Java 标准库包含以下数据结构:1. ArrayList ArrayList 是……的一部分
阅读 24 分钟
Java 提供了三种不同的 getInteger() 方法,可以根据其参数进行区分。它们是:Java Integer getInteger(String nm) 方法 Java Integer getInteger(String nm, int val) 方法 Java Integer getInteger(String nm, Integer val) 方法 1. Java Integer getInteger(String nm) 方法:getInteger(String nm) 方法是……
5 分钟阅读
? 将米转换为公里是各种 Java 应用程序中的常见任务,尤其是在处理不同尺度的距离或测量值时。幸运的是,执行此转换非常简单,只需要几行代码。在本节中,我们将介绍转换过程...
阅读 3 分钟
错误“未找到 Java 虚拟机”是由 IDE 抛出的,IDE 用于执行 Java 代码,例如 Eclipse 或 Netbeans IDE。通常在我们开始在系统上打开 Eclipse IDE 时发生,但它不会打开,因为它……
阅读 4 分钟
? File: SwapWithoutTemp .java public class SwapWithoutTemp { public static void main(String args[]) { String a = "Love"; String b = "You"; System.out.println("Before swap: " + a + " " + b); a = a + b; b = a.substring(0, a.length() - b.length()); a = a.substring(b.length()); System.out.println("After : " + a + " " +...
阅读1分钟
在本节中,我们将讨论如何使用 Java 中的字节数组反转字符串。以下是使用 Java 中的字节数组反转字符串的步骤。此方法的第一步是生成一个长度为……的临时字节数组
阅读 4 分钟
Java 8 为多线程引入了多项新功能和改进,使编写高效、并发的程序更加容易。以下是一些关键功能:Lambda 表达式:Java 8 中最重要的一个新功能是 lambda 表达式,它允许您编写简洁的……
阅读 3 分钟
Java 是一种通用且功能强大的编程语言,以其强大的类型系统而闻名。增强类型安全并促进代码重用的关键功能之一是边界类型。边界类型允许开发人员对可用作泛型的类型施加约束...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India