2015-01-11 50 views
1

我是php的新手,我用PHP + JS編寫我的第一個網頁,沒有任何框架(也許以後)。php twig multilanguage without gettext

我有下一個問題。

如何在沒有Gettext或其他插件的Twig中實現多語言?

類似的東西(在純PHP - 沒有問題...但如何在樹枝使用它)

$lang=array(
"about_site" => "о нас", 
"project" => "проект", 
"team" => "команда"); 

其實我的項目沒有任何限制。 如果Gettext對我來說是最好的解決方案 - 我會使用它。 我以爲我必須翻譯每頁只有5-10個字。爲此使用Gettext有點奇怪。

+0

爲什麼限制gettext? – deceze

+1

當你說沒有gettext或其他插件時,你的意思是PHP擴展或者包括Twig擴展。已經有一個樹枝的翻譯擴展:http://twig.sensiolabs.org/doc/extensions/i18n.html –

+0

如果Gettext對我來說是最好的解決方案 - 我會使用它。我的項目沒有限制。我以爲每頁只能翻譯5-10個字。爲此使用Gettext有點奇怪。 –

回答

0

你可以很容易地使用像你這樣的php數組來翻譯樹枝。只需將數組傳遞到樹枝模板:

/* $twig is a is an instance of Twig_Environment */ 
$template = $twig->loadTemplate('yourtemplate.html'); 

$templateVars['trans'] = array(
    "about_site" => "о нас", 
    "project" => "проект", 
    "team" => "команда" 
); 
echo $template->render($templateVars); 

而且在模板:

<!-- a lot of html stuff --> 
<ul> 
    <li><a href="#">{{ trans.about_site }}</a></li> 
    <li><a href="#">{{ trans.project }}</a></li> 
    <li><a href="#">{{ trans.team }}</a></li> 
</ul> 

但是記住,如果你有單/複數表達式,變量,日期表達式等複雜的翻譯我會強烈建議您使用基於gettext構建的樹枝i18n擴展: http://twig.sensiolabs.org/doc/extensions/i18n.html