与支持UIStoryboard的本地化结合的英语字符串集

问题描述

我有一个用于跟踪/管理牲畜的应用程序。目前它支持一种羊。我们希望开始支持多种不同的物种,例如山羊和牛。我的第一个想法是创建类似于NSLocalizedString(text,comment)的类似Speciesstring(text,species,comment)的东西,它将使用英语字符串和物种名称并将“绵羊”一词Ram转换为“牛”一词Bull。在此内部,我可以使用NSLocalizedString()进一步将其翻译成适当的语言,以便将来也可以支持多种语言。

我看到可以将tableName传递给NSLocalizedString(),以便它将使用除Localizeable.strings之外的其他文件,这将允许我以编程方式从西班牙语文件提取值重点是牛而不是绵羊(Localizeable-sheep.stringsLocalizeable-cattle.strings之类的东西),但这对故事板上的所有文字都没有帮助。

我知道情节提要板内置了对本地化的支持,但是我遇到的问题是,当文本进入我的代码时,例如在viewDidLoad中,它已经被翻译了。其他语言,例如西班牙语。我希望找到一种方法,使我的视图中的文本在到达我的代码时已经具有正确的Language + Species组合。但是,即使我确实依靠编程方式换出了字符串来使用正确的Species,英语也已经更改为西班牙语,并且我得到的是Carnero而不是Ram,如果我尝试通过直到我的Speciesstring()都与我的基础数据不匹配,因为我的基础数据是从文本的英文版本中删除的。

是否可以创建自定义语言?我已经看过此code that is used to change the localization language on the fly,它可以在enes之间交换,但是我无法创建自己的伪造语言,例如en-sheep和{{1} }。

是否存在:

a)一种创建自己的自定义语言的方法,以便本地化系统可以选择我正确的Language + Species组合?

b)告诉情节提要从哪个表名/文件提取字符串的方法?这样,我的es-sheep不会只有一个字符串文件,而被称为Main.storyboard,但我可以拥有 es.lproj/Main.stringses.lproj/Main-sheep.strings

解决方法

我认为我无法使用“自定义语言”只是偶然的疏忽。我创建了>>> a = ['Quattro TT'] >>> eval(str(a)) ['Quattro TT'] ,并使用the other SO post以编程方式将我的语言设置为es-sheep.lproj/Main.strings,但这似乎不起作用...

...但是事实证明我已经创建了这些目录和文件,但是忘记了将它们添加到项目中。将它们手动添加到项目后,它开始工作,并且可以使用自定义的本地化版本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...