修改Cocoapods源代码!
Efficient iOS localization solution.(Objc, swift, NSLocalizedString, xib)
高效的iOS本地化解决方案
点赞富一生.
Drag floder SDLocalize
to your project.
SDLocalize
NSObject + SDLocalize
NSString + SDLocalize
NSArray + SDLocalize
SDLocalize工作原理(How SDLocalize works)
首先标记一组需要本地化的控件
然后在恰当时机(viewDidLoad),触发一组本地化任务(Then (viewDidLoad) fires a set of localization tasks when needed)
SDLocalize会使用控件的文本作为LocalizedString.key替换当前控件的文本
Start by marking a set of controls that need to be localized
Then (viewDidLoad) fires a set of localization tasks when needed
SDLocalize replaces the text of the current control with the text of the control as LocalizedString.key
设置pageName至sdl_register(Set pageName to sdl_register)
// It then triggers a set of localization tasks when needed
- (void )viewDidLoad {
[SDLocalize defaultLocalize ];
}
使用代码创建控件并完成本地化(Use code to create and localize the control)
control0.text = <LocalizedString.key>;
control1.text = <LocalizedString.key>;
control2.text = <LocalizedString.key>;
...
[control0 sdl_defaultRegister ];
[control1 sdl_defaultRegister ];
control2.sdl_defaultRegister = @" -" ;
...
// 然后在恰当时机(viewDidLoad),触发一组本地化任务
// It then triggers a set of localization tasks when needed
- (void )viewDidLoad {
[SDLocalize defaultLocalize ]; // Takes effect on all controls marked as default pages
// [control0 sdl_localizeIfNeed];
// [control1 sdl_localizeIfNeed];
// [control2 sdl_localizeIfNeed];
// ...
}
默认支持的控件(Supported controls)
< UILabe, UIButtonl, UITextView >.text
< UITextField >.placeholder
支持的自定义控件(Supported custom controls)
[SDLocalize customTextGetter: ^(id object){
if (object is MyView) {
return myView.myText ;
}
} andSetter: ^(NSString *localizedText, id object){
if (object is MyView) {
myView.myText = localizedText;
}
}];
动态格式文本(Dynamic format text)
control.sdl_dynamicFormat = @" My name is %@ , %@ years old." ; // XIB supported
...
[control sdl_localizeWithFormateArgs: @[name, age]];
手动本地化(Perform localization manually)
[control sdl_localizeIfNeed ];
string.sdl_localizedString;
@[string0, string1, string2, ...].sdl_localizedArray;
control.sdl_localizedDone
阅读源代码(Read the source code)