Php 使用CodeIgniter语言类翻译包含HTML的句子

Php 使用CodeIgniter语言类翻译包含HTML的句子,php,codeigniter,internationalization,Php,Codeigniter,Internationalization,如何在CI语言类返回的语言变量中使用HTML。给你举个例子 通常情况下,我会添加传输文本链接: 在lang文件中: $lang['login'] = 'Login'; 鉴于: <?= lang('login'); ?> 但是,我的一些翻译文本需要包含链接,例如: "I agree to the <a href="" title="Terms of Use">terms of use</a>" $lang['terms'] = 'Ados termin

如何在CI语言类返回的语言变量中使用HTML。给你举个例子

通常情况下,我会添加传输文本链接: 在lang文件中:

$lang['login'] = 'Login';
鉴于:

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

但是,我的一些翻译文本需要包含链接,例如:

"I agree to the <a href="" title="Terms of Use">terms of use</a>"
$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文件将由非技术人员翻译。所以我不能将链接HTML转储到lang文件中。

你的意思是链接本身对于每种语言都是不同的吗?如果链接是静态的,并且对于所有语言都是相同的,那么您可以将其放在您的语言文件中

$lang['terms'] = 'I agree to the <a href="http://mysite.com/terms" title="Terms of Use">terms of use</a>';
$lang['terms']='我同意';
如果链接将根据语言而更改,则可以在控制器中创建链接,并在视图中使用将其插入到语言字符串中

所以你的语言文件中会有这个

$lang['terms'] = 'I agree to the <a href="%s" title="Terms of Use">terms of use</a>';
$lang['terms']='我同意';
在你看来

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

其中,
$link
在控制器中定义并传递给视图


希望有帮助

编辑:完全同意你的评论@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']=“我同意使用条款”
$lang['terms1']=“使用条款”;
$link='';
$translated=str_replace($lang['terms1'],$link,$lang['terms']);
echo$翻译;
现在你不需要依赖短语顺序了。例如:

"I agree to the <a href="" title="Terms of Use">terms of use</a>"
$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']='Ados termino eta baldintzak I'
$lang['terms1']='Ados termino';
$link='';
$translated=str_replace($lang['terms1'],$link,$lang['terms']);
echo$翻译;
另一个更改顺序的示例:

$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;
$lang['terms']='Los términos de uso son válidos'
$lang['terms1']='términos de uso';
$link='';
$translated=str_replace($lang['terms1'],$link,$lang['terms']);
echo$翻译;

附言:我不会说巴斯克语,所以我不知道“Ados termino”是否意味着“使用条款”。无论如何,我想你可以理解我的想法。

不,链接是一样的。我想翻译的文本包括链接文本,在这种情况下“使用条款”。所以我认为没有任何问题。把整个句子都放到语言文件里,或者我误解了什么?因为html是句子的一部分,你可以把html放到语言文件里。这绝对没有问题。你可以在英语文件中输入“我同意”,在西班牙语文件中输入“acepto los”,以及其他语言中的任何内容……这也行不通,因为所有语言的句子结构都不相同。例如,它翻译成的巴斯克语是:“Ados termino eta baldintzak I”。在这个例子中,链接在句子的中间而不是结尾。“Alex Agree和你在一起。”我编辑了自己的答案。我希望它能帮助您在“lang##”文件中添加HTML标记和所有内容是否合适?我指的是一些粗体和链接。。这不是很难维持吗?