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

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-03-02 08:35:10876parcourir

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>

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>

ar_EG

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

#Test token 2
msgid "Testing Translation..."
msgstr "...اختبار الترجمة"</code>

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);
?>

test-locale.php Accéder à

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

echo _("Hello World!"), "<br></br>";
echo _("Testing Translation...");
?>

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) ...
?>

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");
?>

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:
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
Article précédent:Envoi de courriels avec PHPArticle suivant:Envoi de courriels avec PHP