В четвертой части этого руководства, состоящего из четырех частей, вы узнаете об инструментах и ​​процессах, которые помогают поддерживать интернационализацию вашего приложения по мере масштабирования продукта.

Ознакомьтесь с третьей частью этой серии здесь.

Когда дело доходит до тонких и сложных систем, таких как языки и культуры, в конечном итоге существует предел, при котором наше программное обеспечение и компьютеры могут быть полезны для нас. Это может показаться немного обескураживающим или противоречащим здравому смыслу, поскольку мы, инженеры, всегда хотим делать с программным обеспечением все, что в наших силах, и раздвигать границы того, чего может достичь наш код. Однако я пришел к выводу, что человеческий фактор необходим на одном или нескольких этапах процесса интернационализации, чтобы помочь справиться с частями бесконечных нюансов, связанных с территорией. Люди создали языки для людей, а не компьютеры. В большинстве случаев они не являются стандартизированными или процедурными по своей природе, несмотря на то, что мы хотим применить к ним правила, чтобы их можно было обобщить в проблемное пространство, которое мы можем решить с помощью кода. На самом деле, есть еще кое-что, в чем люди в этом отношении лучше, чем компьютеры. Интерпретация и перевод контента - это одна из областей, в которой я бы сказал, что мы все еще опережаем машины.

Однако, несмотря на это, одной из важных целей для оценки успеха OkCupid в области интернационализации было минимизировать вмешательство человека. Конечно, люди по-прежнему медлительны и часто подвержены ошибкам. Вдобавок ко всему, это не масштабируемое или обслуживаемое решение для дизайнеров, разработчиков и менеджеров, которые должны выполнять массу утомительной ручной работы в поддержку усилий по интернационализации. Мы хотим, чтобы люди могли положительно влиять на наши усилия по интернационализации, но мы также хотим исключить возможность для людей отрицательно влиять на эти усилия.

Сильная опора на автоматизацию может помочь сделать ловушки человеческого вмешательства более терпимыми. Например, одним конкретным местом, на котором мы в значительной степени сосредоточились в нашей работе по интернационализации здесь, в OkCupid, была автоматизация извлечения и создания наших каталогов сообщений, а также загрузка и выгрузка этих каталогов в нашу TMS (службу управления переводами) . В нашем случае наша TMS имеет интеграцию с GitHub, что позволяет нам легко автоматизировать синхронизацию наших каталогов сообщений, что можно сделать с помощью некоторых простых действий GitHub. Это позволяет нам двигаться с гораздо большей скоростью, поскольку разработчики не увязли в ручном управлении каталогами, а завершенные переводы могут быть автоматически (хорошо, при некотором контроле со стороны разработчиков через запросы на вытягивание) обратно в наши репозитории.

Еще один отличный способ, которым мы запланировали масштабирование, - это использование нашей внутренней инфраструктуры выпуска, такой как механизмы пометки функций, для управления разработкой, тестированием и развертыванием новых функций и поддерживаемых языков. Мы можем легко итеративно создавать новые локализуемые проекты и тестировать переводы на новый язык, и все это без раскрытия функций, которые все наши пользователи еще не готовы увидеть.

Почти легко недооценить, насколько важна эта часть головоломки для масштабируемости и насколько велика работа, проделанная нашей командой в OkCupid. Это кажется тривиальным, но мы надеемся, что это позволит нам продолжить освоение новых языков и регионов и гарантировать, что наше внимание к масштабируемости и ремонтопригодности будет на первом месте, а это то, что мы действительно хотим.

Подведение итогов

Эти конкретные соображения ни в коем случае не являются полнотой интернационализации, поскольку это такая глубокая дисциплина сама по себе, но, надеюсь, это было полезно и может дать вам несколько хороших вещей, о которых следует подумать при работе над интернационализацией вашего программного обеспечения.

Imdilik hoşçakal! А пока до свидания! Auf Wiedersehen!