2015-06-01 31 views
1

我目前正在翻译一个网站。 为了方便地进行这种翻译,我创建了一个.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)搜索的东西,但我根本不知道我怎么能用它来做我想做的。

有没有人有线索?

+0

是否当您添加脚本文件,而不是在一个单独的文件中有它的工作? – RST

+0

如果Javascript代码直接写入每个页面,它就会工作,但我不能在这种类型的项目中这样做。 –

回答

0

你在这里面临什么,是关注问题上分离。

你的翻译是从PHP产生。

然而,你的JavaScript显示和(有时)生成这些消息。

我该如何解决这个问题?

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

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

3)如果您使用Polyglot,请确保您的PHP翻译正在生成一个js文件,然后根据本地化进行加载。

Polygot会将您的默认讯息翻译成国际化讯息。

简而言之:

  • 启用模块化 - 管理(CRUD)在PHP中所有的翻译。在数据库中存储 他们将是理想的
  • JS去耦从翻译 - Polygot将只提供翻译的消息,你的观点(HTML)。
+0

谢谢你的回答Mysteryos。 但是,我忘了解释一些方面。 该网站是一个相当庞大的项目,并通过结合Wordpress和FuelPHP创建。它也被公司的其他成员使用,根据我被授予的任务,我将不允许修改网站的结构,或者在服务器上安装一些库(事实上,我甚至没有权限访问服务器)。 所以我想在这里不是为JS文件应用单独的翻译方式,而是试图将js文件包含在用我解释的过程创建的输出缓冲区中。 –

+0

WordPress的有一个国际化的模块(处理js文件),你有没有试过看这个?恐怕,在你的限制下,没有什么选择。上面提出的解决方案将为您的项目提供最低的技术和可维护性债务,除了完成此任务之外,这应该是您在整个任务中的目标。 – Mysteryos