Глобализация 1.x с библиотекой DevExtreme

У меня есть вопрос с DevExtreme v.16.1 в сочетании с Globalize 1.x. Они обновлены с 0.x до 1.x, и я не могу заставить его работать с момента обновления.

Я поместил загрузку librries во внешний файл и загрузил оставшуюся часть приложения после выполнения обещания.

Это важная часть моего localize.js

$(function () {
    MK.localisation.init = $.when(
        // CLDR libraries for NL-nl
        $.getJSON("js/localization/nl/ca-gregorian.json"),
        $.getJSON("js/localization/nl/numbers.json"),
        $.getJSON("js/localization/nl/currencies.json"),

        // CLDR libraries for DE-de
        $.getJSON("js/localization/de/ca-gregorian.json"),
        $.getJSON("js/localization/de/numbers.json"),
        $.getJSON("js/localization/de/currencies.json"),

        // CLDR libraries for EN-uk
        $.getJSON("js/localization/en/ca-gregorian.json"),
        $.getJSON("js/localization/en/numbers.json"),
        $.getJSON("js/localization/en/currencies.json"),

        //additional CLDR libraries
        $.getJSON("js/cldr/supplemental/likelySubtags.json"),
        $.getJSON("js/cldr/supplemental/timeData.json"),
        $.getJSON("js/cldr/supplemental/weekData.json"),
        $.getJSON("js/cldr/supplemental/currencyData.json"),
        $.getJSON("js/cldr/supplemental/numberingSystems.json")
    ).then(function () {
        // Normalize $.get results, we only need the JSON, not the request statuses.
        return [].slice.apply(arguments, [0]).map(function (result) {
            return result[0];
        });
    }).then(
        Globalize.load
    ).then(function () {
        return $.when(
            $.getJSON("js/localization/nl/dx.all.nl.json"),
            $.getJSON("js/localization/nl/localization.nl.json"),
            $.getJSON("js/localization/de/dx.all.de.json"),
            $.getJSON("js/localization/de/localization.de.json"),
            $.getJSON("js/localization/en/dx.all.en.json"),
            $.getJSON("js/localization/en/localization.en.json")
        ).done(function (r1,r2,r3,r4,r5,r6) {
            Globalize.loadMessages(r1[0]);
            Globalize.loadMessages(r2[0]);
            Globalize.loadMessages(r3[0]);
            Globalize.loadMessages(r4[0]);
            Globalize.loadMessages(r5[0]);
            Globalize.loadMessages(r6[0]);
            Globalize.locale("nl");
            $.each(MK.config.navigation, function () {
                if (this.title.indexOf('@') === 0) {
                    this.title = Globalize.formatMessage(this.title.substring(1));
                }
            });           
        });
    });

Если я поставлю точку останова в Globalize.locale("nl"), я вижу, что все сообщения загружаются внутри объекта Globalize.

Я вызываю эту функцию вверху моего index.js следующим образом:

$(function () {

    //setup localisation
    MK.localisation.init.done(function () {
        Globalize.locale("de");
        //rest of the app decalration follows here
    })

Я также могу без проблем использовать перевод в JavaScript

Globalize.formatMessage("someString")

Однако модули DevExtreme не переведены. Они остаются на английском языке. Также возможно разрешить перевод строк непосредственно внутри представления с помощью синтаксиса @someString. Это не работает со строками, которые я объявил. Однако он работает со строками в строках, поэтому синтаксический анализ работает.

Я подозреваю, что проблемы с синхронизацией, может быть, виды анализируются до загрузки строк? Не могу решить проблему, хотя, следуя руководству devextreme до точки, я думаю...

http://js.devexpress.com/Documentation/Guide/SPA_Framework/Localization/?version=16_1&approach=Knockout

0 ответов

Другие вопросы по тегам