Skip to content

Commit 3daf1c4

Browse files
committed
web: refactor youtube-lang
- fixed unlocalized "original" string - added subtitle type exports
1 parent c4e910d commit 3daf1c4

File tree

6 files changed

+65
-122
lines changed

6 files changed

+65
-122
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { t } from "$lib/i18n/translations";
2+
import { get } from "svelte/store";
3+
4+
const languages = [
5+
"af", "am", "ar", "as", "az",
6+
"be", "bg", "bn", "bs", "ca",
7+
"cs", "da", "de", "el", "en",
8+
"es", "et", "eu", "fa", "fi",
9+
"fil", "fr", "gl", "gu", "hi",
10+
"hr", "hu", "hy", "id", "is",
11+
"it", "iw", "ja", "ka", "kk",
12+
"km", "kn", "ko", "ky", "lo",
13+
"lt", "lv", "mk", "ml", "mn",
14+
"mr", "ms", "my", "no", "ne",
15+
"nl", "or", "pa", "pl", "pt",
16+
"ro", "ru", "si", "sk", "sl",
17+
"sq", "sr", "sv", "sw", "ta",
18+
"te", "th", "tr", "uk", "ur",
19+
"uz", "vi", "zh", "zh-Hans", "zh-Hant",
20+
"zh-CN", "zh-HK", "zh-TW", "zu"
21+
];
22+
23+
export const youtubeDubLanguages = ["original", ...languages] as const;
24+
export const subtitleLanguages = ["none", ...languages] as const;
25+
26+
export type YoutubeDubLang = typeof youtubeDubLanguages[number];
27+
export type SubtitleLang = typeof subtitleLanguages[number];
28+
29+
export const namedYoutubeLanguages = () => {
30+
return youtubeDubLanguages.reduce((obj, lang) => {
31+
const intlName = new Intl.DisplayNames([lang], { type: 'language' }).of(lang);
32+
33+
let name = `${intlName} (${lang})`;
34+
if (lang === "original") {
35+
name = get(t)("settings.youtube.dub.original");
36+
}
37+
38+
return {
39+
...obj,
40+
[lang]: name,
41+
};
42+
}, {}) as Record<YoutubeDubLang, string>;
43+
}
44+
45+
export const getBrowserLanguage = (): YoutubeDubLang => {
46+
if (typeof navigator === 'undefined')
47+
return "original";
48+
49+
const browserLanguage = navigator.language as YoutubeDubLang;
50+
if (youtubeDubLanguages.includes(browserLanguage))
51+
return browserLanguage;
52+
53+
const shortened = browserLanguage.split('-')[0] as YoutubeDubLang;
54+
if (youtubeDubLanguages.includes(shortened))
55+
return shortened;
56+
57+
return "original";
58+
}

web/src/lib/settings/migrate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
CobaltSettingsV4,
77
CobaltSettingsV5,
88
} from "$lib/types/settings";
9-
import { getBrowserLanguage } from "$lib/settings/youtube-lang";
9+
import { getBrowserLanguage } from "$lib/settings/audio-sub-language";
1010

1111
type Migrator = (s: AllPartialSettingsWithSchema) => AllPartialSettingsWithSchema;
1212

web/src/lib/settings/validate.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Optional } from '$lib/types/generic';
2-
import defaultSettings from './defaults'
2+
import defaultSettings from '$lib/settings/defaults';
33
import {
44
downloadModeOptions,
55
filenameStyleOptions,
@@ -9,7 +9,7 @@ import {
99
youtubeVideoCodecOptions,
1010
type PartialSettings,
1111
} from '$lib/types/settings';
12-
import { youtubeLanguages } from './youtube-lang';
12+
import { youtubeDubLanguages } from '$lib/settings/audio-sub-language';
1313

1414
function validateTypes(input: unknown, reference = defaultSettings as unknown) {
1515
if (typeof input === 'undefined')
@@ -81,7 +81,7 @@ export function validateSettings(settings: PartialSettings) {
8181
[ settings?.save?.videoQuality , videoQualityOptions ],
8282
[ settings?.save?.youtubeVideoCodec, youtubeVideoCodecOptions ],
8383
[ settings?.save?.savingMethod , savingMethodOptions ],
84-
[ settings?.save?.youtubeDubLang , youtubeLanguages ]
84+
[ settings?.save?.youtubeDubLang , youtubeDubLanguages ]
8585
])
8686
);
8787
}

web/src/lib/settings/youtube-lang.ts

Lines changed: 0 additions & 115 deletions
This file was deleted.

web/src/lib/types/settings/v3.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import type { YoutubeLang } from "$lib/settings/youtube-lang";
1+
import type { YoutubeDubLang } from "$lib/settings/audio-sub-language";
22
import { type CobaltSettingsV2 } from "$lib/types/settings/v2";
33

44
export type CobaltSettingsV3 = Omit<CobaltSettingsV2, 'schemaVersion' | 'save'> & {
55
schemaVersion: 3,
66
save: Omit<CobaltSettingsV2['save'], 'youtubeDubBrowserLang'> & {
7-
youtubeDubLang: YoutubeLang;
7+
youtubeDubLang: YoutubeDubLang;
88
};
99
};

web/src/routes/settings/audio/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import settings from "$lib/state/settings";
33
import { t } from "$lib/i18n/translations";
4-
import { namedYoutubeLanguages } from "$lib/settings/youtube-lang";
4+
import { namedYoutubeLanguages } from "$lib/settings/audio-sub-language";
55
66
import { audioFormatOptions, audioBitrateOptions } from "$lib/types/settings";
77

0 commit comments

Comments
 (0)