【发布时间】:2020-09-15 21:12:02
【问题描述】:
我有一个用于跟踪/管理牲畜的应用。它目前支持一种物种,绵羊。我们希望开始支持多种不同的物种,例如山羊和牛。我的第一个想法是创建类似于NSLocalizedString(text, comment) 的东西,例如SpeciesString(text, species, comment),它将采用英文字符串和物种名称并将绵羊术语Ram 翻译成牛术语Bull。在内部,我可以使用NSLocalizedString() 将其进一步翻译成正确的语言,以便将来我也可以支持多种语言。
我发现我可以将tableName 传递给NSLocalizedString(),以便它使用除Localizeable.strings 之外的其他文件,这将允许我以编程方式从专注于牛的西班牙语文件中提取值绵羊(类似于Localizeable-sheep.strings 和Localizeable-cattle.strings),但这对故事板中的所有文本没有帮助。
我知道情节提要内置了对本地化的支持,但我遇到的问题是,当文本出现在我的代码中时,例如在viewDidLoad 中,它已经被翻译成其他语言,例如西班牙语。我希望找到一种方法,使我的视图中的文本在到达我的代码时已经具有正确的语言+物种组合。但即使我确实依靠以编程方式换出字符串以使用正确的物种,英语也已经改为西班牙语,我会得到Carnero而不是Ram,如果我尝试将它传递给我的@ 987654335@ 它与我的基础数据不匹配,因为我的基础数据是英文版文本的键控。
有没有办法创建自定义语言?我见过这个code that is used to change the localization language on the fly,它可以在en 和es 之间进行交换,但是我不能创建自己的假语言,比如en-sheep 和es-sheep。
有没有:
a) 一种创建我自己的自定义语言的方法,以便本地化系统只选择我正确的语言+物种组合?
或
b) 一种告诉情节提要从哪个表名/文件名中提取字符串的方法?因此,我的Main.storyboard 不仅仅是一个字符串文件,而是被称为es.lproj/Main.strings,但我可以改为
es.lproj/Main-sheep.strings 和 es.lproj/Main-cattle.strings?
【问题讨论】:
标签: ios localization internationalization nslocalizedstring