关于 Java 中的区域设置 class

About Locale class in Java

我在 Android 上使用 TTS 方法,它以 Locale 实例作为参数。所以我用谷歌搜索了 class Locale 并找到了一些示例代码。但是我不明白下面的用法有什么不同,因为我用 TTS 方法测试了它们,它似乎对我来说都是一样的。

Locale("ja")
Locale("ja_JP")
Locale("ja", "JP", "")
Locale.JAPAN
Locale.JAPANESE

有什么不同吗?

documentation for the Locale class describes this in (almost excruciating) detail. The valid language, country, and variant codes are described in ISO 639.

以下是您给出的五个例子之间的区别:

  • ja简单描述没有国家的日语。
  • ja_JP 指定日语和日本国家
  • 三参数构造函数将语言、国家和变体拆分为单独的参数。 Locale("ja", "JP", "") 等同于 Locale("ja_JP"),因为没有提供变体。
  • Locale.JAPANja_JP(日本国家/地区)的常量快捷方式。
  • Locale.JAPANESEja(日语)的固定快捷方式。

这一切是什么意思?好吧,这取决于它的使用位置。区域设置与许多不同的 API 一起使用,包括日期时间 API、文本到语音 API 等等。

在文本到语音的上下文中,可以通过多种方式使用语言环境,例如:

  • 选择合适的语音
  • 对某些单词应用适当的变形。不同的语言环境可能会以不同的方式说出同一种语言中的同一个词。
  • 将某些非单词翻译成语音。例如,不同的语言环境可能会以不同的方式表达数字或分数。

一般来说,您希望在选择语言环境时尽可能具体和准确。