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 请求的时间 GetMapGetFeatureInfo 请求。该函数可用于生成符号系统与语言相关的地图。

下面是一个示例,提供了 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>