mealie/frontend/composables/use-locales/use-locales.ts
Michael Genson 10ba4d2d7f
feat: RTL Support for RTL Languages (Hebrew, Arabic) (#2832)
* add language direction to locale generation

* apply language direction when setting language

---------

Co-authored-by: boc-the-git <3479092+boc-the-git@users.noreply.github.com>
2024-01-19 16:56:36 +00:00

44 lines
1.1 KiB
TypeScript

import { computed, useContext } from "@nuxtjs/composition-api";
import { LOCALES } from "./available-locales";
export const useLocales = () => {
const { i18n, $vuetify } = useContext();
function getLocale(value: string) {
const currentLocale = LOCALES.filter((locale) => locale.value === value);
return currentLocale.length ? currentLocale[0] : null;
}
const locale = computed<string>({
get() {
// dirty hack
$vuetify.lang.current = i18n.locale;
const currentLocale = getLocale(i18n.locale);
if (currentLocale) {
$vuetify.rtl = currentLocale.dir === "rtl";
}
return i18n.locale;
},
set(value) {
i18n.setLocale(value);
// this does not persist after window reload :-(
$vuetify.lang.current = value;
const currentLocale = getLocale(value);
if (currentLocale) {
$vuetify.rtl = currentLocale.dir === "rtl";
}
// Reload the page to update the language - not all strings are reactive
window.location.reload();
},
});
return {
locale,
locales: LOCALES,
i18n,
};
};