PHP は、動的な Web サイトや Web アプリケーションの構築に使用される非常に人気のあるサーバー側プログラミング言語です。通常、Web アプリケーションを開発する場合、さまざまなユーザーのニーズを満たすために複数の言語をサポートする必要があります。これが、多言語サポートのために gettext を使用する必要がある理由です。
gettext は、プログラムから文字列を抽出し、他の言語に翻訳できるライブラリです。開発者に、異なる言語をシームレスに切り替えるためのシンプルかつ強力な方法を提供します。この記事では、gettext を使用して多言語をサポートする方法を紹介します。
ステップ 1: gettext をインストールする
gettext を使用する前に、まず gettext をインストールする必要があります。次のコマンドでインストールできます:
sudo apt-get install gettext
インストール後、php.ini ファイルで gettext 拡張機能を有効にする必要があります。これを行うには、php.ini ファイルを編集し、次の行を追加します。
extension=php_gettext.dll
ステップ 2: 翻訳ファイルを生成する
gettext は、翻訳に .po および .mo ファイルを使用します。まず、翻訳する必要があるすべての文字列とそれに対応する元のテキストを含む .po ファイルを生成する必要があります。
POEdit または他の同様のツールを使用して .po ファイルを生成できます。 POEdit では、アプリケーション コードを開いて、そのコード内のすべての文字列を .pot テンプレート ファイルに追加し、その .pot ファイルを .po ファイルとして保存できます。
.po ファイルでは、各生の文字列が msgid と msgstr の間に含まれています。 msgstr 内のテキストを、目的の翻訳されたテキストに置き換えることができます。 .po ファイルを保存した後、msgfmt というコマンドを使用してそれを .mo ファイルにコンパイルし、PHP コードで効率的に使用できるようにします。
msgfmt -o lang/fr_FR/LC_MESSAGES/messages.mo lang/fr_FR/LC_MESSAGES/messages.po
このコマンドは、翻訳する必要があるすべての文字列を含むmessages.moという名前のファイルを生成します。
ステップ 3: 多言語サポートの実装
.mo ファイルを取得した後、多言語サポートのために PHP コードで gettext 関数を使用する必要があります。 gettext 関数の機能は、元の文字列を取得し、その翻訳されたバージョンを返すことです。
以下は、PHP で gettext 関数を使用して多言語サポートを実現する方法を示す簡単なサンプル コードです:
<?php // 设置系统的语言环境为fr_FR putenv("LC_ALL=fr_FR"); setlocale(LC_ALL, "fr_FR"); // 加载翻译文件 bindtextdomain("messages", "./lang"); bind_textdomain_codeset("messages", "UTF-8"); textdomain("messages"); // 从翻译文件中获取翻译后的字符串 echo gettext("Hello World!"); ?>
上記のコードでは、最初にシステムのロケールをフランス語に設定します。 (fr_FR)。次に、bindtextdomain 関数を使用して、前にコンパイルした .mo ファイルをロードします。この関数には 2 つのパラメータが必要です。最初のパラメータは、翻訳文字列に変換される文字列のコレクションを指定するドメイン名です。2 番目のパラメータは、.mo ファイルが配置されているディレクトリです。
次に、textdomain 関数を使用して、使用するドメインを指定します。上記のコードでは、メッセージ ドメインに設定しています。これは、PO ファイルで前に指定したドメインです。
最後に、gettext 関数を使用して、元の文字列の翻訳されたバージョンを取得します。上記のコードでは、Hello World! を生の文字列として gettext 関数に渡し、文字列の翻訳されたバージョンを見つけて返します。
結論
この記事では、gettext を使用して多言語をサポートする方法を紹介しました。 gettext は、PHP プログラミングで多言語サポートを実装するのに非常に便利です。元の文字列を記述して、それを翻訳された文字列に変換するだけです。これには追加の作業が必要ですが、ユーザーのエクスペリエンスが向上し、アプリケーションがより魅力的になる可能性があります。
以上が多言語サポートのためにphpでgettextを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。