Оглядываясь назад на код, который у меня есть на рабочем сайте для перевода на испанский язык, я замечаю, что у меня есть те же строки в другом порядке, возможно, это имеет значение?Например:
<?php
putenv('LC_MESSAGES=es_ES');
setlocale(LC_MESSAGES, 'es_ES.utf8');
bindtextdomain('es','/full/path/here/application/locale');
textdomain('messages-es');
bind_textdomain_codeset('messages-es', 'UTF-8');
?>
Для работы приведенного выше кода мой .mo файл находится в / full / path / here / application / locale / es_ES.utf8 *Папка 1007 *.
Возможно, следующий код, который я использовал ранее, может помочь вам в дальнейшем устранении неполадок:
<?php
function TestLang( $langCode ) {
echo( '<b>TESTING LANG CODE: ' . strtolower( $langCode ) . '</b><br />' );
putenv( 'LC_MESSAGES=' . strtolower( $langCode ) . '_' . strtoupper( $langCode ));
echo( 'LC_MESSAGES: ' . getenv( 'LC_MESSAGES' ) . '<br />' );
$localeResult = setlocale( LC_MESSAGES, strtolower( $langCode ) . '_' . strtoupper( $langCode ) . '.utf8' );
echo( 'Locale: ' . $localeResult . '<br />' );
$textDomain = bindtextdomain( strtolower( $langCode ), ROOT . '/' . APP_DIR . '/locale' );
echo( 'Text Domain: ' . $textDomain . '<br />' );
textdomain( strtolower( $langCode ));
$codeSet = bind_textdomain_codeset( strtolower( $langCode ), 'UTF-8' );
echo( 'Code Set: ' . $codeSet . '<br />' );
echo( '.mo File: ' . $textDomain . '/' . $localeResult . '/LC_MESSAGES/' . $langCode . '.mo<br />' );
echo( '<br />-- ' . _( 'Hello World!' ) . ' --<br />' );
}
TestLang( 'en' );
TestLang( 'de' );
TestLang( 'es' );
TestLang( 'fr' );
// etc..
?>