47 lines
2.9 KiB
TypeScript
47 lines
2.9 KiB
TypeScript
import type { Language } from '@/contexts/language';
|
|
|
|
export interface LanguageOption {
|
|
code: Language;
|
|
name: string;
|
|
nativeName: string;
|
|
flag: string;
|
|
/** Kept for stored preferences, but omitted from the visible picker. */
|
|
hidden?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Every locale the picker can show. Kept out of the component file so Fast
|
|
* Refresh still works (a component module must only export components).
|
|
*/
|
|
export const LANGUAGE_OPTIONS: LanguageOption[] = [
|
|
{ code: 'en', name: 'English', nativeName: 'English', flag: '/flags/gb-eng.svg' },
|
|
{ code: 'es', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸' },
|
|
{ code: 'ca', name: 'Catalan', nativeName: 'Català', flag: '/flags/ca.svg' },
|
|
{ code: 'eu', name: 'Basque', nativeName: 'Euskara', flag: '/flags/eu.svg' },
|
|
{ code: 'gl', name: 'Galician', nativeName: 'Galego', flag: '/flags/gl.svg' },
|
|
{ code: 'pt', name: 'Portuguese (Brazil)', nativeName: 'Português (Brasil)', flag: '🇧🇷' },
|
|
{ code: 'pt-PT', name: 'Portuguese (Portugal)', nativeName: 'Português (Portugal)', flag: '🇵🇹' },
|
|
{ code: 'fr', name: 'French', nativeName: 'Français', flag: '🇫🇷' },
|
|
{ code: 'de', name: 'German', nativeName: 'Deutsch', flag: '🇩🇪' },
|
|
{ code: 'it', name: 'Italian', nativeName: 'Italiano', flag: '🇮🇹' },
|
|
{ code: 'nl', name: 'Dutch', nativeName: 'Nederlands', flag: '🇳🇱' },
|
|
{ code: 'pl', name: 'Polish', nativeName: 'Polski', flag: '🇵🇱' },
|
|
{ code: 'ru', name: 'Russian', nativeName: 'Русский', flag: '🇷🇺' },
|
|
{ code: 'ko', name: 'Korean', nativeName: '한국어', flag: '🇰🇷' },
|
|
// North Korean reuses the Korean dictionary; hide the duplicate from the
|
|
// picker while keeping the code valid for existing stored preferences.
|
|
{ code: 'ko-KP', name: 'Korean (North)', nativeName: '조선어', flag: '🇰🇵', hidden: true },
|
|
{ code: 'th', name: 'Thai', nativeName: 'ไทย', flag: '🇹🇭' },
|
|
{ code: 'ja', name: 'Japanese', nativeName: '日本語', flag: '🇯🇵' },
|
|
{ code: 'zh-CN', name: 'Chinese (Simplified)', nativeName: '简体中文', flag: '🇨🇳' },
|
|
{ code: 'zh-TW', name: 'Chinese (Traditional)', nativeName: '繁體中文', flag: '🇹🇼' },
|
|
{ code: 'uk', name: 'Ukrainian', nativeName: 'Українська', flag: '🇺🇦' },
|
|
{ code: 'id', name: 'Indonesian', nativeName: 'Bahasa Indonesia', flag: '🇮🇩' },
|
|
{ code: 'cs', name: 'Czech', nativeName: 'Čeština', flag: '🇨🇿' },
|
|
{ code: 'ro', name: 'Romanian', nativeName: 'Română', flag: '🇷🇴' },
|
|
{ code: 'sv', name: 'Swedish', nativeName: 'Svenska', flag: '🇸🇪' },
|
|
{ code: 'el', name: 'Greek', nativeName: 'Ελληνικά', flag: '🇬🇷' },
|
|
{ code: 'vi', name: 'Vietnamese', nativeName: 'Tiếng Việt', flag: '🇻🇳' },
|
|
{ code: 'tr', name: 'Turkish', nativeName: 'Türkçe', flag: '🇹🇷' },
|
|
{ code: 'hi', name: 'Hindi', nativeName: 'हिन्दी', flag: '🇮🇳' },
|
|
];
|