我目前正在从事网站的翻译工作。
为了轻松执行此翻译,我创建了一个 .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/