Smarty и gettext - PullRequest
       32

Smarty и gettext

2 голосов
/ 06 октября 2011

Какой самый простой способ использовать gettext в сочетании с smarty, есть ли какая-нибудь функция simalar, доступная в php: _('hello world');?

Спасибо,

Ответы [ 5 ]

4 голосов
/ 30 ноября 2012

Мне действительно не хватало поддержки Smarty для (n) gettext. И хотя существующие плагины, кажется, делают хорошую работу, я все же думал, что должен попробовать.

Я только что выпустил: http://code.google.com/p/smarty-gettext/

Может быть, это кому-нибудь поможет. Обратная связь и т. Д. Более чем ценится.

3 голосов
/ 12 июля 2013

Существует множество способов добиться перевода страницы с помощью Smarty.

Мой путь

Я создаю несколько .conf файлов, содержащих что-то вроде:

en.conf

hello_world = "Hello! World!"
my_name_is = "They call me"

nl.conf

hello_world = "Hallo! Wereld!"
my_name_is = "Ik heet"

fr.conf

hello_world = "Bonjour! Tout le Monde!"
my_name_is = "Ils m'appellent"

Теперь у вас есть 2 варианта:

  • Вы можете загрузить файл .conf из файла .tpl:
  • Или вы хотите, чтобы PHP обрабатывал нужный файл. (Я использую этот метод)

template.tpl (английский)

{config_load file="en.conf"}

<html>
    <body>
        <h1>{#hello_world#}</h1>
        <p>
            {#my_name_is#}
        </p>
    </body>
</html>

template.tpl (голландский)

{config_load file="nl.conf"}

<html>
    <body>
        <h1>{#hello_world#}</h1>
        <p>
            {#my_name_is#}
        </p>
    </body>
</html>

template.php (Использование Smarty Class в PHP)

 $configFile = 'fr.conf';

 // Smarty Version 2
 $this->smarty->config_load($configFile);

 //Smarty Version 3
 $this->smarty->configLoad($configFile);

Надеюсь, это сработает и для вас.

3 голосов
/ 06 октября 2011

Похоже, есть плагин smarty-gettext: http://sourceforge.net/projects/smarty-gettext/, последнее обновление май 2011 г. http://smarty.incutio.com/?page=SmartyGettext

0 голосов
/ 19 сентября 2016

вы можете использовать функцию модификатора Smarty, как описано здесь: https://blog.ueffing.net/post/2013/07/19/php-smarty-a-modifier-for-internationalization-tool-gettext/ (конечно, предполагается установка gettext)

0 голосов
/ 09 октября 2015

Пожалуйста, поправьте меня, если я ошибаюсь. Я использую Smarty 3.1, добавленную в мой проект через композитор. И похоже, что я могу выполнить любую функцию php в моем файле .tpl. Например:

<p>post_max_size: {ini_get('post_max_size')}</p>

это дает мне:

<p>post_max_size: 8M</p>

Такое поведение заставляет меня думать, что я должен быть в состоянии сделать просто:

<p>{_("I like the way it works")}</p>

Первый тест не показывает ошибок и выводит:

<p>I like the way it works</p>

У меня еще нет файла перевода, и я не знаю, будет ли вызов распознан xgettext, но сейчас я проведу несколько тестов и сообщу, работает ли он.

...