Языковой перевод для PHP основной формат даты () - PullRequest
0 голосов
/ 11 февраля 2011

ОК, так что у меня есть большой и сложный модуль PHP «предстоящие события», с которым я часто работаю, в настоящее время я работаю на многоязычном (французском / английском) сайте и мне нужно перевести язык моего PHP даты.

То, что я НЕ ХОЧУ ДЕЛАТЬ - это вкладывание тонны условного PHP в саму функцию. Может кто-нибудь помочь мне придумать ряд условных утверждений, которые проверяют, если

<?php if (ICL_LANGUAGE_CODE == 'fr') { } ?>

имеет значение true, а затем просто измените переменные месяца после обработки функции. Простите за мое невежество, я немного медлителен, когда дело доходит до синтаксиса. Может кто-нибудь сказать мне, как это будет выглядеть, чтобы проверить, выводится ли определенный вывод, а затем перевести его. Следующее не работает

<?php if (ICL_LANGUAGE_CODE == 'fr') { February == Fevrier } ?>

EDIT:

Я подумал об использовании платформы локализации, однако я разрабатываю этот сайт на WordPress и использую WPML (многоязычный плагин WordPress). Это был настоящий спасатель жизни. Я не решаюсь добавлять сложные рамки. Это один легкий? Я бы предпочел просто перевести строки, которые я знаю, ожидать. Единственные форматы - 01 января // 1 января 2011 года ... названия дней не появляются на сайте, и другие переводы строк будут не нужны.

Ответы [ 5 ]

2 голосов
/ 11 февраля 2011

Создайте массивы из ваших строк, с ключами для каждого поддерживаемого языка:

$months = array(
    1=>array(
        'fr'=>'Janvier',
        'en'=>'January'
    ),
    2=>array(
        'fr'=>'Février',
        'en'=>'February'
    ),
    3=>array(
        'fr'=>'Mars',
        'en'=>'March'
    ) // and so on...
);

$days = array(
    1=>array(
        'en'=>'Monday',
        'fr'=>'Lundi'
    ),
    2=>array(
        'en'=>'Tuesday',
        'fr'=>'Mardi'
    ) // and so on...
);

Затем вы можете получить доступ к строкам следующим образом:

$days[$day_of_week][ICL_LANGUAGE_CODE]
$days[$month][ICL_LANGUAGE_CODE]

... и так далее.

1 голос
/ 30 августа 2012

Это то, что я использую, чтобы быстро перевести дату на французский в wordpress:

<?php setlocale(LC_TIME, "fr_FR"); ?>      
<?php echo utf8_encode(strftime("%e %B, %G", strtotime(the_date('','','',FALSE)))); ?>  
1 голос
/ 12 февраля 2011

Все приведенные выше предложения действительны и будут работать нормально.

WPML включает в себя функцию перевода строк, которая также может делать это и поддерживать код в чистоте. Преимущество состоит в том, что ваш код будет содержать тексты на одном языке, и перевод будет выполняться в редакторе перевода строк WPML.

Если вы когда-нибудь захотите добавить больше языков, вам не нужно ничего менять в коде. Просто добавьте больше переводов в WPML.

Посмотрите здесь: http://wpml.org/documentation/support/translation-for-texts-by-other-plugins-and-themes/

Вам нужно будет использовать * icl_register_string * для регистрации переводимых строк. Затем при выводе пройдите через * icl_t *. Этот механизм аналогичен GetText, за исключением того, что он поддерживает как статические, так и динамические тексты.

Если вы сделаете это, я предлагаю вам выбрать новое поле context для ваших строк. Это облегчит их поиск в редакторе перевода строк.

WPML кэширует результаты и загружает все строки в одном контексте, поэтому вы не почувствуете снижения производительности.

0 голосов
/ 02 июня 2016

Изменение языка php на wp

if (ICL_LANGUAGE_CODE == 'fr') {
 setlocale(LC_ALL, 'fr_FR');
} else if (ICL_LANGUAGE_CODE == 'de') {
 setlocale(LC_ALL, 'de_DE');
} else if (ICL_LANGUAGE_CODE == 'it') {
 setlocale(LC_ALL, 'it_IT');
} else if (ICL_LANGUAGE_CODE == 'en') {
 setlocale(LC_ALL, 'en_EN');
}

Строка из времени

$translated_date = strftime("%e %B %Y",strtotime($post->post_date));

Безопасное кодирование

$translated_date = utf8_encode($translated_date);
0 голосов
/ 28 июля 2013

Попробуйте этот подход, если ваш проект не высоконагружен, что достаточно гибко:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...