Я столкнулся с той же проблемой. Я опишу, что я сделал, чтобы исправить это в Ubuntu 10.10.
1) убедитесь, что у вас установлен 'gettext',
sudo apt-get install gettext
Кроме того, вы можете установить 'php-gettext', если 'gettext' не может быть установлен. Пакет 'php-gettext' не требуется, если у вас уже установлен 'gettext'.
2) Затем создайте локаль для вашего языка. В этом примере я буду использовать 'sv_SE'. Найдите поддерживаемые локали в / usr / share / i18n / SUPPORTED,
less /usr/share/i18n/SUPPORTED
Вы найдете несколько строк, начинающихся с 'sv_SE',
sv_SE.UTF-8 UTF-8
sv_SE ISO-8859-1
sv_SE.ISO-8859-15 ISO-8859-15
Это означает, что у вас есть несколько вариантов генерации локали для sv_SE. Один из параметров не имеет точки (.) В своем имени (т.е. sv_SE ISO-8859-1
); это набор символов по умолчанию для этой локали. Чтобы создать языковой стандарт для набора символов по умолчанию, выполните следующую команду
sudo locale-gen sv_SE
Если вы хотите сгенерировать эту локаль для набора символов UTF-8, выполните эту команду,
sudo locale-gen sv_SE.UTF-8
Перезапустите Apache после генерации локалей (в противном случае он не найдет вновь сгенерированные локали),
sudo service apache2 restart
3) Наконец, обновите ваш PHP-скрипт, чтобы он соответствовал сгенерированному вами языку. Если вы сгенерировали локаль для 'sv_SE',
setlocale (LC_ALL, "sv_SE");
Но если вы сгенерировали UTF-8-эквивалент этой локали, используйте
setlocale (LC_ALL, "sv_SE.UTF-8");
Теперь все должно работать.