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

标签 javascript php output buffer ob-start

我目前正在从事网站的翻译工作。 为了轻松执行此翻译,我创建了一个 .csv 文件,其中包含两种语言(日语->英语)之间的匹配项。 然后,使用 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) 进行搜索,但我根本不知道如何使用它来执行我的操作想。

有人知道吗?

最佳答案

您在这里面临的是一个关注点分离问题。

您的翻译是由 PHP 生成的。

然而,您的 JavaScript 会显示并(有时)生成这些消息。

如何解决这个问题?

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

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

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

Polygot 会将您的默认消息翻译为国际化消息。

简而言之:

  • 启用模块化 - 在 PHP 中管理 (CRUD) 所有翻译。将它们存储在数据库中 将是理想的
  • 将 JS 与翻译分离 - Polygot 只会向您的 View 提供翻译后的消息 (HTML)。

关于javascript - 将 javascript 文件内容包含在 ob_start 缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566792/

相关文章:

javascript - 如何访问 JavaScript 对象的属性?

javascript - Bootstrap 表如何隐藏,当使用 javascript 切换可见时它无法正确显示

javascript - 使用 sails.js 中的 beforeConnect 函数获取客户端套接字

Java没有输出返回

c++ - 读取随时间变化的文件 C++

javascript - 达到一定时间后停止计时器

php - 在 yii2 中放置 beforesave 函数的位置,如何在 Controller 中访问

php - iPhone 中的推送通知问题

php - Codeigniter- 检查用户在一个月内是否存在

php - 如何获取 php 键作为 php 数组中的值