@jay-js/system
Version:
A powerful and flexible TypeScript library for UI, state management, lazy loading, routing and managing draggable elements in modern web applications.
30 lines (29 loc) • 1.18 kB
JavaScript
import { i18nOptions } from "../modules/i18nDefineOptions.js";
import { i18nContext } from "../modules/i18nContext.js";
export function useI18n() {
return (path, data, options)=>{
let result = i18nContext.get().data;
if (!result) {
return (options === null || options === void 0 ? void 0 : options.default) || path;
}
if (!i18nOptions.nestedKeys) {
let translation = result[path] || (options === null || options === void 0 ? void 0 : options.default) || path;
if (data) {
translation = String(translation).replace(/{{(.*?)}}/g, (match, p1)=>{
return data[p1.trim()] || match;
});
}
return translation;
}
const pathArray = path.split(".");
for (const key of pathArray){
result = result[key] || (options === null || options === void 0 ? void 0 : options.default) || key;
if (data) {
result = String(result).replace(/{{(.*?)}}/g, (match, p1)=>{
return data[p1.trim()] || match;
});
}
}
return result;
};
}