80 lines
3.4 KiB
TypeScript
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 };
|
|
}
|