lang.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package common
  2. import "strings"
  3. // LangConverter 语言转换器
  4. func LangConverter(subLang string) Language {
  5. /*
  6. xunlei:未知语言、简体&英语、繁体&英语、简体、繁体、英语
  7. */
  8. if strings.Contains(subLang, MatchLangChs) {
  9. // 优先简体
  10. if strings.Contains(subLang, MatchLangEn) {
  11. // 简英
  12. return ChineseSimpleEnglish
  13. } else if strings.Contains(subLang, MatchLangJp) {
  14. // 简日
  15. return ChineseSimpleJapanese
  16. } else if strings.Contains(subLang, MatchLangKr) {
  17. // 简韩
  18. return ChineseSimpleKorean
  19. }
  20. // 默认简体中文
  21. return ChineseSimple
  22. } else if strings.Contains(subLang, MatchLangCht) {
  23. // 然后是繁体
  24. if strings.Contains(subLang, MatchLangEn) {
  25. // 繁英
  26. return ChineseTraditionalEnglish
  27. } else if strings.Contains(subLang, MatchLangJp) {
  28. // 繁日
  29. return ChineseTraditionalJapanese
  30. } else if strings.Contains(subLang, MatchLangKr) {
  31. // 繁韩
  32. return ChineseTraditionalKorean
  33. }
  34. // 默认繁体中文
  35. return ChineseTraditional
  36. } else if strings.Contains(subLang, MatchLangEn) {
  37. // 英文
  38. return English
  39. } else if strings.Contains(subLang, MatchLangJp) {
  40. // 日文
  41. return Japanese
  42. } else if strings.Contains(subLang, MatchLangKr) {
  43. // 韩文
  44. return Korean
  45. } else {
  46. // 都没有,则标记未知
  47. return Unknow
  48. }
  49. }
  50. // Language 语言类型,注意,这里默认还是查找的是中文字幕,只不过下载的时候可能附带了其他的
  51. type Language int
  52. const (
  53. Unknow Language = iota // 未知语言
  54. ChineseSimple // 简体中文
  55. ChineseTraditional // 繁体中文
  56. ChineseSimpleEnglish // 简英双语字幕
  57. ChineseTraditionalEnglish // 繁英双语字幕
  58. English // 英文
  59. Japanese // 日语
  60. ChineseSimpleJapanese // 简日双语字幕
  61. ChineseTraditionalJapanese // 繁日双语字幕
  62. Korean // 韩语
  63. ChineseSimpleKorean // 简韩双语字幕
  64. ChineseTraditionalKorean // 繁韩双语字幕
  65. )
  66. const (
  67. MathLangChnUnknow = "未知语言"
  68. MatchLangChs = "简"
  69. MatchLangCht = "繁"
  70. MatchLangChsEn = "简英"
  71. MatchLangChtEn = "繁英"
  72. MatchLangEn = "英"
  73. MatchLangJp = "日"
  74. MatchLangChsJp = "简日"
  75. MatchLangChtJp = "繁日"
  76. MatchLangKr = "韩"
  77. MatchLangChsKr = "简韩"
  78. MatchLangChtKr = "繁韩"
  79. )
  80. func (l Language) String() string {
  81. switch l {
  82. case ChineseSimple:
  83. return MatchLangChs
  84. case ChineseTraditional:
  85. return MatchLangCht
  86. case ChineseSimpleEnglish:
  87. return MatchLangChsEn
  88. case ChineseTraditionalEnglish:
  89. return MatchLangChtEn
  90. case English:
  91. return MatchLangEn
  92. case Japanese:
  93. return MatchLangJp
  94. case ChineseSimpleJapanese:
  95. return MatchLangChsJp
  96. case ChineseTraditionalJapanese:
  97. return MatchLangChtJp
  98. case Korean:
  99. return MatchLangKr
  100. case ChineseSimpleKorean:
  101. return MatchLangChsKr
  102. case ChineseTraditionalKorean:
  103. return MatchLangChtKr
  104. }
  105. return MathLangChnUnknow
  106. }