Tôi biết nhiều nhà phát triển chỉ làm như sau: Họ bắt đầu phát triển ứng dụng bằng tiếng Anh và đặt NSLoclaizedString(@"Tap this to do that!", @"Telling what to do...")
thay vì chỉ đơn giản là @"Tap this to do that!"
.Có an toàn khi sử dụng các khóa "thực" trong NSLocalizedString() không? Có ngôn ngữ dự phòng được bảo đảm không?
Sau đó, chúng chạy genstrings
tạo tệp Localizable.strings bằng cách nào đó bằng cách trích xuất tất cả các chuỗi này. Phần lộn xộn: Các văn bản dài được sử dụng trong mã trở thành chìa khóa. Nó hoạt động. Cho đến một ngày mà bạn nhanh chóng đi vào mã của bạn và thay đổi chuỗi tiếng anh và quên về bản địa hóa và nó phục vụ như là chìa khóa cho tất cả những tập tin Localizable.strings.
Vì vậy, tôi có xu hướng sử dụng các phím "thực" không bị lẫn lộn với chuỗi. Để kiểm tra nhanh, tôi đã tạo một dự án được bản địa hóa sang tiếng Anh và tiếng Pháp. Sau đó, tôi đặt ngôn ngữ Trình mô phỏng thành tiếng Đức. Bởi vì, bạn biết đấy, nó sẽ hút khủng khiếp nếu người dùng sẽ thấy khóa như TTTDT
.
Vì vậy, chỉ với tiếng Anh và tiếng Đức tại chỗ, tôi đã khởi chạy ứng dụng demo. Và những gì tôi nhận được là văn bản tiếng Anh từ tệp English Localizable.strings.
Kết luận: Dường như NSLocalizedString rơi trở lại tệp tiếng Anh nếu ngôn ngữ hệ điều hành không được ứng dụng bao trả.
Quesion: Giả sử luôn có tệp Localizable.strings (English)
và các khóa nằm trong tệp cùng với các giá trị được định dạng đúng. Có trường hợp nào theo đó NSLocalizedString sẽ không thành công và sau đó hiển thị khóa trực tiếp?
Điểm tốt. Tôi cũng sẽ thêm hiệu suất tốt hơn. – dontWatchMyProfile