You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Leaflet.Routing.Control语言设置失效问题求助

解决Leaflet Routing Control西班牙语设置不生效的问题

看起来你在给Leaflet路由组件设置language: 'sp'时没生效,我来帮你排查下可能的原因和解决办法:

1. 确认是否引入了西班牙语语言包

Leaflet Routing Machine(LRM)默认只包含英文翻译,其他语言需要单独引入对应的i18n文件。你需要先引入西班牙语的语言脚本,加载顺序很重要:

<!-- 先引入Leaflet和LRM核心文件 -->
<script src="leaflet.js"></script>
<script src="leaflet-routing-machine.js"></script>
<!-- 再引入西班牙语语言包 -->
<script src="leaflet-routing-machine.es.js"></script>

语言包必须在LRM核心文件之后加载,不然无法覆盖默认的英文翻译。

2. 修正语言代码的拼写

LRM采用ISO 639-1标准语言代码,西班牙语的正确代码是es而非sp。你需要把配置里的language: 'sp'改成language: 'es'。

3. 同时配置Mapbox Router的语言

因为你用的是Mapbox路由服务,除了LRM界面的翻译,Mapbox返回的路线指引文本也需要单独设置语言。可以在初始化Mapbox Router时添加language参数:

const createRoutingControl = () => {
  L.Routing.control({
    router: L.Routing.mapbox(config.features.routing.key, {
      language: 'es' // 给Mapbox路由API设置西班牙语
    }),
    language: 'es', // 给LRM界面设置西班牙语
    plan: new (L.Routing.Plan.extend({
      createGeocoders: function () {
        let container = L.Routing.Plan.prototype.createGeocoders.call(this)
        let reverseRoute = createButton('&#8593;&#8595;', container)
        let copyToClipboard = createButton('5', container, true)
        return container; // 注意这里你之前的代码疑似漏写了返回语句
      }
    }))([], {
      // 你的Plan配置项
    })
  }).addTo(map);
}

4. 手动定义翻译(如果找不到官方语言包)

如果找不到官方的西班牙语语言包,也可以手动自定义翻译内容:

L.Routing.addLocale('es', {
  locale: 'es-ES',
  languageNames: {
    'es': 'Español'
  },
  routeSummaryTemplate: function (route, i, n) {
    return `${i + 1} de ${n}: ${route.summary.totalDistance}, ${route.summary.totalTime}`;
  },
  errorMessages: {
    noRoute: 'No se pudo encontrar una ruta',
    serverError: 'Error al conectar con el servidor de rutas',
    // 补充其他需要翻译的提示文本
  }
});

按照以上步骤调整后,应该就能正常显示西班牙语的路由界面和路线指引了。

内容的提问来源于stack exchange,提问作者ABT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:13:50