Ich habe eine kleine App, die 30+ Sprachen unterstützt. Ich habe react-intl
verwendet, um meine Aufgabe zu erfüllen. In react-intl
bekam ich jedes Gebietsschema importieren, in dem jede lokale Datei herum 7-8kbs, während ich diese unnötigen Importe reduzieren wollen und nur eine DateiErhalte eine .js-Datei dynamisch, anstatt sie zu importieren
app.js
import {IntlProvider, addLocaleData} from 'react-intl'
import ca from 'react-intl/locale-data/ca'
import cs from 'react-intl/locale-data/cs'
...
import hu from 'react-intl/locale-data/hu'
import id from 'react-intl/locale-data/id'
import enMessages from '../assets/translations/en.json'
Translations.getLocale('fr').then(function(localeData){
addLocaleData(localeData);
console.log("localeData");
console.log(localeData); //Code instead of array of objects
}, function(status) {
alert('Something went wrong.');
});
Nun ist die ca
, importieren möchten cs
, hu
usw. enthalten array of objects
zurückgegeben von den entsprechenden js
Dateien.
Ich versuchte mit XHR, aber anstatt das Array von Objekten zurückzugeben, bekomme ich den Code, der in der .js-Datei geschrieben wird. Gibt es eine Möglichkeit, die js-Datei dynamisch zu importieren oder wenn ich das Array von Objekten aus dem von XMLHttpRequest zurückgegebenen Code abrufen kann.
Translations.js
getLocale: function(lang, successHandler, errorHandler){
var url = 'http://localhost/img/' + lang + '.js';
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
//xhr.responseType = 'application/javascript';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
} else {
reject(status);
}
};
xhr.send();
});
//return message;
}