3

多言語 Web サイトを設計しており、 と の両方ltrをサポートしていますrtl

  1. 言語:

    このような配列に言語を$lan=array('browse'=>'تصفح','add'=>'إضافة','signin'=>'تسجيل دخول');保存し、それらを個別のphpファイルに保存しinclude、選択した言語にしました。次のようなHTMLコード内で使用します<?php echo $lan['browse'];?>

  2. 方向:

    方向の問題のほとんどは、CSS プロパティによって解決できますdir。ただし、異なる方向に対して異なるプロパティを指定する必要がある場合があります。したがって、ボディに「rtl」または「ltr」のいずれかのクラス名を付けて、次のように使用します。

    .brs_search_box{
         display: inline-block;
         width: 199px;
         border: 1px solid #d3d3d3;
         height: 500px;
    }
    .rtl .brs_search_box{
         border-left: 0;
    }
    .ltr .brs_search_box{
         border-right: 0;
    }  
    

この手法の短所はありますか? たとえば、大きなサイズの配列は悪影響を及ぼしますか?

4

3 に答える 3

4

唯一の問題は、エコーしているテキストのすべての部分を明示的に翻訳していない場合です。

たとえば、echo $lan['this is some text'];このテキストをまだ翻訳していない場合はどうでしょうか。デフォルトのテキストを使用するための何らかのフォールバックを設定していない場合、これは画面に空白として表示されます。

私が使用した PHP 多言語サイトに最適なシステムの 1 つはgettext、次のリンクの PHP マニュアルで確認できます。

http://php.net/manual/en/book.gettext.php

私が最初にそれを使い始めたとき、設定するのはそれほど直感的ではなく、それを動かすにはいくつかの追加のツールが必要であることを認めますが、一度学習して設定すると、私の意見では非常にうまく機能し、あなたはまた、将来の生産のために弓に新しい弦を用意してください。

__()たとえば、基本的にすべてのテキストを function でラップする__('This is some text')と、翻訳ファイルが検索され、関連するテキストが表示されます。

これにより、すべてが個別のファイルに分割され、テキストを簡単に翻訳するために使用できます。これは、翻訳会社/友人/隣人の猫に、実際のアプリケーション ファイルに触れることなく翻訳してもらうのにも役立ちます。

さらに、指定したテキストの翻訳済み文字列が見つからない場合は、__()関数内で提供されているとおりに出力します。

これにより、時間の経過とともに新しい言語を追加するための非常にスケーラブルになります。

あなたが見ることができる他のオプションもあり、あなたのものがうまくいくと思いますが、業界で受け入れられているスケーラブルなアプローチについては、見るのが良いかもしれませんgettext.

于 2013-03-21T09:46:21.073 に答える
3

欠けているのは、翻訳を処理するための適切なツールチェーンです。配列は複数形をサポートしていますか? 環境?ドメイン?カテゴリー?コメント? 最も重要なのは、自動抽出をサポートしているかどうかです。

新しい文字列を配列に手動で追加するだけの場合、新しい文字列を追加するたびに山ほどの作業が必要になります。翻訳システムが文字列の完全自動抽出をサポートすることは重要です。ソース コードで文字列をマークし、スクリプトを実行すると、翻訳可能な文字列を含むファイルが自動的に取得されます。実行するたびに、ファイルが更新され、ソース コードの最新の変更とマージされます。これがないと、プロセスはすぐに管理不能になります。

さらに、将来のある時点で外部の非技術的な翻訳者と作業する必要がある可能性があるため、さまざまなツールで十分にサポートされている形式の文字列を使用することが重要です。

@Peter が指摘するように、gettext や同様の確立されたツールにはすべてが備わっています。あなたの配列はそうではありません。

于 2013-03-21T09:54:23.000 に答える
1

言語配列を使用するというアイデアは良いです。ただし、経験から、次の 2 つの手法をお勧めします。

言語構成ファイル。したがって、en_gb.php と arabaic.php と言うと、それぞれに翻訳の配列が含まれます。これらのファイルは、ユーザーの言語設定または IP アドレスに応じて事前に読み込むことができます。この手法は、翻訳が 1 つの中央の場所に保持されるため、非常に制限がなく、必要な数の言語を追加できます (例: french.php)。

データベース。これは好きなように設計できますが、理想的には、テンプレート ワードの列と各翻訳の列を含むテーブルを作成します。このテーブルは頻繁に変更される可能性が低いため、速度のためにディスク ベースまたはメモリ ベースのキャッシュを使用できます。

上記のいずれの手法でも、テンプレート システムを使用して、ページの読み込み時にそれぞれの翻訳をプラグインするだけです。ただし、言語を単語ごとに翻訳することは不可能であるため、経験から、サイトを両方の言語で徹底的にテストすることをお勧めします。ある言語で表示するのに 200 ピクセルかかるものは、別の言語では 400 ピクセルかかる場合があります。したがって、サイトはそれを念頭に置いて設計する必要があります。

于 2013-03-21T09:50:21.257 に答える