my_language.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package language
  2. import (
  3. "strings"
  4. "github.com/allanpk716/ChineseSubFinder/pkg/types/language"
  5. )
  6. // LangConverter4Sub_Supplier 语言转换器,给字幕的提供者实例解析使用(xunlei、zimuku等)
  7. // 支持的字符串语言见 internal/types/language/my_language.go
  8. func LangConverter4Sub_Supplier(subLang string) language.MyLanguage {
  9. /*
  10. xunlei:未知语言、简体&英语、繁体&英语、简体、繁体、英语
  11. */
  12. if strings.Contains(subLang, language.MatchLangDouble) {
  13. // 双语 - 简英
  14. return language.ChineseSimpleEnglish
  15. } else if strings.Contains(subLang, language.MatchLangChs) {
  16. // 优先简体
  17. if strings.Contains(subLang, language.MatchLangEn) {
  18. // 简英
  19. return language.ChineseSimpleEnglish
  20. } else if strings.Contains(subLang, language.MatchLangJp) {
  21. // 简日
  22. return language.ChineseSimpleJapanese
  23. } else if strings.Contains(subLang, language.MatchLangKr) {
  24. // 简韩
  25. return language.ChineseSimpleKorean
  26. }
  27. // 默认简体中文
  28. return language.ChineseSimple
  29. } else if strings.Contains(subLang, language.MatchLangCht) {
  30. // 然后是繁体
  31. if strings.Contains(subLang, language.MatchLangEn) {
  32. // 繁英
  33. return language.ChineseTraditionalEnglish
  34. } else if strings.Contains(subLang, language.MatchLangJp) {
  35. // 繁日
  36. return language.ChineseTraditionalJapanese
  37. } else if strings.Contains(subLang, language.MatchLangKr) {
  38. // 繁韩
  39. return language.ChineseTraditionalKorean
  40. }
  41. // 默认繁体中文
  42. return language.ChineseTraditional
  43. } else if strings.Contains(subLang, language.MatchLangEn) {
  44. // 英文
  45. return language.English
  46. } else if strings.Contains(subLang, language.MatchLangJp) {
  47. // 日文
  48. return language.Japanese
  49. } else if strings.Contains(subLang, language.MatchLangKr) {
  50. // 韩文
  51. return language.Korean
  52. } else {
  53. // 都没有,则标记未知
  54. return language.Unknown
  55. }
  56. }
  57. // HasChineseLang 是否包含中文
  58. func HasChineseLang(lan language.MyLanguage) bool {
  59. switch lan {
  60. case language.ChineseSimple,
  61. language.ChineseTraditional,
  62. language.ChineseSimpleEnglish,
  63. language.ChineseTraditionalEnglish,
  64. language.ChineseSimpleJapanese,
  65. language.ChineseTraditionalJapanese,
  66. language.ChineseSimpleKorean,
  67. language.ChineseTraditionalKorean:
  68. return true
  69. default:
  70. return false
  71. }
  72. }
  73. // IsBilingualSubtitle 是否是双语字幕
  74. func IsBilingualSubtitle(lan language.MyLanguage) bool {
  75. switch lan {
  76. case language.ChineseSimpleEnglish,
  77. language.ChineseTraditionalEnglish,
  78. language.ChineseSimpleJapanese,
  79. language.ChineseTraditionalJapanese,
  80. language.ChineseSimpleKorean,
  81. language.ChineseTraditionalKorean:
  82. return true
  83. default:
  84. return false
  85. }
  86. }
  87. // Lang2ChineseString 将 types.MyLanguage 转换为中文描述:简、繁、简英
  88. // 支持的字符串语言见 internal/types/language/my_language.go
  89. func Lang2ChineseString(lan language.MyLanguage) string {
  90. switch lan {
  91. case language.Unknown:
  92. // 未知语言
  93. return language.MathLangChnUnknown
  94. case language.ChineseSimple:
  95. // 简体中文
  96. return language.MatchLangChs
  97. case language.ChineseTraditional:
  98. // 繁体中文
  99. return language.MatchLangCht
  100. case language.ChineseSimpleEnglish:
  101. // 简英双语字幕
  102. return language.MatchLangChsEn
  103. case language.ChineseTraditionalEnglish:
  104. // 繁英双语字幕
  105. return language.MatchLangChtEn
  106. case language.English:
  107. // 英文
  108. return language.MatchLangEn
  109. case language.Japanese:
  110. // 日语
  111. return language.MatchLangJp
  112. case language.ChineseSimpleJapanese:
  113. // 简日双语字幕
  114. return language.MatchLangChsJp
  115. case language.ChineseTraditionalJapanese:
  116. // 繁日双语字幕
  117. return language.MatchLangChtJp
  118. case language.Korean:
  119. // 韩语
  120. return language.MatchLangKr
  121. case language.ChineseSimpleKorean:
  122. // 简韩双语字幕
  123. return language.MatchLangChsKr
  124. case language.ChineseTraditionalKorean:
  125. // 繁韩双语字幕
  126. return language.MatchLangChtKr
  127. default:
  128. return language.MathLangChnUnknown
  129. }
  130. }
  131. // ChineseString2Lang 将 中文描述:简、繁、简英 转换为 types.MyLanguage
  132. // 支持的字符串语言见 internal/types/language/my_language.go
  133. func ChineseString2Lang(chineseStr string) language.MyLanguage {
  134. switch chineseStr {
  135. case language.MathLangChnUnknown:
  136. // 未知语言
  137. return language.Unknown
  138. case language.MatchLangChs:
  139. // 简体中文
  140. return language.ChineseSimple
  141. case language.MatchLangCht:
  142. // 繁体中文
  143. return language.ChineseTraditional
  144. case language.MatchLangChsEn:
  145. // 简英双语字幕
  146. return language.ChineseSimpleEnglish
  147. case language.MatchLangChtEn:
  148. // 繁英双语字幕
  149. return language.ChineseTraditionalEnglish
  150. case language.MatchLangEn:
  151. // 英文
  152. return language.English
  153. case language.MatchLangJp:
  154. // 日语
  155. return language.Japanese
  156. case language.MatchLangChsJp:
  157. // 简日双语字幕
  158. return language.ChineseSimpleJapanese
  159. case language.MatchLangChtJp:
  160. // 繁日双语字幕
  161. return language.ChineseTraditionalJapanese
  162. case language.MatchLangKr:
  163. // 韩语
  164. return language.Korean
  165. case language.MatchLangChsKr:
  166. // 简韩双语字幕
  167. return language.ChineseSimpleKorean
  168. case language.MatchLangChtKr:
  169. // 繁韩双语字幕
  170. return language.ChineseTraditionalKorean
  171. default:
  172. return language.Unknown
  173. }
  174. }