Skip to content

Commit

Permalink
feat: add more languages to widget
Browse files Browse the repository at this point in the history
  • Loading branch information
mikasackermn authored and nikaaru committed Nov 4, 2024
1 parent 87f706e commit bc37fe9
Show file tree
Hide file tree
Showing 6 changed files with 203 additions and 31 deletions.
40 changes: 38 additions & 2 deletions lingui.config.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,50 @@
/** @type {import('@lingui/conf').LinguiConfig} */
module.exports = {
locales: ['en', 'es', 'ja', 'fr', 'pt', 'zh', 'ru', 'de', 'uk', 'sv', 'fi', 'nl', 'el', 'it', 'pl'],
locales: [
'af',
'ar',
'bn',
'ca',
'da',
'de',
'el',
'en',
'es',
'fi',
'fil',
'fr',
'hi',
'hu',
'id',
'it',
'ja',
'ko',
'lt',
'ms',
'nl',
'pl',
'pt',
'ru',
'sk',
'sr',
'sv',
'sw',
'th',
'tr',
'uk',
'ur',
'vi',
'zh-CN',
'zh-TW',
],
sourceLocale: 'en',
format: 'po',
catalogs: [
{
path: '<rootDir>/translations/{locale}',
include: ['<rootDir>/widget/embedded/src', '<rootDir>/widget/ui/src'],
exclude: ['**/node_modules/**'],
}
},
],
rootDir: '.',
};
2 changes: 2 additions & 0 deletions scripts/crowdin/command.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { PROJECT_ID, TOKEN } from "./constants.mjs";
import { CrowdinError } from "../common/errors.mjs";
import {
checkPreTranslateStatus,
getLanguageIds,
Expand All @@ -7,6 +8,7 @@ import {
sendPreTranslateRequest
} from "./pretranslate.mjs";


const preTranslationOption = {
method: 'mt',
autoApproveOption: 'all',
Expand Down
1 change: 1 addition & 0 deletions scripts/crowdin/utils.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {TOKEN } from "./constants.mjs";
import { CrowdinError } from "../common/errors.mjs";

// Reusable function to handle fetch requests with authorization headers
export const fetchDataWithAuthorization = async (url, method = 'GET', body = null) => {
Expand Down
74 changes: 64 additions & 10 deletions widget/embedded/src/constants/languages.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
import type { FlagPropTypes, Language } from '@rango-dev/ui';

import {
Bengali,
Catalonia,
Chinese,
Denmark,
English,
Finland,
French,
German,
Greece,
Hungary,
India,
Indonesian,
Italian,
Japanese,
Korea,
Lithuania,
Malay,
Netherlands,
Pakistan,
Philippines,
Poland,
Portuguese,
Russian,
SaudiArabia,
Serbia,
Slovakia,
SouthAfrica,
Spanish,
Swahili,
Swedish,
Thai,
Turkish,
Ukrainian,
Vietnamese,
} from '@rango-dev/ui';

export type LanguageItem = {
Expand All @@ -26,21 +45,56 @@ export type LanguageItem = {
};

export const LANGUAGES: LanguageItem[] = [
{ title: 'Afrikaans', label: 'Afrikaans', local: 'af', SVGFlag: SouthAfrica },
{ title: 'Arabic', label: 'عربي', local: 'ar', SVGFlag: SaudiArabia },
{ title: 'Bengali', label: 'বাংলা', local: 'bn', SVGFlag: Bengali },
{ title: 'Catalan', label: 'Català', local: 'ca', SVGFlag: Catalonia },
{
title: 'Chinese (Simplified)',
label: '简体中文',
local: 'zh-CN',
SVGFlag: Chinese,
},
{
title: 'Chinese (Traditional)',
label: '中文(繁體)',
local: 'zh-TW',
SVGFlag: Chinese,
},
{ title: 'Danish', label: 'Dansk', local: 'da', SVGFlag: Denmark },
{ title: 'Dutch', label: 'Nederlands', local: 'nl', SVGFlag: Netherlands },
{ title: 'English', label: 'English', local: 'en', SVGFlag: English },
{ title: 'Spanish', label: 'Español', local: 'es', SVGFlag: Spanish },
{ title: 'Filipino', label: 'Filipino', local: 'fil', SVGFlag: Philippines },
{ title: 'Finnish', label: 'Suomalainen', local: 'fi', SVGFlag: Finland },
{ title: 'French', label: 'Français', local: 'fr', SVGFlag: French },
{ title: 'Japanese', label: '日本語', local: 'ja', SVGFlag: Japanese },
{ title: 'Portuguese', label: 'Português', local: 'pt', SVGFlag: Portuguese },
{ title: 'Chinese', label: '中国人', local: 'zh', SVGFlag: Chinese },
{ title: 'Russian', label: 'Русский', local: 'ru', SVGFlag: Russian },
{ title: 'German', label: 'Deutsch', local: 'de', SVGFlag: German },
{ title: 'Ukrainian', label: 'Україні', local: 'uk', SVGFlag: Ukrainian },
{ title: 'Swedish', label: 'svenska', local: 'sv', SVGFlag: Swedish },
{ title: 'Finnish', label: 'Suomalainen', local: 'fi', SVGFlag: Finland },
{ title: 'Dutch', label: 'Nederlands', local: 'nl', SVGFlag: Netherlands },
{ title: 'Greek', label: 'Grieks', local: 'el', SVGFlag: Greece },
{ title: 'Greek', label: 'ελληνικά', local: 'el', SVGFlag: Greece },
{ title: 'Hindi', label: 'हिंदी', local: 'hi', SVGFlag: India },
{ title: 'Hungarian', label: 'Magyar', local: 'hu', SVGFlag: Hungary },
{ title: 'Indonesian', label: 'Indonesia', local: 'id', SVGFlag: Indonesian },
{ title: 'Italian', label: 'Italiana', local: 'it', SVGFlag: Italian },
{ title: 'Japanese', label: '日本語', local: 'ja', SVGFlag: Japanese },
{ title: 'Korean', label: '한국인', local: 'ko', SVGFlag: Korea },
{ title: 'Lithuanian', label: 'Lietuvių', local: 'lt', SVGFlag: Lithuania },
{ title: 'Malay', label: 'Melayu', local: 'ms', SVGFlag: Malay },
{ title: 'Polish', label: 'Polski', local: 'pl', SVGFlag: Poland },
{ title: 'Portuguese', label: 'Português', local: 'pt', SVGFlag: Portuguese },
{ title: 'Russian', label: 'Русский', local: 'ru', SVGFlag: Russian },
{ title: 'Serbian', label: 'Cрпски', local: 'sr', SVGFlag: Serbia },
{ title: 'Slovak', label: 'Slovenský', local: 'sk', SVGFlag: Slovakia },
{ title: 'Spanish', label: 'Español', local: 'es', SVGFlag: Spanish },
{ title: 'Swahili', label: 'Kiswahili', local: 'sw', SVGFlag: Swahili },
{ title: 'Swedish', label: 'Svenska', local: 'sv', SVGFlag: Swedish },
{ title: 'Thai', label: 'แบบไทย', local: 'th', SVGFlag: Thai },
{ title: 'Turkish', label: 'Türkçe', local: 'tr', SVGFlag: Turkish },
{ title: 'Ukrainian', label: 'Yкраїні', local: 'uk', SVGFlag: Ukrainian },
{ title: 'Urdu', label: 'اردو', local: 'ur', SVGFlag: Pakistan },
{
title: 'Vietnamese',
label: 'Tiếng Việt',
local: 'vi',
SVGFlag: Vietnamese,
},
];

export const DEFAULT_LANGUAGE = 'en';
57 changes: 48 additions & 9 deletions widget/playground/src/constants/languages.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,74 @@
import {
Bengali,
Catalonia,
Chinese,
Denmark,
English,
Finland,
French,
German,
Greece,
Hungary,
India,
Indonesian,
Italian,
Japanese,
Korea,
Lithuania,
Malay,
Netherlands,
Pakistan,
Philippines,
Poland,
Portuguese,
Russian,
SaudiArabia,
Serbia,
Slovakia,
SouthAfrica,
Spanish,
Swahili,
Swedish,
Thai,
Turkish,
Ukrainian,
Vietnamese,
} from '@rango-dev/ui';

export const LANGUAGES = [
{ name: 'Afrikaans', value: 'af', Icon: SouthAfrica },
{ name: 'Arabic', value: 'ar', Icon: SaudiArabia },
{ name: 'Bengali', value: 'bn', Icon: Bengali },
{ name: 'Catalan', value: 'ca', Icon: Catalonia },
{ name: 'Chinese (Simplified)', value: 'zh-CN', Icon: Chinese },
{ name: 'Chinese (Traditional)', value: 'zh-TW', Icon: Chinese },
{ name: 'Danish', value: 'da', Icon: Denmark },
{ name: 'Dutch', value: 'nl', Icon: Netherlands },
{ name: 'English', value: 'en', Icon: English },
{ name: 'Spanish', value: 'es', Icon: Spanish },
{ name: 'Filipino', value: 'fil', Icon: Philippines },
{ name: 'Finnish', value: 'fi', Icon: Finland },
{ name: 'French', value: 'fr', Icon: French },
{ name: 'Japanese', value: 'ja', Icon: Japanese },
{ name: 'Portuguese', value: 'pt', Icon: Portuguese },
{ name: 'Chinese', value: 'zh', Icon: Chinese },
{ name: 'Russian', value: 'ru', Icon: Russian },
{ name: 'German', value: 'de', Icon: German },
{ name: 'Ukrainian', value: 'uk', Icon: Ukrainian },
{ name: 'Swedish', value: 'sv', Icon: Swedish },
{ name: 'Finnish', value: 'fi', Icon: Finland },
{ name: 'Dutch', value: 'nl', Icon: Netherlands },
{ name: 'Greek', value: 'el', Icon: Greece },
{ name: 'Hindi', value: 'hi', Icon: India },
{ name: 'Hungarian', value: 'hu', Icon: Hungary },
{ name: 'Indonesian', value: 'id', Icon: Indonesian },
{ name: 'Italian', value: 'it', Icon: Italian },
{ name: 'Japanese', value: 'ja', Icon: Japanese },
{ name: 'Korean', value: 'ko', Icon: Korea },
{ name: 'Lithuanian', value: 'lt', Icon: Lithuania },
{ name: 'Malay', value: 'ms', Icon: Malay },
{ name: 'Polish', value: 'pl', Icon: Poland },
{ name: 'Portuguese', value: 'pt', Icon: Portuguese },
{ name: 'Russian', value: 'ru', Icon: Russian },
{ name: 'Serbian', value: 'sr', Icon: Serbia },
{ name: 'Slovak', value: 'sk', Icon: Slovakia },
{ name: 'Spanish', value: 'es', Icon: Spanish },
{ name: 'Swahili', value: 'sw', Icon: Swahili },
{ name: 'Swedish', value: 'sv', Icon: Swedish },
{ name: 'Thai', value: 'th', Icon: Thai },
{ name: 'Turkish', value: 'tr', Icon: Turkish },
{ name: 'Ukrainian', value: 'uk', Icon: Ukrainian },
{ name: 'Urdu', value: 'ur', Icon: Pakistan },
{ name: 'Vietnamese', value: 'vi', Icon: Vietnamese },
];
60 changes: 50 additions & 10 deletions widget/ui/src/components/I18nManager/I18nManager.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,38 +11,78 @@ import React, { useEffect, useReducer } from 'react';
* "translations/*": ["../../translations/*"]
*}
*/
import { messages as afMessages } from '../../../../../translations/af.js';
import { messages as arMessages } from '../../../../../translations/ar.js';
import { messages as bnMessages } from '../../../../../translations/bn.js';
import { messages as caMessages } from '../../../../../translations/ca.js';
import { messages as daMessages } from '../../../../../translations/da.js';
import { messages as deMessages } from '../../../../../translations/de.js';
import { messages as elMessages } from '../../../../../translations/el.js';
import { messages as enMessages } from '../../../../../translations/en.js';
import { messages as esMessages } from '../../../../../translations/es.js';
import { messages as fiMessages } from '../../../../../translations/fi.js';
import { messages as filMessages } from '../../../../../translations/fil.js';
import { messages as frMessages } from '../../../../../translations/fr.js';
import { messages as hiMessages } from '../../../../../translations/hi.js';
import { messages as huMessages } from '../../../../../translations/hu.js';
import { messages as idMessages } from '../../../../../translations/id.js';
import { messages as itMessages } from '../../../../../translations/it.js';
import { messages as jaMessages } from '../../../../../translations/ja.js';
import { messages as koMessages } from '../../../../../translations/ko.js';
import { messages as ltMessages } from '../../../../../translations/lt.js';
import { messages as msMessages } from '../../../../../translations/ms.js';
import { messages as nlMessages } from '../../../../../translations/nl.js';
import { messages as plMessages } from '../../../../../translations/pl.js';
import { messages as ptMessages } from '../../../../../translations/pt.js';
import { messages as ruMessages } from '../../../../../translations/ru.js';
import { messages as skMessages } from '../../../../../translations/sk.js';
import { messages as srMessages } from '../../../../../translations/sr.js';
import { messages as svMessages } from '../../../../../translations/sv.js';
import { messages as swMessages } from '../../../../../translations/sw.js';
import { messages as thMessages } from '../../../../../translations/th.js';
import { messages as trMessages } from '../../../../../translations/tr.js';
import { messages as ukMessages } from '../../../../../translations/uk.js';
import { messages as zhMessages } from '../../../../../translations/zh.js';
import { messages as urMessages } from '../../../../../translations/ur.js';
import { messages as viMessages } from '../../../../../translations/vi.js';
import { messages as zh_CNMessages } from '../../../../../translations/zh-CN.js';
import { messages as zh_TWMessages } from '../../../../../translations/zh-TW.js';

const messages = {
af: afMessages,
ar: arMessages,
bn: bnMessages,
ca: caMessages,
da: daMessages,
de: deMessages,
el: elMessages,
en: enMessages,
es: esMessages,
ja: jaMessages,
fi: fiMessages,
fil: filMessages,
fr: frMessages,
hi: hiMessages,
hu: huMessages,
id: idMessages,
it: itMessages,
ja: jaMessages,
ko: koMessages,
lt: ltMessages,
ms: msMessages,
nl: nlMessages,
pl: plMessages,
pt: ptMessages,
zh: zhMessages,
ru: ruMessages,
de: deMessages,
uk: ukMessages,
sk: skMessages,
sr: srMessages,
sv: svMessages,
fi: fiMessages,
nl: nlMessages,
el: elMessages,
it: itMessages,
pl: plMessages,
sw: swMessages,
th: thMessages,
tr: trMessages,
uk: ukMessages,
ur: urMessages,
vi: viMessages,
'zh-CN': zh_CNMessages,
'zh-TW': zh_TWMessages,
};

i18n.load(messages);
Expand Down

0 comments on commit bc37fe9

Please sign in to comment.