Android Studio 3.0.1(Kotlin)中能否将字符串资源嵌入另一字符串资源?
字符串资源嵌入复用的实现方法
当然可以啦!Android Studio 3.0.1完全支持把一个字符串资源嵌入到另一个里,下面给你两种实用的实现方式,按需选择就行:
方法一:直接在XML中引用已有资源
这是最简单的实现方式,直接在目标字符串的内容里用@string/app_name来引用已定义的资源,系统会自动替换对应的内容:
<string name="app_name">Backup Settings</string> <string name="FeedbackEmailSubject">Report bug and suggestion about @string/app_name</string>
写完之后,不管是在布局文件里引用FeedbackEmailSubject,还是在代码中调用,最终都会显示成「Report bug and suggestion about Backup Settings」。
方法二:占位符+代码格式化(更灵活)
如果之后有动态替换内容的需求,或者想让多语言翻译流程更规范,推荐用占位符的方式:
- 先在
strings.xml里定义带占位符的字符串:
<string name="app_name">Backup Settings</string> <string name="FeedbackEmailSubject">Report bug and suggestion about %1$s</string>
- 在Kotlin代码中调用时,通过
getString()方法传入需要复用的资源:
val emailSubject = getString(R.string.FeedbackEmailSubject, getString(R.string.app_name))
这种方式的好处是,后续如果app_name需要动态修改(比如切换语言、临时替换名称),代码层面的调整会更灵活。
进阶:配合xliff标签优化翻译体验
如果你的App需要做多语言翻译,还可以用xliff标签明确标记占位符,让翻译工具能识别出这是需要保留的动态内容,避免误修改:
<string name="FeedbackEmailSubject">Report bug and suggestion about <xliff:g id="app_name">%1$s</xliff:g></string>
代码调用方式和方法二完全一致,只是XML写法更规范,更适配专业翻译流程。
内容的提问来源于stack exchange,提问作者HelloCW
相关产品推荐
相关产品推荐

