0

PHPの配列関数を使ってウェブサイトを翻訳したい。翻訳するすべてのテキストの配列を含むPHPファイルを作成しました。

<?php 
//ESPANOL
$lang = array(
              'work' => 'Trabajo'
              'packaging' => 'Empaque'
             );

そして、nav.phpファイル内でそれらを呼び出しており、コンテンツセクションでも呼び出します。

<?php include('includes/languages/es.php'); ?>
<a href="#"><?php echo $lang['work']; ?></a>

すべて非常に簡単です。

私が知りたいのは、HTMLを編集せずにこれらの配列ファイルを切り替える方法です。これにより、別の「index_es.php」などにリンクする必要がなくなります。リンクは次のようになることは理解していますが、これがどのように機能するかわかりません。

<a href="index.php?es.php>Español</a>|<a href="index.php/?en.php">English</a>

言語ファイルを含む別のファイルを含める必要があると思います。そうすれば、リンクはそれらから選択できますが、このためのコードがどうなるかわかりません。リンクの上に「lang_directory」を含めてから、そこから何とか含める必要がありますか?

**また、これを裏返しに学びたいので、Zend/Gettext翻訳の使用は避けたいと思います。

4

3 に答える 3

3

ターゲット言語を含む別のディメンションを作成できます。次に、GETパラメーターを渡してその言語を選択します。言語が認識されない場合は、英語にフォールバックできます。これがサンプルです。

$languages = array(
    'en' => array(
        'work' => 'work',
        'packaging' => 'packaging'
    ),
    'es' => array(
        'work' => 'Trabajo',
        'packaging' => 'Empaque'
    ),
);

// default language to use when the requested isn't found
$defaultLanguage = 'en';

// language requested via GET
$requested = $_GET['locale'];

// use the requested language if it exists, otherwise the default language
$language = isset($languages[$requested]) ? $requested : $defaultLanguage;

// our translations
$translation = $languages[$language];

// "work" translated based on the language
echo $translation['work'];

そして、Españolのリンクは次のようになります。

index.php?locale=es
于 2013-03-10T11:39:16.700 に答える
2

私はあなたの配列システムを維持し、リンクを次のようなものに修正してindex.php?lang=enから、langパラメータに応じてファイルを含めます。

if ( isset($_GET['lang']) && file_exists('includes/languages/'.$_GET['lang'].'.php') ){
  include_once('includes/languages/'.$_GET['lang'].'.php');
}

また、セッションで言語パラメータを保持したい場合は、次のようにします。

if ( isset($_GET['lang']) && file_exists('includes/languages/'.$_GET['lang'].'.php') ){
  $_SESSION['lang'] = $_GET['lang'];
}
if ( !isset($_SESSION['lang']) ){
  // Default language
  $_SESSION['lang'] = 'en';
}
include_once('includes/languages/'.$_SESSION['lang'].'.php');
于 2013-03-10T11:51:54.813 に答える
1

これを行う1つの方法は、セッションを使用することです。

  1. 言語間の変更に使用されるlang.phpファイルを作成します。

    <?php
            //Start session
            session_start();
            //Do we get a lang variable
            if (isset($_GET['lang'])) {
                    //Make sure we only get the lang filename
                    $lang = basename($_GET['lang']);
                    //If the file exists, then save it to session
                    if (file_exists('includes/languages/' . $lang . '.php'))
                            $_SESSION['lang'] = $lang;
            }
            //If the client were refered here (via hyperlink) send them back
            if (isset($_SERVER['HTTP_REFERER']))
                    header('location: ' + $_SERVER['HTTP_REFERER']);
    ?>
    
  2. 複数の言語が必要なファイルのヘッダーに、を挿入します。

    <?php
            //Start session
            session_start();
            //Default language
            $lang = 'english';
            //If the client have set a language, use that instead
            if (isset($_SESSION['lang']))
                    $lang = $_SESSION['lang'];
            //Load language file
            include('includes/languages/' . $lang . '.php');
    ?>
    

言語を変更するためのリンクは次のようになります。

<a href="lang.php?lang=espanol">Español</a>|<a href="lang.php?lang=english">English</a>

Outは、lang.phpファイルからコードを取得し、言語ファイルを含める前にロードされるインクルードファイルを挿入して、HTTP_REFERERリダイレクトを削除することもできます。

言語を変更するためのリンクは次のようになります。

<a href="?lang=espanol">Español</a>|<a href="?lang=english">English</a>
于 2013-03-10T11:59:33.170 に答える