Для веб-сайта (WordPress) я хочу отображать даты с помощью известного плагина Meta Box, а веб-сайт должен быть предоставлен как на английском, так и на немецком языке, с плагином qTranslate.
Форматы дат на немецком и английском языках различаются: немецкий: дд.мм.г (31.12.16), английский: мм / дд / год (31.12.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' )[:]"); ?>
Спасибо!
Вы можете сделать это так,
$en = rwmb_meta( 'exhibition_meta_beginn_EN' );
$de = rwmb_meta( 'exhibition_meta_beginn_DE' );
echo __('[:en]'.$en.'[:de]'.$de.'[:]');
или создайте функцию, которая возвращает значение на основе языка
function __show_based_on_lang($en, $de) {
return ( qtranxf_getLanguage() == 'en') ? $en : $de ;
}
затем, чтобы использовать функцию, вы можете просто так:
echo __show_based_on_lang( rwmb_meta( 'exhibition_meta_beginn_EN' ), rwmb_meta( 'exhibition_meta_beginn_DE' ) );
Других решений пока нет …