在我的应用程序中,我正在进行本地化以支持多种语言。为此,我正在创建.string文件并使用以下方法:
-(NSString*) languageSelectedStringForKey:(NSString*)key;
我正在使用Key_value概念。它的工作正常。但我的问题是:
假设我有一个sqlite数据库,其中包含需要本地化的所有不同语言字符串。
例如:为西班牙语
"Username" = "nombre de usuario";
"Password" = "contraseña";
"Submit" = "presentar";
法语
所有这些都插入 sqlite数据库。 我们如何以这种方式使用应用程序进行本地化?"Username" = "nom d'utilisateur";
"Password" = "mot de passe";
"Submit" = "soumettre";
答案 0 :(得分:0)
由于您似乎在一个数据库中拥有所有字符串转换,因此您需要一个中间数据结构,它将充当数据库与您的方法之间的桥梁,以便对字符串进行本地化。
您可以使用dictionary
来存储密钥字符串标识符,并将值作为包含所有语言traduction的数组。然后,您需要提供此数据结构。
请注意,推荐的方法是使用.strings
文件进行本地化,因此您需要为我们提供良好的理由,以便您不采用这种方法。
答案 1 :(得分:-1)
如果这些是UIButtons和UILabels的标题/文本,请在viewController中使用以下语法:
NSString *buttonString = NSLocalizedStringFromTable(@"viewController-title-button-username", @"Localizable", nil); self.username_label.text = buttonString;
在您的Localizable.strings文件中(您必须在项目中添加本地化并将此文件设置为本地化为西班牙语):
“viewController-title-button-username”=“nombre de usuario”;
“tabbar-item1”=“西班牙语中的item1”;
“tabbar-item2”=“西班牙语中的item2”;
“tabbar-item3”=“西班牙语中的item3”;
对于您设置为法语的Localizable.strings也一样:
“viewController-title-button-username”=“nom d'utilisateur”;
“tabbar-item1”=“item1 in french”;
“tabbar-item2”=“item2 in french”;
“tabbar-item3”=“item3 in french”;
对于您的标签栏名称,请将其放在viewDidLoad中,以用于您拥有的每个viewController。只需改变1,2,3等:
NSString *name = NSLocalizedStringFromTable(@"tabbar-item1", @"Main", nil); self.title = name;
另一方面,如果您获得.xml或使用REST检索,您可以执行以下操作:
//Get the name of what you want eg. spanish-data or french-data
NSString *name = NSLocalizedStringFromTable(@"xml-locations-string", @"Main", nil);
//What to add at the end
NSString *append = @".xml";
//Merge strings to what you want to retrieve: spanish-data.xml
NSMutableString *file = [NSMutableString stringWithFormat:@"%@%@", name, append];
//From which URL
NSString *urlString = @"http://www.myDomain.com/ProjectName/";
//Create full URL http://www.myDomain.com/ProjectName/spanish-data.xml
NSString *fileUrl = [NSString stringWithFormat:@"%@%@", urlString, file];
NSURL *url = [NSURL URLWithString:fileUrl];
您获得的数据现在将是本地化版本。您可以使用它来设置表数据或任何您需要的数据。
这是超级简单的,因此没有优化的方式。也适用于REST,您只需重新构建以适合您的项目。