Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework l10n #797

Merged
merged 10 commits into from
Sep 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 43 additions & 24 deletions .webpack/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,45 @@ import {
} from "vot.js/alternativeUrls";
import configShared from "./config.shared.js";

const repo =
"https://raw.githubusercontent.com/ilyhalight/voice-over-translation";
import { repositoryUrl, contentUrl } from "../src/config/config.js";

const dev = process.env.NODE_ENV === "development";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.resolve(path.dirname(__filename), "..");
const localesDir = path.resolve(__dirname, "src", "localization", "locales");
const priorityLocales = ["auto", "en", "ru"];

let isBeta = getHeaders().version.includes("beta");
const availableLocales = getAvailableLocales();

console.log("development mode: ", dev);

function getHeaders(lang) {
const headersPath = path.resolve(
__dirname,
"src",
lang ? `locales/${lang}` : "",
"headers.json",
);
const headersPath = lang
? path.resolve(localesDir, "headers", lang)
: path.resolve(__dirname, "src", "headers.json");
return JSON.parse(fs.readFileSync(headersPath).toString());
}

function getAvailableLocales() {
const files = fs.readdirSync(localesDir);
const locales = files.reduce((result, file) => {
if (!file.endsWith(".json")) {
return result;
}

const locale = file.replace(".json", "");
if (priorityLocales.includes(locale)) {
return result;
}

result.push(locale);
return result;
}, []);

return [...priorityLocales, ...locales];
}

export default (env) => {
const build_type = env.build_type;
console.log("build type: ", build_type);
Expand Down Expand Up @@ -82,23 +102,25 @@ export default (env) => {
resolve: path.resolve(__dirname, "src", "headers.json"),
transform({ meta }) {
const extFileName = getFilename().slice(0, -8);
const finalURL = `${repo}/${
const finalURL = `${contentUrl}/${
isBeta ? "dev" : "master"
}/dist/${extFileName}.user.js`;

meta.namespace = extFileName;
meta.homepageURL = repositoryUrl;
meta.updateURL = meta.downloadURL = finalURL;

const files = fs.readdirSync(
path.resolve(__dirname, "src", "locales"),
);

meta.name = {
default: meta.name,
};

meta.description = {
default: meta.description,
meta.supportURL = `${repositoryUrl}/issues`;

const files = fs.readdirSync(path.resolve(localesDir, "headers"));
meta = {
...meta,
name: {
default: meta.name,
},
description: {
default: meta.description,
},
match: Array.from(new Set([...meta.match, ...altUrlsToMatch()])),
};

for (const file of files) {
Expand All @@ -109,10 +131,6 @@ export default (env) => {
meta.description[lang] = localeHeaders.description;
}

meta.match = Array.from(
new Set([...meta.match, ...altUrlsToMatch()]),
);

return meta;
},
},
Expand All @@ -127,6 +145,7 @@ export default (env) => {
new webpack.DefinePlugin({
DEBUG_MODE: dev,
IS_BETA_VERSION: isBeta,
AVAILABLE_LOCALES: JSON.stringify(availableLocales),
...(() => {
if (!dev) {
return {
Expand Down
12 changes: 12 additions & 0 deletions README-EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,18 @@ bunx patch-package --use-yarn vot.js

Do not use patches from the `bun patch` or from any npm packages. They will be incompatible with the patch-package, and may also break when updating the package.

### How to update localization files

For all interaction with localization files, the l10n-tui utility is made.

To call the utility, use the command:

```bash
bun l10n
```

You can read more about the utility [here](scripts/l10n-tui/README.md)

## Customization of appearance:

The extension supports customization of the appearance using Stylus, Stylish and other similar extensions
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,18 @@ bunx patch-package --use-yarn vot.js

Не пользуйтесь патчами из `bun patch` или из каких-либо npm пакетов. Они будут несовместимы с patch-package, а так же могут ломаться при обновлении пакета.

### Как обновлять файлы локализации

Для всего взаимодействия с файлами локализации сделана консольная утилита l10n-tui.

Для вызова утилиты используйте команду:

```bash
bun l10n
```

Подробнее о утилите можно прочитать [тут](scripts/l10n-tui/README.md)

## Кастомизация внешнего вида:

Расширение поддерживает кастомизацию внешнего вида с помощью Stylus, Stylish и других подобных расширений
Expand Down
Binary file modified bun.lockb
Binary file not shown.
5 changes: 4 additions & 1 deletion changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
<!-- Добавить двухстороннюю синхронизацию слайдера громкости в меню со слайдером громкости плееров для Twitch, OK (работает, если плеер не замучен) -->
<!-- #600 aniboom (referer + useragent, mpd), sibnet (referer) "*://video.sibnet.ru/*", -->
<!-- Фикс vk mobile -->
<!-- Rework l10n -->
<!-- Add subs -->

# 1.6.x

- Переработана логика обновления переводов для меню расширения
- Добавлена кнопка для ручной проверки обновлений локализации
- Добавлена настройка горячей клавиши перевода (#485 в #760)
- Добавлена поддержка путей `/inbox/` и `/bk/` для Видео Mail.ru (#763)
- Добавлена поддержка 9animetv с возможностью отображения субтитров от сайта (#748)
Expand All @@ -18,6 +19,7 @@
- Добавлено округление до целого процента в слайдере "Уменьшить громкость видео до"
- Добавлена возможность включить загрузку аудио дорожки и субтитров с названием видео, если расширение его нашло (#791)
- Добавлено автоопределение возвращаемого типа данных из LocalStorage, если присутствует стандартное значение
- Убрано выставление языка `auto` по умолчанию для Invidious и Piped
- Автосгенериванные субтитры с YouTube, теперь, используют уже существующие токены, а не генерируют новые
- В субтитрах от самого веб-сайта, теперь, показывается полный домен сайта, а не его внутреннее название
- Изменена логика работы субтитров на "кастомных" сайтах. Теперь, вместо ошибки, возвращаются пустые данные
Expand All @@ -31,6 +33,7 @@
- Исправлено появление кнопки в Rumble (#784)
- Исправлен жирный размер текста в меню и кнопке перевода на некоторых сайтах
- Исправлена растянутая кнопка перевода в Safari (#497)
- Исправлена попытка активации расширения на accounts.youtube.com
- Автоперевод и первичное получение субтитров, теперь, происходит параллельно
- Некоторые другие мелкие улучшения

Expand Down
41 changes: 21 additions & 20 deletions dist/vot-min.user.js

Large diffs are not rendered by default.

Loading
Loading