Android多语言开发:阿拉伯语格式化字符串参数报错求助
解决阿拉伯语带参数字符串格式化的IDE报错问题
嘿,这个问题我之前处理过!你的问题出在阿拉伯语字符串资源里的占位符格式完全写反了,不符合String.format的语法规则,所以IDE才会抛出那个错误提示。
你看,英文资源里的%1$s是正确的写法:%开头,接着是参数序号,然后是$,最后是参数类型(s表示字符串)。但你写的阿拉伯语资源里把顺序搞乱了,写成了s$1%和s%2$——这种格式系统根本识别不了,自然会报错。
哪怕是阿拉伯语这种从右到左(RTL)的语言,字符串格式化的占位符语法和英文是完全一致的,不需要因为排版方向颠倒符号顺序。你只需要把阿拉伯语资源改成下面的正确写法就行:
<string name="text_1">%1$s نقطة إلى %2$s</string>
为什么你说1、3、4号参数正常?大概率是那些参数的占位符你写对了(比如用了%1$s这种正确格式),只有2号参数写成了错误的s%2$才触发了报错。改成标准的%n$s格式后,IDE的格式检查就会通过,调用String.format的时候也能正常替换参数,而且系统会自动根据阿拉伯语的RTL特性调整最终的显示排版,完全不用你手动调整占位符的位置。
你可以试试把这个修正后的资源放到项目里,报错应该就消失啦!
内容的提问来源于stack exchange,提问作者ghita
相关产品推荐
相关产品推荐

