Для веб-сайта (Wordpress) я хочу отображать даты с помощью известного плагина Meta Box, а веб-сайт должен быть на английском и немецком языках с помощью плагина qTranslate.
Немецкий и английский форматы даты различаются: немецкий: дд.мм.г (31.12.16), английский: мм/дд/г (12/31/16). Таким образом, чтобы отображать правильный формат в соответствии с языком, выбранным посетителем/для посетителя, два плагина должны работать вместе.
Вот как я бы отображал дату без выбора языка:
<?php echo rwmb_meta( 'exhibition_meta_beginning' ); ?>
Вот как я бы отобразил перевод текста на веб-сайте за пределами поста и содержимого страницы (например, навигация по сайту):
<?php _e("[:en]Current[:de]Aktuell[:]"); ?>
Теперь мой вопрос заключается в том, как я могу объединить две функции. Если это поможет, я был бы в порядке с разделением Exhibition_meta_beginning на Exhibition_meta_beginning_DE и Exhibition_meta_beginning_EN, что означало бы, что мне нужно было вводить каждую дату дважды при создании нового экземпляра/сообщения, один раз в немецком и один раз в английском формате.
Я пока не нашел ничего полезного — да, есть упоминания об этом, и есть какой-то способ использовать настраиваемые поля (которые являются основной основой Meta Box) с qTranslate, но, похоже, ничего не работает, и мои знания в PHP это минимум.
Поля ввода для метаданных, являющихся датами (и временем), определены в отдельном файле PHP, подобном этому (стандартная процедура Meta Box):
array(
'name' => 'Beginn der Ausstellung',
'id' => $prefix . 'beginn',
'type' => 'date',
'format' => 'dd.mm.y'
),
Не получилось ни внедрить двуязычие в значение формата тут же (он думает, что это формат даты, а не языковой тег, когда там появляется [:en]...), ни что-то подобное в той части, где данные отображается (извините за дилетантскую попытку):
<?php __("[:en] echo rwmb_meta( 'exhibition_meta_beginn_EN' )[:de]echo rwmb_meta( 'exhibition_meta_beginn_DE' )[:]"); ?>
Спасибо!
date_i18n
(поищите в Wordpress Codex). Определите поле даты с универсальным форматом даты, который может быть прочитанstrtotime
(например,yy-mm-dd
), и используйте его в качестве аргумента вdate_i18n
. Используйтеdate_i18n
дважды, один для английского формата и один для другого формата, соедините их соответствующими языковыми тегами в виде строк и.
между ними для соединения. Затем используйте_e
для отображения всей строки, которая использует содержимое одного поля ввода дважды в двух интерпретациях (два языка), и конечная локаль выберет, какую из них отображать. Изысканное решение. - person Thomas Maier   schedule 01.02.2016