-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 5 Localization is
🌎 Tungumál: Íslenska — sjá öll 33 tungumálin
Markmið: skilja hvernig LockedIn CLI talar 33 tungumál — og æfa sig í að stýra aðstoðarmanni til að bæta við einu í viðbót. Staðfærsla er frábært verkefni fyrir aðstoðarmann: nógu vélrænt til að fela því, en með raunverulegum skorðum (prófunarhlið, reglur um uppsetningu og málfarsyfirferð) sem kenna þér að fara yfir.
← Fyrra: Kennsla 4 Fyrirmæli og yfirferð · Til baka á Heim
Keyrðu CLI-ið á spænsku, hindí, japönsku, einfölduðu kínversku eða hvaða meðfylgjandi tungumáli sem er og allt breytist — upphafsskjárinn, hjálpartaflan, úttak hverrar skipunar, spjalllotan, jafnvel Smáa letrið. Ekki bara brandararnir: allt sýnilega yfirborðið.
lockedin --lang is post
LOCKEDIN_LANG=hi lockedin
lockedin --lang zh auraTungumálið er greint sjálfkrafa við ræsingu og leyst í þessari forgangsröð:
-
--langflaggið (--lang is,--lang=fr,-l ja) - umhverfisbreytan
LOCKEDIN_LANG - locale-ið þitt (
LC_ALL/LC_MESSAGES/LANG, síðan locale stýrikerfisins eða keyrsluumhverfisins) - enska, sem varaleið
normalizeLang() notar venjulega aðalundirmerki locale-sins. Það þýðir að
de-DE velur de, en tlh verður ekki óvart að tl; raunverulegu samheitin
fil og tgl vísa viljandi í tagalog (tl), norsku kóðarnir nb og nn
vísa í no, gamli indónesíski kóðinn in vísar í id og gamli hebreski
kóðinn iw vísar í he. Tveir svæðisbundnir kóðar eru varðveittir óbreyttir í
stað þess að falla niður í aðalundirmerkið sitt: pt-BR/pt_BR velja
svæðisbundna kanóníska kóðann, en almenna pt helst afturábaksamhæfi
brasilíupúrtúgalski pakkinn (bæði eru brasilíupúrtúgalska og deila sömu
poolum/UI), og en-SG/en_SG halda Singlish (almenn en helst enska). Hefðbundin
kínverska í Hong Kong er sams konar undantekning: zh-HK, zh_HK.UTF-8 og
zh-Hant-HK velja zh-HK, en almenn zh og meginlandskóðar velja einfaldaða
kínversku (zh).
Skipt á flugi — /language spjaldið. CLI-ið gat alltaf ræst á öðru
tungumáli (--lang, LOCKEDIN_LANG); nú geturðu líka skipt um tungumál
í miðri lotu. Sláðu inn /language (samheiti /lang og /languages) til að
lista öll 33 tungumálin eftir kóða, hvert á sínu eigin ritkerfi; /language el
skiptir fyrir restina af lotunni. Atriðið sem skiptir máli er neyðarútgangurinn:
eftir skiptingu endurteiknar forritið sig á nýja tungumálinu og prentar svo,
á tungumálinu sem þú varst að yfirgefa, nákvæmu leiðina til baka —
/language en núna, lockedin --lang en næst — svo að það að lenda óvart í
日本語 eða ಕನ್ನಡ skilur þig aldrei eftir strandaða/n. (Ef þú skiptir tvisvar
færðu líka boðið tungumálið sem LOCKEDIN_LANG þitt nefnir.) --lang og
LOCKEDIN_LANG breytast ekki. Eins og /a11y er þetta einlæg nytjafall, ekki
hluti af ádeilunni.
Allur þýðanlegur texti býr í pökkum, einn fyrir hvert tungumál, hver með þessari lögun:
{ meta: { lang: 'is', name: 'Íslenska', dir: 'ltr' },
pools: { HOOKS: [ /* ~25 */ ], LESSONS: [ /* ... */ ], /* ... */ },
ui: { buzzwordDensity: 'Þéttleiki tískuorða: ', /* labels, headings */ } }-
poolseru efnisfylkin (brandararnir) sem þú hittir í Kennslu 2. -
uieru umgjörðarstrengirnir: merkingar, fyrirsagnir og lítil sniðmát.
Enska er viðmiðunarpakkinn inni í src/lockedin.js; hinar 32 pakkaskrárnar búa
í src/content/*.js: ar, bn, bo, de, el, en-SG, es, eu, fa,
fi, fr, he, hi, id, is, it, ja, kn, ms, nl, no, pl,
pt, pt-BR, ru, sv, tl, tr, uk, ur, zh og zh-HK (pt-BR
endurýtir pools/UI úr pt en er skráður sér). Hver og einn er skráður í
BUNDLES; SUPPORTED_LANGS er búið til úr þeim lyklum og renderHelp() prentar
þann kóðalista sem verður til. Enginn UI-pakki harðkóðar listann.
setLang('fr'); // bendir virka tungumálinu á franska pakkann
// L = virkir pools, U = virkt ui
pick(L.HOOKS) // franskur upphafsfrasi
U.buzzwordDensity // "Densité de jargon : "Þar sem hvert render-fall les úr L og U (aldrei úr harðkóðuðum streng)
breytir setLang ein og sér allri upplifuninni. Það er allt trikkið.
Hér er ófrávíkjanlega reglan sem gerir öruggt að bæta við tungumáli:
Hver pakki verður að birta nákvæmlega sömu
pools- ogui-lykla og enska.
Próf framfylgir þessu yfir alla 33 pakkana. Ef þú bætir nýjum UI-streng við á
ensku og gleymir að þýða hann á úkraínsku fer npm test í rautt og segir þér
hvaða lykil vantar. Þú getur ekki sent hálfþýtt tungumál út í hljóði.
Mismunandi tungumál reyna á uppsetninguna á mismunandi hátt:
-
Japanska, einfölduð kínverska og hefðbundin kínverska í Hong Kong nota
East Asian Wide / Fullwidth stafi.
vw()telur þá sem tvo dálka ogwrap()klippir löng strengjatákn án bila með hörðum brotum svo CJK-texti haldist inni í spjöldum og kössum. -
Hindí og kannada nota samsetningarmerki sem taka ekki eigið bil (
Mn/Me), eins og matra og virama.vw()telur þau sem núll dálka svo þau blási ekki mælda breidd út. -
box()vefur hverja meginmálslínu áður en hún er púðuð út, svo langur þýddur borði getur ekki lengur stungist í gegnum rammann. - Hver pakki stillir
sentenceEndoglistSep(til dæmis./。,,/、) svo setningar sem smíðar eru úr vélrænum pörtum hljómi eðlilega.
Þegar þú bætir við tungumáli verða spjaldahausstrengirnir (cardSubtitle,
cardMeta, cardFooter) samt að passa í ≤ 60 sýnilega dálka. Arabíska,
persneska, hebreska og úrdú stilla meta.dir: 'rtl'. Úttakið inniheldur engar
bidi-stýringar sjálfgefið, því sumir skjáhermar birta þær sem kassamerktar
merkingar. LOCKEDIN_BIDI=on virkjar þær beinlínis eftir línuskiptingu fyrir
skjáherma sem vitað er að styðja balanced isolates, á meðan ANSI, ASCII-skipanir
og rökrétt afritunarröð varðveitast. Aðgengilegt úttak fjarlægir þessar
stýringar alltaf. Án þess að notandinn velji þetta getur blönduð RTL/LTR-röð
orðið einfaldari; aldrei má prófa sig áfram eða álykta stuðning.
Sum UI-sniðmát skeyta hráum notandafrasum inn með staðgenglum á borð við
{cap}. Ekki þýða þau bara stak fyrir stak. Setningin verður að haldast
málfræðilega rétt þegar staðgengillinn er heil frasi sem notandinn sló inn, en
ekki snyrtilegt nafnorð.
Raunverulegt varúðardæmi: japönsk sniðmát sem setja は beint á eftir {cap}
geta hljómað rangt þegar {cap} er heil aukasetning. Lausnin er ekki að
„þýða harðar“ heldur að endurbyggja sniðmátið (til dæmis bæta við nafnháttarliði
eða færa staðgengilinn) svo handahófskennt notandainntak passi áfram.
Þessi æfing virkar enn nákvæmlega eins. Veldu tungumál sem þú getur raunprófað (eða láttu aðstoðarmanninn gera það) og keyrðu það frá enda til enda. Skrifaðu kröfulýsinguna fyrst:
Bættu við dönsku (
da). Búðu tilsrc/content/da.jssem{ meta, pools, ui }pakka með sömu lyklum og enska, með þýðingu á hverri færslu (efnispool um 25 hver, allir UI-strengir). SkráðudaíBUNDLESísrc/lockedin.js.--lang daog locale af gerðinnida-*verða að velja það. Haltu spjaldahausstrengjum innan breiddarmarkanna.npm testverður að vera áfram grænt og bættu við dönskum ófrávíkjanlegum reglum + greiningarprófum sem spegla þau staðfærðu próf sem fyrir eru.
Keyrðu síðan lykkjuna úr Kennslu 3–4:
- Áætlun fyrst. „Áður en þú skrifar kóða skaltu segja mér hvaða skrám þú breytir og hvernig þú ætlar að halda lykilajafnræði við ensku.“
-
Próf fyrst. „Bættu við prófum sem eiga að falla:
da-greiningu, lykilajafnræði fyrirdaog dönsku reflect/connect ófrávíkjanlegu prófi. Ekki búa pakkann til enn.“ -
Útfærslan. „Búðu nú til
src/content/da.jsmeð því að þýða núverandi pakka lykil fyrir lykil, skráðu hann og láttu prófin fara í gegn. Aðeinspick/shufflefyrir slembni.“ -
Hlið + yfirferð.
npm test, svolockedin --lang da post— og lestu diffið: var hver lykill þýddur? Haldast spjaldarammarnir í röð? Lifa sniðmát með{cap}af hráum notandafrasum?
Minni upphitunarverkefni ef heilt tungumál er of mikið:
- „Bættu einu
TAGLINEí viðbót við alla 33 tungumálapakkana og haltu fjöldanum jöfnum.“ - „Athugaðu hvort
cardFooterí kannada sé ≤ 60 sýnilegir dálkar og útskýrðu hvernig samsetningarmerkin voru mæld.“ - „Sýndu mér prófið sem myndi bila ef ég eyddi einum
ui-lykli úrja.js.“
- Flettu
src/content/es.js— hann er enn vinalegt sniðmát fyrir nýjan pakka. - Lestu aftur
docs/HANDOFF.md→ „Adding a language“. - Njóttu fjöltyngdu brandaranna í Skipanatilvísun.
Þarna lýkur kennsluefninu. Þú getur nú stýrt gervigreindaraðstoðarmanni til að smíða eiginleika og staðfæra þá fyrir aftan prófunarhlið — á 33 tungumálum og með pláss fyrir fleiri. Sammála? 👇
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.