AXKit icon indicating copy to clipboard operation
AXKit copied to clipboard

快速地将控件文本转换成NSLocalizedString

Open xaoxuu opened this issue 7 years ago • 0 comments

用法示例

// 将self.testView中所有的UILabel中的文字转换支持多语言
[self.testView ax_eachSubview:[UILabel class] action:^(__kindof UIView * _Nonnull subview) {
    UILabel *lb = subview;
    AXLocalizedLabel(lb);
}];
// 将self.testView中所有的UITextField中的文字转换支持多语言
[self.local ax_eachSubview:[UITextField class] action:^(__kindof UIView * _Nonnull subview) {
    UITextField *tf = subview;
    AXLocalizedTextField(tf);
}];
// 将self.testView中所有的UITextView中的文字转换支持多语言
[self.local ax_eachSubview:[UITextView class] action:^(__kindof UIView * _Nonnull subview) {
    UITextView *tv = subview;
    AXLocalizedTextView(tv);
}];

注意:此方法生效的前提是你的Localizable.strings文件中有这些语言的翻译。

接口


/**
 将UILabel中的文字转换成NSLocalizedString

 @param label 目标UILabel
 */
FOUNDATION_EXTERN void AXLocalizedLabel(UILabel *label);

/**
 将UITextView中的文字转换成NSLocalizedString
 
 @param textView 目标UITextView
 */
FOUNDATION_EXTERN void AXLocalizedTextView(UITextView *textView);

/**
 将UITextField中的文字转换成NSLocalizedString
 
 @param textField 目标UITextField
 */
FOUNDATION_EXTERN void AXLocalizedTextField(UITextField *textField);

实现

inline void AXLocalizedLabel(UILabel *label){
    label.text = NSLocalizedString(label.text, nil);
}

inline void AXLocalizedTextView(UITextView *textView){
    textView.text = NSLocalizedString(textView.text, nil);
}

inline void AXLocalizedTextField(UITextField *textField){
    textField.placeholder = NSLocalizedString(textField.placeholder, nil);
    textField.text = NSLocalizedString(textField.text, nil);
}

xaoxuu avatar Apr 25 '17 09:04 xaoxuu