Как использовать WP Multilang для перевода текста из шаблонов?

На моём сайте на платформе WP установлен плагин WP Multilang для реализации мультиязычности. Я не испытываю проблем с контентом, добавленным через панель администратора, так как всё функционирует нормально. Однако часть контента находится непосредственно в PHP-шаблонах темы. Как можно перевести этот контент? Шорткоды, такие как [:en]Test[:ru]Тест[:], не работают в данном случае. Как можно решить эту проблему?
  • 28 января 2025 г. 11:24
Ответы на вопрос 2
Чтобы перевести текст в PHP-шаблонах темы на WordPress с использованием плагина WP Multilang, можно воспользоваться несколькими подходами. Вот некоторые из них:

### 1. Использование функции для перевода
Плагин WP Multilang предоставляет функцию, которую вы можете использовать для перевода текста напрямую в коде. Попробуйте использовать функцию `__()` или `_e()` с установкой текстового домена. Например:

```php
<?php echo __('Test', 'your-text-domain'); ?>
```
или
```php
<?php _e('Test', 'your-text-domain'); ?>
```

### 2. Использование глобальных переменных
Вы можете создать массив с переводами для обязательных вам языков и потом использовать их в шаблонах. Например:

```php
$translations = array(
    'en' => 'Test',
    'ru' => 'Тест',
);

$current_language = get_locale(); // Получение текущего языка
echo $translations[$current_language];
```

### 3. Использование `get_option`
WP Multilang сохраняет переводы в опциях. Вы можете извлечь переводы, используя функцию `get_option`. Например:

```php
$current_language = get_locale(); // Получаем текущий язык
$translated_text = get_option("wpml_string_translations")[$current_language]['Test'];
echo $translated_text;
```

### 4. Использование языкового контекста
Если элементы не меняются достаточно часто, можно создать отдельные строки для каждого языка. Для каждого языка создайте соответствующую строку в шаблоне:

```php
if (ICL_LANGUAGE_CODE == 'en') {
    echo 'Test';
} elseif (ICL_LANGUAGE_CODE == 'ru') {
    echo 'Тест';
}
```

### 5. Расширение функционала с помощью хуков
Если необходимо перевести длинные текстовые блоки или структуры, попробуйте создать фильтры или хуки, чтобы вставить переводы. Например, можно зарегистрировать текст и перевести его в зависимости от языка.

### 6. Использование кастомных шорткодов
Если вы часто используете один и тот же контент, создайте шорткод для перевода текста, который можно использовать в коде:

```php
function custom_translated_text($atts) {
    $atts = shortcode_atts(array('en' => '', 'ru' => ''), $atts);
    return $atts[ICL_LANGUAGE_CODE];
}
add_shortcode('translate', 'custom_translated_text');
```
Затем используйте его так:

```php
echo do_shortcode('[translate en="Test" ru="Тест"]');
```

Эти подходы должны помочь вам интегрировать мультиязычность для контента, который находится в PHP-шаблонах. Выберите тот метод, который лучше всего подходит для вашего проекта!
Используйте функции локализации __() и _e() , Multilang поддерживает эти функции.
Похожие вопросы