2014-01-28 1 views
2

На одной из моих машин (с xampp для windows, xampp-win32-1.8.3-2-VC11-installer, php 5.5.6) этот код возвращает строку (2) 'п' ":setlocale "nl", работающий на одной установке, а не на другом

var_dump(setlocale(0, 'nl')); 

в то время как на другом компьютере с IIS (и PHP 5.4) это возвращает "BOOL (ложь)".

Я пробовал сайт http://setlocale.onlinephpfunctions.com/ и на их 5.5.5 это также возвращает «bool (false)».

Что влияет на это поведение? Это потому, что у xampp есть скрытая информация где-то, что моя (более простая) установка на IIS отсутствует?

+2

Это все о том, что включено в базовой операционной системе, и о фактическом значении используемой строки locale ... см. Примеры на странице [doc page] (http://www.php.net/manual /en/function.setlocale.php) для различий в Windows –

+0

Возможно, именно по этой причине на одном компьютере это окна 8, на другой странице – Tominator

+0

Я считаю, что вижу регресс между XAMPP 1.8.2 и 1.8.3 в этом отношении .. он отлично работал в Windows 8, используя 'setlocale (LC_MESSAGES, 'de_DE')', также с 'nl_NL',' en_UK' и 'fr_FR'. Но так как замена XAMPP устанавливает его ограниченный набор локалей ОС. Так же, как и перед тестовым скриптом с 'getlocale (LC_ALL, 0)' возвращает 'Dutch_Netherlands.1252' Дальнейшее тестирование требуется .. Между тем, можете ли вы подтвердить, что вы используете XAMPP <1.8.3, когда он действительно работал ?. –

ответ

1

Это известная ошибка: https://bugs.php.net/bug.php?id=66265

я могу воспроизвести проблему между XAMPP 1.8.2 и 1.8.3. Который использует PHP 5.4.19 и PHP 5.5.6 соответственно. Первый правильно загружает любой файл PO, который я запрашиваю, последний всегда загружает nl_NL независимо от того, какие параметры я использую. Моя ОС Windows является голландской.

Конечно, это не решит вашу проблему, но переход туда (и добавьте свой голос) может помочь решить эту проблему.


И многие ответы утверждают, что языковой стандарт должен быть установлен на ОС для работы ПО. Неправда.

Это просто не соответствует действительности. Моему PHP-файлу нужны только файлы PO, и он отлично работал для каждой локали, которую я пробовал. Как на компьютере с Windows 7, так и на Windows 8.1, по умолчанию используется голландский. Я могу использовать свой файл PHP в немецком, французском, английском и голландском языковых файлах.

Это все работало нормально, то PO файлы, в которых загружены и весь PHP страницы был показан на выбранном языке:

// All these lines worked fine with PHP 5.4.19 
putenv('LC_ALL=de_DE'); setlocale(LC_MESSAGES, 'de_DE'); // German 
putenv('LC_ALL=fr_FR'); setlocale(LC_MESSAGES, 'fr_FR'); // French 
putenv('LC_ALL=en_UK'); setlocale(LC_MESSAGES, 'en_UK'); // English 
putenv('LC_ALL=nl_NL'); setlocale(LC_MESSAGES, 'nl_NL'); // Dutch 

Тогда я попытался PHP 5.5.6 и те же команды перестали работать. На странице теперь всегда (!) Отображается локаль nl_NL. Выполнение getlocale(LC_ALL,0) возвращает Dutch_Netherlands.1252, который является языком по умолчанию ОС. Что-то делает мой PHP всегда использовать файлы nl_NL PO.

Итак, чтобы оставить все эти ответы на отдых: ОС не обязательно должен иметь установленный язык, файлы PO отлично работают без PHP 5.4.19, но не в PHP 5.5.6.

+0

Возможно, файлы lang отсутствуют на обеих установках? Отчет об ошибках предоставляет решение об этом. –

+0

Нет, Джон, файлы PO (если это то, что вы имеете в виду) существуют и в противном случае работают. Полная идентичная кодовая база перестает работать, когда она берется на сервер PHP 5.5.6, но продолжает работать, когда она берется на сервер PHP 5.4.19. Учитывая рабочую демонстрацию PHP, эту регрессию легко продемонстрировать путем переключения между версиями XAMPP. –

Смежные вопросы