在ob_start缓冲区中包含javascript文件内容
我目前正在翻译一个网站。 为了方便地进行这种翻译,我创建了一个.csv file
,其中包含两种语言(日语 - >英语)之间的匹配。 然后,使用PHP解析此文件,并在页面上调用ob_start()
以替换所需的字符串。在ob_start缓冲区中包含javascript文件内容
下面是脚本:
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)使用国际化JS库来处理您的翻译。我建议:https://airbnb.github.io/polyglot.js/
3)如果您使用Polyglot,请确保您的PHP翻译正在生成一个js文件,然后根据本地化进行加载。
Polygot会将您的默认讯息翻译成国际化讯息。
简而言之:
- 启用模块化 - 管理(CRUD)在PHP中所有的翻译。在数据库中存储 他们将是理想的
- JS去耦从翻译 - Polygot将只提供翻译的消息,你的观点(HTML)。
谢谢你的回答Mysteryos。 但是,我忘了解释一些方面。 该网站是一个相当庞大的项目,并通过结合Wordpress和FuelPHP创建。它也被公司的其他成员使用,根据我被授予的任务,我将不允许修改网站的结构,或者在服务器上安装一些库(事实上,我甚至没有权限访问服务器)。 所以我想在这里不是为JS文件应用单独的翻译方式,而是试图将js文件包含在用我解释的过程创建的输出缓冲区中。 –
WordPress的有一个国际化的模块(处理js文件),你有没有试过看这个?恐怕,在你的限制下,没有什么选择。上面提出的解决方案将为您的项目提供最低的技术和可维护性债务,除了完成此任务之外,这应该是您在整个任务中的目标。 – Mysteryos
是否当您添加脚本文件,而不是在一个单独的文件中有它的工作? – RST
如果Javascript代码直接写入每个页面,它就会工作,但我不能在这种类型的项目中这样做。 –