2017-09-06 5 views
0

皆さん、皆様のご協力をよろしくお願い申し上げます。 this exampleと同様の方法で複数のサイトを作成しました。すべてうまくいっていますが、選択した言語に応じてURLを変更したいと考えています。私は英語languagueを選択したときに、私のページは perfil.php 呼び出された場合、例えば、profile.phpである必要があり、ウェブ内のすべてのリンクは、あまりにも英語に翻訳しなければなりません。私は別の質問をサーフィンしていましたが、大半はhtaccessを通じて解決策を提示しています。これはうまくいくはずですが、その設定(または翻訳)を自分のデータベースに保存して、ユーザーが望むときに変更できるようにする必要があります。PHPの動的URL(Multilengual Web)

アイデア? もう一度ありがとうございます!

+0

あなたはその名前を保存してlangが変更されたときに使用する必要があります –

答えて

1

あなたは言語ファイルと呼ばれるいくつかのファイルで定数を使用することができますし、選択した言語でそれらを含める/必要:

english.php

const PROFILE = "profile"; 

spanish.php

const PROFILE = "perfil"; 

メインファイル:

require $language_selected . ".php"; 
echo '<a href="' . PROFILE . '.php">'; 
+0

ありがとうございますAmir。その解決策はリンクのために働くでしょう。しかし、私は私の質問で説明するために逃した何か:これは本当に存在する唯一のページは "profile.php"ですので、URLまたはリンク "perfil.php"を入れるとprofile.phpの内容を表示する必要がありますhtaccessを使わずに)。あなたはそれを遂行するために知っている方法はありますか? –

+0

htaccessを変更できない場合は、perfil.phpを作成し、profile.phpの内容が必要です。 –

+1

ルータでもこれを行うことができます! のような:altorouter.com –

1

この部分はコメントである必要がありますが、少し長めにしてください

あなたが提供したリンクに記載されている方法は、言語の選択肢を実装するための合理的な方法ですが、選択肢を検出する方法がありません。

お使いのブラウザはすでに、それは彼らshould respond in考えてどのような言語(複数可)のサーバーに指示します。ほとんどのWebサーバーにはmultiplexing different language contentの仕組みがあります。しかし後者は、ビヘイビアをオーバーライドする簡単な手段を提供せずに、ブラウザの選択肢をハードワイヤリングすることを意味します。

私が前に使用しているアプローチは、このようなものです:あなたはについて尋ねた問題への今

$use_lang='en-GB'; 
if (isset($_COOKIE['userlang']) 
    && is_language_supported($_COOKIE['userlang'])) { 
    $use_lang=$_COOKIE['userlang']; 
} else if ($proposedlang=supported_lang_in($_SERVER['Accept-Language'])) { 
    $use_lang=$proposedlang; 
} 

function supported_lang_in($str) 
{ 
    $l=array(); 
    $opts=explode(',', $str); 
    foreach ($opts as $v) { 
     list($p, $weight)=explode(';', $v); 
     if ($weight) { 
      list($dummy, $weight)=explode('=', $weight); 
      $weight=float($weight); 
     } 
     if (!$weight) { 
      $weight=1.0; 
     } 
     if (isset($l[$weight])) { 
      $weight-=0.001; 
     } 
     $l[$weight]=$p; 
    } 
    krsort($p); // preferred first 
    foreach ($p as $proposed) { 
     if ('*'==$proposed) { 
      return false; 
     } 
     if (is_language_supported($proposed)) { 
      return $lang; 
     } 
    } 
    return false; 
    } 

....

言語を間接参照し、同じコンテンツを参照するように異なるURLを維持コンテンツ内では、この問題に対する非常にビザンチンの解決策のようです。入力をURLにマップするだけでなく、出力のURLを適切な表現に書き換える必要があります。

意味的に意味のあるURLを持つ一方で、これらは動的に、おそらくあなたの時間を最大限に活用ではないではありません調整するために偉大な長さに行く、明確なボーナスです。

+0

"意味的に意味のあるURLは明確なボーナスですが、これらを動的に調整するにはかなりの時間がかかります。 >>私はそれに同意しますが...私の問題を解決するための代替手段は何ですか? Tks! –

+1

URLを既定の言語のままにしておく - 最後にURLを入力してサイトをナビゲートしたのはいつですか?ほとんどのモバイルクライアントでは表示されません。 – symcbean

+0

これについての良い点はありますが、サイトのSEOはどうですか? –