Localization vue-i18n翻译中html标记的最佳实践? 我使用的是代码> VUE-I18N,我需要在中间用一个锚标签翻译一个句子。很明显,我不想让特定于html的标记出现在我的翻译中,但是如何最好地处理这个问题呢

Localization vue-i18n翻译中html标记的最佳实践? 我使用的是代码> VUE-I18N,我需要在中间用一个锚标签翻译一个句子。很明显,我不想让特定于html的标记出现在我的翻译中,但是如何最好地处理这个问题呢,localization,vue.js,vuejs2,Localization,Vue.js,Vuejs2,考虑以下示例: This is a test sentence which cannot <a href="https://example.com" class="test-class test-another-class">be split</a> or it will not make sense 然后在组件模板中 <p v-html="$t('example', { 'linkOpen': `<a href="https://exampl

考虑以下示例:

This is a test sentence which cannot 
<a href="https://example.com" class="test-class test-another-class">be split</a> 
or it will not make sense
然后在组件模板中

<p v-html="$t('example', { 
    'linkOpen': `<a href="https://example/com" class="test-class test-another-class">`,
    'linkClose: '</a>'
    }) 
"></p>

但并不完全优雅


编辑:我已经测试过了,但它实际上不起作用(不能将html放入参数中),所以现在我真的没有主意了

您可以为链接提供一些简单的标记,并编写一个小的转换函数,例如:

//In this example links are structured as follows [[url | text]]

var text = `This is a test sentence which 
cannot [[https://example.com | be split]] or it will not make sense`

var linkExpr = /\[\[(.*?)\]\]/gi;
var linkValueExpr = /(\s+\|\s+)/;

var transformLinks = (string) => {
  return text.replace(linkExpr, (expr, value) => {
    var parts = value.split(linkValueExpr);
    var link = `<a href="${parts[0]}">${parts[2]}</a>`;

    return link;
  });
}

alert(transformLinks(text));

您可以将HTML放入不属于显示的DOM的元素中,然后提取其
textContent
。不过,这可能不适用于您实际想要做的事情。我不知道

newvue({
el:“#应用程序”,
数据:{
html:`这是一个测试句子,不能
否则就没有意义了`,
utilityEl:document.createElement('div')
},
方法:{
HTMLTOXT:函数(html){
this.utilityEl.innerHTML=html;
返回this.utilityEl.textContent;
}
}
});

{{HTMLOTEXT(html)}}


像这样的简单替换
$t('id')。替换('works
)。
//In this example links are structured as follows [[url | text]]

var text = `This is a test sentence which 
cannot [[https://example.com | be split]] or it will not make sense`

var linkExpr = /\[\[(.*?)\]\]/gi;
var linkValueExpr = /(\s+\|\s+)/;

var transformLinks = (string) => {
  return text.replace(linkExpr, (expr, value) => {
    var parts = value.split(linkValueExpr);
    var link = `<a href="${parts[0]}">${parts[2]}</a>`;

    return link;
  });
}

alert(transformLinks(text));
<p v-html="transformLinks($t('example'))"></p>