Nếu bạn không thể làm cho nó hoạt động theo cách chính thức, như được cung cấp bởi @vikingosegundo, bạn có thể làm điều này với một số kỹ thuật sáng tạo (Sáng tạo như trong, oh my god nguy hiểm). Tôi đã phát hiện ra phương pháp này khi tôi vô tình overrode [NSBundle localizedStringForKey:value:tableName:]
.
1) Thêm một thể loại để NSBundle với các phương pháp sau:
#import <objc/runtime.h>
+ (void) load {
Method original, swizzled;
original = class_getInstanceMethod(self, @selector(localizedStringForKey:value:table:));
swizzled = class_getInstanceMethod(self, @selector(swizzled_localizedStringForKey:value:table:));
method_exchangeImplementations(original, swizzled);
}
- (NSString*) swizzled_localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName {
NSLog(@"Key: %@. Value: %@", key, value);
return [self swizzled_localizedStringForKey: key value:value table:tableName];
}
2) Trong trường hợp tôi chỉ cần đăng nhập chìa khóa/giá trị, bạn muốn đặt một if ([key isEqualToString: xxx]) chặn. Trong đó, bạn muốn bắt (ít nhất một số) các giá trị khóa sau: Cắt, Sao chép [Menu], Chọn, Chọn Tất cả, Dán, Xóa [Menu], Thay thế ..., Xác định, Nói, Tạm dừng. Đây là những giá trị mặc định có thể xuất hiện ở đó.
3) Khi bạn đã bắt được giá trị bạn có thể tra cứu trong bảng tùy chỉnh hoặc sử dụng giá trị được mã hóa cứng. Nếu bạn tra cứu trong một bảng tùy chỉnh, hãy chắc chắn rằng bạn đã nắm bắt được trong phương thức bị lu mờ của bạn để tránh việc lặp vô hạn trong bảng tùy chỉnh của bạn.
NB: Tại sao bạn cần phải tráo trở? Bởi vì điều này vượt qua tất cả văn bản của Apple cho ứng dụng của bạn. Bạn sẽ vẫn muốn các giá trị mặc định cho tất cả các chuỗi khác, vì vậy bạn cần phải chuyển sang chế độ mặc định cho các chuỗi mà bạn không quan tâm.
Chúc may mắn. Paul
Nguồn
2012-07-02 08:28:49
nên thay đổi khi bạn thay đổi điện thoại, đây là trường hợp lạ mắt –
Đúng vậy. Đã khởi động lại thiết bị nhiều lần, và như bạn thấy từ bàn phím, ngôn ngữ cho iphone là danish ... Tò mò ... –
Hehe! Thật buồn cười! Có lẽ bạn nên gửi một báo cáo sự cố cho Apple về điều này? – Neeku