Browse Source

上传性别语言配置

newdev_shunjiawei
liwei1dao 6 months ago
parent
commit
2701c13cfb
  1. 4
      lib/core/translations/language/ar_sa.dart
  2. 4
      lib/core/translations/language/bg_bg.dart
  3. 4
      lib/core/translations/language/cs_cz.dart
  4. 4
      lib/core/translations/language/da_dk.dart
  5. 4
      lib/core/translations/language/de_de.dart
  6. 4
      lib/core/translations/language/el_gr.dart
  7. 4
      lib/core/translations/language/en_us.dart
  8. 4
      lib/core/translations/language/es_es.dart
  9. 4
      lib/core/translations/language/et_ee.dart
  10. 4
      lib/core/translations/language/fa_ir.dart
  11. 4
      lib/core/translations/language/fi_fi.dart
  12. 4
      lib/core/translations/language/fr_fr.dart
  13. 4
      lib/core/translations/language/hi_in.dart
  14. 4
      lib/core/translations/language/hr_hr.dart
  15. 4
      lib/core/translations/language/hu_hu.dart
  16. 4
      lib/core/translations/language/id_id.dart
  17. 4
      lib/core/translations/language/is_is.dart
  18. 4
      lib/core/translations/language/it_it.dart
  19. 4
      lib/core/translations/language/ja_jp.dart
  20. 4
      lib/core/translations/language/ko_kr.dart
  21. 4
      lib/core/translations/language/lt_lt.dart
  22. 4
      lib/core/translations/language/lv_lv.dart
  23. 4
      lib/core/translations/language/ms_my.dart
  24. 4
      lib/core/translations/language/nb_no.dart
  25. 4
      lib/core/translations/language/nl_nl.dart
  26. 4
      lib/core/translations/language/pl_pl.dart
  27. 4
      lib/core/translations/language/pt_pt.dart
  28. 4
      lib/core/translations/language/ro_ro.dart
  29. 4
      lib/core/translations/language/ru_ru.dart
  30. 4
      lib/core/translations/language/sk_sk.dart
  31. 4
      lib/core/translations/language/sl_si.dart
  32. 4
      lib/core/translations/language/sr_rs.dart
  33. 4
      lib/core/translations/language/sv_se.dart
  34. 4
      lib/core/translations/language/th_th.dart
  35. 4
      lib/core/translations/language/tl_ph.dart
  36. 4
      lib/core/translations/language/tr_tr.dart
  37. 4
      lib/core/translations/language/uk_ua.dart
  38. 4
      lib/core/translations/language/vi_vn.dart
  39. 4
      lib/core/translations/language/zh_cn.dart
  40. 4
      lib/core/translations/language/zh_hk.dart
  41. 4
      lib/core/translations/language/zh_tw.dart
  42. 6
      lib/data/models/user_Info.dart
  43. 75
      lib/data/services/language_manager.dart
  44. 13
      lib/modules/profile/controllers/profile_controller.dart
  45. 142
      lib/modules/profile/views/profile_view.dart

4
lib/core/translations/language/ar_sa.dart

@ -1141,6 +1141,10 @@ const Map<String, String> arSA = {
"about": "حول", "about": "حول",
"enterNickname": "يرجى إدخال لقب", "enterNickname": "يرجى إدخال لقب",
"notSet": "غير محدد", "notSet": "غير محدد",
"gender": "الجنس",
"male": "ذكر",
"female": "أنثى",
"selectGender": "اختر الجنس",
"accountSetting": "إعدادات الحساب", "accountSetting": "إعدادات الحساب",
"logout": "تسجيل الخروج", "logout": "تسجيل الخروج",
"logoutTips": "هل أنت متأكد من أنك تريد تسجيل الخروج من الحساب الحالي؟", "logoutTips": "هل أنت متأكد من أنك تريد تسجيل الخروج من الحساب الحالي؟",

4
lib/core/translations/language/bg_bg.dart

@ -1173,6 +1173,10 @@ const Map<String, String> bgBG = {
"about": "За", "about": "За",
"enterNickname": "Моля въведете прякор", "enterNickname": "Моля въведете прякор",
"notSet": "Не е зададено", "notSet": "Не е зададено",
"gender": "Пол",
"male": "Мъж",
"female": "Жена",
"selectGender": "Изберете пол",
"accountSetting": "Настройки на акаунта", "accountSetting": "Настройки на акаунта",
"logout": "Излизане", "logout": "Излизане",
"logoutTips": "Сигурни ли сте, че искате да излезете от текущия акаунт?", "logoutTips": "Сигурни ли сте, че искате да излезете от текущия акаунт?",

4
lib/core/translations/language/cs_cz.dart

@ -1156,6 +1156,10 @@ const Map<String, String> csCZ = {
"about": "O aplikaci", "about": "O aplikaci",
"enterNickname": "Zadejte prosím přezdívku", "enterNickname": "Zadejte prosím přezdívku",
"notSet": "Nenastaveno", "notSet": "Nenastaveno",
"gender": "Pohlaví",
"male": "Muž",
"female": "Žena",
"selectGender": "Vyberte pohlaví",
"accountSetting": "Nastavení účtu", "accountSetting": "Nastavení účtu",
"logout": "Odhlásit se", "logout": "Odhlásit se",
"logoutTips": "Opravdu se chcete odhlásit z aktuálního účtu?", "logoutTips": "Opravdu se chcete odhlásit z aktuálního účtu?",

4
lib/core/translations/language/da_dk.dart

@ -1160,6 +1160,10 @@ const Map<String, String> daDK = {
"about": "Om", "about": "Om",
"enterNickname": "Indtast venligst kaldenavn", "enterNickname": "Indtast venligst kaldenavn",
"notSet": "Ikke indstillet", "notSet": "Ikke indstillet",
"gender": "Køn",
"male": "Mand",
"female": "Kvinde",
"selectGender": "Vælg køn",
"accountSetting": "Kontoindstillinger", "accountSetting": "Kontoindstillinger",
"logout": "Log ud", "logout": "Log ud",
"logoutTips": "Er du sikker på, at du vil logge ud af den nuværende konto?", "logoutTips": "Er du sikker på, at du vil logge ud af den nuværende konto?",

4
lib/core/translations/language/de_de.dart

@ -1181,6 +1181,10 @@ const Map<String, String> deDE = {
"about": "Über", "about": "Über",
"enterNickname": "Bitte geben Sie Ihren Spitznamen ein", "enterNickname": "Bitte geben Sie Ihren Spitznamen ein",
"notSet": "Nicht festgelegt", "notSet": "Nicht festgelegt",
"gender": "Geschlecht",
"male": "Männlich",
"female": "Weiblich",
"selectGender": "Geschlecht wählen",
"accountSetting": "Kontoeinstellungen", "accountSetting": "Kontoeinstellungen",
"logout": "Abmelden", "logout": "Abmelden",
"logoutTips": "logoutTips":

4
lib/core/translations/language/el_gr.dart

@ -1184,6 +1184,10 @@ const Map<String, String> elGR = {
"about": "Σχετικά", "about": "Σχετικά",
"enterNickname": "Εισάγετε ψευδώνυμο", "enterNickname": "Εισάγετε ψευδώνυμο",
"notSet": "Δεν έχει οριστεί", "notSet": "Δεν έχει οριστεί",
"gender": "Φύλο",
"male": "Άνδρας",
"female": "Γυναίκα",
"selectGender": "Επιλέξτε φύλο",
"accountSetting": "Ρυθμίσεις λογαριασμού", "accountSetting": "Ρυθμίσεις λογαριασμού",
"logout": "Αποσύνδεση", "logout": "Αποσύνδεση",
"logoutTips": "logoutTips":

4
lib/core/translations/language/en_us.dart

@ -1159,6 +1159,10 @@ const Map<String, String> enUS = {
"about": "About", "about": "About",
"enterNickname": "Please enter your nickname", "enterNickname": "Please enter your nickname",
"notSet": "Not Set", "notSet": "Not Set",
"gender": "Gender",
"male": "Male",
"female": "Female",
"selectGender": "Select Gender",
"accountSetting": "Account Setting", "accountSetting": "Account Setting",
"logout": "Log Out", "logout": "Log Out",
"logoutTips": "Are you sure you want to log out of the current account?", "logoutTips": "Are you sure you want to log out of the current account?",

4
lib/core/translations/language/es_es.dart

@ -1180,6 +1180,10 @@ const Map<String, String> esES = {
"about": "Acerca de", "about": "Acerca de",
"enterNickname": "Ingresa apodo", "enterNickname": "Ingresa apodo",
"notSet": "No establecido", "notSet": "No establecido",
"gender": "Género",
"male": "Masculino",
"female": "Femenino",
"selectGender": "Seleccionar género",
"accountSetting": "Configuración de cuenta", "accountSetting": "Configuración de cuenta",
"logout": "Cerrar sesión", "logout": "Cerrar sesión",
"logoutTips": "logoutTips":

4
lib/core/translations/language/et_ee.dart

@ -1160,6 +1160,10 @@ const Map<String, String> etEE = {
"about": "Kohta", "about": "Kohta",
"enterNickname": "Sisesta hüüdnimi", "enterNickname": "Sisesta hüüdnimi",
"notSet": "Pole määratud", "notSet": "Pole määratud",
"gender": "Sugu",
"male": "Mees",
"female": "Naine",
"selectGender": "Valige sugu",
"accountSetting": "Konto seaded", "accountSetting": "Konto seaded",
"logout": "Logi välja", "logout": "Logi välja",
"logoutTips": "Kas oled kindel, et tahad praegusest kontost välja logida?", "logoutTips": "Kas oled kindel, et tahad praegusest kontost välja logida?",

4
lib/core/translations/language/fa_ir.dart

@ -1144,6 +1144,10 @@ const Map<String, String> faIR = {
"about": "درباره", "about": "درباره",
"enterNickname": "لطفاً نام مستعار خود را وارد کنید", "enterNickname": "لطفاً نام مستعار خود را وارد کنید",
"notSet": "تنظیم نشده", "notSet": "تنظیم نشده",
"gender": "جنسیت",
"male": "مرد",
"female": "زن",
"selectGender": "جنسیت را انتخاب کنید",
"accountSetting": "تنظیمات حساب", "accountSetting": "تنظیمات حساب",
"logout": "خروج از حساب", "logout": "خروج از حساب",
"logoutTips": "آیا مطمئن هستید که می‌خواهید از حساب فعلی خارج شوید؟", "logoutTips": "آیا مطمئن هستید که می‌خواهید از حساب فعلی خارج شوید؟",

4
lib/core/translations/language/fi_fi.dart

@ -1158,6 +1158,10 @@ const Map<String, String> fiFI = {
"about": "Tietoja", "about": "Tietoja",
"enterNickname": "Anna lempinimi", "enterNickname": "Anna lempinimi",
"notSet": "Ei asetettu", "notSet": "Ei asetettu",
"gender": "Sukupuoli",
"male": "Mies",
"female": "Nainen",
"selectGender": "Valitse sukupuoli",
"accountSetting": "Tilin asetukset", "accountSetting": "Tilin asetukset",
"logout": "Kirjaudu ulos", "logout": "Kirjaudu ulos",
"logoutTips": "Oletko varma, että haluat kirjautua ulos nykyisestä tilistä?", "logoutTips": "Oletko varma, että haluat kirjautua ulos nykyisestä tilistä?",

4
lib/core/translations/language/fr_fr.dart

@ -1189,6 +1189,10 @@ const Map<String, String> frFR = {
"about": "À propos", "about": "À propos",
"enterNickname": "Veuillez saisir votre pseudo", "enterNickname": "Veuillez saisir votre pseudo",
"notSet": "Non défini", "notSet": "Non défini",
"gender": "Genre",
"male": "Homme",
"female": "Femme",
"selectGender": "Sélectionner le genre",
"accountSetting": "Paramètres du compte", "accountSetting": "Paramètres du compte",
"logout": "Se déconnecter", "logout": "Se déconnecter",
"logoutTips": "Êtes-vous sûr de vouloir vous déconnecter du compte actuel ?", "logoutTips": "Êtes-vous sûr de vouloir vous déconnecter du compte actuel ?",

4
lib/core/translations/language/hi_in.dart

@ -1159,6 +1159,10 @@ const Map<String, String> hiIN = {
"about": "के बारे में", "about": "के बारे में",
"enterNickname": "कृपया एक उपनाम दर्ज करें", "enterNickname": "कृपया एक उपनाम दर्ज करें",
"notSet": "सेट नहीं है", "notSet": "सेट नहीं है",
"gender": "लिंग",
"male": "पुरुष",
"female": "महिला",
"selectGender": "लिंग चुनें",
"accountSetting": "खाता सेटिंग", "accountSetting": "खाता सेटिंग",
"logout": "लॉग आउट करें", "logout": "लॉग आउट करें",
"logoutTips": "क्या आप वाकई वर्तमान खाते से लॉग आउट करना चाहते हैं?", "logoutTips": "क्या आप वाकई वर्तमान खाते से लॉग आउट करना चाहते हैं?",

4
lib/core/translations/language/hr_hr.dart

@ -1169,6 +1169,10 @@ const Map<String, String> hrHR = {
"about": "O nama", "about": "O nama",
"enterNickname": "Unesite nadimak", "enterNickname": "Unesite nadimak",
"notSet": "Nije postavljeno", "notSet": "Nije postavljeno",
"gender": "Spol",
"male": "Muški",
"female": "Ženski",
"selectGender": "Odaberite spol",
"accountSetting": "Postavke računa", "accountSetting": "Postavke računa",
"logout": "Odjavi se", "logout": "Odjavi se",
"logoutTips": "Jeste li sigurni da se želite odjaviti s trenutnog računa?", "logoutTips": "Jeste li sigurni da se želite odjaviti s trenutnog računa?",

4
lib/core/translations/language/hu_hu.dart

@ -1172,6 +1172,10 @@ const Map<String, String> huHU = {
"about": "Névjegy", "about": "Névjegy",
"enterNickname": "Kérjük, adjon meg egy becenevet", "enterNickname": "Kérjük, adjon meg egy becenevet",
"notSet": "Nincs beállítva", "notSet": "Nincs beállítva",
"gender": "Nem",
"male": "Férfi",
"female": "Nő",
"selectGender": "Nem kiválasztása",
"accountSetting": "Fiókbeállítások", "accountSetting": "Fiókbeállítások",
"logout": "Kijelentkezés", "logout": "Kijelentkezés",
"logoutTips": "Biztosan ki szeretne jelentkezni a jelenlegi fiókból?", "logoutTips": "Biztosan ki szeretne jelentkezni a jelenlegi fiókból?",

4
lib/core/translations/language/id_id.dart

@ -1159,6 +1159,10 @@ const Map<String, String> idID = {
"about": "Tentang", "about": "Tentang",
"enterNickname": "Silakan masukkan nama panggilan", "enterNickname": "Silakan masukkan nama panggilan",
"notSet": "Tidak Diatur", "notSet": "Tidak Diatur",
"gender": "Jenis Kelamin",
"male": "Laki-laki",
"female": "Perempuan",
"selectGender": "Pilih jenis kelamin",
"accountSetting": "Pengaturan Akun", "accountSetting": "Pengaturan Akun",
"logout": "Keluar", "logout": "Keluar",
"logoutTips": "Apakah Anda yakin ingin keluar dari akun saat ini?", "logoutTips": "Apakah Anda yakin ingin keluar dari akun saat ini?",

4
lib/core/translations/language/is_is.dart

@ -1159,6 +1159,10 @@ const Map<String, String> isIS = {
"about": "Um", "about": "Um",
"enterNickname": "Vinsamlegast sláðu inn gælunafn", "enterNickname": "Vinsamlegast sláðu inn gælunafn",
"notSet": "Óstillt", "notSet": "Óstillt",
"gender": "Kyn",
"male": "Karl",
"female": "Kona",
"selectGender": "Veldu kyn",
"accountSetting": "Reikningsstillingar", "accountSetting": "Reikningsstillingar",
"logout": "Útskráning", "logout": "Útskráning",
"logoutTips": "Ertu viss um að þú viljir skrá þig út af núverandi reikningi?", "logoutTips": "Ertu viss um að þú viljir skrá þig út af núverandi reikningi?",

4
lib/core/translations/language/it_it.dart

@ -1181,6 +1181,10 @@ const Map<String, String> itIT = {
"about": "Informazioni", "about": "Informazioni",
"enterNickname": "Inserisci un nickname", "enterNickname": "Inserisci un nickname",
"notSet": "Non impostato", "notSet": "Non impostato",
"gender": "Genere",
"male": "Maschio",
"female": "Femmina",
"selectGender": "Seleziona genere",
"accountSetting": "Impostazioni account", "accountSetting": "Impostazioni account",
"logout": "Esci", "logout": "Esci",
"logoutTips": "Sei sicuro di voler uscire dall'account corrente?", "logoutTips": "Sei sicuro di voler uscire dall'account corrente?",

4
lib/core/translations/language/ja_jp.dart

@ -1079,6 +1079,10 @@ const Map<String, String> jaJP = {
"about": "について", "about": "について",
"enterNickname": "ニックネームを入力してください", "enterNickname": "ニックネームを入力してください",
"notSet": "未設定", "notSet": "未設定",
"gender": "性別",
"male": "男性",
"female": "女性",
"selectGender": "性別を選択",
"accountSetting": "アカウント設定", "accountSetting": "アカウント設定",
"logout": "ログアウト", "logout": "ログアウト",
"logoutTips": "現在のアカウントからログアウトしてもよろしいですか?", "logoutTips": "現在のアカウントからログアウトしてもよろしいですか?",

4
lib/core/translations/language/ko_kr.dart

@ -1076,6 +1076,10 @@ const Map<String, String> koKR = {
"about": "정보", "about": "정보",
"enterNickname": "닉네임을 입력하세요", "enterNickname": "닉네임을 입력하세요",
"notSet": "설정되지 않음", "notSet": "설정되지 않음",
"gender": "성별",
"male": "남성",
"female": "여성",
"selectGender": "성별 선택",
"accountSetting": "계정 설정", "accountSetting": "계정 설정",
"logout": "로그아웃", "logout": "로그아웃",
"logoutTips": "현재 계정에서 로그아웃하시겠습니까?", "logoutTips": "현재 계정에서 로그아웃하시겠습니까?",

4
lib/core/translations/language/lt_lt.dart

@ -1169,6 +1169,10 @@ const Map<String, String> ltLT = {
"about": "Apie", "about": "Apie",
"enterNickname": "Įveskite slapyvardį", "enterNickname": "Įveskite slapyvardį",
"notSet": "Nenustatyta", "notSet": "Nenustatyta",
"gender": "Lytis",
"male": "Vyras",
"female": "Moteris",
"selectGender": "Pasirinkite lytį",
"accountSetting": "Paskyros nustatymai", "accountSetting": "Paskyros nustatymai",
"logout": "Atsijungti", "logout": "Atsijungti",
"logoutTips": "Ar tikrai norite atsijungti nuo dabartinės paskyros?", "logoutTips": "Ar tikrai norite atsijungti nuo dabartinės paskyros?",

4
lib/core/translations/language/lv_lv.dart

@ -1174,6 +1174,10 @@ const Map<String, String> lvLV = {
"about": "Par", "about": "Par",
"enterNickname": "Lūdzu, ievadiet segvārdu", "enterNickname": "Lūdzu, ievadiet segvārdu",
"notSet": "Nav iestatīts", "notSet": "Nav iestatīts",
"gender": "Dzimums",
"male": "Vīrietis",
"female": "Sieviete",
"selectGender": "Izvēlieties dzimumu",
"accountSetting": "Konta iestatījumi", "accountSetting": "Konta iestatījumi",
"logout": "Izrakstīties", "logout": "Izrakstīties",
"logoutTips": "logoutTips":

4
lib/core/translations/language/ms_my.dart

@ -1158,6 +1158,10 @@ const Map<String, String> msMY = {
"about": "Mengenai", "about": "Mengenai",
"enterNickname": "Sila masukkan nama samaran", "enterNickname": "Sila masukkan nama samaran",
"notSet": "Tidak Ditetapkan", "notSet": "Tidak Ditetapkan",
"gender": "Jantina",
"male": "Lelaki",
"female": "Perempuan",
"selectGender": "Pilih jantina",
"accountSetting": "Tetapan Akaun", "accountSetting": "Tetapan Akaun",
"logout": "Log Keluar", "logout": "Log Keluar",
"logoutTips": "Adakah anda pasti mahu log keluar dari akaun semasa?", "logoutTips": "Adakah anda pasti mahu log keluar dari akaun semasa?",

4
lib/core/translations/language/nb_no.dart

@ -1166,6 +1166,10 @@ const Map<String, String> nbNO = {
"about": "Om", "about": "Om",
"enterNickname": "Vennligst skriv inn et kallenavn", "enterNickname": "Vennligst skriv inn et kallenavn",
"notSet": "Ikke angitt", "notSet": "Ikke angitt",
"gender": "Kjønn",
"male": "Mann",
"female": "Kvinne",
"selectGender": "Velg kjønn",
"accountSetting": "Kontoinnstillinger", "accountSetting": "Kontoinnstillinger",
"logout": "Logg ut", "logout": "Logg ut",
"logoutTips": "Er du sikker på at du vil logge ut av den nåværende kontoen?", "logoutTips": "Er du sikker på at du vil logge ut av den nåværende kontoen?",

4
lib/core/translations/language/nl_nl.dart

@ -1046,6 +1046,10 @@ const Map<String, String> nlNL = {
"about": "Over", "about": "Over",
"enterNickname": "Voer een bijnaam in", "enterNickname": "Voer een bijnaam in",
"notSet": "Niet ingesteld", "notSet": "Niet ingesteld",
"gender": "Geslacht",
"male": "Man",
"female": "Vrouw",
"selectGender": "Selecteer geslacht",
"accountSetting": "Accountinstellingen", "accountSetting": "Accountinstellingen",
"logout": "Uitloggen", "logout": "Uitloggen",
"logoutTips": "Weet u zeker dat u wilt uitloggen bij het huidige account?", "logoutTips": "Weet u zeker dat u wilt uitloggen bij het huidige account?",

4
lib/core/translations/language/pl_pl.dart

@ -1175,6 +1175,10 @@ const Map<String, String> plPL = {
"about": "O nas", "about": "O nas",
"enterNickname": "Wprowadź pseudonim", "enterNickname": "Wprowadź pseudonim",
"notSet": "Nie ustawiono", "notSet": "Nie ustawiono",
"gender": "Płeć",
"male": "Mężczyzna",
"female": "Kobieta",
"selectGender": "Wybierz płeć",
"accountSetting": "Ustawienia konta", "accountSetting": "Ustawienia konta",
"logout": "Wyloguj się", "logout": "Wyloguj się",
"logoutTips": "Czy na pewno chcesz wylogować się z obecnego konta?", "logoutTips": "Czy na pewno chcesz wylogować się z obecnego konta?",

4
lib/core/translations/language/pt_pt.dart

@ -1186,6 +1186,10 @@ const Map<String, String> ptPT = {
"about": "Sobre", "about": "Sobre",
"enterNickname": "Introduza uma alcunha", "enterNickname": "Introduza uma alcunha",
"notSet": "Não Definido", "notSet": "Não Definido",
"gender": "Gênero",
"male": "Masculino",
"female": "Feminino",
"selectGender": "Selecionar gênero",
"accountSetting": "Definições da Conta", "accountSetting": "Definições da Conta",
"logout": "Terminar Sessão", "logout": "Terminar Sessão",
"logoutTips": "Tem a certeza que quer terminar a sessão da conta atual?", "logoutTips": "Tem a certeza que quer terminar a sessão da conta atual?",

4
lib/core/translations/language/ro_ro.dart

@ -1173,6 +1173,10 @@ const Map<String, String> roRO = {
"about": "Despre", "about": "Despre",
"enterNickname": "Introduceți un pseudonim", "enterNickname": "Introduceți un pseudonim",
"notSet": "Nesetat", "notSet": "Nesetat",
"gender": "Gen",
"male": "Masculin",
"female": "Feminin",
"selectGender": "Selectați genul",
"accountSetting": "Setări cont", "accountSetting": "Setări cont",
"logout": "Deconectare", "logout": "Deconectare",
"logoutTips": "logoutTips":

4
lib/core/translations/language/ru_ru.dart

@ -1167,6 +1167,10 @@ const Map<String, String> ruRU = {
"about": "О нас", "about": "О нас",
"enterNickname": "Пожалуйста, введите псевдоним", "enterNickname": "Пожалуйста, введите псевдоним",
"notSet": "Не установлено", "notSet": "Не установлено",
"gender": "Пол",
"male": "Мужской",
"female": "Женский",
"selectGender": "Выберите пол",
"accountSetting": "Настройки аккаунта", "accountSetting": "Настройки аккаунта",
"logout": "Выйти", "logout": "Выйти",
"logoutTips": "Вы уверены, что хотите выйти из текущего аккаунта?", "logoutTips": "Вы уверены, что хотите выйти из текущего аккаунта?",

4
lib/core/translations/language/sk_sk.dart

@ -1160,6 +1160,10 @@ const Map<String, String> skSK = {
"about": "O nás", "about": "O nás",
"enterNickname": "Zadajte prezývku", "enterNickname": "Zadajte prezývku",
"notSet": "Nenastavené", "notSet": "Nenastavené",
"gender": "Pohlavie",
"male": "Muž",
"female": "Žena",
"selectGender": "Vyberte pohlavie",
"accountSetting": "Nastavenia účtu", "accountSetting": "Nastavenia účtu",
"logout": "Odhlásiť sa", "logout": "Odhlásiť sa",
"logoutTips": "Ste si istí, že sa chcete odhlásiť z aktuálneho účtu?", "logoutTips": "Ste si istí, že sa chcete odhlásiť z aktuálneho účtu?",

4
lib/core/translations/language/sl_si.dart

@ -1168,6 +1168,10 @@ const Map<String, String> slSI = {
"about": "O nas", "about": "O nas",
"enterNickname": "Vnesite vzdevek", "enterNickname": "Vnesite vzdevek",
"notSet": "Ni nastavljeno", "notSet": "Ni nastavljeno",
"gender": "Spol",
"male": "Moški",
"female": "Ženska",
"selectGender": "Izberite spol",
"accountSetting": "Nastavitve računa", "accountSetting": "Nastavitve računa",
"logout": "Odjava", "logout": "Odjava",
"logoutTips": "logoutTips":

4
lib/core/translations/language/sr_rs.dart

@ -1161,6 +1161,10 @@ const Map<String, String> srRS = {
"about": "O nama", "about": "O nama",
"enterNickname": "Unesite nadimak", "enterNickname": "Unesite nadimak",
"notSet": "Nije podešeno", "notSet": "Nije podešeno",
"gender": "Пол",
"male": "Мушки",
"female": "Женски",
"selectGender": "Изаберите пол",
"accountSetting": "Podešavanja naloga", "accountSetting": "Podešavanja naloga",
"logout": "Odjavi se", "logout": "Odjavi se",
"logoutTips": "logoutTips":

4
lib/core/translations/language/sv_se.dart

@ -1167,6 +1167,10 @@ const Map<String, String> svSE = {
"about": "Om", "about": "Om",
"enterNickname": "Ange ett smeknamn", "enterNickname": "Ange ett smeknamn",
"notSet": "Inte inställt", "notSet": "Inte inställt",
"gender": "Kön",
"male": "Man",
"female": "Kvinna",
"selectGender": "Välj kön",
"accountSetting": "Kontoinställningar", "accountSetting": "Kontoinställningar",
"logout": "Logga ut", "logout": "Logga ut",
"logoutTips": "logoutTips":

4
lib/core/translations/language/th_th.dart

@ -1138,6 +1138,10 @@ const Map<String, String> thTH = {
"about": "เกี่ยวกับ", "about": "เกี่ยวกับ",
"enterNickname": "กรุณาใส่ชื่อเล่น", "enterNickname": "กรุณาใส่ชื่อเล่น",
"notSet": "ยังไม่ได้ตั้งค่า", "notSet": "ยังไม่ได้ตั้งค่า",
"gender": "เพศ",
"male": "ชาย",
"female": "หญิง",
"selectGender": "เลือกเพศ",
"accountSetting": "การตั้งค่าบัญชี", "accountSetting": "การตั้งค่าบัญชี",
"logout": "ออกจากระบบ", "logout": "ออกจากระบบ",
"logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน", "logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน",

4
lib/core/translations/language/tl_ph.dart

@ -1187,6 +1187,10 @@ const Map<String, String> tlPH = {
"about": "Tungkol sa", "about": "Tungkol sa",
"enterNickname": "Pakilagay ang palayaw", "enterNickname": "Pakilagay ang palayaw",
"notSet": "Hindi Naitakda", "notSet": "Hindi Naitakda",
"gender": "Kasarian",
"male": "Lalaki",
"female": "Babae",
"selectGender": "Pumili ng kasarian",
"accountSetting": "Setting ng Account", "accountSetting": "Setting ng Account",
"logout": "Mag-logout", "logout": "Mag-logout",
"logoutTips": "logoutTips":

4
lib/core/translations/language/tr_tr.dart

@ -1161,6 +1161,10 @@ const Map<String, String> trTR = {
"about": "Hakkında", "about": "Hakkında",
"enterNickname": "Lütfen bir takma ad girin", "enterNickname": "Lütfen bir takma ad girin",
"notSet": "Ayarlanmadı", "notSet": "Ayarlanmadı",
"gender": "Cinsiyet",
"male": "Erkek",
"female": "Kadın",
"selectGender": "Cinsiyet seçin",
"accountSetting": "Hesap Ayarları", "accountSetting": "Hesap Ayarları",
"logout": "Çıkış Yap", "logout": "Çıkış Yap",
"logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?", "logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?",

4
lib/core/translations/language/uk_ua.dart

@ -1169,6 +1169,10 @@ const Map<String, String> ukUA = {
"about": "Про нас", "about": "Про нас",
"enterNickname": "Будь ласка, введіть псевдонім", "enterNickname": "Будь ласка, введіть псевдонім",
"notSet": "Не встановлено", "notSet": "Не встановлено",
"gender": "Стать",
"male": "Чоловіча",
"female": "Жіноча",
"selectGender": "Оберіть стать",
"accountSetting": "Налаштування облікового запису", "accountSetting": "Налаштування облікового запису",
"logout": "Вийти", "logout": "Вийти",
"logoutTips": "Ви впевнені, що хочете вийти з поточного облікового запису?", "logoutTips": "Ви впевнені, що хочете вийти з поточного облікового запису?",

4
lib/core/translations/language/vi_vn.dart

@ -1149,6 +1149,10 @@ const Map<String, String> viVN = {
"about": "Về chúng tôi", "about": "Về chúng tôi",
"enterNickname": "Vui lòng nhập biệt danh", "enterNickname": "Vui lòng nhập biệt danh",
"notSet": "Chưa đặt", "notSet": "Chưa đặt",
"gender": "Giới tính",
"male": "Nam",
"female": "Nữ",
"selectGender": "Chọn giới tính",
"accountSetting": "Cài đặt tài khoản", "accountSetting": "Cài đặt tài khoản",
"logout": "Đăng xuất", "logout": "Đăng xuất",
"logoutTips": "logoutTips":

4
lib/core/translations/language/zh_cn.dart

@ -1068,6 +1068,10 @@ const Map<String, String> zhCN = {
"about": "关于", "about": "关于",
"enterNickname": "请输入昵称", "enterNickname": "请输入昵称",
"notSet": "未设置", "notSet": "未设置",
"gender": "性别",
"male": "男",
"female": "女",
"selectGender": "选择性别",
"accountSetting": "账号设置", "accountSetting": "账号设置",
"logout": "退出登录", "logout": "退出登录",
"logoutTips": "确定要退出当前账号吗?", "logoutTips": "确定要退出当前账号吗?",

4
lib/core/translations/language/zh_hk.dart

@ -1069,6 +1069,10 @@ const Map<String, String> zhHK = {
"about": "關於", "about": "關於",
"enterNickname": "請輸入暱稱", "enterNickname": "請輸入暱稱",
"notSet": "未設定", "notSet": "未設定",
"gender": "性別",
"male": "男",
"female": "女",
"selectGender": "選擇性別",
"accountSetting": "帳號設定", "accountSetting": "帳號設定",
"logout": "登出", "logout": "登出",
"logoutTips": "確定要登出目前帳號嗎?", "logoutTips": "確定要登出目前帳號嗎?",

4
lib/core/translations/language/zh_tw.dart

@ -1069,6 +1069,10 @@ const Map<String, String> zhTW = {
"about": "關於", "about": "關於",
"enterNickname": "請輸入暱稱", "enterNickname": "請輸入暱稱",
"notSet": "未設定", "notSet": "未設定",
"gender": "性別",
"male": "男",
"female": "女",
"selectGender": "選擇性別",
"accountSetting": "帳號設定", "accountSetting": "帳號設定",
"logout": "登出", "logout": "登出",
"logoutTips": "確定要登出目前帳號嗎?", "logoutTips": "確定要登出目前帳號嗎?",

6
lib/data/models/user_Info.dart

@ -52,6 +52,7 @@ class User {
int tradetotalintegral = 0; // 翻译总积分 int tradetotalintegral = 0; // 翻译总积分
int meetintegral = 0; // 会议积分 int meetintegral = 0; // 会议积分
int meettotalintegral = 0; // 会议总积分 int meettotalintegral = 0; // 会议总积分
int gender = 0; // 性别: 0=未设置, 1=男, 2=女
List<UserDevice> devices; List<UserDevice> devices;
@ -74,6 +75,7 @@ class User {
required this.tradetotalintegral, required this.tradetotalintegral,
required this.meetintegral, required this.meetintegral,
required this.meettotalintegral, required this.meettotalintegral,
required this.gender,
required this.devices, required this.devices,
}); });
@ -102,6 +104,7 @@ class User {
tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0, tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0,
meetintegral: (userData?['meetintegral'] as int?) ?? 0, meetintegral: (userData?['meetintegral'] as int?) ?? 0,
meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0, meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0,
gender: (userData?['gender'] as int?) ?? 0,
devices: devicesData devices: devicesData
?.map((e) => UserDevice.fromJson(e as Map<String, dynamic>)) ?.map((e) => UserDevice.fromJson(e as Map<String, dynamic>))
.toList() ?? .toList() ??
@ -137,6 +140,7 @@ class User {
tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0, tradetotalintegral: (userData?['tradetotalintegral'] as int?) ?? 0,
meetintegral: (userData?['meetintegral'] as int?) ?? 0, meetintegral: (userData?['meetintegral'] as int?) ?? 0,
meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0, meettotalintegral: (userData?['meettotalintegral'] as int?) ?? 0,
gender: (userData?['gender'] as int?) ?? 0,
devices: devicesData != null devices: devicesData != null
? (devicesData) ? (devicesData)
.map((e) => UserDevice.fromJson(e as Map<String, dynamic>)) .map((e) => UserDevice.fromJson(e as Map<String, dynamic>))
@ -169,6 +173,7 @@ class User {
user['tradetotalintegral'] as int? ?? tradetotalintegral; user['tradetotalintegral'] as int? ?? tradetotalintegral;
meetintegral = user['meetintegral'] as int? ?? meetintegral; meetintegral = user['meetintegral'] as int? ?? meetintegral;
meettotalintegral = user['meettotalintegral'] as int? ?? meettotalintegral; meettotalintegral = user['meettotalintegral'] as int? ?? meettotalintegral;
gender = user['gender'] as int? ?? gender;
// 触发全局刷新信号,驱动依赖UI重建 // 触发全局刷新信号,驱动依赖UI重建
refreshTick.value++; refreshTick.value++;
@ -194,6 +199,7 @@ class User {
'tradetotalintegral': tradetotalintegral, 'tradetotalintegral': tradetotalintegral,
'meetintegral': meetintegral, 'meetintegral': meetintegral,
'meettotalintegral': meettotalintegral, 'meettotalintegral': meettotalintegral,
'gender': gender,
'devices': devices.map((device) => device.toJson()).toList(), 'devices': devices.map((device) => device.toJson()).toList(),
}, },
}; };

75
lib/data/services/language_manager.dart

@ -1,5 +1,6 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../core/utils/logger.dart'; import '../../core/utils/logger.dart';
import '../models/user_Info.dart';
import '../services/speech_factory.dart'; import '../services/speech_factory.dart';
import 'language_configs/azure_language_config.dart'; import 'language_configs/azure_language_config.dart';
import 'language_configs/google_language_config.dart'; import 'language_configs/google_language_config.dart';
@ -22,9 +23,12 @@ class LanguageInfo {
/// Azure ASR 语言代码,如 'zh-CN', 'en-US' /// Azure ASR 语言代码,如 'zh-CN', 'en-US'
final String asrCode; final String asrCode;
/// Azure TTS 语音名称 /// Azure TTS 语音名称(女声)
final String ttsVoiceName; final String ttsVoiceName;
/// Azure TTS 语音名称(男声)
final String ttsVoiceNameMale;
/// 备注信息 /// 备注信息
final String? note; final String? note;
@ -34,6 +38,7 @@ class LanguageInfo {
required this.englishName, required this.englishName,
required this.asrCode, required this.asrCode,
required this.ttsVoiceName, required this.ttsVoiceName,
required this.ttsVoiceNameMale,
this.note, this.note,
}); });
} }
@ -75,6 +80,7 @@ class LanguageManager extends GetxService {
englishName: 'Chinese (simplified)', englishName: 'Chinese (simplified)',
asrCode: 'zh-CN', asrCode: 'zh-CN',
ttsVoiceName: 'zh-CN-XiaoxiaoNeural', ttsVoiceName: 'zh-CN-XiaoxiaoNeural',
ttsVoiceNameMale: 'zh-CN-YunxiNeural',
); );
_addLanguage( _addLanguage(
@ -83,6 +89,7 @@ class LanguageManager extends GetxService {
englishName: 'Chinese (traditional)', englishName: 'Chinese (traditional)',
asrCode: 'zh-TW', asrCode: 'zh-TW',
ttsVoiceName: 'zh-TW-HsiaoChenNeural', ttsVoiceName: 'zh-TW-HsiaoChenNeural',
ttsVoiceNameMale: 'zh-TW-YunJheNeural',
); );
_addLanguage( _addLanguage(
@ -91,6 +98,7 @@ class LanguageManager extends GetxService {
englishName: 'Chinese (Hongkong traditional)', englishName: 'Chinese (Hongkong traditional)',
asrCode: 'zh-HK', asrCode: 'zh-HK',
ttsVoiceName: 'zh-HK-HiuMaanNeural', ttsVoiceName: 'zh-HK-HiuMaanNeural',
ttsVoiceNameMale: 'zh-HK-WanLungNeural',
); );
// 英语相关 // 英语相关
@ -100,6 +108,7 @@ class LanguageManager extends GetxService {
englishName: 'English', englishName: 'English',
asrCode: 'en-US', asrCode: 'en-US',
ttsVoiceName: 'en-US-AriaNeural', ttsVoiceName: 'en-US-AriaNeural',
ttsVoiceNameMale: 'en-US-GuyNeural',
); );
// 日语相关 // 日语相关
@ -109,6 +118,7 @@ class LanguageManager extends GetxService {
englishName: 'Japanese', englishName: 'Japanese',
asrCode: 'ja-JP', asrCode: 'ja-JP',
ttsVoiceName: 'ja-JP-NanamiNeural', ttsVoiceName: 'ja-JP-NanamiNeural',
ttsVoiceNameMale: 'ja-JP-KeitaNeural',
); );
// 韩语相关 // 韩语相关
@ -118,6 +128,7 @@ class LanguageManager extends GetxService {
englishName: 'Korean', englishName: 'Korean',
asrCode: 'ko-KR', asrCode: 'ko-KR',
ttsVoiceName: 'ko-KR-SunHiNeural', ttsVoiceName: 'ko-KR-SunHiNeural',
ttsVoiceNameMale: 'ko-KR-InJoonNeural',
); );
// 欧洲语言 // 欧洲语言
@ -127,6 +138,7 @@ class LanguageManager extends GetxService {
englishName: 'French', englishName: 'French',
asrCode: 'fr-FR', asrCode: 'fr-FR',
ttsVoiceName: 'fr-FR-DeniseNeural', ttsVoiceName: 'fr-FR-DeniseNeural',
ttsVoiceNameMale: 'fr-FR-HenriNeural',
); );
_addLanguage( _addLanguage(
@ -135,6 +147,7 @@ class LanguageManager extends GetxService {
englishName: 'Spanish', englishName: 'Spanish',
asrCode: 'es-ES', asrCode: 'es-ES',
ttsVoiceName: 'es-ES-ElviraNeural', ttsVoiceName: 'es-ES-ElviraNeural',
ttsVoiceNameMale: 'es-ES-AlvaroNeural',
); );
_addLanguage( _addLanguage(
@ -143,6 +156,7 @@ class LanguageManager extends GetxService {
englishName: 'Portuguese', englishName: 'Portuguese',
asrCode: 'pt-BR', asrCode: 'pt-BR',
ttsVoiceName: 'pt-BR-FranciscaNeural', ttsVoiceName: 'pt-BR-FranciscaNeural',
ttsVoiceNameMale: 'pt-BR-AntonioNeural',
); );
_addLanguage( _addLanguage(
@ -151,6 +165,7 @@ class LanguageManager extends GetxService {
englishName: 'Italian', englishName: 'Italian',
asrCode: 'it-IT', asrCode: 'it-IT',
ttsVoiceName: 'it-IT-ElsaNeural', ttsVoiceName: 'it-IT-ElsaNeural',
ttsVoiceNameMale: 'it-IT-DiegoNeural',
); );
_addLanguage( _addLanguage(
@ -159,6 +174,7 @@ class LanguageManager extends GetxService {
englishName: 'German', englishName: 'German',
asrCode: 'de-DE', asrCode: 'de-DE',
ttsVoiceName: 'de-DE-KatjaNeural', ttsVoiceName: 'de-DE-KatjaNeural',
ttsVoiceNameMale: 'de-DE-ConradNeural',
); );
_addLanguage( _addLanguage(
@ -167,6 +183,7 @@ class LanguageManager extends GetxService {
englishName: 'Russian', englishName: 'Russian',
asrCode: 'ru-RU', asrCode: 'ru-RU',
ttsVoiceName: 'ru-RU-SvetlanaNeural', ttsVoiceName: 'ru-RU-SvetlanaNeural',
ttsVoiceNameMale: 'ru-RU-DmitryNeural',
); );
_addLanguage( _addLanguage(
@ -175,6 +192,7 @@ class LanguageManager extends GetxService {
englishName: 'Polish', englishName: 'Polish',
asrCode: 'pl-PL', asrCode: 'pl-PL',
ttsVoiceName: 'pl-PL-AgnieszkaNeural', ttsVoiceName: 'pl-PL-AgnieszkaNeural',
ttsVoiceNameMale: 'pl-PL-MarekNeural',
); );
_addLanguage( _addLanguage(
@ -183,6 +201,7 @@ class LanguageManager extends GetxService {
englishName: 'Dutch', englishName: 'Dutch',
asrCode: 'nl-NL', asrCode: 'nl-NL',
ttsVoiceName: 'nl-NL-ColetteNeural', ttsVoiceName: 'nl-NL-ColetteNeural',
ttsVoiceNameMale: 'nl-NL-MaartenNeural',
); );
_addLanguage( _addLanguage(
@ -191,6 +210,7 @@ class LanguageManager extends GetxService {
englishName: 'Swedish', englishName: 'Swedish',
asrCode: 'sv-SE', asrCode: 'sv-SE',
ttsVoiceName: 'sv-SE-SofieNeural', ttsVoiceName: 'sv-SE-SofieNeural',
ttsVoiceNameMale: 'sv-SE-MattiasNeural',
); );
_addLanguage( _addLanguage(
@ -199,6 +219,7 @@ class LanguageManager extends GetxService {
englishName: 'Czech', englishName: 'Czech',
asrCode: 'cs-CZ', asrCode: 'cs-CZ',
ttsVoiceName: 'cs-CZ-VlastaNeural', ttsVoiceName: 'cs-CZ-VlastaNeural',
ttsVoiceNameMale: 'cs-CZ-AntoninNeural',
); );
_addLanguage( _addLanguage(
@ -207,6 +228,7 @@ class LanguageManager extends GetxService {
englishName: 'Modern Greek', englishName: 'Modern Greek',
asrCode: 'el-GR', asrCode: 'el-GR',
ttsVoiceName: 'el-GR-AthinaNeural', ttsVoiceName: 'el-GR-AthinaNeural',
ttsVoiceNameMale: 'el-GR-NestorasNeural',
); );
_addLanguage( _addLanguage(
@ -215,6 +237,7 @@ class LanguageManager extends GetxService {
englishName: 'Romanian', englishName: 'Romanian',
asrCode: 'ro-RO', asrCode: 'ro-RO',
ttsVoiceName: 'ro-RO-AlinaNeural', ttsVoiceName: 'ro-RO-AlinaNeural',
ttsVoiceNameMale: 'ro-RO-EmilNeural',
); );
_addLanguage( _addLanguage(
@ -223,6 +246,7 @@ class LanguageManager extends GetxService {
englishName: 'Hungarian', englishName: 'Hungarian',
asrCode: 'hu-HU', asrCode: 'hu-HU',
ttsVoiceName: 'hu-HU-NoemiNeural', ttsVoiceName: 'hu-HU-NoemiNeural',
ttsVoiceNameMale: 'hu-HU-TamasNeural',
); );
_addLanguage( _addLanguage(
@ -231,6 +255,7 @@ class LanguageManager extends GetxService {
englishName: 'Ukrainian', englishName: 'Ukrainian',
asrCode: 'uk-UA', asrCode: 'uk-UA',
ttsVoiceName: 'uk-UA-PolinaNeural', ttsVoiceName: 'uk-UA-PolinaNeural',
ttsVoiceNameMale: 'uk-UA-OstapNeural',
); );
_addLanguage( _addLanguage(
@ -239,6 +264,7 @@ class LanguageManager extends GetxService {
englishName: 'Danish', englishName: 'Danish',
asrCode: 'da-DK', asrCode: 'da-DK',
ttsVoiceName: 'da-DK-ChristelNeural', ttsVoiceName: 'da-DK-ChristelNeural',
ttsVoiceNameMale: 'da-DK-JeppeNeural',
); );
_addLanguage( _addLanguage(
@ -247,6 +273,7 @@ class LanguageManager extends GetxService {
englishName: 'Finnish', englishName: 'Finnish',
asrCode: 'fi-FI', asrCode: 'fi-FI',
ttsVoiceName: 'fi-FI-NooraNeural', ttsVoiceName: 'fi-FI-NooraNeural',
ttsVoiceNameMale: 'fi-FI-HarriNeural',
); );
_addLanguage( _addLanguage(
@ -255,6 +282,7 @@ class LanguageManager extends GetxService {
englishName: 'Norwegian', englishName: 'Norwegian',
asrCode: 'nb-NO', asrCode: 'nb-NO',
ttsVoiceName: 'nb-NO-IselinNeural', ttsVoiceName: 'nb-NO-IselinNeural',
ttsVoiceNameMale: 'nb-NO-FinnNeural',
); );
_addLanguage( _addLanguage(
@ -263,6 +291,7 @@ class LanguageManager extends GetxService {
englishName: 'Croatian', englishName: 'Croatian',
asrCode: 'hr-HR', asrCode: 'hr-HR',
ttsVoiceName: 'hr-HR-GabrijelaNeural', ttsVoiceName: 'hr-HR-GabrijelaNeural',
ttsVoiceNameMale: 'hr-HR-SreckoNeural',
); );
_addLanguage( _addLanguage(
@ -271,6 +300,7 @@ class LanguageManager extends GetxService {
englishName: 'Catalan', englishName: 'Catalan',
asrCode: 'ca-ES', asrCode: 'ca-ES',
ttsVoiceName: 'ca-ES-JoanaNeural', ttsVoiceName: 'ca-ES-JoanaNeural',
ttsVoiceNameMale: 'ca-ES-EnricNeural',
); );
// 亚洲语言 // 亚洲语言
@ -280,6 +310,7 @@ class LanguageManager extends GetxService {
englishName: 'Arabic', englishName: 'Arabic',
asrCode: 'ar-EG', asrCode: 'ar-EG',
ttsVoiceName: 'ar-EG-SalmaNeural', ttsVoiceName: 'ar-EG-SalmaNeural',
ttsVoiceNameMale: 'ar-EG-ShakirNeural',
); );
_addLanguage( _addLanguage(
@ -288,6 +319,7 @@ class LanguageManager extends GetxService {
englishName: 'Thai', englishName: 'Thai',
asrCode: 'th-TH', asrCode: 'th-TH',
ttsVoiceName: 'th-TH-PremwadeeNeural', ttsVoiceName: 'th-TH-PremwadeeNeural',
ttsVoiceNameMale: 'th-TH-NiwatNeural',
); );
_addLanguage( _addLanguage(
@ -296,6 +328,7 @@ class LanguageManager extends GetxService {
englishName: 'Vietnamese', englishName: 'Vietnamese',
asrCode: 'vi-VN', asrCode: 'vi-VN',
ttsVoiceName: 'vi-VN-HoaiMyNeural', ttsVoiceName: 'vi-VN-HoaiMyNeural',
ttsVoiceNameMale: 'vi-VN-NamMinhNeural',
); );
_addLanguage( _addLanguage(
@ -304,6 +337,7 @@ class LanguageManager extends GetxService {
englishName: 'Indonesian', englishName: 'Indonesian',
asrCode: 'id-ID', asrCode: 'id-ID',
ttsVoiceName: 'id-ID-GadisNeural', ttsVoiceName: 'id-ID-GadisNeural',
ttsVoiceNameMale: 'id-ID-ArdiNeural',
); );
_addLanguage( _addLanguage(
@ -312,6 +346,7 @@ class LanguageManager extends GetxService {
englishName: 'Hindi', englishName: 'Hindi',
asrCode: 'hi-IN', asrCode: 'hi-IN',
ttsVoiceName: 'hi-IN-SwaraNeural', ttsVoiceName: 'hi-IN-SwaraNeural',
ttsVoiceNameMale: 'hi-IN-MadhurNeural',
); );
_addLanguage( _addLanguage(
@ -319,7 +354,8 @@ class LanguageManager extends GetxService {
chineseName: '土耳其语', chineseName: '土耳其语',
englishName: 'Turkish', englishName: 'Turkish',
asrCode: 'tr-TR', asrCode: 'tr-TR',
ttsVoiceName: 'tr-TR-SedaNeural', ttsVoiceName: 'tr-TR-EmelNeural',
ttsVoiceNameMale: 'tr-TR-AhmetNeural',
); );
_addLanguage( _addLanguage(
@ -328,6 +364,7 @@ class LanguageManager extends GetxService {
englishName: 'Malay', englishName: 'Malay',
asrCode: 'ms-MY', asrCode: 'ms-MY',
ttsVoiceName: 'ms-MY-YasminNeural', ttsVoiceName: 'ms-MY-YasminNeural',
ttsVoiceNameMale: 'ms-MY-OsmanNeural',
); );
_addLanguage( _addLanguage(
@ -336,6 +373,7 @@ class LanguageManager extends GetxService {
englishName: 'Bengali', englishName: 'Bengali',
asrCode: 'bn-IN', asrCode: 'bn-IN',
ttsVoiceName: 'bn-IN-TanishaaNeural', ttsVoiceName: 'bn-IN-TanishaaNeural',
ttsVoiceNameMale: 'bn-IN-BashkarNeural',
); );
_addLanguage( _addLanguage(
@ -344,6 +382,7 @@ class LanguageManager extends GetxService {
englishName: 'Tamil', englishName: 'Tamil',
asrCode: 'ta-IN', asrCode: 'ta-IN',
ttsVoiceName: 'ta-IN-PallaviNeural', ttsVoiceName: 'ta-IN-PallaviNeural',
ttsVoiceNameMale: 'ta-IN-ValluvarNeural',
); );
_addLanguage( _addLanguage(
@ -352,6 +391,7 @@ class LanguageManager extends GetxService {
englishName: 'Telugu', englishName: 'Telugu',
asrCode: 'te-IN', asrCode: 'te-IN',
ttsVoiceName: 'te-IN-ShrutiNeural', ttsVoiceName: 'te-IN-ShrutiNeural',
ttsVoiceNameMale: 'te-IN-MohanNeural',
); );
_addLanguage( _addLanguage(
@ -360,6 +400,7 @@ class LanguageManager extends GetxService {
englishName: 'Marathi', englishName: 'Marathi',
asrCode: 'mr-IN', asrCode: 'mr-IN',
ttsVoiceName: 'mr-IN-AarohiNeural', ttsVoiceName: 'mr-IN-AarohiNeural',
ttsVoiceNameMale: 'mr-IN-ManoharNeural',
); );
_addLanguage( _addLanguage(
@ -368,6 +409,7 @@ class LanguageManager extends GetxService {
englishName: 'Urdu', englishName: 'Urdu',
asrCode: 'ur-IN', asrCode: 'ur-IN',
ttsVoiceName: 'ur-IN-GulNeural', ttsVoiceName: 'ur-IN-GulNeural',
ttsVoiceNameMale: 'ur-IN-SalmanNeural',
); );
_addLanguage( _addLanguage(
@ -376,6 +418,7 @@ class LanguageManager extends GetxService {
englishName: 'Persian', englishName: 'Persian',
asrCode: 'fa-IR', asrCode: 'fa-IR',
ttsVoiceName: 'fa-IR-DilaraNeural', ttsVoiceName: 'fa-IR-DilaraNeural',
ttsVoiceNameMale: 'fa-IR-FaridNeural',
); );
// 非洲语言 // 非洲语言
@ -385,6 +428,7 @@ class LanguageManager extends GetxService {
englishName: 'Swahili', englishName: 'Swahili',
asrCode: 'sw-KE', asrCode: 'sw-KE',
ttsVoiceName: 'sw-KE-ZuriNeural', ttsVoiceName: 'sw-KE-ZuriNeural',
ttsVoiceNameMale: 'sw-KE-RafikiNeural',
); );
Logger.info('语言管理器初始化完成,共加载 ${_languageMap.length} 种语言'); Logger.info('语言管理器初始化完成,共加载 ${_languageMap.length} 种语言');
@ -397,6 +441,7 @@ class LanguageManager extends GetxService {
required String englishName, required String englishName,
required String asrCode, required String asrCode,
required String ttsVoiceName, required String ttsVoiceName,
required String ttsVoiceNameMale,
String? note, String? note,
}) { }) {
final languageInfo = LanguageInfo( final languageInfo = LanguageInfo(
@ -405,6 +450,7 @@ class LanguageManager extends GetxService {
englishName: englishName, englishName: englishName,
asrCode: asrCode, asrCode: asrCode,
ttsVoiceName: ttsVoiceName, ttsVoiceName: ttsVoiceName,
ttsVoiceNameMale: ttsVoiceNameMale,
note: note, note: note,
); );
@ -488,17 +534,28 @@ class LanguageManager extends GetxService {
return languageInfo?.shortCode; return languageInfo?.shortCode;
} }
/// 根据 ASR 代码获取 TTS 语音名称 /// 根据用户性别获取对应的 TTS 语音名称
/// gender: 0=未设置(默认女声), 1=男, 2=女
String? _getVoiceByGender(LanguageInfo? info) {
if (info == null) return null;
try {
final gender = User.instance.gender;
return gender == 1 ? info.ttsVoiceNameMale : info.ttsVoiceName;
} catch (_) {
return info.ttsVoiceName;
}
}
/// 根据 ASR 代码获取 TTS 语音名称(根据用户性别自动选择)
String? getTtsVoiceNameByAsrCode(String asrCode) { String? getTtsVoiceNameByAsrCode(String asrCode) {
final languageInfo = _languageMap[asrCode]; return _getVoiceByGender(_languageMap[asrCode]);
return languageInfo?.ttsVoiceName;
} }
/// 根据中文名称获取 TTS 语音名称 /// 根据中文名称获取 TTS 语音名称(根据用户性别自动选择)
String? getTtsVoiceNameByChineseName(String chineseName) { String? getTtsVoiceNameByChineseName(String chineseName) {
final asrCode = _chineseNameToAsrCodeMap[chineseName]; final asrCode = _chineseNameToAsrCodeMap[chineseName];
if (asrCode == null) return null; if (asrCode == null) return null;
return _languageMap[asrCode]?.ttsVoiceName; return _getVoiceByGender(_languageMap[asrCode]);
} }
/// 根据短代码获取中文名称 /// 根据短代码获取中文名称
@ -515,11 +572,11 @@ class LanguageManager extends GetxService {
return _languageMap[asrCode]?.englishName; return _languageMap[asrCode]?.englishName;
} }
/// 根据短代码获取 TTS 语音名称 /// 根据短代码获取 TTS 语音名称(根据用户性别自动选择)
String? getTtsVoiceNameByShortCode(String shortCode) { String? getTtsVoiceNameByShortCode(String shortCode) {
final asrCode = _shortCodeToAsrCodeMap[shortCode]; final asrCode = _shortCodeToAsrCodeMap[shortCode];
if (asrCode == null) return null; if (asrCode == null) return null;
return _languageMap[asrCode]?.ttsVoiceName; return _getVoiceByGender(_languageMap[asrCode]);
} }
/// 获取中文名称到 ASR 代码的映射 /// 获取中文名称到 ASR 代码的映射

13
lib/modules/profile/controllers/profile_controller.dart

@ -210,6 +210,7 @@ class ProfileController extends GetxController {
// 添加基本用户信息 // 添加基本用户信息
formData.fields.add(MapEntry('language', currentLanguage.value)); formData.fields.add(MapEntry('language', currentLanguage.value));
formData.fields.add(MapEntry('name', userInfo.value.name)); formData.fields.add(MapEntry('name', userInfo.value.name));
formData.fields.add(MapEntry('gender', userInfo.value.gender.toString()));
// 如果有头像,添加到FormData // 如果有头像,添加到FormData
if (localAvatar.value.isNotEmpty) { if (localAvatar.value.isNotEmpty) {
@ -438,6 +439,18 @@ class ProfileController extends GetxController {
} }
} }
// 更新性别
void updateGender(int gender) {
if (gender == userInfo.value.gender) return;
userInfo.update((user) {
if (user != null) {
user.gender = gender;
}
});
hasEdits.value = true;
Logger().d('性别已更新: $gender');
}
// 取消编辑昵称(内联编辑) // 取消编辑昵称(内联编辑)
void cancelEditingNickname() { void cancelEditingNickname() {
isEditingNickname.value = false; isEditingNickname.value = false;

142
lib/modules/profile/views/profile_view.dart

@ -287,6 +287,13 @@ class EditProfileView extends GetView<ProfileController> {
: Colors.grey[200]), : Colors.grey[200]),
// 昵称设置项 // 昵称设置项
_buildNicknameSetting(context, isDarkMode, nameController), _buildNicknameSetting(context, isDarkMode, nameController),
Divider(
height: 1,
color: isDarkMode
? Colors.white.withOpacity(0.1)
: Colors.grey[200]),
// 性别设置项
_buildGenderSetting(context, isDarkMode),
], ],
), ),
), ),
@ -372,6 +379,141 @@ class EditProfileView extends GetView<ProfileController> {
); );
} }
// 构建性别设置项
Widget _buildGenderSetting(BuildContext context, bool isDarkMode) {
return InkWell(
onTap: () {
_showGenderPicker(context, isDarkMode);
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
child: Row(
children: [
Container(
width: 32.w,
height: 32.w,
decoration: BoxDecoration(
color: isDarkMode
? Colors.purple[900]!.withOpacity(0.3)
: Colors.purple[50]!,
borderRadius: BorderRadius.circular(16.r),
),
child: Icon(
Icons.wc_outlined,
size: 18.w,
color: isDarkMode ? Colors.purple[300]! : Colors.purple[600]!,
),
),
SizedBox(width: 12.w),
Expanded(
child: Text(
'gender'.tr,
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w500,
color: isDarkMode ? Colors.white : Colors.black87,
),
),
),
Row(
children: [
Obx(() {
final gender = controller.userInfo.value.gender;
String genderText;
if (gender == 1) {
genderText = 'male'.tr;
} else if (gender == 2) {
genderText = 'female'.tr;
} else {
genderText = 'notSet'.tr;
}
return Text(
genderText,
style: TextStyle(
fontSize: 14.sp,
color: isDarkMode ? Colors.white70 : Colors.grey[600],
),
);
}),
SizedBox(width: 8.w),
Container(
width: 32.w,
height: 32.w,
decoration: BoxDecoration(
color: isDarkMode
? Colors.white.withOpacity(0.05)
: Colors.grey[100],
borderRadius: BorderRadius.circular(16.r),
),
child: Icon(
Icons.chevron_right,
size: 16.w,
color: isDarkMode ? Colors.white70 : Colors.grey[500],
),
),
],
),
],
),
),
);
}
// 显示性别选择弹窗
void _showGenderPicker(BuildContext context, bool isDarkMode) {
Get.bottomSheet(
Container(
padding: EdgeInsets.symmetric(vertical: 16.h),
decoration: BoxDecoration(
color: isDarkMode ? const Color(0xFF1E1E1E) : Colors.white,
borderRadius: BorderRadius.vertical(top: Radius.circular(16.r)),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Padding(
padding: EdgeInsets.only(bottom: 8.h),
child: Text(
'selectGender'.tr,
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w600,
color: isDarkMode ? Colors.white : Colors.black87,
),
),
),
ListTile(
leading: Icon(Icons.male, color: Colors.blue),
title: Text('male'.tr,
style: TextStyle(
color: isDarkMode ? Colors.white : Colors.black87)),
trailing: Obx(() => controller.userInfo.value.gender == 1
? Icon(Icons.check, color: Colors.blue)
: const SizedBox.shrink()),
onTap: () {
controller.updateGender(1);
Get.back();
},
),
ListTile(
leading: Icon(Icons.female, color: Colors.pink),
title: Text('female'.tr,
style: TextStyle(
color: isDarkMode ? Colors.white : Colors.black87)),
trailing: Obx(() => controller.userInfo.value.gender == 2
? Icon(Icons.check, color: Colors.pink)
: const SizedBox.shrink()),
onTap: () {
controller.updateGender(2);
Get.back();
},
),
],
),
),
);
}
// 新增:构建昵称设置项(双模式内联编辑) // 新增:构建昵称设置项(双模式内联编辑)
Widget _buildNicknameSetting(BuildContext context, bool isDarkMode, Widget _buildNicknameSetting(BuildContext context, bool isDarkMode,
TextEditingController nameController) { TextEditingController nameController) {

Loading…
Cancel
Save