国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Comment installer GetText sur mon hébergement partagé?
Pourquoi ma traduction de GetText ne fonctionne-t-elle pas?
Comment déboguer la traduction GetText?
Puis-je utiliser GetText dans WordPress?
Comment mettre à jour ma traduction GetText?
Pourquoi est-ce que je re?ois l'erreur "package php-getText ne peut être trouvé"?
Comment utiliser GetText dans PHP?
Puis-je utiliser GetText sur Ubuntu?
Comment créer des fichiers .po et .mo?
Quelle est la différence entre les fichiers.po et .mo?
Maison développement back-end tutoriel php Gérer les traductions GetText sur l'hébergement partagé

Gérer les traductions GetText sur l'hébergement partagé

Feb 22, 2025 am 08:51 AM

Managing Gettext Translations on Shared Hosting

Points de base

  • GetText est une méthode populaire pour la gestion de la traduction des sites Web PHP, mais il présente un inconvénient significatif: Apache cache les traductions, ce qui signifie qu'à moins que le moteur ne soit redémarré, les mises à jour des fichiers traduites ne seront pas visibles. Cela est particulièrement problématique sur l'hébergement partagé, car les privilèges administrateurs ne sont souvent pas disponibles.
  • Audere Shared GetText est une bibliothèque PHP qui permet aux développeurs de contourner le cache de traductions d'Apache chargé via la fonction getText (). La bibliothèque utilise une astuce simple pour créer une copie en miroir du fichier de traduction, incitant Apache à la considérer comme une nouvelle traduction non pertinente, évitant ainsi les problèmes de mise en cache.
  • Le GetText partagé AudeRo peut être installé via des archives compositeurs, GIT ou téléchargeant à partir du référentiel. Après l'installation, les développeurs peuvent utiliser le composer automatique du compositeur pour charger les classes dynamiquement et créer des instances Sharedgette.
  • Cette bibliothèque nécessite PHP 5.3 ou plus car elle utilise un espace de noms et est publiée sous la licence CC BY-NC 4.0 et est disponible gratuitement. Ses deux méthodes principales sont UpdateTranslation (), qui crée une copie en miroir du fichier de traduction, et DeleteoldTranslations (), qui supprime toutes les copies dans le dossier de traduction sélectionné à l'exception de la dernière copie miroir.

de nombreuses entreprises finiront par tourner leurs marchés cibles à l'échelle mondiale. Cet objectif entra?nera la nécessité de traduire un site Web d'une entreprise en une ou plusieurs langues. Même si vous ne travaillez pas pour une grande entreprise, vous devrez peut-être lancer de nouveaux services dans votre langue maternelle (en supposant que vous n'êtes pas un orateur anglais natif) pour cibler le marché local et le marché mondial en anglais. En tant que développeurs, il n'est pas de notre responsabilité de traduire du texte, mais de préparer le site Web à prendre en charge la traduction. Dans PHP, la méthode la plus populaire est via GetText. Il s'agit d'une grande approche car elle permet la séparation de la traduction de l'application, permettant ainsi la parallélisation du processus. Le problème est qu'Apache cache les traductions, donc à moins que vous ne puissiez redémarrer le moteur, toute mise à jour du fichier de traduction n'appara?tra pas. Ce fait est particulièrement ennuyeux si vous travaillez sur un hébergement partagé et que vous n'avez pas de privilèges d'administrateur. Dans cet article, je décrirai ce problème en détail et expliquerai la solution que j'ai trouvée pour éviter ce problème.

Remarque: Si vous n'êtes pas familier avec les concepts de i18n, de traduction et de getText, je vous recommande fortement de lire cette série avant d'explorer cet article plus loin. Il vous donnera des informations plus détaillées que le bref aper?u que vous trouverez ici et vous aidera à mieux comprendre ces sujets.

Paramètres environnementaux

Il existe de nombreuses fa?ons d'utiliser la traduction dans PHP. La fa?on la plus simple dont je me souvienne est d'avoir un tableau associatif contenant toutes les cha?nes traduites, puis d'utiliser les touches pour récupérer la cha?ne correcte. Comme vous pouvez le deviner, cette solution n'est pas évolutive et vous devez éviter d'utiliser cette solution à moins que vous ne travailliez sur un très, très petit projet (peut-être pas plus de 5 lignes de code). Pour des traductions sérieuses, nous pouvons utiliser GetText. Cette approche nous permet d'avoir des fichiers différents pour chaque langue cible, ce qui aide à maintenir la séparation entre la logique métier, la couche de présentation et la traduction (que nous pouvons considérer comme un module complémentaire à la couche de présentation). Avec GetText, nous pouvons paralléliser le processus car lorsque nous traitons certaines fonctionnalités du site Web, les traducteurs peuvent toujours utiliser des logiciels tels que PoEdit pour traduire.

Les traductions doivent être stockées dans des chemins avec des structures fixes. Tout d'abord, nous aurons un dossier racine nommé selon vos préférences (par exemple, "langues"). Dans ce document, nous devons créer un dossier pour chaque langue cible, dont le nom doit se conformer à la norme ISO 3166. Par conséquent, les noms valides pour les traductions italiennes peuvent être "it_it" (italien italien), "it_ch" (Suisse italienne), "en_us" (anglais américain), etc. Dans un dossier avec code de langue, nous devons avoir un dossier appelé "LC_MESSAGES", où nous stockons le fichier de traduction.

Poedit analyse le code source du site Web et extrait la cha?ne à traduire en fonction d'un ou plusieurs modèles que nous avons définis dans le logiciel. Il enregistre la cha?ne dans un seul fichier avec l'extension .po (objet portable), que le logiciel (ou équivalent) compile dans un fichier .mo binaire. Ce dernier est le format qui nous intéresse avec la fonction getText () de PHP. Le fichier .mo est un fichier que nous devons placer dans le répertoire "LC_MESSAGES" que nous avons créé plus t?t.

L'exemple de code à l'aide de getText () est le suivant (le code a été commenté afin que vous puissiez rapidement comprendre sa fonction):

<?php
// 包含翻譯文件的根文件夾的名稱
$translationsPath = 'languages';
// 要翻譯到的語言
$language = 'it_IT';
// 翻譯文件的名稱(在gettext中稱為域)
$domain = 'audero';

// 指示此會(huì)話將使用哪種語言
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);

// 設(shè)置當(dāng)前域的路徑
bindtextdomain($domain, $translationsPath);
// 指定字符編碼
bind_textdomain_codeset($domain, 'UTF-8');

// 選擇域
textdomain($domain);

// 調(diào)用gettext()函數(shù)(它有一個(gè)名為_()的別名)
echo gettext("HELLO_WORLD"); // 等效于echo _("HELLO_WORLD");
?>

Après avoir enregistré le code précédent dans la page et le charger dans le navigateur, si getText () peut trouver le fichier de traduction, vous verrez la traduction que vous avez faite à l'écran.

Jusqu'à présent, tout s'est bien passé. La mauvaise nouvelle est qu'une fois la traduction chargée, Apache l'a cachée. Par conséquent, à moins que nous ne puissions redémarrer le moteur, toutes les mises à jour du fichier de traduction ne seront pas affichées. Ceci est particulièrement ennuyeux si nous travaillons sur un hébergement partagé et que nous n'avons pas de privilèges d'administrateur. Comment résoudre ce problème? AUDERO PARTAGE GetText vient à secourir!

Qu'est-ce que AUDERO GetText partagé

AUDERO PARTAGE GetText est une bibliothèque PHP (en fait juste une classe, mais laissez-moi en rêver) qui vous permet de contourner le problème des traductions chargées via la fonction getText () en cours de mise en cache par Apache. Cette bibliothèque adopte une approche simple et efficace, vous utiliserez donc toujours les dernières traductions. AudeRo Shared GetText nécessite PHP 5.3 ou plus car il utilise des espaces de noms et il y a une structure décrite dans la section précédente. Il a deux méthodes principales: UpdateTranslation () et DeleteoldTranslations (). Le premier est le c?ur de la bibliothèque et est également le moyen de mettre en ?uvre cette technique. Mais quelle est cette technique? Jetons un coup d'?il à son code pour en savoir plus. Pour le bien comprendre, il convient de souligner que le constructeur de la classe accepte le chemin pour stocker la traduction, la langue à traduire et le nom (domaine) du fichier traduit.

<?php
// 包含翻譯文件的根文件夾的名稱
$translationsPath = 'languages';
// 要翻譯到的語言
$language = 'it_IT';
// 翻譯文件的名稱(在gettext中稱為域)
$domain = 'audero';

// 指示此會(huì)話將使用哪種語言
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);

// 設(shè)置當(dāng)前域的路徑
bindtextdomain($domain, $translationsPath);
// 指定字符編碼
bind_textdomain_codeset($domain, 'UTF-8');

// 選擇域
textdomain($domain);

// 調(diào)用gettext()函數(shù)(它有一個(gè)名為_()的別名)
echo gettext("HELLO_WORLD"); // 等效于echo _("HELLO_WORLD");
?>

La première chose que cette méthode doit faire est de tester si le fichier de traduction binaire d'origine (fichier .mo) existe. S'il n'existe pas, la méthode lance une exception. Il calcule ensuite le chemin complet du fichier traduit en fonction des paramètres fournis au constructeur et du dernier horodatage modifié du fichier. Après cela, il crée une nouvelle cha?ne qui concatenne le domaine d'origine avec le horodatage précédemment calculé. Une fois terminé, voici l'astuce, qui crée une copie en miroir du fichier de traduction. Si un fichier avec un tel nom existe déjà, la classe est assez intelligente pour éviter cette copie. Enfin, il renvoie le nouveau nom qui sera utilisé dans BindTextDomain (), bind_textDomain_codeset () et TextDomain (). En faisant, Apache verra que la traduction est comme si cela n'avait rien à voir avec la traduction originale, évitant ainsi les problèmes de mise en cache. Comme je l'ai dit, simple et efficace!

"Great Aurelio!", Vous pensiez "mais alors mes dossiers gonflent avec ces copies." C'est pourquoi j'ai créé DeleteoldTranslations (). Il supprime toutes les copies miroir du dossier de traduction sélectionné sauf le dernier.

Maintenant que vous avez appris ce qu'est le GetText partagé AudeRo et ce qu'il peut faire pour vous, voyons comment l'obtenir.

Installation de GetText partagée audorde

Vous pouvez obtenir "AudeRo Shared GetText" via Composer, en ajoutant les lignes suivantes à votre composer.json:

/**
 * 創(chuàng)建翻譯文件的鏡像副本
 *
 * @return string 創(chuàng)建的翻譯文件的名稱(在gettext中稱為域)
 *
 * @throws \Exception 如果找不到翻譯文件
 */
public function updateTranslation()
{
    if (!self::translationExists()) {
        throw new \Exception('在給定路徑中找不到翻譯文件。');
    }
    $originalTranslationPath = $this->getTranslationPath();
    $lastAccess = filemtime($originalTranslationPath);
    $newTranslationPath = str_replace(self::FILE_EXTENSION, $lastAccess . self::FILE_EXTENSION, $originalTranslationPath);

    if(!file_exists($newTranslationPath)) {
            copy($originalTranslationPath, $newTranslationPath);
    }

    return $this->domain . $lastAccess;
}

Ensuite, exécutez la commande d'installation pour analyser et télécharger les dépendances:

"require": {
    "audero/audero-shared-gettext": "1.0.*"
}

Composer installera la bibliothèque dans le répertoire du fournisseur / Aude de votre projet.

Si vous ne souhaitez pas utiliser Composer (vous le devriez vraiment), vous pouvez obtenir le GetText AUDERORAD GetText via GIT en exécutant la commande suivante:

php composer.phar install

La dernière option dont vous disposez est d'accéder au référentiel et de le télécharger en tant qu'archive.

Comment utiliser le GetText partagé AudeRo

Supposons que vous obteniez AUDERO SHARKING GETTexT en utilisant Composer, sur lequel vous pouvez compter sur son Autoloader pour charger la classe dynamiquement. Ensuite, vous devez créer une instance SharedGetTeX et appeler la méthode dont vous avez besoin. Vous pouvez utiliser l'une des méthodes mentionnées ci-dessus comme indiqué dans l'exemple suivant.

git clone https://github.com/AurelioDeRosa/Audero-Shared-Gettext.git

Conclusion

Cet article vous présente audoiro Shared GetText, une bibliothèque simple (eh bien ... classe) qui vous permet de contourner le problème des traductions chargées via la fonction getText () mise en cache par Apache. AudeRo Shared GetText a une compatibilité approfondie car il vous oblige à avoir au moins PHP 5.3 (il est libéré depuis un certain temps) car il utilise des espaces de noms. N'hésitez pas à utiliser les démos et les fichiers contenus dans le référentiel et si vous trouvez un problème, soumettez une demande et une question de traction. J'ai publié le AUDERO Shared GetText sous la licence CC By-NC 4.0, il est donc gratuit.

Avez-vous rencontré ce problème? Comment l'avez-vous résolu? Ne soyez pas timide et postez votre solution dans les commentaires!

(Ce qui suit est la partie FAQ, qui a été pseudo-originale en fonction du texte d'origine et le texte d'origine est gardé à l'esprit)

FAQ (FAQ) sur la gestion de la traduction GetText sur l'hébergement partagé

Comment installer GetText sur mon hébergement partagé?

L'installation de GetText sur un hébergement partagé peut être un peu délicat, car vous n'avez peut-être pas un accès root. Cependant, vous pouvez toujours l'installer via CPanel ou Plesk. Dans CPanel, vous pouvez trouver l'option pour activer GetText sous la section SELECT PHP Version. Dans Plesk, vous pouvez l'activer dans la section "PHP Settings". Si vous ne trouvez pas ces options, vous devrez peut-être contacter votre fournisseur d'hébergement pour obtenir de l'aide.

Pourquoi ma traduction de GetText ne fonctionne-t-elle pas?

Votre traduction GetText ne fonctionne pas pour plusieurs raisons. Un problème courant est que le fichier .mo n'est pas compilé correctement ou que le chemin de fichier est incorrect. Assurez-vous que le fichier .mo se trouve dans le répertoire correct et que le chemin du fichier dans le code est correct. Un autre problème pourrait être que le lieu que vous utilisez n'est pas pris en charge par le serveur. Vous pouvez vérifier cela avec la commande LOCALE -A.

Comment déboguer la traduction GetText?

La traduction GetText de débogage peut être effectuée en vérifiant les erreurs dans les fichiers .po et .mo. Vous pouvez ouvrir ces fichiers à l'aide d'outils comme PoEdit et vérifier les erreurs de syntaxe. De plus, vous pouvez utiliser la fonction GetText dans votre code pour vérifier si la traduction est récupérée correctement. Si la fonction renvoie la cha?ne d'origine, la traduction ne peut être trouvée.

Puis-je utiliser GetText dans WordPress?

Oui, vous pouvez utiliser GetText dans WordPress. WordPress utilise GetText comme cadre de localisation. Vous pouvez utiliser les fonctions __ () et _e () dans WordPress pour obtenir des traductions. Ces fonctions utilisent GetText en arrière-plan.

Comment mettre à jour ma traduction GetText?

Vous pouvez mettre à jour votre traduction GetText en mettant à jour le fichier .po, puis en le compilant dans un fichier .mo. Un fichier .po est un fichier texte brut que vous pouvez ouvrir avec n'importe quel éditeur de texte. Une fois les modifications effectuées, vous pouvez utiliser un outil comme PoEdit pour compiler le fichier .po dans un fichier .mo.

Pourquoi est-ce que je re?ois l'erreur "package php-getText ne peut être trouvé"?

Cette erreur se produit généralement lorsque le package n'est pas disponible dans le référentiel que votre serveur utilise. Vous pouvez essayer de mettre à jour votre liste de packages à l'aide de la commande sudo apt-get upd. Si l'erreur persiste, vous devrez peut-être ajouter un autre référentiel ou installer le package manuellement.

Comment utiliser GetText dans PHP?

Vous pouvez utiliser GetText en PHP en utilisant la fonction GetText. Cette fonction prend une cha?ne comme argument et renvoie la cha?ne traduite. Avant de pouvoir utiliser cette fonction, vous devez définir la fonction locale à l'aide de la fonction SETLOCALE et spécifier le chemin d'accès au fichier .mo à l'aide de la fonction BindTextDomain.

Puis-je utiliser GetText sur Ubuntu?

Oui, vous pouvez utiliser GetText sur Ubuntu. Vous pouvez l'installer à l'aide de la commande sudo install getText sudo installation. Après l'installation, vous pouvez utiliser la commande getText dans le terminal pour gérer les fichiers .po et .mo.

Comment créer des fichiers .po et .mo?

Vous pouvez créer des fichiers .po et .mo à l'aide d'outils comme Poedit. Cet outil vous permet de créer et de modifier des fichiers .po et de les compiler automatiquement en fichiers .mo. Vous pouvez également créer des fichiers .po manuellement à l'aide d'un éditeur de texte, mais vous avez besoin d'outils comme PoEdit ou MSGFMT pour les compiler dans des fichiers .mo.

Quelle est la différence entre les fichiers.po et .mo?

.po Le fichier est un fichier texte brut contenant la cha?ne d'origine et sa traduction. Ils peuvent être ouverts et modifiés à l'aide de n'importe quel éditeur de texte. D'un autre c?té, le fichier .mo est un fichier binaire généré à partir du fichier .po. Ils sont utilisés par GetText pour obtenir des traductions au moment de l'exécution.

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Jun 20, 2025 am 01:03 AM

ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Jun 19, 2025 am 01:05 AM

Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Jun 19, 2025 am 01:07 AM

En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Jun 19, 2025 pm 05:13 PM

Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Jun 19, 2025 am 01:07 AM

Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Jun 23, 2025 am 12:56 AM

TostayCurrentwithPhpDevelopments andBestPractices, suiventyewnewsources likephp.netandphpweekly, engagewithcommunitiesonforumums et conférences, keeptoolingupdated etgradualadoptnewfeatures, etreadorontruttetoopensourceprojects.

Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebDevelopmentDuetoitSeaseOflearning, Samoussentegration withhtml, widespreadhostingsupport, andalargecosystemysteclustingframeworkslikeLaravelandcmsplateformeslikewordpress.itexcelSinlingFormSubMissions, ManagetingSeSeSessions, interactif, interactif

Comment définir le fuseau horaire PHP? Comment définir le fuseau horaire PHP? Jun 25, 2025 am 01:00 AM

Tosetherighttimezoneinphp, usedate_default_timezone_set () Fonctionnellestartofyourscriptwithavalididentifiersuchas'america / new_york'.1.usedate_default_timezone_set () beforeanydate / timefunctions.20

See all articles