Интернационализация
Язык интерфейса
locale выбирает языковой пакет меню, подсказок, диалогов и других переводимых элементов интерфейса. locales регистрирует пакеты, но не выбирает язык. Настройка общая для всех документов экземпляра Univer. Используйте значения LocaleType, например LocaleType.EN_US.
- Все продукты: интерфейс:
localeменяет переводы меню, подсказок, диалогов и подписей плагинов. Пользовательский текст и имена существующих документов не меняются. - Sheets: форматы и формулы: Для отображения чисел/дат сначала используется переопределённая locale числового формата, затем
localeснимка книги, затемlocaleэкземпляра.regionне заменяет эти настройки.DOLLAR, денежные форматы результатов финансовых функций и нормализация ввода CJK по-прежнему используютlocale. - Docs: статистика:
localeиспользуется для разбиения текста на слова и подсчёта.
Смена языка во время работы
Перед сменой языка загрузите пакеты всех установленных плагинов или пресетов. loadLocales() объединяет переводы, не меняя язык; setLocale() выбирает язык, но ничего не скачивает. Вместо отсутствующих переводов отображаются ключи. Пример загружает общий пакет UI; в тот же вызов добавьте пакеты целевого языка остальных установленных плагинов.
import { LocaleType, mergeLocales } from '@univerjs/core'import UIEnUS from '@univerjs/ui/locale/en-US'univerAPI.loadLocales(LocaleType.EN_US, mergeLocales(UIEnUS))univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentLocale()) // enUSОбъединение языковых пакетов
Метод mergeLocales объединяет языковые пакеты нескольких плагинов или пресетов в единый объект языкового пакета. Использовать его можно следующим образом:
import { mergeLocales } from '@univerjs/presets'// You can pass multiple language pack objects to mergeconst locales = mergeLocales( plugin1Locales, plugin2Locales, presetLocales,)// You can also pass an array of language pack objectsconst locales = mergeLocales([ plugin1Locales, plugin2Locales, presetLocales,])import { mergeLocales } from '@univerjs/core'// You can pass multiple language pack objects to mergeconst locales = mergeLocales( plugin1Locales, plugin2Locales, presetLocales,)// You can also pass an array of language pack objectsconst locales = mergeLocales([ plugin1Locales, plugin2Locales, presetLocales,])Пользовательские языковые пакеты
Univer также поддерживает пользовательские языковые пакеты. Вы можете сформировать объект языкового пакета в соответствии со своими требованиями и передать его экземпляру Univer. Языковые пакеты пресетов обычно находятся в каталоге <rootDir>/packages/<PLUGIN_NAME>/locale.
import { LocaleType, Univer } from '@univerjs/core'const univer = new Univer({ locale: LocaleType.JA_JP, locales: { [LocaleType.JA_JP]: { ui: { shortcut: { undo: '元に戻す', redo: 'やり直す', }, }, }, },})Участие в переводе
В настоящее время Univer включает следующие языковые пакеты:
zh-CN: упрощённый китайскийen-US: английскийzh-TW: традиционный китайскийzh-HK: традиционный китайский (Гонконг)ru-RU: русскийvi-VN: вьетнамскийfa-IR: персидскийfr-FR: французскийja-JP: японскийko-KR: корейскийes-ES: испанскийca-ES: каталонскийsk-SK: словацкийar-SA: арабскийde-DE: немецкийid-ID: индонезийскийit-IT: итальянскийpl-PL: польскийpt-BR: португальский (Бразилия)
Univer — открытый и инклюзивный проект. Мы приглашаем разработчиков со всего мира добавлять и улучшать локализации Univer.
Региональные настройки
region задаёт региональные правила для соответствующих функций. Настройка общая для всех документов экземпляра Univer.
Для обоих параметров используйте LocaleType: например, LocaleType.EN_US имеет значение enUS, а en-US — это имя файла языкового пакета / тег BCP 47. Не передавайте коды стран вроде US или SG в region. Если интерфейс использует другой язык, загружать языковой пакет региона не нужно.
Без явного значения region следует за locale, включая последующие вызовы setLocale(). Установка region при инициализации или вызов setRegion() прекращает это поведение. При последующей смене языка выбранный регион сохраняется. Публичного API для возврата к автоматическому следованию нет; задавайте оба значения, если они должны меняться вместе.
Добавьте region: LocaleType.DE_DE рядом с locale в createUniver() или new Univer(), чтобы сохранить язык интерфейса и использовать региональные правила Германии.
import { LocaleType } from '@univerjs/core'univerAPI.setRegion(LocaleType.DE_DE)univerAPI.setLocale(LocaleType.EN_US)console.log(univerAPI.getCurrentRegion()) // deDEВ этом примере интерфейс переключается на английский, а регион остаётся немецким. getCurrentLocale() и getCurrentRegion() возвращают действующие идентификаторы. Для совместного изменения вызовите оба setter с одним значением LocaleType.
- Sheets: денежные форматы:
regionопределяет значок валюты, варианты и предпросмотр денежных/финансовых форматов и формат, применяемый командой валюты. Смена региона не переписывает форматы существующих ячеек и не конвертирует суммы. - Docs: статистика:
regionформатирует числа в диалоге статистики и строке состояния (например, разделители групп разрядов), не меняя правила подсчёта. - Ветки комментариев, если включены:
regionопределяет формат даты/времени с 24-часовым представлением и латинскими цифрами.localeзадаёт язык интерфейса комментариев. Сохранённые метки времени не меняются;regionне задаёт часовой пояс. - Boards, Slides, Bases, PDFs:
localeуправляет переводом интерфейса.regionдоступен общим подключённым функциям, например веткам комментариев, но не переформатирует автоматически текст досок/слайдов, поля Base или содержимое PDF.
Расположение справа налево
Внимание
В настоящее время RTL поддерживается только на уровне UI. Уровень рендеринга не поддерживает RTL.
Внимание
Языковые пакеты доступны не для всех плагинов. Информация об их наличии приводится в документации каждой функции.
univerAPI.setDirection('rtl')Насколько полезно это руководство?