如何使用sqlite存储数据执行本地化-iOS App?

时间:2014-03-06 12:34:52

标签: ios sqlite localization

在我的应用程序中,我正在进行本地化以支持多种语言。为此,我正在创建.string文件并使用以下方法:

-(NSString*) languageSelectedStringForKey:(NSString*)key;

我正在使用Key_value概念。它的工作正常。但我的问题是:

假设我有一个sqlite数据库,其中包含需要本地化的所有不同语言字符串。

例如:为西班牙语

"Username" = "nombre de usuario";
"Password" = "contraseña";
"Submit" = "presentar";
法语

"Username" = "nom d'utilisateur";
"Password" = "mot de passe";
"Submit" = "soumettre";

所有这些都插入 sqlite数据库

我们如何以这种方式使用应用程序进行本地化?

2 个答案:

答案 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,您只需重新构建以适合您的项目。