Šķîþ ţö ḿàîñ çöñţéñţ

Àļţéŕñàţîṽéš

΃ ýöü üšé öŕ àŕé éṽàļüàţîñĝ àñöţĥéŕ Ŕéàçţ î18ñ ļîƃŕàŕý, ţĥéšé ţàƃļéš šĥöŵ ŵĥéŕé ñéöķàþî-î18ñ đéŕš: ĥöŵ à šţŕîñĝ îš îđéñţîƒîéđ, ĥöŵ ḿüçĥ ýöü ŵŕàþ, àñđ ŵĥàţ šĥîþš àţ ŕüñţîḿé. Éṽéŕý ļîƃŕàŕý ĥéŕé îš ŵéļļ ḿàîñţàîñéđ, àñđ ţĥé çöḿþàŕîšöñ îš àƃöüţ ƒîţ ƒöŕ ýöüŕ çöđéƃàšé.

ŕéàçţ-î18ñéẋţ​

Ţĥé ḿöšţ ŵîđéļý üšéđ öþţîöñ. Îţ üšéš đéṽéļöþéŕ-àüţĥöŕéđ ķéýš àñđ à t(key) / <Trans> ŕüñţîḿé.

ŕéàçţ-î18ñéẋţñéöķàþî-î18ñ
Šöüŕçé îđéñţîƒîéŕĐéṽéļöþéŕ-îñṽéñţéđ ķéý (ñàţüŕàļ-ļàñĝüàĝé ķéýš àļšö šüþþöŕţéđ)Šöüŕçé ţéẋţ + öŵñ éļéḿéñţ ţàĝ
ĴŠẊ ŵŕàþþîñĝt("key") öŕ <Trans i18nKey="...">Þļàîñ ĴŠẊ
Éẋţŕàçţîöñi18next-cli / i18next-parser, öŕ ḿàñüàļÞļüĝîñ đüŕîñĝ ñöŕḿàļ ƃüîļđ
ƑöŕḿàţĴŠÖÑ (ñéšţéđ öŕ ƒļàţ); ẊĻÎƑƑ ṽîà éẋţéŕñàļ çöñṽéŕšîöñĶƂƑ ŵîţĥ šţŕüçţüŕàļ çöñţéẋţ, þļàçéĥöļđéŕš, þļüŕàļ ƒöŕḿš
Ŕüñţîḿé çöšţŠĥîþš ţĥé î18ñéẋţ ŕüñţîḿé (îñţéŕþöļàţîöñ, þļüŕàļ ŕéšöļüţîöñ, ŕéšöüŕçé šţöŕé); đîçţ ļöàđéđ àţ ŕüñţîḿéÎñļîñé ḿöđé: žéŕö ŕüñţîḿé (~2 ķƂ îƒ ýöü üšé ÎÇÜ/þļüŕàļš); ŕüñţîḿé ḿöđé: öñé đîçţ ļööķüþ

Ḿîĝŕàţîñĝ ƒŕöḿ ŕéàçţ-î18ñéẋţ ţýþîçàļļý ḿéàñš đŕöþþîñĝ ţĥé t() / <Trans> ŵŕàþþéŕš àñđ ŕé-ŕüññîñĝ ţĥé éẋţŕàçţ àĝàîñšţ ţĥé ƃàŕé ĴŠẊ. Éẋîšţîñĝ ţŕàñšļàţîöñš çàñ ƃé ļöàđéđ àš-îš îƒ ýöü ķéý ţĥéḿ ƃý ţĥé šàḿé šöüŕçé ţéẋţ; öţĥéŕŵîšé îţ'š à öñé-ţîḿé ŕé-ţŕàñšļàţîöñ þàšš ţĥŕöüĝĥ ýöüŕ çöñţéñţ ḿéḿöŕý.

ƑöŕḿàţĴŠ (ŕéàçţ-îñţļ)​

Đéṽéļöþéŕ-àüţĥöŕéđ ḿéššàĝé đéšçŕîþţöŕš ŵîţĥ ÎÇÜ ƒöŕḿàţţîñĝ ƃàķéđ îñ.

ƑöŕḿàţĴŠñéöķàþî-î18ñ
Šöüŕçé îđéñţîƒîéŕĐéṽéļöþéŕ-îñṽéñţéđ îđ (öŕ àüţö-ĥàšĥ öƒ ţĥé đéšçŕîþţöŕ)Šöüŕçé ţéẋţ + öŵñ éļéḿéñţ ţàĝ
ĴŠẊ ŵŕàþþîñĝ<FormattedMessage> öŕ useIntl().formatMessage()Þļàîñ ĴŠẊ
Þļüŕàļš / šéļéçţŔàŵ ÎÇÜ ḿéššàĝé šţŕîñĝš<Plural> / <Select> àüţĥöŕîñĝ çöḿþöñéñţš
Éẋţŕàçţîöñ@formatjs/cliÞļüĝîñ đüŕîñĝ ñöŕḿàļ ƃüîļđ
Ŕüñţîḿé çöšţŠĥîþš intl-messageformat (ÎÇÜ þàŕšéŕ/ƒöŕḿàţţéŕ); çàñ þŕéçöḿþîļé ţö ÀŠŢ ţö đŕöþ ţĥé þàŕšéŕÎñļîñé ḿöđé: žéŕö ŕüñţîḿé (~2 ķƂ îƒ ýöü üšé ÎÇÜ/þļüŕàļš); ŕüñţîḿé ḿöđé: öñé đîçţ ļööķüþ

ƑöŕḿàţĴŠ'š ÎÇÜ-îñ-šöüŕçé àþþŕöàçĥ ĥàñđļéš çöḿþļéẋ ḿéššàĝé çöḿþöšîţîöñ ŵéļļ, àñđ đéṽéļöþéŕš àñđ ţŕàñšļàţöŕš ƃöţĥ ŵöŕķ îñ ÎÇÜ. ñéöķàþî-î18ñ ķééþš ţĥé šöüŕçé îñ Ŕéàçţ çöḿþöñéñţš àñđ ĝîṽéš ţŕàñšļàţöŕš' ÇÀŢ ţööļš ţĥé çàñöñîçàļ ÎÇÜ ţéḿþļàţé.

Ļîñĝüî​

Ţĥé çļöšéšţ îñ àþþŕöàçĥ: Ļîñĝüî üšéš ḿàçŕöš (<Trans>, t ţàĝĝéđ ţéḿþļàţéš) ţö ŕéŵŕîţé šöüŕçé ţéẋţ îñţö ĥàšĥéđ-ķéý ŕüñţîḿé ļööķüþš àţ ƃüîļđ ţîḿé.

Ļîñĝüîñéöķàþî-î18ñ
Šöüŕçé îđéñţîƒîéŕŠöüŕçé ţéẋţ (Ƃàƃéļ ḿàçŕö öŕ ŠŴÇ þļüĝîñ)Šöüŕçé ţéẋţ + öŵñ éļéḿéñţ ţàĝ (ṽîà ŠŴÇ þļüĝîñ)
ĴŠẊ ŵŕàþþîñĝ<Trans>Hello</Trans>, t\...`` ḿàçŕöÞļàîñ ĴŠẊ
Éẋţŕàçţîöñlingui extractÞļüĝîñ đüŕîñĝ ñöŕḿàļ ƃüîļđ
ƑöŕḿàţÞÖ (đéƒàüļţ), ĴŠÖÑ, ÇŠṼĶƂƑ ŵîţĥ šţŕüçţüŕàļ çöñţéẋţ, þļàçéĥöļđéŕš, þļüŕàļ ƒöŕḿš
Ŕüñţîḿé çöšţŠḿàļļ @lingui/core ŕüñţîḿé + çöḿþîļéđ çàţàļöĝš; đîçţ ļööķüþÎñļîñé ḿöđé: žéŕö ŕüñţîḿé (~2 ķƂ îƒ ýöü üšé ÎÇÜ/þļüŕàļš); ŕüñţîḿé ḿöđé: öñé đîçţ ļööķüþ

Ļîñĝüî àñđ ñéöķàþî-î18ñ ƃöţĥ üšé ţĥé šöüŕçé ţéẋţ àš ţĥé ķéý. Ţĥéý đéŕ öñ öþţ-îñ. Ŵîţĥ Ļîñĝüî ýöü þüţ éṽéŕý šţŕîñĝ îñţö à ḿàçŕö (<Trans>, t`...`). ñéöķàþî-î18ñ éẋţŕàçţš ĴŠẊ ţéẋţ ƃý đéƒàüļţ àñđ ķééþš t() ƒöŕ šţŕîñĝš öüţšîđé ĴŠẊ.

ƒƃţéé​

Ţĥé ḿöđéŕñ çöñţîñüàţîöñ öƒ Ḿéţà'š fbt. ƒƃţéé ŕéƃüîļđš îţ ƒöŕ ŢýþéŠçŕîþţ, Ŕéàçţ 19, ÉŠḾ, àñđ Ṽîţé / Ñéẋţ.ĵš ŵîţĥ ƃöţĥ Ƃàƃéļ àñđ ŠŴÇ ţŕàñšƒöŕḿš, ŵĥîļé ķééþîñĝ ƒƃţ'š àüţĥöŕîñĝ ḿöđéļ: éṽéŕý ţŕàñšļàţàƃļé šţŕîñĝ îš ŵŕàþþéđ îñ àñ éẋþļîçîţ <fbt> ḿàŕķéŕ, àñđ ţĥé šöüŕçé ţéẋţ îš ţĥé ķéý.

ƒƃţééñéöķàþî-î18ñ
Šöüŕçé îđéñţîƒîéŕŠöüŕçé ţéẋţ + ŕéǫüîŕéđ descŠöüŕçé ţéẋţ + öŵñ éļéḿéñţ ţàĝ
ĴŠẊ ŵŕàþþîñĝ<fbt desc="...">, fbt() / fbs()Þļàîñ ĴŠẊ
Þļüŕàļš / ĝéñđéŕ<fbt:plural>, <fbt:pronoun>, <fbt:enum><Plural> / <Select> àüţĥöŕîñĝ çöḿþöñéñţš
Éẋţŕàçţîöñfbtee collect → prepare-translations → translateÞļüĝîñ đüŕîñĝ ñöŕḿàļ ƃüîļđ
ƑöŕḿàţĴŠÖÑ (source_strings.json + þéŕ-ļöçàļé ƒîļéš)ĶƂƑ ŵîţĥ šţŕüçţüŕàļ çöñţéẋţ, þļàçéĥöļđéŕš, þļüŕàļ ƒöŕḿš
Ŕüñţîḿé çöšţŠĥîþš ţĥé ƒƃţ ŕüñţîḿé ţö ŕéšöļṽé þàŕàḿš/þļüŕàļ/þŕöñöüñ àţ ŕéñđéŕ; ţŕàñšļàţîöñš ļöàđéđÎñļîñé ḿöđé: žéŕö ŕüñţîḿé (~2 ķƂ îƒ ýöü üšé ÎÇÜ/þļüŕàļš); ŕüñţîḿé ḿöđé: öñé đîçţ ļööķüþ

ƒƃţéé àļšö üšéš ţĥé šöüŕçé ţéẋţ àš ţĥé ķéý, àñđ îţ ŕéǫüîŕéš àñ <fbt> ḿàŕķéŕ ŵîţĥ à desc àŕöüñđ éṽéŕý ţŕàñšļàţàƃļé šţŕîñĝ. Ţĥé ḿàŕķéŕ ļéţš ţĥé Ƃàƃéļ / ŠŴÇ çöḿþîļéŕ àñđ ţĥé ÉŠĻîñţ þļüĝîñ àñàļýšé, ţýþé-çĥéçķ àñđ éẋţŕàçţ éàçĥ šţŕîñĝ šţàţîçàļļý. Ýöü ĝéţ çöḿþîļé-ţîḿé ĝüàŕàñţééš àñđ đéçļàŕàţîṽé îñļîñé þļüŕàļ àñđ ĝéñđéŕ ĥàñđļîñĝ, àñđ ýöü ŵŕîţé à ŵŕàþþéŕ öñ éṽéŕý šţŕîñĝ. ñéöķàþî-î18ñ éẋţŕàçţš þļàîñ ĴŠẊ ŵîţĥ ñö ŵŕàþþéŕ.

Þàŕàĝļîđé (Îñļàñĝ)​

Ţýþéđ, þéŕ-ḿéššàĝé ƒüñçţîöñš ĝéñéŕàţéđ àţ ƃüîļđ ţîḿé. À ḿéššàĝé welcome ƃéçöḿéš m.welcome().

Þàŕàĝļîđéñéöķàþî-î18ñ
Šöüŕçé îđéñţîƒîéŕĐéṽéļöþéŕ-îñṽéñţéđ ḿéššàĝé îđŠöüŕçé ţéẋţ + öŵñ éļéḿéñţ ţàĝ
ĴŠẊ ŵŕàþþîñĝĜéñéŕàţéđ ƒüñçţîöñ çàļļ (m.welcome())Þļàîñ ĴŠẊ
Ţŕéé-šĥàķéàƃîļîţýÉṽéŕý ḿéššàĝé îš à ƒüñçţîöñ; éẋçéļļéñţ ţŕéé-šĥàķîñĝĐîçţ ļööķüþ; ţĥé đîçţ îš öñé öƃĵéçţ
Ŕüñţîḿé çöšţḾîñîḿàļ ŕüñţîḿé; ţŕéé-šĥàķéñ þéŕ-ḿéššàĝé ƒüñçţîöñš, šö üñüšéđ ḿéššàĝéš çöšţ ~0Îñļîñé ḿöđé: žéŕö ŕüñţîḿé (~2 ķƂ îƒ ýöü üšé ÎÇÜ/þļüŕàļš); ŕüñţîḿé ḿöđé: öñé đîçţ ļööķüþ

Þàŕàĝļîđé'š ţýþéđ ƒüñçţîöñš ĝîṽé šţŕöñĝ ŕéƒàçţöŕîñĝ šüþþöŕţ, ŵîţĥ ḿéššàĝé îđš àš ƒüñçţîöñ ñàḿéš. ñéöķàþî-î18ñ ķéýš ƃý šöüŕçé ţéẋţ. Ţĥé ţŵö çàñ çöéẋîšţ îñ öñé çöđéƃàšé, ţĥöüĝĥ ḿöšţ þŕöĵéçţš þîçķ öñé.

Ţŵö þŕöþéŕţîéš ţĥé ţàƃļéš ļéàṽé öüţ​

  • Ķéýš šüŕṽîṽé ŕéƒàçţöŕîñĝ. Ţĥé ķéý çöḿéš ƒŕöḿ ţĥé šöüŕçé ţéẋţ àñđ ţĥé éļéḿéñţ'š öŵñ ţàĝ, àñđ ñéṽéŕ ƒŕöḿ îţš àñçéšţöŕš. Ýöü çàñ ŵŕàþ à šéçţîöñ îñ à ñéŵ <div>, ḿöṽé à þàŕàĝŕàþĥ îñţö à <Card> öŕ ŕéšţŕüçţüŕé ţĥé þàĝé àŕöüñđ îţ, àñđ éṽéŕý ķéý àñđ ţŕàñšļàţîöñ šţàýš. Ţĥé éļéḿéñţ šţîļļ ķééþš à ƃüţţöñ'š "Öþéñ" àþàŕţ ƒŕöḿ à ḿéñü îţéḿ'š. Ŵĥéŕé îţ đöéšñ'ţ, ýöü àđđ à ñöţé ţö ţéļļ ţĥéḿ àþàŕţ.
  • Ŕéṽîéŵ ĥàþþéñš öñ ţĥé ŕüññîñĝ àþþ. ÀĻŢ+çļîçķ à šţŕîñĝ ţö šéé îţš šöüŕçé àñđ éđîţ îţš ţàŕĝéţ. Ţéŕḿîñöļöĝý àñđ çĥéçķ ƒîñđîñĝš àþþéàŕ öñ ţĥé ļîṽé ţéẋţ, àñđ ţĥé éđîţ îš ŵŕîţţéñ ƃàçķ ţö ţĥé .kbf.json àš à ĝîţ đ. Ŕéṽîéŵ ñééđš ñö àççöüñţ àñđ ñö ñéţŵöŕķ, ƃéçàüšé ţĥé šţŕîñĝš àŕé ƒîļéš îñ ýöüŕ ŕéþöšîţöŕý. Àñýöñé ŵîţĥ à çĥéçķöüţ çàñ ŕéṽîéŵ.

Ŵĥîçĥ ţö þîçķ​

  • Ýöü ŵàñţ žéŕö-ŵŕàþþéŕ éŕĝöñöḿîçš àñđ ýöüŕ šţŕîñĝš ḿöšţļý ļîṽé îñ ĴŠẊ → ñéöķàþî-î18ñ.
  • Ýöü ŵàñţ ţýþéđ ḿéššàĝé ƒüñçţîöñš ţĥàţ ţŕéé-šĥàķé ţö ţĥé ḿéššàĝéš ýöü üšé → Þàŕàĝļîđé.
  • Ýöü'ŕé đééþļý îñṽéšţéđ îñ ÎÇÜ-àš-šöüŕçé → ƑöŕḿàţĴŠ.
  • Ýöü ŵàñţ éẋþļîçîţ, çöḿþîļé-ţîḿé-çĥéçķéđ îñļîñé ḿàŕķéŕš ŵîţĥ đéçļàŕàţîṽé þļüŕàļ/ĝéñđéŕ → ƒƃţéé.
  • Ýöü ĥàṽé à ļàŕĝé éẋîšţîñĝ ŕéàçţ-î18ñéẋţ çöđéƃàšé → šţàý ŵîţĥ ŕéàçţ-î18ñéẋţ üñļéšš ýöü'ŕé đöîñĝ à ŕéŵŕîţé àñýŵàý.

Ŕéļàţéđ​