>本文深入研究用于使用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中文网其他相关文章!