SLD中的I18N¶
本节介绍如何在SLD文档中以不同语言指定元数据(标题和摘要)。
不同语言的元数据¶
geoserver扩展了标题和抽象部分,因此可以包含不同语言的文本。
这是要使用的语法示例:
<Title>This is the default title
<Localized lang="en">English title</Localized>
<Localized lang="it">Titolo in italiano</Localized>
</Title>
默认文本 (This is the default title
在这个例子中)和一组本地化的部分,每种语言一个。
各 Localized
节指定语言(在 lang
属性)和相关文本。
目前,geoserver支持WMS GetLegendgraphic请求中SLD中的本地化文本(如果 LANGUAGE
参数添加到请求中,例如 LANGUAGE=it
)
使用语言功能¶
Geoserver提供了 language
函数,它可用于获取 LANGUAGE
请求的时间 GetMap
或 GetFeatureInfo
请求。该函数可用于生成符号系统与语言相关的地图。
下面是一个示例,提供了 labels in multiple languages ,集成了 language
使用的功能 Recode
例如:
<TextSymbolizer>
<Label>
<ogc:Function name="Recode">
<ogc:Function name="language"/>
<ogc:Literal/>
<ogc:PropertyName>name_default</ogc:PropertyName>
<ogc:Literal>en</ogc:Literal>
<ogc:PropertyName>name_en</ogc:PropertyName>
<ogc:Literal>it</ogc:Literal>
<ogc:PropertyName>name_it</ogc:PropertyName>
<ogc:Literal>fr</ogc:Literal>
<ogc:PropertyName>name_fr</ogc:PropertyName>
</ogc:Function>
</Label>
<Fill>
<CssParameter name="fill">#000000</CssParameter>
</Fill>
</TextSymbolizer>
空虚的 <ogc:Literal/>
元素充当默认语言,将值与缺少的语言参数进行匹配。如果没有缺省值,则返回默认语言。看见 国际化(I18n) 有关以下内容的详细信息 Default Language
。
也可以使用 language
规则筛选器中的函数, filtering rules for both rendering and legend production 目的。此示例显示如何根据当前语言引用不同的符号:
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:Function name="language"/>
<ogc:Literal>it</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type="simple" xlink:href="it_symbol.png"/>
<Format>image/png</Format>
</ExternalGraphic>
<Size>32</Size>
</Graphic>
</PointSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:Function name="language"/>
<ogc:Literal>de</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type="simple" xlink:href="de_symbol.png"/>
<Format>image/png</Format>
</ExternalGraphic>
<Size>32</Size>
</Graphic>
</PointSymbolizer>
</Rule>
具体地说,对于外部图形,如果外部符号都位于同一位置,并且遵循包括语言标识符的命名约定,则还可以 embed the language in the symbol URL :
<Rule>
<PointSymbolizer>
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type="simple" xlink:href="${language()}_symbol.png"/>
<Format>image/png</Format>
</ExternalGraphic>
<Size>32</Size>
</Graphic>
</PointSymbolizer>
</Rule>
Previous: 使用转换函数设置样式
Next: 使用qgis生成SLD样式