android用变量翻译字符串
Posted
技术标签:
【中文标题】android用变量翻译字符串【英文标题】:android translate string with variables 【发布时间】:2016-09-19 23:04:31 【问题描述】:早上好,
我有一个带有德语和英语 xml 文件的 android 应用程序。 现在我想像这样设置和文本视图:
“你好用户 x,你好世界 y。” “你好 Benutzer x,你好世界。”
对于 x 和 y,我想设置一个变量。 如何使用动态变量为两种语言翻译此文本?
【问题讨论】:
链接 NOT 用于翻译 developer.android.com/guide/topics/resources/localization.html 但如果您想更改表单输入中显示的文本语言,请使用此 developer.android.com/training/basics/supporting-devices/… 如果你有固定数量的要翻译的单词。制作一个 java.util.Map您的问题似乎不清楚,但根据我的理解,我建议您解决问题。
如果你想将动态参数传递给字符串,你可以通过下面的例子来做到这一点。
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
在本例中,格式字符串有两个参数:%1$s 是字符串,%2$d 是十进制数。您可以使用应用程序中的参数格式化字符串,如下所示:
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
如果您想了解更多信息,请查看:http://developer.android.com/intl/pt-br/guide/topics/resources/string-resource.html#FormattingAndStyling
【讨论】:
我可以从 xml 布局而不是从 java 添加这些变量吗?【参考方案2】:默认情况下,android 将英语视为主要语言并从 res ⇒ values ⇒ strings.xml 加载字符串资源。当您想要添加对另一种语言的支持时,您需要通过附加连字符和 ISO 语言代码来创建一个 values 文件夹。例如,如果您想添加对法语的支持,您应该创建一个名为 values-fr 的 values 文件夹,并在其中保留一个 strings.xml 文件,其中包含翻译成法语的所有字符串。
【讨论】:
【参考方案3】:“你好用户 %1$s,你好世界 %2$s。” “你好 Benutzer %1$s,你好贴边 %2$s。” 然后在代码中简单地调用 getString(R.string.your_string, yourName, yourWorld) 其中 yourName 和 yourWorld 是字符串变量。
如果您需要知道字符串的存储位置,请参阅 Devendra Singh 的答案。
【讨论】:
以上是关于android用变量翻译字符串的主要内容,如果未能解决你的问题,请参考以下文章
Android Lint:如何忽略故意仅覆盖某些默认翻译的区域语言环境字符串文件中缺少的翻译警告?
Android 仅在应用程序中更改语言:某些字符串未正确翻译