language.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import axiosInstance from './interceptor';
  2. // 获取多语言列表接口
  3. export interface LanguageItem {
  4. language: string; // en, zh
  5. display: string; // English, 简体中文
  6. }
  7. export interface LanguageListResponse {
  8. code: string;
  9. data: LanguageItem[];
  10. description: string;
  11. solution: string;
  12. }
  13. // 修改系统语言接口
  14. export interface ChangeLanguageRequest {
  15. lang: string; // en_US, zh_CN
  16. }
  17. export interface ChangeLanguageResponse {
  18. code: string;
  19. description: string;
  20. solution: string;
  21. data: Record<string, never>;
  22. }
  23. // 语言代码映射:简短代码 -> 完整代码
  24. const languageMap: Record<string, string> = {
  25. en: 'en_US',
  26. zh: 'zh_CN',
  27. };
  28. /**
  29. * 将简短语言代码转换为完整语言代码
  30. * @param shortCode 简短代码 (en, zh)
  31. * @returns 完整代码 (en_US.UTF-8, zh_CN.UTF-8)
  32. */
  33. export function mapLanguageCode(shortCode: string): string {
  34. return languageMap[shortCode] || shortCode;
  35. }
  36. /**
  37. * 获取多语言列表
  38. * @returns Promise<LanguageListResponse>
  39. */
  40. export function getLanguageList(): Promise<{ data: LanguageListResponse }> {
  41. return axiosInstance.get('/pub/language');
  42. }
  43. /**
  44. * 修改系统语言
  45. * @param language 语言简短代码 (en, zh)
  46. * @returns Promise<ChangeLanguageResponse>
  47. */
  48. export function changeLanguage(
  49. language: string
  50. ): Promise<{ data: ChangeLanguageResponse }> {
  51. const fullLanguageCode = mapLanguageCode(language);
  52. return axiosInstance.post('/auth/manage/language', {
  53. lang: fullLanguageCode,
  54. });
  55. }