搜索后执行PHP页面+替换HTML中的语言翻译关键字

时间:2012-09-24 21:35:22

标签: php localization

我正在将我的网站翻译成不同的语言,我有超过130页,所以我想通过一个替换关键字的函数传递我的.php文件 IE:配件=อุปกรณ์
这是英语到泰语。

我可以使用我的方法让它工作但是...我在这些页面中显然有php(显然),输出只显示html而不执行php

是否有一个标题方法或我必须在我的php页面开头传递的东西..

这是我用来查找文本结果的函数,然后从我的php文件中替换它们。

    <?php

    // lang.php
    function get_lang($file)
    {

    // Include a language file
        include 'lang_thai.php';

    // Get the data from the HTML
        $html = file_get_contents($file);

    // Create an empty array for the language variables

        $vars = array();

    // Scroll through each variable

        foreach($lang as $key => $value)

        {

            // Finds the array results in my lang_thai.php file (listed below)

            $vars[$key] = $value;
        }


    // Finally convert the strings

        $html = strtr($html, $vars);

    // Return the data


        echo $html;

    }

    ?>

//这是lang_thai.php文件

    <?php

    $lang = array(
    'Hot Items' => 'รายการสินค้า', 
    'Accessories' => 'อุปกรณ์'

    );


    ?>

1 个答案:

答案 0 :(得分:1)

许多框架使用函数进行翻译,而不是在使用.pot文件后进行替换。该功能如下所示:

<h1><?php echo _('Hello, World') ?>!</h1>

因此,如果它是英语而未翻译,则该函数只返回未翻译的字符串。如果它被翻译,那么它将返回翻译的字符串。

如果你想继续你的路线,这肯定会更快实现,试试这个:

<?php
    function translate($buffer) {
        $translation = include ('lang_tai.php');

        $keys = array_keys($translation);
        $vals = array_values($translation);

        return str_replace($keys, $vals, $buffer);
    }

    ob_start('translate');

    // ... all of your html stuff

您的语言文件是:

<?php
    return array(
        'Hot Items' => 'รายการสินค้า', 
        'Accessories' => 'อุปกรณ์'
    );

一个很酷的事情是include可以返回值!所以这是从文件传递值的好方法。 ob_start也是一个带回调的输出缓冲区。所以当你将所有html回显到屏幕之后,就会在它实际显示到屏幕之前将所有数据传递给translate函数然后我们翻译所有数据!