Вопрос

I was wondering if I could define a dictionary of key/value pairs to use as my language localization strings at run time in an ios app. The current method of changing language localization setting depends on an appropriate strings file being defined in the bundle when the app is initially built.

So instead of saying something like

NSLocalizedStringFromTableInBundle(@"Greeting", nil, localeBundle, nil);

Say something like

NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Hello", @"Greeting"];
NSLocalizedStringFromTableInBundle(@"Greeting", nil, myDictionary, nil);
Это было полезно?

Решение

Haeder

#define MyLocalizedString(key, dict) \
  [LocalizationUtils localizedStringWithKey:(key) fromDict:(dict)]

@interface LocalizationUtils : NSObject

+ (NSString *) localizedStringWithKey:(NSString *)key fromDict:(NSDictionary *)dict;

@end

Implementation

+ (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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top