diff --git a/client/src/components/Chat/Chat.test.js b/client/src/components/Chat/Chat.test.js index a1b6235..cf1b6ae 100644 --- a/client/src/components/Chat/Chat.test.js +++ b/client/src/components/Chat/Chat.test.js @@ -7,7 +7,7 @@ const sendEncryptedMessage = jest.fn() test('Chat Component', () => { const component = mount( - {}} focusChat={false} userId="foo" username="user" showNotice={() => {}} clearActivities={() => {}} sendEncryptedMessage={sendEncryptedMessage} /> + {}} focusChat={false} userId="foo" username="user" showNotice={() => {}} clearActivities={() => {}} sendEncryptedMessage={sendEncryptedMessage} translations={{}}/> ) const componentJSON = toJson(component) diff --git a/client/src/i18n/i18n.test.js b/client/src/i18n/i18n.test.js new file mode 100644 index 0000000..f2b7318 --- /dev/null +++ b/client/src/i18n/i18n.test.js @@ -0,0 +1,9 @@ +import { getTranslations } from './index.js' + +test('Get translation', () => { + expect(getTranslations('en').welcomeHeader).toBe("Welcome to Darkwire v2.0"); + expect(getTranslations('fr').welcomeHeader).toBe("Bienvenue sur Darkwire v2.0"); + expect(getTranslations('zh-CN').welcomeHeader).toBe("欢迎来到Darkwire v2.0"); + expect(getTranslations('en-US').welcomeHeader).toBe("Welcome to Darkwire v2.0"); + expect(getTranslations('ru-CH').welcomeHeader).toBe("Welcome to Darkwire v2.0"); +}) diff --git a/client/src/i18n/index.js b/client/src/i18n/index.js index 0d76a5b..858d2b7 100644 --- a/client/src/i18n/index.js +++ b/client/src/i18n/index.js @@ -16,6 +16,21 @@ const languagesMap = { nl } -export function getTranslations(language) { - return languagesMap[language]; +/** + * Return best match for lang and variant. + * @param {string} language string from navigator configuration or cookie. + * @returns the translation dict + */ +export function getTranslations(language = "") { + const [lang, variant] = language.split('-'); + + if (languagesMap.hasOwnProperty(`${lang}${variant}`)) { + return languagesMap[`${lang}${variant}`]; + } + + if (languagesMap.hasOwnProperty(lang)) { + return languagesMap[lang]; + } + + return languagesMap['en']; } diff --git a/client/src/reducers/app.js b/client/src/reducers/app.js index 8823468..557b812 100644 --- a/client/src/reducers/app.js +++ b/client/src/reducers/app.js @@ -1,7 +1,7 @@ import Cookie from 'js-cookie'; import {getTranslations} from 'i18n'; -const language = Cookie.get('language') || 'en'; +const language = Cookie.get('language') || navigator.language || 'en'; const initialState = { modalComponent: null,