PHP ve dinamik içerik

3 Cevap php

Ben Smarty kullanarak ve ilgili {#VAR#} değişkenleri yerelleştirme uygulamak için config_load kullanan ediyorum. Bu sürece içerik şablonları içinde olduğu gibi mükemmel iyi çalışıyor, ama en kısa sürede TPL dosyası, yani ile dinamik içerik eklemek gibi başarısız:

{if isset($var) }
    {foreach from=$var item=line}
        {$line}<br>
    {/foreach}
{/if}

$ Var içinde her giriş genellikle bir {#VAR#} girdisini içeren unutmayın - ve onlar not translated olan (kullanıcı göreceksiniz {#VAR#}).

Bu durumda yerelleştirme uygulamak için doğru yolu nedir?


Solution

Ben sadece yukarıdaki kodu {$line}<br> değiştirerek sona erdi:

{eval var=$line}

Bu benim için hile yaptı.

3 Cevap

Muhtemelen {eval} gibi bir şey arıyor

{eval} belgelerine bir göz atın.

Durumunuza, bu deneyebilirsiniz:

example.php

<?php
  (...)
  $var = array("{#OK#}", "{#CANCEL#}");
  $smarty->assign('var', $var);
  $smarty->display('example.tpl');
?>

example.config

OK = Okay
CANCEL = Nevermind

example.tpl

{config_load file='example.config'}

<h1>Template stuff</h1>

{if isset($var) }
  {foreach from=$var item=line}
    {eval var=$line}<br>
  {/foreach}
{/if}

Umarım ki olur! :)

Ben gördüm büyük bir yaklaşımın çeviriler için kullanım düzenleyicileri oldu. Bu dinamik içerik çevirmek için izin.

tüm kod, sadece bir örnek, alışkanlık iş, sadece size bir fikir vermek için

Diyelim

your tpl

{"Hello word! How are you %s?"|translate:"Gabriel"}


{$myvar|translate:"Gabriel"}

your modifier

function smarty_modifier_translate($content, $args) {
  $lang = Env::getLanguage();
  return vsprintf($lang->getTranslation($content), $args);

}

Muhtemelen smarty php kodu ve templates_c dizine mağazalar bunu içine şablon ayrıştırır fark gibi. Bu kütüphane çok hızlı çalışmasını sağlar. Ne başarmak için gidiyoruz tamamen yeni bir şablon, bir halkalı kod yürütülmekte olan her zaman ayrıştırmak için gerektirecektir. Bu uygulama çok yavaş hale getirecektir.

Ben constatnts iletileri saklamak değil öneririm, ama bu, şablonlar örneğin depolamak için.

{assign var='lang' value='en'}
{if isset($var) }
    {foreach from=$var item=line}
        {include file="$lang/$line.tpl"}<br>
    {/foreach}
{/if}