【问题标题】:how can I solve this error string xliff?我该如何解决这个错误字符串 xliff?
【发布时间】:2018-09-16 12:57:40
【问题描述】:

我有这个字符串:

<string name="order_summary_name">Name: <xliff:g id="name" example="Thomas">%s</xliff:g></string>

以这种格式使用它:

priceMessage=getString(R.string.order_summary_name,name);

我不断收到一条错误消息:格式字符串“order_summary_name”不是有效字符串。

我找不到错误,我该怎么办???

【问题讨论】:

  • 这段代码有什么用%s
  • 所以在本地化过程中替换字符串 (%s) 不会被翻译

标签: android xml string format xliff


【解决方案1】:

将您的样式文本资源存储为 HTML 转义字符串:

<resources>
  <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

在这个格式化的字符串中,添加了一个元素。请注意,左括号是 HTML 转义的,使用

然后像往常一样格式化字符串,还要调用 fromHtml(String) 将 HTML 文本转换为样式文本:

String text = getString(R.string.welcome_messages, username, mailCount);
String styledText = Html.fromHtml(text);

(或)

  String styledText = Html.fromHtml(R.string.order_summary_name,name);

https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

【讨论】:

    【解决方案2】:

    id 属性仅用于标识替换参数代表什么(在您的情况下,它代表数量)。正如您所说,这是一个注释,实际上并未以编程方式使用。

    也就是说,在 Android Studio 中,如果您为字符串启用了代码折叠,当它显示折叠的字符串时,它将替换为 ID。你会看到这样的东西:

    试试这个。

    mTextView.setText(getString(R.string.order_summary_name, "Thoma"));
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2016-07-21
      • 2016-09-09
      • 2015-02-28
      • 2013-08-16
      相关资源
      最近更新 更多