Lisage esmalt käitusaja i18n-teek, teisendage seejärel stringid, mille Copilot on juba kirjutanud, ja takistage uute stringide lisandumist. Viimane samm läheb enamikul tiimidel valesti, sest hoidla juhiste fail ei jõua kõigi Copiloti koodi kirjutamise viisideni. Vestlus ja kodeerimisagent loevad seda. Reasisene automaattäide mitte. globalize.now on AI-põhine lokaliseerimistaristu, mis teisendab koodibaasi ühe korraga ning loob võtmed ja lokaalifailid, mida teie i18n-teek loeb.
Miks kirjutab Copilot pärast juhiste faili lisamist endiselt stringe koodi sisse?
Sest juhiste fail ei ole ühendatud kõige kiirema töövooga. VS Code'i dokumentatsioon ütleb selgelt, et kohandatud juhiseid ei arvestata reasiseste soovituste puhul, mida näete teksti sisestamise ajal. Just selles režiimis veedab enamik inimesi suurema osa oma tööpäevast.
Seega on teie kirjutatud reegel päriselt olemas ja kehtib siis, kui esitate Copilotile vestluses küsimuse või annate ülesande kodeerimisagendile. See ei kehti siis, kui kirjutate JSX-sildi ja vajutate hallina kuvatud lõpetuse aktsepteerimiseks Tab-klahvi. Mõlemad viisid toodavad commiti jõudvat koodi. Ainult üks neist on teie reeglit lugenud.
Millised Copiloti töövood teie juhiseid loevad?
Teie hoidlasse kirjutavad koodi kolm töövoogu ja need ei käitu ühtemoodi.
| Töövoog | Kas loeb juhiseid? | Kuhu väljund jõuab |
|---|---|---|
| Reasisene lõpetamine | Ei | Otse redigeeritavasse faili |
| Vestlus ja agendirežiim | Jah | Muudatused, mille vaatate redaktoris üle |
| Kodeerimisagent | Jah | Mustandina pull request, mille vaatate üle |
Kodeerimisagent on selle probleemi puhul kolmest kõige sobivam. Määrate talle issue, ta töötab taustal ja avab mustandina pull request'i, nii et väljund jõuab kohta, mida ülevaataja juba jälgib. Reasisesed lõpetused jõuavad koodi ilma igasuguse kontrollväravata.
Kuidas seadistada i18n Copiloti projektis?
Valige esmalt käitusaja teek, mida teie raamistik eelistab. Next.js App Routeri jaoks next-intl, mis tahes muu Reacti rakenduse jaoks react-i18next ning Lingui juhul, kui soovite kompileerimisaegset eraldamist ja PO-katalooge. Võrdlesime neid kolme artiklis next-intl vs react-i18next vs Lingui.
Copilot ei ole raamistikupõhine nii nagu Lovable või Bolt, mis tähendab, et tehnoloogiavirna valik on päriselt avatud ja teek tuleb teil endal valida. Avatud ei ole aga järjekord. Installige teek, teisendage juba olemasolevad stringid ja alles seejärel keskenduge ennetamisele. Ennetusreegel koodibaasis, kus 90% tekstist on endiselt hardcoded inglise keeles, ei anna teile midagi, mida mõõta.
Mida peaks sisaldama fail .github/copilot-instructions.md?
Selles asukohas olev hoidla juhiste fail tuvastatakse automaatselt ja rakendatakse tööruumis esitatud vestluspäringutele. GitHubi enda soovitus on hoida iga juhis lühikese ja iseseisvana, selgitada põhjendust ning jätta välja kõik, mida linter juba jõustab. Nendele soovitustele vastav i18n-jaotis on lühike:
## User-facing text
- User-facing text belongs in the message catalog, never in a component literal.
- Use the translation function from our i18n library for every visible string.
- Reason: a literal cannot be translated and does not show up as a missing key,
so it ships silently in one language.
- Add new English values to the source catalog only. Never hand-edit other locales.
- Not user-facing: test names, log lines, error codes, internal constants.
Viimane rida on olulisem, kui esmapilgul paistab. Liiga laialt rakenduvad reeglid jäetakse tähelepanuta ning reegel, mis käsib agendil logisõnumeid mähkida, õpetab talle, et kogu jaotis on müra. Kui teil pole veel üldse juhiste faili, saab VS Code selle teie koodibaasi põhjal vestluses init-käsuga koostada. See on parem lähtekoht kui tühi fail.
Kas teepõhine juhiste fail võiks paremini toimida?
Jah, ja see on Copiloti üks võimalus, mida mujal redaktori reeglifailidel ei ole. Failid, mille nimi lõpeb laiendiga .instructions.md ja mis asuvad kataloogis .github/instructions, sisaldavad frontmatter'is applyTo-glob'i ning laaditakse ainult siis, kui agent puudutab sobivat faili.
---
name: 'UI strings'
description: 'String handling rules for components'
applyTo: '**/*.{jsx,tsx}'
---
Every visible string in this file must come from the catalog.
Key format is feature.element.state, lowerCamelCase.
If you add a key here, add its English value to the source catalog in the same change.
Reegli piiramine komponendifailidele muudab selle usaldusväärseks. See rakendub seal, kus asub kasutajale nähtav tekst, ning jääb vaikseks teie API-marsruutides ja migratsiooniskriptides. Kui hoiate hoidla juurtes juba faili AGENTS.md või CLAUDE.md, loeb Copilot ka neid alati kehtivate juhistena, nii et mitut agenti kasutav tiim ei vaja iga tööriista jaoks eraldi faili.
Mis püüab kinni stringid, millest juhised mööda vaatavad?
CI-s rakendatav lintimisreegel, sest see on ainus kiht selles virnas, mis build'i ebaõnnestuma paneb. Juhised muudavad tõenäosust, ebaõnnestuv kontroll muudab tulemuse. Käsitlesime seda jõustamiskihti põhjalikult artiklis miks AI-agendid lisavad endiselt hardcoded string'e ning sama seadistus sobib muutmata kujul ka Copiloti hoidlasse.
Copiloti-spetsiifiline täiendus on pull request. Hoidla juhised kehtivad nii Copiloti koodiülevaatele kui ka vestlusele, seega kujundab sama fail, mis mõjutab genereerimist, ka kodeerimisagendi mustandi PR-i ülevaatekommentaare. Nii saate ühe kontrollvärava, millest reasisene automaattäide mööda ei pääse – see on lähim lahendus selle postituse alguses kirjeldatud lüngale.
Ükski neist meetmetest ei lahenda juba hoidlasse kogunenud võlga ega täida lokaalifaili. Ülevaates literaali tabamine annab teada, et string on puudu. Keegi peab selle endiselt võtmena määratlema, tõlkima ja hoolitsema selle eest, et teised lokaalid ei triiviks sünkroonist välja.
Kuhu sobitub globalize.now?
Kataloogi loova kihi juurde – see on osa, mida ei kata ei teie i18n-teek ega juhiste fail. Ühendate hoidla rakenduses ning see teisendab koodibaasi ühe korraga, asendades hardcoded string'id võtmetega ja genereerides lokaalifailid. Pärast seda ühekordset teisendust tõlgivad push-tööd uued kataloogiüksused, mille teie commit'id lisavad.
Väljund on JSON või PO, seega jõuavad kataloogid kujul, mida teie käitusaja teek juba loeb. Sama lähenemine katab ka teised agentidega kasutatavad redaktorid: Claude Code ja Cursor põrkuvad sama takistusega eri suunast ning Next.js-i koodibaasi jaoks on samm-sammuline juhend artiklis i18n-i lisamine AI abil loodud Next.js-i rakendusse. Arendajadokumentatsioonis käsitletakse teisendamist üksikasjalikumalt ning paketid on toodud hinnalehel.
Lühidalt
Kirjutage juhiste fail, piirake teepõhine reegel komponendifailidele ja lisage CI-sse lintimisreegel, et lõhe selle vahel, mida Copilotile öeldi, ja selle vahel, mida Copilot kirjutas, muutuks punaseks build'iks, mitte avaldatud ingliskeelseks stringiks. Seejärel teisendage mahajäänud osa ühe korraga, et reeglil oleks midagi järjepidevat kaitsta.
globalize.now muudab rakenduse koodis olevad tekstid tõlkeks valmis lokaale failideks ja hoiab neid ajakohasena, kui sa uusi versioone välja lasid.
Proovi globalize.now tasuta