CodeigniterはURLで言語を切り替えます

Dejan Dozet

私はそれをすべて構築しました:フックで言語を切り替えることは機能することを意味しますが、今はURLから言語を取得して、次のように切り替えたいと思います:

http:// localhost / about-me

または

http:// localhost / o-meni

したがって、最初のリンクを誰かに送信すると、言語が自動的に検出され、そのページとすべてのナビゲーションリンクがその言語で表示されます。

ルートでは、使用したい言語をメインコントローラーの関数パラメーターにすでに転送しています。次に、その言語を設定する必要があります。しかし、$ this-> session-> set_userdata( 'site_lang'、 "српски")を実行しても、背後の言語はすべて変更されません。

既存の言語スイッチャーでは、言語セッションを選択した言語に設定した後、リダイレクトが使用され、参照リンクにリダイレクトされることに気付きましたが、ユーザーの直接入力を管理する方法は?

私は自分自身を明確にし、誰かがこれに参加することを願っています。

ありがとうございました。

Dejan Dozet

私はこのような解決策を見つけました:

アップデート1:

私は最初に言語スイッチャーでこのようにしました:

class LanguageSwitcher extends CI_Controller {

  public function __construct() {
    parent::__construct();
  }

  function switchLang($language = "") {
    $lang_en['about-me'] = 'o-meni';
    $lang_sr['o-meni'] = 'about-me';

    $lang_en['services'] = 'usluge';
    $lang_sr['usluge'] = 'services';

    $lang_en['products'] = 'proizvodi';
    $lang_sr['proizvodi'] = 'products';

    $lang_en['downloads'] = 'preuzimanja';
    $lang_sr['preuzimanja'] = 'downloads';

    $lang_en['contact'] = 'kontakt';
    $lang_sr['kontakt'] = 'contact';

    if ($language === "") {
      $language = 'српски';
    }

    $this->session->set_userdata('site_lang', $language);

    $referrer = strtolower($this->agent->referrer());
    //log_message('error', "switchLang:" . $referrer . ", lang:" . $language);
    if ($referrer !== "") {
      $l = str_replace(base_url(), "", substr($referrer, strrpos($referrer, base_url())));

      if (urldecode($language) === 'српски' && array_key_exists($l, $lang_en)) {
        $referrer = str_replace($l, $lang_en[$l], $referrer);
      } else
      if (urldecode($language) === 'english' && array_key_exists($l, $lang_sr)) {
        $referrer = str_replace($l, $lang_sr[$l], $referrer);
      }

      redirect($referrer);
    }
  }

}

次に、コントローラーで、呼び出す関数を作成します。

private function redirectLanguage($param) {
  $site_lang = urldecode($this->session->userdata('site_lang'));
  //echo $param . "+" . $site_lang;
  if ($param === "sr" && ($site_lang === "english" || $site_lang === "")) {
    $this->session->set_userdata('site_lang', "српски");
    $this->lang->load("message", "српски");
  } else if ($param === "en" && ($site_lang === "српски" || $site_lang === "")) {
    $this->session->set_userdata('site_lang', "english");
    $this->lang->load("message", "english");
  }
}

このような:

  public function about($param = "") {

    $this->redirectLanguage($param);

    $this->load->view('header');
    $this->load->view('main_starts');
    $this->load->view('about-me');
    $this->load->view('main_ends');
    $this->load->view('footer');
  }

このようにして、ブラウザのアドレスバーに直接貼り付けてメッセージをロードし、セッションsite_langを設定すると、それをキャッチできます。

IEとEDGEのいくつかの問題を除いて、すべて機能するようになりました。

アップデート2:

他のブラウザでも機能するように、これを追加する必要がありました。

$browser = $this->agent->browser();

if ($browser === "Chrome" || $browser === "Firefox") {
  header("Cache-Control: max-age=3600, public");
} else {
  header("Expires: Sun, 19 Nov 1978 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
}

キャッシュがオンになっていると、Internet Explorerでセッションがうまく機能しないため、オフにすることをお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular 8で言語を切り替える方法はありますか?

分類Dev

CDNDatatablesは言語を切り替えます

分類Dev

codeigniterエラーで言語を切り替える

分類Dev

Codeigniterで言語を切り替えた後、同じページにリダイレクトします

分類Dev

.htaccessで言語を切り替える

分類Dev

PHP:手動で言語を切り替える方法は?

分類Dev

R言語:数値のケースを切り替えます

分類Dev

入力言語を切り替えると、MicrosoftWordがフォントを切り替えます

分類Dev

Drupal 7で言語を切り替えると、ヘッダーサイズが変わります

分類Dev

Windowsキーを使用して入力言語を切り替えます

分類Dev

1つのボタンを使用して言語を切り替えます

分類Dev

i18nextプラグインで言語を切り替える方法は?

分類Dev

LibreOfficeでコレクター言語をすばやく切り替える方法は?

分類Dev

右から左に記述する言語で、左右のcss値を切り替える方法はありますか?

分類Dev

プログラムでOSにJavaの言語入力を切り替えるように強制する方法はありますか?

分類Dev

jinjaテンプレートで言語を切り替える

分類Dev

VBAでキーボード言語を切り替える

分類Dev

agularjs1.4.9で言語を切り替える

分類Dev

言語切り替えホットキーからめったに使用されない言語を削除するにはどうすればよいですか?

分類Dev

インストール後にWindowsServerのインストール言語を完全に切り替えることはできますか?

分類Dev

「言語キーの切り替え」の変更は13.10では機能しなくなりました

分類Dev

「言語キーの切り替え」の変更は13.10では機能しなくなりました

分類Dev

すべての言語で文字列を並べ替える方法はありますか?

分類Dev

Nuxt.jsとVue-i18nを使用して、同じページにリダイレクトしますが、言語のURLを切り替えます

分類Dev

Ubuntu16.04で英語と中国語の文字を切り替えます

分類Dev

Operaでデフォルト言語を切り替えることができません

分類Dev

Ubuntu13.10でCapsLockを使用して入力言語を切り替える方法は?

分類Dev

Ubuntu13.10でCapsLockを使用して入力言語を切り替える方法は?

分類Dev

Springのローカリゼーションは言語を切り替えません

Related 関連記事

  1. 1

    Angular 8で言語を切り替える方法はありますか?

  2. 2

    CDNDatatablesは言語を切り替えます

  3. 3

    codeigniterエラーで言語を切り替える

  4. 4

    Codeigniterで言語を切り替えた後、同じページにリダイレクトします

  5. 5

    .htaccessで言語を切り替える

  6. 6

    PHP:手動で言語を切り替える方法は?

  7. 7

    R言語:数値のケースを切り替えます

  8. 8

    入力言語を切り替えると、MicrosoftWordがフォントを切り替えます

  9. 9

    Drupal 7で言語を切り替えると、ヘッダーサイズが変わります

  10. 10

    Windowsキーを使用して入力言語を切り替えます

  11. 11

    1つのボタンを使用して言語を切り替えます

  12. 12

    i18nextプラグインで言語を切り替える方法は?

  13. 13

    LibreOfficeでコレクター言語をすばやく切り替える方法は?

  14. 14

    右から左に記述する言語で、左右のcss値を切り替える方法はありますか?

  15. 15

    プログラムでOSにJavaの言語入力を切り替えるように強制する方法はありますか?

  16. 16

    jinjaテンプレートで言語を切り替える

  17. 17

    VBAでキーボード言語を切り替える

  18. 18

    agularjs1.4.9で言語を切り替える

  19. 19

    言語切り替えホットキーからめったに使用されない言語を削除するにはどうすればよいですか?

  20. 20

    インストール後にWindowsServerのインストール言語を完全に切り替えることはできますか?

  21. 21

    「言語キーの切り替え」の変更は13.10では機能しなくなりました

  22. 22

    「言語キーの切り替え」の変更は13.10では機能しなくなりました

  23. 23

    すべての言語で文字列を並べ替える方法はありますか?

  24. 24

    Nuxt.jsとVue-i18nを使用して、同じページにリダイレクトしますが、言語のURLを切り替えます

  25. 25

    Ubuntu16.04で英語と中国語の文字を切り替えます

  26. 26

    Operaでデフォルト言語を切り替えることができません

  27. 27

    Ubuntu13.10でCapsLockを使用して入力言語を切り替える方法は?

  28. 28

    Ubuntu13.10でCapsLockを使用して入力言語を切り替える方法は?

  29. 29

    Springのローカリゼーションは言語を切り替えません

ホットタグ

アーカイブ