【发布时间】:2015-12-22 05:07:03
【问题描述】:
我有一个带有两个占位符的字符串,带有 XML:
<string name="message">%1$s informs that %2$s is not feeling well today.</string>
因为%2$s要么是"he" 要么是"she",所以翻译成葡萄牙语时,我们应该只有第一个占位符,即a的名字人:
<string name="message">%1$s informa que não se sente muito bem hoje.</string>
代码编译并运行良好,但 Lint 抱怨 String.format 字符串与 XML 格式字符串不匹配
处理这种情况的最佳方法是什么?
【问题讨论】:
-
作为一个快速技巧,在葡萄牙语字符串资源的末尾添加第二个占位符,然后将其设置为空,如下所示:
%1$s informa que não se sente muito bem hoje.%2$s ;-) -
您可以使用两个占位符和内部代码保持相同的格式,您可以使用哪种语言来处理,并为葡萄牙语的第二个占位符添加空字符串。
-
@leRobot 解决了警告,但 %2$s 被附加到翻译后的字符串中。我需要创建另一个,而不是用葡萄牙语翻译它,只是为了那个特定的情况......丑陋。
-
@RajenRaiyarela 不是最优雅的解决方案,但如果没有更好的解决方案,它会这样做。
-
@tato.rodrigo 这不仅仅是一个“空字符串资源”,它是一个仅在葡萄牙语中为空的字符串。我们的应用程序在 3rd 方平台上由不同的人翻译成 11 种语言。所以是的。我更喜欢在 xml 中保持简单,如果需要,可以在代码中创建一个条件。
标签: android string placeholder lint multiple-languages