3

我有一个需要本地化的javascript代码,即。

function js_proc() {
    var some_data = 'this text needs to be translated dynamically at runtime';
}

所以我重新写了这样的:

function js_proc() {
    var some_data = <?php echo $this->lang->line('some_data_id'); ?>;
}

在视图中,我这样写了js链接:

<script type="text/javascript" src="www.domain.com/codeigniter/get_js/file-1/"></script>

它调用控制器中的函数 get_js() 。这个想法是让 get_js() 函数读取 js 文件并翻译语言字符串......

要翻译的js字符串太多了,所以我不能every string作为变量传递。理想情况下,我想通过 codeigniter 语言文件来完成这项工作。

我的问题是:有没有办法解析 js 文件中的 php 部分并执行(=翻译)它们?IE。

class App extends CI_Controller
{
    function get_js {
        $content = file_get_contents($js_file);
        echo parse_php($content);
    }
    ...
}

谢谢!

4

3 回答 3

5

根据语言文件的大小,允许 javascript 访问整个语言数组的快速方法可能是将数组加载到全局 javascript 数组中;

<script>
    var globalLang = <?php echo json_encode($this->lang->language); ?>;
</script>

然后像这样访问你的javascript;

globalLang['some_lang_key']
于 2015-09-27T16:00:31.703 回答
2

我不太确定“要翻译的 js 字符串太多,所以我不能将每个字符串都作为变量传递”是什么意思,但是如果您正在寻找一些自动解析,这将无济于事.

但这可能对其他人有所帮助,所以就这样吧。

对于理想情况,我使用如下系统:

在我看来,我使用 codeigniter 语言支持将本地化添加为 JavaScript 全局变量。就像是:

<script type="text/javascript">
    var noEmailError = "<?php echo $this->lang->line('enter_your_email'); ?>";
</script>

然后在那之后,通常,紧接着,我包括引用全局变量的脚本:

<script type="text/javascript" src="/scripts/validate.js"></script>

脚本内部:

alert(noEmailError);

将显示本地化的文本就好了。

于 2013-09-04T11:49:43.580 回答
0

在页面输出的全局范围内为您的 javascript 字符串创建一个 json 对象:

<script>
    var oGlobalStrings = {
            some_data : '<?=$this->lang->line('some_data_language_key');?>'
        }
</script>

然后,您可以使用以下语法在整个 Javascript 应用程序中使用它:

oGlobalStrings.some_data

效果很好,可以在整个应用程序中轻松处理。

于 2012-10-16T04:05:44.020 回答