ホームページ >データベース >mysql チュートリアル >データベースから CodeIgniter 言語ファイルを動的に生成するにはどうすればよいですか?

データベースから CodeIgniter 言語ファイルを動的に生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-27 13:24:301098ブラウズ

How do I dynamically generate CodeIgniter language files from a database?

データベース データを CodeIgniter 言語ファイルに渡す

CodeIgniter を使用して多言語 Web サイトを開発する場合、データベース コンテンツを言語ファイルに統合することが重要になります。これは、データベース テーブルを作成して翻訳情報を設定し、コントローラー関数を使用してデータベース データに基づいて言語ファイルを動的に生成することで実現できます。

1.データベース設計

次の列を持つ lang_token という名前のテーブルを作成します:

  • id (主キー)
  • category (翻訳のカテゴリ)
  • description (翻訳の簡単な説明)
  • lang (ISO 言語コード)
  • token (実際の翻訳)

翻訳をテーブルに追加しますデータ。

2. CodeIgniter 言語ファイルの構造

CodeIgniter の言語ファイルは、アプリケーション/言語ディレクトリ内のフォルダーに保存する必要があります。各言語フォルダーには、次の構造の PHP ファイルが含まれている必要があります:

<code class="php"><?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
*
* Created:  <timestamp> by <author>
*
* Description:  <Language Name> language file for <category>
*
*/

$lang = array(
    '<category>_noMail' => 'You must submit a valid email address',
    '<category>_noUser' => 'You must submit a username'
);</code>

場所:

  • は翻訳カテゴリの接頭辞です。例:エラー メッセージの場合は error。
  • 翻訳の説明です。例: noMail.
  • 値は実際の翻訳です。有効な電子メール アドレスを送信する必要があります。

3.言語ファイルを生成するコントローラー関数

データベースから翻訳データを取得し、オンザフライで言語ファイルを生成するコントローラー関数を作成します。この関数は次のことを行う必要があります。

  • 特定の言語での翻訳について lang_token テーブルをクエリします。
  • クエリ結果に基づいて PHP 言語ファイル文字列を構築します。
  • 言語ファイルをアプリケーションの言語ディレクトリにコピーします。
<code class="php">function updatelangfile($my_lang) {
    $this->db->where('lang',$my_lang);
    $query = $this->db->get('lang_token');

    $lang = array();
    $langstr = "<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\n\n\n";

    foreach ($query->result() as $row) {
        $langstr .= "$lang['{$row->category}_{$row->description}'] = \"{$row->token}\";\n";
    }

    write_file('./application/language/' . $my_lang . '/general_lang.php', $langstr);
}</code>

4.コントローラー関数の呼び出し

言語ファイルを動的に生成するには、データベースが変更されるたびに updatelangfile 関数を呼び出します。例:

<code class="php">function updateLanguages() {
    $this->updatelangfile('english');
}</code>

5.言語ファイルの使用

これで、アプリケーションは、言語クラスのloadメソッドを使用して、動的に生成された言語ファイルをロードして使用できるようになります。例:

<code class="php">$this->lang->load('general', 'english');</code>

次の手順に従います。データベースのコンテンツを CodeIgniter 言語ファイルにシームレスに統合し、Web サイトのローカライズを可能にします。

以上がデータベースから CodeIgniter 言語ファイルを動的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。