不同语言的Android字符串占位符

不同语言的Android字符串占位符,android,string,placeholder,lint,multiple-languages,Android,String,Placeholder,Lint,Multiple Languages,我有一个带有两个占位符的字符串,带有XML: %1$s通知%2$s今天感觉不舒服。 因为%2$s不是“他”就是“她”,所以当翻译成葡萄牙语时,我们应该只有第一个占位符,即人名: %1$s信息来源于圣母院。 代码可以编译并正常工作,但Lint抱怨String.format字符串与XML格式字符串不匹配 处理这种情况的最佳方法是什么?Lint在寻找第二个参数时会抱怨。 你可以把你的占位符放在代表他和她两个人的单词的位置,并保持两个词的意思相同。或者,如果在这种语言中没有“他”和“她”的单词,只需保留

我有一个带有两个占位符的字符串,带有XML:

%1$s通知%2$s今天感觉不舒服。

因为
%2$s
不是“他”就是“她”,所以当翻译成葡萄牙语时,我们应该只有第一个占位符,即人名:

%1$s信息来源于圣母院。

代码可以编译并正常工作,但Lint抱怨String.format字符串与XML格式字符串不匹配


处理这种情况的最佳方法是什么?

Lint在寻找第二个参数时会抱怨。 你可以把你的占位符放在代表他和她两个人的单词的位置,并保持两个词的意思相同。或者,如果在这种语言中没有“他”和“她”的单词,只需保留占位符并用空白字符串替换即可。

%1$s informa que não%2$s sente muito bem hoje。
<string name="message">%1$s informa que não %2$s sente muito bem hoje.</string>

%2$s
成为“se”,然后。。。“se”:)

作为一种快速技巧,在葡萄牙语字符串资源的末尾添加第二个占位符,然后将其设置为空,如下所示:%1$s informa que não se sente muito bem hoje.%2$s;-)您可以使用两个占位符和内部代码来保持相同的格式,您可以处理所使用的语言,并为葡萄牙语的第二个占位符添加空字符串。@leRobot解决了警告,但将%2$s附加到翻译后的字符串中。我需要创建另一个,而不是翻译成葡萄牙语,只是为了那个特定的情况。。。丑陋。@RajenRaiyarela不是最优雅的解决方案,但如果没有更好的解决方案,它会这样做。@tato.rodrigo它不仅仅是一个“空字符串资源”,它是一个仅在葡萄牙语中为空的字符串。我们的应用程序由不同的人在第三方平台上翻译成11种语言。所以是的。我更喜欢在xml中保持简单,如果需要,在代码中创建一个条件。%2$s来自“he”/“she”。用不同的方式翻译是没有意义的。我们从第三方平台获得翻译,所以我不想这样做。谢谢你的意见@RicardoBelchior一种语言中的占位符应该存在于所有语言中,这就是它的工作原理。所以有时候我们不得不破例。