2

带有 TypeScript (tsc 2.1.4)、JSPM 和 aurelia-materialize-bridge@0.20.6 的 Aurelia 项目。

项目是多语言的(翻译在数据库中,并在需要的地方通过“LanguageService”注入)所以我们也需要翻译的MdDatePicker实例。

我找到了一种方法,如何在视图/视图模型中以这种方式翻译诸如monthsFullmonthsShorttoday ...每个MdDatePicker实例(实际上是pickadate.js选择器的属性)之类的属性:

    <input md-datepicker="container: body;value.two-way: fromDate;"
           md-datepicker.ref="dpickerFrom" 
           type="date" placeholder=${dtPickTitle} />

    attached(
      var picker = (<any>this).dpickerFrom.picker;    
      var settings = picker.component.settings;

      settings.monthsFull = this.languageService.datePickerTran.monthsFull; // e.g. [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ]
      settings.today = this.languageService.datePickerTran.today; //e.g."Heute"
      picker.render(true);
    )

我试图在 App.ts 中全局访问所需的属性:

import * as bridge from 'aurelia-materialize-bridge';

 constructor (){
     bridge.MdDatePicker.prototype;//Can't find where to put translations
} 

但我找不到需要的。

这是正确的方法吗?考虑到给定的平台,有没有办法在一个地方为所有实例设置这个属性(默认值)?

4

2 回答 2

1

我已经告诉 OP 把我的答案发回这里。所以就这样了.. :-)

这里有一个options可绑定的:https ://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge/blob/master/src/datepicker/datepicker.js#L19

该对象在此处合并:https ://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge/blob/master/src/datepicker/datepicker.js#L64

结果用于在这里初始化日期选择器:https ://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge/blob/master/src/datepicker/datepicker.js#L76

现在,如果您访问了这些链接,您可能已经在此处看到了 i18n 配置的注释示例(德语字符串):https ://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge/blob/master/src/ datepicker/datepicker.js#L47-L60

因此,如果您在options可绑定中设置 i18n 属性,它可以工作..

<input
  md-datepicker="container: body; value.two-way: selectedDate; options.bind:i18nOptions;"
  type="date" placeholder="pick a date"/>

i18nOptions可能在哪里:

{
   selectMonths: true, // Creates a dropdown to control month
   selectYears: 15, // Creates a dropdown of 15 years to control year
   monthsFull: [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ],
   monthsShort: [ 'Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez' ],
   weekdaysFull: [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ],
   weekdaysShort: [ 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
   today: 'Heute',
   clear: 'Löschen',
   close: 'Schließen',
   firstDay: 1,
   format: 'dddd, dd. mmmm yyyy',
   formatSubmit: 'yyyy/mm/dd'
}

我绝对想让它更明确。

于 2017-04-07T09:02:45.400 回答
0

我有类似的答案

在我看来我有

<div class="input-field col s6">                        
    @Html.EditorFor(model => model.FECHAI_VIG, new { htmlAttributes = new { @id = "fechai_vig", @class = "form-control datepicker", @onkeyup = "borrar(this);" } })
    @Html.LabelFor(model => model.FECHAI_VIG, "De", htmlAttributes: new { @class = "active" })                        
</div>

并且在脚本中

<script>
    var elemth = document.querySelector('#fechai_vig');
    var optionsth = { 
        format: 'dd/mm/yyyy',
        i18n: {
            clear: 'Limpiar',
            today: 'Hoy',
            done: 'Seleccionar',
            previousMonth: '‹',
            nextMonth: '›',
            months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
            monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
            weekdaysShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
            weekdays: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
            weekdaysAbbrev: ['D', 'L', 'M', 'X', 'J', 'V', 'S']
        }
    };
    var instanceth = M.Datepicker.init(elemth, optionsth);  
</script>
于 2018-04-18T18:52:35.263 回答