Joe*_*asq 11 macos cocoa localization objective-c ios
我知道在Mac应用程序中,可以将.strings文件添加到项目文件夹以添加本地化.
是否有任何方法可以将其他本地化添加到应用程序(iOS或Mac OS),而无需在编译时从资源包中加载它们.比如说,下载一个额外的本地化并将其存储在iOS上的/ Documents中?
Dav*_*ong 19
是的,但这不是你的想法.
您可以获取一个字符串文件并将其加载到一个NSString
,然后使用它将其转换为字典-[NSString propertyListFromStringsFileFormat]
.
这将为您提供一种在内存中存储自定义翻译字符串的方法.
至于实际使用它,你必须定义自定义翻译功能.IE,你不能再NSLocalizedString()
和朋友一起使用了.幸运的是,genstrings
(用于生成字符串文件的实用程序)允许您指定自定义函数名称:
genstrings -s "JPLocalizedString" ...
Run Code Online (Sandbox Code Playgroud)
这意味着在代码中,您可以定义:
NSString* JPLocalizedString(NSString *key, NSString *comment) {
return [myLoadedStrings objectForKey:key];
}
Run Code Online (Sandbox Code Playgroud)
以及JPLocalizedStringFromTable()
,JPLocalizedStringFromTableInBundle()
,JPLocalizedStringWithDefaultValue()
. genstrings
将拿起所有这些.(换句话说,仅仅因为NSLocalizedString
是一个宏并不意味着你的版本必须)
如果您这样做并使用这些JPLocalizedString
变体,那么genstrings
仍然会为您生成字符串文件(假设您使用该-s
标志).
调用这些函数后,您可以使用所需的任何查找机制,NSLocalizedString
如果找不到任何内容,则默认返回版本.
归档时间: |
|
查看次数: |
3059 次 |
最近记录: |