2022-10-20 21:13:13 +00:00

80 lines
3.4 KiB
TypeScript

export interface Language {
code: string;
name: string;
}
const languageList: Language[] = [
{ code: 'ar', name: 'العربية' }, // Arabic
{ code: 'bg', name: 'Български' }, // Bulgarian
{ code: 'bs', name: 'Bosanski' }, // Bosnian
{ code: 'ca', name: 'Català' }, // Catalan
{ code: 'cs', name: 'Čeština' }, // Czech
{ code: 'da', name: 'Dansk' }, // Danish
{ code: 'de', name: 'Deutsch' }, // German
{ code: 'et', name: 'Eesti' }, // Estonian
{ code: 'el', name: 'Ελληνικά' }, // Greek
{ code: 'en', name: 'English' }, // English
{ code: 'es', name: 'Español' }, // Spanish
{ code: 'eo', name: 'Esperanto' }, // Esperanto
{ code: 'eu', name: 'Euskara' }, // Basque
{ code: 'fa', name: 'فارسی' }, // Persian
{ code: 'fr', name: 'Français' }, // French
{ code: 'gl', name: 'Galego' }, // Galician
{ code: 'ko', name: '한국어' }, // Korean
{ code: 'hr', name: 'Hrvatski' }, // Croatian
{ code: 'id', name: 'Bahasa Indonesia' },// Indonesian
{ code: 'hi', name: 'हिन्दी' }, // Hindi
{ code: 'it', name: 'Italiano' }, // Italian
{ code: 'he', name: 'עברית' }, // Hebrew
{ code: 'ka', name: 'ქართული' }, // Georgian
{ code: 'lv', name: 'Latviešu' }, // Latvian
{ code: 'lt', name: 'Lietuvių' }, // Lithuanian
{ code: 'hu', name: 'Magyar' }, // Hungarian
{ code: 'mk', name: 'Македонски' }, // Macedonian
{ code: 'ms', name: 'Bahasa Melayu' }, // Malay
{ code: 'nl', name: 'Nederlands' }, // Dutch
{ code: 'ja', name: '日本語' }, // Japanese
{ code: 'nb', name: 'Norsk' }, // Norwegian Bokmål
{ code: 'nn', name: 'Norsk Nynorsk' }, // Norwegian Nynorsk
{ code: 'pl', name: 'Polski' }, // Polish
{ code: 'pt', name: 'Português' }, // Portuguese
{ code: 'pt-BR', name: 'Português (Brazil)' }, // Portuguese (Brazil)
{ code: 'ro', name: 'Română' }, // Romanian
{ code: 'ru', name: 'Русский' }, // Russian
{ code: 'sk', name: 'Slovenčina' }, // Slovak
{ code: 'sl', name: 'Slovenščina' }, // Slovenian
{ code: 'sr', name: 'Српски / srpski' }, // Serbian
{ code: 'sh', name: 'Srpskohrvatski / српскохрватски' },// Serbo-Croatian
{ code: 'fi', name: 'Suomi' }, // Finnish
{ code: 'sv', name: 'Svenska' }, // Swedish
{ code: 'th', name: 'ไทย' }, // Thai
{ code: 'tr', name: 'Türkçe' }, // Turkish
{ code: 'uk', name: 'Українська' }, // Ukrainian
{ code: 'vi', name: 'Tiếng Việt' }, // Vietnamese
{ code: 'zh', name: '中文' }, // Chinese
];
const languageDict = {};
languageList.forEach(lang => {
languageDict[lang.code] = lang
});
export const languages = languageDict;
// expects path to start with a leading '/'
export function parseLanguageUrl(path) {
const parts = path.split('/').filter(part => part.length);
let lang;
let rest;
if (languages[parts[0]]) {
lang = parts[0];
rest = '/' + parts.slice(1).join('/');
} else {
lang = null;
rest = '/' + parts.join('/');
}
if (lang === 'en') {
lang = null;
}
return { lang, path: rest };
}