目前我正在开发一个ASP.net webforms项目,我想向用户表明当前页面上哪些元素包含本地化资源。
为了识别哪些HTML元素,包含哪些本地化资源。我想标记在呈现页面时从ResourceProvider检索到资源的所有呈现的HTML元素。从而在HTML元素和使用过的资源之间创建映射。
标记将通过向html元素添加data-localized
属性来完成。该属性将包含所使用的资源标识符(即resx文件名和资源键),然后当浏览器显示页面时,javascript将使用此信息执行任何操作。
到目前为止,我已经使用我自己的提供程序替换了默认资源提供程序,该提供程序从数据库而不是常规.resx文件中检索资源(如this文章中所述)。这给了我关于所有使用资源的信息,并通过在HttpContext中记录这些资源,我知道当前页面使用的所有资源。
现在进行映射,因为本地化资源并不总是必须在HTML元素中发生(例如,它可能只是由Literal
控件产生的字符串)。我引入了一个新的CompositeControl
,其中包含一个包含<div data-localized=""> </div>
的本地化资源的部分。
我的问题:我如何使用其子级使用的资源映射包装器?
答案 0 :(得分:1)
由于您要使用JavaScript对数据进行后处理,您可能会想到以前缀和分隔符的形式将所需内容添加到实际翻译文本中,例如“示例文本”将变为“## strings.resx#” #login.form.sample.text ##示例文本“。
然后,您的客户端脚本将查找##分隔符并从页面中删除它们(或执行任何操作)。
我知道这不是你要求的,但我相信它更简单,更容易实现。