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

配置tmhDynamicLocale后加载angular-locale_es.js遇404错误求助

解决Angular tmhDynamicLocale请求本地化文件失败的问题

看起来你遇到的是本地化文件找不到的问题(ERR_ABORTED通常对应404状态码),咱们一步步来排查解决:

1. 确认本地化文件是否存在

首先检查你的public/lib/angular-i18n/目录下,有没有angular-locale_es.js这个文件:

  • 如果没有,你需要先获取这个文件:
    • 可以从Angular官方提供的i18n资源包中获取,或者通过npm安装angular-i18n包,然后从node_modules/angular-i18n/目录下复制需要的文件到你的public/lib/angular-i18n/路径下
    • 注意文件名要完全匹配:angular-locale_es.js(是小写的es,不要写成大写或者带多余后缀的格式)

2. 验证路径配置的正确性

你设置的localeLocationPattern是:

tmhDynamicLocaleProvider.localeLocationPattern('public/lib/angular-i18n/angular-locale_{{locale}}.js');

直接在浏览器地址栏访问http://localhost:3000/public/lib/angular-i18n/angular-locale_es.js,看看能不能打开这个文件:

  • 如果打不开,说明路径配置错误:
    • 比如如果你的本地化文件实际放在node_modules/angular-i18n/下,就需要把路径改成:
      tmhDynamicLocaleProvider.localeLocationPattern('node_modules/angular-i18n/angular-locale_{{locale}}.js');
      
    • 或者调整你的静态资源目录结构,让public/lib/angular-i18n/下的文件能被服务器正确访问到。

3. 检查静态文件服务的配置

如果你用的是Node.js/Express作为后端,要确保已经把public目录设置为静态资源目录:

// Express中的示例配置
const express = require('express');
const app = express();
app.use(express.static('public')); // 这行必须存在,否则/public开头的路径无法访问

如果没有配置静态资源服务,服务器会无法找到public目录下的文件,从而返回404错误。

4. 修正控制器代码的小问题

虽然这不是当前404错误的直接原因,但你的控制器代码存在两个小问题,可能导致后续功能异常:

  • 控制器名称和服务名称tmhDynamicLocale重名了,容易引发冲突
  • 函数中使用了$scope但没有注入

修正后的控制器代码:

angular.module('core').controller('LocaleController', function($scope, tmhDynamicLocale) {
  $scope.spanish = function () {
    tmhDynamicLocale.set('es');
  };
});

5. 确认Locale代码的准确性

Angular的本地化文件中,es对应的文件确实是angular-locale_es.js,但如果还是找不到,可以尝试使用更具体的locale代码,比如es-ES(对应文件angular-locale_es-es.js),调用时改成:

tmhDynamicLocale.set('es-ES');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:26:11