mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 10:52:05 +00:00
added auto-detect language for subtitles
This commit is contained in:
parent
52c5ac5b48
commit
355f19dfe4
3 changed files with 118 additions and 7 deletions
|
|
@ -24,6 +24,7 @@ import 'package:mangayomi/services/aniskip.dart';
|
|||
import 'package:mangayomi/services/get_video_list.dart';
|
||||
import 'package:mangayomi/services/torrent_server.dart';
|
||||
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
|
||||
import 'package:mangayomi/utils/language.dart';
|
||||
import 'package:media_kit/media_kit.dart';
|
||||
import 'package:media_kit_video/media_kit_video.dart';
|
||||
import 'package:media_kit_video/media_kit_video_controls/src/controls/extensions/duration.dart';
|
||||
|
|
@ -69,6 +70,7 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10nLocale = ref.watch(l10nLocaleStateProvider);
|
||||
final serversData = ref.watch(getVideoListProvider(episode: episode));
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
|
||||
return serversData.when(
|
||||
|
|
@ -91,6 +93,9 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
}
|
||||
|
||||
return AnimeStreamPage(
|
||||
defaultSubtitle: completeLanguageNameEnglish(
|
||||
l10nLocale.toLanguageTag(),
|
||||
),
|
||||
episode: episode,
|
||||
videos: videos,
|
||||
isLocal: isLocal,
|
||||
|
|
@ -144,11 +149,13 @@ class _AnimePlayerViewState extends riv.ConsumerState<AnimePlayerView> {
|
|||
class AnimeStreamPage extends riv.ConsumerStatefulWidget {
|
||||
final List<vid.Video> videos;
|
||||
final Chapter episode;
|
||||
final String defaultSubtitle;
|
||||
final bool isLocal;
|
||||
final bool isTorrent;
|
||||
final void Function(bool) desktopFullScreenPlayer;
|
||||
const AnimeStreamPage({
|
||||
super.key,
|
||||
required this.defaultSubtitle,
|
||||
required this.isLocal,
|
||||
required this.videos,
|
||||
required this.episode,
|
||||
|
|
@ -214,9 +221,12 @@ class _AnimeStreamPageState extends riv.ConsumerState<AnimeStreamPage>
|
|||
if (_firstVid.subtitles?.isNotEmpty ?? false) {
|
||||
if (_initSubtitleAndAudio) {
|
||||
try {
|
||||
final file = _firstVid.subtitles!.first.file ?? "";
|
||||
final label = _firstVid.subtitles!.first.label; // TODO add setting for default
|
||||
print("DEBUG $file $label");
|
||||
final defaultTrack = _firstVid.subtitles!.firstWhere(
|
||||
(sub) => sub.label == widget.defaultSubtitle,
|
||||
orElse: () => _firstVid.subtitles!.first,
|
||||
);
|
||||
final file = defaultTrack.file ?? "";
|
||||
final label = defaultTrack.label;
|
||||
_player.setSubtitleTrack(
|
||||
file.startsWith("http")
|
||||
? SubtitleTrack.uri(file, title: label, language: label)
|
||||
|
|
|
|||
|
|
@ -1515,17 +1515,17 @@ class _MangaDetailViewState extends ConsumerState<MangaDetailView>
|
|||
if (value == 0) {
|
||||
switch (widget.manga!.itemType) {
|
||||
case ItemType.manga:
|
||||
context.push('/MangaLibrary');
|
||||
context.replace('/MangaLibrary');
|
||||
break;
|
||||
case ItemType.anime:
|
||||
context.push('/AnimeLibrary');
|
||||
context.replace('/AnimeLibrary');
|
||||
break;
|
||||
case ItemType.novel:
|
||||
context.push('/NovelLibrary');
|
||||
context.replace('/NovelLibrary');
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
context.push(
|
||||
context.replace(
|
||||
'/mangaHome',
|
||||
extra: (source, false),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -120,3 +120,104 @@ final languagesMap = {
|
|||
"Uzbek": "uz",
|
||||
"Tagalog": "tl",
|
||||
};
|
||||
|
||||
completeLanguageNameEnglish(String lang) {
|
||||
lang = lang.toLowerCase();
|
||||
for (var element in languagesMapEnglish.entries) {
|
||||
if (element.value.toLowerCase() == lang) {
|
||||
return element.key;
|
||||
}
|
||||
}
|
||||
return lang.trim().toUpperCase();
|
||||
}
|
||||
|
||||
final languagesMapEnglish = {
|
||||
'All': 'all',
|
||||
'French': 'fr',
|
||||
'English': 'en',
|
||||
'Vietnamese': 'vi',
|
||||
'Thai': 'th',
|
||||
'Bulgaria': 'bg',
|
||||
'Arabian': 'ar',
|
||||
'Portuguese': 'pt',
|
||||
'Korean': 'ko',
|
||||
'Portuguese - Portuguese(Brazil)': 'pt-br',
|
||||
'Italian': 'it',
|
||||
'Russian': 'ru',
|
||||
'Spanish': 'es',
|
||||
'Spanish - Spanish(Latin_America)': 'es-la',
|
||||
'Indonesia': 'id',
|
||||
'Japanese': 'ja',
|
||||
'Polish': 'pl',
|
||||
'Turkish': 'tr',
|
||||
'German': 'de',
|
||||
'Chinese': 'zh',
|
||||
"Filipino": "fil",
|
||||
"dansk": "da",
|
||||
"Afrikaans": "af",
|
||||
"Azərbaycan": "az",
|
||||
"bosanski": "bs",
|
||||
"svenska": "sv",
|
||||
"suomi": "fi",
|
||||
"Norwegian Bokmål (Norway)": "nb-no",
|
||||
"Norsk": "no",
|
||||
"Nederlands": "nl",
|
||||
"Malaysia": "ms",
|
||||
"Hrvatski": "hr",
|
||||
"Kurdî": "ku",
|
||||
"Magyar": "hu",
|
||||
"Cebuano": "ceb",
|
||||
"English (United States)": "en-us",
|
||||
"Esperanto": "eo",
|
||||
"Estonian": "et",
|
||||
"Faroese": "fo",
|
||||
"Irish": "ga",
|
||||
"Guarani": "gn",
|
||||
"Gujarati": "gu",
|
||||
"Hausa": "ha",
|
||||
"Haitian Creole": "ht",
|
||||
"Armenian": "hy",
|
||||
"Igbo": "ig",
|
||||
"Icelandic": "is",
|
||||
"Georgian": "ka",
|
||||
"Javanese": "jv",
|
||||
"Kazakh": "kk",
|
||||
"Cambodian": "km",
|
||||
"Kannada": "kn",
|
||||
"Kyrgyz": "ky",
|
||||
"Luxembourgish": "lb",
|
||||
"Laothian": "lo",
|
||||
"Latvian": "lv",
|
||||
"Malagasy": "mg",
|
||||
"Maori": "mi",
|
||||
"Macedonian": "mk",
|
||||
"Marathi": "mr",
|
||||
"Maltese": "mt",
|
||||
"Nepali": "ne",
|
||||
"Nyanja": "ny",
|
||||
"Pashto": "ps",
|
||||
"Portuguese (Portugal)": "pt-pt",
|
||||
"Romansh": "rm",
|
||||
"Sindhi": "sd",
|
||||
"Sinhalese": "si",
|
||||
"Slovak": "sk",
|
||||
"Slovenian": "sl",
|
||||
"Samoan": "sm",
|
||||
"Shona": "sn",
|
||||
"Somali": "so",
|
||||
"Albanian": "sq",
|
||||
"Serbian": "sr",
|
||||
"Sesotho": "st",
|
||||
"Swahili": "sw",
|
||||
"Tamil": "ta",
|
||||
"Tajik": "tg",
|
||||
"Tigrinya": "ti",
|
||||
"Turkmen": "tk",
|
||||
"Tonga": "to",
|
||||
"Urdu": "ur",
|
||||
"Yoruba": "yo",
|
||||
"Chinese (Traditional)": "zh-tw",
|
||||
"Latin": "la",
|
||||
"Uzbek": "uz",
|
||||
"Tagalog": "tl",
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue