Многие средства перевода, извлекающие переводимые строки будет искать строку литералы, как это:
$translation = __('red', 'textdomain');
Это безопасная ставка *, что Тематическая Check плагин предупреждает вас о том, что ваш динамический Такие инструменты не будут извлекаться из строки. Это связано с тем, что код не будет выполняться во время извлечения, поэтому выражение get_color()
не будет оцениваться в переводимой строке.
Если вам не нужна совместимость с инструментами извлечения строк, просто оставьте свой код в соответствии с вашим первым примером (второй пример неверен, как уже указывалось).
Если вы хотите, чтобы ваш код работал с инструментами перевода, я предлагаю создать файл PHP dummy, содержащий все возможные значения цвета. (предполагая, что список конечен). Ваш файл будет выглядеть примерно так:
<?php
__('red', 'textdomain');
__('blue', 'textdomain');
// and so on..
Затем, если вы хотите, чтобы остановить фактический перевод вызов продуцирующий «Theme Check» ошибку вы должны реорганизовать его в чем-то, что не получит подобраны. Нечто подобное было бы получить пропустило большинство экстракторов:
$translation = call_user_func('__', get_color(), 'textdomain');
* Стоит отметить, что автор Theme Check является основным WordPress вкладчиком и весьма шумный о doing WordPress i18n correctly.
Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. – liliscent
sprintf() - это функция PHP: http://php.net/manual/en/function.sprintf.php – jazkat