[đ ] Pourquoi le Codex Goal du blog multilingue a dĂ©passĂ© 13 heures
âš RĂ©sumĂ© de GPT-5.5 ă
RĂ©cit de lâexĂ©cution du Codex Goal qui a fait passer hyuk.blog dâune version anglaise /en/ Ă des rĂšgles dâexploitation pour huit locales, avec traduction, changement de langue, vues partagĂ©es, rĂšgle p et coĂ»t dâusage.
Au début, je pensais seulement devoir choisir /en/
La premiÚre question était simple.
en.hyuk.blog serait-il mieux ?
/en/ serait-il mieux ?
AprĂšs avoir pesĂ© le SEO, lâexploitation sur GitHub Pages, le lien entre original et traductions, le partage des vues et la structure de langues Ă Ă©tendre ensuite, la conclusion a Ă©tĂ© /en/.
Je ne voulais pas exploiter la version anglaise comme un produit complĂštement sĂ©parĂ©. Ce blog part dâoriginaux corĂ©ens auxquels on ajoute des traductions. Dans ce cas, sĂ©parer les URL de langue dans le mĂȘme domaine et les relier avec hreflang est plus simple.
Mais cela ne sâest pas arrĂȘtĂ© lĂ .
DĂšs que jâai choisi /en/, lâaccueil, About, les catĂ©gories, la recherche, le sitemap, le language switcher, les vues, la qualitĂ© de traduction et mĂȘme la maniĂšre de pousser les futurs articles ont commencĂ© Ă bouger ensemble.
Ce nâĂ©tait pas un fichier traduit, mais une frontiĂšre de collection
Les articles anglais ne pouvaient pas ĂȘtre mĂ©langĂ©s dans _posts.
Dans Jekyll, _posts entre dans site.posts. Si les articles anglais y sont mĂ©langĂ©s, lâaccueil corĂ©en, le feed, la pagination et les related posts les consomment aussi en silence. Cela ressemble Ă un article de plus, mais lâindex entier du blog est contaminĂ©.
Les articles traduits ont donc été séparés dans des collections par locale.
_posts/... -> /daily-review/.../
_en_posts/... -> /en/daily-review/.../
_ja_posts/... -> /ja/daily-review/.../
_zh_hans_posts/... -> /zh-Hans/daily-review/.../
La premiÚre leçon était claire.
Un blog multilingue ne consiste pas à ajouter des fichiers traduits. Il consiste à définir des frontiÚres de collection.
Archive du Goal de cette exécution
Le travail a commencĂ© le 7 juin 2026 et sâest poursuivi jusquâau 8 juin 2026.
Au dĂ©but, cela ressemblait seulement Ă lâajout dâune version anglaise. Le Goal a vite grandi jusquâĂ ceci.
Transformer hyuk.blog en blog multilingue exploitable, avec ko comme locale source et en, ja, zh-Hans, es, pt-BR, fr et id comme locales étendues.
Ne pas s'arrĂȘter Ă la traduction. Aligner UI, routing, SEO, sitemap, search, language switcher, vues partagĂ©es et today dedupe.
Choisir les langues en tenant compte de Tadak Bible, de la valeur portfolio, des populations chrétiennes et du potentiel d'expansion.
Ne pas utiliser d'API de traduction payante.
Utiliser le standard des workers/subagents GPT les plus récents pour la traduction.
Ne pas faire confiance aux traductions locales de basse qualité.
Ne pas traduire avant confirmation de la source coréenne.
Lorsqu'un post est modifié et que p est lancé, synchroniser aussi les traductions des active locales.
Lancer le build Ă la fin, pas aprĂšs chaque batch de traduction.
Le Goal lui-mĂȘme nâĂ©tait pas faux.
Le problĂšme est quâil ne sâest pas rĂ©duit en rĂšgles exĂ©cutables. Les rapports dâĂ©tat, les points de revue et la portĂ©e de traduction se sont collĂ©s dessus jusquâĂ le rendre trop grand.
La qualité de traduction a frappé fort
La traduction a Ă©tĂ© le premier endroit oĂč la confiance sâest cassĂ©e.
Au dĂ©but, je pensais pouvoir traduire beaucoup dâarticles en bloc. Mais un Ă©chantillon contenait des instructions de prompt mĂ©langĂ©es telles quelles au contenu traduit.
Return only the translated content. Do not add notes or fences.
Ce nâĂ©tait pas quelques phrases maladroites. Cela voulait dire que le chemin de gĂ©nĂ©ration nâĂ©tait pas fiable.
Jâai donc revu, par Ă©chantillons, sâil fallait sauver les mauvaises traductions par relecture ou les rĂ©gĂ©nĂ©rer. La conclusion a Ă©tĂ© de rĂ©gĂ©nĂ©rer. Les sorties locales dâoutils comme Ollama ou Argos nâĂ©taient pas assez fiables pour des articles publics. La vitesse comptait moins que le modĂšle utilisĂ© et le contrĂŽle franchi.
La rĂšgle restante est nette.
En traduction, le chemin de confiance passe avant le taux d'achĂšvement.
Ne pas traduire avant confirmation de la source.
Ne pas rafistoler une traduction publique avec de la MT locale de basse qualité.
Le changement de langue et les vues ont aussi bougé
Les pages anglaises sâouvraient par URL directe.
Mais lâutilisateur ne trouvait pas le passage corĂ©en/anglais.
Au dĂ©but, jâavais mis English / Korean dans le menu ordinaire. CâĂ©tait dans le HTML, mais lâutilisateur ne le voyait pas. Sur mobile, câĂ©tait pire. La rĂšgle est donc devenue claire : le changement de langue nâest pas un item de menu, mais un global control.
Les vues non plus nâĂ©taient pas aussi simples que cela.
Un article anglais nâest pas un autre article. Câest la traduction du mĂȘme article. /daily-review/x/ et /en/daily-review/x/ ne doivent pas utiliser des clĂ©s de vues diffĂ©rentes. Le data-page-view-path du HTML, le JS cĂŽtĂ© client et le Cloudflare Worker comptent donc les vues selon le canonical path aprĂšs suppression du locale prefix.
LĂ aussi, le travail a grossi. Corriger seulement le code du Worker ne suffisait pas. Il fallait dĂ©ployer avec le Wrangler CLI, et le dry-run a montrĂ© que le binding D1 DB pouvait manquer. Jâai donc fixĂ© lâentrypoint du Worker et le binding D1 dans wrangler.toml, vĂ©rifiĂ© que le binding Ă©tait prĂ©sent, puis seulement dĂ©ployĂ©.
Le point important était today dedupe.
Lire le mĂȘme article en corĂ©en puis passer Ă lâanglais ne doit pas incrĂ©menter today deux fois. Si la canonical page est la mĂȘme, la dedupe key doit lâĂȘtre aussi.
Pourquoi lâachĂšvement du Goal Codex a dĂ©passĂ© 13 heures
Cela ne veut pas dire que le pur temps de développement a été de 13 heures à lui seul.
Le problĂšme Ă©tait que le Goal lancĂ© dans Codex a mis plus de 13 heures Ă atteindre lâĂ©tat terminĂ©.
Ce nâĂ©tait pas seulement parce quâil y avait beaucoup Ă faire. Certains jugements ont bougĂ©.
Jâai essayĂ© de tenir la traduction complĂšte et la revue en mĂȘme temps. Le standard oscillait entre âtout gĂ©nĂ©rer puis relireâ et ârelire au fur et Ă mesureâ. Jâai voulu croire la qualitĂ© avant de confirmer le modĂšle du worker, et quand de mauvaises traductions sont apparues, il a fallu les refaire.
Traduire avant de confirmer la source était aussi un problÚme.
Si lâarticle corĂ©en public continue de changer, les traductions faites dâabord se dĂ©calent forcĂ©ment. Cela a menĂ© Ă réécrire la source, jeter les traductions existantes et traduire encore.
Le jugement sur le build a aussi bougé.
Si un build tourne aprĂšs chaque batch de traduction, le travail ne finit jamais. Le build est une vĂ©rification importante, mais pas un rituel Ă rĂ©pĂ©ter Ă chaque fois. Il faut dâabord verrouiller la source et la portĂ©e de traduction, puis vĂ©rifier ce qui est nĂ©cessaire vers la fin.
Le sens de p est aussi devenu clair tardivement.
Désormais, quand un changement de post est impliqué, p ne signifie pas simplement commit et push. Cela signifie synchroniser les traductions des active locales pour la source confirmée, puis pousser.
Lâusage Ă©tait aussi un coĂ»t
Ce travail de traduction ne se réglait pas seulement en évitant les API payantes.
Le quota hebdomadaire Pro x20, que je venais de payer la veille, est passé de 100% à 50% en deux jours.
Cette consommation Ă©tait le coĂ»t des traductions gĂ©nĂ©rĂ©es en parallĂšle sans verrouiller les critĂšres, des traductions ratĂ©es Ă refaire et des traductions Ă refaire aprĂšs changement de source. Ne pas utiliser dâAPI de traduction payante ne rend pas le coĂ»t nul. Usage du modĂšle, temps, concentration et fatigue de revue sont aussi des coĂ»ts.
Il faut donc verrouiller ceci dâabord.
confirmation de la source
portée de traduction
méthode de revue
moment du build
critĂšre de push
Si ces cinq points restent flous, le travail multilingue regrossit trĂšs vite.
Les rĂšgles dâexploitation restantes
Les rÚgles laissées par ce travail comptent plus que la fonctionnalité.
Les URL de langue restent dans le mĂȘme domaine.
Les articles traduits vivent dans des locale collections.
En traduction, le chemin de confiance passe avant le taux d'achĂšvement.
Ne pas traduire avant confirmation de la source.
Le changement de langue doit ĂȘtre un global control toujours visible.
Les vues et today dedupe utilisent la canonical page.
Quand p est lancé pour des posts, inclure la synchronisation des active locales.
Lancer le build à la fin pour la portée nécessaire, pas aprÚs chaque batch.
Les Goals doivent se réduire en rÚgles exécutables, pas grossir en longs rapports d'état.
Ajouter la version anglaise était important.
Mais le rĂ©sultat le plus important a Ă©tĂ© un standard pour garder le blog exploitable pendant quâil devient multilingue.
Je lâai appris cher.
Mais câĂ©tait un standard nĂ©cessaire.
Laisser un commentaire