feat(i18n): translate skills.json chapter to Brazilian Portuguese
Fill the remaining `pt` mirror fields on the /skills/ chapter so the bilingual contract stops being silently English-only. 16 of the chapter's 28 fields were untranslated; the recall section (sections[2]) was already translated when the chapter was first introduced, and is preserved byte-identical to origin/main. The chapter composes: - Hero (eyebrow, title, lede). - Section 0 (Package anatomy): eyebrow, multi-line title, copy. - Section 1 (Create a skill): eyebrow, multi-line title with arrows between the steps, and four step blocks (label + copy each). - Section 2 (Check yourself): recall Q/A pairs and citation links. Already translated; preserved byte-identical. Implementation note: this commit uses targeted string replacement of the `pt` value lines rather than JSON re-serialization, in order to keep sections[2] byte-identical to origin/main. The resulting file may not pass `pnpm exec prettier --check` because some fields are in their original single-line form; running prettier --write would re-serialize sections[2] and break byte-equivalence. Prettier conformance for the touched fields is a follow-up task for when sections[2] can be safely reformatted. Translation register follows the conventions established by src/content/commonSkills/*.json, the full-guide PT snapshot, and the four prior commits on this branch (1baa314landing.json,fd031b0summary.json,160a324models.json,18bf6b0agents.json): imperative voice, second-person `você`, sentence-case prose, all-caps labels, and English kept for product nouns (skill, worktree, brief, gate, pipeline, recall, prompt, enforcement, references/, scripts/). Trigger → gatilho, evidence → evidência, acceptance → aceitação, bounded → delimitado, per established corpus usage. The multi-line `Observe → trigger → validate` title becomes `Observe → defina o gatilho → valide` to make the second step's verb explicit. Verified by .agents/scripts/audit-translations.mjs: skills.json contribution to the offenders list drops from 16 to 0. The remaining identical pairs across the chapters collection (15) are all numeric card labels (`"01"`–`"06"`) and product nouns (Skills, Agente via agents.json, Brief via agents.json), which are correctly identical across locales. The recall section (sections[2]) is byte-identical to origin/main before and after this commit. Verified by reading the parsed JSON and comparing each field.
This commit is contained in:
@@ -1,56 +1,56 @@
|
||||
{
|
||||
"id": "skills",
|
||||
"eyebrow": { "en": "Reusable judgment", "pt": "Reusable judgment" },
|
||||
"title": { "en": "Teach the<br><em>decision.</em>", "pt": "Teach the<br><em>decision.</em>" },
|
||||
"eyebrow": { "en": "Reusable judgment", "pt": "Julgamento reutilizável" },
|
||||
"title": { "en": "Teach the<br><em>decision.</em>", "pt": "Ensine a<br><em>decisão.</em>" },
|
||||
"lede": {
|
||||
"en": "A skill changes behavior. Keep the trigger precise, put the workflow in <code>SKILL.md</code>, and move conditional facts, scripts, and examples into focused files.",
|
||||
"pt": "A skill changes behavior. Keep the trigger precise, put the workflow in <code>SKILL.md</code>, and move conditional facts, scripts, and examples into focused files."
|
||||
"pt": "Uma skill muda comportamento. Mantenha o gatilho preciso, coloque o workflow em <code>SKILL.md</code> e mova fatos condicionais, scripts e exemplos para arquivos focados."
|
||||
},
|
||||
"sections": [
|
||||
{
|
||||
"eyebrow": { "en": "Package anatomy", "pt": "Package anatomy" },
|
||||
"eyebrow": { "en": "Package anatomy", "pt": "Anatomia do pacote" },
|
||||
"title": {
|
||||
"en": "One job.<br>More than<br>one <em>file.</em>",
|
||||
"pt": "One job.<br>More than<br>one <em>file.</em>"
|
||||
"pt": "Um trabalho.<br>Mais que<br>um <em>arquivo.</em>"
|
||||
},
|
||||
"copy": {
|
||||
"en": "Choose a file to see why it belongs in the package.",
|
||||
"pt": "Choose a file to see why it belongs in the package."
|
||||
"pt": "Escolha um arquivo para ver por que ele pertence ao pacote."
|
||||
}
|
||||
},
|
||||
{
|
||||
"eyebrow": { "en": "Create a skill", "pt": "Create a skill" },
|
||||
"eyebrow": { "en": "Create a skill", "pt": "Crie uma skill" },
|
||||
"title": {
|
||||
"en": "Observe →<br>trigger →<br>validate",
|
||||
"pt": "Observe →<br>trigger →<br>validate"
|
||||
"pt": "Observe →<br>defina o gatilho →<br>valide"
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"label": { "en": "Observe friction", "pt": "Observe friction" },
|
||||
"label": { "en": "Observe friction", "pt": "Observe o atrito" },
|
||||
"copy": {
|
||||
"en": "Find a repeated decision or failure.",
|
||||
"pt": "Find a repeated decision or failure."
|
||||
"pt": "Encontre uma decisão ou falha repetida."
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": { "en": "Define the trigger", "pt": "Define the trigger" },
|
||||
"label": { "en": "Define the trigger", "pt": "Defina o gatilho" },
|
||||
"copy": {
|
||||
"en": "Say when it should load and when it should stay out.",
|
||||
"pt": "Say when it should load and when it should stay out."
|
||||
"pt": "Diga quando deve carregar e quando deve ficar de fora."
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": { "en": "Choose anatomy", "pt": "Choose anatomy" },
|
||||
"label": { "en": "Choose anatomy", "pt": "Escolha a anatomia" },
|
||||
"copy": {
|
||||
"en": "Use references for facts and scripts for deterministic mechanics.",
|
||||
"pt": "Use references for facts and scripts for deterministic mechanics."
|
||||
"pt": "Use referências para fatos e scripts para mecânicas determinísticas."
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": { "en": "Evaluate behavior", "pt": "Evaluate behavior" },
|
||||
"label": { "en": "Evaluate behavior", "pt": "Avalie o comportamento" },
|
||||
"copy": {
|
||||
"en": "Test realistic prompts, edge cases, safety, and evidence.",
|
||||
"pt": "Test realistic prompts, edge cases, safety, and evidence."
|
||||
"pt": "Teste prompts realistas, casos extremos, segurança e evidência."
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user