2

私は自分のウェブサイトをさまざまな言語に翻訳していて、130ページを超えているので、キーワードを置き換える関数を介して.phpファイルを渡したいです

しかし、私の方法を使用して動作させることができます...これらのページには(明らかに)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' => 'อุปกรณ์'

    );


    ?>
4

1 に答える 1

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' => 'อุปกรณ์'
    );

クールなことの1つは、include値を返すことができることです。したがって、これはファイルから値を渡すための良い方法です。また、ob_startはコールバック付きの出力バッファーです。つまり、すべてのhtmlを画面にエコーした後、実際に画面に表示される直前に、すべてのデータがtranslate関数に渡され、すべてのデータが変換されます。

于 2013-06-06T21:34:41.337 に答える