用sqlite实现iPhone本地化?

用sqlite实现iPhone本地化?,iphone,cocoa-touch,sqlite,localization,Iphone,Cocoa Touch,Sqlite,Localization,iPhone数据库中的文本是如何本地化的?我看到的示例在.m文件或.xib中有硬编码字符串。例如: NSString firstName = NSLocalizedString(@"First Name", @"This is the first name"); 如果需要本地化的字符串在数据库中,会发生什么情况?我还没有找到关于这种本地化的讨论。然而,考虑到许多iPhone应用程序都使用sqlite,我认为这是非常常见的。NSLocalizedString只是一个预处理器宏,它变成了对NSBu

iPhone数据库中的文本是如何本地化的?我看到的示例在.m文件或.xib中有硬编码字符串。例如:

NSString firstName = NSLocalizedString(@"First Name", @"This is the first name");

如果需要本地化的字符串在数据库中,会发生什么情况?我还没有找到关于这种本地化的讨论。然而,考虑到许多iPhone应用程序都使用sqlite,我认为这是非常常见的。NSLocalizedString只是一个预处理器宏,它变成了对NSBundle的调用——因此基本上你可以使用运行时获取的字符串而不是硬编码的字符串,并将其传递给NSBundle。当然,缺点是没有快速的方法来编译翻译器需要本地化的所有字符串的列表

例如:

NSString *key = fetchKeyFromDB(...);
NSString *localizedString = [[NSBundle mainBundle] localizedStringForKey:key value:@"default string" table:nil];

我只是想知道同样的事情,找不到任何关于这是如何处理的(因此我在这篇文章中是如何结束的)。OTTOMH,我在想,对于每种受支持的语言,您可能只有不同的数据库。也许仍然遵循通用国际化/本地化指南,为每种支持语言(如en.lproj和it.lproj)创建一个单独的目录,然后将您的数据库命名为“en_data.db”和“it_data.db”(或您喜欢的任何命名约定),并将它们放在各自的目录中。诀窍是检测应用程序中的运行时语言,并为该语言加载适当的数据库。同样,这只是一个猜测,我在实践中从来没有这样做过(就像我说的,我也在想同样的事情)

我没有创建任何其他资源文件,所以在这一点上没有发生任何事情。我所有的文字都在数据库里。我是否应该为我要本地化的每种语言和每个数据库行创建字符串文件?有很多东西需要保持同步。如果我要本地化五种语言,那就意味着每个数据库(英语)行条目都需要五个字符串文件……因为数据库都是英语的?是的,您需要5.strings文件。当然,无论如何实现,保持5种语言的本地化字符串的同步都是非常重要的。另一种方法是避免使用Cocoa的本地化API,而是将所有本地化字符串保留在数据库中(即,包含键、语言、国家和字符串列的表)。您将如何实现这一点?假设我在DB/plist中有name\u en、name\u fr、name\u es。如何为当前活动区域设置调用正确的字段?