Реализация локализации мобильного приложения на узбекский язык
Узбекский язык — формально один, но технически существует в двух активных письменностях: кириллица (старший сегмент аудитории, сельские районы) и латиница (официальная с 1993 года, молодёжь, городская среда). Большинство продуктов, рассчитанных на Узбекистан, поддерживают обе. Это не удвоение работы, но дополнительная логика выбора письменности.
Locale и письменности
iOS locale: uz_UZ (узбекский кириллицей по умолчанию на старых системах) и uz_Latn_UZ (латиница). Android аналогично: uz → кириллица исторически, uz-Latn → латиница.
Реальное поведение системы зависит от версии ОС и региональных настроек устройства. Надёжный подход — определять предпочтение письменности явно: дать пользователю выбор в настройках приложения и сохранять в UserDefaults (iOS) или SharedPreferences (Android).
Узбекская латиница содержит специфические символы: Oʻ (O с хвостиком) и Gʻ (G с хвостиком) — это не стандартные Unicode символы O и G с диакритикой, а специфические кодовые точки. Системные шрифты поддерживают, кастомные — проверяем.
Кириллический узбекский содержит Ў (у краткое) и Қ, Ғ, Ҳ, Ң — аналогично казахскому, но набор немного другой.
Plural forms
Узбекский — агглютинативный язык (тюркская группа). По CLDR plural rules: только one и other. Это технически проще русского — двух форм достаточно. Но падежные суффиксы при подстановке существительных требуют того же подхода, что и казахский: переформулировать строки без проблемных согласований.
Пример: «5 ta xabar» (5 сообщений в латинице) — существительное не изменяется, используется числительное «ta» как частица множественности. Переводчик должен учитывать эту структуру.
Направление текста
Узбекский — LTR в обеих письменностях. Layout не меняется.
Форматы
DateFormatter с Locale(identifier: "uz_Latn_UZ") для латинского узбекского. Формат даты: DD/MM/YYYY. Числа: разделитель тысяч — пробел, десятичный — запятая: «1 234,56».
Если приложение работает с валютой — узбекский сум (UZS). NumberFormatter с currencyCode: "UZS" и uz_UZ locale.
Практика реализации
Стандартный workflow:
- Экспорт строк в XLIFF (iOS) или Android Localization strings
- Перевод с верификацией носителем (отдельно кириллица и латиница, если поддерживаем обе)
- Добавление
uz.lprojиuz-Latn.lprojна iOS,values-uzиvalues-b+uz+Latnна Android - Тестирование с обеими системными локалями
Машинный перевод на узбекский — хуже, чем на русский или английский. Для UI-строк с юридическим смыслом (политика конфиденциальности, согласия) — обязательно носитель.
Сроки: три-пять рабочих дней при поддержке одной письменности, пять-восемь при поддержке обеих — с учётом тестирования и верификации перевода.







