Compare commits

...
Author SHA1 Message Date
advplyr 7014e04e6f iOS version bump 0.14.2 2026-09-27 17:50:38 -05:00
advplyr a00032beda Version bump v0.14.2-beta 2026-09-27 17:23:31 -05:00
advplyr 02acaf1159 Add Arabic, Hebrew, Korean and Slovak language options 2026-09-27 17:17:45 -05:00
advplyr 6f923ef1d8 Merge pull request #2017 from weblate/weblate-audiobookshelf-abs-mobile-app
Translations update from Hosted Weblate
2026-09-27 17:06:19 -05:00
advplyr 679ebb16f8 Merge pull request #2027 from nichwall/download-clear-invalid-queue
Download clear invalid queue
2026-09-27 17:06:02 -05:00
advplyr ed356a8d99 Add try/catch around android cleanupExpired downloads call 2026-09-27 17:03:25 -05:00
Amirali Dehestani 33e187678d Translated using Weblate (Persian)
Currently translated at 14.6% (56 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/fa/
2026-09-26 23:52:38 +02:00
Mateusz Lesiak 5fc952a9e5 Translated using Weblate (Polish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/pl/
2026-09-24 17:51:37 +00:00
oddhap a408c55cff Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/nb_NO/
2026-09-24 17:51:34 +00:00
Juan Benites a3d482e3f7 Translated using Weblate (Spanish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/es/
2026-09-24 17:51:30 +00:00
Mediokris 2f8c1731e9 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.7% (380 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/nb_NO/
2026-09-22 09:51:35 +00:00
Danol b5269f52c4 Translated using Weblate (Czech)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/cs/
2026-09-22 09:51:33 +00:00
Daniel Nylander 9ebc7da984 Translated using Weblate (Swedish)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/sv/
2026-09-18 23:29:28 +02:00
Martynas c8c4b8b059 Translated using Weblate (Lithuanian)
Currently translated at 59.8% (228 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/lt/
2026-09-17 19:51:30 +00:00
Martynas c1f3e236f8 Translated using Weblate (Lithuanian)
Currently translated at 56.4% (215 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/lt/
2026-09-15 18:51:58 +00:00
Kim Josefsen 128e23fabf Translated using Weblate (Danish)
Currently translated at 98.4% (375 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/da/
2026-09-15 18:51:52 +00:00
Nicholas Wallace 989cf66715 Revert "Debug: add forced bad download queue entry"
This reverts commit 108f34bfb7.
2026-09-13 15:03:15 -07:00
Nicholas Wallace ce6883331e Fix: download queue null check before restoring queue 2026-09-13 15:03:04 -07:00
Nicholas Wallace 108f34bfb7 Debug: add forced bad download queue entry 2026-09-13 14:48:55 -07:00
J. Lavoie 869873acfd Translated using Weblate (Greek)
Currently translated at 72.1% (275 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/el/
2026-09-11 21:19:03 +00:00
samia shanta 96a44bcce7 Translated using Weblate (Bengali)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/bn/
2026-09-11 21:19:03 +00:00
J. Lavoie ca2c023486 Translated using Weblate (Italian)
Currently translated at 99.7% (380 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/it/
2026-09-11 21:19:02 +00:00
J. Lavoie 46850159de Translated using Weblate (French)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/fr/
2026-09-11 21:19:02 +00:00
J. Lavoie bd4c3be210 Translated using Weblate (German)
Currently translated at 100.0% (381 of 381 strings)

Translation: Audiobookshelf/Abs Mobile App
Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/de/
2026-09-11 21:19:01 +00:00
advplyr da4745217c Merge pull request #2022 from nichwall/weblate-workflow
Add weblate translation credit workflow
2026-09-11 16:18:48 -05:00
advplyr 3048237a4b Merge branch 'master' of https://github.com/advplyr/audiobookshelf-app 2026-09-11 16:14:01 -05:00
advplyr e473155646 Update gh issue templates with 0.14.1 2026-09-11 16:13:56 -05:00
Nicholas Wallace 643603c073 Add weblate translation credit workflow 2026-09-11 14:09:09 -07:00
23 changed files with 281 additions and 68 deletions

No files matched your search

+2 -2
View File
@@ -72,10 +72,10 @@ body:
description: Please ensure your app is up to date. *If you are using a 3rd-party app, please reach out to them directly.*
multiple: true
options:
- 'Android App - 0.14.1'
- 'iOS App - 0.14.1'
- 'Android App - 0.14.0'
- 'iOS App - 0.14.0'
- 'Android App - 0.13.0'
- 'iOS App - 0.13.0'
validations:
required: true
- type: dropdown
+2 -2
View File
@@ -43,10 +43,10 @@ body:
description: Please ensure your app is up to date. *If you are using a 3rd-party app, please reach out to them directly.*
multiple: true
options:
- 'Android App - 0.14.1'
- 'iOS App - 0.14.1'
- 'Android App - 0.14.0'
- 'iOS App - 0.14.0'
- 'Android App - 0.13.0'
- 'iOS App - 0.13.0'
validations:
required: true
- type: textarea
+25
View File
@@ -0,0 +1,25 @@
name: Prepare translation credits
on:
push:
branches:
- master
workflow_dispatch:
jobs:
release-notes:
if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, 'weblate')
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- id: translator-credits
uses: audiobookshelf/get-translator-credits@v1.1.0
- name: Show translator credits
run: |
printf '%s\n' "${{ steps.translator-credits.outputs.credits }}"
+2 -2
View File
@@ -36,8 +36,8 @@ android {
applicationId "com.audiobookshelf.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 120
versionName "0.14.1-beta"
versionCode 121
versionName "0.14.2-beta"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [
"appAuthRedirectScheme": "com.audiobookshelf.app"
@@ -121,6 +121,86 @@ class DbManager {
return downloadItems
}
/**
* Validate persisted download queue entries before restoring them.
*
* Queue entries can become incompatible or malformed, for example after an app update. If any
* entry cannot be read or fails the checks required for queue restoration, the entire persisted
* queue is cleared so startup can continue without restoring invalid data.
*
* @return true if the queue passes validation or was successfully cleared; false if an invalid
* queue could not be cleared
*/
fun ensureValidDownloadQueue(): Boolean {
val downloadBook = Paper.book("downloadItems")
val queueIsValid =
try {
downloadBook.allKeys
.map { downloadItemId ->
val item =
downloadBook.read<DownloadItem>(downloadItemId)
?: throw IllegalStateException(
"Download queue entry $downloadItemId could not be read"
)
if (item.id != downloadItemId) {
throw IllegalStateException(
"Download queue entry $downloadItemId has a mismatched item ID"
)
}
item
}
.all { item ->
listOf<String?>(item.id, item.libraryItemId, item.localFolder.id).all {
!it.isNullOrBlank()
} &&
item.downloadItemParts.isNotEmpty() &&
item.downloadItemParts.all { part ->
listOf<String?>(
part.id,
part.downloadItemId,
part.filename,
part.destinationPath,
part.finalDestinationPath,
part.serverPath,
part.localFolderId
)
.all { !it.isNullOrBlank() } &&
part.downloadItemId == item.id
}
}
} catch (readError: Exception) {
AbsLogger.error(
tag,
"Could not read persisted download queue; clearing queue (${readError.message})"
)
false
}
if (queueIsValid) return true
AbsLogger.error(tag, "Persisted download queue contains invalid data; clearing queue")
return try {
downloadBook.destroy()
val remainingKeys = downloadBook.allKeys
if (remainingKeys.isEmpty()) {
AbsLogger.info(tag, "Cleared invalid persisted download queue")
true
} else {
AbsLogger.error(
tag,
"Invalid persisted download queue still contains ${remainingKeys.size} entries after clearing"
)
false
}
} catch (clearError: Exception) {
AbsLogger.error(
tag,
"Could not clear invalid persisted download queue (${clearError.message})"
)
false
}
}
fun saveLocalMediaProgress(mediaProgress: LocalMediaProgress) {
Paper.book("localMediaProgress").write(mediaProgress.id, mediaProgress)
}
@@ -2,6 +2,7 @@ package com.audiobookshelf.app.services
import android.content.Context
import androidx.core.content.ContextCompat
import com.audiobookshelf.app.device.DeviceManager
import com.audiobookshelf.app.device.FolderScanner
import com.audiobookshelf.app.managers.DbManager
import com.audiobookshelf.app.managers.DownloadItemManager
@@ -43,9 +44,20 @@ object DownloadServiceHost {
DbManager.initialize(appContext)
manager = DownloadItemManager(FolderScanner(appContext), appContext, ForwardingEmitter)
restoreJob = scope.launch {
IncompleteDownloadCleanup.cleanupExpired(appContext)
manager!!.restoreQueue()
onRestoreComplete(appContext)
try {
if (DeviceManager.dbManager.ensureValidDownloadQueue()) {
IncompleteDownloadCleanup.cleanupExpired(appContext)
manager!!.restoreQueue()
} else {
AbsLogger.error(TAG, "Skipping invalid download queue because it could not be cleared")
}
onRestoreComplete(appContext)
} catch (restoreError: Exception) {
AbsLogger.error(
TAG,
"Could not restore download queue (${restoreError.javaClass.simpleName}: ${restoreError.message})"
)
}
}
}
return manager!!
+4 -4
View File
@@ -740,12 +740,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = Icons;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 47;
CURRENT_PROJECT_VERSION = 48;
DEVELOPMENT_TEAM = 7UFJ7D8V6A;
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 0.14.1;
MARKETING_VERSION = 0.14.2;
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
PRODUCT_BUNDLE_IDENTIFIER = com.audiobookshelf.app.dev;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -764,12 +764,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = Icons;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 47;
CURRENT_PROJECT_VERSION = 48;
DEVELOPMENT_TEAM = 7UFJ7D8V6A;
INFOPLIST_FILE = App/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 0.14.1;
MARKETING_VERSION = 0.14.2;
PRODUCT_BUNDLE_IDENTIFIER = com.audiobookshelf.app;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "audiobookshelf-app",
"version": "0.14.1-beta",
"version": "0.14.2-beta",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "audiobookshelf-app",
"version": "0.14.1-beta",
"version": "0.14.2-beta",
"dependencies": {
"@capacitor-community/keep-awake": "^7.0.0",
"@capacitor-community/volume-buttons": "^7.0.0",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "audiobookshelf-app",
"version": "0.14.1-beta",
"version": "0.14.2-beta",
"author": "advplyr",
"scripts": {
"dev": "nuxt --hostname 0.0.0.0 --port 1337",
+5 -1
View File
@@ -7,9 +7,10 @@ const defaultCode = 'en-us'
let $localStore = null
const languageCodeMap = {
ar: { label: 'عربي', dateFnsLocale: 'ar' },
be: { label: 'Беларуская', dateFnsLocale: 'be' },
bn: { label: 'বাংলা', dateFnsLocale: 'bn' },
bg: { label: 'Български', dateFnsLocale: 'bg' },
bn: { label: 'বাংলা', dateFnsLocale: 'bn' },
ca: { label: 'Català', dateFnsLocale: 'ca' },
cs: { label: 'Čeština', dateFnsLocale: 'cs' },
da: { label: 'Dansk', dateFnsLocale: 'da' },
@@ -18,15 +19,18 @@ const languageCodeMap = {
es: { label: 'Español', dateFnsLocale: 'es' },
fi: { label: 'Suomi', dateFnsLocale: 'fi' },
fr: { label: 'Français', dateFnsLocale: 'fr' },
he: { label: 'עברית', dateFnsLocale: 'he' },
hr: { label: 'Hrvatski', dateFnsLocale: 'hr' },
it: { label: 'Italiano', dateFnsLocale: 'it' },
lt: { label: 'Lietuvių', dateFnsLocale: 'lt' },
hu: { label: 'Magyar', dateFnsLocale: 'hu' },
ko: { label: '한국어', dateFnsLocale: 'ko' },
nl: { label: 'Nederlands', dateFnsLocale: 'nl' },
no: { label: 'Norsk', dateFnsLocale: 'no' },
pl: { label: 'Polski', dateFnsLocale: 'pl' },
'pt-br': { label: 'Português (Brasil)', dateFnsLocale: 'ptBR' },
ru: { label: 'Русский', dateFnsLocale: 'ru' },
sk: { label: 'Slovenčina', dateFnsLocale: 'sk' },
sl: { label: 'Slovenščina', dateFnsLocale: 'sl' },
sv: { label: 'Svenska', dateFnsLocale: 'sv' },
tr: { label: 'Türkçe', dateFnsLocale: 'tr' },
+48 -2
View File
@@ -101,6 +101,9 @@
"LabelAll": "সব",
"LabelAllowSeekingOnMediaControls": "মিডিয়া বিজ্ঞপ্তি নিয়ন্ত্রণে অবস্থান খোঁজার অনুমতি দিন",
"LabelAlways": "সর্বদা",
"LabelAndroidAutoBrowseLimitForGrouping": "বর্ণানুক্রমিক তালিকার সীমা",
"LabelAndroidAutoBrowseLimitForGroupingHelp": "প্রদর্শনের জন্য আইটেমের সংখ্যা এর চেয়ে কম হলে বর্ণানুক্রমিক তালিকা ব্যবহার করবেন না",
"LabelAndroidAutoBrowseSeriesSequenceOrder": "সিরিজের বইগুলোর ক্রম",
"LabelAskConfirmation": "নিশ্চিতকরণের জন্য জিজ্ঞাসা করুন",
"LabelAuthor": "লেখক",
"LabelAuthorFirstLast": "লেখক (প্রথম শেষ)",
@@ -113,6 +116,7 @@
"LabelAutoSleepTimerAutoRewindHelp": "অটো স্লিপ টাইমার শেষে আইটেমটি আবার চালানো হলে স্বয়ংক্রিয়ভাবে আপনার অবস্থান রিওয়াইন্ড করবে।",
"LabelAutoSleepTimerHelp": "নির্দিষ্ট শুরু এবং শেষ সময়ের মধ্যে মিডিয়া চালানোর সময় একটি স্লিপ টাইমার স্বয়ংক্রিয়ভাবে শুরু হবে।",
"LabelBooks": "বইগুলো",
"LabelByAuthor": "{0} অবশ্যই একদম অপরিবর্তিত রাখবে",
"LabelChapterTrack": "অধ্যায় ট্র্যাক",
"LabelChapters": "অধ্যায়",
"LabelClosePlayer": "প্লেয়ার বন্ধ করুন",
@@ -141,11 +145,12 @@
"LabelEbooks": "ই-বইগুলো",
"LabelEnable": "সক্ষম করুন",
"LabelEnableMp3IndexSeeking": "এমপি৩ সূচী খোঁজা সক্ষম করুন",
"LabelEnableMp3IndexSeekingHelp": "এই সেটিংটি শুধুমাত্র তখনই সক্রিয় করা উচিত যদি আপনার কাছে MP3 ফাইল থাকে যা সঠিকভাবে খুঁজছে না। ভেরিয়েবল বিটরেট (VBR) MP3 ফাইলের কারণে ভুল চাওয়া হয়। এই সেটিংটি সূচী খুঁজতে বাধ্য করবে, যেখানে ফাইলটি পড়ার সাথে-সাথে একটি টাইম-টু-বাইট ম্যাপিং তৈরি করা হয়। বড় MP3 ফাইলের সাথে কিছু ক্ষেত্রে ফাইলের শেষের দিকে খোঁজার সময় বিলম্ব হবে।",
"LabelEnableMp3IndexSeekingHelp": "এই সেটিংটি শুধু তখনই চালু করুন, যখন আপনার MP3 ফাইলে ঠিকভাবে নির্দিষ্ট স্থানে যাওয়া (seeking) কাজ করছে না। সাধারণত ভ্যারিয়েবল বিটরেট (VBR) MP3 ফাইলের কারণে এমন সমস্যা হয়। এই সেটিংটি চালু করলে ইনডেক্স ব্যবহার করে seeking করা হবে এবং ফাইল পড়ার সময় সময়ের সঙ্গে ফাইলের বাইট অবস্থানের একটি ম্যাপ তৈরি হবে। বড় MP3 ফাইলের ক্ষেত্রে ফাইলের শেষের দিকে যেতে কিছুটা দেরি হতে পারে।",
"LabelEnd": "সমাপ্ত",
"LabelEndOfChapter": "অধ্যায়ের সমাপ্তি",
"LabelEndTime": "শেষ সময়",
"LabelEpisode": "পর্ব",
"LabelExplicit": "অশ্লীল ভাষা",
"LabelFeedURL": "ফিড ইউআরএল",
"LabelFile": "ফাইল",
"LabelFileBirthtime": "ফাইল জন্মের সময়",
@@ -154,6 +159,9 @@
"LabelFinished": "সমাপ্ত",
"LabelFolder": "ফোল্ডার",
"LabelFontBoldness": "হরফ বোল্ডনেস",
"LabelFontFamily": "ফন্টের ধরন",
"LabelFontFamilySans": "স্যান্স",
"LabelFontFamilySerif": "সেরিফ",
"LabelFontScale": "ফন্ট স্কেল",
"LabelGenre": "ঘরানা",
"LabelGenres": "ঘরানাগুলো",
@@ -168,10 +176,14 @@
"LabelInternalAppStorage": "অভ্যন্তরীণ অ্যাপ স্টোরেজ",
"LabelJumpBackwardsTime": "পিছনের সময়ে ঝাঁপ",
"LabelJumpForwardsTime": "সামনের সময়ে ঝাঁপ",
"LabelKeepScreenAwake": "স্ক্রিন চালু রাখুন",
"LabelLanguage": "ভাষা",
"LabelLayout": "লেআউট",
"LabelLayoutAuto": "স্বয়ংক্রিয়",
"LabelLayoutSinglePage": "একক পৃষ্ঠা",
"LabelLibrarySortByProgress": "অগ্রগতি: সর্বশেষ আপডেট",
"LabelLibrarySortByProgressFinished": "অগ্রগতি: সম্পন্ন",
"LabelLibrarySortByProgressStarted": "অগ্রগতি: শুরু হয়েছে",
"LabelLight": "আলো",
"LabelLineSpacing": "লাইন স্পেসিং",
"LabelListenAgain": "আবার শুনুন",
@@ -182,6 +194,7 @@
"LabelLow": "নিচু",
"LabelMediaType": "মিডিয়ার ধরন",
"LabelMedium": "মাঝারি",
"LabelMissing": "অনুপস্থিত",
"LabelMore": "আরো",
"LabelMoreInfo": "আরো তথ্য",
"LabelName": "নাম",
@@ -199,6 +212,8 @@
"LabelNotFinished": "সমাপ্ত হয়নি",
"LabelNotStarted": "শুরু হয়নি",
"LabelNumEpisodes": "{0}টি পর্ব",
"LabelNumEpisodesIncomplete": "{0}টি পর্ব, {1}টি অসম্পূর্ণ",
"LabelNumberOfEpisodes": "পর্বের সংখ্যা",
"LabelOff": "বন্ধ",
"LabelOn": "চালু",
"LabelPassword": "পাসওয়ার্ড",
@@ -216,6 +231,7 @@
"LabelPublishedDate": "প্রকাশিত {0}",
"LabelRSSFeedCustomOwnerEmail": "কাস্টম মালিকের ইমেইল",
"LabelRSSFeedCustomOwnerName": "কাস্টম মালিকের নাম",
"LabelRSSFeedOpen": "RSS ফিড খোলা আছে",
"LabelRSSFeedPreventIndexing": "সূচীকরণ প্রতিরোধ করুন",
"LabelRSSFeedSlug": "আরএসএস ফিড স্লাগ",
"LabelRandomly": "এলোমেলোভাবে",
@@ -227,6 +243,9 @@
"LabelScaleElapsedTimeBySpeed": "অতিবাহিত সময় গতি দ্বারা স্কেল করুন",
"LabelSeason": "সেশন",
"LabelSelectADevice": "একটি ডিভাইস নির্বাচন করুন",
"LabelSelectMediaType": "মিডিয়ার ধরন নির্বাচন করুন",
"LabelSequenceAscending": "ক্রম ঊর্ধ্বমুখী",
"LabelSequenceDescending": "ক্রম নিম্নমুখী",
"LabelSeries": "সিরিজ",
"LabelServerAddress": "সার্ভার ঠিকানা",
"LabelSetEbookAsPrimary": "প্রাথমিক হিসাবে সেট করুন",
@@ -235,6 +254,8 @@
"LabelShowAll": "সব দেখান",
"LabelSize": "আকার",
"LabelSleepTimer": "স্লিপ টাইমার",
"LabelSleepTimerAlmostDoneChime": "প্রায় শেষ হলে একটি সংকেতের শব্দ বাজান",
"LabelSleepTimerAlmostDoneChimeHelp": "স্লিপ টাইমারে ৩০ সেকেন্ড বাকি থাকলে একটি সংকেতের শব্দ বাজান",
"LabelStart": "শুরু",
"LabelStartTime": "শুরুর সময়",
"LabelStatsBestDay": "সেরা দিন",
@@ -250,6 +271,7 @@
"LabelTag": "ট্যাগ",
"LabelTags": "ট্যাগগুলো",
"LabelTheme": "থিম",
"LabelThemeBlack": "কালো",
"LabelThemeDark": "অন্ধকার",
"LabelThemeLight": "আলো",
"LabelTimeRemaining": "{0}টি অবশিষ্ট",
@@ -274,24 +296,34 @@
"MessageAudiobookshelfServerNotConnected": "অডিওবুকশেল্ফ সার্ভার সংযুক্ত করা যায়নি",
"MessageAudiobookshelfServerRequired": "<strong>গুরুত্বপূর্ণ!</strong> এই অ্যাপটি এমন একটি অডিওবুকশেল্ফ সার্ভারের সাথে কাজ করার জন্য ডিজাইন করা হয়েছে যা আপনি বা আপনার পরিচিত কেউ হোস্ট করছেন৷ এই অ্যাপ্লিকেশনটি নিজে থেকে কোন বিষয়বস্তু প্রদান করে না।",
"MessageBookshelfEmpty": "বুকশেলফ খালি",
"MessageConfirmAppExit": "আপনি কি অ্যাপ থেকে বের হতে চান?",
"MessageConfirmDeleteEpisodeDownloadQueue": "আপনি কি নিশ্চিত যে পর্ব ডাউনলোডের সারি মুছে ফেলতে চান?",
"MessageConfirmDeleteLocalEpisode": "আপনার ডিভাইস থেকে স্থানীয় পর্ব \"{0}\" সরাবেন? সার্ভারে ফাইলটি প্রভাবিত হবে না।",
"MessageConfirmDeleteLocalFiles": "আপনার ডিভাইস থেকে এই আইটেমটির স্থানীয় ফাইলগুলি সরাবেন? সার্ভারে থাকা ফাইল এবং আপনার অগ্রগতি প্রভাবিত হবে না।",
"MessageConfirmDeleteServerConfig": "এই সার্ভার কনফিগারেশনটি সরিয়ে ফেলতে চান?",
"MessageConfirmDeleteServerEpisode": "আপনি কি নিশ্চিত যে সার্ভার থেকে \"{0}\" পর্বটি মুছে ফেলতে চান?\nসতর্কতা: এটি অডিও ফাইলটিও মুছে ফেলবে।",
"MessageConfirmDisableAutoTimer": "আপনি কি নিশ্চিত যে আজকের বাকি সময়ের জন্য অটো টাইমার বন্ধ করতে চান? এই অটো-স্লিপ টাইমারের সময়সীমা শেষ হলে অথবা আপনি অ্যাপটি পুনরায় চালু করলে টাইমারটি আবার চালু হবে।",
"MessageConfirmDiscardProgress": "আপনি কি নিশ্চিত আপনার অগ্রগতি পুনরায় সেট করতে চান?",
"MessageConfirmDownloadUsingCellular": "আপনি সেলুলার ডেটা ব্যবহার করে ডাউনলোড করতে চলেছেন৷ এর মধ্যে ক্যারিয়ার ডেটা চার্জ অন্তর্ভুক্ত থাকতে পারে। আপনি কি চালিয়ে যেতে চান?",
"MessageConfirmMarkAsFinished": "আপনি কি এই আইটেমটিকে সমাপ্ত হিসাবে চিহ্নিত করার বিষয়ে নিশ্চিত?",
"MessageConfirmPlaybackTime": "\"{0}\" এর প্লেব্যাক {1} থেকে শুরু করবেন?",
"MessageConfirmRemoveBookmark": "আপনি কি বুকমার্ক সরানোর বিষয়ে নিশ্চিত?",
"MessageConfirmStreamingUsingCellular": "আপনি সেলুলার ডেটা ব্যবহার করে স্ট্রিম করতে চলেছেন৷ এর মধ্যে ক্যারিয়ার ডেটা চার্জ অন্তর্ভুক্ত থাকতে পারে। আপনি কি চালিয়ে যেতে চান?",
"MessageDiscardProgress": "অগ্রগতি বাতিল করুন",
"MessageDownloadCompleteProcessing": "ডাউনলোড সম্পূর্ণ। প্রক্রিয়া করা হচ্ছে..।",
"MessageDownloading": "ডাউনলোড হচ্ছে..।",
"MessageDownloadingEpisode": "ডাউনলোডিং পর্ব",
"MessageDownloadingFile": "{0} ডাউনলোড করা হচ্ছে",
"MessageEpisodesQueuedForDownload": "{0} পর্ব(গুলি) ডাউনলোডের জন্য সারিবদ্ধ",
"MessageFailedToRefreshToken": "টোকেন রিফ্রেশ করা যায়নি, আবার লগইন করতে হবে",
"MessageFeedURLWillBe": "ফিড URL হবে {0}",
"MessageFetching": "আনয় হচ্ছে.।",
"MessageFollowTheProjectOnGithub": "গিটহাবে প্রকল্পটিকে অনুসরণ করুন",
"MessageItemDownloadCompleteFailedToCreate": "আইটেম ডাউনলোড সম্পূর্ণ হয়েছে কিন্তু লাইব্রেরি আইটেম তৈরি করতে ব্যর্থ হয়েছে",
"MessageItemMissing": "আইটেমটি খুঁজে পাওয়া যাচ্ছে না এবং এটি সার্ভারে ঠিক করতে হবে। সাধারণত ফাইলের পাথ অ্যাক্সেস করা না গেলে কোনো আইটেমকে অনুপস্থিত হিসেবে চিহ্নিত করা হয়।",
"MessageLoading": "লোড হচ্ছে.।",
"MessageLoadingServerData": "সার্ভার ডেটা লোড হচ্ছে..।",
"MessageLocalFolderDescription": "‘Internal App Storage’ শুধু এই অ্যাপ থেকেই অ্যাক্সেস করা যায়। এই অ্যাপটি শুধুমাত্র অ্যাপের মাধ্যমে সরাসরি ডাউনলোড করা মিডিয়া সমর্থন করে। শেয়ার্ড স্টোরেজ ফোল্ডার ব্যবহার করলে এই অ্যাপের মাধ্যমে ডাউনলোড করা মিডিয়া অন্য অ্যাপ থেকেও অ্যাক্সেস করা যাবে।",
"MessageMarkAsFinished": "সমাপ্ত হিসাবে চিহ্নিত করুন",
"MessageMediaLinkedToADifferentServer": "মিডিয়া একটি ভিন্ন ঠিকানায় একটি অডিওবুকশেল্ফ সার্ভারের সাথে লিঙ্ক করা হয়েছে ({0})৷ এই সার্ভার ঠিকানার সাথে সংযুক্ত হলে অগ্রগতি সিঙ্ক করা হবে।",
"MessageMediaLinkedToADifferentUser": "মিডিয়া এই সার্ভারের সাথে লিঙ্ক করা হয়েছে কিন্তু অন্য ব্যবহারকারী দ্বারা ডাউনলোড করা হয়েছে৷ অগ্রগতি শুধুমাত্র সেই ব্যবহারকারীর সাথে সিঙ্ক করা হবে যে এটি ডাউনলোড করেছে।",
@@ -304,13 +336,21 @@
"MessageNoItems": "কোন আইটেম নেই",
"MessageNoItemsFound": "কোন আইটেম পাওয়া যায়নি",
"MessageNoListeningSessions": "কোনও শোনার সেশন নেই",
"MessageNoLogs": "কোনো লগ নেই",
"MessageNoMediaFolders": "কোনো মিডিয়া ফোল্ডার নেই",
"MessageNoNetworkConnection": "নেটওয়ার্ক সংযোগ নেই",
"MessageNoPodcastsFound": "কোন পডকাস্ট পাওয়া যায়নি",
"MessageNoSeries": "কোনো সিরিজ নেই",
"MessageNoUpdatesWereNecessary": "কোন আপডেটের প্রয়োজন ছিল না",
"MessageNoUserPlaylists": "আপনার কোনো প্লেলিস্ট নেই",
"MessageOldServerAuthReLoginRequired": "নিরাপত্তার জন্য সার্ভার v2.26.0-এ অথেনটিকেশন ব্যবস্থা উন্নত করা হয়েছে। সকল ব্যবহারকারীকে আবার লগইন করতে হবে।",
"MessageOldServerAuthWarning": "সার্ভারটি পুরোনো অথেনটিকেশন পদ্ধতি ব্যবহার করছে",
"MessageOldServerAuthWarningHelp": "এই সার্ভারটি v2.26.0-এর আগের একটি সংস্করণে চলছে। v2.26.0-এ আরও নিরাপদ অথেনটিকেশন ব্যবস্থা যোগ করা হয়েছে। সার্ভারটি সর্বশেষ সংস্করণে আপডেট করার জন্য জোরালোভাবে পরামর্শ দেওয়া হচ্ছে। আপনি যদি ইতিমধ্যে সার্ভারটি আপডেট করে থাকেন, তাহলে নতুন অথেনটিকেশন ব্যবস্থা ব্যবহার করতে আবার লগইন করুন।",
"MessageOldServerConnectionWarning": "সার্ভার সংযোগের কনফিগারেশনে একটি পুরোনো ইউজার আইডি ব্যবহার করা হচ্ছে। অনুগ্রহ করে এই সার্ভার সংযোগটি মুছে আবার যোগ করুন।",
"MessageOldServerConnectionWarningHelp": "আপনি মূলত জুন ২০২৩-এ প্রকাশিত 2.3.0 সংস্করণের ডেটাবেস মাইগ্রেশনের আগে এই সার্ভারের সাথে সংযোগ সেটআপ করেছিলেন। ভবিষ্যতের কোনো সার্ভার আপডেটে এই পুরোনো সংযোগ ব্যবহার করে সাইন ইন করার সুবিধা সরিয়ে দেওয়া হবে। অনুগ্রহ করে বর্তমান সার্ভার সংযোগটি মুছে ফেলুন এবং একই সার্ভার ঠিকানা ও লগইন তথ্য ব্যবহার করে আবার সংযোগ করুন। এই ডিভাইসে কোনো মিডিয়া ডাউনলোড করা থাকলে, সার্ভারের সাথে সিঙ্ক করার জন্য সেগুলো আবার ডাউনলোড করতে হবে।",
"MessagePodcastSearchField": "অনুসন্ধান শব্দ বা RSS ফিড URL লিখুন",
"MessagePreparingDownloads": "ডাউনলোড প্রস্তুত করা হচ্ছে",
"MessageProgressSyncFailed": "সার্ভারে আপনার শোনার অগ্রগতি জানানোর সর্বশেষ প্রচেষ্টা ব্যর্থ হয়েছে। মিডিয়া চলাকালীন প্রতি ১৫ সেকেন্ড থেকে ১ মিনিট পরপর অগ্রগতি সিঙ্ক করার চেষ্টা চলতে থাকবে।",
"MessageReportBugsAndContribute": "বাগ রিপোর্ট করুন, বৈশিষ্ট্যের অনুরোধ করুন এবং এতে অবদান রাখুন",
"MessageSeriesAlreadyDownloaded": "আপনি ইতিমধ্যে এই সিরিজের সব বই ডাউনলোড করেছেন।",
"MessageSeriesDownloadConfirm": "{1} ফাইল(গুলো) সহ অনুপস্থিত {0} বই(গুলো) ডাউনলোড করুন, মোট {2}টি ফোল্ডার {3} এ?",
@@ -320,6 +360,10 @@
"MessageSocketConnectedOverUnmeteredCellular": "মিটারবিহীন সেলুলারের দ্বারা সকেট সংযোগ করা হয়েছে",
"MessageSocketConnectedOverUnmeteredWifi": "মিটারবিহীন ওয়াইফাইয়ের মাধ্যমে সকেট সংযুক্ত",
"MessageSocketNotConnected": "সকেট সংযুক্ত নয়",
"MessageStorageAccessDenied": "অ্যাক্সেস প্রত্যাখ্যান করা হয়েছে",
"MessageStoragePermissionDenied": "অনুমতি প্রত্যাখ্যান করা হয়েছে",
"MessageStorageWriteAccessRequired": "এই ফোল্ডারে আপনার লেখার অনুমতি নেই। আপনি কি অ্যাক্সেস দিতে চান?",
"MessageWaitingForAvailableStorage": "স্টোরেজে জায়গা খালি হওয়ার অপেক্ষা করা হচ্ছে",
"NoteRSSFeedPodcastAppsHttps": "সতর্কতা: বেশিরভাগ পডকাস্ট অ্যাপের জন্য প্রয়োজন হবে RSS ফিড URL যেটি HTTPS ব্যবহার করছে",
"NoteRSSFeedPodcastAppsPubDate": "সতর্কতা: আপনার 1 বা তার বেশি পর্বের একটি পাব তারিখ নেই। কিছু পডকাস্ট অ্যাপের এটি প্রয়োজন।",
"ToastBookmarkCreateFailed": "বুকমার্ক তৈরি করতে ব্যর্থ",
@@ -333,5 +377,7 @@
"ToastPodcastCreateSuccess": "পডকাস্ট সফলভাবে তৈরি করা হয়েছে",
"ToastRSSFeedCloseFailed": "RSS ফিড বন্ধ করতে ব্যর্থ",
"ToastRSSFeedCloseSuccess": "RSS ফিড বন্ধ",
"ToastStreamingNotAllowedOnCellular": "সেলুলার ডেটাতে স্ট্রিমিং অনুমোদিত নয়"
"ToastStreamingNotAllowedOnCellular": "সেলুলার ডেটাতে স্ট্রিমিং অনুমোদিত নয়",
"UnitMinutesShort": "{0} মিনিট",
"UnitSecondsShort": "{0} সেকেন্ড"
}
+5 -5
View File
@@ -90,7 +90,7 @@
"HeaderSleepTimer": "Časovač spánku",
"HeaderSleepTimerSettings": "Nastavení časovače spánku",
"HeaderStatsMinutesListeningChart": "Poslech za posledních 7 dní (min)",
"HeaderStatsRecentSessions": "Poslední sezení",
"HeaderStatsRecentSessions": "Nedávné relace",
"HeaderTableOfContents": "Obsah",
"HeaderUserInterfaceSettings": "Nastavení uživatelského rozhraní",
"HeaderWelcome": "Vítejte, <strong>{0}</strong>",
@@ -306,7 +306,7 @@
"MessageConfirmDiscardProgress": "Opravdu chcete zahodit svůj pokrok?",
"MessageConfirmDownloadUsingCellular": "Chystáte se stahovat přes mobilní data. Toto může zahrnovat poplatky za mobilní data. Chcete pokračovat?",
"MessageConfirmMarkAsFinished": "Opravdu chcete tuto položku označit jako dokončenou?",
"MessageConfirmPlaybackTime": "Spustit přehrávání pro \"{0}\" v {1}?",
"MessageConfirmPlaybackTime": "Spustit přehrávání \"{0}\" od {1}?",
"MessageConfirmRemoveBookmark": "Opravdu chcete odebrat záložku?",
"MessageConfirmStreamingUsingCellular": "Chystáte se přehrávat přes mobilní data. Toto může zahrnovat poplatky za mobilní data. Chcete pokračovat?",
"MessageDiscardProgress": "Zahodit pokrok",
@@ -361,9 +361,9 @@
"MessageSocketConnectedOverUnmeteredWifi": "Socket připojen přes neměřenou Wi-Fi",
"MessageSocketNotConnected": "Socket není připojen",
"MessageStorageAccessDenied": "Přístup zamítnut",
"MessageStoragePermissionDenied": "Oprávnění neuděleno",
"MessageStorageWriteAccessRequired": "Nemáte přístup k zápisu do této složky. Chcete udělit přístup?",
"MessageWaitingForAvailableStorage": "Čekám na dostupnost úložiště",
"MessageStoragePermissionDenied": "Přístup zamítnut",
"MessageStorageWriteAccessRequired": "Aplikace nemá oprávnění k zápisu do této složky. Chcete ho udělit?",
"MessageWaitingForAvailableStorage": "Čekání na dostupnost úložiště",
"NoteRSSFeedPodcastAppsHttps": "Upozornění: Většina aplikací pro podcasty bude vyžadovat, aby adresa URL kanálu RSS používala protokol HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Upozornění: 1 nebo více epizod nemá datum vydání. Některé podcastové aplikace to vyžadují.",
"ToastBookmarkCreateFailed": "Vytvoření záložky se nezdařilo",
+35 -34
View File
@@ -1,24 +1,25 @@
{
"ButtonAdd": "Tilføj",
"ButtonAddNewServer": "Tilføj ny server",
"ButtonAllow": "Tillad",
"ButtonAuthors": "Forfattere",
"ButtonBack": "Tilbage",
"ButtonCancel": "Annuller",
"ButtonCancelTimer": "Stop timer",
"ButtonClearFilter": "Ryd filter",
"ButtonClearLogs": "Rens Logfiler",
"ButtonClearLogs": "Ryd Logfiler",
"ButtonCloseFeed": "Luk feed",
"ButtonCollections": "Samlinger",
"ButtonConnect": "Forbind",
"ButtonConnectToServer": "Forbind til Server",
"ButtonConnectToServer": "Forbind til server",
"ButtonCreate": "Opret",
"ButtonCreateBookmark": "Opret Bogmærker",
"ButtonCreateNewPlaylist": "Opret Ny Playlist",
"ButtonCreateBookmark": "Opret Bogmærke",
"ButtonCreateNewPlaylist": "Opret ny playliste",
"ButtonDelete": "Slet",
"ButtonDeleteLocalEpisode": "Slet lokalt afsnit",
"ButtonDeleteLocalFile": "Slet lokal fil",
"ButtonDeleteLocalItem": "Slet lokalt element",
"ButtonDisableAutoTimer": "Afbryd Auto Timer",
"ButtonDisableAutoTimer": "Afbryd auto timer",
"ButtonDisconnect": "Luk forbindelse",
"ButtonGoToWebClient": "Gå til webklient",
"ButtonHistory": "Historik",
@@ -26,83 +27,83 @@
"ButtonIssues": "Problemer",
"ButtonLatest": "Seneste",
"ButtonLibrary": "Bibliotek",
"ButtonLocalMedia": "Lokalt medie",
"ButtonLocalMedia": "Lokale medier",
"ButtonLogs": "Logfiler",
"ButtonManageLocalFiles": "Administrér Lokale Filer",
"ButtonManageLocalFiles": "Administrér lokale filer",
"ButtonMaskServerAddress": "Maskér server adresse",
"ButtonNewFolder": "Ny Folder",
"ButtonNextEpisode": "Næste Afsnit",
"ButtonNewFolder": "Ny mappe",
"ButtonNextEpisode": "Næste afsnit",
"ButtonOk": "Ok",
"ButtonOpenFeed": "Åbn feed",
"ButtonOverride": "Overskriv",
"ButtonPause": "Pause",
"ButtonPlay": "Afspil",
"ButtonPlayEpisode": "Afspil Afsnit",
"ButtonPlaylists": "Afspilningslister",
"ButtonPlayEpisode": "Afspil afsnit",
"ButtonPlaylists": "Playlister",
"ButtonRead": "Læs",
"ButtonReadLess": "Se mindre",
"ButtonReadMore": "Se mere",
"ButtonRemove": "Fjern",
"ButtonRemoveFromServer": "Fjern fra Server",
"ButtonRemoveFromServer": "Fjern fra server",
"ButtonSave": "Gem",
"ButtonSaveOrder": "Gem Rækkefølge",
"ButtonSaveOrder": "Gem rækkefølge",
"ButtonSearch": "Søg",
"ButtonSendEbookToDevice": "Send E-bog til Enhed",
"ButtonSendEbookToDevice": "Send e-bog til enhed",
"ButtonSeries": "Serier",
"ButtonSetTimer": "Indstil timer",
"ButtonStream": "Stream",
"ButtonSubmit": "Send",
"ButtonSwitchServerUser": "Skift Server/Bruger",
"ButtonSwitchServerUser": "Skift server/bruger",
"ButtonUnmaskServerAddress": "Afmaskér server adresse",
"ButtonUserStats": "Bruger statitstik",
"ButtonUserStats": "Brugerstatistik",
"ButtonYes": "Ja",
"HeaderAccount": "Konto",
"HeaderAdvanced": "Avanceret",
"HeaderAndroidAutoSettings": "Android Auto Indstillinger",
"HeaderAndroidAutoSettings": "Android Auto indstillinger",
"HeaderAudioTracks": "Lydspor",
"HeaderChapters": "Kapitler",
"HeaderCollection": "Samling",
"HeaderCollectionItems": "Bøger i samlingen",
"HeaderConfirm": "Bekræft",
"HeaderConnectionStatus": "Forbindelsesstatus",
"HeaderDataSettings": "Data indstillinger",
"HeaderDataSettings": "Dataindstillinger",
"HeaderDetails": "Detaljer",
"HeaderDownloads": "Downloads",
"HeaderDownloads": "Overførsler",
"HeaderEbookFiles": "E-bogsfiler",
"HeaderEpisodes": "Afsnit",
"HeaderEreaderSettings": "Indstillinger for e-bogslæsere",
"HeaderLatestEpisodes": "Nyeste afsnit",
"HeaderLibraries": "Biblioteker",
"HeaderLocalFolders": "Lokale mapper",
"HeaderLocalLibraryItems": "Lokale biblioteks elementer",
"HeaderNewPlaylist": "Ny afspilningsliste",
"HeaderLocalLibraryItems": "Lokale bibliotekselementer",
"HeaderNewPlaylist": "Ny playliste",
"HeaderOpenRSSFeed": "Åbn RSS-feed",
"HeaderPlaybackSettings": "Afspilnings indstillinger",
"HeaderPlaylist": "Afspilningsliste",
"HeaderPlaylistItems": "Elementer i afspilningslisten",
"HeaderProgressSyncFailed": "Fremskridt synkronisering fejlede",
"HeaderPlaybackSettings": "Afspilningsindstillinger",
"HeaderPlaylist": "Playliste",
"HeaderPlaylistItems": "Elementer i playlisten",
"HeaderProgressSyncFailed": "Fremskridtssynkronisering fejlede",
"HeaderRSSFeed": "RSS Feed",
"HeaderRSSFeedGeneral": "RSS-detaljer",
"HeaderRSSFeedIsOpen": "RSS-feedet er åbent",
"HeaderSelectDownloadLocation": "Vælg Download Placering",
"HeaderSelectDownloadLocation": "Vælg overførselslokation",
"HeaderSettings": "Indstillinger",
"HeaderSleepTimer": "Sovefunktion",
"HeaderSleepTimerSettings": "Sleep Timer instillinger",
"HeaderSleepTimerSettings": "Sovefunktionsinstillinger",
"HeaderStatsMinutesListeningChart": "Minutter lyttet (sidste 7 dage)",
"HeaderStatsRecentSessions": "Seneste sessioner",
"HeaderTableOfContents": "Indholdsfortegnelse",
"HeaderUserInterfaceSettings": "Indstillinger for brugergrænseflade",
"HeaderWelcome": "Velkommen, <strong>{0}</strong>",
"HeaderYourStats": "Din statistik",
"LabelAddToPlaylist": "Tilføj til afspilningsliste",
"LabelAddToPlaylist": "Tilføj til playliste",
"LabelAddedAt": "Tilføjet",
"LabelAddedDate": "Tilføjede {0}",
"LabelAll": "Alle",
"LabelAllowSeekingOnMediaControls": "Tillad positionssøgning på mediemeddelelseskontroller",
"LabelAlways": "Altid",
"LabelAndroidAutoBrowseLimitForGrouping": "Alfabetisk Rullemenu Begrænsning",
"LabelAndroidAutoBrowseLimitForGrouping": "Alfabetisk rullemenusbegrænsning",
"LabelAndroidAutoBrowseLimitForGroupingHelp": "Brug ikke alfabetisk rullemenu når der er færre end dette antal elementer at vise",
"LabelAndroidAutoBrowseSeriesSequenceOrder": "Bogserie Rækkefølge",
"LabelAndroidAutoBrowseSeriesSequenceOrder": "Bogseriens rækkefølge",
"LabelAskConfirmation": "Bed om bekræftelse",
"LabelAuthor": "Forfatter",
"LabelAuthorFirstLast": "Forfatter (Fornavn Efternavn)",
@@ -110,10 +111,10 @@
"LabelAuthors": "Forfattere",
"LabelAutoDownloadEpisodes": "Hent automatisk afsnit",
"LabelAutoRewindTime": "Automatisk tilbagespolingstid",
"LabelAutoSleepTimer": "Auto søvn-timer",
"LabelAutoSleepTimerAutoRewind": "Automatisk sleep timer automatisk tilbagespoling",
"LabelAutoSleepTimerAutoRewindHelp": "Når den automatiske sleep-timer er færdig, vil genafspilning af elementet automatisk spole din position tilbage.",
"LabelAutoSleepTimerHelp": "Når der afspilles medie mellem de angivne start- og sluttidspunkter, starter en sleep-timer automatisk.",
"LabelAutoSleepTimer": "Auto søvnfunktion",
"LabelAutoSleepTimerAutoRewind": "automatisk tilbagespoling for automatisk søvnfunktion",
"LabelAutoSleepTimerAutoRewindHelp": "Når den automatiske søvnfunktion er færdig, vil genafspilning af elementet automatisk spole din position tilbage.",
"LabelAutoSleepTimerHelp": "Når der afspilles medie mellem de angivne start- og sluttidspunkter, starter en søvnfunktion automatisk.",
"LabelBooks": "Bøger",
"LabelByAuthor": "af {0}",
"LabelChapterTrack": "Kapitel spor",
+1 -1
View File
@@ -69,7 +69,7 @@
"HeaderDataSettings": "Daten-Einstellungen",
"HeaderDetails": "Details",
"HeaderDownloads": "Downloads",
"HeaderEbookFiles": "E-Book-Dateien",
"HeaderEbookFiles": "Buch-Dateien",
"HeaderEpisodes": "Episoden",
"HeaderEreaderSettings": "E-Reader Einstellungen",
"HeaderLatestEpisodes": "Neueste Episoden",
+7 -6
View File
@@ -47,7 +47,7 @@
"ButtonSave": "Αποθήκευση",
"ButtonSaveOrder": "Αποθήκευση Ταξινόμησης",
"ButtonSearch": "Αναζήτηση",
"ButtonSendEbookToDevice": "Αποστολή Ebook σε Συσκευή",
"ButtonSendEbookToDevice": "Αποστολή του βιβλίου σε συσκευή",
"ButtonSeries": "Σειρά",
"ButtonSetTimer": "Ορισμός Χρονοδιακόπτη",
"ButtonStream": "Μετάδοση",
@@ -68,7 +68,7 @@
"HeaderDataSettings": "Ρυθμίσεις Δεδομένων",
"HeaderDetails": "Λεπτομέρειες",
"HeaderDownloads": "Λήψεις",
"HeaderEbookFiles": "Αρχεία Ebook",
"HeaderEbookFiles": "Αρχεία του βιβλίου",
"HeaderEpisodes": "Επεισόδια",
"HeaderEreaderSettings": "Ρυθμίσεις Ereader",
"HeaderLatestEpisodes": "Τελευταία Επεισόδια",
@@ -121,7 +121,7 @@
"LabelClosePlayer": "Κλείσιμο αναπαραγωγής",
"LabelCollapseSeries": "Σύμπτυξη Σειράς",
"LabelComplete": "Ολοκλήρωση",
"LabelContinueBooks": "Συνέχεια Βιβλίων",
"LabelContinueBooks": "Συνέχεια βιβλίων",
"LabelContinueEpisodes": "Συνέχεια Επεισοδίων",
"LabelContinueListening": "Συνέχεια Ακρόασης",
"LabelContinueReading": "Συνέχεια Ανάγνωσης",
@@ -140,8 +140,8 @@
"LabelDownloadUsingCellular": "Λήψη με χρήση δεδομένων",
"LabelDownloaded": "Ληφθέντα",
"LabelDuration": "Διάρκεια",
"LabelEbook": "Ηλεκτρονικό Βιβλίο/ Ebook",
"LabelEbooks": "Ηλεκτρονικά Βιβλία / Ebooks",
"LabelEbook": "Ηλεκτρονικό βιβλίο",
"LabelEbooks": "Ηλεκτρονικά βιβλία",
"LabelEnable": "Ενεργοποίηση",
"LabelEnableMp3IndexSeeking": "Ενεργοποίηση αναζήτησης σε mp3 ευρετήριο",
"LabelEnableMp3IndexSeekingHelp": "Αυτή η ρύθμιση θα πρέπει να είναι ενεργοποιημένη μόνο εάν έχετε αρχεία mp3 που δεν έχει γίνει σωστή αναζήτηση. Η ανακριβής αναζήτηση πιθανότατα οφείλεται σε αρχεία MP3 με μεταβλητό ρυθμό μετάδοσης bit (VBR). Αυτή η ρύθμιση θα επιβάλει την αναζήτηση ευρετηρίου, στην οποία δημιουργείται μια αντιστοίχιση χρόνου-byte καθώς διαβάζεται το αρχείο. Σε ορισμένες περιπτώσεις, με μεγάλα αρχεία MP3, θα υπάρχει καθυστέρηση κατά την αναζήτηση προς το τέλος του αρχείου.",
@@ -163,7 +163,7 @@
"LabelGenre": "Λογοτεχνικό Είδος",
"LabelGenres": "Λογοτεχνικά Είδη",
"LabelHapticFeedback": "Απτική ανατροφοδότηση",
"LabelHasEbook": "Έχει ebook",
"LabelHasEbook": "Έχει βιβλίο",
"LabelHasSupplementaryEbook": "Διαθέτει συμπληρωματικό ηλεκτρονικό βιβλίο",
"LabelHeavy": "Έντονη",
"LabelHigh": "Υψηλή",
@@ -263,6 +263,7 @@
"LabelVeryHigh": "Πολύ Ψηλά",
"LabelVeryLow": "Πολύ Χαμηλά",
"LabelYourProgress": "Η Πρόοδος Σας",
"MessageBookshelfEmpty": "Το ράφι είναι άδειο",
"MessageDownloadCompleteProcessing": "Η λήψη ολοκληρώθηκε. Επεξεργασία...",
"MessageDownloading": "Λήψη...",
"MessageDownloadingEpisode": "Λήψη επεισοδίου",
+7
View File
@@ -1,6 +1,7 @@
{
"ButtonAdd": "Añadir",
"ButtonAddNewServer": "Añadir servidor nuevo",
"ButtonAllow": "Permitir",
"ButtonAuthors": "Autores",
"ButtonBack": "Atrás",
"ButtonCancel": "Cancelar",
@@ -312,6 +313,7 @@
"MessageDownloadCompleteProcessing": "Descarga completada. Procesando...",
"MessageDownloading": "Descargando...",
"MessageDownloadingEpisode": "Descargando episodio",
"MessageDownloadingFile": "Descargando",
"MessageEpisodesQueuedForDownload": "{0} episodio(s) en cola para descargar",
"MessageFailedToRefreshToken": "No se pudo actualizar el token, se requiere reiniciar la sesión",
"MessageFeedURLWillBe": "El URL del suministro será {0}",
@@ -347,6 +349,7 @@
"MessageOldServerConnectionWarning": "La configuración de la conexión al servidor utiliza un identificador de usuario antiguo. Elimine y vuelva a añadir esta conexión al servidor.",
"MessageOldServerConnectionWarningHelp": "Usted configuró originalmente la conexión a este servidor antes de la migración de la base de datos en la versión 2.3.0, publicada en junio de 2023. Una futura actualización del servidor eliminará la posibilidad de iniciar sesión con esta conexión antigua. Por favor, elimine la conexión existente al servidor y conéctese de nuevo (utilizando la misma dirección del servidor y las mismas credenciales). Si tiene algún medio descargado en este dispositivo, será necesario descargarlo de nuevo para sincronizarlo con el servidor.",
"MessagePodcastSearchField": "Introduzca el término de búsqueda o el URL del suministro RSS",
"MessagePreparingDownloads": "Preparando descargas",
"MessageProgressSyncFailed": "El último intento de informar al servidor sobre el progreso de la escucha ha fallado. Las solicitudes de sincronización de progreso seguirán intentándose cada 15 segundos a 1 minuto mientras se reproduce el contenido multimedia.",
"MessageReportBugsAndContribute": "Informe de defectos, solicite funciones y contribuya en",
"MessageSeriesAlreadyDownloaded": "Ya ha descargado todos los libros de esta serie.",
@@ -357,6 +360,10 @@
"MessageSocketConnectedOverUnmeteredCellular": "Socket conectado a través de red celular sin tarificación por consumo",
"MessageSocketConnectedOverUnmeteredWifi": "Socket conectado a través de una red Wi-Fi sin tarificación por consumo",
"MessageSocketNotConnected": "Socket no conectado",
"MessageStorageAccessDenied": "Acceso denegado",
"MessageStoragePermissionDenied": "Permiso denegado",
"MessageStorageWriteAccessRequired": "No tienes permisos de escritura en esta carpeta. ¿Quieres conceder acceso?",
"MessageWaitingForAvailableStorage": "Esperando almacenamiento disponible",
"NoteRSSFeedPodcastAppsHttps": "Atención: la mayoría de las aplicaciones de pódcast requieren que el URL del suministro RSS use HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Advertencia: 1 o más de sus episodios no tienen fecha de publicación. Algunas aplicaciones de podcast lo requieren.",
"ToastBookmarkCreateFailed": "No se pudo crear el marcador",
+2 -1
View File
@@ -53,5 +53,6 @@
"ButtonStream": "پخش آنلاین",
"ButtonSubmit": "ثبت",
"ButtonSwitchServerUser": "تعویض سرور/کاربر",
"ButtonUnmaskServerAddress": "نمایش آدرس سرور"
"ButtonUnmaskServerAddress": "نمایش آدرس سرور",
"HeaderLocalFolders": "پوشه‌های محلی"
}
+1 -1
View File
@@ -69,7 +69,7 @@
"HeaderDataSettings": "Paramètres de données",
"HeaderDetails": "Détails",
"HeaderDownloads": "Téléchargements",
"HeaderEbookFiles": "Fichiers des livres numériques",
"HeaderEbookFiles": "Fichiers du livre",
"HeaderEpisodes": "Épisodes",
"HeaderEreaderSettings": "Paramètres de la liseuse",
"HeaderLatestEpisodes": "Dernier épisodes",
+1 -1
View File
@@ -69,7 +69,7 @@
"HeaderDataSettings": "Impostazioni dei dati",
"HeaderDetails": "Dettagli",
"HeaderDownloads": "Scaricamenti",
"HeaderEbookFiles": "File dei libri",
"HeaderEbookFiles": "File del libro",
"HeaderEpisodes": "Episodi",
"HeaderEreaderSettings": "Impostazioni lettore",
"HeaderLatestEpisodes": "Ultimi Episodi",
+15
View File
@@ -27,9 +27,11 @@
"ButtonLocalMedia": "Vietiniai failai",
"ButtonLogs": "Žurnalai",
"ButtonManageLocalFiles": "Tvarkyti vietinius failus",
"ButtonMaskServerAddress": "Paslėpti serverio adresą",
"ButtonNewFolder": "Naujas aplankas",
"ButtonNextEpisode": "Kitas epizodas",
"ButtonOpenFeed": "Atidaryti srautą",
"ButtonOverride": "Perrašyti",
"ButtonPause": "Pauzė",
"ButtonPlay": "Groti",
"ButtonPlayEpisode": "Groti episodą",
@@ -47,26 +49,37 @@
"ButtonStream": "Srautas",
"ButtonSubmit": "Pateikti",
"ButtonSwitchServerUser": "Keisti serverį/vartotoją",
"ButtonUnmaskServerAddress": "Rodyti serverio adresą",
"ButtonUserStats": "Vartotojo statistika",
"ButtonYes": "Taip",
"HeaderAccount": "Paskyra",
"HeaderAdvanced": "Papildomi",
"HeaderAndroidAutoSettings": "Android Auto nustatymai",
"HeaderAudioTracks": "Garso takeliai",
"HeaderChapters": "Skyriai",
"HeaderCollection": "Kolekcija",
"HeaderCollectionItems": "Kolekcijos elementai",
"HeaderConfirm": "Patvirtinti",
"HeaderConnectionStatus": "Ryšio statusas",
"HeaderDataSettings": "Duomenų nustatymai",
"HeaderDetails": "Detalės",
"HeaderDownloads": "Atsisiuntimai",
"HeaderEbookFiles": "Eknygos failai",
"HeaderEpisodes": "Epizodai",
"HeaderEreaderSettings": "Elektroninių skaitytuvų nustatymai",
"HeaderLatestEpisodes": "Naujausi epizodai",
"HeaderLibraries": "Bibliotekos",
"HeaderLocalFolders": "Vietiniai aplankai",
"HeaderNewPlaylist": "Naujas grojaraštis",
"HeaderOpenRSSFeed": "Atidaryti RSS srautą",
"HeaderPlaybackSettings": "Grojimo nustatymai",
"HeaderPlaylist": "Grojaraštis",
"HeaderPlaylistItems": "Grojaraščio elementai",
"HeaderProgressSyncFailed": "Progreso sinchronizacija nepavyko",
"HeaderRSSFeed": "RSS sklaidos kanalas",
"HeaderRSSFeedGeneral": "RSS informacija",
"HeaderRSSFeedIsOpen": "RSS srautas yra atidarytas",
"HeaderSelectDownloadLocation": "Pasirinkti atsisiuntimo vietą",
"HeaderSettings": "Nustatymai",
"HeaderSleepTimer": "Miego laikmatis",
"HeaderStatsMinutesListeningChart": "Klausymo minutės (paskutinės 7 dienos)",
@@ -186,6 +199,8 @@
"MessageAudiobookshelfServerNotConnected": "Audiobookshelf serveris neprijungtas",
"MessageAudiobookshelfServerRequired": "<strong>Important!</strong> Ši programa skirta naudoti su Audiobookshelf serveriu, kurį valdote jūs arba jūsų pažįstamas asmuo. Programa neteikia jokio turinio.",
"MessageBookshelfEmpty": "Lentyna tuščia",
"MessageConfirmDiscardProgress": "Ar tikrai norite ištrinti savo progresą?",
"MessageDiscardProgress": "Ištrinti progresą",
"MessageDownloadingEpisode": "Epizodas atsisiunčiamas",
"MessageEpisodesQueuedForDownload": "{0} epizodai laukia atsisiuntimo",
"MessageFeedURLWillBe": "Srauto URL bus {0}",
+7
View File
@@ -1,6 +1,7 @@
{
"ButtonAdd": "Legg til",
"ButtonAddNewServer": "Legg til ny tjener",
"ButtonAllow": "Tillat",
"ButtonAuthors": "Forfattere",
"ButtonBack": "Tilbake",
"ButtonCancel": "Avbryt",
@@ -312,6 +313,7 @@
"MessageDownloadCompleteProcessing": "Nedlasting fullført. Behandler …",
"MessageDownloading": "Laster ned …",
"MessageDownloadingEpisode": "Laster ned episode",
"MessageDownloadingFile": "Laster ned {0}",
"MessageEpisodesQueuedForDownload": "{0} Episode(r) lagt til i kø for nedlasting",
"MessageFailedToRefreshToken": "Klarte ikke å oppdatere token, ny innlogging kreves",
"MessageFeedURLWillBe": "Feed URL vil bli {0}",
@@ -347,6 +349,7 @@
"MessageOldServerConnectionWarning": "Konfigurasjonen til tjener-tilkoblingen bruker en gammel bruker ID. Vennligst slett og legg til igjen denne tjener-tilkoblingen.",
"MessageOldServerConnectionWarningHelp": "Du opprettet opprinnelig tilkoblingen til denne tjeneren før database-migreringen i versjon 2.3.0, som ble lansert i juni 2023. En fremtidig oppdatering av tjeneren vil fjerne muligheten for å logge inn med denne gamle tilkoblingen. Vennligst slett den eksisterende tjenertilkoblingen og koble til på nytt (bruk samme tjeneradresse og påloggingsinformasjon). Hvis du har nedlastede medier på denne enheten, må disse lastes ned på nytt for å synkronisere med tjeneren.",
"MessagePodcastSearchField": "Skriv inn søkeord eller URL til en RSS-strøm",
"MessagePreparingDownloads": "Forbereder nedlastinger",
"MessageProgressSyncFailed": "Det siste forsøket på å rapportere lyttefremdriften til tjeneren mislyktes. Forsøk på å synkronisere fremdriften vil fortsette hvert 15. sekund til hvert minutt så lenge mediet spilles av.",
"MessageReportBugsAndContribute": "Rapporter feil, forespør funksjoner og tillegg og bidra på",
"MessageSeriesAlreadyDownloaded": "Du har allerede lastet ned alle bøkene i denne serien.",
@@ -357,6 +360,10 @@
"MessageSocketConnectedOverUnmeteredCellular": "Tilkobling via ubegrenset mobildata",
"MessageSocketConnectedOverUnmeteredWifi": "Tilkoblet over ubegrenset Wi-Fi",
"MessageSocketNotConnected": "Socket ikke tilkoblet",
"MessageStorageAccessDenied": "Ingen adgang",
"MessageStoragePermissionDenied": "Ingen tilgang",
"MessageStorageWriteAccessRequired": "Du har ikke skrivetilgang til denne mappen. Vil du tillate tilgangen?",
"MessageWaitingForAvailableStorage": "Venter på tilgjengelig lagring",
"NoteRSSFeedPodcastAppsHttps": "Advarsel! De fleste podcast applikasjoner trenger RSS feed URL som bruker HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Advarsel! 1 eller flere av episodene har ikke publikasjonsdato. Noen podcast applikasjoner trenger dette.",
"ToastBookmarkCreateFailed": "Misslykkes å opprette bokmerke",
+7
View File
@@ -1,6 +1,7 @@
{
"ButtonAdd": "Dodaj",
"ButtonAddNewServer": "Dodaj nowy serwer",
"ButtonAllow": "Zezwól",
"ButtonAuthors": "Autorzy",
"ButtonBack": "Wstecz",
"ButtonCancel": "Anuluj",
@@ -312,6 +313,7 @@
"MessageDownloadCompleteProcessing": "Pobieranie ukończone. Przetwarzanie...",
"MessageDownloading": "Pobieranie...",
"MessageDownloadingEpisode": "Pobieranie odcinka",
"MessageDownloadingFile": "Pobieranie {0}",
"MessageEpisodesQueuedForDownload": "{0} odcinki w kolejce do pobrania",
"MessageFailedToRefreshToken": "Odświeżenie tokenu nie powiodło się. Wymagane jest ponowne zalogowanie",
"MessageFeedURLWillBe": "URL kanału: {0}",
@@ -347,6 +349,7 @@
"MessageOldServerConnectionWarning": "Konfiguracja połączenia z serwerem używa starego identyfikatora użytkownika. Usuń i dodaj ponownie to połączenie z serwerem.",
"MessageOldServerConnectionWarningHelp": "Połączenie z tym serwerem zostało pierwotnie skonfigurowane przed migracją bazy danych w wersji 2.3.0, wydanej w czerwcu 2023 r. Przyszła aktualizacja serwera usunie możliwość logowania się przy użyciu tego starego połączenia. Usuń istniejące połączenie z serwerem i połącz się ponownie (używając tego samego adresu serwera i danych logowania). Jeśli na tym urządzeniu znajdują się pobrane pliki multimedialne, konieczne będzie ich ponowne pobranie w celu synchronizacji z serwerem.",
"MessagePodcastSearchField": "Wprowadź wyszukiwane hasło lub adres URL kanału RSS",
"MessagePreparingDownloads": "Przygotowanie do pobierania",
"MessageProgressSyncFailed": "Ostatnia próba zgłoszenia postępu słuchania do serwera nie powiodła się. Żądania synchronizacji postępu będą nadal podejmowane co 15 sekund do 1 minuty podczas odtwarzania multimediów.",
"MessageReportBugsAndContribute": "Zgłoś błędy, pomysły i pomóż rozwijać aplikację na",
"MessageSeriesAlreadyDownloaded": "Seria książek już pobrana.",
@@ -357,6 +360,10 @@
"MessageSocketConnectedOverUnmeteredCellular": "Gniazdo podłączone przez sieć komórkową bez limitu danych",
"MessageSocketConnectedOverUnmeteredWifi": "Gniazdo podłączone przez Wi-Fi bez limitu danych",
"MessageSocketNotConnected": "Gniazdo nie jest podłączone",
"MessageStorageAccessDenied": "Brak dostępu",
"MessageStoragePermissionDenied": "Brak uprawnień",
"MessageStorageWriteAccessRequired": "Nie masz uprawnień zapisu do tego folderu. Czy chciałbyś nadać dostęp?",
"MessageWaitingForAvailableStorage": "Oczekiwanie na wolną przestrzeń",
"NoteRSSFeedPodcastAppsHttps": "Ostrzeżenie: Większość aplikacji do obsługi podcastów wymaga, aby adres URL kanału RSS korzystał z protokołu HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "Ostrzeżenie: 1 lub więcej odcinków nie ma daty publikacji. Niektóre aplikacje do słuchania podcastów tego wymagają.",
"ToastBookmarkCreateFailed": "Nie udało się utworzyć zakładki",
+7
View File
@@ -1,6 +1,7 @@
{
"ButtonAdd": "Lägg till",
"ButtonAddNewServer": "Lägg till ny server",
"ButtonAllow": "Tillåt",
"ButtonAuthors": "Författare",
"ButtonBack": "Tillbaka",
"ButtonCancel": "Avbryt",
@@ -312,6 +313,7 @@
"MessageDownloadCompleteProcessing": "Hämtningen är klar. Bearbetar…",
"MessageDownloading": "Hämtar…",
"MessageDownloadingEpisode": "Hämtar avsnitt",
"MessageDownloadingFile": "Hämtar {0}",
"MessageEpisodesQueuedForDownload": "{0} avsnitt har lagts i hämtningskön",
"MessageFailedToRefreshToken": "Det gick inte att förnya token. Du måste logga in igen.",
"MessageFeedURLWillBe": "Flödets URL blir {0}",
@@ -347,6 +349,7 @@
"MessageOldServerConnectionWarning": "Serveranslutningen använder ett äldre användar-ID. Ta bort anslutningen och lägg till den igen.",
"MessageOldServerConnectionWarningHelp": "Anslutningen till servern skapades före databasflytten i version 2.3.0, som gavs ut i juni 2023. En framtida serveruppdatering tar bort möjligheten att logga in med den äldre anslutningen. Ta bort serveranslutningen och anslut igen med samma serveradress och inloggningsuppgifter. Om du har hämtade medier på enheten måste de hämtas igen för att kunna synkroniseras med servern.",
"MessagePodcastSearchField": "Ange en sökfras eller RSS-flödets URL",
"MessagePreparingDownloads": "Förbereder hämtningar",
"MessageProgressSyncFailed": "Det senaste försöket att skicka uppspelningspositionen till servern misslyckades. Appen fortsätter att försöka synkronisera positionen med 15 sekunders till en minuts mellanrum medan mediet spelas upp.",
"MessageReportBugsAndContribute": "Rapportera fel, föreslå funktioner och bidra på",
"MessageSeriesAlreadyDownloaded": "Du har redan hämtat alla böcker i serien.",
@@ -357,6 +360,10 @@
"MessageSocketConnectedOverUnmeteredCellular": "Socketanslutning via mobilnät utan datagräns",
"MessageSocketConnectedOverUnmeteredWifi": "Socketanslutning via Wi-Fi utan datagräns",
"MessageSocketNotConnected": "Socketanslutning saknas",
"MessageStorageAccessDenied": "Åtkomst nekad",
"MessageStoragePermissionDenied": "Behörighet nekad",
"MessageStorageWriteAccessRequired": "Du har inte skrivåtkomst till denna mapp. Vill du bevilja åtkomst?",
"MessageWaitingForAvailableStorage": "Väntar på tillgängligt lagringsutrymme",
"NoteRSSFeedPodcastAppsHttps": "VARNING: De flesta poddappar kräver att RSS-flödets URL använder HTTPS",
"NoteRSSFeedPodcastAppsPubDate": "VARNING: Ett eller flera avsnitt saknar publiceringsdatum. Vissa poddappar kräver ett sådant datum.",
"ToastBookmarkCreateFailed": "Det gick inte att skapa bokmärket",