За последние 24 часа нас посетил 96951 программист и 9008 роботов. Сейчас ищут 2411 программистов ...

gettext(), как работать?

Тема в разделе "PHP для новичков", создана пользователем Lion777, 20 мар 2017.

Метки:
  1. Lion777

    Lion777 Новичок

    С нами с:
    20 мар 2017
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, вчера целый день боролся с gettext, выясннил, что переводит только компилированные файлы с расширением .mo и после изменений данных надо перезапускать сервер, но реагирует на перевод только по такому пути
    locale\ru\LC_MESSAGES
    или
    locale\ru_RU\LC_MESSAGES

    указываю en или любое другое не видит...
    и
    1. // Работает только с русским языком и на это не реагирует
    2. //putenv('LC_ALL=uk');
    3. //setlocale (LC_ALL,"English");

    листинг файла
    PHP:
    1. <?php
    2.  
    3. // Работает только с русским языком и на это не реагирует
    4. //putenv('LC_ALL=uk');
    5. //setlocale (LC_ALL,"English");
    6. /*
    7. // Указываем путь к таблицам переводов
    8. bindtextdomain("myPHPApp", "./locale");
    9.  
    10. // Выбираем домен
    11. textdomain("myPHPApp");
    12.  
    13. // Теперь поиск переводов будет идти в ./locale/ru_RU/LC_MESSAGES/myPHPApp.mo
    14.  
    15. // Выводим тестовое сообщение
    16. echo gettext("hello<br>");
    17. echo _('How are you?');
    18. */
    19. bindtextdomain("eng", "./locale");
    20. textdomain("eng");
    21. echo _('федя');
    22.  
    23. ?>
    подскажите как работать с этим gettext?
     
  2. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Lion777
    // Работает только с русским языком и на это не реагирует
    //putenv('LC_ALL=uk');
    //setlocale (LC_ALL,"English");
    а в мануале так мб както en_EN
    putenv('LC_ALL=de_DE');
    setlocale(LC_ALL, 'de_DE');
     
  3. Lion777

    Lion777 Новичок

    С нами с:
    20 мар 2017
    Сообщения:
    2
    Симпатии:
    0
    да делал так, в этих строчка что не пиши, ищет только в папке ru, их вообще закоментил, а оно работает.
     
  4. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Lion777 мб стоит неверно настроеный opcache?
    или закоментил не в том скрипте?
     
  5. sol24

    sol24 Новичок

    С нами с:
    25 янв 2018
    Сообщения:
    3
    Симпатии:
    0
    Потому что соответствующая локаль должна быть установлена в системе
    Например, в системе не установлена локаль de_DE вот и не работает gettext если указать эту локаль

    В linux например это может быть исправлено так (зависит от дистрибутива, конечно)
    Код (Text):
    1. # от root пользователя
    2. # отредактируй /etc/locale.gen
    3. # найди в списке и раскомментируй de_DE.UTF-8
    4. # сохрани и выполни команду
    5. locale-gen
    6.  
    7. # может быть не помешает перезагрузить сервер