在ios应用程序的运行时设置并创建本地化字符串

在ios应用程序的运行时设置并创建本地化字符串,ios,localization,Ios,Localization,我想知道是否可以定义一个键/值对字典,在ios应用程序运行时用作我的语言本地化字符串。当前更改语言本地化设置的方法取决于最初构建应用程序时在捆绑包中定义的适当字符串文件 因此,与其说 NSLocalizedStringFromTableInBundle(@"Greeting", nil, localeBundle, nil); 比如说 NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Hello"

我想知道是否可以定义一个键/值对字典,在ios应用程序运行时用作我的语言本地化字符串。当前更改语言本地化设置的方法取决于最初构建应用程序时在捆绑包中定义的适当字符串文件

因此,与其说

NSLocalizedStringFromTableInBundle(@"Greeting", nil, localeBundle, nil);
比如说

NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Hello", @"Greeting"];
NSLocalizedStringFromTableInBundle(@"Greeting", nil, myDictionary, nil);
海德

实施

+ (NSString *) localizedStringWithKey:(NSString *)key fromDict:(NSDictionary *)dict
{
   NSString *localizedString;
   if (!dict) {
       // use NSLocalizedString or sth as a fallback.
       // ...
   }

   // get your string from dict

   return localizedString;
}

你为什么不建立你的字典并使用它呢?我有我的字典-我想要一些全局设置应用程序使用它的方法。为了澄清我的字典在编译时是未知的-我通过应用程序加载时的rest调用请求它。这就是我想为快速回复设置本地化StringsHanks的地方-在我实现这一点的时候给我一点时间!因此,是的,这实际上允许我使用字典定义的键/值,但我希望有一个更“全局”的解决方案,这意味着像往常一样使用
NSLocalizedString
,但不知何故“欺骗”应用程序将字典用作字符串表。此方法意味着将
NSLocalizedString
的每次使用修改为
MyLocalizedString
替换调用有什么问题?特殊功能->特殊呼叫。另一种方法是,您可以尝试通过一个类别重新定义原始宏或替换
[NSBundle localizedStringForKey:value:table:][/code>的原始实现。但我不建议这样做。哈哈,我只是想将NSBundle子类化,以尝试“全局”实现它。因此,是的,我想我同意你的观点——包装我自己的函数,然后返回到默认字符串值似乎是一个合理的解决方案。我确实遇到过这么多问题和答案,这些问题和答案与你所说的基本相同。感谢您的帮助。覆盖标准的NSBundle方法,您还可以截取故事板的字符串,而无需为每个可本地化的接口元素设置出口。可能有用。
+ (NSString *) localizedStringWithKey:(NSString *)key fromDict:(NSDictionary *)dict
{
   NSString *localizedString;
   if (!dict) {
       // use NSLocalizedString or sth as a fallback.
       // ...
   }

   // get your string from dict

   return localizedString;
}