2012-06-08 36 views
5

Tôi muốn nhận ngôn ngữ mặc định của hệ thống và ngôn ngữ hệ thống.Cách lấy ngôn ngữ hệ thống và ngôn ngữ hệ thống trong ca cao

Tôi đã thử đoạn mã sau để có được hệ thống locale hiện như sau

NSLocale *locale; 
locale = [NSLocale systemLocale]; 

NSString * localLanguage = [locale objectForKey:NSLocaleIdentifier]; 
NSLog (@"Language : %@", localLanguage); 

NSLog(@"System locale Identifier %@",[locale localeIdentifier]); 

Nhưng không có gì được hiển thị với hệ thống locale Identifier.If nó là currentlocale nó được đưa ra hệ thống locale đúng result.Why không đưa ra bất kỳ giá trị nào và cách nhận ngôn ngữ mặc định của hệ thống không phải ngôn ngữ ưa thích của người dùng? vui lòng giúp

Trả lời

4

Mặc định NSLocaleIdentifier là cố ý @"" để cho biết không có lựa chọn hiện tại. Theo Apple, systemLocale chỉ là một dự phòng cho các khóa không được triển khai trong miền địa phương đã chọn của người dùng (currentLocale) và vì nó luôn được đặt và luôn nằm trong tầm kiểm soát của người dùng, điều đó có ý nghĩa.

Nếu bạn muốn theo danh sách ngôn ngữ ưa thích của người dùng, bạn muốn sử dụng + preferredLanguages, trả về danh sách ngôn ngữ mà người dùng muốn, theo thứ tự họ thích. Điều này làm việc cho cả OSX và iOS, và phục vụ để cung cấp một dự phòng thích hợp cho hệ thống khi lựa chọn ngôn ngữ.

Để thử nghiệm, bạn có thể sử dụng công tắc dòng lệnh -AppleLanguages với giá trị mảng được phân cách bằng dấu phẩy, dấu ngoặc đơn (ví dụ: (DE,FR,EN)) và Xcode sẽ mô phỏng đó là danh sách ngôn ngữ ưa thích cho người dùng.

Vì người dùng đặt ngôn ngữ ưa thích (ít nhất là trong OSX), hệ điều hành sẽ theo danh sách khi chọn dữ liệu được bản địa hóa cho người dùng. Nói chung, làm bất cứ điều gì nhiều hơn bằng cách sử dụng các macro được coi là không cần thiết do thực tế này. Tuy nhiên, bạn có thể xem giá trị theo cách thủ công nếu bạn có thông tin phi tài nguyên mà bạn cần bản địa hóa.

+0

Cám ơn bạn response.Do bạn có bất kỳ ý tưởng làm thế nào tôi có thể nhận được ngôn ngữ hệ thống. – Akbar

+0

Có thực sự không phải là một cho OS X. Đó là tất cả xác định bởi người sử dụng. Bạn đang cố gắng sử dụng nó để làm gì? Có thể có một cơ chế khác mà tôi có thể chỉ cho bạn. – gaige

+0

Câu hỏi của tôi. là để hiển thị văn bản trong ngôn ngữ ưa thích của người dùng, nó được lấy từ các dịch vụ phụ trợ, nếu người dùng không được chọn ngôn ngữ cụ thể, sau đó tôi cần hiển thị văn bản bằng ngôn ngữ hệ thống mặc định.Những lý do tại sao tôi đang cố gắng tìm hiểu làm thế nào tôi có thể tìm nạp ngôn ngữ mặc định của hệ thống. Bạn có thể cho tôi biết cơ chế kia là gì không? – Akbar

8

Bạn chỉ có thể sử dụng: NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];

+0

Đây là giải pháp tốt nhất tôi có thể sử dụng, cảm ơn! – thibmaek

Các vấn đề liên quan