Jump to content

Замены в фразах

Некоторые фразы имеют значения, передаваемые в них системой, вы должны знать их и использовать в своём переводе в неизменном виде. Вот несколько типов замен, которые вы увидите:

  • %s
    Простая строковая замена.
  • {internal.app=core&module=system&controller=register}
    Замена URL адреса
  • {# [1:reply][?:replies]}
    Плюрализационная замена.

Мы рассмотри плюрализационную замену более подробно в данной статье - .

Строковая замена

Простые строковые замены используют формат, определяемый PHP функцией sprintf. В этом формате специальный маркер %s заменяется значением, передаваемым во фразу:

Меня зовут %s

При отображении будет:

Меня зовут Кирилл

В некоторые фразы передаётся несколько значений, которые заменяются в порядке свей очерёдности. Например, если значения "Кирилл" и "синий" передаются во фразу, они будут расположены в таком порядке в языковой фразе:

Меня зовут %s и мой любимый цвет %s

Станет таким при отображении:

Меня зовут Кирилл и мой любимый цвет синий

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

Для изменения порядка замен, маркер %s должен быть изменён на %2$s - по сути вставка 2$ в середину обычного маркера, где 2 - это позиция параметра, который вы хотите использовать для замены. Для понимая описанного мы изменим порядок:

Мой любимый цвет %2$s и меня зовут %1$s

который будет выглядеть так:

Мой любимый цвет синий и меня зовут Кирилл

Для получения дополнительной информации обратитесь к документации PHP.net sprintf (имейте ввиду, что этот документ носит технический характер и предназначен только для разработчиков).

Замена URL адреса

В некоторых случаях в языковых фразах должны быть построены ссылки. Языковая система Invision Community поддерживает эту возможность с помощью специальных тегов, например:

{internal.app=core&module=system&controller=register}

В этом примере internal. подразумевает собой ссылку на внутреннюю страницу (то есть страницу IPS4), с URL адресом на определённую страницу. Соответственно могут быть определены внешние ссылки, например:

{external.ad-custom-location}

В этом случае ad-custom-location это предустановленный внешний URL адрес в IPS4. При выполнении перевода не забудьте включить эти ссылки, найденные в оригинальном языке, т.к. они часто несёт за собой полезную информацию.