Nagdagdag Ako ng 5 Wika sa DIALØGUE sa 48 Oras
Gumawa ako ng planning documents na nagturo kay Claude Code kung paano mag-localize—hindi basta mag-translate—tapos pinanood ko itong mag-execute sa 5 wika nang sabay-sabay, ginagawang natural ang mga literal na phrases.
Ilang araw lang ang nakakaraan, may isang user na nagtanong kung sinusuportahan ba ng DIALØGUE ang Spanish.
Hindi.
48 oras mamaya, sinusuportahan na nito ang limang wika—Spanish, Vietnamese, Japanese, Korean, at Mandarin Chinese. Hindi translated UI buttons. Buong native localization. Mga podcast na parang ginawa para sa bawat market.
Limang wika sa 48 oras — parang may team akong inupahan o nagpuyat. Hindi naman.
Nagbigay ako kay Claude Code ng high-level direction. Siya ang sumulat ng planning documents, tapos in-execute niya—madalas na nagpapatakbo ng parallel agents sa iba't ibang files nang sabay-sabay.
---
Ang Sikreto: Magplano Nang Isang Beses, Mag-execute Nang Mabilis
Ito ang interesting part: hindi ako ang sumulat ng planning documents. Si Claude Code — sa gabay ko.
Inilarawan ko kung ano ang gusto ko: "Gumawa ng localization style guide na nagpapaliwanag kung paano natural na mag-translate, hindi literal. Isama ang mga halimbawa para sa Spanish, Vietnamese, Japanese, Korean, at Chinese. Takpan ang formality levels at cultural context."
Gumawa si Claude Code ng 1,000+ linya na style guide, isang comprehensive checklist, at isang backend pipeline playbook. Tapos sinunod niya ang sarili niyang mga plano para i-execute ang trabaho.
1. Ang Style Guide
Hindi translation glossary—isang philosophy document. Ipinapaliwanag nito *kung paano* mag-localize, na may before/after examples para sa bawat wika.
Halimbawang entry para sa Spanish:
| English | Literal (Mali) | Natural (Tama) |
|---------|-----------------|-----------------|
| "Ideas, Produced" | "Ideas, Producidas" | "De la Idea, al Podcast" |
| "Researched, Not Recycled" | "Investigado, No Reciclado" | "Contenido Original, Sin Copiar" |
| "You Direct" | "Tú Diriges" | "Tú Decides" |
Ang mga literal translations ay grammatically correct pero parang Google Translate ang tunog. Ang mga natural versions ay nakukuha ang *intensyon*—iyon ang talagang isusulat ng Spanish-speaking marketer.
Tinatakpan ng guide ang formality levels (gumagamit ang Japanese ng です/ます form, gumagamit ang Korean ng 합쇼체), cultural context, at mga karaniwang pagkakamaling dapat iwasan. Kapag nag-translate si Claude Code, automatic niyang sinusunod ang mga prinsipyong ito—ang mga isinulat niya—.
2. Ang Localization Checklist
Isang comprehensive checklist ng bawat file na kailangang baguhin para sa bagong wika:
Required (kailangan):
- Frontend: `messages/{locale}.json` (~2,200 keys)
- Backend: `locales/{locale}.json` (~82 keys)
- Language Utils: 3 functions sa `language_utils.py`
- Speech Generation: 1 function sa `gemini_voice_instructions.py`
- Voice Preview: 7 localized sentences
- Content Moderation: Keywords + prompts
- Smoke Tests: Idagdag sa test matrix
Optional (pinapagandang quality):
- Host/audience profiles bawat style
- Localized prompt templates
- Voice instructions bawat style
Tinitiyak ng checklist na ito na walang namimiss. Sistematiko ang pagtatrabaho ni Claude Code dito.
3. Ang Backend Playbook
Idino-document kung paano humahawak ng wika ang podcast generation:
- Paano gumagamit ang outline generation ng Gemini 3 Flash na may language instructions
- Paano gumagamit ang dialogue generation ng Claude Sonnet 4.5 na may cultural context
- Paano gumagamit ang speech generation ng Gemini TTS na may language-specific guidance
Sa tatlong documents na ito, nagiging mechanical na ang pagdagdag ng bagong wika. Binabasa ni Claude Code ang checklist, sinusunod ang style guide, at ina-update ang files ayon sa playbook.
---
Ang Problema sa "I-translate Na Lang"
Aaminin ko, ang unang instinct ko ay patakbuhin lang ang lahat sa translation API at tapos na. "Create Podcast" ay magiging "Crear Podcast" at lahat ay magpapatuloy, di ba?
Gumagawa ng basura ang approach na iyon. Natutuhan ko ito nang mahirapan dahil lumaki ako sa pagitan ng Vietnamese at English — pinapatay ng literal translation ang kaluluwa ng sinusubukan mong sabihin.
Pinapanatili ng translation ang mga salita, pinapanatili ng localization ang kahulugan. Naka-encode ang pagkakaibang ito sa style guide.
| Wika | Literal Translation | Native Localization |
|----------|--------------------|--------------------|
| Vietnamese | "Ý tưởng, Được Sản Xuất" | "Từ Ý Tưởng → Đến Podcast" |
| Japanese | "アイデア、制作された" | "アイデアを、カタチに" (Mga ideya sa hugis) |
| Korean | "아이디어, 제작됨" | "아이디어를, 현실로" (Mga ideya sa realidad) |
| Spanish | "Ideas, Producidas" | "De la Idea, al Podcast" |
| Chinese | "想法,已制作" | "从想法,到播客" |
Bawat wika ay nangailangan ng ganitong antas ng pansin. Bawat button, bawat error message, bawat piraso ng marketing copy.
At iyon lang ang UI. Mas mahirap ang actual podcast generation.
---
Kailangan ng Native Hosts ng mga Podcast
Ito ang isang bagay na hindi ko inasahan: mahalaga ang mga pangalan ng host. Sobra.
Sa English version, ang default hosts ay Alex at Maya. Generic, nakakalimutan, gumagana naman.
Pero kung nagge-generate ka ng Vietnamese podcast at Alex at Maya pa rin ang pangalan ng hosts? Mali ang tunog. Bilang isang Vietnamese, masasabi ko — parang masamang dub ng American show ang tunog :D
Kaya bawat wika ay may native host names:
| Wika | Host 1 | Host 2 |
|----------|--------|--------|
| English | Alex | Maya |
| Vietnamese | Minh | Lan |
| Japanese | 太郎 (Tarō) | 花子 (Hanako) |
| Korean | 민준 (Minjun) | 수진 (Sujin) |
| Spanish | Carlos | María |
| Chinese | 明辉 | 雅琴 |
Pero hindi sapat ang mga pangalan lang. Kailangan ng AI na maintindihan ang cultural context.
Iba ang conversational norms ng tech podcast sa Japan kaysa sa US. Ang antas ng formality, ang paraan ng pag-express ng disagreement, ang rhythm ng back-and-forth—iba ang lahat.
Kaya gumawa ako ng language-specific AI prompt instructions. Ang Vietnamese instructions ay nagse-specify ng "bạn" (informal pero magalang na "ikaw"). Ang Japanese instructions ay nagse-specify ng です/ます form (magalang pero friendly). Ang Korean instructions ay nagse-specify ng 합쇼체 (formal polite).
Ito ang uri ng bagay na hindi mo ma-automate. Mula sa mga taon ko ng pagtatrabaho sa Asia-Pacific markets, intuitive ko ang mga communication patterns na ito — ang trick ay ang pag-encode ng cultural knowledge sa mga prompts na masusunod ng AI. Pero pagka-encode na, consistent na ina-apply ni Claude Code ang mga ito sa libu-libong strings.
---
Ang AI Model Selection na Talagang Gumagana
Dito na nagiging interesting mula sa technical perspective.
Gumagamit ang DIALØGUE ng tatlong magkakaibang AI models para sa tatlong magkakaibang tasks. Hindi dahil gusto ko ng complexity, kundi dahil bawat model ay talagang mas magaling sa specific job nito.
Task 1: Research & Outline → Gemini 3 Flash
Kapag nag-enter ang user ng topic, ang unang hakbang ay research. Kailangan ng AI na:
1. Maghanap sa web para sa kasalukuyang information
2. I-synthesize ang mga natuklasan sa isang structured outline
3. Mag-cite ng sources nang maayos
Nangangailangan ito ng grounding (real-time web search) AT structured output (JSON schema compliance).
Ito ang problema: karamihan ng mga models ay hindi kaya pareho nang sabay. Sinusuportahan ng Gemini 2.5 Flash ang grounding. Sinusuportahan nito ang structured output. Pero hindi sabay. Kailangan mong pumili ng isa.
Gemini 3 Flash Preview ang tanging model na nakita kong sinusuportahan ang parehong features nang sabay. Kaya ito ang humahawak ng outline generation.
```python
GEMINI_MODEL = "gemini-3-flash-preview"
# Key capability:
GEMINI_MODEL_CONFIGS = {
"gemini-3-flash-preview": {
"supports_grounding": True,
"supports_structured_output": True,
"supports_grounding_with_structured_output": True, # Ito ang susi
}
}
```
Bumabalik ang outline sa loob ng mga 60 segundo na may totoong sources, maayos na structured.
Task 2: Dialogue Generation → Claude Sonnet 4.5
Pagka-approve ng user ng outline, sinusulat ng AI ang buong script—bawat salitang sasabihin ng parehong hosts.
Ito ay creative writing. Kailangan nito ng personality, natural na rhythm, ang pakiramdam ng totoong conversation.
Sinubukan ko ito sa maraming models. Consistent na mas human ang tunog ng dialogue ni Claude. Authentic ang back-and-forth. Natural na nag-iinterrupt ang mga hosts sa isa't isa. Nagbubuo sila sa mga punto ng isa't isa.
Subjective ito, pero pagkatapos mag-generate ng daan-daang test podcasts, kapansin-pansin ang pagkakaiba. Claude Sonnet 4.5 ang humahawak ng dialogue generation.
```python
ANTHROPIC_MODEL = "claude-sonnet-4-5-20250929"
```
Task 3: Audio Generation → Gemini 2.5 Flash TTS
Sa wakas, kailangang maging audio ang script. Dalawang boses, tamang pacing, emotional expression.
Nag-aalok ang Gemini 2.5 Flash TTS ng 30 distinct voices na may multi-speaker support. Puwede mong magkaroon ng Charon (informative, lalaki) at Kore (firm, babae) sa parehong audio file, natural na nagpapalit sa pagitan ng mga speakers.
Sapat na ang quality kaya madalas nagtanong ang mga users kung totoong voice actors ba ito.
```python
# Multi-speaker synthesis gamit ang Gemini TTS
response = client.models.generate_content(
model="gemini-2.5-flash-preview-tts",
contents=transcript,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=speaker_configs
)
)
)
)
```
Ang Pipeline
Kaya ang buong flow ay:
```
User Input
↓
[Gemini 3 Flash] Research + Structured Outline (~60 sec)
↓
User Review & Feedback
↓
[Claude Sonnet 4.5] Buong Dialogue Script (~2-3 min)
↓
User Review & Edit
↓
[Gemini 2.5 Flash TTS] Multi-speaker Audio (~3-5 min)
↓
Natapos na Podcast
```
Bawat model ay gumagawa ng kung saan ito pinakamahusay. Ang kabuuang generation time ay mga 8-10 minuto para sa isang 15 - 30 minutong podcast.
---
Isang Feature na Nakasorpresa sa Akin
Humingi ang mga users ng isang bagay na hindi ko naisip: pag-generate ng podcasts sa ibang wika kaysa sa UI nila.
Maaaring komportable ang isang Vietnamese user na nag-navigate sa app sa Vietnamese pero gusto niyang gumawa ng English podcast para sa international audience. O maaaring gusto ng isang Spanish-speaking marketer na subukan ang content sa Japanese.
Kaya nagdagdag ako ng podcast language selector. Puwedeng naka-English ang UI mo habang nagge-generate ka ng podcast sa Mandarin. Magkakaroon ng Chinese names ang hosts (明辉 at 雅琴), susunod ang dialogue sa Chinese conversational patterns, at gagamit ng angkop na voices ang audio.
Maliit na feature, pero dramatikong pinalawak ang puwedeng gawin ng mga users.
---
Parallel Agents: Ang Force Multiplier
Ang totoong bilis ay nanggaling sa parallel agents. Tahasang binanggit ito ng checklist:
> "Magpatakbo ng parallel agents para sa backend files - Mas maliit ang backend files at puwedeng i-process nang sabay-sabay (language_utils.py, content_moderation.py, gemini_voice_instructions.py, locales/{locale}.json)."
Kapag sinabi kong "Magdagdag ng Korean support," magdi-dispatch si Claude Code ng maraming agents:
- Isang agent na nag-update ng frontend translation file
- Isa pang agent na nagdadagdag ng Korean cases sa `language_utils.py`
- Isa pang nag-update ng `gemini_voice_instructions.py`
- Isa pang nagdadagdag ng Korean sa `content_moderation.py`
Lahat tumatakbo nang sabay-sabay. Pagkatapos, nime-merge ni Claude Code ang mga pagbabago at pinapatakbo ang mga tests.
Kaya pinaghihiwalay ng checklist ang "Required" files mula sa "Optional" files—para malaman ni Claude Code kung ano ang puwedeng i-parallelize versus kung ano ang puwedeng maghintay.
Para sa frontend translation file (~2,200 keys), nagse-specify ang checklist ng chunking strategy:
- Chunk 1: `common`, `nav`, `bottomNav` (~110 keys)
- Chunk 2: `homepage`, `auth` (~180 keys)
- Chunk 3: `dashboard`, `create` (~330 keys)
- At iba pa...
Pinipigilan nito ang token limit issues at pinapayagan si Claude Code na mag-translate namespace by namespace, sinusuri ang bawat isa laban sa style guide.
Ang saklaw:
- 5 wika ang idinagdag
- ~2,500 translation strings kabuuan bawat wika
- 10+ AI prompt templates bawat wika
- 1 demo podcast na naggenerate bawat wika
- Maraming parallel agents bawat wika
Ang key insight: hindi ako sumulat ng code. Hindi ako sumulat ng plano. Nagbigay ako ng direksyon, sinuri ang output, at hinayaan si Claude Code na hawakan ang natitira — madalas nang sabay-sabay. Nakakamangha pa rin ito sa akin :P
---
Ano ang Susunod
Ang anim na wika ay sumasaklaw sa halos 2 bilyong potensyal na users. Malaking reach iyon.
Pero iniisip ko na kung ano ang kulang (hindi tumitigil ang marketer sa akin):
1. Arabic - Kumplikado ang right-to-left layout support
2. Hindi - Malaking market, ibang script
3. Portuguese - Ang Brazil ay napakalaking podcast market
4. French - European expansion
5. Tagalog - Malakas na Filipino creator community
Bawat isa ay nangangailangan ng parehong antas ng pag-aalaga. Native localization, hindi translation. Cultural prompts, hindi kinopyang templates. (Posible lang ito dahil binuo ko ulit ang buong app sa 14 na araw na may malinis na architecture.)
Ang magandang balita: magagamit ulit ang planning documents. Dapat mas mabilis pa ang pagdagdag ng susunod na wika. At ang localization ay magkakaroon ng carry over sa native iOS app na ginagawa ko ngayon — lahat ng 7 wika, parehong Supabase backend.
---
Subukan Mo
Talagang proud ako sa kung paano ito lumabas — lalo na ang Vietnamese localization. Ang marinig ang podcast na parang ginawa para sa Vietnamese audience, hindi translated sa kanila, tinamaan ako sa paraang hindi ko inaasahan.
Sinusuportahan na ngayon ng DIALØGUE ang:
- English - Ang original
- Vietnamese - Từ Ý Tưởng → Đến Podcast
- Japanese - アイデアを、カタチに
- Korean - 아이디어를, 현실로
- Spanish - De la Idea, al Podcast
- Chinese - 从想法,到播客
Gumawa ng podcast sa wika mo →
Susunod ang UI sa napili mong preference. At tandaan—puwede kang mag-generate ng podcasts sa kahit alin sa mga wikang ito anuman ang UI setting mo.
May 2 libreng podcasts ang mga bagong users para subukan ito.
---
Ang mga Takeaways
Pagbalik-tanaw dito, ang pinakanakasorpresa sa akin ay kung gaano kahalaga ang advertising background ko. Mga taon ng pag-adapt ng campaigns sa mga Asian markets ang nagturo sa akin na ang localization ay hindi lang tungkol sa mga salita — tungkol ito sa cultural intuition. Hindi ko inaasahan na iyon ang magiging pinaka-valuable na skill na nadala ko sa isang AI coding project.
Para sa mga builders na gumagamit ng AI coding assistants:
1. Mag-direct, huwag magsulat. Hindi ako ang sumulat ng planning docs — inilalarawan ko kung ano ang gusto ko at gumawa si Claude Code. Tapos sinunod niya ang sarili niyang mga plano. Kakaiba ang pakiramdam nito sa simula, parang nagde-delegate sa taong nagsusulat din ng sarili niyang brief. Pero gumagana ito.
2. Nagbibigay ng scale ang structure. Style guides, checklists, playbooks — hindi na ito para lang sa mga tao. Sa tingin ko ito ang pinakamalaking unlock: i-structure ang requirements mo para ma-execute ng AI agent nang sistematiko. (Sa wakas napakinabangan ang taon-taon kong pagsusulat ng marketing briefs sa hindi inaasahang paraan.)
3. I-match ang model sa task. Maaaring mali ako, pero naniniwala ako na walang iisang model na pinakamahusay sa lahat. Para sa DIALØGUE:
- Gemini 3 Flash para sa grounded, structured research
- Claude Sonnet 4.5 para sa natural dialogue
- Gemini 2.5 Flash TTS para sa multi-speaker audio
4. Mag-localize, huwag mag-translate. Mararamdaman ng users mo ang pagkakaiba. Hindi ko sapat na maidiin ito — bilang taong namuhay sa tatlong bansa at nagtrabaho sa isang dosenang markets, nakita ko kung ano ang ginagawa ng lazy translation sa isang product. I-encode ang cultural knowledge sa mga prompts mo at hayaan ang AI na i-apply ito nang consistent.
Iyon na muna mula sa akin dito. Kung nagbubuo ka ng isang bagay na multilingual — o iniisip mo pa lang — gusto kong marinig kung paano mo ina-approach ang localization. Gumagamit ka ba ng AI para dito? Pupunta ka sa traditional agency route? Sang-ayon ka ba na cultural context ang mahirap na bahagi, hindi ang translation mismo? Ipaalam mo sa akin.
Maraming salamat,
Chandler





