我有一个支持 30 多种语言的小应用程序。我曾经react-intl
完成我的任务。在react-intl
我必须导入每个本地文件大约 7-8kbs 的每个语言环境,而我想减少这些不必要的导入并且只想导入一个文件
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.');
});
现在ca
,cs
等hu
包含array of objects
从各自js
文件返回的内容。
我尝试使用 XHR,但没有返回对象数组,而是获得了 .js 文件中编写的代码。有什么方法可以动态导入 js 文件,或者是否可以从 XMLHttpRequest 返回的代码中获取对象数组。
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;
}