CocoaPods trunk is moving to be read-only. Read more on the blog, there are 14 months to go.
| TestsTested | ✓ |
| LangLanguage | Obj-CObjective C |
| License | Apache 2 |
| ReleasedLast Release | May 2016 |
Maintained by Matt Magoffin.
BRLocalize provides a way to store localized strings in a hierarchical JSON file and then have placeholder strings in NIB files automatically replaced by their localized value.
Here's an example JSON strings file, strings.json:
{
"login" : {
"title" : "Sign in"
}
}Now you can localize that just like any other file (i.e. move to a XX.lproj directory and include the localized varients of the JSON in your application.
You can localize stuff via code if you like. For example you might want to set a login view controller's title to login.title, like this:
- (void)viewDidLoad {
[super viewDidLoad];
[self localizeWithAppStrings:[NSBundle appStrings]];
}
- (void)localizeWithAppStrings:(NSDictionary *)strings {
self.navigationItem.title = [strings stringForKeyPath:@"login.title"];
}
The appStrings method is provided as an extension on NSBundle, and stringForKeyPath: is provided as an extension on NSDictionary.
BRLocalize provides some hooks into UI-related code to make the process of applying localized strings a bit easier for you. The hooks rely on the BRLocalizable protocol:
@protocol BRLocalizable <NSObject>
/**
Localize the receiver with a given dictionary of strings.
@param strings The strings data, typically loaded via the application's standard JSON strings file.
*/
- (void)localizeWithAppStrings:(NSDictionary *)strings;
@end
There are two main hooks provided:
awakeFromNib - any object that conforms to BRLocalizable will have localizeWithAppStrings: called when awakeFromNib is invoked.willMoveToWindow: - any UIView class that conforms to BRLocalizable will have localizeWithAppStrings: called when willMoveToWindow: is invoked.Building on those hooks, BRLocalize provides category-based implementations of the following classes so they conform to BRLocalizable:
All of these make use of a localizedStringWithAppStrings: method provided on NSString, which looks for strings in the form {some.key.path} and replaces that with a the value found at some.key.path in the JSON strings file.