Internationalization Polymer.dart中国际化字符串中的HTML标记

Internationalization Polymer.dart中国际化字符串中的HTML标记,internationalization,dart,dart-polymer,dart-html,Internationalization,Dart,Dart Polymer,Dart Html,我在聚合元素中显示国际化字符串,如下所示: {{title}} {{subtitle1}} {{第1段}} {{subtitle2}} {{第2段} 。。。并具有以下dart代码: @可观察字符串标题; @可观察字符串1; @可观测弦第1段; @可观察字符串2; @可观测弦第2段; //... void onUpdateLocale(_locale){ title=getTitle(); subtitle1=getSubtitle1(); paragraph1=getParagrap

我在聚合元素中显示国际化字符串,如下所示:


{{title}}


{{subtitle1}}
{{第1段}}

{{subtitle2}}
{{第2段}
。。。并具有以下dart代码:

@可观察字符串标题;
@可观察字符串1;
@可观测弦第1段;
@可观察字符串2;
@可观测弦第2段;
//...
void onUpdateLocale(_locale){
title=getTitle();
subtitle1=getSubtitle1();
paragraph1=getParagraph1();
subtitle2=getSubtitle2();
第2段=获取第2段();
}
//...
getTitle()=>Intl.message('MY TITLE',name:'TITLE',
描述:“这是我的头衔”,
args:[],
示例:{'None':0});
getSubtitle1()=>Intl.message('Subtitle 1',名称:'Subtitle 1',则,
描述:“这是我的第一个副标题”,
args:[],
示例:{'None':0});
getParagraph1()=>Intl.message('这是我的第一段',
名称:'第1段',
描述:'这是我的第一段',
args:[],
示例:{'None':0});
getSubtitle2()=>Intl.message('Subtitle 2',名称:'Subtitle 1',
这是我的第二个副标题,
args:[],
示例:{'None':0});
getParagraph2()=>Intl.message('这是我的第二段',
名称:'第2段',
描述:'这是我的第二段',
args:[],
示例:{'None':0});

有没有一种方法可以将
标题
副标题1
段落1
副标题2
段落2
组合成一个可观察的变量,该变量的值中包含

标记?

更新

Dart Polymer 1.0的即用元件为



更新

聚合物现在提供了这种开箱即用的支持

this.injectBoundHTML('HTML在这里${someBoundFieldValue});
旧的

这是我正在使用的
标记的代码

library-safe\u html;
导入“dart:async”;
导入“dart:html”;
进口“包装:聚合物/聚合物.省道”;
@CustomTag(“安全html”)
类SafeHtml扩展了聚合关系{
@已发布的字符串模型;
NodeValidator NodeValidator;
bool get applyAuthorStyles=>true;
布尔初始值=假;
SafeHtml.created():super.created(){
nodeValidator=新的NodeValidatorBuilder()
…allowTextElements();
}
void modelChanded(旧){
如果(已初始化){
_addFragment();
}
}
void _addFragment(){
var fragment=newdocumentfragment.html(模型、验证器:nodeValidator);
$[“容器”].节点
…清除()
…添加(片段);
}
@凌驾
附页(){
super.attached();
Timer.run(){
_addFragment();
isInitialized=true;
});
}
}

用法:


谢谢你,甘特。你知道安全的html聚合元素是什么样子吗?谢谢,甘特。当我将您的元素用作
时,我得到了以下错误,并且内容不符合样式<代码>删除不允许的属性删除不允许的属性删除不允许的属性删除不允许的属性删除不允许的属性删除不允许的属性
您可以自定义NodeValidator。我添加了一行“…allowlement('SPAN',attributes:['class']);”例如(实际上没有尝试过-希望它能起作用)
allowtml5()
显然排除了“脚本元素、样式属性和任何脚本处理程序”(scriptelements,style attributes and any script handlers)()