Изменить язык по умолчанию для приложения iOS

Я создаю приложение на шведском языке, и оно должно работать только на шведском языке независимо от языка устройства. Мне интересно, как установить языковой стандарт по умолчанию для моего приложения на шведский язык, то есть sv_SE. Когда я создаю NSNumberFormatter, я хочу, чтобы он был локализован на sv_SE по умолчанию.

В настройках информации о проекте "Локализация" содержит только шведский язык.

NSNumberFormatter *nf = [NSNumberFormatter alloc] init];
NSLog(@"Locale: %@", nf.locale.localeIdentifier);

//Returns Locale: en_US

Мне не хватает такой общей настройки или мне нужно вручную локализовать все мои объекты на шведский язык?


person Christian R    schedule 09.07.2014    source источник


Ответы (2)


В среде выполнения приложения iOS нет ничего автоматического, что могло бы заставить его работать в нужном вам регионе. Да, вам нужно локализовать каждый ресурс, текст и сообщения, которые вы хотите отображать, в sv_SE.

Вы можете сообщить своему приложению, когда пользователь изменяет языковой стандарт (например, зайдя в настройки iphone), прослушивая уведомление NSCurrentLocaleDidChangeNotification.

После этого, если вам нужны дополнительные языки, вы можете использовать функцию NSLocalizedString для вызова нужного языкового стандарта каждый раз, когда вам нужно отобразить перевод. Это покажет переведенное значение на основе языкового стандарта, установленного пользователем в языковых настройках.

документация NSLocale дает дополнительную информацию.

person Nirav Bhatt    schedule 09.07.2014

Поскольку средства форматирования могут быть дорогостоящим ресурсом, часто рекомендуется кэшировать их создание. Если вы собираетесь сделать это, вы можете легко создать простую категорию, которая даст вам средство форматирования, настроенное так, как вам нужно, и кешированное - например, если мне нужны валюты, отформатированные определенным образом, я бы рассмотрел следующее

- (NSNumberFormatter *)tla_currencyFormatter;
{
  static NSString *TLACurrencyFormatterKey = @"TLACurrencyFormatterKey";

  NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary];

  NSNumberFormatter *formatter = threadDictionary[TLACurrencyFormatterKey];

  if (!formatter) {
    formatter = [[NSNumberFormatter alloc] init];
    // configure formatter
    threadDictionary[TLACurrencyFormatterKey] = formatter;
  }

  return formatter;
}
person Paul.s    schedule 09.07.2014