Maison > développement back-end > tutoriel php > phpmaster | Localisation des applications PHP Partie 3: Nov 2011 - SitePoint

phpmaster | Localisation des applications PHP Partie 3: Nov 2011 - SitePoint

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-03-02 08:35:10
original
874 Les gens l'ont consulté

Cet article plonge dans des techniques avancées pour utiliser la bibliothèque GetText en PHP, en se concentrant sur les lieux de secours, la commutation des paramètres régionaux et les domaines de messages remplacés.

Concepts clés:

  • Locale par défaut: Établissez la langue par défaut de votre application au début du développement. L'utilisation des chaînes des paramètres par défaut comme msgids dans d'autres domaines rationalise la traduction et améliore les performances. Évitez de se traduire la langue par défaut.
  • Commutation des paramètres régionaux: Changer facilement des locaux en demandant à GetText d'utiliser un domaine différent. Ceci est généralement géré au début de l'application ou dans un fichier inclus.
  • Overriseur du domaine: Utilisez dgettext() pour basculer entre plusieurs domaines de traduction. N'oubliez pas que gettext() n'utilise qu'un seul domaine par défaut, défini via textdomain(), tandis que dgettext() nécessite que les domaines soient pré-liés à l'aide de bindtextdomain().
  • Avantages de localisation PHP: La localisation PHP est vitale pour la portée mondiale, l'amélioration de l'expérience utilisateur et l'accessibilité du marché.

Structure du répertoire et lieux de secours:

Une structure de répertoire optimale évite la traduction inutile des paramètres par défaut (par exemple, en_us). Au lieu d'utiliser des identifiants comme "Hello_world", utilisez directement la chaîne de langage par défaut réelle comme msgid. Cette approche minimise les frais généraux de traitement.

L'image ci-dessous illustre un exemple de structure de répertoire:

phpmaster | Localizing PHP Applications Part 3: Nov 2011 - Sitepoint

Exemples de fichiers de traduction (.po et compilé .mo):

français (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>
Copier après la connexion

es_ES arabe (

):
<code>#Test token 1
msgid "Hello World!"
msgstr "¡Hola mundo!"

#Test token 2
msgid "Testing Translation..."
msgstr "Prueba de traducción..."</code>
Copier après la connexion

ar_EG

Commutation des locaux:
<code>#Test token 1
msgid "Hello World!"
msgstr "!أهلا بالعالم"

#Test token 2
msgid "Testing Translation..."
msgstr "...اختبار الترجمة"</code>
Copier après la connexion

Le fichier gère la sélection des paramètres locaux à l'aide de paramètres ou de sessions:

locale.php Une utilisation de l'échantillon dans

:
<?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);
?>
Copier après la connexion

test-locale.php Accéder à

sortira la traduction française.
<?php
require_once "locale.php";

echo _("Hello World!"), "<br></br>";
echo _("Testing Translation...");
?>
Copier après la connexion

test-locale.php?lang=fr_FR Overridant le domaine actuel:

Utiliser pour accéder aux traductions à partir d'un domaine différent (par exemple, "erreurs"). Surtout, n'oubliez pas de lier ce domaine en utilisant

dans

: dgettext() bindtextdomain() locale.php dans

:
<?php
// ... (locale.php code) ...
bindtextdomain("errors", "Locale");
bind_textdomain_codeset("errors", "UTF-8");
// ... (rest of locale.php code) ...
?>
Copier après la connexion

test-locale.php Cela traduira correctement "Erreur d'obtention de contenu" et "Erreur de sauvegarde des données" si des traductions existent dans le domaine "Erreurs" pour le paramètre régional sélectionné.

<?php
// ... (include locale.php) ...
echo "<br></br>";
echo dgettext("errors", "Error getting content"), "<br></br>";
echo dgettext("errors", "Error saving data");
?>
Copier après la connexion

Résumé et FAQ:

Cette section résume les apprentissages clés et fournit des réponses aux questions fréquemment posées sur la localisation du PHP, couvrant des sujets tels que les meilleures pratiques, la manipulation des pluriels, les langues de droite à gauche et la gestion des traductions. La section FAQ est étendue et fournit des informations détaillées sur divers aspects de la localisation de PHP. La section FAQ d'origine a été conservée dans son intégralité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal