<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            如何使用gettext來支持PHP的多語言

            時間:2025-02-28 00:36:52 php語言 我要投稿
            • 相關推薦

            如何使用gettext來支持PHP的多語言

              我們今天用一個簡單的實例說明一下在PHP中的getText的用法(getText是一系列的工具和庫函數,幫助程序員和翻譯人員開發多語言軟件的), 從而實現PHP的i18n.以下僅供參考!

              以下是代碼片段:

              //home.php:

              $str = ’home’;

              print <<<HTML

              {$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 "

              "Report-Msgid-Bugs-To: "

              "POT-Creation-Date: 2009-07-23 20:56+0800 "

              "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE "

              "Last-Translator: FULL NAME "

              "Language-Team: LANGUAGE "

              "MIME-Version: 1.0 "

              "Content-Type: text/plain; charset=CHARSET "

              "Content-Transfer-Encoding: 8bit "

              #: home.php:2

              msgid "home"

              msgstr ""

              根據pot產生不同語言的po文件,這里我們先產生一個簡體中文的po文件:

              以下是代碼片段:

              export.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 "

              "Report-Msgid-Bugs-To: "

              "POT-Creation-Date: 2009-07-23 20:56+0800 "

              "PO-Revision-Date: 2009-07-23 21:00+0800 "

              "Last-Translator: FULL NAME "

              "Language-Team: Chinese "

              "MIME-Version: 1.0 "

              "Content-Type: text/plain; charset=GB2312 "

              "Content-Transfer-Encoding: 8bit "

              #: 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 "

              "Report-Msgid-Bugs-To: "

              "POT-Creation-Date: 2009-07-23 20:56+0800 "

              "PO-Revision-Date: 2009-07-23 21:00+0800 "

              "Last-Translator: "

              "Language-Team: Chinese "

              "MIME-Version: 1.0 "

              "Content-Type: text/plain; charset=GB2312 "

              "Content-Transfer-Encoding: 8bit "

              #: 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 <<<HTML

              {$str}

              HTML;

            【如何使用gettext來支持PHP的多語言】相關文章:

            如何使用PHP框架01-21

            教你如何使用php的session07-13

            如何使用php中session04-01

            如何使用php操作redis隊列實例04-16

            如何使用PHP計算時間差07-20

            PHP如何使用curl實現數據抓取02-05

            如何使用PHP開發高效的web系統03-18

            如何使用JSP來發送郵件07-04

            如何正確區分PHP isset()與empty()的使用06-12

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看