首頁 後端開發 php教程 PHP中使用gettext来支持多语言的方法_PHP

PHP中使用gettext来支持多语言的方法_PHP

Jun 01, 2016 pm 12:16 PM
gettext 多語言

我们今天用一个简单的实例说明一下在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 , YEAR.
#
#, 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 \n"
"Language-Team: LANGUAGE \n"
"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.
# , 2009.
#
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 \n"
"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.
# , 2009.
#
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: \n"
"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就行了。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何利用vue和Element-plus實現多語言和國際化支持 如何利用vue和Element-plus實現多語言和國際化支持 Jul 17, 2023 pm 04:03 PM

如何利用vue和Element-plus實現多語言和國際化支援導語:在當今全球化的時代背景下,為因應不同語言和文化的使用者需求,多語言和國際化支援成為了許多前端專案必備的功能。本文將介紹如何利用vue和Element-plus實現多語言和國際化支持,以便於專案能夠靈活適應不同語言環境下的需求。一、安裝Element-plusElement-plus是vue官方

CakePHP如何處理多語言? CakePHP如何處理多語言? Jun 06, 2023 am 08:03 AM

CakePHP是一個流行的PHP開發框架,它可以幫助開發者快速建立高品質的網路應用程式。隨著全球化的發展,越來越多的應用需要支援多語言,CakePHP也提供了相應的支援。本文將介紹CakePHP如何處理多語言。一、多語言支援多語言支援是CakePHP的一項重要功能。從版本2.0開始,CakePHP支援gettext檔案格式,該

如何在PHP實現多語言網站 如何在PHP實現多語言網站 May 22, 2023 am 11:31 AM

隨著網路的日益普及,越來越多的網站需要支援多語言。這是因為網站的受眾群體可能來自不同的地區和文化背景,如果只提供單一語言的網站,可能會限制訪客的數量和體驗。本文將介紹如何在PHP中實作多語言網站。一、語言文件的創建和設計語言文件是儲存所有文字字串及其對應翻譯的文件,需要以特定的格式建立。在建立語言檔案時,需要考慮以下幾個方面:1.命名和儲存位置檔案名稱應

Vue 中使用 i18n 實作多語言切換的技巧 Vue 中使用 i18n 實作多語言切換的技巧 Jun 25, 2023 am 09:33 AM

隨著國際化的不斷發展,越來越多的網站和應用程式需要支援多語言切換功能。 Vue作為一款流行的前端框架,提供了一個名為i18n的插件,可以幫助我們實現多語言切換。本文將介紹Vue中使用i18n實作多語言切換的常見技巧。第一步:安裝i18n插件首先,我們需要使用npm或yarn安裝i18n插件。在命令列中輸入以下命令:npminst

如何使用Flask-Babel實現多語言支持 如何使用Flask-Babel實現多語言支持 Aug 02, 2023 am 08:55 AM

如何使用Flask-Babel實現多語言支援引言:隨著網路的不斷發展,多語言支援成為了大多數網站和應用程式的必要功能。 Flask-Babel是一個方便易用的Flask擴展,它提供了基於Babel庫的多語言支援。本文將介紹如何使用Flask-Babel來實現多語言支持,並附上程式碼範例。一、安裝Flask-Babel在開始前,我們需要先安裝Flask-Bab

如何使用PHP進行多語言框架開發? 如何使用PHP進行多語言框架開發? May 13, 2023 am 08:09 AM

隨著全球化的深入發展,越來越多的網站和應用程式需要支援多種語言。而PHP作為廣泛應用於Web開發的程式語言,也需要支援多語言框架的開發。本文將介紹如何使用PHP進行多語言框架開發。一、什麼是多語言框架首先,我們先來了解什麼是多語言框架。多語言框架,顧名思義,就是一種可以支援多種語言的框架。在國際化和在地化設計中,多語言框架是必不可少的。它可以支援多種

如何使用Layui開發一個支援多語言切換的網站 如何使用Layui開發一個支援多語言切換的網站 Oct 25, 2023 am 10:55 AM

如何使用Layui開發一個支援多語言切換的網站隨著全球化的發展,越來越多的網站需要支援多語言切換以滿足不同使用者的需求。 Layui是一款非常受歡迎的前端框架,它提供了一系列易用的元件和工具,可以幫助我們快速開發出具有美觀效果的網站。本文將介紹如何使用Layui開發一個支援多語言切換的網站,並提供具體的程式碼範例。首先,我們需要在網頁中引入Layui的相關文件。可以

PHP開發中如何處理多語言和國際化問題 PHP開發中如何處理多語言和國際化問題 Oct 09, 2023 pm 04:24 PM

PHP開發中如何處理多語言和國際化問題,需要具體程式碼範例隨著互聯網的發展,人們對於多語言和國際化的需求越來越高。在PHP開發中,如何有效地處理多語言和國際化問題成為了開發者需要解決的重要任務。字元編碼的處理在PHP開發中,我們首先要確保正確處理字元編碼。在多語言環境中,使用UTF-8編碼是最常見的選擇。可以在PHP檔案的頭部添加如下程式碼:header('C

See all articles