Локализация Xcode: не переведены все строки

У меня есть приложение для iPhone, которое я хотел локализовать, поэтому я добавил китайскую локализацию. Для этого я добавил Localizable.strings (китайский) в свое приложение и добавил в него строки.

Но когда я компилирую, происходит странная вещь: переводится только половина или даже меньше строк. Я перепробовал все, что мог:

  • воссоздание моего файла строк,
  • смена ключей,

даже помещая рабочую строку и ключи в неработающую строку, но ничего не работает.

Все мои элементы являются UILabels, и я проверил каждую конфигурацию для каждого из них. Все они имеют одинаковую конфигурацию. Это может быть из-за конфигурации проекта, но почему тогда что-то работает? Я проверил некоторые другие ответы и попробовал решения (проверяю свои ключи, имя файла и т. Д.), Но ничего не работает. Пожалуйста, помогите мне понять, почему это происходит.

РЕДАКТИРОВАТЬ: вот как я печатаю свои строки

//this one doesn't work
self.resolution.text = NSLocalizedString(@"RESOLUTION", nil);
//this one works
self.label1.text=NSLocalizedString(@"CAMERAS", nil);

И в моем файле Localizable.strings у меня есть

"RESOLUTION"="Resolution";
"CAMERAS"="Cameras";

person Anila    schedule 23.02.2012    source источник
comment
он должен работать, кажется мне чистым. попробуйте удалить приложение из симулятора, очистить сборку и снова запустить ее.   -  person holographix    schedule 23.02.2012
comment
@holographix, я только что перезагрузил симулятор и теперь не могу скомпилировать приложение. : s. Получив SIGABRT, я думаю, что сейчас решу эту проблему.   -  person Anila    schedule 23.02.2012
comment
@holographix снова окей. И нет, это все еще не работает.   -  person Anila    schedule 23.02.2012


Ответы (5)


Решением моей проблемы было удаление приложения из симулятора, очистка и повторная сборка, как объясняется в holographix. Спасибо holographix :)

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

person Anila    schedule 28.02.2012
comment
У меня это сработало, но все же я не хочу, чтобы это повторялось в магазине приложений. - person Lucas; 05.02.2013

сделайте еще одну проверку, например, измените порядок элементов: попробуйте надеть верхнюю часть строк, которые не переводятся. затем в качестве доказательства концепции попробуйте создать третий локализованный файл с символами, отличными от utf-8 (например, в виде обычного текста без излишеств)

person holographix    schedule 23.02.2012
comment
уже пытался изменить порядок строк. Попробуем это со второй частью вашего решения. - person Anila; 23.02.2012
comment
это может быть проблема, связанная с природой файла в формате utf-8. - person holographix; 23.02.2012
comment
Я пробовал добавить испанскую локализацию. Переводится одна и та же строка, а остальные - нет: s. - person Anila; 23.02.2012
comment
чего я не понимаю, так это почему некоторые из них работают? У меня совершенно нет идей. - person Anila; 23.02.2012
comment
fail :( это очень неудобно, со мной этой проблемы никогда не случалось. и я делаю приложения с 5 языками: -o - person holographix; 23.02.2012
comment
это мое первое приложение, и я получил его, как несправедливо: p - person Anila; 23.02.2012
comment
Прошу прощения, сколько текстовых полей у вас в приложении? - person holographix; 23.02.2012
comment
Мне нужно перевести 15 этикеток. Может ли количество элементов создать такую ​​проблему? - person Anila; 23.02.2012
comment
нет, просто думал о другом вопросе, но это не твой случай. Можете ли вы предоставить фрагмент того, как вы печатаете одну рабочую этикетку и фрагмент нерабочей этикетки? - person holographix; 23.02.2012

Возвращаясь к Xcode 7. Еще одна уловка.

У меня была та же проблема, но ни одно из вышеперечисленных решений не помогло (я не говорю, что это не сработает в других ситуациях).

Решение заключалось в том, что у меня в конце одного определения стоит двойной ; (вероятно, из-за какой-то операции вырезания, копирования, вставки). Ошибка компиляции или предупреждение. Я просто удалил лишнее; и это снова сработало.

person parev    schedule 30.06.2016

У меня была аналогичная проблема. В моем случае это произошло из-за того, что речевые знаки были разными кодами символов в файле * .strings после копирования перевода из Google Translate. Повторный ввод речевых знаков исправил это.

person Mukund Agarwal    schedule 15.08.2016

Измените имя файла .strings на Localizable.strings, у меня это сработало.

person tamtoum1987    schedule 28.10.2020