2012-07-13 70 views
0

如何在JavaScript文件中使用翻译?如何在Zend Framework中使用JavaScript文件中的翻译?

我有一个formatter.js文件: “VILL杜radera”

function xyz(id) 
{ 
    if(confirm("Vill du radera ?")){ 
     location.href = "/student/files/delete/" + id; 
    } 
} 

在这里,我想用一个翻译。

在我view.phtml文件我用的是这样的:

<?=$this->translate->_("Select Template")?> 

它的正常工作......

回答

1

如果您在* .js文件包含的文件做一些翻译,你可以设置一个JS例如:

//viewscript: 
<script ...> 
    var translation = <?php echo Zend_Json::encode($this->translate->_("Select Template")) ?>; 
</script> 

您只需确保该变量在需要之前可用即可使用。

但是如果你需要做很多翻译,一种方法是在你的* .js文件中添加一个translate(key)函数。此函数将执行AJAX调用来检索单个密钥翻译,或者 - 优选地 - 多个/所有翻译并将它们存储在变量中,以便在第一次翻译时仅进行一次到服务器的往返。

//*.js 
var translations = null; 
function translate(key) { 
    if (translations !== null) { 
     return translations[key]; 
    } 
    else { 
     //use AJAX to get translations from server: /translations/serve-json 
     // ... 
     translations = ajaxData; 
     return translations[key]; 
    } 
} 

而这里的控制器:

//TranslationsController (for example) 
public function serveJsonAction() { 
    //get translations first 
    // ... 
    $this->_helper->json($translations); 
} 

最终用途是:

function xyz(id) 
{ 
    if(confirm(translate("VILL_DU_RADERA"))){ 
     location.href = "/student/files/delete/" + id; 
    } 
} 
+0

babubaba嗨,你好,感谢ü这么多..我会尝试你的方式,, – kiran 2012-07-13 07:52:09

+0

其实,如果你使用真正的AJAX,第二种解决方案将不会工作。您必须执行* S * JAX调用(同步)。我的错。 – bububaba 2012-07-13 07:57:56

1

与您使用此:

function xyz(id) 
{ 
    if(confirm("Vill du radera ?")){ 
     location.href = "/student/files/delete/" + id; 
    } 
} 

您必须从调用它.phtml文件。

你可以做一两件事:

你可以调用函数的xyz()有两个参数(1)身份证;(2)在一个.phtml文件

xyz("<?php echo id;?>","<?php echo $this->translate->_("Select Template")?>"); 

翻译变量

.js文件

function xyz(id,translate) 
{ 
    if(confirm(translate)){ 
     location.href = "/student/files/delete/" + id; 
    } 
} 

试试吧。

0

这也是一个IDE将您的js文件保存为.php并将其包含在视图中。当然你需要用标签包装javascripts。但是,最好的部分是,它会工作使用,例如:

 <script> 
    var text = '<?php echo $this->translate('string that would be in JavaScript');?>'; 
    </script> 

这种方式的好处是,你将拥有所有的翻译在一个地方

相关问题