PHP中使用gettext来支持多语言的方法_PHP
我们今天用一个简单的实例说明一下在PHP中的getText的用法(getText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的), 从而实现PHP的i18n.
现在, 我们假设要显示一个返回主页的link:
复制代码 代码如下:
//home.php:
$str = 'home';
print {$str}
HTML;
下面开启我们多语言的开发之旅:
创建pot文件,pot是Portable Object Template的首字母缩写,与po对应的是mo,mo是Machine Object的首字母缩写。前者意指原始的字符串文件,一般用于给翻译人员去修改的,后者则是与机器相关的,一般是供程序读取。可以手工创建pot文件,也可以通过xgettext从代码中抽取字符串来产生。这里是用xgettext来产生的:
xgettext -a home.php -o home.pot
运行该命令后,我们发现,在当前目录下,产生了一个名home.pot的文件,打开该文件,可以看到:
复制代码 代码如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME
"Language-Team: LANGUAGE
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: home.php:2
msgid "home"
msgstr "
根据pot产生不同语言的po文件,这里我们先产生一个简体中文的po文件:
export LANG=zh_CN.gb2312
msginit -l zh_CN.gb2312 -i home.pot
运行该命令后,我们发现,在当前目录下,产生了一个名zh_CN.po的文件,打开该文件,可以看到:
复制代码 代码如下:
# Chinese translations for PACKAGE package
# PACKAGE 软件包的简体中文翻译.
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: 2009-07-23 21:00+0800\n"
"Last-Translator: FULL NAME
"Language-Team: Chinese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.php:2
msgid "home"
msgstr "
翻译zh_CN.po里对应的字符串为中文:
复制代码 代码如下:
# Chinese translations for PACKAGE package
# PACKAGE 软件包的简体中文翻译.
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: 2009-07-23 21:00+0800\n"
"Last-Translator:
"Language-Team: Chinese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.php:2
msgid "home"
msgstr "主页
根据po文件生成mo文件。
msgfmt zh_CN.po -o zh_CN.mo
运行该命令后,我们发现,在当前目录下,产生了一个名zh_CN.mo的文件。它是二进制的,不能用文本编辑器打开。
安装mo文件到特定目录中:
cp -f zh_CN.mo .local/LC_MESSAGES/home.mo
修改程序。
复制代码 代码如下:
setlocale(LC_ALL, 'zh_CN');
// Specify location of translation tables
bindtextdomain("home", ".");
// Choose domain
textdomain("home");
// Translation is looking for in ./locale/zh_CN/LC_MESSAGES/home.mo now
$str = gettext('home'); //也可以使用_('home')
print {$str}
HTML;
运行这个脚本, 看看, 是不是输出正确的中文了呢?
添加其它语言也很容易,不需要修改程序,只需要像对待中文一样,生成一个mo文件,并安装到系统中对应的目录即可。切换不同的语言仅仅是修改当前的locale就行了。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









vue と Element-plus を使って多言語・国際対応を実現する方法 はじめに: 今日のグローバル化時代において、異なる言語や文化のユーザーのニーズに対応するために、多言語・国際対応は必須の機能となっています。多くのフロントエンド プロジェクトに適用されます。この記事では、プロジェクトがさまざまな言語環境のニーズに柔軟に対応できるように、vue と Element-plus を使用して多言語および国際的なサポートを実現する方法を紹介します。 1.Element-plusをインストールするElement-plusはvue公式です

CakePHP は、開発者が高品質の Web アプリケーションを迅速に構築できるようにする人気の PHP 開発フレームワークです。グローバリゼーションの進展に伴い、複数の言語をサポートする必要があるアプリケーションがますます増えており、CakePHP も対応するサポートを提供しています。この記事では、CakePHP が複数の言語をどのように扱うかを紹介します。 1. 多言語サポート 多言語サポートは CakePHP の重要な機能です。バージョン 2.0 以降、CakePHP は gettext ファイル形式をサポートします。

インターネットの普及に伴い、多言語をサポートする必要がある Web サイトが増えています。これは、Web サイトの閲覧者がさまざまな地域や文化的背景を持っている可能性があり、Web サイトが 1 つの言語でしか利用できない場合、訪問者の数と体験が制限される可能性があるためです。この記事では、PHPで多言語Webサイトを実装する方法を紹介します。 1. 言語ファイルの作成と設計 言語ファイルは、すべてのテキスト文字列とそれに対応する翻訳を保存するファイルであり、特定の形式で作成する必要があります。言語ファイルを作成するときは、次の点を考慮する必要があります。 1. 名前付けと保存場所 ファイル名は次のようにする必要があります。

国際化の継続的な発展に伴い、多言語切り替え機能をサポートする必要がある Web サイトやアプリケーションがますます増えています。人気のあるフロントエンド フレームワークとして、Vue は多言語切り替えの実現に役立つ i18n と呼ばれるプラグインを提供します。この記事では、i18n を使用して Vue で多言語切り替えを実装するための一般的なテクニックを紹介します。ステップ 1: i18n プラグインをインストールする まず、npm または Yarn を使用して i18n プラグインをインストールする必要があります。コマンドラインに次のコマンドを入力します: npminst

Flask-Babel を使用して多言語サポートを実現する方法 はじめに: インターネットの継続的な発展に伴い、多言語サポートはほとんどの Web サイトやアプリケーションに必要な機能になりました。 Flask-Babel は、Babel ライブラリに基づいて多言語サポートを提供する、便利で使いやすい Flask 拡張機能です。この記事では、Flask-Babel を使用して多言語サポートを実現する方法を紹介し、コード例を添付します。 1. Flask-Babel をインストールする 開始する前に、まず Flask-Bab をインストールする必要があります。

グローバリゼーションの深化に伴い、多言語をサポートする必要がある Web サイトやアプリケーションがますます増えています。 Web 開発で広く使用されているプログラミング言語である PHP は、多言語フレームワークの開発をサポートする必要もあります。この記事では、PHP を使用して多言語フレームワークを開発する方法を紹介します。 1. 多言語フレームワークとは まず、多言語フレームワークとは何なのかを理解しましょう。多言語フレームワークとは、その名のとおり、複数の言語をサポートできるフレームワークです。国際化およびローカリゼーションの設計では、多言語フレームワークが不可欠です。さまざまなサポートが可能です

Layui を使用して多言語切り替えをサポートする Web サイトを開発する方法 グローバリゼーションの発展に伴い、さまざまなユーザーのニーズを満たすために、ますます多くの Web サイトが多言語切り替えをサポートする必要があります。 Layui は非常に人気のあるフロントエンド フレームワークで、美しい Web サイトを迅速に開発するのに役立つ一連の使いやすいコンポーネントとツールを提供します。この記事では、Layui を使用して多言語切り替えをサポートする Web サイトを開発する方法と、具体的なコード例を紹介します。まず、Layui 関連ファイルを Web ページに導入する必要があります。できる

PHP と Typecho を使用して多言語サポートの Web サイトを構築する方法 はじめに: グローバリゼーションの発展に伴い、多言語サポートの Web サイトを構築することが、企業や個人によって徐々に追求される目標になってきました。人気のプログラミング言語である PHP を、優れた PHP オープンソース ブログ プログラムである Typecho と組み合わせることで、多言語 Web サイトを簡単に構築できます。この記事では、PHP と Typecho を使用して多言語をサポートする Web サイトを構築する方法を紹介し、関連するコード例を示します。 1. まず Typecho をインストールして設定します
