2015-04-09 2 views
0

У меня есть приложение iOS, локализованное на нескольких языках. У меня есть файлы Localizable.strings для английского, голландского и голландского (Бельгия). Проблема в том, что, когда голландский язык установлен как язык устройства, а Бельгия - страна, используются голландские строки, а не нидерландско-бельгийские строки.iOS неправильная локализация

Я добавил некоторые протоколирование, чтобы убедиться, что правильный язык установлен на устройстве, и это, кажется правильным:

NSLocale *locale = [NSLocale currentLocale];  
NSString *language = [locale displayNameForKey:NSLocaleIdentifier 
              value:[locale localeIdentifier]]; 
NSLog(@"language %@", language); 

Это печатает

2015-04-09 11:49:26.227 MyTestApp[222:7459] language Nederlands (België) 

Но если я попробуйте получить строку, используя NSLocalizedString. Я получаю голландский ресурс, а не голландскую Бельгию.

Я тестировал это на iPhone 5s под управлением 8.1 и на нескольких 7.1/8.1 симуляторах, и я не могу заставить его работать. Интересно, что если я решительно установил язык на голландский (Бельгия) в XCode в разделе «Редактировать схему» -> «Язык приложения», используется правильный язык.

ответ

0

Оказывается, проблема заключается в том, что Xcode создает папки ресурсов для каждого языка с дефисом, разделяющим язык и область, например. п-BE.proj. Однако в коде locale используется символ подчеркивания, например. nl_BE, поэтому область никогда не сопоставляется. Кажется, это ошибка XCode.

Решение состоит в том, чтобы изменить язык, чтобы он включал дефис, как описано здесь https://stackoverflow.com/a/14357315/416214

Смежные вопросы