一键导入
i18n
Manage translation entries in fr-FR.json and en-US.json. Use when adding, modifying, or reviewing i18n keys for gallery pages or shared labels.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manage translation entries in fr-FR.json and en-US.json. Use when adding, modifying, or reviewing i18n keys for gallery pages or shared labels.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create a new painting or ceramic gallery page end-to-end: i18n translations, Vue page component, Menu.vue link update, and navigation. Use when asked to add a new gallery page to the site.
Reference and checklist for SEO metadata on gallery pages. Use when writing, reviewing, or debugging useHead() and useSeoMeta() on any page.
Reference pattern for creating gallery pages (painting and ceramic). Use this skill when building a new gallery page to ensure all SEO, i18n, and component conventions are followed.
Full SEO implementation pattern for gallery pages: useHead, useSeoMeta, canonical URL, hreflang, Open Graph, Twitter cards, and article tags. Use this skill when writing or reviewing SEO metadata on any page.
i18n management for Atelier Libr'Émotions: key structure, naming conventions, both-locale rule, and translation quality guidelines. Use this skill when adding or modifying translation entries.
Vue 3 + Nuxt 4 conventions for this project: SFC structure, auto-imports, TypeScript, SCSS, components, and performance patterns. Use when writing or reviewing any .vue file.
| name | i18n |
| description | Manage translation entries in fr-FR.json and en-US.json. Use when adding, modifying, or reviewing i18n keys for gallery pages or shared labels. |
| disable-model-invocation | true |
| argument-hint | <technique> <category> (e.g. porcelain flowers) |
You are managing i18n translations for: $ARGUMENTS
The project has two locale files that must always be kept in sync.
Read existing entries in i18n/locales/fr-FR.json and i18n/locales/en-US.json before editing.
Every change to fr-FR.json MUST have a matching change in en-US.json in the same edit.
Never add a key to one file without the other. Never leave a key untranslated.
pages.{domain}.{technique_snake}.{category_snake}.tab_name
pages.{domain}.{technique_snake}.{category_snake}.meta.content
pages.{domain}.{technique_snake}.{category_snake}.title
pages.{domain}.{technique_snake}.{category_snake}.subtitle
pictures.{domain_plural}.{technique_snake}.{category_snake}.{image_key}.title
pictures.{domain_plural}.{technique_snake}.{category_snake}.{image_key}.mobile_title
pictures.{domain_plural}.{technique_snake}.{category_snake}.{image_key}.alt
pictures.{domain_plural}.{technique_snake}.{category_snake}.{image_key}.dimensions (paintings only)
{domain} = painting or ceramic (singular){domain_plural} = paintings or ceramics (with s){image_key} = lowercase filename without extension (FP1.webp → fp1, AutomaticPainting1.webp → automatic_painting_1)| French | i18n snake_case | URL kebab-case | public/ folder |
|---|---|---|---|
| Four électrique | electric_kiln | electric-kiln | electric_kiln |
| Raku et enfumage | raku_and_smouldering | raku-smouldering | raku_smouldering |
| Porcelaine | porcelain | porcelain | porcelain |
| Acrylique | acrylic | acrylic | acrylic |
| Encres | inks | inks | inks |
| Huile | oil | oil | oil |
| Fusain | charcoal | charcoal | charcoal |
| Pastel | pastel | pastel | pastel |
| Technique mixte | mixed_technique | mixed-technique | mixed_technique |
"pages": {
"{domain}": {
"{technique_snake}": {
"{category_snake}": {
"tab_name": "{Technique FR} - {Catégorie FR}",
"meta": {
"content": "≤160 chars. Include Véronique Berthier. Technique + category. Professional SEO copy."
},
"title": "{Technique FR} - {Catégorie FR}",
"subtitle": "{Artist's subtitle verbatim}"
}
}
}
}
"pictures": {
"{domain_plural}": {
"{technique_snake}": {
"{category_snake}": {
"{image_key}": {
"title": "{Type} {N}",
"mobile_title": "{PREFIX}{N}",
"alt": "Short accessible description of what is depicted",
"dimensions": "{W x H cm}"
}
}
}
}
}
Note:
dimensionsis required for paintings. Omit it for ceramics.
The English meta.content must be independently written for English SEO — not a literal translation.
| Field | Rule |
|---|---|
meta.content | ≤160 chars. Starts with "Galerie de…" (FR) or "Gallery of…" (EN). Includes artist name. |
tab_name / title | "{Technique} - {Category}" format. Consistent across FR and EN. |
subtitle | Artist's phrasing (FR), natural adaptation (EN). |
mobile_title | Short code ≤10 chars, matches filename prefix. E.g., FP1, EC3, PM2. |
alt | Describes what is visually depicted. 5–15 words. No "image of" prefix. |
title (image) | "{Type} {N}" — no dimensions inline; dimensions go in the separate dimensions field. |
dimensions | "{W} x {H} cm" — paintings only, omit for ceramics. Value is locale-independent. |
miscellaneous.* holds shared labels used in the menu, SEO keywords, and throughout pages.
Before adding a new miscellaneous key, search both locale files first — it may already exist.
If adding a new one, add it to both files in the same edit.
When a page navigation link points to a page not yet created, use /wip as the path.
The wip.* keys (wip.previous_page_name, wip.next_page_name, etc.) are already defined in both files — do not redefine them.
.editorconfig)