refactor(i18n): merge tools scoped locales with global ones (#612)

This commit is contained in:
Corentin THOMASSET authored and GitHub committed 2023-09-03 20:07:45 +00:00
1 parent 7ab9204e96
commit 233d5565f6
3 files changed
+25 -6

No files matched your search

+20 -4
View File
@@ -1,6 +1,22 @@
import type { App } from 'vue';
import type { Plugin } from 'vue';
import { createI18n } from 'vue-i18n';
import messages from '@intlify/unplugin-vue-i18n/messages';
import baseMessages from '@intlify/unplugin-vue-i18n/messages';
import _ from 'lodash';
import { parse as parseYaml } from 'yaml';
const i18nFiles = import.meta.glob('../tools/*/locales/**.yml', { as: 'raw' });
const messagesByTools = await Promise.all(_.map(i18nFiles, async (fileDescriptor, path) => {
const [, locale] = path.match(/\.\/tools\/.*?\/locales\/(.*)\.ya?ml$/i) ?? [];
const content = parseYaml(await fileDescriptor());
return { [locale]: content };
}));
const messages = _.merge(
baseMessages,
_.merge({}, ...messagesByTools),
);
const i18n = createI18n({
legacy: false,
@@ -8,8 +24,8 @@ const i18n = createI18n({
messages,
});
export const i18nPlugin = {
install: (app: App) => {
export const i18nPlugin: Plugin = {
install: (app) => {
app.use(i18n);
},
};