使用ng-translate自定义bower依赖关系:加载JSON资源文件时出现404错误

时间:2015-10-01 10:13:58

标签: angularjs angular-translate

我创建了一个使用angular-translate的指令,它在这个配置下工作正常:

$translateProvider.useSanitizeValueStrategy('escape');
$translateProvider.useStaticFilesLoader({
  prefix: 'i18n/messages_',
  suffix: '.json'
});
$translateProvider.preferredLanguage('fr');
$translateProvider.fallbackLanguage('fr');
$translateProvider.useLocalStorage();

和i18n文件夹中的两个文件: * messages_en.json * messages_fr.json

现在我希望这个指令可以在另一个角度应用程序中使用,所以我使用它作为我的新应用程序的bower依赖项,需要所有必需的.js和.html,但json文件使用templateCache在单个.js文件中。 / p>

该指令正在我的新应用程序中工作,但是我的新应用程序正在尝试从http://localhost:9000/i18n/messages_fr.json加载json文件,并且出现404错误。

这个错误是正常的,因为我没有在我的依赖项中包含json文件,但是我不知道我应该在哪里以及如何。如果我将它们包含在我的bower depdency中或将其添加到templateCache中,则它无效。

一个简单的解决方案是将文件复制到我的应用程序的i18n /文件夹中,但这不是我想要的,我想重用我的指令定义的文件。我尝试修改useStatidFilesLoader属性但到目前为止没有成功。

修改

我认为真正的问题是我打算使用translateProvider的两个配置:   - 在我的依赖配置中有一个带有公共消息的文件   - 另一个在我的新应用程序配置中有另一个消息文件名。 但由于它是一个提供者,因此是一个单例,只执行一个配置。因此,无法从两个不同的文件加载消息,或者我在ngtranslate配置中遗漏了一些内容。

我所做的是在我的bower依赖项中包含公共消息文件,并在我的新应用程序中添加一个grunt任务,该任务将此消息文件与我的新应用程序消息文件合并。为此,我使用grunt-merge-json。

1 个答案:

答案 0 :(得分:0)

我有同样的问题,这是你的答案。你所需要的只是

$translateProvider.useLoaderCache('$templateCache');

Would it be possible to support the $templateCache?