Tôi có một ứng dụng iPhone có nút để thay đổi ngôn ngữ hiển thị trong thời gian chạy. Tôi đã xem xét NSLocalizedString() sẽ trả về các chuỗi thích hợp theo tùy chọn hệ thống. Các tùy chọn của tôi thay vì mã hóa cứng tất cả các chuỗi hiển thị và trả về theo lựa chọn ngôn ngữ người dùng trong thời gian chạy là gì? Bất kỳ con trỏ nào cũng sẽ được đánh giá cao.Thay đổi ngôn ngữ cho NSLocalizedString() trong thời gian chạy
Trả lời
"Trải nghiệm người dùng" chính xác là để người dùng chọn ngôn ngữ của họ thông qua bảng tùy chọn hệ thống; không phải ứng dụng của bạn (hoặc bảng cài đặt của ứng dụng, v.v.). Không có cách nào để ghi đè lên mỗi ứng dụng này và bạn sẽ không muốn bất kỳ ứng dụng nào thay đổi cài đặt trên toàn hệ thống.
Tôi không đồng ý. Đối với trò chơi truyền hình, tôi thích tiếng Nhật hơn vì tôi chơi các trò chơi Nhật Bản từ thời thơ ấu. Nhưng tôi thích sử dụng ngôn ngữ mẹ đẻ của tôi cho các ứng dụng khác. – AechoLiu
Ứng dụng của chúng tôi có thể không hỗ trợ tùy chọn hệ thống ở một số quốc gia nơi nó được giới thiệu, vì vậy ghi đè EN với DE sẽ là thắng lợi cho nhiều khách hàng có ngôn ngữ thứ hai khác mặc định = EN. –
Điều này giả định ứng dụng không hiển thị nhiều ngôn ngữ cùng một lúc. –
Sử dụng để thiết lập trật tự ngôn ngữ bằng vũ lực
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en",@"de",..., nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
sau đó sử dụng
NSLocalizedString();
để hiển thị chuỗi cục bộ ...
Bí quyết sử dụng ngôn ngữ cụ thể bằng cách chọn từ các ứng dụng là buộc NSLocalizedString sử dụng gói cụ thể tùy thuộc vào ngôn ngữ đã chọn,
đây là bài tôi đã viết cho này http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html
và đây là mã của ứng dụng một mẫu https://github.com/object2dot0/Advance-Localization-in-ios-apps
Dựa trên các bài bởi người sử dụng "object2.0", tôi đã đặt cùng một số mẫu mã bạn có thể sử dụng trong ứng dụng của mình để thay đổi ngôn ngữ giao diện người dùng khi đang di chuyển.
Lớp nội địa chính mà không được công việc khó khăn:
-(NSString *) localized:(NSString *) key
{
GameInfo *gameInfo = [GameInfo sharedInstance];
// langCode should be set as a global variable somewhere
NSString *path = [[NSBundle mainBundle] pathForResource:langCode ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
return [languageBundle localizedStringForKey:key value:@"" table:nil];
}
Giả sử bạn có chức năng này trong một lớp học toàn cầu gọi utils, gọi hàm này với đoạn mã sau (ví dụ để sản xuất các từ "Settings" .
NSLog([utils localized:@"Settings"]);
Để thay đổi ngôn ngữ:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:langCode, nil] forKey:@"AppleLanguages"];
tóm tắt tốt đẹp :) BTW, chúng ta cũng có thể lấy langCode từ NSUserDefaults, nếu chúng ta lưu ngôn ngữ đã chọn vào NSUserDefaults sau khi người dùng thay đổi ngôn ngữ khi đang bay. (dunno nếu hoạt động này là một hoạt động tốn kém, mặc dù) – aslisabanci
@CheckSmith tại sao "ofType: @" lproj "?? Tôi thường tạo ra Localizable.strings – onmyway133
- 1. Thay đổi ngôn ngữ tại thời điểm chạy trong Swing
- 2. Thay đổi ngôn ngữ khi chạy?
- 3. Android cách thay đổi ngôn ngữ ứng dụng tại thời gian chạy
- 4. Cách thích hợp để thay đổi ngôn ngữ tại thời gian chạy
- 5. Thay đổi Font trong thời gian chạy
- 6. Thay đổi hướng trong thời gian chạy
- 7. Cách thay đổi ngôn ngữ khi chạy trong java swing
- 8. WPF: Cách thay đổi CurrentUICulture tại thời gian chạy
- 9. Thay đổi App.config tại Thời gian chạy
- 10. Thay đổi menu tại thời gian chạy
- 11. Thay đổi ngôn ngữ cho các thông báo lỗi Subversion
- 12. Thay đổi ngôn ngữ trong C#
- 13. Thay đổi ngôn ngữ trong Qt
- 14. Thay đổi ngôn ngữ ứng dụng theo lập trình
- 15. Android - Thay đổi bố cục đoạn trong thời gian chạy
- 16. Những hạn chế của Thời gian chạy ngôn ngữ động trong .NET 4.0 là gì?
- 17. Thay đổi Cài đặt ứng dụng trong thời gian chạy
- 18. Làm thế nào để rơi trở lại nhiều ngôn ngữ trong Django tại thời gian chạy?
- 19. Thay đổi ngôn ngữ hệ thống C#
- 20. Ngôn ngữ đồng thời
- 21. Ngôn ngữ thay đổi Phonegap của nhãn?
- 22. Codeigniter Thay đổi ngôn ngữ đã tải
- 23. Thay đổi ngôn ngữ khi đăng nhập
- 24. thời gian chạy ngôn ngữ chung không thể đặt điểm ngắt
- 25. Thực thi thời gian chạy đệ quy Java so với các ngôn ngữ khác/chức năng?
- 26. Dấu thời gian của jQuery Timeago: Cách chọn ngôn ngữ?
- 27. Dấu thời gian bằng ngôn ngữ lập trình C
- 28. Thay đổi kích cỡ một THREE.CubeGeometry tại thời gian chạy
- 29. Cách thay đổi Spring's @Scheduled fixedDelay tại thời gian chạy
- 30. Thay đổi hoàn toàn ngôn ngữ IDE trong Netbeans 6.8
Xem http://stackoverflow.com/question s/1669645/how-to-force-nslocalizedstring-to-sử dụng-một-ngôn ngữ cụ thể – Elliot