xref: /openbmc/webui-vue/src/i18n.js (revision 8132399c)
1cbcd2136SDixsie Wolmersimport Vue from 'vue';
2cbcd2136SDixsie Wolmersimport VueI18n from 'vue-i18n';
3cbcd2136SDixsie Wolmers
4cbcd2136SDixsie WolmersVue.use(VueI18n);
5cbcd2136SDixsie Wolmers
6cbcd2136SDixsie Wolmersfunction loadLocaleMessages() {
7cbcd2136SDixsie Wolmers  const locales = require.context(
8cbcd2136SDixsie Wolmers    './locales',
9cbcd2136SDixsie Wolmers    true,
10*8132399cSEd Tanous    /[A-Za-z0-9-_,\s]+\.json$/i,
11cbcd2136SDixsie Wolmers  );
12cbcd2136SDixsie Wolmers  const messages = {};
13602e98aaSDerick Montague  locales.keys().forEach((key) => {
14cbcd2136SDixsie Wolmers    const matched = key.match(/([A-Za-z0-9-_]+)\./i);
15cbcd2136SDixsie Wolmers    if (matched && matched.length > 1) {
16cbcd2136SDixsie Wolmers      const locale = matched[1];
17cbcd2136SDixsie Wolmers      messages[locale] = locales(key);
18cbcd2136SDixsie Wolmers    }
19cbcd2136SDixsie Wolmers  });
20cbcd2136SDixsie Wolmers  return messages;
21cbcd2136SDixsie Wolmers}
22cbcd2136SDixsie Wolmers
23cbcd2136SDixsie Wolmersexport default new VueI18n({
24c85395f2SDixsie Wolmers  // Get default locale from local storage
255ee04ef5SSukanya Pandey  locale: window.localStorage.getItem('storedLanguage'),
26c85395f2SDixsie Wolmers  // Locales that don't exist will fallback to English
27c85395f2SDixsie Wolmers  fallbackLocale: 'en-US',
28c85395f2SDixsie Wolmers  // Falling back to fallbackLocale generates two console warnings
29c85395f2SDixsie Wolmers  // Silent fallback suppresses console warnings when using fallback
30c85395f2SDixsie Wolmers  silentFallbackWarn: true,
31602e98aaSDerick Montague  messages: loadLocaleMessages(),
32cbcd2136SDixsie Wolmers});
33