Перевод предложения, включающего HTML, с использованием языкового класса CodeIgniter. - PullRequest
1 голос
/ 20 февраля 2011

Как я могу использовать HTML в языковых переменных, возвращаемых из класса CI lamnguage. Чтобы дать вам пример;

Обычно я добавляю ссылку на текст: В файле lang:

$lang['login'] = 'Login';

В поле зрения:

<?= lang('login'); ?>

Однако некоторые из моих переведенных текстов должны включать ссылки, например:

"I agree to the <a href="" title="Terms of Use">terms of use</a>"

Как я могу перевести это, ссылка может не отображаться в одном и том же месте в предложении на разных языках, и мой языковой файл будет переведен не техническим персоналом. Поэтому я не могу просто сбросить ссылку HTML в файл lang.

Ответы [ 2 ]

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

РЕДАКТИРОВАТЬ: полностью согласен с вашим комментарием @Alex.Вот еще один вариант

$lang['terms'] = 'I agree to the Terms of Use'
$lang['terms1'] = 'Terms of Use';

$link = '<a href="your_url" title="' . $lang['terms1'] . '">' . $lang['terms1'] . '</a>';

$translated = str_replace($lang['terms1'],$link,$lang['terms']);

echo $translated;

Теперь вы не зависите от порядка фраз.Например:

$lang['terms'] = 'Ados termino eta baldintzak I'
$lang['terms1'] = 'Ados termino';

$link = '<a href="your_url" title="' . $lang['terms1'] . '">' . $lang['terms1'] . '</a>';

$translated = str_replace($lang['terms1'],$link,$lang['terms']);

echo $translated;

Другой пример изменения порядка:

$lang['terms'] = 'Los términos de uso son válidos'
$lang['terms1'] = 'términos de uso';

$link = '<a href="your_url" title="' . $lang['terms1'] . '">' . $lang['terms1'] . '</a>';

$translated = str_replace($lang['terms1'],$link,$lang['terms']);

echo $translated;

PS: я не говорю по-баскски, поэтому не знаю, означает ли «Ados termino»использовать.В любом случае, я думаю, вы понимаете, как я пытаюсь это сделать.

1 голос
/ 20 февраля 2011

Вы имеете в виду, что сама ссылка различна для каждого языка?Если ссылка является статической и одинаковой для всех языков, вы можете просто поместить ее в свой языковой файл

$lang['terms'] = 'I agree to the <a href="http://mysite.com/terms" title="Terms of Use">terms of use</a>';

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

Таким образом, у вас будет это в ваших языковых файлах

$lang['terms'] = 'I agree to the <a href="%s" title="Terms of Use">terms of use</a>';

и по вашему мнению

<?php echo sprintf(lang('terms'),$link); ?>

где $link определен в вашем контроллере и передан в представление

Надеюсь, это поможет!

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