使用内置宏:
NSLocalizedStringWithDefaultValue(@"fantasy-group.group-rank.stats-label", nil, [NSBundle mainBundle], @"Group Rank", nil);
导出本地化时,生成.xliff
文件中的以下块中的结果:
<trans-unit id="fantasy-group.group-rank.stats-label">
<source>Group Rank</source>
<note>No comment provided by engineer.</note>
</trans-unit>
自source以来,这可以正常工作:
这些宏的主要优点是它们可以被解析
genstrings
工具,用于创建应用程序的字符串文件。
但是如果我尝试使用我自己的宏来制作时髦的东西以避免指定表和bundle,并且可能为split up the string file指定我自己的表:
#define WSLLocalizedString(key, val, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:(val) table:nil]
[WSLLocalizedString(@"fantasy-group.group-rank.stats-label", @"Group Rank", nil);
当我尝试生成xliff文件时,XCode或相关的命令行工具无法获取它:
$ xcodebuild -exportLocalizations -localizationPath WSL/Translations/ -project WSL.xcodeproj
如果我只是在做genstrings,我可以做以下source:
find . -name *.m | xargs genstrings -o en.lproj -s WSLLocalizedString
但我想要xliffs。我可以传递给xcodebuild
以保持这个梦想活着吗?
答案 0 :(得分:1)
不确定Objective-C,但是我通过重新定义NSLocalizedString
函数来为Swift做了这个:
public func NSLocalizedString(key: String, tableName: String? = nil, bundle: NSBundle = NSBundle.mainBundle(), value: String = "", comment: String) -> String
{
return yourBundleHere.localizedStringForKey(key, value: value, table: tableName)
}
在我的情况下,我需要使用自定义NSBundle
。