跳转到内容

通用占位符

使用通用占位符来自动转换为不同平台所需的格式

我们建议将所有平台的文案(例如 Web/Android/iOS)存储在同一个项目中,使用相同的 KEY,提升管理效率,同时避免重复翻译。但不同的平台通常需要不同格式的占位符。为了解决这个问题,我们引入了通用占位符

什么是占位符?通过对文案内容中指定位置进行标记,然后在代码中使用占位符进行替换,从而实现文案部分内容的动态性。

格式

在云词,您可以使用以下通用占位符来代表不同类型的数据:

占位符描述
[%s], [%1$s], [%s:name]字符串
[%d], [%1$d], [%d:name]整数
[%f], [%.2f], [%1$.2f], [%.2f:name]浮点数

后缀 :name 仅用于支持命名的占位符格式,对于其他格式,该后缀将被忽略。

使用

我们假设有一个 iOS 和 Android 的应用程序,我们还拥有两个对应的英文翻译文件:

en.xml (Android)

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="gretting">你好, %s!</string>
</resources>

en.strings (iOS)

"gretting" = "你好, %@!";

如你所见,我们有类似的翻译,但占位符在其开发平台不同,在 Android 端写为 %s ,在 iOS 端写为 %@

我们可以在云词的文案管理中将这条文案录入为 gretting, [%s]!,那么在导出到对应平台的翻译文件时,云词会自动将占位符转换为对应的格式。

导入

支持选项「自动转换为通用占位符」,可以将原本的占位符转换为通用占位符。

导出

支持选择导出的占位符格式:

  • 原始格式
  • Android
  • iOS

不同平台的占位符格式

假设我们现在有一个使用通用占位符的字符串 我叫 [%s],今年 [%d] 岁了。, 在不同的平台替换规则如何?

平台占位符格式
Android我叫 %s,今年 %d 岁了。
iOS我叫 %@,今年 %d 岁了。
原始格式我叫 [%s],今年 [%d] 岁了。