локализация подъязыка iPhone en_*

Это возможно с Руководством , представленным в ConstraintLayout.

Например, вы можете разместить свой верх EditText на 25% высоты экрана, а слева и справа на 20% ширины экрана:

Layout Editor

Вот источник макета:



    

    

    

    


10
задан Mike Weller 1 June 2009 в 11:13
поделиться

5 ответов

When you choose 'English' from the list of languages on the iPhone preferences, that actually means the 'en_US' language.

So until apple update their software with additional sublanguages like "English (British)" etc. we are left with going by the locale region setting, and loading strings manually from another string table.

However, the language and regional locale are separated for a reason: a Spanish user in the UK may want dates/times formatted according to the local customs, but program strings in their native tongue. It would be incorrect to detect the regional locale (UK) and therefore display UK strings.

So basically there is no way to do this currently.

6
ответ дан 3 December 2019 в 22:38
поделиться

То, что вы делаете, должно работать в соответствии с документацией. Но похоже, что реализация iPhoneOS расходится с документацией. Согласно Radar 6158876 , нет поддержки языка en_GB, только локаль (форматы даты и т.п.).

4
ответ дан 3 December 2019 в 22:38
поделиться

Я обнаружил ту же проблему.

Кстати, если вы посмотрите на меню «Настройки iPhone» -> «Основные» -> «Международный», то увидите, что разница между языком и регионом довольно очевидна:

Языки:
-Английский

Формат региона:
-США
-United Kingdom

Структура локализации, похоже, обращает внимание только на язык, а не на регион.

У меня возникает соблазн подать запрос на усовершенствование этого в Apple, так как IMO разумно, что пользователь может захотеть использовать британский английский (для текста), находясь в Соединенных Штатах (где, скажем, номера телефонов должны быть в формате США).

1
ответ дан 3 December 2019 в 22:38
поделиться

Создайте отдельный строковый ресурс, например UKLocalization.strings , и создайте локализации для каждого из поддерживаемых языков. Для всех локализаций, кроме en , этот файл пуст. Для en он содержит только строки с уникальным написанием en_GB.

Затем вы создаете замену для NSLocalizationString, которая сначала проверяет таблицу UKLocalization перед тем, как вернуться к стандартной таблице локализации.

например:

static NSString* _locTable = nil;
void RTLocalizationInit()
{
    _locTable = nil;

    NSString* country = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode];
    if ([country isEqual:@"GB"])
    {
        _locTable = @"UKLocalization";
    }
}

NSString* RTLocalizedString(NSString* key, NSString* ignored)
{
    NSString* value = nil;
    value = [[NSBundle mainBundle] localizedStringForKey:key value:nil table: _locTable];
    if (value == key)
    {
        value = NSLocalizedString(key, @"");
    }
    return value;
}
1
ответ дан 3 December 2019 в 22:38
поделиться

Это действительно можно сделать - посмотрите мое решение здесь - Локализация приложения для iPhone - Проблемы с английским языком?

2
ответ дан 3 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: