You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> **Note on `CustomDocCardList`:** This component is already locale-aware — it reads titles from `_sidebar-labels.json` and descriptions from the translated article frontmatter automatically. No extra step is needed; it works correctly once sidebar labels (Step 6c `--sidebars`) and article translations are done.
223
+
> **Flow overview:** (1) research dictionary terminology → (2) native speaker reviews word-pair list → (3) translate tutorial 7 articles → (4) deploy to develop → (5) native speaker reviews rendered pages → (6) translate the rest.
224
+
>
225
+
> **Note on `CustomDocCardList`:** This component is already locale-aware — it reads titles from `_sidebar-labels.json` and descriptions from the translated article frontmatter automatically. No extra step is needed; it works correctly once sidebar labels (Step 6g `--sidebars`) and article translations are done.
224
226
225
-
All commands require `ANTHROPIC_API_KEY` to be set.
227
+
All `translate.mjs`commands require `ANTHROPIC_API_KEY` to be set.
226
228
227
-
### 6a. Translate the dictionary first
229
+
### Phase 1 — Dictionary research and native-speaker word-list review
228
230
229
-
The dictionary (`src/locales/dictionary.json`) should already have translations added manually in Step 1d. Review it before running article translations — the script uses it as a glossary.
231
+
#### 6a. Deeply research target-language mobile dev community terminology
232
+
233
+
Do not guess dictionary entries from training knowledge. **Run web searches** to verify how the target-language mobile dev community actually refers to each concept. This materially affects the quality of every translated article downstream.
234
+
235
+
**Sources to consult (in priority order):**
236
+
237
+
1.**Platform-official docs in the target locale** — authoritative terminology developers will expect:
238
+
- App Store Connect help pages (`developer.apple.com/help/app-store-connect/` — often has locale routes)
239
+
- Google Play Console help (`support.google.com/googleplay/android-developer?hl={LOCALE}`)
2.**Competitor docs in the target locale**, if available — RevenueCat, Superwall, Stripe.
242
+
3.**Native-language mobile dev press** — e.g. iPhoneSoft, iGeneration, Citronnoir (FR); equivalents exist for most major locales. Search `"<term>" site:<locale-press-domain>` to see real usage.
243
+
4.**Glossaries on affiliate-marketing / MMP sites** — AppsFlyer, Adjust, and similar publish locale-specific glossaries.
244
+
5.**Professional translators' references** — Linguee and Reverso Context show real-world parallel translations across tech content.
245
+
246
+
**For each dictionary term, verify:**
247
+
248
+
- Which form does platform-official (Apple / Google) documentation use in the target locale?
249
+
- Is there divergence between Apple FR/DE/etc. and Google Play FR/DE/etc.? (Yes — frequently. Flag these.)
250
+
- What term does the target-locale mobile dev press actually use in practice?
251
+
- Is the term commonly kept in English as a loanword? (`paywall`, `sandbox`, `onboarding`, `SDK`, `store`, `remote config`, `dashboard` are often kept; `subscription`, `access level`, `grace period`, `consumable` usually translate.)
252
+
- Does the candidate translation conflict with another common meaning in the target locale? (e.g. "placement" = "investment" in French — check context fit.)
-**Apple's in-app terms have official locale translations** — look up `introductory offer`, `promotional offer`, `win-back offer`, `grace period` in Apple FR/DE/etc. help before guessing.
258
+
-**When mobile dev press keeps a term in English, follow them.** Formal dictionaries often propose alternatives (e.g. "bac à sable" for sandbox) that no French iOS developer actually uses.
259
+
-**Match the feel of existing locales** — look at how `zh`, `tr`, `ru` handle each term; they already made similar loanword-vs-translation calls. If all three kept a term in English, the new locale probably should too.
260
+
261
+
#### 6b. Generate a word-pair list and send it for native-speaker review (BLOCKING)
262
+
263
+
After updating `src/locales/dictionary.json` with researched translations, **stop and generate a plain text list** of `English → {LOCALE}` pairs — one line per term, alphabetical by English source — and tell the user to copy it and send it to a native-speaking reviewer.
264
+
265
+
**Format to output:**
230
266
231
267
```
232
-
# Check dictionary for any missing {LOCALE} entries, then continue.
268
+
A/B test → <target translation>
269
+
access level → <target translation>
270
+
...
233
271
```
234
272
235
-
### 6b. Translate tutorial sidebar first 7 articles
273
+
No sources, no rationale — just the pairs. The user will paste this into Slack/email verbatim.
274
+
275
+
**After outputting the list, STOP.** Do not proceed to article translation. Wait for the user to either:
276
+
277
+
- Confirm "we're good to go" (dictionary stands as-is), or
278
+
- Apply native-speaker corrections to `dictionary.json` and then confirm.
279
+
280
+
### Phase 2 — Translate tutorial and deploy for rendered review
281
+
282
+
#### 6c. Generate the two translation commands (BLOCKING)
236
283
237
-
These are the entry-point articles every user sees first. Translate them as a batch:
284
+
Once the user confirms the dictionary is approved, **output the following two commands** in a single message for the user to run in their own terminal. Do not execute them — `ANTHROPIC_API_KEY` is a secret and translation is long-running and potentially costly; the user runs it themselves.
These are the 7 tutorial entry-point articles every first-time user sees. After outputting, **wait for the user to say the translation finished.**
295
+
296
+
#### 6d. Deploy the tutorial translations to `develop` for rendered review
297
+
298
+
Once the user confirms translation is done, invoke the `sync-branch-to-develop` skill to commit the generated MDX files, push the feature branch, and merge into `develop` so the native-speaker reviewer can see them rendered on the staging URL.
299
+
300
+
#### 6e. Wait for the native speaker to review the rendered pages
301
+
302
+
Tell the user to share the staging URL with their reviewer. **Stop** until the user returns with approval or revision requests. If revisions are needed, iterate on the dictionary or specific article frontmatter/body; do not start Phase 3 until the tutorial 7 are approved.
244
303
245
-
Translate one sidebar at a time — each command is independent and can be run, reviewed, and committed separately.
304
+
### Phase 3 — Full content translation
305
+
306
+
Only start this phase after the tutorial 7 are approved by the native-speaker reviewer. Same pattern as Phase 2: **output commands, do not execute** — the user runs them in their terminal with `ANTHROPIC_API_KEY` already exported from Phase 2.
307
+
308
+
#### 6f. Translate sidebar labels
309
+
310
+
All sidebars at once:
246
311
247
-
**Step-by-step sidebar labels only (all sidebars at once):**
Copy file name to clipboardExpand all lines: src/components/Homepage.tsx
+25Lines changed: 25 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -102,6 +102,31 @@ const T = {
102
102
kmp: "Интеграция Adapty с Kotlin Multiplatform",
103
103
capacitor: "Интеграция Adapty с Capacitor",
104
104
},
105
+
es: {
106
+
hero: "Adapty es una plataforma de compras in-app potente y flexible que te ayuda a hacer crecer tu base de suscriptores. Tanto si estás empezando como si ya tienes millones de usuarios, Adapty te permite establecer fácilmente los mejores precios de suscripción, probar distintos enfoques y descubrir qué funciona mejor para el éxito de tu app.",
107
+
discoverTitle: "¿Es Adapty adecuado para mí?",
108
+
discoverDesc: "Encuentra tu caso de uso — tanto si vas a lanzar una nueva app, optimizar los ingresos o migrar desde otra herramienta.",
109
+
quickstartTitle: "Guía de inicio rápido",
110
+
quickstartDesc: "Conecta Adapty con tus cuentas de tienda, configura tus productos y deja que Adapty gestione las compras en tu app.",
111
+
quickstartBtn: "Configurar Adapty en mi app",
112
+
nextTitle: "¿Qué quieres hacer a continuación?",
113
+
abTitle: "Lanza tu primer test A/B",
114
+
abDesc: "Crea tests A/B, despliégalos a tus usuarios y haz seguimiento de las variantes con mejor rendimiento.",
115
+
analyticsTitle: "Explora las analíticas",
116
+
analyticsDesc: "Revisa métricas detalladas sobre la monetización de tu app.",
117
+
integrationsTitle: "Conecta integraciones",
118
+
integrationsDesc: "Envía eventos a los servicios externos de analítica y atribución que tu equipo ya utiliza.",
119
+
paywallTitle: "Diseña paywalls en el builder no-code",
120
+
paywallDesc: "Crea paywalls en minutos con Adapty Paywall Builder. Modifica tus paywalls sin publicar una nueva versión de tu app.",
121
+
platformsTitle: "SDKs para cada plataforma",
122
+
ios: "Guía para integrar Adapty con iOS",
123
+
android: "Guía para integrar Adapty con Android",
124
+
reactNative: "Guía para integrar Adapty con React Native",
125
+
flutter: "Guía para integrar Adapty con Flutter",
126
+
unity: "Guía para integrar Adapty con Unity",
127
+
kmp: "Guía para integrar Adapty con Kotlin Multiplatform",
128
+
capacitor: "Guía para integrar Adapty con Capacitor",
0 commit comments