Не удается локализовать infoplist.strings - PullRequest
2 голосов
/ 04 февраля 2012

Я попытался добавить локализованное значение в Info.plist, используя рекомендованный InfoPlist.strings

Нужно ли хранить ключ также в Info.plist?

Мой Info.plist

 <key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>

Мои локализованные строки

en.proj
  -> InfoPlist.strings
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-EN";

it.proj
  -> InfoPlist.strings
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-IT";

Если я сохраню ключ в Info.Plist, как указано выше, в коде переменная, которая должна иметь значение ключа

_localisedName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];

возвращает строку, которая находится в Info.plist (myApp) Если я удалю CFBundleName из Info.plist, строка будет иметь вид

Есть еще одна настройка, которую мне не хватает? Я попытался добавить и удалить оба файла из комплекта копирования (без каких-либо изменений).

Ответы [ 2 ]

4 голосов
/ 09 февраля 2012

Было довольно «сложно» искать его, но я в конце концов выяснил, надеюсь, это будет полезно кому-то еще

_localisedName = [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleName"];

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/occ/instm/NSBundle/localizedInfoDictionary

localizedInfoDictionary

Возвращает словарь с ключами из локализованного списка свойств пакета.

  • (NSDictionary *) localizedInfoDictionary

Возвращаемое значение Словарь с ключами из локализованного списка свойств пакета (InfoPlist.strings).

Обсуждение

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

0 голосов
/ 04 февраля 2012

Вы не пропустите настройку, вы вызываете неправильный метод.Вам необходимо вызвать один из локализованных строковых методов, например:

_localisedName = NSLocalizedString(@"CFBundleName", nil);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...