>本文深入研究用於使用PHP中的GetText庫的高級技術,重點介紹了後備地區,語言環境切換和覆蓋消息域。
密鑰概念:
msgids
通過指示getText使用其他域,可以輕鬆切換位置。 這通常是在應用程序的啟動或隨附的文件中處理的。 dgettext()
>。 gettext()
>。
textdomain()
dgettext()
PHP本地化優勢:bindtextdomain()
下圖說明了示例目錄結構:
msgid
和編譯
):>
>法語(
.po
.mo
>西班牙語(
fr_FR
<code>#Test token 1 msgid "Hello World!" msgstr "Bonjour tout le monde!" #Test token 2 msgid "Testing Translation..." msgstr "Test de traduction..."</code>):
es_ES
<code>#Test token 1 msgid "Hello World!" msgstr "¡Hola mundo!" #Test token 2 msgid "Testing Translation..." msgstr "Prueba de traducción..."</code>切換語言位置:
ar_EG
<code>#Test token 1 msgid "Hello World!" msgstr "!أهلا بالعالم" #Test token 2 msgid "Testing Translation..." msgstr "...اختبار الترجمة"</code>>文件使用獲取參數或會話管理語言環境選擇:
中的示例用法:
locale.php
<?php session_start(); $language = isset($_GET["lang"]) ? $_GET["lang"] : (isset($_SESSION["lang"]) ? $_SESSION["lang"] : "en_US"); $_SESSION["Language"] = $language; $folder = "Locale"; $domain = "messages"; $encoding = "UTF-8"; putenv("LANG=" . $language); setlocale(LC_ALL, $language); bindtextdomain($domain, $folder); bind_textdomain_codeset($domain, $encoding); textdomain($domain); ?>將輸出法語翻譯。
test-locale.php
<?php require_once "locale.php"; echo _("Hello World!"), "<br></br>"; echo _("Testing Translation..."); ?>
>
test-locale.php?lang=fr_FR
>使用
> 綁定該域的綁定
indgettext()
:bindtextdomain()
locale.php
<?php // ... (locale.php code) ... bindtextdomain("errors", "Locale"); bind_textdomain_codeset("errors", "UTF-8"); // ... (rest of locale.php code) ... ?>
摘要和常見問題: >本節總結了關鍵的學習,並為有關PHP本地化的常見問題提供了答案,涵蓋了諸如最佳實踐,處理複數,左右語言和管理翻譯等主題。 FAQ部分是廣泛的,並提供了有關PHP本地化各個方面的深入信息。 原始的常見問題解答部分已保留。 test-locale.php
以上是phpmaster |本地化PHP應用程序第3部分:2011年11月-SitePoint的詳細內容。更多資訊請關注PHP中文網其他相關文章!