Несколько дней назад я наткнулся на jquery.i18n из фонда wikimedia, который позволяет переводить строки, такие как Welcome, $1
и Found $1 {{PLURAL:$1|result|results}}
.Анализ языка шаблонов в php
Я хотел бы воссоздать эту функциональность в PHP только для образовательных целей.
Мне удалось создать парсер, который анализирует строки, такие как Welcome, $1
, но теперь я ищу, чтобы воссоздать вторую функциональность Found $1 {{METHOD:$1|parameters|...}}
, но я не могу понять, как создать некоторые функции для этого.
Может ли кто-нибудь толкнуть меня в правильном направлении? Я уже посмотрел исходный код библиотеки jquery.i18n, и я не хочу реализовывать другую существующую библиотеку переводов, просто создаю ее самостоятельно.
Это то, что я получил за простой аргумент функции синтаксического анализа:
public function parse($message, $replacements)
{
if (strrpos($message, '{{') === false) {
return $this->simpleParse($message, $replacements);
}
}
protected function simpleParse($message, $replacements)
{
return preg_replace_callback('/\$(\d+)/', function ($match) use ($replacements) {
$key = $match[1] - 1;
if (isset($replacements[$key])) {
return $replacements[$key];
}
return $match[0];
}, $message);
}
Отлично, это именно то, что я имел в виду. Спасибо! – frietkot