The Burmese locale lives in src/i18n/my.json. Every value that still needs
translation is prefixed with the marker [MY] followed by the English source
text. A translator replaces the English with Burmese and removes the [MY]
prefix. Keys, URLs, email addresses, and handles must NOT be changed.
- Open
src/i18n/my.json. - Find a value beginning with
[MY]. - Replace the English text with the Burmese translation.
- Delete the leading
[MY]marker. - Save. Run
npm run buildto confirm it still builds. - Repeat until no
[MY]markers remain:grep -c "\[MY\]" src/i18n/my.json.
- Do not translate:
meta.lang, language labels, any URL, email, GitHub/X handle. - The three legal pages (Terms, Code of Conduct, Privacy) keep their long body
text in English inside the
*Body.astrocomponents. The Burmese versions show a "[MY] Burmese translation pending" banner (seesrc/components/LegalNotice.astro) until a translator localizes those components directly. - Recommended translation priority (per source guide 06b):
- Home hero + 3 cards (
home.*) - Apply page (
apply.*) - FAQ top items (
faq.items[0..4]) - Code of Conduct Myanmar-context paragraphs
- Curriculum chapter outlines (
curriculum.*+src/data/chapters.ts) - About page (
about.*) - Everything else
- Home hero + 3 cards (
If English copy changes, regenerate the Burmese skeleton with:
node scripts/gen-my.mjs # re-wraps en.json strings with [MY] markers (overwrites my.json)WARNING: this overwrites existing Burmese translations. Run it only before any real translation work has started, or merge carefully afterward.
brand.namebrand.taglinenav.homenav.aboutnav.teamnav.curriculumnav.applynav.sponsorsnav.faqnav.contactfooter.rightsfooter.termsfooter.cocfooter.privacyfooter.contactfooter.licensehome.titlehome.descriptionhome.heroTitlehome.heroStathome.heroSubhome.ctaApplyhome.ctaWorkhome.card1Titlehome.card1Bodyhome.card2Titlehome.card2Bodyhome.card3Titlehome.card3Bodyhome.credibilityabout.titleabout.descriptionabout.headingabout.intro1about.intro2about.believeHeadingabout.beliefs[0].titleabout.beliefs[0].bodyabout.beliefs[1].titleabout.beliefs[1].bodyabout.beliefs[2].titleabout.beliefs[2].bodyabout.beliefs[3].titleabout.beliefs[3].bodyabout.beliefs[4].titleabout.beliefs[4].bodyabout.notHeadingabout.notList[0]about.notList[1]about.notList[2]about.notList[3]about.notList[4]team.titleteam.descriptionteam.headingteam.leadHeadingteam.photoAltteam.photoCaptionteam.nameteam.bioteam.githubteam.xteam.emailLabelteam.advisorsHeadingteam.advisorsBodyteam.helpHeadingteam.helpBodycurriculum.titlecurriculum.descriptioncurriculum.headingcurriculum.introcurriculum.ctaSamplecurriculum.ctaDownloadcurriculum.readMorecurriculum.startHerecurriculum.tierHeadingcurriculum.tierIntrocurriculum.tierAcurriculum.tierBcurriculum.tierCcurriculum.tierNotecurriculum.getHeadingcurriculum.commitHeadingcurriculum.get[0]curriculum.get[1]curriculum.get[2]curriculum.get[3]curriculum.get[4]curriculum.commit[0]curriculum.commit[1]curriculum.commit[2]curriculum.commit[3]curriculum.commit[4]apply.titleapply.descriptionapply.headingapply.closedBodyapply.nextCohortapply.notifyHeadingapply.notifyList[0]apply.notifyList[1]apply.lookHeadingapply.lookIntroapply.lookList[0]apply.lookList[1]apply.lookList[2]apply.lookList[3]apply.lookList[4]apply.lookList[5]sponsors.titlesponsors.descriptionsponsors.headingsponsors.introsponsors.cohort1Headingsponsors.cohort1List[0]sponsors.cohort1List[1]sponsors.cohort1List[2]sponsors.howHeadingsponsors.orgHeadingsponsors.orgIntrosponsors.orgList[0]sponsors.orgList[1]sponsors.orgList[2]sponsors.orgList[3]sponsors.orgContactsponsors.indHeadingsponsors.indIntrosponsors.indList[0]sponsors.indList[1]sponsors.indList[2]sponsors.getHeadingsponsors.getList[0]sponsors.getList[1]sponsors.getList[2]sponsors.getList[3]sponsors.noSellfaq.titlefaq.descriptionfaq.headingfaq.items[0].qfaq.items[0].afaq.items[1].qfaq.items[1].afaq.items[2].qfaq.items[2].afaq.items[3].qfaq.items[3].afaq.items[4].qfaq.items[4].afaq.items[5].qfaq.items[5].afaq.items[6].qfaq.items[6].afaq.items[7].qfaq.items[7].afaq.items[8].qfaq.items[8].afaq.items[9].qfaq.items[9].afaq.items[10].qfaq.items[10].afaq.items[11].qfaq.items[11].afaq.items[12].qfaq.items[12].acontact.titlecontact.descriptioncontact.headingcontact.applicantscontact.sponsorshipcontact.sponsorshipNotecontact.privacycontact.coccontact.channelsHeadingcontact.githubcontact.xcontact.forwardNoteterms.titleterms.descriptioncoc.titlecoc.descriptionprivacy.titleprivacy.description