ホームページ >バックエンド開発 >PHPチュートリアル >phpmaster | PHPアプリケーションのローカライズパート3:2011年11月 - SitePoint

phpmaster | PHPアプリケーションのローカライズパート3:2011年11月 - SitePoint

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-03-02 08:35:10880ブラウズ

この記事は、PHPでgetTextライブラリを使用するための高度な手法を掘り下げ、フォールバックロケール、ロケールスイッチング、およびオーバーライドメッセージドメインに焦点を当てています。

重要な概念:

    デフォルトのロケール:
  • 開発の早い段階でアプリケーションのデフォルト言語を確立します。 他のドメインでは、デフォルトのロケールの文字列をとして使用すると、翻訳が合理化され、パフォーマンスが向上します。 デフォルトの言語をそれ自体に翻訳しないでください。 msgids
  • ロケールスイッチング:
  • 別のドメインを使用するようにgetTextに指示することで、簡単にロケールを切り替えます。 これは通常、アプリケーションの開始時または含まれるファイル内で処理されます。 ドメインオーバーライド:
  • を使用して、複数の翻訳ドメインを切り替えます。 は、dgettext()gettext()PHPローカリゼーションの利点:textdomain()PHPのローカリゼーションは、グローバルリーチにとって不可欠であり、ユーザーエクスペリエンスと市場アクセシビリティを向上させます。 dgettext() bindtextdomain()
  • ディレクトリ構造とフォールバックロケール:
  • 最適なディレクトリ構造は、デフォルトのロケール(EN_USなど)の不必要な変換を回避します。 「hello_world」などの識別子を使用する代わりに、実際のデフォルト言語文字列を
  • として直接使用します。 このアプローチは、オーバーヘッドの処理を最小限に抑えます
以下の画像は、サンプルディレクトリ構造を示しています:

の翻訳ファイルの例(> compiled

):msgid

フランス語(

):

phpmaster | Localizing PHP Applications Part 3: Nov 2011 - Sitepointスペイン語(

):

.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>
ファイルは、Getパラメーターまたはセッションを使用してロケール選択を管理します:

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を使用してこのドメインをバインドすることを忘れないでください

in

これは、選択したロケールの「エラー」ドメインに変換が存在する場合、「コンテンツの取得エラー」と「エラー保存データの保存」を正しく変換します。 dgettext()bindtextdomain()概要とFAQ:locale.php

このセクションでは、主要な学習を要約し、PHPのローカリゼーションに関するよくある質問への回答を提供し、ベストプラクティス、複数形の取り扱い、左から左の言語、翻訳の管理などのトピックについて説明します。 FAQセクションは広範であり、PHPローカリゼーションのさまざまな側面に関する詳細な情報を提供します。 元のFAQセクションは完全に保持されています。

以上がphpmaster | PHPアプリケーションのローカライズパート3:2011年11月 - SitePointの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。