À compléter avant l'envoi
[adresse du site][public, par exemple touristes étrangers][nom de marque, noms de produits, noms de lieux][turc ou anglais]["tr-TR", "en"][propriété Search Console]
Mon site [adresse du site] sur mon serveur Opus Growth n'existe pour l'instant qu'en turc. Je veux que tu ajoutes une version anglaise et que tu configures les deux langues pour que les moteurs de recherche et les assistants IA les associent correctement. Public de la version anglaise : [public, par exemple touristes étrangers]. Noms qui ne sont jamais traduits : [nom de marque, noms de produits, noms de lieux]. La langue que voit par défaut un visiteur venu d'ailleurs (x-default) : [turc ou anglais].
1. Cartographie l'existant. Lis site_seo_guide, liste les pages avec site_list_files et note la version de restauration avec site_versions. Propose une adresse anglaise pour chaque page turque et montre le tableau de correspondance : le turc reste à la racine (/, /hizmetler/), l'anglais va sous /en/ (/en/, /en/services/). Écris les adresses en mots anglais, en minuscules, sous forme de répertoires se terminant par une barre oblique. Ne modifie pas les adresses turques existantes ; si l'une d'elles doit changer, redirige-la en 301 avec site_redirects. Attends mon approbation.
2. Traduction. Rédige chaque page en anglais de façon à ce qu'elle se lise naturellement pour le public, en traduisant le sens plutôt que phrase par phrase. Garde exactement les mêmes données telles que numéros de téléphone, adresses, prix et horaires, et n'ajoute aucune nouvelle affirmation. Titres de 50 à 60 caractères, descriptions de 140 à 160, uniques dans chaque langue. Les deux langues ont le même nombre de sections. Chaque page anglaise a `<html lang="en">` et répond directement à la question dans son premier paragraphe.
3. Configuration. Ajoute un bloc `locales.en` à assets/site.config.js : prefix "/en/", hreflang "en", ogLocale "en_US", la description anglaise de l'entreprise, le menu anglais, l'appel à l'action, la note de pied de page et les textes d'interface (aller au contenu, menu, pages, contact). Dans un bloc `i18n`, indique la langue de la racine, la langue x-default, les paires d'adresses turques et anglaises, les mots jamais traduits (keepWords) et un glossaire de termes.
4. Écris un script i18n-stamp.mjs et place-le à la racine du site. Ses missions :
1. Imprimer sur chaque page, entre `<!-- i18n:start -->` et `<!-- i18n:end -->`, des balises absolues `<link rel="alternate" hreflang="tr-TR">`, `hreflang="en"` et `hreflang="x-default"`.
2. Dans le bloc imprimé par seo-stamp.mjs, définir og:locale sur en_US sur les pages anglaises, ajouter l'autre langue comme og:locale:alternate dans les deux langues, définir l'inLanguage du nœud WebSite sur ["tr-TR", "en"] et remplacer la description du nœud de l'entreprise par la description anglaise sur les pages anglaises.
3. Produire sitemap-tr.xml et sitemap-en.xml avec des alternates xhtml:link pour chaque adresse et la vraie date de modification du fichier comme lastmod, et transformer sitemap.xml en sitemapindex pointant vers les deux.
4. Vérifier la traduction et quitter avec un code non nul en cas d'erreur : une page sans pendant, un html lang qui ne correspond pas au dossier, un numéro de téléphone ou un long numéro différent dans les deux langues ; en avertissements, un nombre différent de h2, h3, images ou éléments de FAQ dans les deux langues, des mots à caractères turcs dans le texte anglais hors keepWords, et des termes du glossaire non utilisés.
Le nœud WebPage propre à chaque page porte la langue de cette page comme inLanguage. seo-check.mjs n'exempte que la page d'accueil racine de l'exigence de BreadcrumbList, donc ajoute un BreadcrumbList à un seul élément à la page d'accueil /en/.
5. Sélecteur de langue. Le script chrome-stamp.mjs, qui imprime le menu et le pied de page en HTML statique, donne aux pages sous /en/ le menu et les textes d'interface de locales.en, et construit le sélecteur de langue à partir des balises hreflang de la page, de sorte que chaque page renvoie vers SON PROPRE équivalent dans l'autre langue, et non vers la page d'accueil. Chaque lien de langue porte les attributs hreflang et lang et une zone de toucher d'au moins 44 pixels. Ne choisis pas la langue par une redirection fondée sur la langue du navigateur.
6. llms.txt. Écris le /llms.txt turc à la racine et la version anglaise à /en/llms.txt ; chacun donne un résumé court et exact du site, la liste des pages dans sa propre langue et les coordonnées, et renvoie vers l'autre. robots.txt reste ouvert aux robots d'IA et ne pointe que vers l'index sitemap.xml.
7. Ordre d'exécution après chaque modification : `node seo-stamp.mjs`, `node i18n-stamp.mjs`, `node chrome-stamp.mjs`, la compilation Tailwind, puis `node seo-check.mjs`, `node design-check.mjs`, `npx --yes html-validate "**/*.html"`. seo-stamp réécrit son propre bloc à chaque exécution, donc i18n-stamp doit TOUJOURS s'exécuter après lui. Si le site tourne encore sur le CDN Tailwind Play et des polices tierces, passe d'abord à du CSS compilé et à des polices auto-hébergées.
8. Mesure. core_web_vitals sur mobile et ordinateur pour chaque page dans les deux langues ; seo_audit pour les deux versions de la page d'accueil. Ouvre les pages d'accueil turque et anglaise avec site_preview en 360, 390, 768 et 1440 pixels de large ; les titres anglais sont souvent plus longs, donc cherche attentivement les débordements. Critères : performance mobile d'au moins 95 et les trois autres scores à 100 ; zéro erreur de seo-check, i18n-stamp et html-validate.
9. Après la publication. Confirme les balises hreflang et le sélecteur de langue sur la page d'accueil /en/ avec site_read_url. Si ma propriété Search Console est [propriété Search Console], soumets sitemap.xml avec gsc_submit_sitemap et vérifie la page d'accueil /en/ avec gsc_url_inspect.
Sortie : le tableau de correspondance des adresses turques et anglaises, un tableau des scores par page et par langue, le résultat des vérifications d'i18n-stamp, les avertissements de traduction restants et la liste des phrases que je devrais relire.
Exemple de résultat
Un exemple du résultat de ce prompt. Sa structure provient de la sortie réelle des outils ; les chiffres et les noms sont fictifs.
Exemple de résultat (sur un site de démonstration fictif ; l'entreprise est fictive, les scores ont bien été mesurés sur cette démo)
Un site de maison d'hôtes fictive, Liman Taş Ev, a été configuré avec le turc à la racine et l'anglais sous /en/, l'anglais étant défini comme x-default.
| Turc | Anglais |
|---|
| / | /en/ |
| /odalar/ | /en/rooms/ |
| /konum/ | /en/location/ |
| /iletisim/ | /en/contact/ |
| Page | Mobile | Desktop | LCP mobile |
|---|
| / | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 2.0 s |
| /odalar/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.9 s |
| /konum/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /iletisim/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /en/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 2.0 s |
| /en/rooms/ | 99 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.9 s |
| /en/location/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
| /en/contact/ | 100 / 100 / 100 / 100 | 100 / 100 / 100 / 100 | 1.5 s |
Résultat de i18n-stamp : 8 pages, 2 langues, un index sitemap.xml avec sitemap-tr.xml et sitemap-en.xml, 0 erreur, 0 avertissement. Lors de la première exécution, trois pages en anglais ont déclenché un avertissement de caractères turcs pour « Ayvalık », « Türkiye » et « Balıkesir » ; ces mots ont été ajoutés à keepWords, car les noms de lieux conservent leur orthographe turque en anglais également.
Contrôles : seo-check 0 erreur et 0 avertissement, html-validate 0 erreur, design-check 0 erreur et 1 avertissement (pas d'animation, un choix de style), aucun débordement de 360 à 1440 pixels. À relire de votre côté : la formulation anglaise des conditions d'annulation, car il s'agit d'un texte contraignant.