Une traduction pseudo remplace chaque chaîne par un faux texte reconnaissable. Dans une langue de gauche à droite, chaque lettre est accentuée et la chaîne s'allonge à l'intérieur de crochets : Enregistrer les modifications devient ⟦Šáṽé çĥáñĝéš··········⟧. Dans une langue de droite à gauche, chaque chaîne est inversée avec une surcharge de direction, afin que la page s'affichage de droite à gauche même avant l'existence de l'arabe ou de l'hébreu.
Sur une page affichée de cette manière, trois problèmes deviennent visibles :
- Texte brut n'est pas issu du catalogue : il est écrit dans le code ou généré à l'exécution.
- Texte tronqué ne prévoit pas d'espace pour les langues plus longues.
- Mise en page qui reste fixe sur une page de droite à gauche utilise gauche et droite au lieu de début et fin.
Livraison gratuite sur toute commande
Enregistrer les modifications⟦Éñŕéĝíšţŕéŕ ļéš ɱóðíƒíçáţíóñš··················⟧Les prix incluent la taxe.⟦Ļéš þŕíẋ íñçļúéñţ ļá ţáẋé.················⟧
Livraison gratuite sur toute commande
Enregistrer les modificationsEnregistrer les modificationsLes prix incluent la taxe.Les prix incluent la taxe.
- Texte non issu du catalogue/{locale}/ · p#promo · “Livraison gratuite sur toute commande” · runtime_text (de-DE, ar-SA)
- Texte tronqué lors de son agrandissement/{locale}/ · button#save · “⟦Éñŕéĝíšţŕéŕ ļéš ɱóðíƒíçáţíóñš··················⟧” · clipped_text (de-DE)
- Mise en page ne se reflétant pas correctement en écriture de droite à gauche/{locale}/ · p#note · “padding-left: 12px” · unmirrored_layout (ar-SA)
Ce que montrent les pages pseudo-localisées : la même page en allemand, avec toutes les chaînes de caractères accentuées et allongées, et en arabe, écrite de droite à gauche. La sonde marque le texte inséré dans le code, un bouton qui coupe son texte et une règle qui reste à gauche. Données illustratives.
Dans la vérification de la globalisation
Lorsque le fichier de configuration indique comment démarrer l'application, le Vérification de la globalisation rend ses pages à chaque modification qu'il vérifie. Il fonctionne sur une copie de la modification dans son propre bac à sable, afin que la traduction pseudo n'atteigne jamais votre dépôt ni les autres vérifications :
- Il écrit la traduction pseudo dans une version de langue de gauche à droite et une de langue de droite à gauche du projet.
- Il installe les dépendances et démarre l'application.
- Il ouvre chaque page dans les deux langues dans un navigateur réglé sur cette langue, et lit ce qui s'affiche à l'écran.
- Il arrête l'application et supprime la copie.
Ce qu'il trouve devient les résultats de la vérification :
| Code | Ce qu'il trouve |
|---|---|
runtime_text | Texte visible sans les marques pseudo |
clipped_text | Texte pseudo tronqué par sa boîte, avec overflow masqué ou un points de suspension |
unmirrored_layout | Sur une page de droite à gauche : une page qui n'est pas de droite à gauche, un texte aligné ou flottant à gauche ou à droite, ou un élément placé, margé ou rempli par gauche ou droite |
Le même texte trouvé dans les deux langues constitue un résultat. Les résultats apparaissent dans la tâche Problèmes détectés en indiquant la page, l'élément, le texte et les langues, comme /{locale}/ · p#promo · “Free shipping on every order” · runtime_text (de-DE, ar-SA).
Ils sont signalés et ne bloquent rien tant que vous ne le choisissez pas. Sous Contrôle qualité → Globalisation, Afficher les pages désactive l'étape, et Problèmes de page qui renvoient une modification pour correction choisit quels codes bloquent.
Une application qui n'installe pas ou ne démarre pas est signalée comme non rendue, avec sa sortie, jamais comme un rendu propre. Elle conserve la modification uniquement lorsque vous bloquez les problèmes de page.
Le configurer
Ajouter world.render à .coroid/i18n.json:
{
"world": {
"render": {
"start": "npm run dev",
"pages": ["/{locale}/", "/{locale}/pricing", "/{locale}/checkout"]
}
}
}| Champ | Signification |
|---|---|
start | Démarre l'application. Elle doit écouter sur le port défini dans $PORT; HOST est 127.0.0.1 |
pages | Jusqu'à dix chemins, depuis la racine de l'application. {locale} devient l'étiquette de la langue, donc /{locale}/pricing ouvre /de-DE/pricing; utiliser /?lang={locale} si la langue est un paramètre de requête |
directory | Le dossier de l'application dans le dépôt, lorsqu'il n'est pas la racine |
install | La commande qui installe les dépendances. Sans elle, Coroid exécute npm lorsqu'un package.json déclare l'une quelconque |
locales | Jusqu'à trois langues cibles à rendre. Sans elle, la première langue de gauche à droite et la première langue de droite à gauche cible |
readyTimeoutMs | Durée maximale pendant laquelle l'application peut répondre, 120 000 par défaut |
Le navigateur envoie également chaque langue comme langue préférée, donc une application qui sélectionne sa langue à partir du navigateur fonctionne sans {locale}.
Le champ nécessite CLI 1.16.0 ou ultérieur dans la configuration cli pin ; un moteur plus ancien rejette la configuration.
Ce qui est omis
La vérification lit uniquement ce qu'une personne voit. Elle ignore les éléments cachés, le code (code, pre, kbd, samp), les valeurs propres aux champs de formulaire et les éléments marqués
translate="no", aria-hidden="true", data-i18n-ignore ou avec la classe
notranslate. Les mots dans la liste de configuration world.allow , comme les noms de produits, ne sont jamais signalés comme texte brut.
Le texte provenant de vos propres données, comme les noms de produits ou le contenu utilisateur, n'est pas non plus traduit par le catalogue. Marquez son conteneur translate="no" ou
data-i18n-ignore, ce qui indique également aux outils de traduction du navigateur de le laisser tel quel.
Essayez-le vous-même
La traduction pseudo fait partie de l'outil en ligne de commande. Exécutez-le dans une copie temporaire, car il remplace les traductions de la langue :
coroid-i18n pseudo --locale de-DE # accented and longer
coroid-i18n pseudo --locale ar-SA # reversed, right to left
coroid-i18n pseudo --locale de-DE --style rtl # choose the style yourselfEnsuite, démarrez l'application et ouvrez ses pages dans cette langue. Les espaces réservés, les formes pluriels et le balisage restent intacts, donc l'application fonctionne normalement. Les pages Markdown et MDX restent telles quelles.