/** * Get the system locale language code * @returns The system locale (e.g., 'zh', 'ja', 'en', etc.) */ export function getSystemLocale(): string { const envLang = process.env.LANG || process.env.LC_ALL || process.env.LC_MESSAGES || ''; // Parse locale from environment variables // Examples: 'zh_CN.UTF-8', 'en_US.UTF-8', 'ja_JP.UTF-8' const match = envLang.match(/^([a-z]{2})/i); if (match) { return match[1].toLowerCase(); } // Try to get from other environment variables const language = process.env.LANGUAGE || ''; const langMatch = language.match(/^([a-z]{2})/i); if (langMatch) { return langMatch[1].toLowerCase(); } // Default to English if no locale can be determined return 'en'; } /** * Get translated description based on system locale * @param translations - Array of translation objects * @param systemLocale - The system locale (e.g., 'zh', 'ja') * @returns The translated description or original description if no translation found */ export function getTranslatedDescription( translations: any[] | undefined, systemLocale: string, originalDescription: string ): string { if (!translations || translations.length === 0) { return originalDescription; } // Find translation matching the system locale const translation = translations.find(t => t.locale === systemLocale); // Return translated description if found, otherwise return original return translation?.description || originalDescription; }