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

Консултация по интернационализация: Отстранете проблемите, планирайте следващите стъпки.

Вече знаете, че интернационализацията е трудна. Виждал съм симптомите: RTL оформления, които се разпадат, немски текст, който прелива от бутоните, API отговори на грешен език и преводи, които се разсинхронизират седмици след пускането. Не продавам чудодейни решения. Помагам ви да разплетете конкретната бъркотия, в която се е забил екипът ви — и да изградите системи, които няма да се счупят по същия начин два пъти.

„Трябваше да планираме това по-рано"

Архитектурният данък, който плащате сега

Стартирахте на английски. Работеше. После добавихте френски „само за целевата страница". Сега сте тук, защото:

Вашата кодова база има проверки lang=, разпръснати в 47 файла

Продуктовите мениджъри питат: „Можем ли да направим A/B тест на текста?", а инженерният екип отговаря: „Не и без пренаписване."

Имате три различни процеса за превод и нито един не работи надеждно

Какво съм виждал да се разваля:

  • Екипи, които прекарват 6+ месеца да внедряват i18n в приложение на Next.js, защото низовете бяха директно заложени в компонентите
  • Файловете за превод се разсинхронизират, тъй като разработчиците не знаят кой файл да актуализират.
  • Периоди на „замразяване на локализацията" преди пускане на нови версии, тъй като никой не се доверява на процеса по превод.
  • Съпротива срещу промяна на каквото и да е преведено съдържание, защото работният процес е толкова тромав.

С какво помагам:

  • Стратегии за рефакториране, които Ви позволяват да въвеждате i18n постепенно (не изисквам „спрете всичко и пренапишете")
  • Проектиране на процес за поддържане на преводите в синхрон, без да се блокира разработката
  • Архитектурни прегледи за установяване къде настоящият Ви подход ще се провали при повече от 10 езика.

i18n е архитектура, не функция. Опитът да го добавите по-късно е като да решите, че къщата Ви се нуждае от мазе, след като вече сте я изградили.

Помагам Ви да изкопаете това мазе — или да решите дали всъщност се нуждаете от такова.

RTL разваля всичко

Вашият UI не беше проектиран за арабски, иврит или урду.

Превключихте dir=„rtl" и оформлението Ви се разпадна:

Падащите менюта се отварят неправилно.
Иконите сочат неправилно.
Оформленията с Flexbox се деформират или създават странни припокривания
Подсказките се показват извън екрана
Плаващите елементи изцяло игнорират посоката на текста

Каквото съм видял:

  • Дизайн системи с над 200 компонента, от които само 12 обработват правилно RTL
  • Екипи, които използват float: left вместо логически свойства и създават RTL бъгове във всяка нова функционалност
  • Изскачащи прозорци и модални прозорци, които изискват специфични RTL корекции за всеки компонент
  • Рамки за разработка, които твърдят, че имат „RTL поддръжка", но само обръщат посоката на оформлението и нарушават логиката за позициониране.

С какво помагам:

  • Миграция към логически свойства на CSS (margin-inline-start вместо margin-left)
  • Одити на дизайн системи за откриване на RTL проблеми преди пускането им
  • Специфични насоки за различни framework-и (Tailwind, shadcn, MUI) за стилизиране с приоритет на RTL

Ръчното поправяне на RTL бъгове във всеки компонент е неподдържаемо. Правя RTL поддръжката систематична, а не постоянно гасене на пожари.

„Немският текст развали бутона ни"

Потребителски интерфейс, който не е проектиран за превод.

Английският пасва. Немският не. Вашият дизайн предполагаше:

Етикетите на бутоните са дълги около 10 знакаПотребителските имена се побират в 200-пикселова колонаСъобщенията за грешка са едноредови.

След това преведохте на немски, фински или тайски и открихте:

Бутони с текст, отрязан по средата на думата

Таблици с хоризонтално превъртане на редовете

Текст, който се пренася в нечетими блокове

Нелатински текст се отрязва, защото контейнерите имат фиксирани ширини

С какво помагам:

  • Еластични UI шаблони, които се адаптират според дължината на съдържанието
  • Планиране на бюджета за знаци (имайки предвид, че немският текст се разширява с 30 %, а тайландският не използва интервали)
  • Типографски системи, които обработват CJK, арабски и деванагари, без да се развалят.

Помагам ви да изградите потребителски интерфейс, който е устойчив на превод — преди да платите за 10,000 думи, които не се побират.

Не Ви трябва лекция защо i18n е важно. Нуждаете се от някого, който е дебъгвал RTL изскачащи прозорци в 2 сутринта, спорил е с продуктовия екип за лимити на знаците и е изграждал процеси за превод, които наистина работят.

Капаните, за които никой не Ви предупреждава

Истории от фронта от екипи, които са минали по този път

Това не са теоретични неща. Това са проблеми, които възникнаха в работна среда:

Адът на множественото число

Английски: „1 елемент" срещу „2 елемента"

Полски: „1 przedmiot" / "2 przedmioty" / „5 przedmiotów" (3 форми за множествено число)

Арабски: 6 форми за множествено число

Вашата логика count === 1 ? 'елемент' : 'елементи' вече не работи.

Хаос с дата/време

Форматирахте датите с toLocaleDateString(). После потребителите в Япония видяха „2025年2月9日" във Вашите CSV експорти и Excel не успя да ги обработи.

Езиково несъответствие в API.

Вашият фронтенд изисква френски език. API връща английски, защото токенът за удостоверяване не съдържа информация за локал. В резултат на това имате потребителски интерфейс със смесени езици и потребителите смятат, че това е грешка.

Тестване с псевдолокал

Не сте тествали с [Ţĥîś îś ţéśţ ţéẋţ ţĥàţ éẋþàñðś 30 %] преди да пуснете в продукция. Сега полският Ви сайт е неизползваем.

Невидимото допускане

Предположихте, че низовете са единственото нещо, което се нуждае от превод. След това се сблъсквате с дати, числа, валути, сортиране, търсене — всичко има специфично поведение според локала.

С какво помагам:

  • Внедряване на ICU MessageFormat (обработва форми за множествено число, род и контекст).
  • Шаблони за i18n на API (договаряне на език, стратегии за заместване).
  • QA процеси, които откриват тези проблеми, преди агенциите за превод да ги засекат.

Работният процес е най-трудната част.

Как поддържате 8 езика синхронизирани, когато пускате нови версии всеки ден?

Разбрахте технологиите. Сега сте затруднени с процеса:

1

Разработчиците сливат код с нови английски низове. Преводите изостават с 2 седмици. Потребителите виждат наполовина преведен потребителски интерфейс.

2

Не знаете кои низове могат безопасно да бъдат изтрити (използват ли се? преведени ли са? обработват ли се от агенция?)

3

Екипът на продукта иска да актуализира текста. Никой не знае дали промяната на „Submit" на „Send" ще създаде проблеми при 12 езика.

4

Файловете за превод не са синхронизирани с продукционната среда със седмици наред.

Въпроси, които екипите ми задават:

„Трябва ли нашият API да връща преведено съдържание или да остави фронтенда да го обработва?"
„Как управляваме версиите на преводите?"
„Кой е основният източник на информация: Figma, кодовата база или инструментът за превод?"
„Как да попречим на разработчиците да пускат функции само на английски език?"

Какво съм виждал да се разваля:

  • Файлове за превод, включени в Git, които се различават от низовете в продукционната среда.
  • Предупреждения „Не пипайте испанския файл", защото никой не знае какво може безопасно да се променя
  • Функциите се стартират първо на английски, след това се превеждат 6 месеца по-късно (ако изобщо).

С какво помагам:

  • Проектиране на процеса за превод (кога да се използват i18n библиотеки, кога да се използва TMS, кога да се използва ИИ)
  • Работни процеси с Git за поддържане на изходните низове и преводите в синхрон.
  • Автоматизация, която блокира PR-и, ако новите низове не са отбелязани за превод.

Технологията е разрешим проблем. Работният процес е пречката. Моите дизайни на работни процеси не изискват героични усилия за поддръжка.

Екипи, с които съм работил

Глобални продукти, регионален опит.

Лого на LINE (Япония, Тайван, Тайланд)

LINE (Япония, Тайван, Тайланд)

Платформа за съобщения, работеща на 3 основни източноазиатски пазара. Работих по предизвикателства, свързани с обработката на CJK знаци, интеграцията с екосистемата на платформата и различията в очакванията за потребителско изживяване между Япония, Тайван и Тайланд.

Лого на KakaoTalk (Южна Корея)

KakaoTalk (Южна Корея)

Водещата платформа за съобщения в Корея. Работих по специфичните изисквания на корейския пазар, включително нивата на формалност в потребителския интерфейс и интеграцията с платформата.

Лого на Change.org (196 държави, повече от 20 приоритетни езика)

Change.org (196 държави, повече от 20 приоритетни езика)

Глобална платформа за петиции, където скоростта и качеството на съдържанието са от значение. Съдействах за оптимизирането на работния процес за превод на политическо и социално съдържание, генерирано от потребители, на различни пазари.

Лого на Airbnb (повече от 220 държави, повече от 60 езика)

Airbnb (повече от 220 държави, повече от 60 езика)

Глобален пазар с сложни изисквания за интернационализация. Консултирах по предизвикателствата около доверието и сигурността на множество езици и културната адаптация на концепциите на платформата в различни пазари.

Лого на Intercom (повече от 30 езика, глобален B2 B SaaS)

Intercom (повече от 30 езика, глобален B2 B SaaS)

Платформа за комуникация с клиенти, обслужваща глобални корпоративни клиенти. Работих по интернационализацията на продукта за инструменти за поддръжка в реално време и локализацията на базата знания.

Лого на Lilith Games (Китай, Япония, Корея, САЩ, ЕС)

Lilith Games (Китай, Япония, Корея, САЩ, ЕС)

Издател на мобилни игри със заглавия, разпространявани по целия свят. Справях се със специфични за пазара предизвикателства, свързани с локализацията на съдържанието и регионалните изисквания на платформите.

Пазари, на които съм стартирал:

Източна Азия (Япония, Корея, Китай):

CJK типография, интеграция с екосистемата на платформата, поддръжка на вертикален текст

Югоизточна Азия (Тайланд, Виетнам, Индонезия):

Поддръжка на множество писмености, очаквания на потребителите, ориентирани към мобилни устройства

MENA (арабоговорящи региони):

Изисквания за оформление отдясно наляво, очаквания за формален или разговорен език, културна адаптация на съдържанието

Европа:

24 официални езика, пускане на продукти в множество държави

Америките:

Регионални езикови вариации (испански в Латинска Америка спрямо Испания, бразилски португалски), двуезични пазари

Видял съм какво работи и какво се проваля на тези пазари — не от теория, а от пускането на продукти, на които разчитат истински потребители.

Нека поправим това, което се разваля.

Не Ви трябва лекция защо i18n е важно. Нуждаете се от някого, който е дебъгвал RTL изскачащи прозорци в 2 сутринта, спорил е с продуктовия екип за лимити на знаците и е изграждал процеси за превод, които наистина работят.

Преглед на архитектурата и стратегията (1-2 седмици):

Казвам Ви какво ще се счупи, когато добавите следващите си 3 езика, и колко ще струва да го поправите

Поддръжка за пускане на пазара (4-8 седмици):

Стартирате в Япония/MENA/EU и се нуждаете от експерти, които са го правили преди.

Постоянно партньорство:

Консултантска подкрепа по време на мащабиране от 2 до 20 езика.

Не се занимавам с теория. Занимавам се с триаж, пътни карти и пускане.