如何";拔出;I18N属性文件中带有Makara模块的样式化HTML标记,用于Express和Kraken.js?

如何";拔出;I18N属性文件中带有Makara模块的样式化HTML标记,用于Express和Kraken.js?,html,node.js,express,internationalization,kraken.js,Html,Node.js,Express,Internationalization,Kraken.js,我正在使用,一个用于和的I18N模块 让我们假设我有一个句子,在这个句子中,我想为某个特定的单词设置样式,由于每种语言的语法,该单词恰好处于随机位置,并且我想在呈现阶段之前使用I18N属性文件轻松地在不同的语言中处理它,例如: 我想吃一个苹果 我是阿普费尔·祖·埃森 我的属性文件是: //en-GB.properties sentence=I want to eat an <span style="font-weight: bold;">apple</span> /

我正在使用,一个用于和的I18N模块

让我们假设我有一个句子,在这个句子中,我想为某个特定的单词设置样式,由于每种语言的语法,该单词恰好处于随机位置,并且我想在呈现阶段之前使用I18N属性文件轻松地在不同的语言中处理它,例如:

  • 我想吃一个苹果

  • 我是阿普费尔·祖·埃森

我的属性文件是:

//en-GB.properties
sentence=I want to eat an <span style="font-weight: bold;">apple</span>

//de-DE.properties
sentence=Ich möchte einen <span style="font-weight: bold;">Apfel</span> zu essen
//en-GB.properties
我想吃一个苹果
//de-de属性
句子=我是阿普费尔·祖·埃森
CSS样式只是为了简单而内联的,而粗体样式只是一个例子

但是,属性文件仅包含普通字。如何在属性文件中不强制使用HTML标记而获得相同的结果

“我想突出显示一个特定的单词”

在本例中,我建议使用一个特定的元素

HTML标记元素(
)表示突出显示的文本,即由于其在特定上下文中的相关性而标记为参考目的的一系列文本

我想吃一顿饭

苹果为我的午餐

处理配置参数的一种方法是使用占位符而不是标记,并在使用工具(例如“Grunt”)构建代码的阶段替换它们:我发现了这个名为“Grunt占位符”的Grunt任务。这里是资源的链接

配置基于json对象而不是属性,在编译之前,您可以创建自定义属性并将其用于配置文件

  • app/ui/componentA/de.json

    {
    “成分A”:{
    “标题”:“Komponente A公司”
    }
    }

  • app/ui/componentA/en.json

    {
    “成分A”:{
    “标题”:“组件A的标题”
    }
    }

  • app/ui/componentA/componentA.html

    
    

  • app/ui/componentA/componentA.less

    。组件a{
    背景:灰色;
    颜色:红色;
    }


比dippas的建议更好,但两个答案都没有真正解决如何国际化包含标记的文本的问题。这实际上取决于国际化在工具链中的何处发生。但是,如果您的标记很复杂,那么用多种语言维护样式可能会变得很复杂。最好在属性文件中使用microsyntax,并将其转换为下游标记。但没有对错,这取决于你的处境。真是个好问题。总的来说,我尽量避免这样做(我更希望翻译人员破坏网站的能力稍微弱一点),但你的例子是一个很好的例子,在这个例子中,备选方案可能相当麻烦。我知道我的问题有点笼统,可能没有正确/错误的答案。我正在使用,一个用于和的I18N模块。然而,在评论中,任何能够支持这一点的语言对现有模块/框架的任何引用都是非常受欢迎的。确实没有正确/错误的答案:在某些情况下,翻译人员可能想要或必须更改格式。有些汉字粗体字看起来很糟糕,而中国译者可能更喜欢用下划线来强调。将德语翻译成英语时,译者可能希望省略粗体标记,因为大写字母足以强调单词(
Klicken Sie auf Sichern
可以正确翻译为
单击保存
)。应该避免的是将结构标记(如
  • )放入可本地化字符串中。