Знакомство с интернационализацией

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

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

И последнее, но не менее важное: иногда может потребоваться добавить некоторый контекст к переводимой строке. Представьте, что переводчик получает строку Sun для перевода. Без контекста большинство людей перевели бы её как нашу ближайшую звезду, но на самом деле она может использоваться как аббревиатура воскресенья (Sunday).

Выбор среды интернационализации

Выбирайте ту среду, которая является стандартом для вашей платформы, постарайтесь не изобретать заново колесо, создавая свою собственную среду для работы с локализациями. Weblate поддерживает большинство широко используемых сред, подробнее смотрите раздел Форматы файлов локализации (особенно его подраздел Возможности типов переводов).

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

Более подробно рабочий процесс для некоторых форматов описан в следующих главах:

Обучение разработчиков правильной интернационализации

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

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

Все разработчики должны понимать это и однозначно идентифицировать строки, используемые в разных контекстах. Например, None в значении «нет пользователей» может переводиться иначе, чем None в значении «нет элементов». Используйте разные ключи или контексты, чтобы различать эти понятия для переводчиков. Вы можете предоставить дополнительный контекст в Weblate, например, Снимки экрана и визуальный контекст или Пояснение.

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

  • Отвечайте на вопросы и комментарии переводчиков и убедитесь, что указанный канал связи действительно отслеживается.

  • Избегайте ненужного хаоса в исходных строках. Переформулировка или замена существующих строк без видимой для пользователя причины создает излишнюю работу для переводчиков.

  • Добавьте достаточно контекста, чтобы переводчики понимали короткие или неоднозначные строки. Избегайте конкатенации предложений из фрагментов, используйте заполнители, которые можно переупорядочивать, и полагайтесь на встроенную обработку множественного числа.

  • Регулярно выпускайте переводы, чтобы завершённая работа не оставалась неиспользованной в Weblate в течение длительного времени.

  • Сообщайте об изменениях в рабочем процессе или политике и сохраняйте требования к вкладу реалистичными для небольших языковых команд.

  • Если проект больше не поддерживается, отразите это в рабочем процессе перевода, вместо того чтобы оставлять компоненты открытыми на неопределённый срок.

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