albert
  • 0
Новичок

Перевести содержимое базы данных с помощью функции __($message)

  • 0

Я написал плагин, который позволяет пользователям добавлять информацию в базу данных. Он работает хорошо, но я не могу перевести информацию с помощью WPML. Это простой пример проблемы:

$ сообщение = ‘тест’; // здесь я получаю информацию о БД

__($message, ‘my-plugin’);

Есть ли способ обойти эту проблему? Я не знаю, можем ли мы использовать для перевода переменную вместо строки. Когда я анализирую виджет в панели администратора, он не показывает строку для перевода.

Этот пример работает в WPML, потому что это строка: __(‘test’, ‘my-plugin’);

Заранее спасибо.

Share
  1. и _e(); функции прекрасно работают с заполнителями, и это функции php, а не функции WPML, поэтому либо я не понимаю вопроса, либо он просто плохо сформулирован, можете ли вы объяснить немного больше, что вы пытаетесь сделать?

    • 0
    • @Bainternet спасибо за ваш ответ, я пытаюсь получить информацию из базы данных и отобразить с помощью функций перевода __() и _e(), но вместо того, чтобы повторять строку, например, _e('message','myplugin'); я хочу отображать информацию, которую я получаю из БД, поэтому у меня есть переменная с содержимое я получаю как `_e($message,’myplugin’). Это работает хорошо, повторяя информацию, но когда я иду в WPML, чтобы перевести строку, она не появляется, и я не могу ее перевести.

      • 0
    • Большое спасибо, я думал, что это может произойти, поэтому теперь мне нужно изменить свой код, используя другие способы отображения информации, возможно, используя пользовательские типы сообщений.

      • 0
  2. Если вы хотите, чтобы переменные в вашем тексте были переведены, обычным способом будет форматирование строки следующим образом:

    <?php
    printf(__("text %s text2."), $message);
    ?>
    

    с целыми числами:

    <?php
    printf(__("text %d text2."), $count);
    ?>
    

    с более чем одним заполнителем:

    <?php
    printf(__("text %1$s text2 %2$S."), $message, $message2);
    ?>
    

    но сама переменная не будет переведена никак.

    WPML не запускает код раньше __(); и _e(); не работает, он только ищет файлы для них, и поэтому, когда вы пишете что-то вроде этого:

    $message = 'test'; // here I get the information of the DB
    __($message, 'my-plugin');
    

    WPML видит только пустое поле __($message, 'my-plugin'); $message.

    • 0

Оставить ответ

You must login to add an answer.