通用占位符
使用通用占位符来自动转换为不同平台所需的格式
我们建议将所有平台的文案(例如 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] 岁了。 |