slanted-gamedev-toolz
Version:
A slanted mix of tools for your brilliant ideas in game design.
49 lines (48 loc) • 1.57 kB
JavaScript
import { useCallback, useMemo } from "react";
import { getMenuText } from "./LocalizationSelect";
export const getLangCode = () => {
const langCode = localStorage.getItem("langCode");
return langCode || "";
};
export const useLocalization = () => {
const setLanguage = useCallback((code) => {
// when a flag is clicked
localStorage.setItem("langCode", code);
window.location.reload();
}, []);
const langCode = useMemo(() => {
return getLangCode();
}, []);
const getLocalizedText = useCallback((text) => {
return getMenuText(text, langCode);
}, [langCode]);
return { setLanguage, langCode, getLocalizedText };
};
export const getLocalizedTextRaw = (localizedLine) => {
if (!localizedLine) {
return "";
}
const langCode = (localStorage.getItem("langCode") || "");
if (langCode)
return localizedLine?.[langCode];
return localizedLine._en;
};
export const getLocalizedDynamicTextRaw = (localizedLine, val, val2, val3) => {
if (!localizedLine) {
return "";
}
const langCode = (localStorage.getItem("langCode") || "");
if (langCode) {
const res = localizedLine?.[langCode](val, val2, val3);
if (!res)
console.error(val, val2, val3);
if (typeof res !== "string") {
console.error(`getLocalizedDynamicTextRaw must return a string`);
}
return res;
}
if (!localizedLine) {
console.error(`localizedLine`);
}
return localizedLine._en(val, val2, val3);
};