15. Локализация и ICU
Серверная часть S-INFO использует механизмы локализации .NET для работы с датами, временем, числами, строками и региональными форматами.
На Linux для этого используется системная библиотека ICU и установленные в системе локали. В большинстве установок необходимые компоненты уже есть. Если система установлена в минимальном составе, при запуске backend может появиться ошибка, связанная с Globalization, CultureInfo, ICU или Invariant mode.
|
Для Ubuntu 24.04 установите необходимые пакеты:
sudo apt install -y libicu74 locales
Сгенерируйте UTF-8 локаль:
sudo locale-gen ru_RU.UTF-8
sudo locale-gen en_US.UTF-8
При необходимости назначьте системную локаль по умолчанию:
sudo update-locale LANG=ru_RU.UTF-8
Проверьте текущую локаль:
locale
Проверьте наличие ICU-библиотек:
ldconfig -p | grep icu
На Astra Linux названия пакетов обычно близки к Debian/Ubuntu, но могут отличаться в зависимости от версии системы и подключенных репозиториев.
|
Если пакет libicu74 недоступен, найдите доступный ICU-пакет:
apt-cache search libicu
Затем установите найденный runtime-пакет ICU и пакет локалей:
sudo apt install -y locales <ICU_PACKAGE>
Для ALT Linux используется apt-get.
|
Перед установкой обновите сведения о пакетах:
sudo apt-get update
Найдите доступный ICU-пакет:
apt-cache search libicu
Установите пакет локалей и найденный runtime-пакет ICU:
sudo apt-get install -y glibc-locales <ICU_PACKAGE>
После установки проверьте доступные локали:
locale -a | grep -Ei 'ru_RU|en_US'
После изменения локали рекомендуется перезапустить сервер или повторно подключиться к консоли.
|
Отключать локализацию .NET не рекомендуется. Это может привести к некорректной обработке дат, чисел, строк и региональных форматов.
|
В крайнем случае, если backend нужно временно запустить для диагностики, можно включить invariant-режим .NET:
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
./BackendWebService
Для постоянного запуска через systemd переменная добавляется в файл службы:
Environment=DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
После устранения проблемы с ICU и локалями эту настройку необходимо убрать и перезапустить службу.
|