मैंने 48 घंटों में DIALØGUE में 5 भाषाएं जोड़ीं
मैंने planning documents बनाए जिन्होंने Claude Code को localize करना सिखाया — न केवल translate करना — और फिर देखा कि यह 5 languages में parallel में execute हुआ, literal phrases को native-sounding copy में बदलते हुए।
कुछ दिन पहले, एक user ने पूछा क्या DIALØGUE Spanish support करता है।
नहीं करता था।
48 घंटे बाद, यह पाँच languages support करता है — Spanish, Vietnamese, Japanese, Korean, और Mandarin Chinese। Translated UI buttons नहीं। Full native localization। Podcasts जो ऐसे sound करते हैं जैसे हर market के लिए बनाए गए हों।
पाँच languages 48 घंटों में — यह सुनकर लगता है मैंने team hire की या all-nighters खींचे। मैंने नहीं किए।
मैंने Claude Code को high-level direction दिया। इसने planning documents लिखे, फिर उन्हें execute किया — अक्सर अलग-अलग files पर simultaneously parallel agents चलाते हुए।
---
Secret: एक बार Plan करो, Fast Execute करो
यहाँ interesting part है: planning documents मैंने नहीं लिखे। Claude Code ने — मेरी guidance के साथ।
मैंने describe किया कि मैं क्या चाहता था: "एक localization style guide बनाएं जो explain करे कि literally नहीं, naturally कैसे translate करें। Spanish, Vietnamese, Japanese, Korean, और Chinese के लिए examples include करें। Formality levels और cultural context cover करें।"
Claude Code ने एक 1,000+ line style guide, एक comprehensive checklist, और एक backend pipeline playbook produce किया। फिर उसने काम execute करने के लिए अपने plans follow किए।
1. Style Guide
Translation glossary नहीं — एक philosophy document। यह explain करता है *कैसे* localize करें, हर language के लिए before/after examples के साथ।
Spanish के लिए example entry:
| English | Literal (ग़लत) | Natural (सही) |
|---|---|---|
| "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" |
Literal translations grammatically correct हैं लेकिन Google Translate जैसी sound करती हैं। Natural versions *intent* capture करती हैं — वे हैं जो एक Spanish-speaking marketer actually लिखता।
Guide formality levels cover करती है (Japanese में です/ます form use होती है, Korean में 합쇼체), cultural context, बचने के लिए common mistakes। जब Claude Code translate करता है, यह इन principles follow करता है — जो उसने खुद लिखे — automatically।
2. Localization Checklist
हर file का comprehensive checklist जिसे एक नई language के लिए बदलना होगा:
Required (must have):
- Frontend: `messages/{locale}.json` (~2,200 keys)
- Backend: `locales/{locale}.json` (~82 keys)
- Language Utils: `language_utils.py` में 3 functions
- Speech Generation: `gemini_voice_instructions.py` में 1 function
- Voice Preview: 7 localized sentences
- Content Moderation: Keywords + prompts
- Smoke Tests: Test matrix में add करें
Optional (enhanced quality):
- हर style के लिए Host/audience profiles
- Localized prompt templates
- हर style के लिए voice instructions
यह checklist ensure करती है कुछ miss न हो। Claude Code इसे systematically work through करता है।
3. Backend Playbook
Exactly document करता है कि podcast generation language को कैसे handle करती है:
- कैसे outline generation Gemini 3 Flash को language instructions के साथ use करती है
- कैसे dialogue generation Claude Sonnet 4.5 को cultural context के साथ use करती है
- कैसे speech generation Gemini TTS को language-specific guidance के साथ use करती है
इन तीन documents के साथ, एक नई language जोड़ना mechanical हो जाता है। Claude Code checklist पढ़ता है, style guide follow करता है, और playbook के अनुसार files update करता है।
---
"बस Translate करो" के साथ Problem
मुझे स्वीकार करना होगा, मेरी पहली instinct थी बस सब कुछ translation API से run करना और done call करना। "Create Podcast" "Crear Podcast" हो जाए और सब आगे बढ़ें, right?
वह approach garbage create करती है। यह मैंने Vietnamese और English के बीच बड़े होते हुए कठिन तरीक़े से सीखा — literal translation जो आप कहना चाहते हैं उसकी आत्मा को मार देती है।
Translation words preserve करती है, localization meaning preserve करती है। Style guide इस फ़र्क़ को encode करती है।
| Language | Literal Translation | Native Localization |
|---|---|---|
| Vietnamese | "Ý tưởng, Được Sản Xuất" | "Từ Ý Tưởng → Đến Podcast" |
| Japanese | "アイデア、制作された" | "アイデアを、カタチに" (Ideas into form) |
| Korean | "아이디어, 제작됨" | "아이디어를, 현실로" (Ideas into reality) |
| Spanish | "Ideas, Producidas" | "De la Idea, al Podcast" |
| Chinese | "想法,已制作" | "从想法,到播客" |
हर language को इस level of attention की ज़रूरत थी। हर button, हर error message, हर piece of marketing copy।
और यह बस UI है। Actual podcast generation ज़्यादा मुश्किल है।
---
Podcasts को Native Hosts चाहिए
यहाँ एक चीज़ है जो मैंने anticipate नहीं की: host names matter करते हैं। बहुत।
English version में, default hosts Alex और Maya हैं। Generic, forgettable, ठीक काम करता है।
लेकिन अगर आप Vietnamese podcast generate कर रहे हैं और hosts अभी भी Alex और Maya हैं? यह off sound करता है। एक Vietnamese person के रूप में, मैं बता सकता हूँ — यह एक American show की bad dub जैसी sound करती है :D
इसलिए हर language को native host names मिले:
| Language | Host 1 | Host 2 |
|---|---|---|
| English | Alex | Maya |
| Vietnamese | Minh | Lan |
| Japanese | 太郎 (Tarō) | 花子 (Hanako) |
| Korean | 민준 (Minjun) | 수진 (Sujin) |
| Spanish | Carlos | María |
| Chinese | 明辉 | 雅琴 |
लेकिन names अकेले काफ़ी नहीं हैं। AI को cultural context समझना होगा।
Japan में एक tech podcast में US से अलग conversational norms हैं। Formality का level, असहमति express करने का तरीक़ा, back-and-forth की rhythm — सब अलग है।
इसलिए मैंने language-specific AI prompt instructions बनाईं। Vietnamese instructions "bạn" (informal लेकिन respectful "you") specify करती हैं। Japanese instructions です/ます form (polite but friendly) specify करती हैं। Korean instructions 합쇼체 (formal polite) specify करती हैं।
यह वह चीज़ है जिसे आप automate नहीं कर सकते। Asia-Pacific markets में काम करने के अपने सालों से, मैं इन communication patterns को intuitively जानता हूँ — trick थी उस cultural knowledge को prompts में encode करना जिसे AI follow कर सके। लेकिन एक बार encode हो जाने के बाद, Claude Code उन्हें thousands of strings में consistently apply करता है।
---
AI Model Selection जो Actually काम करती है
यहाँ technical perspective से interesting होता है।
DIALØGUE तीन different AI models तीन अलग tasks के लिए use करता है। इसलिए नहीं कि मुझे complexity चाहिए थी, बल्कि इसलिए कि हर model अपने specific job में genuinely better है।
Task 1: Research & Outline → Gemini 3 Flash
जब user topic enter करता है, पहला step research है। AI को:
1. Current information के लिए web search करना है
2. Findings को structured outline में synthesize करना है
3. Sources properly cite करने हैं
इसके लिए grounding (real-time web search) AND structured output (JSON schema compliance) दोनों चाहिए।
यहाँ problem है: ज़्यादातर models दोनों simultaneously नहीं कर सकते। Gemini 2.5 Flash grounding support करता है। Structured output support करता है। लेकिन दोनों together नहीं। आपको एक choose करना होगा।
Gemini 3 Flash Preview एकमात्र model है जो मुझे मिला जो दोनों features एक साथ support करता है। इसलिए यह outline generation handle करता है।
```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, # यही key है
\}
}
```
Outline क़रीब 60 seconds में real sources के साथ, properly structured आती है।
Task 2: Dialogue Generation → Claude Sonnet 4.5
एक बार user outline approve कर देता है, AI पूरी script लिखती है — हर word दोनों hosts बोलेंगे।
यह creative writing है। Personality चाहिए, natural rhythm, real conversation का feel।
मैंने इसे multiple models के साथ test किया। Claude का dialogue consistently ज़्यादा human sound करता है। Back-and-forth authentic लगती है। Hosts naturally एक-दूसरे को interrupt करते हैं। वे एक-दूसरे के points पर build करते हैं।
यह subjective है, लेकिन सैकड़ों test podcasts generate करने के बाद, फ़र्क़ noticeable है। Claude Sonnet 4.5 dialogue generation handle करता है।
```python
ANTHROPIC_MODEL = "claude-sonnet-4-5-20250929"
```
Task 3: Audio Generation → Gemini 2.5 Flash TTS
अंत में, script को audio बनना है। दो voices, proper pacing, emotional expression।
Gemini 2.5 Flash TTS multi-speaker support के साथ 30 distinct voices offer करता है। आपके पास Charon (informative, male) और Kore (firm, female) एक ही audio file में हो सकते हैं, naturally speakers के बीच switching करते हुए।
Quality इतनी अच्छी है कि users अक्सर पूछते हैं कि क्या यह real voice actors हैं।
```python
# Gemini TTS के साथ Multi-speaker synthesis
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
)
)
)
)
```
Pipeline
तो पूरा flow है:
```
User Input
↓
[Gemini 3 Flash] Research + Structured Outline (~60 sec)
↓
User Review & Feedback
↓
[Claude Sonnet 4.5] Full Dialogue Script (~2-3 min)
↓
User Review & Edit
↓
[Gemini 2.5 Flash TTS] Multi-speaker Audio (~3-5 min)
↓
Finished Podcast
```
हर model वह करता है जिसमें वह best है। 15-30 minute podcast के लिए total generation time क़रीब 8-10 मिनट है।
---
एक Feature जिसने मुझे Surprise किया
Users ने कुछ ऐसा माँगा जिसे मैंने consider नहीं किया था: अपने UI से अलग language में podcasts generate करना।
एक Vietnamese user UI को Vietnamese में navigate करने में comfortable हो सकता है लेकिन international audience के लिए English podcast create करना चाहता हो। या एक Spanish-speaking marketer Japanese में content test करना चाहता हो।
इसलिए मैंने एक podcast language selector जोड़ा। आपका UI English में हो सकता है जबकि आप Mandarin में podcast generate करते हैं। Hosts के Chinese names होंगे (明辉 और 雅琴), dialogue Chinese conversational patterns follow करेगा, और audio appropriate voices use करेगी।
छोटा feature। लेकिन users जो कर सकते हैं उसे dramatically expand करता है।
---
Parallel Agents: Force Multiplier
असली speed parallel agents से आई। Checklist इसे explicitly note करती है:
> "Backend files के लिए parallel agents run करें - Backend files छोटी हैं और parallel में process हो सकती हैं (language_utils.py, content_moderation.py, gemini_voice_instructions.py, locales/{locale}.json)।"
जब मैंने कहा "Korean support add करो," Claude Code multiple agents spawn करता:
- एक agent frontend translation file update करता
- दूसरा `language_utils.py` में Korean cases add करता
- तीसरा `gemini_voice_instructions.py` update करता
- चौथा Korean को `content_moderation.py` में add करता
सब एक साथ running। जब वे finish होते, Claude Code changes merge करता और tests चलाता।
यही कारण है कि checklist "Required" files को "Optional" files से distinguish करती है — ताकि Claude Code जाने कि क्या parallelize करना है बनाम क्या इंतज़ार कर सकता है।
Frontend translation file (~2,200 keys) के लिए, checklist एक chunking strategy specify करती है:
- Chunk 1: `common`, `nav`, `bottomNav` (~110 keys)
- Chunk 2: `homepage`, `auth` (~180 keys)
- Chunk 3: `dashboard`, `create` (~330 keys)
- और आगे...
यह token limit issues prevent करता है और Claude Code को namespace by namespace translate करने देता है, हर एक को style guide के ख़िलाफ़ review करते हुए।
Scope:
- 5 languages add की गईं
- ~2,500 translation strings total प्रति language
- 10+ AI prompt templates प्रति language
- 1 demo podcast प्रति language generate हुआ
- Multiple parallel agents प्रति language
Key insight: मैंने code नहीं लिखा। मैंने plans नहीं लिखे। मैंने direction दिया, output review किया, और Claude Code को बाकी handle करने दिया — अक्सर parallel में। यह अभी भी मेरे mind को थोड़ा blow करता है :P
---
आगे क्या है
छह languages क़रीब 2 billion potential users cover करती हैं। यह meaningful reach है।
लेकिन मैं पहले से सोच रहा हूँ कि क्या missing है (मेरे भीतर का marketer कभी रुकता नहीं):
1. Arabic - Right-to-left layout support complex है
2. Hindi - बड़ा market, अलग script
3. Portuguese - Brazil एक massive podcast market है
4. French - European expansion
5. Tagalog - Strong Filipino creator community
हर एक को उसी level of care चाहिए। Native localization, translation नहीं। Cultural prompts, copied templates नहीं। (यह तभी possible था क्योंकि मैंने अभी-अभी 14 दिनों में पूरा app rebuild किया था एक clean architecture के साथ।)
अच्छी ख़बर: planning documents reusable हैं। अगली language जोड़ना और भी fast होनी चाहिए। और localization native iOS app तक carry over होती है जो मैं अभी build कर रहा हूँ — सभी 7 languages, वही Supabase backend।
---
खुद Try करें
मुझे genuinely इस पर proud feel होता है — ख़ासकर Vietnamese localization पर। एक podcast सुनकर जो Vietnamese audience के लिए बनी लगती है, न कि उनके लिए translate हुई, यह मुझे एक तरह से hit करता है जो मैंने expect नहीं किया था।
DIALØGUE अब support करता है:
- English - The original
- Vietnamese - Từ Ý Tưởng → Đến Podcast
- Japanese - アイデアを、カタチに
- Korean - 아이디어를, 현실로
- Spanish - De la Idea, al Podcast
- Chinese - 从想法,到播客
अपनी language में podcast create करें →
UI आपकी chosen preference follow करेगी। और याद रखें — आप UI setting के बावजूद इन किसी भी language में podcasts generate कर सकते हैं।
New users को test करने के लिए 2 free podcasts मिलते हैं।
---
Takeaways
पीछे देखते हुए, जो मुझे सबसे ज़्यादा surprise किया वह था कि मेरा advertising background कितना matter किया। Asian markets में campaigns adapt करने के सालों ने मुझे सिखाया कि localization कभी बस words के बारे में नहीं होती — यह cultural intuition के बारे में होती है। मुझे expect नहीं था कि यह AI coding project में लाने वाली सबसे valuable skill होगी।
AI coding assistants use करने वाले builders के लिए:
1. Direct करो, लिखो मत। मैंने planning docs नहीं लिखे — मैंने describe किया कि मैं क्या चाहता था और Claude Code ने उन्हें produce किया। फिर उसने अपने plans follow किए। यह पहले weird लगा, जैसे किसी को delegate करना जो अपना brief भी खुद लिखे। लेकिन यह काम करता है।
2. Structure scale enable करती है। Style guides, checklists, playbooks — ये सिर्फ़ humans के लिए नहीं हैं। मुझे लगता है यही सबसे बड़ा unlock है: अपनी requirements इस तरह structure करो कि एक AI agent systematically execute कर सके।
3. Model को task से match करो। मैं ग़लत भी हो सकता हूँ, लेकिन मेरा मानना है कि कोई single model अभी तक सब कुछ best नहीं है। DIALØGUE के लिए:
- Gemini 3 Flash grounded, structured research के लिए
- Claude Sonnet 4.5 natural dialogue के लिए
- Gemini 2.5 Flash TTS multi-speaker audio के लिए
4. Localize करो, translate मत। आपके users फ़र्क़ बता सकते हैं। मैं इसे जितना ज़ोर दे सकता हूँ, दूंगा — एक ऐसे इंसान के रूप में जिसने तीन देशों में रहा और एक दर्जन markets में काम किया, मैंने देखा है कि lazy translation एक product के साथ क्या करती है। Cultural knowledge को अपने prompts में encode करो और AI को उसे consistently apply करने दो।
बस मेरी तरफ़ से इस पर इतना। अगर आप कुछ multilingual बना रहे हैं — या इसके बारे में सोच भी रहे हैं — तो मुझे सुनना अच्छा लगेगा कि आप localization को कैसे approach कर रहे हैं। क्या आप इसके लिए AI use कर रहे हैं? Traditional agency route जा रहे हैं? क्या आप agree करते हैं कि cultural context hard part है, translation नहीं? मुझे बताएं।
शुभकामनाओं सहित,
Chandler





