Skip to main content
LINE / Airbnb / Change.org / KakaoTalk

Konsultasyon sa Internasyonalisasyon: Ayusin ang Nasira, Planuhin ang Susunod

Alam mo nang mahirap ang i18n. Nakita ko na ang mga sintomas: mga RTL layout na gumuho, German text na umaapaw sa mga button, API response na maling wika, at mga pagsasaling nawawala sa sync ilang linggo matapos mag-launch. Hindi ako nagbebenta ng mahiwagang solusyon. Tinutulungan kitang ayusin ang partikular na gulo ng team mo at bumuo ng mga sistemang hindi na masisira sa parehong paraan.

"Dapat Pinlano Natin Ito Nang Mas Maaga"

Ang Buwis sa Arkitektura na Binabayaran Mo Ngayon

Naglunsad ka sa English. Gumana ito. Tapos nagdagdag ka ng French "para lang sa landing page." Ngayon, narito ka dahil:

Ang iyong codebase ay may mga lang= check na nakakalat sa 47 file

Ang mga product manager ay nagtatanong ng "puwede ba nating i-A/B test ang copy?" at sinasabi ng engineering na "hindi puwede kung walang rewrite"

Mayroon kang tatlong magkakaibang daloy ng trabaho sa pagsasalin at wala sa mga iyon ang gumaganang maayos

Mga nakita kong nasira:

  • Mga team na gumugugol ng 6+ buwan sa pag-retrofit ng i18n sa isang Next.js app dahil naka-hardcode ang mga string sa mga component
  • Mga translation file na nawawala sa sync dahil hindi alam ng mga developer kung aling file ang dapat i-update
  • Mga panahon ng "localization freeze" bago mag-release dahil walang nagtitiwala sa translation pipeline
  • Pagtutol sa pagbabago ng anumang naisaling nilalaman dahil sobrang hirap ng workflow

Mga tinutulungan ko:

  • Mga estratehiya sa refactoring na nagbibigay-daan sa unti-unting pag-adopt ng i18n (hindi ko hinihingi na "itigil ang lahat at isulat muli")
  • Disenyo ng proseso para mapanatiling naka-sync ang mga pagsasalin nang hindi hinaharangan ang development
  • Mga pagsusuri ng arkitektura para matukoy kung saan masisira ang kasalukuyan mong approach sa 10+ na wika

Ang i18n ay arkitektura, hindi feature. Ang pagdagdag nito sa huli ay parang magpasya na kailangan ng bahay mo ng basement matapos mo na itong itayo.

Tinutulungan kita na hukayin ang basement na iyon—o magdesisyon kung talagang kailangan mo ba.

Sinisira ng RTL ang Lahat

Hindi Idinisenyo ang UI Mo para sa Arabic, Hebrew, o Urdu

Pinalitan mo ang dir="rtl" at napanood mong gumuho ang layout mo:

Bumubukas ang mga dropdown sa maling direksyon
Nakaturo ang mga icon sa maling direksyon
Bumabagsak ang mga layout ng Flexbox o lumilikha ng kakaibang pagpapatong-patong
Lumalabas ang mga tooltip sa labas ng screen
Ganap na binabalewala ng mga lumulutang na elemento ang direksyon ng text

Ang nakita ko:

  • Mga design system na may 200+ na bahagi kung saan 12 lamang ang maayos na humahawak ng RTL
  • Mga team na gumagamit ng float: left sa halip na logical properties, na lumilikha ng mga RTL bug sa bawat bagong feature
  • Mga popover at modal na nangangailangan ng component-specific na RTL override
  • Mga framework na nag-aangking may "suporta sa RTL" pero binabaligtad lamang ang direksyon ng layout nang hindi inaayos ang lohika ng paglalagay

Mga tinutulungan ko:

  • Paglipat ng CSS logical properties (margin-inline-start sa halip na margin-left)
  • Mga design system audit para mahanap ang mga RTL landmine bago maipadala
  • Framework-specific na gabay (Tailwind, shadcn, MUI) para sa RTL-first na styling

Hindi sustainable ang manu-manong pag-aayos ng mga RTL bug sa bawat bahagi. Ginagawa kong sistematiko ang RTL support, hindi isang palaging firefight.

"Sinira ng Tekstong Aleman ang Aming mga Button"

UI na Hindi Idinisenyo para sa Pagsasalin

Kasya ang English. Hindi kasya ang German. Inaasahan ng disenyo mo:

Ang mga label ng button ay humigit-kumulang 10 characterAng mga username ay kasya sa isang 200px na columnIsang linya lamang ang mga error message

Tapos nagsalin ka sa German, Finnish, o Thai at nadiskubre mo:

Mga button na naputol sa gitna ng salita

Mga table na may horizontal scroll sa bawat row

Text na nagba-wrap sa mga hindi mababasang bloke

Napuputol ang tekstong hindi Latin dahil may nakapirming lapad ang mga container

Mga tinutulungan ko:

  • Mga elastic na pattern ng UI na umaayon sa haba ng nilalaman
  • Pagpaplano ng budget ng character (ang German ay lumalawak nang 30%, ang Thai ay walang espasyo)
  • Mga sistema ng tipograpiya na humahawak sa CJK, Arabic, at Devanagari nang walang sira

Tinutulungan kitang bumuo ng UI na kayang humawak ng pagsasalin bago ka pa magbayad para sa 10,000 salitang hindi magkasya.

Hindi mo kailangan ng lektyur kung bakit mahalaga ang i18n. Kailangan mo ng taong nag-debug na ng RTL popovers nang 2 AM, nakipagtalo sa product tungkol sa character budget, at nagdisenyo ng mga translation pipeline na talagang gumagana.

Ang mga Gotcha na Walang Nagbabala sa Iyo

Mga Kuwento mula sa mga Team na Naranasan Na Ito

Hindi ito teoretikal. Ito ang mga bagay na nasira sa produksyon:

Impiyerno ng Pluralization

English: "1 item" vs "2 items"

Polish: "1 przedmiot" / "2 przedmioty" / "5 przedmiotów" (3 plural forms)

Arabic: 6 plural forms

Ang iyong count === 1 ? 'item' : 'items' logic ay hindi na gumagana.

Kaguluhan sa Petsa/Oras

Ni-format mo ang mga petsa gamit ang toLocaleDateString(). Pagkatapos, nakita ng mga gumagamit sa Japan ang "2025年2月9日" sa mga CSV export mo at nagka-problema ang Excel.

Hindi Magkatugma ang Wika ng API

French ang hinihiling ng frontend mo. English naman ang ibinibalik ng API mo dahil hindi dala ng auth token ang locale. Kaya halo-halo na ang wika sa UI mo at akala ng mga gumagamit na bug ito.

Pseudo-Locale Testing

Hindi mo sinubukan gamit ang [Ţĥîś îś ţéśţ ţéẋţ ţĥàţ éẋþàñðś 30%] bago pumunta sa production. Ngayon hindi na magamit ang Polish site mo.

Ang Hindi Nakikitang Pagpapalagay

Akala mo ang mga string lamang ang kailangang isalin. Pagkatapos ay nasagasaan mo ang mga petsa, numero, currency, pag-sort, paghahanap—lahat ay may locale-specific na behavior.

Mga tinutulungan ko:

  • Implementasyon ng ICU MessageFormat (sumusuporta sa mga plural, kasarian, konteksto)
  • Mga pattern ng API i18n (negosasyon ng wika, mga fallback strategy)
  • Mga proseso ng QA na nakakahuli ng mga isyung ito bago pa ang mga translation agency

Ang daloy ng trabaho ang pinakamahirap

Paano Mo Papanatilihing Naka-sync ang 8 Wika Kung Araw-araw Kang Nagre-release?

Naunawaan mo na ang tech. Ngayon, natigil ka sa proseso:

1

Nag-merge ang mga developer ng code na may bagong English string. Nahuhuli ang mga pagsasalin nang 2 linggo. Nakikita ng mga gumagamit ang kalahating naisalin na UI.

2

Hindi mo alam kung aling mga string ang ligtas na burahin (ginagamit ba ang mga ito? naisalin na ba? nasa proseso pa ba sa isang ahensya?)

3

Gusto ng Product na i-update ang copy. Walang nakakaalam kung masisira ba ang 12 na wika kapag pinalitan ang "Submit" ng "Send".

4

Ilang linggo nang hindi naka-sync sa production ang mga translation file

Mga tanong na tinatanong sa akin ng mga team:

"Dapat bang ibalik ng API natin ang naisaling nilalaman o hayaan ang frontend na hawakan ito?"
"Paano natin ibe-version ang mga pagsasalin?"
"Ano ang source of truth: Figma, ang codebase, o ang translation tool?"
"Paano natin mapipigilan ang mga developer na mag-ship ng mga feature na English lamang?"

Mga nakita kong nasira:

  • Ang mga translation file na naka-check in sa git ay lumalayo sa mga production string
  • Mga babalang "Huwag galawin ang Spanish file" dahil walang nakakaalam kung ano ang ligtas na baguhin
  • Mga feature na inilunsad sa Ingles, tapos naisalin 6 buwan pagkatapos (kung naisalin man)

Mga tinutulungan ko:

  • Disenyo ng translation pipeline (kung kailan gagamitin ang mga i18n library, TMS, o AI)
  • Mga Git workflow para mapanatiling naka-sync ang mga source string at pagsasalin
  • Automation na nagba-block ng mga PR kapag ang mga bagong string ay hindi naka-mark para sa pagsasalin

Kayang solusyunan ang tech. Ang workflow ang hadlang. Nagdidisenyo ako ng mga workflow na hindi nangangailangan ng matinding pagsisikap para mapanatili.

Mga Team na Nakatrabaho Ko

Mga Global na Produkto, Rehiyonal na Kadalubhasaan

Logo ng LINE (Japan, Taiwan, Thailand)

LINE (Japan, Taiwan, Thailand)

Plataporma ng pagmemensahe na tumatakbo sa 3 pangunahing merkado sa Silangang Asya. Nagtrabaho sa mga hamong kaugnay ng paghawak ng mga karakter na CJK, integrasyon sa ekosistema ng plataporma, at magkakaibang inaasahan sa karanasan ng gumagamit sa Japan, Taiwan, at Thailand.

Logo ng KakaoTalk (South Korea)

KakaoTalk (South Korea)

Nangingibabaw na messaging platform sa Korea. Tinugunan ang mga tiyak na pangangailangan ng produkto sa merkado ng Korea, kabilang ang mga inaasahan sa pormalidad ng wika sa UI at mga pangangailangan sa integrasyon ng platform.

Logo ng Change.org (196 countries, 20+ priority languages)

Change.org (196 countries, 20+ priority languages)

Global petition platform kung saan parehong mahalaga ang bilis at kalidad ng nilalaman. Tumulong sa pag-navigate ng translation workflow para sa user-generated na politikal/sosyal na nilalaman sa iba't ibang merkado.

Logo ng Airbnb (220+ countries, 60+ languages)

Airbnb (220+ countries, 60+ languages)

Global na marketplace na may kumplikadong pangangailangan sa i18n. Nagkonsulta ako sa mga hamon sa trust at safety sa maraming wika at sa kultural na pag-aangkop ng mga konsepto ng platform sa iba't ibang merkado.

Logo ng Intercom (30+ languages, global B2B SaaS)

Intercom (30+ languages, global B2B SaaS)

Plataporma ng komunikasyon sa customer na naglilingkod sa mga kliyenteng enterprise ng global. Nagtrabaho sa internationalization ng produkto para sa real-time na support tooling at lokalisasyon ng knowledge base.

Logo ng Lilith Games (China, Japan, Korea, US, EU)

Lilith Games (China, Japan, Korea, US, EU)

Publisher ng mobile game na may mga titulo na ipinamamahagi sa buong mundo. Tinugunan ang mga hamon na tiyak sa merkado tungkol sa lokalisasyon ng nilalaman at mga kinakailangan ng rehiyonal na plataporma.

Mga Merkado kung Saan Ako Naglunsad:

Silangang Asya (Japan, Korea, China):

CJK typography, integrasyon sa platform ecosystem, suporta sa vertical text

Timog-Silangang Asya (Thailand, Vietnam, Indonesia):

Suporta sa multi-script, mga inaasahan ng gumagamit na mobile-first

MENA (mga rehiyong nagsasalita ng Arabic):

Mga kinakailangan sa RTL layout, pormal vs. kolokyal na mga inaasahan sa wika, kultural na adaptasyon ng nilalaman

Europa:

24 opisyal na wika, paglulunsad ng produkto sa maraming bansa

Mga Amerika:

Mga regional na pagkakaiba-iba ng wika (LATAM Spanish vs Spain, Brazilian Portuguese), mga bilingual na merkado

Nakita ko na kung ano ang gumagana at kung ano ang nabibigo sa mga merkadong ito—hindi mula sa teorya, kundi mula sa paghahatid ng mga produktong inaasahan ng mga tunay na gumagamit.

Ayusin Natin ang Nasira

Hindi mo kailangan ng lektyur kung bakit mahalaga ang i18n. Kailangan mo ng taong nag-debug na ng RTL popovers nang 2 AM, nakipagtalo sa product tungkol sa character budget, at nagdisenyo ng mga translation pipeline na talagang gumagana.

Pagsusuri sa Arkitektura at Estratehiya (1-2 linggo):

Sasabihin ko sa iyo kung ano ang masisira kapag nagdagdag ka ng susunod mong 3 wika, at kung magkano ang gastos para ayusin ito

Suporta sa Paglulunsad sa Merkado (4-8 linggo):

Naglulunsad ka sa Japan/MENA/EU at kailangan mo ng mga ekspertong nakagawa na nito dati

Patuloy na Pakikipagtulungan:

Naka-embed na consulting habang nagsu-scale ka mula 2 wika patungong 20

Hindi ako gumagawa ng teorya. Gumagawa ako ng triage, roadmap, at shipping.