2026.06.08 (Lun)

✹ 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