webpack 的 angular-translate-loader 如何工作?
How angular-translate-loader for webpack works?
我正在尝试将 webpack 加载器:angular-translate-loader 集成到我的项目中。
该文档缺少完整示例,我无法弄清楚如何使所有内容协同工作。
我想要的:
在我的根组件的同一级别有一个 "languages" 文件夹,它将包含其他语言的语言环境,例如:
- 语言环境-fr.json
- 语言环境-sp.json
我试过的:
我在 webpack.config.js 中添加了这个(根据文档)
module.exports = {
module: {
preLoaders: [{
test: /\.json$/,
loader: 'json'
}],
loaders: [{
test: /\.json$/,
loader: 'angular-translate?module=translations'
}]
},
angularTranslate: {
namespaces: ['app'],
sep: '.',
defaultLocale: 'en'
}
};
在我的应用程序的根组件中,我得到了这个:
$translateProvider.translations('en', {
TITLE: "Translation is working",
ANOTHER_TEXT: "But is it really working"
})
.translations('fr', localFr)
.registerAvailableLanguageKeys(['en', 'cn', 'fr', 'sp'], {
'gb': 'en',
'es': 'sp'
})
.preferredLanguage('en')
//See http://angular-translate.github.io/docs/#/guide/19_security for more details about Sanitize
.useSanitizeValueStrategy('escape')
//Remember the choice of Language in the local storage
.useLocalStorage();
默认语言显然有效 (en) 但其他语言无效。
我遗漏了一些东西,但我不知道为什么。
有人知道使用 angular-translate-loader 和 webpack 的示例项目吗?
我整天都在做同样的事情,但经过大量的反复试验,我终于找到了一个可行的解决方案。我有一个与您类似的设置:我在项目的根目录下有一个文件夹 assets/languages,其中包含格式为 locale-nl.json.[=15= 的 JSON 文件中的 languates ]
对我有用的是直接导入 angular-translate(连同一些额外的依赖项)而不是使用 angular-translate-loader:
npm install --save angular-translate angular-sanitize angular-cookies
然后我将其添加到我的 app.module.js 文件中(这是我用来代替 index.js 的文件):
// No "real" module support yet for angular-translate, wo we have to load these manually.
// Reference: https://github.com/angular-translate/angular-translate/issues/1517
import "angular-sanitize";
import "angular-cookies";
import "angular-translate";
import "angular-translate/dist/angular-translate-loader-static-files/angular-translate-loader-static-files.js";
import "angular-translate/dist/angular-translate-storage-cookie/angular-translate-storage-cookie.js";
然后,我定义我的模块并配置 $translate 服务如下:
angular.module(MODULE_NAME, [ "pascalprecht.translate", "ngSanitize", "ngCookies" ])
.config(['$translateProvider', function($translateProvider) {
$translateProvider
.useStaticFilesLoader({
prefix: "../assets/languages/locale-",
suffix: ".json"
})
.preferredLanguage('en')
.useCookieStorage()
.useSanitizeValueStrategy('sanitize');
}])
我的翻译文件,例如locale-nl.json 都包含此格式的单个对象:
{
"PASSWORD": "Wachtwoord",
"FORGOTPASSWORD": "Wachtwoord vergeten",
"SETTINGS": "Instellingen",
"LOGOUT": "Uitloggen",
"LASTNAME": "Achternaam",
"FIRSTNAME": "Voornaam",
"BIRTHYEAR": "Geboortejaar"
}
最后,在我的 HTML 代码中,我通过 $translate 指令调用翻译:
<span translate="SETTINGS">Settings</span>
我现在没有时间创建示例项目,但由于您的问题没有得到答复,所以我想至少让您知道对我有用的内容。我看看这个周末有没有时间创建一个示例项目。
我正在尝试将 webpack 加载器:angular-translate-loader 集成到我的项目中。 该文档缺少完整示例,我无法弄清楚如何使所有内容协同工作。
我想要的: 在我的根组件的同一级别有一个 "languages" 文件夹,它将包含其他语言的语言环境,例如:
- 语言环境-fr.json
- 语言环境-sp.json
我试过的:
我在 webpack.config.js 中添加了这个(根据文档)
module.exports = {
module: {
preLoaders: [{
test: /\.json$/,
loader: 'json'
}],
loaders: [{
test: /\.json$/,
loader: 'angular-translate?module=translations'
}]
},
angularTranslate: {
namespaces: ['app'],
sep: '.',
defaultLocale: 'en'
}
};
在我的应用程序的根组件中,我得到了这个:
$translateProvider.translations('en', {
TITLE: "Translation is working",
ANOTHER_TEXT: "But is it really working"
})
.translations('fr', localFr)
.registerAvailableLanguageKeys(['en', 'cn', 'fr', 'sp'], {
'gb': 'en',
'es': 'sp'
})
.preferredLanguage('en')
//See http://angular-translate.github.io/docs/#/guide/19_security for more details about Sanitize
.useSanitizeValueStrategy('escape')
//Remember the choice of Language in the local storage
.useLocalStorage();
默认语言显然有效 (en) 但其他语言无效。
我遗漏了一些东西,但我不知道为什么。
有人知道使用 angular-translate-loader 和 webpack 的示例项目吗?
我整天都在做同样的事情,但经过大量的反复试验,我终于找到了一个可行的解决方案。我有一个与您类似的设置:我在项目的根目录下有一个文件夹 assets/languages,其中包含格式为 locale-nl.json.[=15= 的 JSON 文件中的 languates ]
对我有用的是直接导入 angular-translate(连同一些额外的依赖项)而不是使用 angular-translate-loader:
npm install --save angular-translate angular-sanitize angular-cookies
然后我将其添加到我的 app.module.js 文件中(这是我用来代替 index.js 的文件):
// No "real" module support yet for angular-translate, wo we have to load these manually.
// Reference: https://github.com/angular-translate/angular-translate/issues/1517
import "angular-sanitize";
import "angular-cookies";
import "angular-translate";
import "angular-translate/dist/angular-translate-loader-static-files/angular-translate-loader-static-files.js";
import "angular-translate/dist/angular-translate-storage-cookie/angular-translate-storage-cookie.js";
然后,我定义我的模块并配置 $translate 服务如下:
angular.module(MODULE_NAME, [ "pascalprecht.translate", "ngSanitize", "ngCookies" ])
.config(['$translateProvider', function($translateProvider) {
$translateProvider
.useStaticFilesLoader({
prefix: "../assets/languages/locale-",
suffix: ".json"
})
.preferredLanguage('en')
.useCookieStorage()
.useSanitizeValueStrategy('sanitize');
}])
我的翻译文件,例如locale-nl.json 都包含此格式的单个对象:
{
"PASSWORD": "Wachtwoord",
"FORGOTPASSWORD": "Wachtwoord vergeten",
"SETTINGS": "Instellingen",
"LOGOUT": "Uitloggen",
"LASTNAME": "Achternaam",
"FIRSTNAME": "Voornaam",
"BIRTHYEAR": "Geboortejaar"
}
最后,在我的 HTML 代码中,我通过 $translate 指令调用翻译:
<span translate="SETTINGS">Settings</span>
我现在没有时间创建示例项目,但由于您的问题没有得到答复,所以我想至少让您知道对我有用的内容。我看看这个周末有没有时间创建一个示例项目。