Некоторые фразы имеют значения, передаваемые в них системой, вы должны знать их и использовать в своём переводе в неизменном виде. Вот несколько типов замен, которые вы увидите:
-
%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. При выполнении перевода не забудьте включить эти ссылки, найденные в оригинальном языке, т.к. они часто несёт за собой полезную информацию.