Tôi đang phát triển một ứng dụng cho khách hàng ở châu Âu. Tôi là người nói tiếng Anh ở Mỹ. Ứng dụng của chúng tôi sẽ hỗ trợ một số ngôn ngữ, nhưng không hỗ trợ tiếng Anh. Tôi có tất cả các chuỗi trong ứng dụng của chúng tôi trong các tệp Localized.strings đã dịch, được thiết lập chính xác cho các ngôn ngữ khác nhau và tất cả đều hoạt động tốt khi thiết bị được đặt thành ngôn ngữ chính xác (ngôn ngữ của thiết bị là German = app được bản địa hóa chính xác cho tiếng Đức) .Ngôn ngữ mặc định không phải tiếng Anh cho ứng dụng iOS?
Có sự cố khi thiết bị không được đặt thành một trong các ngôn ngữ chúng tôi hỗ trợ, ví dụ: trên điện thoại của tôi được đặt thành tiếng Anh. Chúng tôi muốn điện thoại quay trở lại tiếng Đức trong những trường hợp như thế này, nhưng điều đó không xảy ra. Những gì chúng ta đang thấy là điện thoại đang sử dụng ngôn ngữ xuất hiện cao nhất trong danh sách Ngôn ngữ trong phần Quốc tế của Cài đặt.app. Đối với điện thoại của tôi, ngôn ngữ không phải tiếng Anh cao nhất trong danh sách là tiếng Pháp, vì vậy khi tôi chạy ứng dụng, nó được bản địa hóa cho tiếng Pháp. Nếu tôi thay đổi điện thoại của tôi sang tiếng Đức và sau đó quay lại tiếng Anh (thay đổi thứ tự trong danh sách Ngôn ngữ), ứng dụng sẽ bản địa hóa sang tiếng Đức.
Làm cách nào để đảm bảo ứng dụng mặc định là tiếng Đức cho các ngôn ngữ không được hỗ trợ? Tôi đã sử dụng this tutorial để thiết lập ngôn ngữ cho dự án. Điều này bao gồm xóa ngôn ngữ mặc định "tiếng Anh" được tạo khi bạn lần đầu tiên bản địa hóa tệp. Trong hồ sơ dự án, tôi đã thêm:
developmentRegion = de;
Ngoài ra, trong Info.plist, tôi có
<key>CFBundleDevelopmentRegion</key>
<string>de</string>
Với không thành công.
Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao!
Pascal có câu trả lời đúng: Ứng dụng này sẽ rơi trở lại vào nội địa hợp lý nhất tiếp theo; điều này là do thiết kế và là cách tất cả các ứng dụng trên iOS và Mac OS X được cho là hoạt động. Ứng dụng của bạn không phải là đặc biệt. –
Tôi vẫn đang cân nhắc câu trả lời này. Trong khi điều này rõ ràng là một phản ứng tốt được suy nghĩ, vào cuối ngày, yêu cầu kinh doanh vẫn là ứng dụng phải quay trở lại Đức trong trường hợp một nội địa hóa thích hợp không tồn tại; điều này là không thể thương lượng với khách hàng. Điều thú vị, và những gì tôi ám chỉ trong tiêu đề câu hỏi của tôi, là nếu thư mục English.lproj được lưu giữ trong dự án, nó được sử dụng như là sự sụp đổ khi không có bản địa hóa khác có sẵn.Nếu tôi không thể tìm ra bất cứ thứ gì khác, tôi sẽ chỉ giữ thư mục đó xung quanh và sao chép tài sản "de" trong đó. –
Không, tiếng Anh cũng không phải là mặc định của hệ thống. Nó đơn giản, hệ điều hành có một danh sách các bản địa hóa, như được thiết lập trong các sở thích. Khi bắt đầu một ứng dụng, nó sẽ tìm kiếm các thư mục * .lproj tương ứng và sử dụng thư mục đầu tiên khớp với một ngôn ngữ từ danh sách. Đó là lý do tại sao nó sử dụng tiếng Anh khi không có gì khác xung quanh. ;) Nhưng tôi biết một mẹo khác, sẽ xây dựng một câu trả lời mới ... – Pascal