如何正确本地化 Android 资源以支持多种语言?
How to correctly localize Android resources to support multiple languages?
我一直在开发一个 Android 将在不同国家/地区使用的应用程序。
因此,我遵循 Android Developer Guide 来支持应用程序的不同语言,并使用 Android Studio 中的 T运行slation Editor 来指定我想要的资源 t运行预定。然而,Android Studio 给我的预览显示了正确的资源,它们不是 t运行 指定的,而是在我 运行 应用程序时保持默认值。我相信我可能错过了一些东西并且似乎无法找到它是什么。
下图显示了 Android Studio 中的目录和资源字符串:
默认字符串:
<resources>
<string name="welcome_user">Welcome %1$s</string>
<string name="logout">Logout</string>
<string name="main_menu">Main menu</string>
<string name="inventory">Inventory</string>
<string name="login">Login</string>
</resources>
西班牙语字符串:
<resources>
<string name="welcome_user">Bienvenido %1$s</string>
<string name="logout">Cerrar sesión</string>
<string name="main_menu">Menú principal</string>
<string name="inventory">Inventario</string>
<string name="login">"Iniciar sesión "</string>
</resources>
我参考布局中的资源 xml 就像人们通常做的那样
android:id="@+id/textWelcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_user"
以下图像是 Android Studio 在我将其设置为西班牙语言环境时向我显示的内容(与上述不同的字符串资源)以及应用程序 运行 时显示的内容,即使设备语言设置为 Español:
好的,我在搜索相关文档和问题后在post上找到了答案。问题不在于我的文件夹结构或我如何检索资源。
我的Android Gradle
文件中的resConfigs
属性设置为只支持英文资源相关的语言资源。由于此设置,未指定的任何其他语言都被删除。
在我添加 "es"
和 "nl"
之后,一切都按预期显示了。
productFlavors {
dev {
dimension "default"
applicationIdSuffix '.dev'
versionNameSuffix '-dev'
resConfigs "en", "nl", "es" //The culprit I created and forgot
}
我一直在开发一个 Android 将在不同国家/地区使用的应用程序。
因此,我遵循 Android Developer Guide 来支持应用程序的不同语言,并使用 Android Studio 中的 T运行slation Editor 来指定我想要的资源 t运行预定。然而,Android Studio 给我的预览显示了正确的资源,它们不是 t运行 指定的,而是在我 运行 应用程序时保持默认值。我相信我可能错过了一些东西并且似乎无法找到它是什么。
下图显示了 Android Studio 中的目录和资源字符串:
默认字符串:
<resources>
<string name="welcome_user">Welcome %1$s</string>
<string name="logout">Logout</string>
<string name="main_menu">Main menu</string>
<string name="inventory">Inventory</string>
<string name="login">Login</string>
</resources>
西班牙语字符串:
<resources>
<string name="welcome_user">Bienvenido %1$s</string>
<string name="logout">Cerrar sesión</string>
<string name="main_menu">Menú principal</string>
<string name="inventory">Inventario</string>
<string name="login">"Iniciar sesión "</string>
</resources>
我参考布局中的资源 xml 就像人们通常做的那样
android:id="@+id/textWelcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_user"
以下图像是 Android Studio 在我将其设置为西班牙语言环境时向我显示的内容(与上述不同的字符串资源)以及应用程序 运行 时显示的内容,即使设备语言设置为 Español:
好的,我在搜索相关文档和问题后在
我的Android Gradle
文件中的resConfigs
属性设置为只支持英文资源相关的语言资源。由于此设置,未指定的任何其他语言都被删除。
在我添加 "es"
和 "nl"
之后,一切都按预期显示了。
productFlavors {
dev {
dimension "default"
applicationIdSuffix '.dev'
versionNameSuffix '-dev'
resConfigs "en", "nl", "es" //The culprit I created and forgot
}