LocaleBro — локалізація Android - і iOS-додатків без зайвої роботи

У рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власної made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected] .

Всім привіт! Мене звуть Євген Ткаченко. Я в IT вже більше 10 років і зараз розробляю в основному під систему Android. Також я програміст-ентузіаст з багатьма ідеями і їх реалізаціями, адже ніщо не може зупинити розробника, особливо коли він хоче створювати :) Сьогодні я хочу розповісти вам про свій продукт LocaleBro . Це веб-платформа для локалізації додатків, заточена під розробників, перекладачів та менеджерів.

Що таке LocaleBro

Мета платформи — оптимізувати процес додавання додаткових мов для вже існуючих або нових додатків під Android і iOS. Детальна інструкція по використанню буде трохи нижче, але коротко все виглядає наступним чином.

У системі є таке поняття, як проект. Грубо кажучи, це додаток або декілька додатків під Android/iOS, містять майже однакові тексти. Приміром, Facebook для Android і Facebook для iOS можна додати в один проект, так як у них тексти практично ідентичні.

Далі весь процес зводиться до наступного:

Бонусом до всього йде можливість автоматичного перекладу всього проекту за допомогою Google Translate. В два кліка можна перевести на будь-яку кількість мов, а потім витратити трохи часу на вичитку і не переводити з нуля.

Просто, швидко і без зайвої роботи. Далі докладніше.

Передісторія

На одному проекті ми зіткнулися з жахливою реальністю перекладу додатку під Android і iOS на 6 мов, і ці рухи мені здалися дикими, особливо коли за вікном 2019 рік.

Основна проблема була в тому, що ми загрузли в нескінченній кількості файлів: перекладачі хотіли отримати тексти з обох платформ в одній Excel-таблиці, у нас на руках були xml і струни, і треба було це якось вирішувати. Якщо вислати на переклад просто 2 файлу, то виникають такі моменти:

1. Android - і iOS-додаток на 90% складаються з однакових фраз і словосполучень, і робити подвійну роботу по переводу нікому не хотілося.

2. Іноді люди не розуміють, що не можна просто так видаляти з файлу що-небудь, змінювати ключі і т. д.
3. XML-формат не особливо зручно змінювати людині, яка не розуміє, що таке tag і розмітка.

Загалом, оптимальністю тут і не пахне. Задалися пошуком платформи.

Які були альтернативи і чому створили свою

На жаль, відповідну платформу для використання під свої потреби не знайшли. Звичайно ж, на ринку є дуже хороші рішення локалізації з великим функціоналом і можливостями, але вони містили лише частина необхідного нам функціоналу або перевищували бюджет. Розглядали всі платформи, включаючи POEditor, Lokalise, Phrase і багато іншого. Не буду розповідати, чому не підійшла кожна з них, просто опишу критерії, під які ми шукали, і як ми їх вирішили у себе на платформі.

Можливість безкоштовного використання . Якщо ти активний розробник, в тебе, швидше за все, є кілька проектів, які ти робиш для себе, а є робітники, які робляться компанією. Всі вони містять різну кількість рядків і несуть різне навантаження на сервіс. Існуючі локализационные платформи мають обмеження по кількості рядків/переказів для користувача, і вписатися в безкоштовний пакет (якщо він є, звичайно) дуже складно. А прайс за використання може бути не таким вже і маленьким.

LocaleBro надає кожному проекту (а не користувачу) свій ліміт, і після реєстрації ви можете створювати скільки завгодно проектів. За замовчуванням надається ліміт на переклад 1000 рядків для кожного з них (іноді є акції, які збільшують цей ліміт, але базова цифра така). Додавши 10 проектів, користувач отримує 10 000 перекладів рядків, а після додавання 100 проектів — 100 000 відповідно. Немало, правда?

На практиці можна додати, наприклад, 4 особистих, які цілком собі живуть безкоштовно з лімітом в 1000 рядків кожен, і один робітник, який стане платним, якщо не поміщається в ліміт.

Автоматичне співставлення тексту між платформами. Зазвичай розробка під Android і iOS йде паралельно. Програмісти рідко синхронізуються між собою: у них свій формат ключів фраз, свій темп створення UI-елементів і т. д. В результаті на виході маємо два різних файлу текстів, різного формату, з різними ключами, але майже однакових по контенту. У більшості локализационных аналогів такі файли вантажаться в два окремих проекту і переклад одного і того ж робиться два рази. Отже, витрачається більше часу і грошей на переклад.

У LocaleBro ми реалізували таке зіставлення при імпорті тексту. Працює вона наступним чином. Імпортуємо два таких файлу:

І отримуємо 6 рядків на переклад замість 12, так як сам контент-то ідентичний.

Після перекладу при експорті ми згенеруємо файли у такому ж форматі і з тими ж ключами. Тобто те, що завантажили, то і отримаємо на виході, тільки вже користувач вибирає потрібну локаль.

Автоматичний переклад тексту. Зараз 2019 рік, і вже щосили працює розпізнавання об'єктів та осіб з фото і відео, йде аналіз текстів і поводжень для націлювання. І все ще існує необхідність ручного переведення простих текстів? Деякі платформи надають автоматичний переклад, але, на жаль, для цього потрібна недешева підписка.

Ми використовуємо Google Translate API, і наша платформа надає безкоштовно 1000 символів автоматичного перекладу. На жаль, ця функція платна з боку API і за більшу кількість тексту необхідно доплачувати.

Редагування текстів. Більшість перекладачів люблять редагувати фрази в таблицях, тому що це просто, вимагає мінімум кліків і переходів, адже всі постійно перед очима.

Ми вивели всі фрази в одну таблицю із зручним пошуком. При бажанні можна залишити тільки 2 локалі на екрані і переглядати оригінал і переклад з попутним його редагуванням після подвійного кліку по тексту. Все просто до неможливості.

Розподіл обов'язків. Деякі компанії створюють один логін та пароль для кількох людей, щоб не платити за додаткових членів команди. Це вносить певний хаос у процес локалізації.

У нашому випадку немає обмежень по кількості людей. Якщо вам треба, щоб працювало 5 осіб з проектом, просто дайте їм доступ. А для збереження цілісності проекту ми виділили 3 варіанти ролей:

  1. Boss — може робити з проектом все: давати доступ будь-якій людині, додавати локалі, додавати/видаляти фрази, додавати/видаляти перекази, імпорт/експорт, перейменовувати, тобто все, аж до повного і безповоротного видалення проекту.
  2. Developer — все те ж саме, але от тільки він не має права видаляти, а також перейменувати або призначати когось босом.
  3. Translator — ця роль дозволяє додавати переклади інших перекладачів. Перекладачеві і не треба нічого видаляти, так як потім можуть виникнути проблеми з кодом у розробника.

Простий старт роботи з платформою. Сюди входить прозорість і мінімум дій для початку використання. На деяких порталах потрібно звернутися до менеджера або заповнити масу інформації, а потім ще довго розбиратися, що ж треба зробити. В онлайні є великий плюс: він виключає надмірні комунікації і бюрократію, а тут якісь зайві дії для використання...

Для реєстрації на LocaleBro потрібен лише email і пароль (або взагалі реєстрація в 1 клік з Facebook/Gmail). Все інше за бажанням і для того, щоб людина бачила, кому дає доступ на проект, а не тільки email-адресу.

Власне, це і є основні пункти, які підштовхнули на створення bro-локалізації.

Як все це працює

Перший крок — реєстрація на платформі. Після цього відразу ж потрапляємо на сторінку, де додаємо наш проект. Як вже було сказано, він і є сутність, яка містить всі наші тексти.

Природно, проект буде порожній, і тут потрібно імпортувати string-файли програм.




Після завантаження файла на сервер ми потрапляємо на сторінку проміжного імпорту, де видно, якісь рядки будуть додані в систему, а які оновлено. У нашому випадку проект порожній і можна ще раз натиснути Import. Вуаля! Тексти з файлів вже у нас в системі.




Наступним кроком буде додавання фраз з iOS і файлу Localizable.strings. Робимо ті ж дії, але тепер вибираємо відповідну платформу.

Після імпорту ми бачимо, що зараз наш проект містить ключі для обох платформ, але зверніть увагу: при цьому кількість рядків у нас 6. LocaleBro автоматично залинковал фрази за змістом, а не за ключем.

Таким чином, перекладачеві не знадобиться перекладати текст кнопки Cancel двічі — один раз для Android і другий для iOS, адже в проекті тепер це одна строчка для обох платформ. Це не тільки економія часу, а й грошей, адже кожен символ на рахунку :)

Після імпорту всіх текстів ми можемо приступити до додавання локалей. Припустимо, нам потрібен німецьку та норвезьку мови. Переходимо до локалям і додаємо їх в проект.



Як бачимо, нічого складного в цьому немає. Але біда в тому, що в наш час робити все вручну якось дико, чи що. І тут нам на допомогу приходить... автопереведення тексту за допомогою Google Translate.

Просто натискаємо кнопку Translate using Google Translate — відкривається вікно з інформацією про поточний стан проекту. І за натисканні на Start Translation ми бачимо повідомлення All Done.




А це значить, що весь проект переведений на 2 додаткових мови практично миттєво.

Так, Google Translate далеко не ідеальний, і всі перекази треба переглядати носія мови, але повірте, це набагато швидше, ніж перекладати все з нуля. Ну а якщо треба змінити якийсь рядок, просто двічі клікаємо на тексті (можна також скористатися меню).

Тепер, коли ми виправили всі тексти, ми можемо зробити експорт нашого файлу для потрібної мови.




Зберігаємо його до себе в проект і забуваємо про такого головного болю, як локалізація. Досить просто, правда ж?

Для любителів дивитися всі в русі ми створили невелику відеоінструкцію:

Стек, технології

Керуючись правилом KISS , ми перебирали різні варіанти створення, але зупинилися на наступному:

Виходячи з стека, в команді знадобився б Node.js Developer, SQL Developer, верстальник, людина, що має досвід локалізації мобільних додатків, Project Manager, маркетолог, копірайтер. Прикинувши, що по вазі я можу зійти за дуже маленьких двох чоловік, вирішив зробити все сам, так як часом створити особисто буде швидше і якісніше, ніж знайти і проконтролювати кількох людей. До того ж чималий досвід розробки на back-end/web був, отже, чому ні? :)

Який камінь виявився найважчим

Як і в будь-якій справі, маркетинг рулить багатьом. Найважчий камінь — це розповісти, що є такий сервіс. Так і зібрати зворотний зв'язок було набагато важче, ніж це здавалося на перший погляд. В більшості своїй люди не люблять залишати відгуків, і важко зрозуміти, яку сторону необхідно поліпшити. А з урахуванням специфіки платформи підходить далеко не кожна реклама, так і зорієнтувати її вкрай важко.

Зараз і в майбутньому

З моменту запуску пройшло менше місяця, але вже зараз LocaleBro відвідало понад 800 розробників і менеджерів з усього світу, було додано близько 30 проектів.

Ці цифри можуть здатися не дуже значними, але специфіка проекту не настільки велика, так як локалізація мобільного застосування — це річ не тривіальна і не щоденна, але дуже нагальна з урахуванням тотальної глобалізації.

Сьогодні LocaleBro можна використовувати безкоштовно, і в майбутньому так планується. Адже основна ідея, що платформа — це твій бро, який тобі завжди допоможе. У разі якщо твій проект виріс і не поміщається в безкоштовний план, то, швидше за все, він тобі вже приносить доход, тому ми надаємо 6 варіантів підписок, які стартують від 10 доларів в місяць, що саме по собі смішна сума для будь-якого проекту.

У плані функціоналу — величезне поле зростання. Це і інтеграція з різноманітними системами контролю версій, і оптимізація самого процесу, і графіки продуктивності перекладачів. Зрештою, це інтеграція з бюро перекладів для надання повного спектру послуг. Тема не нова, але дуже обширна і вимагає підстроювання під ринок і нових технологій.

Спасибі, що дочитали до цього місця :) Всім добра!

Опубліковано: 10/10/19 @ 10:00
Розділ Різне

Рекомендуємо:

UX Guide: як уникнути юзабіліті-помилок в продукті
Зустрічі 1:1. Чому не працює такий простий і зрозумілий інструмент
Product engineering — спосіб підвищити свою цінність як інженера
Information Security дайджест #15: DC8044 Blackout, мега-витік в СБРФ, інтерв'ю Мухи
Генерація SQL-запиту засобами MySQL-сервера