Я хочу опустить создание бесчисленных операторов if/else
и вместо этого использовать предопределенные переменные (или константы).
DEFINE('LANG',$current_lang);
Он возвращает либо pl
либо en
. И теперь у меня есть две переменные:
$pl = getid('o-nas');
$en = pll_get_post($pl, 'en');
Как я могу напечатать тот, который я определил ранее с помощью LANG
? Или есть лучшее решение для этого? Обратите внимание, что у меня будет несколько случаев таких вещей, но LANG
всегда будет либо одним из этих двух.
Синтаксис переменной переменной для этого случая:
define('FOO', 'bar');
$foo = 'baz';
$bar = 42;
echo ${FOO}; // 42
Обратите внимание, что это не обязательно лучший подход к i18n, но он отвечает на ваш прямой вопрос.
Первым шагом к улучшению этого может быть просто использование массивов для стартеров:
$content = [
'en' => ..,
'pl' => ..
];
echo $content[LANG];
Цель и синтаксис здесь гораздо более очевидны и читабельны.