Локализируем низ за iOS със стойности по подразбиране

Искам да разбера как работи локализуемият базов низ в iOS. Например, в Android, ако имам низове за локализиран файл по подразбиране (базова локализация на iOS), като:

"title_app" = "Title"
"Copy" = "Copy";
"Edit = "Edit;"

И тогава имам испански локализиран файл като:

"Copy" = "Copiar";
"Edit" = "Editar";

Защо на iOS, ако задам испански език на устройството си, ключът „title_app“ не се появява? Тъй като Android, ако не намери ключ, взема ключа от езика по подразбиране.

Понякога има думи, които не се нуждаят от превод. Или понякога имам 10 езика и може би един език се нуждае от превод от непреводима дума. Например „title_app“ = „Моето приложение“. Ще бъде същото на английски, френски, италиански, испански... но на китайски не. Не е ефективно да напишете ключа на 10 файла, повтаряйки... представете си 10, 20 или 50 думи.

Винаги Apple/iOS изостават по отношение на превода/локализацията спрямо Android... :S

Говорим за превод; съжалявам за лошия ми английски.


person jlmg5564    schedule 20.05.2015    source източник
comment
Погледнете тук: daveoncode.com/2010/05/15/ iphone-applications-localization, трябва да работи в зависимост от вашите настройки за предпочитани езици.   -  person TheEye    schedule 20.05.2015


Отговори (1)


Макросът NSLocalizedString приема два параметъра, ключ и коментар. Ключът ще бъде търсен във файл Localizable.strings, който е проста колекция от двойки ключ-стойност.

Както @TheEye посочи в коментарите чрез връзка към публикация в блога, можете да упражнявате повече контрол и изрично да включите стойност по подразбиране, като използвате NSLocalizedStringWithDefaultValue макрос вместо това.

Това, което трябва да осъзнаете, е, че имате избор: можете или да използвате по-простия макрос и да третирате ключа си като стойност по подразбиране (и iOS ще се върне към това), или да използвате по-специализирания макрос, който е по-подробен, но ви дава повече контрол вместо това.

Забележете, това вече беше обсъдено тук: Резервен език за iOS (с непълен Localizable .strings файл)

person Michael Teper    schedule 20.05.2015