You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决xliff格式字符串报错:Format string 'order_summary_name'无效

解决Format string 'order_summary_name' is not a valid string报错问题

遇到这个问题别慌,我帮你一步步排查解决:

1. 先检查xliff命名空间是否配置正确

这是最容易被忽略的关键细节!你的strings.xml根标签<resources>必须声明xliff的命名空间,否则<xliff:g>标签不会被系统正确识别,直接导致格式字符串解析失败。

正确的根标签写法应该是这样:

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- 你的其他字符串资源 -->
    <string name="order_summary_name">Name: <xliff:g id="name" example="Thomas">%s</xliff:g></string>
</resources>

2. 确认占位符与参数完全匹配

虽然你的代码看起来是一个%s对应一个name参数,但还是要仔细核对:

  • 字符串里的格式符数量和getString传入的参数数量是否一致
  • 参数类型是否匹配(%s对应字符串类型,要确保name确实是String类型,不是Int或其他类型)

3. 清理并重建项目

Android Studio的缓存偶尔会抽风,导致明明正确的代码报错。试试这几步操作:

  • 点击顶部菜单栏的Build -> Clean Project
  • 接着点击Build -> Rebuild Project
  • 如果还是不行,点击File -> Invalidate Caches...,选择Invalidate and Restart,重启AS后再尝试编译

4. 检查字符串资源的语法正确性

确保<xliff:g>标签没有拼写错误:

  • 标签是否正确闭合(你这里是闭合的,但要确认没有漏写</xliff:g>)
  • xliff的拼写是否正确,别写成xlif或者其他错误形式
  • id和example属性的引号是否匹配,有没有多余的符号

5. 确认getString的调用上下文

要保证你是在有效的Context环境中调用getString方法,比如Activity、Fragment或者持有Context的类中。如果是在自定义工具类里调用,需要传入有效的Context对象,比如:

// 示例:在自定义类中调用
Context context = getApplicationContext(); // 或者传入Activity实例
String priceMessage = context.getString(R.string.order_summary_name, name);

如果以上步骤都试过还是报错,可以先临时去掉<xliff:g>标签,直接写<string name="order_summary_name">Name: %s</string>,看看是否还报错。如果不报错了,那问题肯定出在xliff标签的配置上,再回头检查命名空间和标签写法即可。

内容的提问来源于stack exchange,提问作者Soheib Bettahar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:25:28