components/lokalisointi/kieli.ts
module KieliService {
let _$rootScope, _$state, _$stateParams, _$translate;
export const init = ($rootScope, $state, $stateParams, $translate) => {
_$rootScope = $rootScope;
_$state = $state;
_$stateParams = $stateParams;
_$translate = $translate;
};
export let SISALTOKIELET = [
"fi",
"sv",
"se",
"en"
];
let
sisaltokieli = "fi",
uikieli = "fi",
stateInited = false;
export let SISALTOKIELETMAP = {};
export const orderFn = (kielikoodi) => _.indexOf(SISALTOKIELET, kielikoodi);
export const isValidKielikoodi = (kielikoodi) => _.indexOf(SISALTOKIELET, kielikoodi) > -1;
export const getSisaltokieli = () => sisaltokieli;
export const getSisaltokielet = () => SISALTOKIELET;
export const getUiKieli = () => uikieli;
export const UIKIELET = [
"fi",
"sv",
"en"
];
export const setSisaltokielet = (kielikoodit) => {
SISALTOKIELET = kielikoodit;
SISALTOKIELETMAP = _.zipObject(kielikoodit, _.map(kielikoodit, _.constant(true)));
_$rootScope.$broadcast("update:sisaltokielet");
};
export const setSisaltokieli = (kielikoodi) => {
if (_.indexOf(SISALTOKIELET, kielikoodi) > -1) {
const old = sisaltokieli;
sisaltokieli = kielikoodi;
if (old !== kielikoodi) {
_$rootScope.$broadcast("changed:sisaltokieli", kielikoodi);
}
}
};
export const setUiKieli = (kielikoodi, doStateChange?) => {
if (isValidKielikoodi(kielikoodi) &&
(kielikoodi !== uikieli || (stateInited && _$stateParams.lang !== kielikoodi))) {
if (_.isUndefined(doStateChange) || doStateChange === true) {
_$state.go(_$state.current.name, _.merge(_$stateParams, {lang: kielikoodi}), {reload: true});
}
uikieli = kielikoodi;
moment.lang(kielikoodi);
_$translate.use(kielikoodi);
_$rootScope.$broadcast("changed:uikieli", kielikoodi);
}
};
export const validoi = (olio) => {
let errors = [];
if (!olio) {
errors.push("tekstikentalla-ei-lainkaan-sisaltoa");
}
else {
_.each(SISALTOKIELET, (kieli) => {
if (!olio[kieli]) {
errors.push("tekstikentalla-ei-sisaltoa-kielella-" + kieli);
}
});
}
return errors;
};
}
angular.module("app")
.run(($injector) => $injector.invoke(KieliService.init));