mirror of
https://github.com/gotson/komga.git
synced 2025-12-06 08:32:25 +01:00
Compare commits
26 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
361d20df2c | ||
|
|
ced89c5c54 | ||
|
|
a5548a5429 | ||
|
|
8f8d20a324 | ||
|
|
0f69a3a4cb | ||
|
|
9d10ed31a7 | ||
|
|
dde0169f2a | ||
|
|
a2ed7d319d | ||
|
|
475f026749 | ||
|
|
a03f1bdf7b | ||
|
|
b43046fbeb | ||
|
|
3739951b36 | ||
|
|
0f25453949 | ||
|
|
cd47fc777a | ||
|
|
f138fe31e7 | ||
|
|
454c6c7202 | ||
|
|
ce3ad4c1c7 | ||
|
|
b925f3e19d | ||
|
|
9a56b30b6c | ||
|
|
6b07fda273 | ||
|
|
727fe39e6d | ||
|
|
f8ca936ee7 | ||
|
|
fe40ede34a | ||
|
|
c23f2d3810 | ||
|
|
af66144060 | ||
|
|
ba7b82631f |
21 changed files with 1503 additions and 229 deletions
2
.github/workflows/browserlist-update.yml
vendored
2
.github/workflows/browserlist-update.yml
vendored
|
|
@ -14,7 +14,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Configure git
|
||||
|
|
|
|||
18
.github/workflows/release.yml
vendored
18
.github/workflows/release.yml
vendored
|
|
@ -43,14 +43,14 @@ jobs:
|
|||
version_next: ${{ steps.versions.outputs.version_next }}
|
||||
should_release: ${{ steps.versions.outputs.should_release }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Set up Homebrew
|
||||
id: set-up-homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
- name: Install svu
|
||||
run: brew install caarlos0/tap/svu
|
||||
run: brew install --cask caarlos0/tap/svu
|
||||
- name: Compute next version for release
|
||||
run: |
|
||||
echo "VERSION_NEXT=`svu ${{ inputs.bump }}`" | tee -a $GITHUB_ENV
|
||||
|
|
@ -72,7 +72,7 @@ jobs:
|
|||
sudo rm -rf /usr/share/dotnet
|
||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ jobs:
|
|||
if: needs.version.outputs.should_release #only redo if the version changed
|
||||
run: sed -i -e "s/version=.*/version=${{ needs.version.outputs.version_next }}/" gradle.properties
|
||||
|
||||
- uses: actions/setup-node@v5
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
|
|
@ -143,7 +143,7 @@ jobs:
|
|||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Changelog output
|
||||
if: always() && needs.version.outputs.should_release
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: jreleaser-changelog
|
||||
path: |
|
||||
|
|
@ -182,7 +182,7 @@ jobs:
|
|||
AWS_SECRET_ACCESS_KEY: ${{ secrets.B2_SECRET_ACCESS_KEY }}
|
||||
- name: Upload Conveyor log
|
||||
if: always() && inputs.conveyor-copied-site
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: conveyor-make-copied-site
|
||||
path: ~/.cache/hydraulic/conveyor/logs/log.latest.txt
|
||||
|
|
@ -194,7 +194,7 @@ jobs:
|
|||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Release output
|
||||
if: always() && inputs.github_release
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: jreleaser-release
|
||||
path: |
|
||||
|
|
@ -212,7 +212,7 @@ jobs:
|
|||
JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: JReleaser Publish output
|
||||
if: always() && inputs.docker_release
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: jreleaser-publish
|
||||
path: |
|
||||
|
|
@ -236,7 +236,7 @@ jobs:
|
|||
AWS_SECRET_ACCESS_KEY: ${{ secrets.B2_SECRET_ACCESS_KEY }}
|
||||
- name: Upload Conveyor log
|
||||
if: always() && inputs.msstore_release
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: conveyor-ms-store-release
|
||||
path: ~/.cache/hydraulic/conveyor/logs/log.latest.txt
|
||||
|
|
|
|||
14
.github/workflows/tests.yml
vendored
14
.github/workflows/tests.yml
vendored
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
fail-fast: false
|
||||
name: Test server - ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- name: Setup Java 21
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
|
|
@ -35,20 +35,20 @@ jobs:
|
|||
|
||||
- name: Upload Unit Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: test-results-${{ matrix.os }}
|
||||
path: komga/build/test-results/
|
||||
|
||||
- name: Upload Unit Test Reports
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: test-reports-${{ matrix.os }}
|
||||
path: komga/build/reports/tests/
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v5
|
||||
uses: mikepenz/action-junit-report@v6
|
||||
if: always()
|
||||
with:
|
||||
report_paths: '**/build/test-results/test/TEST-*.xml'
|
||||
|
|
@ -69,7 +69,7 @@ jobs:
|
|||
|
||||
- name: Upload JDK required modules
|
||||
if: steps.conveyor_compare.outcome == 'failure'
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: conveyor-required-jdk-modules
|
||||
path: ./output/required-jdk-modules.txt
|
||||
|
|
@ -78,8 +78,8 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
name: Test webui builds
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache: 'npm'
|
||||
|
|
|
|||
51
CHANGELOG.md
51
CHANGELOG.md
|
|
@ -1,3 +1,54 @@
|
|||
# [1.23.6](https://github.com/gotson/komga/compare/1.23.5...1.23.6) (2025-11-28)
|
||||
## 🐛 Fixes
|
||||
**kobo**
|
||||
- proxy 401 errors on initialization ([3739951](https://github.com/gotson/komga/commits/3739951))
|
||||
- prevent double URL encoding when proxying ([ce3ad4c](https://github.com/gotson/komga/commits/ce3ad4c)), closes [#2130](https://github.com/gotson/komga/issues/2130)
|
||||
- proxy Content-Type headers for kobo ([b925f3e](https://github.com/gotson/komga/commits/b925f3e)), closes [#2074](https://github.com/gotson/komga/issues/2074)
|
||||
|
||||
**unscoped**
|
||||
- properly decode cover href when generating epub cover ([f8ca936](https://github.com/gotson/komga/commits/f8ca936)), closes [#2118](https://github.com/gotson/komga/issues/2118)
|
||||
|
||||
## 🔄️ Changes
|
||||
**kobo**
|
||||
- log error responses ([454c6c7](https://github.com/gotson/komga/commits/454c6c7))
|
||||
|
||||
## 🛠 Build
|
||||
**docker**
|
||||
- use old-releases apt repo ([ba7b826](https://github.com/gotson/komga/commits/ba7b826))
|
||||
|
||||
**webui**
|
||||
- update Browserslist db ([727fe39](https://github.com/gotson/komga/commits/727fe39))
|
||||
|
||||
**unscoped**
|
||||
- fix svu install ([9a56b30](https://github.com/gotson/komga/commits/9a56b30))
|
||||
|
||||
## 📝 Documentation
|
||||
**api**
|
||||
- fix mediatype ([af66144](https://github.com/gotson/komga/commits/af66144))
|
||||
|
||||
## 🌐 Translation
|
||||
**komga-tray**
|
||||
- translated using Weblate (Arabic) ([a5548a5](https://github.com/gotson/komga/commits/a5548a5))
|
||||
- translated using Weblate (Russian) ([8f8d20a](https://github.com/gotson/komga/commits/8f8d20a))
|
||||
- translated using Weblate (Galician) ([0f69a3a](https://github.com/gotson/komga/commits/0f69a3a))
|
||||
|
||||
**webui**
|
||||
- translated using Weblate (Croatian) ([dde0169](https://github.com/gotson/komga/commits/dde0169))
|
||||
- translated using Weblate (Russian) ([a2ed7d3](https://github.com/gotson/komga/commits/a2ed7d3))
|
||||
- translated using Weblate (Portuguese (Brazil)) ([475f026](https://github.com/gotson/komga/commits/475f026))
|
||||
- translated using Weblate (Thai) ([a03f1bd](https://github.com/gotson/komga/commits/a03f1bd))
|
||||
|
||||
## ⚙️ Dependencies
|
||||
**ci**
|
||||
- bump actions/checkout from 5 to 6 ([f138fe3](https://github.com/gotson/komga/commits/f138fe3))
|
||||
- bump mikepenz/action-junit-report from 5 to 6 ([6b07fda](https://github.com/gotson/komga/commits/6b07fda))
|
||||
- bump actions/upload-artifact from 4 to 5 ([fe40ede](https://github.com/gotson/komga/commits/fe40ede))
|
||||
- bump actions/setup-node from 5 to 6 ([c23f2d3](https://github.com/gotson/komga/commits/c23f2d3))
|
||||
|
||||
**webui**
|
||||
- bump node-forge from 1.3.1 to 1.3.2 in /komga-webui ([0f25453](https://github.com/gotson/komga/commits/0f25453))
|
||||
- bump js-yaml from 3.14.1 to 3.14.2 in /komga-webui ([cd47fc7](https://github.com/gotson/komga/commits/cd47fc7))
|
||||
|
||||
# [1.23.5](https://github.com/gotson/komga/compare/1.23.4...1.23.5) (2025-10-08)
|
||||
## 🚀 Features
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
version=1.23.5
|
||||
version=1.23.6
|
||||
org.gradle.jvmargs=-Xmx2G
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
dialog_error.close=إغلاق
|
||||
dialog_error.copy_clipboard=النسخ إلى الحافظة
|
||||
dialog_error.title=Komga لم يقدر على البدء
|
||||
error_message.port_in_use=الباب {} على قيد الاستعمال.\nربما Komga جارٍ بالفعل.\nتحقق أيقونة علبة النظام أو القائمة لأيقونة Komga.
|
||||
error_message.unexpected=حصل خطأ غير متوقع.
|
||||
menu.open_komga=فتح Komga
|
||||
menu.quit=إغلاق Komga
|
||||
menu.show_conf_dir=فتح موقع الإعدادات
|
||||
menu.show_log=إظهار ملف السجل
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
dialog_error.close=Pechar
|
||||
dialog_error.copy_clipboard=Copiar ao portapapeis
|
||||
dialog_error.title=Komga fallou ao iniciar
|
||||
error_message.port_in_use=O porto {} está en uso.\nÉ probable que Komga xa esté a executarse.\nBusca a icona de Komga na bandexa de sistema ou a barra de menú.
|
||||
error_message.unexpected=Aconteceu un erro imprevisto.
|
||||
menu.open_komga=Abrir Komga
|
||||
menu.quit=Saír de Komga
|
||||
menu.show_conf_dir=Abrir o cartafol de configuración
|
||||
menu.show_log=Amosar o ficheiro de rexistro
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
dialog_error.close=Закрыть
|
||||
dialog_error.copy_clipboard=Скопировать в буфер обмена
|
||||
dialog_error.title=Komga не смог запуститься
|
||||
error_message.port_in_use=Порт {] уже используется.\nKomga возможно уже работает.\nПроверьте панель задач или меню на наличие иконки Komga.
|
||||
dialog_error.title=Komga не удалось запустить
|
||||
error_message.port_in_use=Порт {} уже используется.\nВероятно, Komga уже запущен.\nПроверьте область уведомлений или панель меню на наличие иконки Komga.
|
||||
error_message.unexpected=Произошла непредвиденная ошибка.
|
||||
menu.open_komga=Открыть Komga
|
||||
menu.quit=Закрыть Komga
|
||||
|
|
|
|||
36
komga-webui/package-lock.json
generated
36
komga-webui/package-lock.json
generated
|
|
@ -5779,9 +5779,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001746",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz",
|
||||
"integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==",
|
||||
"version": "1.0.30001757",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz",
|
||||
"integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
|
@ -13026,9 +13026,9 @@
|
|||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"version": "3.14.2",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
|
||||
"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"argparse": "^1.0.7",
|
||||
|
|
@ -14161,9 +14161,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz",
|
||||
"integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 6.13.0"
|
||||
|
|
@ -24153,9 +24153,9 @@
|
|||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001746",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz",
|
||||
"integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA=="
|
||||
"version": "1.0.30001757",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz",
|
||||
"integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ=="
|
||||
},
|
||||
"case-sensitive-paths-webpack-plugin": {
|
||||
"version": "2.4.0",
|
||||
|
|
@ -29505,9 +29505,9 @@
|
|||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"version": "3.14.2",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
|
||||
"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
|
|
@ -30398,9 +30398,9 @@
|
|||
}
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
|
||||
"integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz",
|
||||
"integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==",
|
||||
"dev": true
|
||||
},
|
||||
"node-int64": {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,15 @@
|
|||
},
|
||||
"account_settings": {
|
||||
"account_settings": "إعدادات الحساب",
|
||||
"change_password": "تغيير كلمة السر"
|
||||
"api_key": {
|
||||
"created_date": "تاريخ الصنع: {date}",
|
||||
"force_kobo_sync": "إجبار مزامنة Kobo",
|
||||
"generate_api_key": "توليد مفتاح API",
|
||||
"no_keys": "لم يخلق مفتاح API بعد"
|
||||
},
|
||||
"change_password": "تغيير كلمة السر",
|
||||
"details": "تفاصيل",
|
||||
"my_account": "حسابي"
|
||||
},
|
||||
"announcements": {
|
||||
"mark_all_read": "اشر عليها بانها قرأت",
|
||||
|
|
@ -27,6 +35,7 @@
|
|||
"tab_title": "إعلانات"
|
||||
},
|
||||
"authentication_activity": {
|
||||
"api_key": "مفتاح API",
|
||||
"datetime": "التاريخ والوقت",
|
||||
"email": "البريد الإلكتروني",
|
||||
"error": "خطأ",
|
||||
|
|
@ -85,7 +94,8 @@
|
|||
"bookreader": {
|
||||
"beginning_of_book": "أنت في بداية الكتاب.",
|
||||
"changing_reading_direction": "تغيير اتجاه القراءة إلى",
|
||||
"cycling_page_layout": "تخطيط دوري للصفحة",
|
||||
"cycling_page_layout": "تغيير تخطيط الصفحة",
|
||||
"cycling_page_margin": "تغيير هامش الصفحة",
|
||||
"cycling_scale": "تغيير حجم التحرير",
|
||||
"cycling_side_padding": "تغيير الحدود الجانبية",
|
||||
"download_current_page": "تنزيل الصفحة الحالية",
|
||||
|
|
@ -128,6 +138,7 @@
|
|||
"general": "إعدادات عامة",
|
||||
"gestures": "الإيماءات",
|
||||
"page_layout": "تخطيط الصفحة",
|
||||
"page_margin": "هامش الصفحة",
|
||||
"paged": "خيارات القارئ المرقم",
|
||||
"reading_mode": "وضع القراءة",
|
||||
"scale_type": "نوع القياس",
|
||||
|
|
@ -137,8 +148,9 @@
|
|||
},
|
||||
"shortcuts": {
|
||||
"close": "إغلاق",
|
||||
"cycle_page_layout": "دورة تخطيط الصفحة",
|
||||
"cycle_scale": "مقياس الدورة",
|
||||
"cycle_page_layout": "تغيير تخطيط الصفحة",
|
||||
"cycle_page_margin": "تغيير هامش الصفحة",
|
||||
"cycle_scale": "تغيير الحجم",
|
||||
"cycle_side_padding": "تغيير الحدود الجانبية",
|
||||
"first_page": "الصفحة الأولى",
|
||||
"fullscreen": "إدخال/إنهاء ملء الشاشة",
|
||||
|
|
@ -161,6 +173,8 @@
|
|||
},
|
||||
"browse_book": {
|
||||
"comment": "تعليق",
|
||||
"date_created": "صُنِع",
|
||||
"date_modified": "آخر تعديل",
|
||||
"download_file": "تحميل الملف",
|
||||
"file": "ملف",
|
||||
"format": "صيغة",
|
||||
|
|
@ -170,6 +184,8 @@
|
|||
"outdated_tooltip": "تم تغيير ملف هذا الكتاب ، يجب إعادة تحليل هذا الكتاب",
|
||||
"read_book": "قراءة كتاب",
|
||||
"read_incognito": "قراءة التصفح المتخفي",
|
||||
"remove_from_collection": "إزالة الكتاب من المجموعة",
|
||||
"remove_from_readlist": "إزالة الكتاب من قائمة القراءة",
|
||||
"size": "حجم"
|
||||
},
|
||||
"browse_collection": {
|
||||
|
|
@ -184,6 +200,7 @@
|
|||
},
|
||||
"browse_series": {
|
||||
"earliest_year_from_release_dates": "هذه هي السنة الأولى من تواريخ الإصدار لجميع الكتب في السلسلة",
|
||||
"remove_from_collection": "إزالة السلسلة من المجموعة",
|
||||
"series_no_summary": "هذه السلسلة لا تحتوي على ملخص ، لذلك اخترنا واحدًا لك!",
|
||||
"summary_from_book": "ملخص من الكتاب {number}:"
|
||||
},
|
||||
|
|
@ -194,6 +211,8 @@
|
|||
"common": {
|
||||
"age": "العمر",
|
||||
"all_libraries": "كل المكتبات",
|
||||
"all_of": "كل من",
|
||||
"any_of": "أي من",
|
||||
"book": "كتاب",
|
||||
"books": "كتب",
|
||||
"books_n": "لا يوجد كتاب | 1 كتاب | {count} كتب",
|
||||
|
|
@ -203,15 +222,19 @@
|
|||
"choose_image": "اختر صورة",
|
||||
"close": "إغلاق",
|
||||
"collections": "المجموعات",
|
||||
"copied": "تم النسخ!",
|
||||
"create": "صنع",
|
||||
"delete": "حذف",
|
||||
"discard": "تجاهل",
|
||||
"dimension": "ع:{width}, ط:{height}",
|
||||
"discard": "تخلص",
|
||||
"disk_space": "مساحة القرص",
|
||||
"dismiss": "رفض",
|
||||
"download": "تحميل",
|
||||
"drag_drop": "أمسك واسحب",
|
||||
"duplicate": "مكرر",
|
||||
"email": "البريد الإلكتروني",
|
||||
"epub": "Epub",
|
||||
"epub": "EPUB",
|
||||
"error": "خطأ",
|
||||
"filename": "اسم الملف",
|
||||
"filter_no_matches": "الفلتر النشط ليس له تطابق",
|
||||
"genre": "نوع",
|
||||
|
|
@ -219,13 +242,17 @@
|
|||
"go_to_library": "اذهب إلى المكتبة",
|
||||
"go_to_readlist": "انتقل إلى قائمة القراءة",
|
||||
"go_to_series": "الانتقال إلى السلسلة",
|
||||
"i_understand": "فهمت",
|
||||
"library": "مكتبة",
|
||||
"locale_name": "العربية",
|
||||
"locale_rtl": "true",
|
||||
"lock_all": "قفل الكل",
|
||||
"media": "الوسائط",
|
||||
"more": "المزيد",
|
||||
"n_selected": "{count} مختار",
|
||||
"nothing_to_show": "لا شيء للعرض",
|
||||
"oneshot": "طلقة واحدة",
|
||||
"ok": "حسنا",
|
||||
"oneshot": "قصة منفردة",
|
||||
"outdated": "متقادمة",
|
||||
"page": "صفحة",
|
||||
"page_number": "رقم الصفحة",
|
||||
|
|
@ -235,19 +262,23 @@
|
|||
"password": "كلمة السر",
|
||||
"pdf": "PDF",
|
||||
"pending_tasks": "لا توجد مهام معلقة | مهمة واحدة معلقة | {count} مهام معلقة",
|
||||
"pinned_libraries": "المكتبات المثبتة",
|
||||
"publisher": "الناشر",
|
||||
"read": "اقرأ",
|
||||
"read_on": "قرأ في {date}",
|
||||
"readlist": "قائمة القراءة",
|
||||
"readlists": "قوائم القراءة",
|
||||
"remember-me": "تذكرني",
|
||||
"reorder": "تغيير الترتيب",
|
||||
"required": "مطلوب",
|
||||
"reset_filters": "إعادة تعيين فلتر",
|
||||
"roles": "أدوار",
|
||||
"save_changes": "حفظ التغييرات",
|
||||
"series": "سلسلة",
|
||||
"settings": "الإعدادات",
|
||||
"sidecars": "Sidecars",
|
||||
"tags": "التصنيف",
|
||||
"ui": "واجهة المستخدم",
|
||||
"unavailable": "غير متوفر",
|
||||
"unlock_all": "فتح الكل",
|
||||
"url": "عنوان URL",
|
||||
|
|
@ -271,10 +302,11 @@
|
|||
"comicrack_preambule_html": "يمكنك استيراد قوائم قراءة ComicRack الحالية بتنسيق <code>cbl</code>.<br>سيحاول Komga مطابقة السلسلة ورقم الكتاب المقدمين مع السلسلة والكتب في مكتباتك.",
|
||||
"dialog_confirmation": {
|
||||
"body": "{unmatched} / {total} الكتب غير متطابقة",
|
||||
"body2": "{duplicates} / {total} كتاب مكرر",
|
||||
"create": "الخلق على أي حال",
|
||||
"title": "بعض الكتب لا تتطابق"
|
||||
},
|
||||
"field_file_label": "ComicRack Reading List (.cbl)",
|
||||
"field_file_label": "قائمة قراءة ComicRack (من نوع cbl.)",
|
||||
"field_files_label": "قوائم القراءة ComicRack (.cbl)",
|
||||
"import_read_lists": "استيراد قوائم القراءة",
|
||||
"imported_as": "مستورد كـ {name}",
|
||||
|
|
@ -286,6 +318,14 @@
|
|||
"tab_title": "استيراد البيانات"
|
||||
},
|
||||
"dialog": {
|
||||
"add_api_key": {
|
||||
"button_confirm": "توليد",
|
||||
"context": "يمكن استعمال مفاتيح الAPI للتوثيق عبر بروتوكول Kobo Sync.",
|
||||
"dialog_title": "توليد مفتاح API جديد",
|
||||
"field_comment": "تعليق",
|
||||
"field_comment_hint": "ما الغرض من مفتاح الAPI هذا؟",
|
||||
"info_copy": "يرجى التأكد من نسخ مفتاح الAPI الآن. لا يستطاع النظر عليه مجددا!"
|
||||
},
|
||||
"add_to_collection": {
|
||||
"button_create": "خلق",
|
||||
"card_collection_subtitle": "لا توجد سلسلة | 1 سلسلة | {count} سلسلة",
|
||||
|
|
@ -319,6 +359,12 @@
|
|||
"filter": "مصنف حسب رقم الكتاب أو العنوان أو تاريخ الإصدار",
|
||||
"title": "حدد كتاب"
|
||||
},
|
||||
"delete_apikey": {
|
||||
"button_confirm": "حذف",
|
||||
"confirm_delete": "فهمت, حذف مفتاح الAPI المسمى {name}",
|
||||
"dialog_title": "حذف مفتاح الAPI",
|
||||
"warning_html": "كل التطبيقات التي تستعمل مفتاح الAPI هذا ستصبح غير قادرة على الوصول إلى الAPI التابع لKomga. لا يمكن التراجع عن هذا الإجراء."
|
||||
},
|
||||
"delete_book": {
|
||||
"button_confirm": "حذف",
|
||||
"confirm_delete": "نعم، حذف كتاب \"{name}\" وملفاته",
|
||||
|
|
@ -389,6 +435,8 @@
|
|||
"field_summary": "ملخص",
|
||||
"field_tags": "التصنيف",
|
||||
"field_title": "العنوان",
|
||||
"number_sort_decrement": "تقليل الجميع ب1",
|
||||
"number_sort_increment": "زيادة الجميع ب1",
|
||||
"tab_authors": "المؤلفون",
|
||||
"tab_general": "إعدادات عامة",
|
||||
"tab_links": "الروابط",
|
||||
|
|
@ -415,6 +463,7 @@
|
|||
"dialot_title_edit": "تحرير المكتبة",
|
||||
"field_analysis_analyze_dimensions": "تحليل أبعاد الصفحات",
|
||||
"field_analysis_hash_files": "حساب تجزئة للملفات",
|
||||
"field_analysis_hash_koreader": "حسابة التلبيد لملفات KOReader",
|
||||
"field_analysis_hash_pages": "حساب تجزئة الصفحات",
|
||||
"field_convert_to_cbz": "تحويل تلقائيا إلى CBZ",
|
||||
"field_import_barcode_isbn": "الباركود ردمك",
|
||||
|
|
@ -422,15 +471,19 @@
|
|||
"field_import_comicinfo_collections": "المجموعات",
|
||||
"field_import_comicinfo_readlists": "قوائم القراءة",
|
||||
"field_import_comicinfo_series": "سلسلة البيانات الوصفية",
|
||||
"field_import_comicinfo_series_append_volume": "إضافة المجلد إلى عنوان المسلسل",
|
||||
"field_import_epub_book": "البيانات الوصفية للكتاب",
|
||||
"field_import_epub_series": "سلسلة البيانات الوصفية",
|
||||
"field_import_local_artwork": "الأعمال الفنية المحلية",
|
||||
"field_import_mylar_series": "سلسلة البيانات الوصفية",
|
||||
"field_name": "الاسم",
|
||||
"field_oneshotsdirectory": "موقع القصص المنفردة",
|
||||
"field_repair_extensions": "إصلاح ملحقات الملفات غير الصحيحة تلقائيًا",
|
||||
"field_root_folder": "المجلد الرئيسي",
|
||||
"field_scan_interval": "تكرار البحث عن الملفات",
|
||||
"field_scanner_empty_trash_after_scan": "تفريغ المهملات تلقائيا بعد كل فحص",
|
||||
"field_scanner_force_directory_modified_time": "فرض وقت تعديل الدليل",
|
||||
"field_scanner_scan_startup": "البحث عن الملفات عند بدء البرنامج",
|
||||
"field_series_cover": "غلاف السلسلة",
|
||||
"file_browser_dialog_button_confirm": "إختيار",
|
||||
"file_browser_dialog_title": "المجلد الجذر للمكتبة",
|
||||
|
|
@ -441,11 +494,14 @@
|
|||
"label_import_epub": "استيراد البيانات الوصفية من ملفات EPUB",
|
||||
"label_import_local": "استيراد أصول الوسائط المحلية",
|
||||
"label_import_mylar": "استيراد البيانات الوصفية التي تم إنشاؤها بواسطة Mylar",
|
||||
"label_scan_directory_exclusions": "استبعاد المواقع",
|
||||
"label_scan_types": "البحث عن أنواع الملفات هذه",
|
||||
"label_scanner": "الماسح الضوئي",
|
||||
"label_series_cover": "غلاف السلسلة",
|
||||
"tab_general": "إعدادات عامة",
|
||||
"tab_metadata": "البيانات الوصفية",
|
||||
"tab_options": "الخيارات",
|
||||
"tooltip_oneshotsdirectory": "يترك فارغا للتعطيل",
|
||||
"tooltip_scanner_force_modified_time": "تمكين إذا كانت المكتبة على Google Drive",
|
||||
"tooltip_use_resources": "يمكن أن تستهلك الكثير من الموارد في مكتبات كبيرة أو أجهزة بطيئة"
|
||||
},
|
||||
|
|
@ -453,11 +509,16 @@
|
|||
"button_cancel": "إلغاء",
|
||||
"button_confirm": "حفظ التغييرات",
|
||||
"dialog_title": "تحرير قائمة القراءة",
|
||||
"field_manual_ordering": "ترتيب يدوي",
|
||||
"field_name": "الاسم",
|
||||
"field_summary": "ملخص",
|
||||
"tab_general": "عام",
|
||||
"tab_poster": "ملصق"
|
||||
},
|
||||
"edit_recommended": {
|
||||
"button_confirm": "حفظ التعديلات",
|
||||
"button_reset": "الإعادة إلى التعديلات الأصلية"
|
||||
},
|
||||
"edit_series": {
|
||||
"button_cancel": "إلغاء",
|
||||
"button_confirm": "حفظ التغييرات",
|
||||
|
|
@ -483,6 +544,7 @@
|
|||
"tab_poster": "ملصق",
|
||||
"tab_sharing": "مشاركة",
|
||||
"tab_tags": "التصنيف",
|
||||
"tab_titles": "العناوين البديلة",
|
||||
"tags_notice_multiple_edit": "أنت تقوم بتحرير العلامات لسلسلة متعددة. سيؤدي هذا إلى تجاوز العلامات الموجودة في كل سلسلة."
|
||||
},
|
||||
"edit_user": {
|
||||
|
|
@ -525,6 +587,9 @@
|
|||
},
|
||||
"title": "اسم الوجهة"
|
||||
},
|
||||
"force_kobo_sync": {
|
||||
"dialog_title": "إجبار مزامنة Kobo"
|
||||
},
|
||||
"password_change": {
|
||||
"button_cancel": "إلغاء",
|
||||
"button_confirm": "تغيير كلمة السر",
|
||||
|
|
@ -541,6 +606,7 @@
|
|||
},
|
||||
"series_picker": {
|
||||
"label_search_series": "سلسلة البحث",
|
||||
"no_results": "لم يتم العثور على أي سلسلة",
|
||||
"title": "اختيار سلسلة"
|
||||
},
|
||||
"server_stop": {
|
||||
|
|
@ -579,21 +645,31 @@
|
|||
}
|
||||
},
|
||||
"duplicate_pages": {
|
||||
"action_auto_delete_remaining": "باق إلغاء {count} أوتوماتيكيا",
|
||||
"action_delete_auto": "حذف تلقائي",
|
||||
"action_delete_manual": "حذف يدوي",
|
||||
"action_delete_matches": "حذف المطابقات",
|
||||
"action_ignore": "تجاهل",
|
||||
"action_ignore_remaining": "تجاهل الباقي ({count})",
|
||||
"action_manual_delete_remaining": "إلغاء الباقي يدويا ({count})",
|
||||
"delete_to_save": "حذف لحفظ {size}",
|
||||
"deleted_count": "تم حذف {count} مرة",
|
||||
"empty_title": "لم يتم العثور على صفحات مكررة",
|
||||
"empty_title_known": "لا توجد نسخ مكررة معروف عنها",
|
||||
"filter": {
|
||||
"count": "عدد",
|
||||
"date_added": "تاريخ الإضافة",
|
||||
"date_modified": "تاريخ التعديل",
|
||||
"delete_count": "عدد الحذف",
|
||||
"delete_size": "المساحة المحفوظة",
|
||||
"match_count": "عدد النتائج المتطابقة",
|
||||
"size": "حجم",
|
||||
"total_size": "الحجم الإجمالي"
|
||||
},
|
||||
"info": "حذف الصفحات المكررة سيغيّر ملفاتك. احتفظ بنسخة احتياطية من ملفاتك واستخدم الحذف اليدوي قبل استخدام الحذف التلقائي.",
|
||||
"known": "المعروفة",
|
||||
"matches_n": "لا يوجد تطابق | 1 تطابق | {count} التطابق",
|
||||
"new": "الجديدة",
|
||||
"saved_size": "حُفظ {size}",
|
||||
"title": "صفحات مكررة",
|
||||
"unknown_size": "حجم مجهول"
|
||||
|
|
@ -609,6 +685,23 @@
|
|||
"HARDLINK": "ملفات الروابط الثابتة/النسخ",
|
||||
"MOVE": "نقل الملفات"
|
||||
},
|
||||
"epubreader": {
|
||||
"appearances": {
|
||||
"day": "النهار",
|
||||
"night": "الليل",
|
||||
"sepia": "سيبيا"
|
||||
},
|
||||
"column_count": {
|
||||
"auto": "أوتوماتيكي",
|
||||
"one": "واحد",
|
||||
"two": "اثنان"
|
||||
},
|
||||
"reading_direction": {
|
||||
"auto": "أوتوماتيكي",
|
||||
"ltr": "من اليسار إلى اليمين",
|
||||
"rtl": "من اليمين إلى اليسار"
|
||||
}
|
||||
},
|
||||
"historical_event_type": {
|
||||
"BookConverted": "تمّ تحويل الكتاب",
|
||||
"BookFileDeleted": "تمّ مسح ملف الكتاب",
|
||||
|
|
@ -616,6 +709,11 @@
|
|||
"DuplicatePageDeleted": "تمّ حذف الصفحة المكررة",
|
||||
"SeriesFolderDeleted": "تمّ حذف مجلد السلسلة"
|
||||
},
|
||||
"media_profile": {
|
||||
"DIVINA": "DIVINA",
|
||||
"EPUB": "EPUB",
|
||||
"PDF": "PDF"
|
||||
},
|
||||
"media_status": {
|
||||
"ERROR": "خطأ",
|
||||
"OUTDATED": "قديمه",
|
||||
|
|
@ -634,6 +732,14 @@
|
|||
"VERTICAL": "عمودي",
|
||||
"WEBTOON": "ويبتون"
|
||||
},
|
||||
"scan_interval": {
|
||||
"DAILY": "يوميا",
|
||||
"DISABLED": "معطل",
|
||||
"EVERY_12H": "كل 12 ساعة",
|
||||
"EVERY_6H": "كل 6 ساعات",
|
||||
"HOURLY": "كل ساعة",
|
||||
"WEEKLY": "كل أسبوع"
|
||||
},
|
||||
"series_cover": {
|
||||
"FIRST": "أول",
|
||||
"LAST": "أخير"
|
||||
|
|
@ -645,6 +751,34 @@
|
|||
"ONGOING": "مستمر"
|
||||
}
|
||||
},
|
||||
"epubreader": {
|
||||
"current_chapter": "الفصل الحالي",
|
||||
"page_of": "الصفحة {page} من {count}",
|
||||
"publisher_font": "الناشر",
|
||||
"settings": {
|
||||
"column_count": "عدد أعمدة",
|
||||
"font_family": "الخط",
|
||||
"layout": "تخطيط",
|
||||
"layout_scroll": "تمرير",
|
||||
"navigation_mode": "وضع التنقل",
|
||||
"navigation_options": {
|
||||
"both": "كلاهما",
|
||||
"buttons": "أزرار",
|
||||
"click": "نقر/ضغط"
|
||||
},
|
||||
"page_margins": "هوامش الصفحة"
|
||||
},
|
||||
"shortcuts": {
|
||||
"cycle_pagination": "تغيير عدد الأعمدة",
|
||||
"font_size_decrease": "تصغير الخط",
|
||||
"font_size_increase": "تكبير الخط",
|
||||
"menus": "القائمات",
|
||||
"next": "أمام",
|
||||
"previous": "خلف",
|
||||
"settings": "الإعدادات",
|
||||
"show_hide_toc": "إظهار/إخفاء الفهرس"
|
||||
}
|
||||
},
|
||||
"error_codes": {
|
||||
"ERR_1000": "تعذر الوصول إلى الملف أثناء التحليل",
|
||||
"ERR_1001": "نوع الوسائط غير مدعوم",
|
||||
|
|
@ -667,11 +801,13 @@
|
|||
"filter": {
|
||||
"age_rating": "التصنيف العمري",
|
||||
"age_rating_none": "لا شيء",
|
||||
"any": "أي",
|
||||
"complete": "اكتمل",
|
||||
"genre": "نوع",
|
||||
"in_progress": "قيد التقدم",
|
||||
"language": "اللغة",
|
||||
"library": "المكتبة",
|
||||
"oneshot": "قصة منفردة",
|
||||
"publisher": "الناشر",
|
||||
"read": "اقرأ",
|
||||
"release_date": "تاريخ الاصدار",
|
||||
|
|
@ -699,6 +835,8 @@
|
|||
},
|
||||
"library_navigation": {
|
||||
"browse": "تصفّح",
|
||||
"browse_books": "كتب",
|
||||
"browse_series": "سلسلات",
|
||||
"collections": "المجموعات",
|
||||
"readlists": "قوائم القراءة",
|
||||
"recommended": "موصى به"
|
||||
|
|
@ -730,6 +868,7 @@
|
|||
"empty_trash": "إفراغ سلة المهملات",
|
||||
"mark_read": "تحديد كمقروء",
|
||||
"mark_unread": "تحديد كغير مقروء",
|
||||
"pin": "تثبيت",
|
||||
"refresh_metadata": "تحديث البيانات الوصفية",
|
||||
"scan_library_files": "فحص ملفات المكتبة",
|
||||
"select_all": "تحديد الكل"
|
||||
|
|
@ -745,6 +884,9 @@
|
|||
"libraries": "المكتبات",
|
||||
"logout": "تسجيل الخروج"
|
||||
},
|
||||
"no_libraries_pinned": {
|
||||
"title": "لا مكتبات مثبتة"
|
||||
},
|
||||
"page_not_found": {
|
||||
"go_back_to_home_page": "العودة إلى الصفحة الرئيسية",
|
||||
"page_does_not_exist": "الصفحة التي تبحث عنها غير موجودة.",
|
||||
|
|
@ -754,6 +896,12 @@
|
|||
"less": "أقرأ أقل",
|
||||
"more": "اقرأ أكثر"
|
||||
},
|
||||
"readlist_import": {
|
||||
"row": {
|
||||
"duplicate_book": "كتاب مكرر",
|
||||
"error_choose_book": "اختيار كتاب"
|
||||
}
|
||||
},
|
||||
"readlists_expansion_panel": {
|
||||
"manage_readlist": "إدارة قائمة القراءة",
|
||||
"title": "{name} قائمة القراءة"
|
||||
|
|
@ -775,12 +923,21 @@
|
|||
"button_empty_trash": "إفراغ سلة المهملات لكل المكتبات",
|
||||
"button_scan_libraries": "مسح جميع المكتبات",
|
||||
"button_shutdown": "إيقاف التشغيل",
|
||||
"download_log": "تحميل ملف السجل",
|
||||
"notification_tasks_cancelled": "لا يوجد مهام لإلغائها | تمّ إلغاء 1 مهمة | تمّ إلغاء {count} مهمة",
|
||||
"section_title": "إدارة الخادم"
|
||||
},
|
||||
"tab_title": "خادم"
|
||||
"tab_title": "خادم",
|
||||
"updates": "تحديثات"
|
||||
},
|
||||
"server_settings": {
|
||||
"dialog_regenerate_thumbnails": {
|
||||
"btn_alternate": "نعم، جميع الكتب",
|
||||
"btn_cancel": "لا",
|
||||
"btn_confirm": "نعم، لكن فقط إن كانت اكبر"
|
||||
},
|
||||
"label_kobo_port": "باب مزامنة Kobo الخارجي",
|
||||
"label_server_port": "باب الخادم",
|
||||
"server_settings": "إعدادات الخادم"
|
||||
},
|
||||
"settings_user": {
|
||||
|
|
@ -795,12 +952,15 @@
|
|||
"sort": {
|
||||
"books_count": "عدد الكتب",
|
||||
"date_added": "تاريخ الإضافة",
|
||||
"date_read": "تاريخ القراءة",
|
||||
"date_updated": "تاريخ التحديث",
|
||||
"file_name": "اسم الملف",
|
||||
"file_size": "حجم الملف",
|
||||
"folder_name": "اسم المجلد",
|
||||
"name": "الاسم",
|
||||
"number": "رقم",
|
||||
"page_count": "عدد الصفحات",
|
||||
"random": "عشوائي",
|
||||
"release_date": "تاريخ الإصدار"
|
||||
},
|
||||
"theme": {
|
||||
|
|
@ -818,16 +978,36 @@
|
|||
"tooltip_too_big": "الملف كبير جدًا!",
|
||||
"tooltip_user_uploaded": "تمّ الرفع بواسطة المستخدم"
|
||||
},
|
||||
"titles_more": {
|
||||
"less": "عناوين أقل",
|
||||
"more": "عناوين أكثر"
|
||||
},
|
||||
"ui_settings": {
|
||||
"general": "عام",
|
||||
"section_oauth2": "OAuth2",
|
||||
"series_groups": {
|
||||
"alpha": "ابجدي",
|
||||
"japanese": "غوجون (ياباني)"
|
||||
}
|
||||
},
|
||||
"updates": {
|
||||
"available": "توجد تحديثات"
|
||||
},
|
||||
"user_roles": {
|
||||
"ADMIN": "مدير",
|
||||
"FILE_DOWNLOAD": "تحميل الملف",
|
||||
"PAGE_STREAMING": "صفحات البث",
|
||||
"KOBO_SYNC": "مزامنة Kobo",
|
||||
"KOREADER_SYNC": "مزامنة KOReader",
|
||||
"PAGE_STREAMING": "بث الصفحات",
|
||||
"USER": "مستخدم"
|
||||
},
|
||||
"users": {
|
||||
"api_keys": "مفاتيح الAPI",
|
||||
"users": "المستخدمين"
|
||||
},
|
||||
"validation": {
|
||||
"one_or_more": "يجب أن يكون 1 أو أكثر",
|
||||
"tcp_port": "يجب أن يكون بين 1 و 65535",
|
||||
"zero_or_more": "يجب أن يكون 0 أو أكثر"
|
||||
},
|
||||
"welcome": {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,15 @@
|
|||
},
|
||||
"account_settings": {
|
||||
"account_settings": "Configuración da conta",
|
||||
"change_password": "Cambiar o contrasinal"
|
||||
"api_key": {
|
||||
"created_date": "Data de creación: {date}",
|
||||
"force_kobo_sync": "Forzar a sincronización con Kobo",
|
||||
"generate_api_key": "Xerar clave API",
|
||||
"no_keys": "Aínda non se xerou clave API ningunha"
|
||||
},
|
||||
"change_password": "Cambiar o contrasinal",
|
||||
"details": "Detalles",
|
||||
"my_account": "A miña conta"
|
||||
},
|
||||
"announcements": {
|
||||
"mark_all_read": "Marcar todo como lido",
|
||||
|
|
@ -27,6 +35,7 @@
|
|||
"tab_title": "Avisos"
|
||||
},
|
||||
"authentication_activity": {
|
||||
"api_key": "Clave API",
|
||||
"datetime": "Data e Hora",
|
||||
"email": "Correo electrónico",
|
||||
"error": "Erro",
|
||||
|
|
@ -58,9 +67,159 @@
|
|||
"button_scan": "Escanear",
|
||||
"button_select_series": "Escolle a serie",
|
||||
"field_import_path": "Importar dende un cartafol",
|
||||
"info_part1": "Esta pantalla permitiralle importar arquivos que están fóra das súas bibliotecas existentes. Só pódese importar arquivos a series que xa existan, nese caso Komga moverá ou copiará os arquivos cara o directorio da serie escollida."
|
||||
"info_part1": "Esta pantalla permitiralle importar arquivos que están fóra das súas bibliotecas existentes. Só pódese importar arquivos a series que xa existan, nese caso Komga moverá ou copiará os arquivos cara o directorio da serie escollida.",
|
||||
"info_part2": "Se escolles un número para un libro e existe xa algún outro libro con ese número, poderás comparalos. Se decides importar o libro, Komga actualizará o existente co novo, substituindo o ficheiro existente co novo.",
|
||||
"no_files_found": "Non se atoparon ficheiros",
|
||||
"notification": {
|
||||
"go_to_book": "Ir ao libro",
|
||||
"import_failure": "Fallou a importación do libro: {file}",
|
||||
"import_successful": "Libro importado con éxito: {book}",
|
||||
"source_file": "Ficheiro orixe: {file}"
|
||||
},
|
||||
"row": {
|
||||
"error_analyze_first": "É necesario analizar antes o libro",
|
||||
"error_choose_series": "Escoller serie",
|
||||
"error_only_import_no_errors": "Só se poden importar libros sen erros",
|
||||
"warning_upgrade": "Actualizarase o libro existente"
|
||||
},
|
||||
"table": {
|
||||
"destination_name": "Nome de destino",
|
||||
"file_name": "Nome do ficheiro",
|
||||
"number": "Número",
|
||||
"series": "Serie"
|
||||
},
|
||||
"title": "Importar",
|
||||
"try_another_directory": "Tenta atopar outro directorio"
|
||||
},
|
||||
"bookreader": {
|
||||
"beginning_of_book": "Atópaste ao principio do libro.",
|
||||
"changing_reading_direction": "Trocar o sentido de lectura a",
|
||||
"download_current_page": "Baixar a páxina actual",
|
||||
"end_of_book": "Chegaches ao final do libro.",
|
||||
"from_series_metadata": "dende os metadatos da serie",
|
||||
"move_next": "Volve pulsar \"Seguinte\" para pasar ao seguinte libro.",
|
||||
"move_next_exit": "Volve pulser \"Seguinte\" para saír do lector.",
|
||||
"move_previous": "Volve pulsar \"Anterior\" para pasar ao libro anterior.",
|
||||
"notification_poster_set_book": "A portada do libro estableceuse á páxina actual.",
|
||||
"notification_poster_set_readlist": "A portada da lista de lectura estableceuse á páxina actual.",
|
||||
"notification_poster_set_series": "A portada de serie estableceuse á páxina actual.",
|
||||
"paged_reader_layout": {
|
||||
"double": "Dobre páxina",
|
||||
"double_no_cover": "Dobre páxina (sen portada)",
|
||||
"single": "Páxina simple"
|
||||
},
|
||||
"reader_settings": "Configuración do lector",
|
||||
"scale_type": {
|
||||
"continuous_original": "Orixinal",
|
||||
"continuous_width": "Axuste á anchura",
|
||||
"height": "Axuste á altura",
|
||||
"original": "Orixinal",
|
||||
"screen": "Pantalla"
|
||||
},
|
||||
"settings": {
|
||||
"always_fullscreen": "Sempre a pantalla completa",
|
||||
"animate_page_transitions": "Transicións de páxina animadas",
|
||||
"background_color": "Cor de fondo",
|
||||
"background_colors": {
|
||||
"black": "Negro",
|
||||
"gray": "Gris",
|
||||
"white": "Branco"
|
||||
},
|
||||
"general": "Xeral",
|
||||
"gestures": "Xestos",
|
||||
"page_layout": "Disposición de páxina",
|
||||
"page_margin": "Marxe de páxina",
|
||||
"reading_mode": "Modo de lectura",
|
||||
"side_padding_none": "Ningún"
|
||||
},
|
||||
"shortcuts": {
|
||||
"close": "Pechar",
|
||||
"first_page": "Primeira páxina",
|
||||
"last_page": "Derradeira páxina",
|
||||
"left_to_right": "De esquerda a dereita",
|
||||
"menus": "Menús",
|
||||
"next_page": "Seguinte páxina",
|
||||
"previous_page": "Páxina anterior",
|
||||
"right_to_left": "De dereita a esquerda"
|
||||
},
|
||||
"tooltip_incognito": "Non se gardará o progreso de lectura"
|
||||
},
|
||||
"browse_book": {
|
||||
"comment": "COMENTARIO",
|
||||
"date_created": "CREACIÓN",
|
||||
"date_modified": "ÚLTIMA MODIFICACIÓN",
|
||||
"download_file": "Baixar ficheiro",
|
||||
"file": "FICHEIRO",
|
||||
"format": "FORMATO",
|
||||
"isbn": "ISBN",
|
||||
"links": "LIGAZÓNS",
|
||||
"outdated_tooltip": "Cambiouse o ficheiro deste libro; é necesario volver analizalo",
|
||||
"read_book": "Ler libro",
|
||||
"read_incognito": "Ler de incógnito",
|
||||
"remove_from_collection": "Quitar libro da colección",
|
||||
"remove_from_readlist": "Quitar libro da lista de lectura",
|
||||
"size": "TAMAÑO"
|
||||
},
|
||||
"browse_collection": {
|
||||
"edit_collection": "Editar colección",
|
||||
"edit_elements": "Editar elementos",
|
||||
"manual_ordering": "Ordenación manual"
|
||||
},
|
||||
"browse_readlist": {
|
||||
"edit_elements": "Editar elementos",
|
||||
"edit_readlist": "Editar lista de lectura",
|
||||
"manual_ordering": "Ordenación manual"
|
||||
},
|
||||
"browse_series": {
|
||||
"earliest_year_from_release_dates": "Este é o ano máis temperán entre as datas de lanzamento de tódolos libros da serie",
|
||||
"remove_from_collection": "Quitar serie da colección",
|
||||
"series_no_summary": "Esta serie non ten sumario, así que escollemos un por ti!",
|
||||
"summary_from_book": "Sumario do libro {number}:"
|
||||
},
|
||||
"collections_expansion_panel": {
|
||||
"manage_collection": "Xestionar colección",
|
||||
"title": "{name} colección"
|
||||
},
|
||||
"common": {
|
||||
"locale_name": "Galego"
|
||||
"age": "Idade",
|
||||
"all_libraries": "Tódalas bibliotecas",
|
||||
"all_of": "Todo",
|
||||
"any_of": "Calquera",
|
||||
"book": "Libro",
|
||||
"books": "Libros",
|
||||
"books_n": "Ningún libro | 1 libro | {count} libros",
|
||||
"books_total": "{count} / {total} libros",
|
||||
"cancel": "Cancelar",
|
||||
"choose_image": "Escoller unha imaxe",
|
||||
"close": "Pechar",
|
||||
"collections": "Coleccións",
|
||||
"copied": "Copiado!",
|
||||
"create": "Crear",
|
||||
"delete": "Borrar",
|
||||
"discard": "Descartar",
|
||||
"disk_space": "Espazo en disco",
|
||||
"download": "Baixar",
|
||||
"duplicate": "Duplicar",
|
||||
"epub": "EPUB",
|
||||
"error": "Erro",
|
||||
"filename": "Nome de ficheiro",
|
||||
"genre": "Xénero",
|
||||
"go_to_collection": "Ir á colección",
|
||||
"go_to_library": "Ir á biblioteca",
|
||||
"go_to_readlist": "Ir á lista de lectura",
|
||||
"go_to_series": "Ir á serie",
|
||||
"i_understand": "Entendido",
|
||||
"library": "Biblioteca",
|
||||
"locale_name": "Galego",
|
||||
"more": "Máis",
|
||||
"nothing_to_show": "Nada que amosar",
|
||||
"page": "Páxina",
|
||||
"page_number": "Número de páxina",
|
||||
"pages": "páxinas",
|
||||
"pages_left": "Non quedan páxinas | Queda 1 páxina | Quedan {count} páxinas",
|
||||
"pages_n": "Ningunha páxina | 1 páxina | {count} páxinas",
|
||||
"password": "Contrasinal",
|
||||
"pdf": "PDF",
|
||||
"pending_tasks": "Sen tarefas pendentes | 1 tarefa pendente | {count} tarefas pendentes"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@
|
|||
},
|
||||
"author_roles": {
|
||||
"colorist": "koloristi",
|
||||
"cover": "omot",
|
||||
"cover": "naslovnica",
|
||||
"editor": "urednici",
|
||||
"inker": "bojitelj",
|
||||
"letterer": "tipografi",
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
"notification_poster_set_series": "Trenutačna stranica je sada postavljena kao poster serije.",
|
||||
"paged_reader_layout": {
|
||||
"double": "Dvije stranice",
|
||||
"double_no_cover": "Dvije stranice (bez omota)",
|
||||
"double_no_cover": "Dvije stranice (bez naslovnice)",
|
||||
"single": "Jedna stranica"
|
||||
},
|
||||
"reader_settings": "Postavke čitača",
|
||||
|
|
@ -484,7 +484,7 @@
|
|||
"field_scanner_empty_trash_after_scan": "Automatski isprazni smeće nakon svakog pretraživanja",
|
||||
"field_scanner_force_directory_modified_time": "Pretraži mape na osnovi vremena promjene",
|
||||
"field_scanner_scan_startup": "Pretraži tijekom pokretanja",
|
||||
"field_series_cover": "Omot serije",
|
||||
"field_series_cover": "Naslovnica serije",
|
||||
"file_browser_dialog_button_confirm": "Odaberi",
|
||||
"file_browser_dialog_title": "Osnovna mapa biblioteke",
|
||||
"label_analysis": "Analiza",
|
||||
|
|
@ -497,7 +497,7 @@
|
|||
"label_scan_directory_exclusions": "Isključivanja mapa",
|
||||
"label_scan_types": "Traži ove vrste datoteka",
|
||||
"label_scanner": "Tražilica",
|
||||
"label_series_cover": "Omot serije",
|
||||
"label_series_cover": "Naslovnica serije",
|
||||
"tab_general": "Općenito",
|
||||
"tab_metadata": "Metapodaci",
|
||||
"tab_options": "Opcije",
|
||||
|
|
@ -989,7 +989,7 @@
|
|||
"btn_confirm": "Da, ali samo ako su veće",
|
||||
"title": "Nanovo generiraj minijature"
|
||||
},
|
||||
"hint_kobo_port": "Postavi samo u slučaju problema sa sinkronizacijom omota i preuzimanja",
|
||||
"hint_kobo_port": "Postavi samo u slučaju problema sa sinkronizacijom naslovnica i preuzimanja",
|
||||
"label_delete_empty_collections": "Izbriši prazne zbirke nakon pretraživanja",
|
||||
"label_delete_empty_readlists": "Izbriši prazne liste čitanja nakon pretraživanja",
|
||||
"label_kepubify_path": "Staza do kepubify",
|
||||
|
|
|
|||
|
|
@ -319,7 +319,12 @@
|
|||
},
|
||||
"dialog": {
|
||||
"add_api_key": {
|
||||
"button_confirm": "Gerar"
|
||||
"button_confirm": "Gerar",
|
||||
"context": "Chaves API podem ser usadas para autenticar no protocolo Kobo Sync.",
|
||||
"dialog_title": "Gerar chave de API",
|
||||
"field_comment": "Comentar",
|
||||
"field_comment_hint": "Como a chave API será usada?",
|
||||
"info_copy": "Tenha a certeza de que a chave API foi salva. Você não poderá vê-la novamente!"
|
||||
},
|
||||
"add_to_collection": {
|
||||
"button_create": "Criar",
|
||||
|
|
@ -354,6 +359,12 @@
|
|||
"filter": "Filtrar por número, título ou data de lançamento",
|
||||
"title": "Selecionar livro"
|
||||
},
|
||||
"delete_apikey": {
|
||||
"button_confirm": "Excluir",
|
||||
"confirm_delete": "Eu entendo, exclua a chave API \"{name}\"",
|
||||
"dialog_title": "Deletar chave API",
|
||||
"warning_html": "Quaisquer aplicativos ou scripts que utilizem esta chave API não poderão mais acessar a API Komga. Você não poderá desfazer esta ação."
|
||||
},
|
||||
"delete_book": {
|
||||
"button_confirm": "Excluir",
|
||||
"confirm_delete": "Sim, exclua o livro \"{name}\" e seus arquivos",
|
||||
|
|
@ -503,6 +514,9 @@
|
|||
"tab_general": "Geral",
|
||||
"tab_poster": "Pôster"
|
||||
},
|
||||
"edit_recommended": {
|
||||
"button_confirm": "Salvar mudanças"
|
||||
},
|
||||
"edit_series": {
|
||||
"button_cancel": "Cancelar",
|
||||
"button_confirm": "Salvar mudanças",
|
||||
|
|
@ -571,6 +585,9 @@
|
|||
},
|
||||
"title": "Nome do Arquivo de Destino"
|
||||
},
|
||||
"force_kobo_sync": {
|
||||
"dialog_title": "Forçar sincronização com Kobo"
|
||||
},
|
||||
"password_change": {
|
||||
"button_cancel": "Cancelar",
|
||||
"button_confirm": "Mudar senha",
|
||||
|
|
@ -638,6 +655,9 @@
|
|||
"HARDLINK": "Hardlink/Copiar arquivos",
|
||||
"MOVE": "Mover Arquivos"
|
||||
},
|
||||
"media_profile": {
|
||||
"PDF": "PDF"
|
||||
},
|
||||
"media_status": {
|
||||
"ERROR": "Erro",
|
||||
"OUTDATED": "Desatualizado",
|
||||
|
|
@ -664,6 +684,14 @@
|
|||
"ONGOING": "Em andamento"
|
||||
}
|
||||
},
|
||||
"epubreader": {
|
||||
"settings": {
|
||||
"page_margins": "Margem de Páginas"
|
||||
},
|
||||
"shortcuts": {
|
||||
"settings": "Configurações"
|
||||
}
|
||||
},
|
||||
"error_codes": {
|
||||
"ERR_1000": "O arquivo não pôde ser acessado durante a análise",
|
||||
"ERR_1001": "O tipo de mídia não é compatível",
|
||||
|
|
@ -695,6 +723,7 @@
|
|||
"in_progress": "Em progresso",
|
||||
"language": "idioma",
|
||||
"library": "biblioteca",
|
||||
"oneshot": "One-shot",
|
||||
"publisher": "editora",
|
||||
"read": "Lidos",
|
||||
"release_date": "data de lançamento",
|
||||
|
|
@ -708,7 +737,8 @@
|
|||
},
|
||||
"history": {
|
||||
"header": {
|
||||
"book": "Livro"
|
||||
"book": "Livro",
|
||||
"details": "Detalhes"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
|
|
@ -830,6 +860,9 @@
|
|||
"tooltip_too_big": "Arquivo muito grande!",
|
||||
"tooltip_user_uploaded": "Enviado pelo usuário"
|
||||
},
|
||||
"ui_settings": {
|
||||
"general": "Geral"
|
||||
},
|
||||
"user_roles": {
|
||||
"ADMIN": "Administrador",
|
||||
"FILE_DOWNLOAD": "Baixar arquivos",
|
||||
|
|
@ -837,6 +870,7 @@
|
|||
"USER": "Usuário"
|
||||
},
|
||||
"users": {
|
||||
"api_keys": "Chaves API",
|
||||
"authentication_activity": "Atividade de Autenticação",
|
||||
"users": "Usuários"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
"pageText": "{0}-{1} из {2}"
|
||||
},
|
||||
"dataIterator": {
|
||||
"loadingText": "Загрузка объектов...",
|
||||
"noResultsText": "Подходящих записей не найдено"
|
||||
"loadingText": "Загрузка элементов...",
|
||||
"noResultsText": "Совпадений не найдено"
|
||||
},
|
||||
"dataTable": {
|
||||
"itemsPerPageText": "Строк на странице:",
|
||||
|
|
@ -15,30 +15,33 @@
|
|||
"counter": "Файлов: {0}",
|
||||
"counterSize": "Файлов: {0} (всего {1})"
|
||||
},
|
||||
"noDataText": "Отсутствуют данные"
|
||||
"noDataText": "Данные отсутствуют"
|
||||
},
|
||||
"account_settings": {
|
||||
"account_settings": "Настройки Аккаунта",
|
||||
"account_settings": "Настройки аккаунта",
|
||||
"api_key": {
|
||||
"created_date": "Дата создания: {date}",
|
||||
"generate_api_key": "Сгенерировать API ключ",
|
||||
"force_kobo_sync": "Принудительная синхронизация с Kobo",
|
||||
"generate_api_key": "Сгенерировать ключ API",
|
||||
"no_keys": "Ни одного ключа API еще не создано"
|
||||
},
|
||||
"change_password": "изменить пароль"
|
||||
"change_password": "изменить пароль",
|
||||
"details": "Подробности",
|
||||
"my_account": "Мой аккаунт"
|
||||
},
|
||||
"announcements": {
|
||||
"mark_all_read": "Пометить всё как прочитанное",
|
||||
"mark_read": "Пометить как прочитанное",
|
||||
"mark_all_read": "Отметить всё как прочитанное",
|
||||
"mark_read": "Отметить как прочитанное",
|
||||
"tab_title": "Объявления"
|
||||
},
|
||||
"authentication_activity": {
|
||||
"api_key": "API Ключ",
|
||||
"datetime": "Дата / Время",
|
||||
"api_key": "API-ключ",
|
||||
"datetime": "Дата/Время",
|
||||
"email": "Эл. почта",
|
||||
"error": "Ошибка",
|
||||
"ip": "IP-адрес",
|
||||
"source": "Источник",
|
||||
"success": "Статус",
|
||||
"success": "Успех",
|
||||
"user_agent": "User Agent"
|
||||
},
|
||||
"author_roles": {
|
||||
|
|
@ -54,18 +57,18 @@
|
|||
"book_card": {
|
||||
"error": "Ошибка",
|
||||
"no_release_date": "Дата релиза отсутствует",
|
||||
"unknown": "Необходимо проанализировать",
|
||||
"unknown": "Подлежит анализу",
|
||||
"unread": "Не прочитано",
|
||||
"unsupported": "Неподдерживаемый"
|
||||
"unsupported": "Не поддерживается"
|
||||
},
|
||||
"book_import": {
|
||||
"button_browse": "Обзор",
|
||||
"button_import": "Импортировать",
|
||||
"button_import": "Импорт",
|
||||
"button_scan": "Сканировать",
|
||||
"button_select_series": "Выберите Серию",
|
||||
"button_select_series": "Выберите серию",
|
||||
"field_import_path": "Импортировать из каталога",
|
||||
"info_part1": "Этот раздел позволяет вам импортировать файлы, которые находятся за пределами ваших существующих библиотек. Вы можете импортировать файлы только в существующие Серии, в этом случае Komga переместит или скопирует файлы в каталог выбранной Серии.",
|
||||
"info_part2": "Если вы выберете номер для книги и книга с таким номером уже существует, то вы сможете сравнить 2 книги. Если вы решите импортировать книгу, Komga обновит существующую книгу, эффективно заменив старый файл новым.",
|
||||
"info_part1": "Этот раздел позволяет вам импортировать файлы, которые находятся за пределами ваших существующих библиотек. Вы можете импортировать файлы только в существующие серии; в этом случае Komga переместит или скопирует файлы в каталог выбранной серии.",
|
||||
"info_part2": "Если вы укажете номер для книги, и книга с таким номером уже существует, вы сможете сравнить оба варианта. Если вы решите импортировать книгу, Komga обновит существующий вариант, заменив старый файл новым.",
|
||||
"no_files_found": "Файлы не найдены",
|
||||
"notification": {
|
||||
"go_to_book": "Перейти к книге",
|
||||
|
|
@ -74,9 +77,9 @@
|
|||
"source_file": "Исходный файл: {file}"
|
||||
},
|
||||
"row": {
|
||||
"error_analyze_first": "Книгу нужно сначала проанализировать",
|
||||
"error_analyze_first": "Книга нуждается в предварительном анализе",
|
||||
"error_choose_series": "Выберите серию",
|
||||
"error_only_import_no_errors": "Можно импортировать только книги без ошибок",
|
||||
"error_only_import_no_errors": "Можно импортировать только книги без наличия ошибок",
|
||||
"warning_upgrade": "Существующая книга будет обновлена"
|
||||
},
|
||||
"table": {
|
||||
|
|
@ -90,10 +93,11 @@
|
|||
},
|
||||
"bookreader": {
|
||||
"beginning_of_book": "Вы находитесь в начале книги.",
|
||||
"changing_reading_direction": "Изменение Направления Чтения на",
|
||||
"cycling_page_layout": "Переключить Формат Страниц",
|
||||
"cycling_scale": "Переключить Масштабирование",
|
||||
"cycling_side_padding": "Переключить Боковой Отступ",
|
||||
"changing_reading_direction": "Изменение направления чтения на",
|
||||
"cycling_page_layout": "Переключение макета страницы",
|
||||
"cycling_page_margin": "Переключение полей страницы",
|
||||
"cycling_scale": "Масштабирование",
|
||||
"cycling_side_padding": "Переключение боковых отступов",
|
||||
"download_current_page": "Скачать текущую страницу",
|
||||
"end_of_book": "Вы достигли конца книги.",
|
||||
"from_series_metadata": "из метаданных серии",
|
||||
|
|
@ -104,8 +108,8 @@
|
|||
"notification_poster_set_readlist": "Текущая страница теперь используется в качестве постера списка чтения.",
|
||||
"notification_poster_set_series": "Текущая страница теперь используется в качестве постера серии.",
|
||||
"paged_reader_layout": {
|
||||
"double": "Двойные страницы",
|
||||
"double_no_cover": "Двойные страницы (без обложки)",
|
||||
"double": "Две страницы",
|
||||
"double_no_cover": "Две страницы (без обложки)",
|
||||
"single": "Одна страница"
|
||||
},
|
||||
"reader_settings": "Настройки Ридера",
|
||||
|
|
@ -114,16 +118,16 @@
|
|||
"continuous_width": "По ширине",
|
||||
"height": "По высоте",
|
||||
"original": "Исходное",
|
||||
"screen": "По экрану",
|
||||
"screen": "По размеру экрана",
|
||||
"width": "По ширине",
|
||||
"width_shrink_only": "По ширине (с отступами)"
|
||||
},
|
||||
"set_current_page_as_book_poster": "Установить страницу в качестве постера для книги",
|
||||
"set_current_page_as_readlist_poster": "Установить страницу в качестве постера для списка чтения",
|
||||
"set_current_page_as_series_poster": "Установить страницу в качестве постера для серии",
|
||||
"set_current_page_as_book_poster": "Установить страницу в качестве обложки для книги",
|
||||
"set_current_page_as_readlist_poster": "Установить страницу в качестве обложки для списка чтения",
|
||||
"set_current_page_as_series_poster": "Установить страницу в качестве обложки для серии",
|
||||
"settings": {
|
||||
"always_fullscreen": "Всегда в полный экран",
|
||||
"animate_page_transitions": "Анимировать переходы страниц",
|
||||
"always_fullscreen": "Всегда полноэкранный режим",
|
||||
"animate_page_transitions": "Анимировать переходы между страницами",
|
||||
"background_color": "Цвет фона",
|
||||
"background_colors": {
|
||||
"black": "Чёрный",
|
||||
|
|
@ -134,54 +138,60 @@
|
|||
"general": "Общее",
|
||||
"gestures": "Жесты",
|
||||
"page_layout": "Формат страницы",
|
||||
"paged": "Настройки Отображения Страниц",
|
||||
"page_margin": "Поля страницы",
|
||||
"paged": "Настройки отображения страниц",
|
||||
"reading_mode": "Режим чтения",
|
||||
"scale_type": "Масштабирование",
|
||||
"side_padding": "Боковой отступ",
|
||||
"side_padding": "Боковые отступы",
|
||||
"side_padding_none": "Нет",
|
||||
"webtoon": "Параметры Режима Webtoon"
|
||||
"webtoon": "Настройки режима цифрового комикса"
|
||||
},
|
||||
"shortcuts": {
|
||||
"close": "Закрыть",
|
||||
"cycle_page_layout": "Переключить формат страниц",
|
||||
"cycle_page_layout": "Переключить макет страницы",
|
||||
"cycle_page_margin": "Переключить поля страницы",
|
||||
"cycle_scale": "Переключить масштаб",
|
||||
"cycle_side_padding": "Переключить боковой отступ",
|
||||
"cycle_side_padding": "Переключить боковые отступы",
|
||||
"first_page": "Первая страница",
|
||||
"fullscreen": "Войти/выйти из полноэкранного режима",
|
||||
"last_page": "Последняя страница",
|
||||
"left_to_right": "Слева Направо",
|
||||
"left_to_right": "Слева направо",
|
||||
"menus": "Меню",
|
||||
"next_page": "Следующая страница",
|
||||
"previous_page": "Предыдущая страница",
|
||||
"reader_navigation": "Навигация",
|
||||
"right_to_left": "Справа Налево",
|
||||
"right_to_left": "Справа налево",
|
||||
"settings": "Настройки",
|
||||
"show_hide_help": "Показать/скрыть помощь",
|
||||
"show_hide_settings": "Показать/скрыть меню настроек",
|
||||
"show_hide_thumbnails": "Показать/скрыть просмотр эскизов",
|
||||
"show_hide_thumbnails": "Показать/скрыть обозреватель миниатюр",
|
||||
"show_hide_toolbars": "Показать/скрыть панели инструментов",
|
||||
"vertical": "Вертикально",
|
||||
"webtoon": "Webtoon"
|
||||
"webtoon": "Цифровой комикс"
|
||||
},
|
||||
"tooltip_incognito": "Прогресс чтения не будет сохранен"
|
||||
},
|
||||
"browse_book": {
|
||||
"comment": "КОММЕНТАРИЙ",
|
||||
"date_created": "СОЗДАНО",
|
||||
"date_modified": "ПОСЛЕДНЕЕ ИЗМЕНЕНИЕ",
|
||||
"download_file": "Скачать файл",
|
||||
"file": "ФАЙЛ",
|
||||
"format": "ФОРМАТ",
|
||||
"isbn": "ISBN",
|
||||
"links": "ССЫЛКИ",
|
||||
"navigation_within_readlist": "Навигация в пределах списка чтения: {name}",
|
||||
"outdated_tooltip": "Файл этой книги изменен, книгу необходимо повторно проанализировать",
|
||||
"navigation_within_readlist": "Навигация внутри списка чтения: {name}",
|
||||
"outdated_tooltip": "Файл этой книги изменился, книгу необходимо повторно проанализировать",
|
||||
"read_book": "Читать книгу",
|
||||
"read_incognito": "Читать инкогнито",
|
||||
"remove_from_collection": "Удалить книгу из коллекции",
|
||||
"remove_from_readlist": "Удалить книгу из списка чтения",
|
||||
"size": "РАЗМЕР"
|
||||
},
|
||||
"browse_collection": {
|
||||
"edit_collection": "Редактировать коллекцию",
|
||||
"edit_elements": "Редактировать элементы",
|
||||
"manual_ordering": "ручной порядок"
|
||||
"manual_ordering": "ручная сортировка"
|
||||
},
|
||||
"browse_readlist": {
|
||||
"edit_elements": "Редактировать элементы",
|
||||
|
|
@ -189,17 +199,19 @@
|
|||
"manual_ordering": "ручная сортировка"
|
||||
},
|
||||
"browse_series": {
|
||||
"earliest_year_from_release_dates": "Это самая ранняя дата выпуска из всех книг в этой серии",
|
||||
"series_no_summary": "У серии нет описания, поэтому мы подобрали его для вас!",
|
||||
"earliest_year_from_release_dates": "Это самый ранний год из дат выхода всех книг серии",
|
||||
"remove_from_collection": "Удалить серию из коллекции",
|
||||
"series_no_summary": "У этой серии нет описания, поэтому мы подобрали его для вас!",
|
||||
"summary_from_book": "Краткое описание из книги {number}:"
|
||||
},
|
||||
"collections_expansion_panel": {
|
||||
"manage_collection": "Управлять коллекцией",
|
||||
"manage_collection": "Управление коллекцией",
|
||||
"title": "Коллекция {name}"
|
||||
},
|
||||
"common": {
|
||||
"age": "Возраст",
|
||||
"all_libraries": "Все Библиотеки",
|
||||
"all_libraries": "Все библиотеки",
|
||||
"any_of": "Любой из",
|
||||
"book": "Книга",
|
||||
"books": "Книги",
|
||||
"books_n": "Книг нет | 1 книга | {count} книг",
|
||||
|
|
@ -212,14 +224,16 @@
|
|||
"copied": "Скопировано!",
|
||||
"create": "Создать",
|
||||
"delete": "Удалить",
|
||||
"dimension": "шир.: {width} выс.: {height}",
|
||||
"dimension": "шир.: {width}, выс.: {height}",
|
||||
"discard": "Отмена",
|
||||
"disk_space": "Дисковое пространство",
|
||||
"dismiss": "Отклонить",
|
||||
"download": "Скачать",
|
||||
"drag_drop": "перетащить",
|
||||
"duplicate": "Дублировать",
|
||||
"email": "Эл. почта",
|
||||
"epub": "Epub",
|
||||
"error": "Ошибка",
|
||||
"filename": "Имя файла",
|
||||
"filter_no_matches": "Нет совпадений по заданному фильтру",
|
||||
"genre": "Жанр",
|
||||
|
|
@ -227,12 +241,16 @@
|
|||
"go_to_library": "Вернуться к библиотеке",
|
||||
"go_to_readlist": "Перейти к списку чтения",
|
||||
"go_to_series": "Перейти к серии",
|
||||
"i_understand": "Я понимаю",
|
||||
"library": "Библиотека",
|
||||
"locale_name": "Русский",
|
||||
"locale_rtl": "false",
|
||||
"lock_all": "Заблокировать все",
|
||||
"media": "Медиа",
|
||||
"more": "Ещё",
|
||||
"n_selected": "{count} выбрано",
|
||||
"nothing_to_show": "Нет данных для отображения",
|
||||
"ok": "OK",
|
||||
"outdated": "Устарело",
|
||||
"page": "Страница",
|
||||
"page_number": "Номер страницы",
|
||||
|
|
@ -242,17 +260,20 @@
|
|||
"password": "Пароль",
|
||||
"pdf": "PDF",
|
||||
"pending_tasks": "Нет незавершенных задач | 1 незавершенная задача | {count} незавершенных задач",
|
||||
"pinned_libraries": "Закреплённые библиотеки",
|
||||
"publisher": "Издатель",
|
||||
"read": "Читать",
|
||||
"read_on": "Читать {date}",
|
||||
"read_on": "Прочитано {date}",
|
||||
"readlist": "Список чтения",
|
||||
"readlists": "Списки чтения",
|
||||
"remember-me": "Запомнить",
|
||||
"required": "Необходимо",
|
||||
"remember-me": "Запомнить меня",
|
||||
"reorder": "Изменить порядок",
|
||||
"required": "Обязательно",
|
||||
"reset_filters": "Сбросить фильтры",
|
||||
"roles": "Роли",
|
||||
"save_changes": "Сохранить изменения",
|
||||
"series": "Серии",
|
||||
"settings": "Настройки",
|
||||
"tags": "Теги",
|
||||
"unavailable": "Недоступно",
|
||||
"unlock_all": "Разблокировать все",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -9,7 +9,8 @@ FROM ubuntu:24.10 as build-amd64
|
|||
ENV JAVA_HOME=/opt/java/openjdk
|
||||
COPY --from=eclipse-temurin:23-jre $JAVA_HOME $JAVA_HOME
|
||||
ENV PATH="${JAVA_HOME}/bin:${PATH}"
|
||||
RUN apt -y update && \
|
||||
RUN sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources && \
|
||||
apt -y update && \
|
||||
apt -y install ca-certificates locales libjxl-dev libheif-dev libwebp-dev libarchive-dev wget curl && \
|
||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
|
|
@ -23,7 +24,8 @@ FROM ubuntu:24.10 as build-arm64
|
|||
ENV JAVA_HOME=/opt/java/openjdk
|
||||
COPY --from=eclipse-temurin:23-jre $JAVA_HOME $JAVA_HOME
|
||||
ENV PATH="${JAVA_HOME}/bin:${PATH}"
|
||||
RUN apt -y update && \
|
||||
RUN sed -i -re 's/([a-z]{2}\.)?ports.ubuntu.com\/ubuntu-ports/old-releases.ubuntu.com\/ubuntu/g' /etc/apt/sources.list.d/ubuntu.sources && \
|
||||
apt -y update && \
|
||||
apt -y install ca-certificates locales libjxl-dev libheif-dev libwebp-dev libarchive-dev wget curl && \
|
||||
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
"url": "https://github.com/gotson/komga/blob/master/LICENSE"
|
||||
},
|
||||
"title": "Komga API",
|
||||
"version": "1.23.5"
|
||||
"version": "1.23.6"
|
||||
},
|
||||
"externalDocs": {
|
||||
"description": "Komga documentation",
|
||||
|
|
@ -4919,7 +4919,7 @@
|
|||
"operationId": "matchComicRackList",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"multipart/form-data": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import org.springframework.util.LinkedMultiValueMap
|
|||
import org.springframework.web.client.RestClient
|
||||
import org.springframework.web.client.toEntity
|
||||
import org.springframework.web.server.ResponseStatusException
|
||||
import org.springframework.web.util.DefaultUriBuilderFactory
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.toJavaDuration
|
||||
|
||||
|
|
@ -29,11 +30,15 @@ class KoboProxy(
|
|||
private val komgaSyncTokenGenerator: KomgaSyncTokenGenerator,
|
||||
private val komgaSettingsProvider: KomgaSettingsProvider,
|
||||
) {
|
||||
private val koboApiClient =
|
||||
private val koboApiClient: RestClient =
|
||||
RestClient
|
||||
.builder()
|
||||
.baseUrl("https://storeapi.kobo.com")
|
||||
.requestFactory(
|
||||
.uriBuilderFactory(
|
||||
DefaultUriBuilderFactory("https://storeapi.kobo.com")
|
||||
.apply {
|
||||
this.encodingMode = DefaultUriBuilderFactory.EncodingMode.NONE
|
||||
},
|
||||
).requestFactory(
|
||||
ClientHttpRequestFactoryBuilder.reactor().build(
|
||||
ClientHttpRequestFactorySettings
|
||||
.defaults()
|
||||
|
|
@ -42,7 +47,7 @@ class KoboProxy(
|
|||
),
|
||||
).build()
|
||||
|
||||
private val pathRegex = """\/kobo\/[-\w]*(.*)""".toRegex()
|
||||
private val pathRegex = """/kobo/[-\w]*(.*)""".toRegex()
|
||||
|
||||
private val headersOutInclude =
|
||||
setOf(
|
||||
|
|
@ -50,6 +55,7 @@ class KoboProxy(
|
|||
HttpHeaders.USER_AGENT,
|
||||
HttpHeaders.ACCEPT,
|
||||
HttpHeaders.ACCEPT_LANGUAGE,
|
||||
HttpHeaders.CONTENT_TYPE,
|
||||
)
|
||||
|
||||
private val headersOutExclude =
|
||||
|
|
@ -110,6 +116,7 @@ class KoboProxy(
|
|||
}.apply { if (body != null) body(body) }
|
||||
.retrieve()
|
||||
.onStatus(HttpStatusCode::isError) { _, response ->
|
||||
logger.debug { "Kobo response: ${response.statusCode}: ${response.body.bufferedReader().use { it.readText() }}" }
|
||||
throw ResponseStatusException(response.statusCode, response.statusText)
|
||||
}.toEntity<JsonNode>()
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class EpubExtractor(
|
|||
?: // try id="cover-image"
|
||||
manifest.values.firstOrNull { it.id == "cover-image" }
|
||||
if (coverManifestItem != null) {
|
||||
val href = coverManifestItem.href
|
||||
val href = URLDecoder.decode(coverManifestItem.href, Charsets.UTF_8)
|
||||
val mediaType = coverManifestItem.mediaType
|
||||
val coverPath = normalizeHref(opfDir, href)
|
||||
zip.getEntryBytes(coverPath)?.let { coverBytes ->
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@ class KoboController(
|
|||
try {
|
||||
koboProxy.proxyCurrentRequest().body?.get("Resources")
|
||||
} catch (e: Exception) {
|
||||
if (e is ResponseStatusException && e.statusCode == HttpStatus.UNAUTHORIZED) throw e
|
||||
logger.warn { "Failed to get response from Kobo /v1/initialization, fallback to noproxy" }
|
||||
null
|
||||
} ?: koboProxy.nativeKoboResources
|
||||
|
|
@ -233,7 +234,7 @@ class KoboController(
|
|||
): Any {
|
||||
try {
|
||||
return koboProxy.proxyCurrentRequest(body)
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
logger.warn { "Failed to get response from Kobo /v1/auth/device, fallback to noproxy" }
|
||||
}
|
||||
|
||||
|
|
@ -395,7 +396,7 @@ class KoboController(
|
|||
addAll(
|
||||
// changed books are also passed as changed reading state because Kobo does not process ChangedEntitlement even if it contains a ReadingState
|
||||
(booksChanged.content + changedReadingState.content).mapNotNull { book ->
|
||||
readProgress[book.bookId]?.let { it ->
|
||||
readProgress[book.bookId]?.let {
|
||||
ChangedReadingStateDto(
|
||||
WrappedReadingStateDto(
|
||||
it.toDto(),
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ class ReadListController(
|
|||
}
|
||||
|
||||
@Operation(summary = "Match ComicRack list", tags = [OpenApiConfiguration.TagNames.COMICRACK])
|
||||
@PostMapping("match/comicrack")
|
||||
@PostMapping("match/comicrack", consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
fun matchComicRackList(
|
||||
@RequestParam("file") file: MultipartFile,
|
||||
|
|
|
|||
Loading…
Reference in a new issue