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

Xcode 16.2中含动态数据的本地化字符串文件编写方法咨询

字符串嵌入动态数据的本地化文件写法

处理带动态数据的本地化字符串,核心是用占位符替代动态内容,不同平台的本地化文件有不同的写法,以下是主流场景的实现方式:

通用规则

  • 所有固定文本必须放入本地化文件,禁止代码中硬拼接文本+动态数据
  • 占位符尽量用表意清晰的命名(如{space}),而非无意义的%s,方便翻译人员理解上下文

1. iOS/macOS(.strings 文件)

编号占位符(兼容全版本)

"used_space" = "已占用空间:%@ MB";

代码中调用:

String(format: NSLocalizedString("used_space", comment: "显示存储已占用空间"), "\(space)")

命名占位符(iOS 15+ 推荐)

"used_space" = "已占用空间:\(space) MB";

代码中调用:

String(localized: "used_space", arguments: space)

2. Android(strings.xml 文件)

基础类型占位符

根据动态数据类型选择%d(整数)、%s(字符串):

<string name="used_space">已占用空间:%d MB</string>

代码中调用:

getString(R.string.used_space, space)

编号占位符(多参数场景推荐)

当有多个动态参数时,用%1$d、%2$s明确顺序,翻译时可灵活调整位置:

<string name="storage_status">已占用%1$d MB,剩余%2$d MB</string>

3. Web/跨平台框架(i18next、React Intl 等)

用花括号包裹命名占位符,直观易懂:

i18next(JSON 格式)

{
  "used_space": "已占用空间:{{space}} MB"
}

代码中调用:

i18next.t('used_space', { space: spaceValue })

React Intl(JSON 格式)

{
  "used_space": "已占用空间:{space} MB"
}

代码中调用:

<FormattedMessage id="used_space" values={{ space: spaceValue }} />

关键注意事项

  • 占位符位置可随目标语言调整:比如部分语言习惯把数字放在文本前面,翻译时直接修改占位符顺序即可,无需改动代码
  • 务必添加上下文注释:比如 iOS 的comment、Android 的 XML 注释,告诉翻译人员该字符串的使用场景(例:“在存储设置页面显示已占用空间”)
  • 复数/时态特殊处理:如果动态数据涉及复数(如“1个文件”/“5个文件”),要使用平台自带的复数规则,比如 Android 的<plurals>标签、iOS 的本地化复数格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:13:12