managarten/apps-archived/memoro/apps/mobile/config/translationLanguages.ts
Till-JS 61d181fbc2 chore: archive inactive projects to apps-archived/
Move inactive projects out of active workspace:
- bauntown (community website)
- maerchenzauber (AI story generation)
- memoro (voice memo app)
- news (news aggregation)
- nutriphi (nutrition tracking)
- reader (reading app)
- uload (URL shortener)
- wisekeep (AI wisdom extraction)

Update CLAUDE.md documentation:
- Add presi to active projects
- Document archived projects section
- Update workspace configuration

Archived apps can be re-activated by moving back to apps/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 07:03:59 +01:00

97 lines
7.1 KiB
TypeScript

/**
* Supported languages for Gemini 2.0 Flash translation
* Based on official Google documentation: https://ai.google.dev/gemini-api/docs/models
* Last updated: 2025-01-22
*/
import { LANGUAGES } from '~/features/i18n';
// Gemini 2.0 Flash supported languages for translation
export const GEMINI_TRANSLATION_LANGUAGES = {
ar: { nativeName: LANGUAGES.ar?.nativeName || 'العربية', emoji: LANGUAGES.ar?.emoji || '🇸🇦' },
bn: { nativeName: LANGUAGES.bn?.nativeName || 'বাংলা', emoji: LANGUAGES.bn?.emoji || '🇧🇩' },
bg: { nativeName: LANGUAGES.bg?.nativeName || 'Български', emoji: LANGUAGES.bg?.emoji || '🇧🇬' },
zh: { nativeName: LANGUAGES.zh?.nativeName || '中文', emoji: LANGUAGES.zh?.emoji || '🇨🇳' },
hr: { nativeName: LANGUAGES.hr?.nativeName || 'Hrvatski', emoji: LANGUAGES.hr?.emoji || '🇭🇷' },
cs: { nativeName: LANGUAGES.cs?.nativeName || 'Čeština', emoji: LANGUAGES.cs?.emoji || '🇨🇿' },
da: { nativeName: LANGUAGES.da?.nativeName || 'Dansk', emoji: LANGUAGES.da?.emoji || '🇩🇰' },
nl: { nativeName: LANGUAGES.nl?.nativeName || 'Nederlands', emoji: LANGUAGES.nl?.emoji || '🇳🇱' },
en: { nativeName: LANGUAGES.en?.nativeName || 'English', emoji: LANGUAGES.en?.emoji || '🇺🇸' },
et: { nativeName: LANGUAGES.et?.nativeName || 'Eesti', emoji: LANGUAGES.et?.emoji || '🇪🇪' },
fi: { nativeName: LANGUAGES.fi?.nativeName || 'Suomi', emoji: LANGUAGES.fi?.emoji || '🇫🇮' },
fr: { nativeName: LANGUAGES.fr?.nativeName || 'Français', emoji: LANGUAGES.fr?.emoji || '🇫🇷' },
de: { nativeName: LANGUAGES.de?.nativeName || 'Deutsch', emoji: LANGUAGES.de?.emoji || '🇩🇪' },
el: { nativeName: LANGUAGES.el?.nativeName || 'Ελληνικά', emoji: LANGUAGES.el?.emoji || '🇬🇷' },
iw: { nativeName: LANGUAGES.he?.nativeName || 'עברית', emoji: LANGUAGES.he?.emoji || '🇮🇱' }, // Hebrew - Gemini uses 'iw' code
hi: { nativeName: LANGUAGES.hi?.nativeName || 'हिन्दी', emoji: LANGUAGES.hi?.emoji || '🇮🇳' },
hu: { nativeName: LANGUAGES.hu?.nativeName || 'Magyar', emoji: LANGUAGES.hu?.emoji || '🇭🇺' },
id: {
nativeName: LANGUAGES.id?.nativeName || 'Bahasa Indonesia',
emoji: LANGUAGES.id?.emoji || '🇮🇩',
},
it: { nativeName: LANGUAGES.it?.nativeName || 'Italiano', emoji: LANGUAGES.it?.emoji || '🇮🇹' },
ja: { nativeName: LANGUAGES.ja?.nativeName || '日本語', emoji: LANGUAGES.ja?.emoji || '🇯🇵' },
ko: { nativeName: LANGUAGES.ko?.nativeName || '한국어', emoji: LANGUAGES.ko?.emoji || '🇰🇷' },
lv: { nativeName: LANGUAGES.lv?.nativeName || 'Latviešu', emoji: LANGUAGES.lv?.emoji || '🇱🇻' },
lt: { nativeName: LANGUAGES.lt?.nativeName || 'Lietuvių', emoji: LANGUAGES.lt?.emoji || '🇱🇹' },
no: { nativeName: LANGUAGES.nb?.nativeName || 'Norsk', emoji: LANGUAGES.nb?.emoji || '🇳🇴' }, // Norwegian
pl: { nativeName: LANGUAGES.pl?.nativeName || 'Polski', emoji: LANGUAGES.pl?.emoji || '🇵🇱' },
pt: { nativeName: LANGUAGES.pt?.nativeName || 'Português', emoji: LANGUAGES.pt?.emoji || '🇵🇹' },
ro: { nativeName: LANGUAGES.ro?.nativeName || 'Română', emoji: LANGUAGES.ro?.emoji || '🇷🇴' },
ru: { nativeName: LANGUAGES.ru?.nativeName || 'Русский', emoji: LANGUAGES.ru?.emoji || '🇷🇺' },
sr: { nativeName: LANGUAGES.sr?.nativeName || 'Српски', emoji: LANGUAGES.sr?.emoji || '🇷🇸' },
sk: { nativeName: LANGUAGES.sk?.nativeName || 'Slovenčina', emoji: LANGUAGES.sk?.emoji || '🇸🇰' },
sl: { nativeName: LANGUAGES.sl?.nativeName || 'Slovenščina', emoji: LANGUAGES.sl?.emoji || '🇸🇮' },
es: { nativeName: LANGUAGES.es?.nativeName || 'Español', emoji: LANGUAGES.es?.emoji || '🇪🇸' },
sw: { nativeName: LANGUAGES.sw?.nativeName || 'Kiswahili', emoji: LANGUAGES.sw?.emoji || '🇰🇪' },
sv: { nativeName: LANGUAGES.sv?.nativeName || 'Svenska', emoji: LANGUAGES.sv?.emoji || '🇸🇪' },
th: { nativeName: LANGUAGES.th?.nativeName || 'ไทย', emoji: LANGUAGES.th?.emoji || '🇹🇭' },
tr: { nativeName: LANGUAGES.tr?.nativeName || 'Türkçe', emoji: LANGUAGES.tr?.emoji || '🇹🇷' },
uk: { nativeName: LANGUAGES.uk?.nativeName || 'Українська', emoji: LANGUAGES.uk?.emoji || '🇺🇦' },
vi: { nativeName: LANGUAGES.vi?.nativeName || 'Tiếng Việt', emoji: LANGUAGES.vi?.emoji || '🇻🇳' },
} as const;
// Additional languages that were in the original TranslateLanguageModal but not officially listed by Gemini
// These might work but are not guaranteed
export const ADDITIONAL_TRANSLATION_LANGUAGES = {
af: { nativeName: LANGUAGES.af?.nativeName || 'Afrikaans', emoji: LANGUAGES.af?.emoji || '🇿🇦' },
sq: { nativeName: LANGUAGES.sq?.nativeName || 'Shqip', emoji: LANGUAGES.sq?.emoji || '🇦🇱' },
am: { nativeName: LANGUAGES.am?.nativeName || 'አማርኛ', emoji: LANGUAGES.am?.emoji || '🇪🇹' },
hy: { nativeName: LANGUAGES.hy?.nativeName || 'Հայերեն', emoji: LANGUAGES.hy?.emoji || '🇦🇲' },
as: { nativeName: LANGUAGES.as?.nativeName || 'অসমীয়া', emoji: LANGUAGES.as?.emoji || '🇮🇳' },
az: { nativeName: LANGUAGES.az?.nativeName || 'Azərbaycan', emoji: LANGUAGES.az?.emoji || '🇦🇿' },
eu: { nativeName: LANGUAGES.eu?.nativeName || 'Euskara', emoji: LANGUAGES.eu?.emoji || '🇪🇸' },
be: { nativeName: LANGUAGES.be?.nativeName || 'Беларуская', emoji: LANGUAGES.be?.emoji || '🇧🇾' },
bs: { nativeName: LANGUAGES.bs?.nativeName || 'Bosanski', emoji: LANGUAGES.bs?.emoji || '🇧🇦' },
ca: { nativeName: LANGUAGES.ca?.nativeName || 'Català', emoji: LANGUAGES.ca?.emoji || '🇪🇸' },
ceb: { nativeName: 'Cebuano', emoji: '🇵🇭' },
co: { nativeName: 'Corsu', emoji: '🇫🇷' },
dv: { nativeName: 'ދިވެހި', emoji: '🇲🇻' },
eo: { nativeName: 'Esperanto', emoji: '🌍' },
tl: { nativeName: LANGUAGES.tl?.nativeName || 'Filipino', emoji: LANGUAGES.tl?.emoji || '🇵🇭' },
ga: { nativeName: LANGUAGES.ga?.nativeName || 'Gaeilge', emoji: LANGUAGES.ga?.emoji || '🇮🇪' },
mt: { nativeName: LANGUAGES.mt?.nativeName || 'Malti', emoji: LANGUAGES.mt?.emoji || '🇲🇹' },
fa: { nativeName: LANGUAGES.fa?.nativeName || 'فارسی', emoji: LANGUAGES.fa?.emoji || '🇮🇷' },
ur: { nativeName: LANGUAGES.ur?.nativeName || 'اردو', emoji: LANGUAGES.ur?.emoji || '🇵🇰' },
} as const;
// Combined list of all supported languages (Gemini official + additional)
export const ALL_TRANSLATION_LANGUAGES = {
...GEMINI_TRANSLATION_LANGUAGES,
...ADDITIONAL_TRANSLATION_LANGUAGES,
} as const;
// Type definitions
export type GeminiLanguageCode = keyof typeof GEMINI_TRANSLATION_LANGUAGES;
export type AdditionalLanguageCode = keyof typeof ADDITIONAL_TRANSLATION_LANGUAGES;
export type TranslationLanguageCode = keyof typeof ALL_TRANSLATION_LANGUAGES;
// Helper function to check if a language is officially supported by Gemini
export const isOfficiallySupported = (languageCode: string): boolean => {
return languageCode in GEMINI_TRANSLATION_LANGUAGES;
};
// Helper function to get language info
export const getTranslationLanguageInfo = (languageCode: string) => {
return ALL_TRANSLATION_LANGUAGES[languageCode as TranslationLanguageCode] || null;
};