В функции есть второй аргумент __()
. Необходимо указать домен, который вы используете для своего плагина или темы. В примерах ниже я использую 'text_domain'
. Строка вашего домена должна быть уникальной. Он не должен совпадать с любой другой строкой домена. Не используется аргумент текстового домена, по умолчанию 'default'
используется имя домена WordPress. Пройдите по ссылке, чтобы узнать больше.
Всегда используйте строку ( 'text_domain'
). Никогда не используйте переменную, функцию или константу со строкой в ней. Большинство (все?) Переводческие программы не увидят его без этой строки.
Ваш код:
echo __( 'Hello ' . $first . ' you own me money.' );
Не включайте переменные в строку.
Лучший способ:
echo sprintf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
Или просто:
printf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
%s
Заполнитель говорит человеческий переводчик, строка собирается там. Используйте %d
для чисел. Есть и другие заполнители .
(Эта фраза грамматически неправильно английский. Использование либо 'Hello %s, you owe me money.'
или в 'Hello %s, you own my money.'
зависимости от означает , что вы собирались.)
Ваш код:
$html = '<div><p>Top: ' . $t_margin . '</p>' . <p>Bottom: ' . $b_margin . '</p></div>';
Не переводите HTML. То же самое на любом языке.
Лучший способ:
$html = sprintf( '<div><p>%s</p><p>%s</p></div>', __( 'Top: ', 'text_domain' ) . $t_margin, __( 'Bottom: ', 'text_domain' ) . $b_margin );
Или разбить его на несколько строк:
$html = sprintf(
'<div><p>%s</p><p>%s</p></div>',
__( 'Top: ', 'text_domain' ) . $t_margin,
__( 'Bottom: ', 'text_domain' ) . $b_margin
);
Если неясно, что такое Top и Bottom , вы можете использовать их _x()
для объяснения контекста этих терминов.
Вы можете найти другие случаи перевода здесь: Интернационализация: Вы, вероятно, делаете это неправильно