在ob_start缓冲区中包含javascript文件内容

时间:2015-06-01 06:16:09

标签: javascript php output buffer ob-start

我目前正致力于翻译网站。 为了轻松执行此翻译,我创建了一个.csv file,其中包含两种语言之间的匹配(japanese-> english)。 然后,使用PHP解析此文件,并在页面上调用ob_start()以替换所需的字符串。

这是脚本:

    function lang_modify($buffer){

               require('get_messages.php');
               for($i=0; $i<count($messages); $i++){
                   $buffer = str_replace($messages[$i][0], $messages[$i][1], $buffer);
               }

                return $buffer;

        }

   $buffer = ob_start('lang_modify');

此脚本适用于php / html文件。但是,ob_start不会读取javascript文件,因此我想知道是否有人知道将javascript文件包含到输出缓冲区中的方法,以便ob_start()函数也将替换javascript中的单词。

有人建议我用AddFile语句(.htaccess)搜索一些内容,但我根本不知道如何使用它来做我想做的事情。

有没有人有线索?

1 个答案:

答案 0 :(得分:0)

您所面对的是关注点分离问题。

您的翻译是从 PHP 生成的。

但是,您的javascript会显示并(有时)生成这些消息。

我该如何解决这个问题?

1)确保您的翻译来自单一来源,最好来自 PHP

2)使用i18n js库处理翻译。我建议:https://airbnb.github.io/polyglot.js/

3)如果您使用的是Polyglot,请确保将您的PHP翻译生成为js文件,然后根据本地化加载该文件。

Polygot会将您的默认邮件转换为国际邮件。

简而言之:

  • 启用Modularity - 管理(CRUD)所有PHP翻译。将它们存储在数据库中 会是理想的
  • 从翻译中解密JS - Polygot只会将翻译的消息提供给您的视图(HTML)。