如何用印尼语本地化 Android 应用程序

问题描述 投票:0回答:2

我需要将我的应用程序本地化为印度尼西亚语语言。 我的应用程序的资源文件夹包含每种语言的“values”子文件夹列表,例如“values-fr”文件夹。

但是我在 Android 开发者文档上读到了令人困惑的信息。

请注意,Java 使用了多个已弃用的两字母代码。希伯来语(“he”)语言代码被重写为“iw”,印度尼西亚语(“id”)被重写为“in”,意第绪语(“yi”)被重写为“ji”。即使您构造自己的 Locale 对象,这种重写也会发生,而不仅仅是各种查找方法返回的实例。

如何理解这一点? 基本上,我应该将文件夹命名为“values-in”或“values-id”,以便它在具有印度尼西亚语区域设置的设备上正确显示印度尼西亚语文本吗?

android localization
2个回答
60
投票

Android 上印尼语的资源文件夹应命名为:

  • 原始
  • 价值观

0
投票

2024 年 12 月更新。

随着 Android 15 的发布,请注意针对 Android 15 或更高版本的应用程序的更改 (

targetSdk = 35
):

语言代码处理的更改:使用 Locale API 时,希伯来语、意第绪语和印度尼西亚语的语言代码不再转换为其过时的形式(希伯来语:iw、意第绪语:ji 和印度尼西亚语:in)。指定其中一种语言环境的语言代码时,请使用 ISO 639-1 中的代码(希伯来语:he、意第绪语:yi 和印度尼西亚语:id)。

来源:https://developer.android.com/about/versions/15/behavior-changes-15#openjdk-api-changes

实际上,这意味着以下代码(使用“in”):

println("Locale.forLanguageTag: ${Locale.forLanguageTag("in")}")
println("Locale constructor: ${Locale("in")}")

产生带有“id”的结果:

2024-12-19 01:38:52.521  7465-7465  System.out ...  I  Locale.forLanguageTag: id
2024-12-19 01:38:52.521  7465-7465  System.out ...  I  Locale constructor: id

就我而言,迁移到 Android 15 后,此更改破坏了自定义的应用内语言选择器。

资源文件夹

似乎什么都没有改变,只是

values-in
有效。
其他映射,即
values-id
values-b+id
不起作用(请参阅 2013 年接受的答案的评论)。

© www.soinside.com 2019 - 2024. All rights reserved.