Поддержка формата сообщений для локализации

Руководство для переводчиков

В Discourse все строки формата сообщений имеют ключ, который заканчивается на “_MF”. В редакторе Crowdin есть предпросмотр, позволяющий экспериментировать с различными значениями, что очень полезно для проверки ваших переводов.

Важно: Если ваш язык использует формы множественного числа, отличные от “one” и “other”, вам необходимо изменить формы множественного числа в вашем переводе. Вы можете добавлять или удалять формы внутри блока { FOO, plural, ... }, чтобы обеспечить корректную работу для вашего языка. Если в вашем переводе есть проблема, в предпросмотре редактора Crowdin будет отображаться сообщение «Syntax error» (Ошибка синтаксиса).

Доступные формы множественного числа:

  • zero
  • one
  • two
  • few
  • many
  • other (обязательная — общая форма множественного числа — также используется для языков, не различающих единственное и множественное число)

Иногда вы можете встретить пустой блок =0 {} в английской исходной строке, что означает, что переменная не может иметь значение 0.

Руководство для разработчиков

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

  • Ключи строк формата сообщений должны заканчиваться на “_MF”

  • Используйте следующий формат для чисел (# будет заменено на число):

    { variable_name, plural,
        one: {# singular text}
      other: {# plural text}
    }
    
  • Используйте следующий формат для выборов:

    { variable_name, select,
      foo: {This is foo}
      bar: {This is bar}
      baz: {This is baz}
    }
    
  • Вот как использовать это в JavaScript:

    I18n.messageFormat("key_MF", {
      variable1: "foo",
      variable2: 42,
    });
    
  • :loudspeaker: Рекомендация: По возможности используйте сложные аргументы как внешнюю структуру сообщения и пишите полные предложения в их подсообщениях. Если у вас вложенные аргументы select и plural, поместите аргументы select (с их фиксированными наборами вариантов) снаружи, а аргументы plural (надеюсь, не более одного) вложите внутрь. См. Formatting Messages | ICU Documentation

  • Делайте их читаемыми — см. существующие примеры в client.en.yml

    :cross_mark: Плохо

    There {currentTopics, plural, one {is <strong>#</strong> topic} other {are <strong>#</strong> topics}}. Visitors need more to read and reply to – we recommend at least { requiredTopics, plural, one {<strong>#</strong> topic} other {<strong>#</strong> topics}}. Only staff can see this message.
    

    :green_heart: Хорошо

    There { currentTopics, plural,
        one {is <strong>#</strong> topic}
      other {are <strong>#</strong> topics}
    }. Visitors need more to read and reply to – we recommend at least { requiredTopics, plural,
        one {<strong>#</strong> topic}
      other {<strong>#</strong> topics}
    }. Only staff can see this message.
    

Инструменты и дополнительная информация

  • Online ICU Message Editor позволяет вам протестировать строку формата сообщений, если есть проблема с редактором Crowdin. Пожалуйста, отключите опцию “Parse simple xml/html tags” (Разбирать простые теги xml/html), иначе вы можете увидеть сообщение об ошибке.

  • ICU Message Format for Translators


Этот документ находится под контролем версий - предложите изменения на github.

10 лайков