我的角度控制器可能会生成消息,我打算使用角度转换进行翻译.
在控制器中,我当前将一个变量分配给翻译键,例如:
$scope.info = "core.projectconfig.created";
Run Code Online (Sandbox Code Playgroud)
其中该键的转换指定为
core.projectconfig.created <=> 'Project {{projectName}} created successfully'
Run Code Online (Sandbox Code Playgroud)
如您所见,我还需要在翻译中替换projectName.
在我看来,我尝试过这样的事情
<P translate="{{info}}", translate-values="{projectName : projectData.ProjectName}"></p>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我如何翻译动态找到的翻译密钥,并在翻译的行中添加范围变量?
为了使用数据填充服务,我想从angular-translate的$ translate服务获取特定命名空间下的所有翻译.
基本上我正在寻找的是这样的东西(不支持):
$translate('SOME.NAMESPACE.*').then(...);
Run Code Online (Sandbox Code Playgroud)
由于这不存在,我想我此时最好的方法是解析我自己同步提供的后备翻译表吗?
我目前正在寻找一种解决方案,将一个粗体字放入由angular-translate过滤器翻译的字符串中.下面的示例代码:(我确定解决方案很简单......我似乎无法想象这一个!)
我的语言JSON文件如下所示:
"AUTHENTICATE-ENTER-CODE": "blah blah blah"
Run Code Online (Sandbox Code Playgroud)
在我的html文件中,我有这个(根据键:值正确翻译):
{{'AUTHENTICATE-ENTER-CODE' | translate}}
Run Code Online (Sandbox Code Playgroud)
结果:"等等等等"
我要找的结果是" 等等等等"
我可以将它分成多个翻译键,但特定翻译由几个句子中的多个粗体词组成......我被告知要尽量将翻译键保持在最低限度,因为我们在这个项目中有几百个.
我已经尝试将粗体HTML标签放在我想要粗体的字体周围(知道它不会起作用)并且没有......它不起作用!我还浏览了angular-translate API,但也找不到我想要的内容.
任何输入都会很棒!
我在我的Angular(v1.x)应用程序中使用angular-translate以及使用$ translateProvider.useStaticFilesLoader从文件加载翻译
angular.module('myApp',['pascalprecht.translate'])
.config(function($translateProvider) {
$translateProvider.useStaticFilesLoader(
prefix: window.location.pathname.replace(/[\\\/][^\\\/]*$/, '') + '/__languages/', // absolute path + language path
suffix: '.json'
});
// $translateProvider.useLocalStorage();
}
Run Code Online (Sandbox Code Playgroud)
Angular-translate工作得很好,但在使用时:
$translateProvider.useLocalStorage();
Run Code Online (Sandbox Code Playgroud)
(在上面的代码中评论)如本指南中提出的,我收到以下错误:
未捕获错误:[$ injector:unpr]未知提供者:$ translateLocalStorageProvider < - $ translateLocalStorage < - $ translate
当然,我包含了所有需要的js文件:
<script src="bower_components/angular-translate/angular-translate.min.js"></script>
<script src="bower_components/angular-translate-loader-url/angular-translate-loader-url.min.js"></script>
<script src="bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我甚至试图:
我有一个奇怪的或可能是有角度翻译的行为.
我们的价值战略是
$translateProvider.useSanitizeValueStrategy('sanitize');
Run Code Online (Sandbox Code Playgroud)
我们主要使用在我们的应用程序的转换过滤器,但是当涉及到特殊字符,我们得到例如不是Überschrift像Ü berschrift.
如果我使用该指令它是有效的.
如果我使用过滤器,这仅在清理策略设置为"转义"时有效.
是否有另一种解决方案,而不是将所有翻译过滤器重写为指令?
这是我的plnkr http://plnkr.co/edit/QIMVQcyH5APeYxNnS82v
为了您的信息,我不能简单地使用"转义"策略,因为我们也使用角度转换变量,这些变量有时甚至包含html标签.
谢谢!
来自Angular翻译文档:
$translate(translationId[, interpolateParams], interpolationId);
interpolationId参数的目的是什么,你能举个例子吗?
我有一个翻译密钥,实际上是一个HTML代码,编码和未编码.
$scope.translations = {
"html_code" : "<script>alert('Alert!');</script>",
"html_code_full" : "<script>alert('Alert!');</script>",
"greeting" : "Welcome!"
}
Run Code Online (Sandbox Code Playgroud)
当我使用这些值来显示视图中的翻译文本时,我使用两种方法:
<span translate>{{translations.html_code}}</span>{{translations.html_code|translate}}我尝试相同的translations.html_code_full.这是视图的代码:
translations.html_code = {{translations.html_code|translate}}
translations.html_code = <span translate>{{translations.html_code}}</span>
translations.html_code_full = {{translations.html_code_full|translate}}
translations.html_code_full = <span translate>{{translations.html_code_full}}</span>
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
translations.html_code = <script>alert('Alert!');</script>
translations.html_code = <script>alert('Alert!');</script>
translations.html_code_full = <script>alert('Alert!');</script>
translations.html_code_full =
Run Code Online (Sandbox Code Playgroud)
很明显,指令实现是将转换键编码为HTML,但过滤器不是.为什么指令与过滤器实现之间的输出存在差异?如果它呈现HTML,为什么我没有收到警报?
我有以下场景:
我有一个包含这种数据的JSON文件:
"IOS_TABLET_DOWNLOAD_URL": {
"type": "string",
"minLength": "5",
"title": "IOS_TABLET_DOWNLOAD_URL",
"description": "$filter('translate')('configuration.IOS_TABLET_DOWNLOAD_URL')"
},
Run Code Online (Sandbox Code Playgroud)
描述字段需要使用Angular Translate进行翻译,我正在将服务注入到我的控制器中
ConfigController.$inject = ['$scope', '$filter', '$compile', 'MyService'];
function ConfigController($scope, $filter, $compile, MyService) {
// And using compile
$scope.schema = elements; // Where element is the object from MyService
$compile($scope.schema)($scope);
}
Run Code Online (Sandbox Code Playgroud)
但是,$ filter将作为视图中的描述进行未处理打印
"$过滤器( '翻译')( 'configuration.IOS_TABLET_DOWNLOAD_URL')"
编辑
我正在使用Angular Schema Form生成表单.所以基本上我在视图中有这样的东西
<div ng-controller="FormController">
<form sf-schema="schema" sf-form="form" sf-model="model"></form>
</div>
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
javascript json angularjs angular-translate angular-schema-form
我正在使用angular-translate为我的应用程序提供i18n,我能够正确翻译标签,按钮文本等.我面临的问题是当我尝试根据所选语言区域设置更改日期时.日期从日期选择器中选择.
日期被选入输入元素:
<input type="text" class="form-control" required="" ng-model="date" placeholder="{{ 'DATE_PLACEHOLDER' | translate }}" translate="{{ 'select_date'|translate:{date:date} }}"/>
Run Code Online (Sandbox Code Playgroud)
占位符转换工作正常,但是当我更改语言时,日期格式没有发生变化.我创建了一个描述当前场景的plunkr.
请建议一种方法,我可以在其中翻译插入的值或表单中的文本.此外,我想知道如何在加载页面之前克服键值的闪烁.
有没有办法使用 ngx-translate 翻译 css 选择器(::after, ::before) 内容?
.custom-file-label::after {
content: "Browse"
}
Run Code Online (Sandbox Code Playgroud) internationalization translate angular-translate ngx-translate angular
angularjs ×8
javascript ×4
angular ×1
datepicker ×1
json ×1
sanitization ×1
translate ×1
translation ×1
xss ×1