最初は操作しやすいXML文書形式で作ろうと考えました。 XML はあまり効率的ではないことがわかりました
さらに、さまざまなテンプレートがありますが、小さな問題があります。時間プロンプトなどの一部の単語は不確実で、分または日である可能性があります。複数の数字にsを付けることも可能です
さて、配列にしますが、配列はphpファイル内で変数にしないといけないので、展開が大変です(これが私が知っていることと思っていることです) )
最後に、テキストファイル形式で、ファイルを開いて文字列を検索し、文字列をインターセプトするのに時間がかかりました。平均的なマシンでは 0.0004 秒です。結局、何回も呼び出しがかかるのではないかと思いました。
OK、コードを入力します
コードをコピーします コードは次のとおりです:
クラス言語
{
static $lanObject;
public $type; // ユニット、ダッシュボード、メニュー、その他
public $lan // ファイル内の共通プライベート関数 __construct( )
{
if( isset($_GET['hl']) || isset($_POST['hl']) )
{
switch( isset($_GET ['hl' ])?$_GET['hl']:$_POST['hl'] )
{
case 'en':
$this->lan = 'en'; 🎜>case ' zh':
$this->lan = 'zh';
case 'all':
$this->lan = 'all'; >$this->error();
}
}
else
$this->lan = isset($_COOKIE['hl']) $_COOKIE['hl'] :'zh' ;
}
パブリック静的関数 getObject()
{
if( !(self::$lanObject instanceof self) )
self::$lanObject = 新しい言語( );
return self::$lanObject;
}
public function lto($key) //$key は英語です
{
if( $this->lan !== 'zh' )
return $key;
if( empty($this->special) ) // $special が null の場合
{
if( isset($this-> type) )
$this->special = file_get_contents($this->type.'.txt');
else
return $key
}
echo $this- >search( $key);
}
プライベート関数 search($searchTozh) // PHP 文字列
{
$key_start = strpos($this->special,$searchTozh); 🎜>$key_end = strpos($this->special,' ',$key_start);
$len_str = strlen($searchTozh);
$for_sub = $key_start $len_str 1; ($this->special, $for_sub, $key_end - $for_sub);
}
}
strpos(); 'hello world' の 'wo' など、戻り値は 6 です。
substr(); はインターセプトされた文字列の一部です
以下はデバッグ中に追加されたコードです
$la = language::getObject(); $la->type = 'unit' ; $la->lto ('min') echo '
';
lto(これは英語に翻訳する必要があります);
unit.txt ファイルのコンテンツ形式は
hello-hello min-small minutes- minutes- minutes
$special であるように設計されています。グローバルであり、lto() が複数回呼び出されることが予想されるため、ファイルを繰り返しロードすることはパフォーマンスの無駄です。
$type は、ロードされたファイルの効率を考慮して公開されるように設計されているため、数日前のファイルを表示する必要がない場合があります。たとえば、次のようなものがあります。 menu.txt は特にメニューの翻訳を担当します。削除や収集などの操作に特化して翻訳された txt テキストもあります。このように、読み込むテキストを自由に設定できます
言語も自由に設定できます。