Merge branch 'develop'

This commit is contained in:
Thibault Deckers 2025-04-16 23:37:28 +02:00
commit b9a66a1949
126 changed files with 3433 additions and 422 deletions

@ -1 +1 @@
Subproject commit c23637390482d4cf9598c3ce3f2be31aa7332daf
Subproject commit ea121f8859e4b13e47a8f845e4586164519588bc

View file

@ -59,7 +59,7 @@ jobs:
# Building relies on the Android Gradle plugin,
# which requires a modern Java version (not the default one).
- name: Set up JDK for Android Gradle plugin
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
distribution: 'temurin'
java-version: '21'
@ -69,7 +69,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13
uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
@ -83,6 +83,6 @@ jobs:
./flutterw build apk --profile -t lib/main_play.dart --flavor play
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13
uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15
with:
category: "/language:${{matrix.language}}"

View file

@ -25,7 +25,7 @@ jobs:
# Building relies on the Android Gradle plugin,
# which requires a modern Java version (not the default one).
- name: Set up JDK for Android Gradle plugin
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
distribution: 'temurin'
java-version: '21'

View file

@ -71,6 +71,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13
uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15
with:
sarif_file: results.sarif

View file

@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased]
## <a id="v1.12.10"></a>[v1.12.10] - 2025-04-16
### Added
- Search: format filters
- Albums: sort by path
### Changed
- upgraded Flutter to stable v3.29.3
### Fixed
- region decoding failing to access decoder pool
## <a id="v1.12.9"></a>[v1.12.9] - 2025-04-06
### Added

View file

@ -14,6 +14,7 @@ import androidx.work.ForegroundInfo
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import app.loup.streams_channel.StreamsChannel
import deckers.thibault.aves.channel.calls.Coresult.Companion.safeSuspend
import deckers.thibault.aves.channel.calls.DeviceHandler
import deckers.thibault.aves.channel.calls.GeocodingHandler
import deckers.thibault.aves.channel.calls.MediaFetchObjectHandler
@ -44,11 +45,12 @@ class AnalysisWorker(context: Context, parameters: WorkerParameters) : Coroutine
private var backgroundChannel: MethodChannel? = null
override suspend fun doWork(): Result {
Log.i(LOG_TAG, "Start analysis worker $id")
defaultScope.launch {
// prevent ANR triggered by slow operations in main thread
createNotificationChannel()
setForeground(createForegroundInfo())
}
}.join()
suspendCoroutine { cont ->
workCont = cont
onStart()
@ -68,7 +70,6 @@ class AnalysisWorker(context: Context, parameters: WorkerParameters) : Coroutine
}
private fun onStart() {
Log.i(LOG_TAG, "Start analysis worker $id")
runBlocking {
FlutterUtils.initFlutterEngine(applicationContext, SHARED_PREFERENCES_KEY, PREF_CALLBACK_HANDLE_KEY) {
flutterEngine = it
@ -132,12 +133,7 @@ class AnalysisWorker(context: Context, parameters: WorkerParameters) : Coroutine
result.success(null)
}
"updateNotification" -> {
val title = call.argument<String>("title")
val message = call.argument<String>("message")
setForegroundAsync(createForegroundInfo(title, message))
result.success(null)
}
"updateNotification" -> defaultScope.launch { safeSuspend(call, result, ::updateNotification) }
"stop" -> {
workCont?.resume(null)
@ -180,17 +176,22 @@ class AnalysisWorker(context: Context, parameters: WorkerParameters) : Coroutine
.setContentIntent(openAppIntent)
.addAction(stopAction)
.build()
return if (Build.VERSION.SDK_INT == 34) {
// from Android 14 (API 34), foreground service type is mandatory for long-running workers:
// https://developer.android.com/guide/background/persistent/how-to/long-running
ForegroundInfo(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
} else if (Build.VERSION.SDK_INT >= 35) {
ForegroundInfo(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING)
} else {
ForegroundInfo(NOTIFICATION_ID, notification)
// from Android 14 (API 34), foreground service type is mandatory for long-running workers:
// https://developer.android.com/guide/background/persistent/how-to/long-running
return when {
Build.VERSION.SDK_INT >= 35 -> ForegroundInfo(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING)
Build.VERSION.SDK_INT == 34 -> ForegroundInfo(NOTIFICATION_ID, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
else -> ForegroundInfo(NOTIFICATION_ID, notification)
}
}
private suspend fun updateNotification(call: MethodCall, result: MethodChannel.Result) {
val title = call.argument<String>("title")
val message = call.argument<String>("message")
setForeground(createForegroundInfo(title, message))
result.success(null)
}
companion object {
private val LOG_TAG = LogUtils.createTag<AnalysisWorker>()
private const val BACKGROUND_CHANNEL = "deckers.thibault/aves/analysis_service_background"

View file

@ -20,6 +20,8 @@ import deckers.thibault.aves.utils.MemoryUtils
import deckers.thibault.aves.utils.MimeTypes
import deckers.thibault.aves.utils.StorageUtils
import io.flutter.plugin.common.MethodChannel
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock
import kotlin.math.max
import kotlin.math.roundToInt
@ -60,7 +62,7 @@ class RegionFetcher internal constructor(
}
try {
val decoder = getOrCreateDecoder(uri, requestKey)
val decoder = getOrCreateDecoder(context, uri, requestKey)
if (decoder == null) {
result.error("fetch-read-null", "failed to open file for mimeType=$mimeType uri=$uri regionRect=$regionRect", null)
return
@ -143,26 +145,6 @@ class RegionFetcher internal constructor(
}
}
private fun getOrCreateDecoder(uri: Uri, requestKey: Pair<Uri, Int?>): BitmapRegionDecoder? {
var decoderRef = decoderPool.firstOrNull { it.requestKey == requestKey }
if (decoderRef == null) {
val newDecoder = StorageUtils.openInputStream(context, uri)?.use { input ->
BitmapRegionDecoderCompat.newInstance(input)
}
if (newDecoder == null) {
return null
}
decoderRef = DecoderRef(requestKey, newDecoder)
} else {
decoderPool.remove(decoderRef)
}
decoderPool.add(0, decoderRef)
while (decoderPool.size > DECODER_POOL_SIZE) {
decoderPool.removeAt(decoderPool.size - 1)
}
return decoderRef.decoder
}
private fun createTemporaryJpegExport(uri: Uri, mimeType: String, pageId: Int?): Uri {
Log.d(LOG_TAG, "create JPEG export for uri=$uri mimeType=$mimeType pageId=$pageId")
val target = Glide.with(context)
@ -195,5 +177,29 @@ class RegionFetcher internal constructor(
private const val DECODER_POOL_SIZE = 3
private val decoderPool = ArrayList<DecoderRef>()
private val exportUris = HashMap<Pair<Uri, Int?>, Uri>()
private val poolLock = ReentrantLock()
private fun getOrCreateDecoder(context: Context, uri: Uri, requestKey: Pair<Uri, Int?>): BitmapRegionDecoder? {
poolLock.withLock {
var decoderRef = decoderPool.firstOrNull { it.requestKey == requestKey }
if (decoderRef == null) {
val newDecoder = StorageUtils.openInputStream(context, uri)?.use { input ->
BitmapRegionDecoderCompat.newInstance(input)
}
if (newDecoder == null) {
return null
}
decoderRef = DecoderRef(requestKey, newDecoder)
} else {
decoderPool.remove(decoderRef)
}
decoderPool.add(0, decoderRef)
while (decoderPool.size > DECODER_POOL_SIZE) {
decoderPool.removeAt(decoderPool.size - 1)
}
return decoderRef.decoder
}
}
}
}

View file

@ -17,6 +17,8 @@ import deckers.thibault.aves.utils.BitmapUtils
import deckers.thibault.aves.utils.MemoryUtils
import deckers.thibault.aves.utils.StorageUtils
import io.flutter.plugin.common.MethodChannel
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock
import kotlin.math.ceil
class SvgRegionFetcher internal constructor(
@ -38,7 +40,7 @@ class SvgRegionFetcher internal constructor(
}
try {
val svg = getOrCreateDecoder(uri)
val svg = getOrCreateDecoder(context, uri)
if (svg == null) {
result.error("fetch-read-null", "failed to open file for uri=$uri regionRect=$regionRect", null)
return
@ -95,27 +97,6 @@ class SvgRegionFetcher internal constructor(
}
}
private fun getOrCreateDecoder(uri: Uri): SVG? {
var decoderRef = decoderPool.firstOrNull { it.uri == uri }
if (decoderRef == null) {
val newDecoder = StorageUtils.openInputStream(context, uri)?.use { input ->
SVG.getFromInputStream(SVGParserBufferedInputStream(input))
}
if (newDecoder == null) {
return null
}
newDecoder.normalizeSize()
decoderRef = DecoderRef(uri, newDecoder)
} else {
decoderPool.remove(decoderRef)
}
decoderPool.add(0, decoderRef)
while (decoderPool.size > DECODER_POOL_SIZE) {
decoderPool.removeAt(decoderPool.size - 1)
}
return decoderRef.decoder
}
private data class DecoderRef(
val uri: Uri,
val decoder: SVG,
@ -125,5 +106,30 @@ class SvgRegionFetcher internal constructor(
private val PREFERRED_CONFIG = Bitmap.Config.ARGB_8888
private const val DECODER_POOL_SIZE = 3
private val decoderPool = ArrayList<DecoderRef>()
private val poolLock = ReentrantLock()
private fun getOrCreateDecoder(context: Context, uri: Uri): SVG? {
poolLock.withLock {
var decoderRef = decoderPool.firstOrNull { it.uri == uri }
if (decoderRef == null) {
val newDecoder = StorageUtils.openInputStream(context, uri)?.use { input ->
SVG.getFromInputStream(SVGParserBufferedInputStream(input))
}
if (newDecoder == null) {
return null
}
newDecoder.normalizeSize()
decoderRef = DecoderRef(uri, newDecoder)
} else {
decoderPool.remove(decoderRef)
}
decoderPool.add(0, decoderRef)
while (decoderPool.size > DECODER_POOL_SIZE) {
decoderPool.removeAt(decoderPool.size - 1)
}
return decoderRef.decoder
}
}
}
}

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">אייבז</string>
<string name="app_name">Aves</string>
<string name="app_widget_label">מסגרת תמונה</string>
<string name="wallpaper">טפט</string>
<string name="search_shortcut_short_label">חיפוש</string>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">एभस</string>
</resources>

View file

@ -1,4 +0,0 @@
In v1.12.0:
- save your filtered collection as dynamic albums
- enjoy the app in Tamil, Bulgarian and Estonian
Full changelog available on GitHub

View file

@ -1,4 +0,0 @@
In v1.12.0:
- save your filtered collection as dynamic albums
- enjoy the app in Tamil, Bulgarian and Estonian
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.1:
- enjoy the app in Danish
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.1:
- enjoy the app in Danish
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.2:
- enjoy the app in Danish
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.2:
- enjoy the app in Danish
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.3:
- edit locations via GPX tracks
Full changelog available on GitHub

View file

@ -1,3 +0,0 @@
In v1.12.3:
- edit locations via GPX tracks
Full changelog available on GitHub

View file

@ -1,4 +0,0 @@
In v1.12.5:
- play more kinds of motion photos
- enjoy the app in Galician
Full changelog available on GitHub

View file

@ -1,4 +0,0 @@
In v1.12.5:
- play more kinds of motion photos
- enjoy the app in Galician
Full changelog available on GitHub

View file

@ -1,4 +1,4 @@
In v1.12.4:
In v1.12.10:
- play more kinds of motion photos
- enjoy the app in Galician
- enjoy the app in Galician and Kannada
Full changelog available on GitHub

View file

@ -1,4 +1,4 @@
In v1.12.4:
In v1.12.10:
- play more kinds of motion photos
- enjoy the app in Galician
- enjoy the app in Galician and Kannada
Full changelog available on GitHub

View file

@ -1,5 +1,5 @@
<i>Aves</i> can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like <b>multi-page TIFFs, SVGs, old AVIs and more</b>! It scans your media collection to identify <b>motion photos</b>, <b>panoramas</b> (aka photo spheres), <b>360° videos</b>, as well as <b>GeoTIFF</b> files.
<i>Aves</i> יכול להתמודד עם כל מיני תמונות וסרטונים, כולל קובצי JPEG ו-MP4 הטיפוסיים שלך, אבל גם דברים אקזוטיים יותר כמו <b>TIFF מרובי עמודים, SVGs, AVI ישנים ועוד</b>! הוא סורק את אוסף המדיה שלך כדי לזהות <b>תמונות תנועה</b>, <b>פנורמות</b> (הידוע גם בתמונות פנורמיות), <b>סרטוני 360°</b>, וכן קבצי <b>GeoTIFF</b>.
<b>Navigation and search</b> is an important part of <i>Aves</i>. The goal is for users to easily flow from albums to photos to tags to maps, etc.
<b>ניווט וחיפוש</b> הם חלק חשוב ב-<i>Aves</i>. המטרה היא שהמשתמשים יזרמו בקלות מאלבומים לתמונות לתגים למפות וכו'.
<i>Aves</i> integrates with Android (including Android TV) with features such as <b>widgets</b>, <b>app shortcuts</b>, <b>screen saver</b> and <b>global search</b> handling. It also works as a <b>media viewer and picker</b>.
<i>Aves</i> משתלב עם Android (כולל Android TV) עם תכונות כגון <b>ווידג'טים</b>, <b>קיצורי אפליקציות</b>, <b>שומר מסך</b> וטיפול ב<b>חיפוש גלובלי</b>. הוא פועל גם כ<b>מציג ובוחר מדיה</b>.

View file

@ -1 +1 @@
Gallery and metadata explorer
סייר גלריה ומטא נתונים

View file

@ -0,0 +1,5 @@
<i>Aves</i> can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like <b>multi-page TIFFs, SVGs, old AVIs and more</b>! It scans your media collection to identify <b>motion photos</b>, <b>panoramas</b> (aka photo spheres), <b>360° videos</b>, as well as <b>GeoTIFF</b> files.
<b>Navigation and search</b> is an important part of <i>Aves</i>. The goal is for users to easily flow from albums to photos to tags to maps, etc.
<i>Aves</i> integrates with Android (including Android TV) with features such as <b>widgets</b>, <b>app shortcuts</b>, <b>screen saver</b> and <b>global search</b> handling. It also works as a <b>media viewer and picker</b>.

View file

@ -0,0 +1 @@
Gallery and metadata explorer

View file

@ -1608,5 +1608,9 @@
"editEntryLocationDialogTimeShift": "التحول الزمني",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "الكل",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"sortByPath": "حسب المسار",
"@sortByPath": {},
"searchFormatSectionTitle": "التنسيقات",
"@searchFormatSectionTitle": {}
}

View file

@ -266,7 +266,7 @@
"@welcomeMessage": {},
"welcomeOptional": "Опционално",
"@welcomeOptional": {},
"itemCount": "{count, plural, =1{{count} обект} few{{count} обекта} other{{count} обекта}}",
"itemCount": "{count, plural, =1{{count} елемент} few{{count} елемента} other{{count} елемента}}",
"@itemCount": {
"placeholders": {
"count": {
@ -663,7 +663,7 @@
"@videoStartOverButtonLabel": {},
"videoResumeButtonLabel": "ПРОДЪЛЖИ",
"@videoResumeButtonLabel": {},
"setCoverDialogLatest": "Последен обект",
"setCoverDialogLatest": "Последен елемент",
"@setCoverDialogLatest": {},
"setCoverDialogCustom": "Персонален",
"@setCoverDialogCustom": {},
@ -725,7 +725,7 @@
"@exportEntryDialogWriteMetadata": {},
"renameEntryDialogLabel": "Ново име",
"@renameEntryDialogLabel": {},
"editEntryDialogCopyFromItem": "Копиране от друг обект",
"editEntryDialogCopyFromItem": "Копиране от друг елемент",
"@editEntryDialogCopyFromItem": {},
"editEntryDialogTargetFieldsHeader": "Полета за промяна",
"@editEntryDialogTargetFieldsHeader": {},
@ -1454,7 +1454,7 @@
"@settingsAllowErrorReporting": {},
"settingsEnableBin": "Използвайте кошчето",
"@settingsEnableBin": {},
"settingsEnableBinSubtitle": "Съхранявайте изтритите обекти за 30 дни",
"settingsEnableBinSubtitle": "Съхранявайте изтритите елементи за 30 дни",
"@settingsEnableBinSubtitle": {},
"settingsAllowMediaManagement": "Разрешаване на управление на медиите",
"@settingsAllowMediaManagement": {},

View file

@ -1414,5 +1414,9 @@
"editEntryLocationDialogTimeShift": "Zeitverschiebung",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "Alle",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Formate",
"@searchFormatSectionTitle": {},
"sortByPath": "Nach Pfad",
"@sortByPath": {}
}

View file

@ -758,6 +758,7 @@
"sortByAlbumFileName": "By album & file name",
"sortByRating": "By rating",
"sortByDuration": "By duration",
"sortByPath": "By path",
"sortOrderNewestFirst": "Newest first",
"sortOrderOldestFirst": "Oldest first",
@ -815,6 +816,7 @@
"searchCollectionFieldHint": "Search collection",
"searchRecentSectionTitle": "Recent",
"searchDateSectionTitle": "Date",
"searchFormatSectionTitle": "Formats",
"searchAlbumsSectionTitle": "Albums",
"searchCountriesSectionTitle": "Countries",
"searchStatesSectionTitle": "States",

View file

@ -1634,5 +1634,9 @@
"editEntryLocationDialogImportGpx": "Impordi GPX-fail",
"@editEntryLocationDialogImportGpx": {},
"removeEntryMetadataDialogAll": "Kõik",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"sortByPath": "Asukoha alusel",
"@sortByPath": {},
"searchFormatSectionTitle": "Vormingud",
"@searchFormatSectionTitle": {}
}

View file

@ -1416,5 +1416,9 @@
"editEntryLocationDialogImportGpx": "Importer un fichier GPX",
"@editEntryLocationDialogImportGpx": {},
"removeEntryMetadataDialogAll": "Tout",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"sortByPath": "par chemin",
"@sortByPath": {},
"searchFormatSectionTitle": "Formats",
"@searchFormatSectionTitle": {}
}

View file

@ -6,5 +6,143 @@
"welcomeOptional": "אופציונלי",
"@welcomeOptional": {},
"welcomeTermsToggle": "אני מסכימ/ה לתנאים",
"@welcomeTermsToggle": {}
"@welcomeTermsToggle": {},
"chipActionShowCollection": "הצג באוסף",
"@chipActionShowCollection": {},
"chipActionGoToAlbumPage": "הצג באלבום",
"@chipActionGoToAlbumPage": {},
"chipActionFilterIn": "סנן לבתוך",
"@chipActionFilterIn": {},
"chipActionFilterOut": "סנן החוצה",
"@chipActionFilterOut": {},
"chipActionPin": "הצמד למעלה",
"@chipActionPin": {},
"chipActionUnpin": "בטל הצמד למעלה",
"@chipActionUnpin": {},
"chipActionRename": "שנה שם",
"@chipActionRename": {},
"applyTooltip": "החל",
"@applyTooltip": {},
"changeTooltip": "שינוי",
"@changeTooltip": {},
"clearTooltip": "ניקוי",
"@clearTooltip": {},
"previousTooltip": "הקודם",
"@previousTooltip": {},
"nextTooltip": "הבא",
"@nextTooltip": {},
"resetTooltip": "אפס",
"@resetTooltip": {},
"saveTooltip": "שמור",
"@saveTooltip": {},
"pickTooltip": "בחר",
"@pickTooltip": {},
"chipActionGoToPlacePage": "הצג במקומות",
"@chipActionGoToPlacePage": {},
"chipActionGoToTagPage": "הצג בתגיות",
"@chipActionGoToTagPage": {},
"chipActionDecompose": "פיצול",
"@chipActionDecompose": {},
"chipActionHide": "הסתר",
"@chipActionHide": {},
"chipActionLock": "נעל",
"@chipActionLock": {},
"applyButtonLabel": "החל",
"@applyButtonLabel": {},
"nextButtonLabel": "הבא",
"@nextButtonLabel": {},
"showButtonLabel": "הצג",
"@showButtonLabel": {},
"hideButtonLabel": "הסתר",
"@hideButtonLabel": {},
"continueButtonLabel": "המשך",
"@continueButtonLabel": {},
"cancelTooltip": "ביטול",
"@cancelTooltip": {},
"columnCount": "{count, plural, =1{{count} עמודה} other{{count} עמודות}}",
"@columnCount": {
"placeholders": {
"count": {
"type": "int",
"format": "decimalPattern"
}
}
},
"itemCount": "{count, plural, =1{{count} פריט} other{{count} פריטים}}",
"@itemCount": {
"placeholders": {
"count": {
"type": "int",
"format": "decimalPattern"
}
}
},
"focalLength": "{length} mm",
"@focalLength": {
"placeholders": {
"length": {
"type": "String",
"example": "5.4"
}
}
},
"deleteButtonLabel": "מחק",
"@deleteButtonLabel": {},
"doubleBackExitMessage": "כדי לצאת הקש שוב על \"חזרה\".",
"@doubleBackExitMessage": {},
"doNotAskAgain": "אל תשאל שוב",
"@doNotAskAgain": {},
"sourceStateLocatingPlaces": "טוען מקומות",
"@sourceStateLocatingPlaces": {},
"chipActionRemove": "הסר",
"@chipActionRemove": {},
"timeSeconds": "{count, plural, =1{{count} שניה} other{{count} שניות}}",
"@timeSeconds": {
"placeholders": {
"count": {
"type": "int",
"format": "decimalPattern"
}
}
},
"timeMinutes": "{count, plural, =1{{count} דקה} other{{count} דקות}}",
"@timeMinutes": {
"placeholders": {
"count": {
"type": "int",
"format": "decimalPattern"
}
}
},
"timeDays": "{count, plural, =1{{count} יום} other{{count} ימים}}",
"@timeDays": {
"placeholders": {
"count": {
"type": "int",
"format": "decimalPattern"
}
}
},
"saveCopyButtonLabel": "שמור עותק",
"@saveCopyButtonLabel": {},
"chipActionGoToCountryPage": "הצג במדינות",
"@chipActionGoToCountryPage": {},
"chipActionDelete": "מחק",
"@chipActionDelete": {},
"hideTooltip": "הסתר",
"@hideTooltip": {},
"showTooltip": "הצג",
"@showTooltip": {},
"sourceStateLoading": "טוען",
"@sourceStateLoading": {},
"sourceStateCataloguing": "מקטלג",
"@sourceStateCataloguing": {},
"actionRemove": "הסרה",
"@actionRemove": {},
"sourceStateLocatingCountries": "טוען מדינות",
"@sourceStateLocatingCountries": {},
"stopTooltip": "עצור",
"@stopTooltip": {},
"chipActionGoToExplorerPage": "הצג בסייר",
"@chipActionGoToExplorerPage": {}
}

View file

@ -1608,5 +1608,9 @@
"editEntryLocationDialogTimeShift": "Tímahliðrun",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "Allt",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Snið",
"@searchFormatSectionTitle": {},
"sortByPath": "Eftir slóð",
"@sortByPath": {}
}

View file

@ -1416,5 +1416,9 @@
"editEntryLocationDialogImportGpx": "GPX 가져오기",
"@editEntryLocationDialogImportGpx": {},
"removeEntryMetadataDialogAll": "모두",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"sortByPath": "경로",
"@sortByPath": {},
"searchFormatSectionTitle": "형식",
"@searchFormatSectionTitle": {}
}

1
lib/l10n/app_ne.arb Normal file
View file

@ -0,0 +1 @@
{}

View file

@ -465,7 +465,7 @@
"@viewDialogGroupSectionTitle": {},
"viewDialogLayoutSectionTitle": "Layout",
"@viewDialogLayoutSectionTitle": {},
"viewDialogReverseSortOrder": "Draai sorteerrichting om",
"viewDialogReverseSortOrder": "Sortering omkeren",
"@viewDialogReverseSortOrder": {},
"tileLayoutMosaic": "Mozaïek",
"@tileLayoutMosaic": {},
@ -637,9 +637,9 @@
"@sortOrderNewestFirst": {},
"sortOrderOldestFirst": "Oudste eerst",
"@sortOrderOldestFirst": {},
"sortOrderAtoZ": "A tot Z",
"sortOrderAtoZ": "A - Z",
"@sortOrderAtoZ": {},
"sortOrderZtoA": "Z tot A",
"sortOrderZtoA": "Z - A",
"@sortOrderZtoA": {},
"sortOrderHighestFirst": "Hoogste eerst",
"@sortOrderHighestFirst": {},
@ -1417,5 +1417,9 @@
"editEntryLocationDialogTimeShift": "Verschuiving van de tijd",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "Alle",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Formaten",
"@searchFormatSectionTitle": {},
"sortByPath": "Op pad",
"@sortByPath": {}
}

View file

@ -1608,5 +1608,9 @@
"editEntryLocationDialogTimeShift": "Przesunięcie czasowe",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "Wszystko",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Formaty",
"@searchFormatSectionTitle": {},
"sortByPath": "Według ścieżki",
"@sortByPath": {}
}

View file

@ -1608,5 +1608,9 @@
"mapStyleOsmLiberty": "OSM Liberty",
"@mapStyleOsmLiberty": {},
"removeEntryMetadataDialogAll": "Toate",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"sortByPath": "După cale",
"@sortByPath": {},
"searchFormatSectionTitle": "Formate",
"@searchFormatSectionTitle": {}
}

View file

@ -1416,5 +1416,7 @@
"coordinateFormatDdm": "DDM",
"@coordinateFormatDdm": {},
"removeEntryMetadataDialogAll": "Все",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Форматы",
"@searchFormatSectionTitle": {}
}

View file

@ -1617,5 +1617,11 @@
"removeEntryMetadataDialogAll": "Allt",
"@removeEntryMetadataDialogAll": {},
"coordinateFormatDdm": "DDM",
"@coordinateFormatDdm": {}
"@coordinateFormatDdm": {},
"editEntryLocationDialogTimeShift": "Tidsskifte",
"@editEntryLocationDialogTimeShift": {},
"sortByPath": "Efter sökväg",
"@sortByPath": {},
"searchFormatSectionTitle": "Format",
"@searchFormatSectionTitle": {}
}

View file

@ -1394,5 +1394,25 @@
"newAlbumDialogAlbumAlreadyExistsHelper": "Böyle bir albüm zaten var",
"@newAlbumDialogAlbumAlreadyExistsHelper": {},
"videoActionShowPreviousFrame": "Önceki kareyi göster",
"@videoActionShowPreviousFrame": {}
"@videoActionShowPreviousFrame": {},
"editEntryLocationDialogImportGpx": "GPX'i içe aktar",
"@editEntryLocationDialogImportGpx": {},
"chipActionDecompose": "Böl",
"@chipActionDecompose": {},
"albumTierDynamic": "Dinamik",
"@albumTierDynamic": {},
"newDynamicAlbumDialogTitle": "Yeni dinamik albüm",
"@newDynamicAlbumDialogTitle": {},
"appExportDynamicAlbums": "Dinamik albümler",
"@appExportDynamicAlbums": {},
"chipActionRemove": "Kaldır",
"@chipActionRemove": {},
"dynamicAlbumAlreadyExists": "Dinamik albüm zaten var",
"@dynamicAlbumAlreadyExists": {},
"removeEntryMetadataDialogAll": "Tümü",
"@removeEntryMetadataDialogAll": {},
"collectionActionAddDynamicAlbum": "Dinamik albüm ekle",
"@collectionActionAddDynamicAlbum": {},
"searchFormatSectionTitle": "Biçimler",
"@searchFormatSectionTitle": {}
}

View file

@ -1608,5 +1608,9 @@
"editEntryLocationDialogTimeShift": "Зсув часу",
"@editEntryLocationDialogTimeShift": {},
"removeEntryMetadataDialogAll": "Все",
"@removeEntryMetadataDialogAll": {}
"@removeEntryMetadataDialogAll": {},
"searchFormatSectionTitle": "Формати",
"@searchFormatSectionTitle": {},
"sortByPath": "Шляхом",
"@sortByPath": {}
}

View file

@ -1416,5 +1416,9 @@
"removeEntryMetadataDialogAll": "全部",
"@removeEntryMetadataDialogAll": {},
"editEntryLocationDialogTimeShift": "时间时移",
"@editEntryLocationDialogTimeShift": {}
"@editEntryLocationDialogTimeShift": {},
"searchFormatSectionTitle": "格式",
"@searchFormatSectionTitle": {},
"sortByPath": "按路径",
"@sortByPath": {}
}

View file

@ -37,6 +37,7 @@ import 'app_localizations_lt.dart';
import 'app_localizations_ml.dart';
import 'app_localizations_my.dart';
import 'app_localizations_nb.dart';
import 'app_localizations_ne.dart';
import 'app_localizations_nl.dart';
import 'app_localizations_nn.dart';
import 'app_localizations_or.dart';
@ -172,6 +173,7 @@ abstract class AppLocalizations {
Locale('ml'),
Locale('my'),
Locale('nb'),
Locale('ne'),
Locale('nl'),
Locale('nn'),
Locale('or'),
@ -2713,6 +2715,12 @@ abstract class AppLocalizations {
/// **'By duration'**
String get sortByDuration;
/// No description provided for @sortByPath.
///
/// In en, this message translates to:
/// **'By path'**
String get sortByPath;
/// No description provided for @sortOrderNewestFirst.
///
/// In en, this message translates to:
@ -2971,6 +2979,12 @@ abstract class AppLocalizations {
/// **'Date'**
String get searchDateSectionTitle;
/// No description provided for @searchFormatSectionTitle.
///
/// In en, this message translates to:
/// **'Formats'**
String get searchFormatSectionTitle;
/// No description provided for @searchAlbumsSectionTitle.
///
/// In en, this message translates to:
@ -4439,7 +4453,7 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations>
}
@override
bool isSupported(Locale locale) => <String>['ar', 'az', 'be', 'bg', 'bn', 'ca', 'ckb', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fa', 'fi', 'fr', 'gl', 'he', 'hi', 'hu', 'id', 'is', 'it', 'ja', 'kn', 'ko', 'lt', 'ml', 'my', 'nb', 'nl', 'nn', 'or', 'pl', 'pt', 'ro', 'ru', 'sat', 'sk', 'sl', 'sr', 'sv', 'ta', 'th', 'tr', 'uk', 'vi', 'zh'].contains(locale.languageCode);
bool isSupported(Locale locale) => <String>['ar', 'az', 'be', 'bg', 'bn', 'ca', 'ckb', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fa', 'fi', 'fr', 'gl', 'he', 'hi', 'hu', 'id', 'is', 'it', 'ja', 'kn', 'ko', 'lt', 'ml', 'my', 'nb', 'ne', 'nl', 'nn', 'or', 'pl', 'pt', 'ro', 'ru', 'sat', 'sk', 'sl', 'sr', 'sv', 'ta', 'th', 'tr', 'uk', 'vi', 'zh'].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
@ -4497,6 +4511,7 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
case 'ml': return AppLocalizationsMl();
case 'my': return AppLocalizationsMy();
case 'nb': return AppLocalizationsNb();
case 'ne': return AppLocalizationsNe();
case 'nl': return AppLocalizationsNl();
case 'nn': return AppLocalizationsNn();
case 'or': return AppLocalizationsOr();

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get sortByDuration => 'حسب المدة';
@override
String get sortByPath => 'حسب المسار';
@override
String get sortOrderNewestFirst => 'الأحدث أولاً';
@ -1580,6 +1583,9 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'تاريخ';
@override
String get searchFormatSectionTitle => 'التنسيقات';
@override
String get searchAlbumsSectionTitle => 'الألبومات';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsAz extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsAz extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1469,6 +1469,9 @@ class AppLocalizationsBe extends AppLocalizations {
@override
String get sortByDuration => 'Па працягласці';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Спачатку самае новае';
@ -1598,6 +1601,9 @@ class AppLocalizationsBe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Альбомы';

View file

@ -28,9 +28,9 @@ class AppLocalizationsBg extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString обекта',
few: '$countString обекта',
one: '$countString обект',
other: '$countString елемента',
few: '$countString елемента',
one: '$countString елемент',
);
return '$_temp0';
}
@ -814,7 +814,7 @@ class AppLocalizationsBg extends AppLocalizations {
String get videoResumeButtonLabel => 'ПРОДЪЛЖИ';
@override
String get setCoverDialogLatest => 'Последен обект';
String get setCoverDialogLatest => 'Последен елемент';
@override
String get setCoverDialogAuto => 'Авто';
@ -962,7 +962,7 @@ class AppLocalizationsBg extends AppLocalizations {
String get renameEntryDialogLabel => 'Ново име';
@override
String get editEntryDialogCopyFromItem => 'Копиране от друг обект';
String get editEntryDialogCopyFromItem => 'Копиране от друг елемент';
@override
String get editEntryDialogTargetFieldsHeader => 'Полета за промяна';
@ -1503,6 +1503,9 @@ class AppLocalizationsBg extends AppLocalizations {
@override
String get sortByDuration => 'По продължителност';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Първо най-новите';
@ -1632,6 +1635,9 @@ class AppLocalizationsBg extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Албуми';
@ -2050,7 +2056,7 @@ class AppLocalizationsBg extends AppLocalizations {
String get settingsEnableBin => 'Използвайте кошчето';
@override
String get settingsEnableBinSubtitle => 'Съхранявайте изтритите обекти за 30 дни';
String get settingsEnableBinSubtitle => 'Съхранявайте изтритите елементи за 30 дни';
@override
String get settingsDisablingBinWarningDialogMessage => 'Елементите в кошчето ще бъдат изтрити завинаги.';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsBn extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsBn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get sortByDuration => 'Per durada';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Primer el més nou';
@ -1580,6 +1583,9 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Àlbums';

View file

@ -1488,6 +1488,9 @@ class AppLocalizationsCkb extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1617,6 +1620,9 @@ class AppLocalizationsCkb extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1464,6 +1464,9 @@ class AppLocalizationsCs extends AppLocalizations {
@override
String get sortByDuration => 'Podle trvání';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Od nejnovějšího';
@ -1593,6 +1596,9 @@ class AppLocalizationsCs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Alba';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsDa extends AppLocalizations {
@override
String get sortByDuration => 'Efter varighed';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Nyeste først';
@ -1628,6 +1631,9 @@ class AppLocalizationsDa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get sortByDuration => 'Nach Dauer';
@override
String get sortByPath => 'Nach Pfad';
@override
String get sortOrderNewestFirst => 'Neueste zuerst';
@ -1625,6 +1628,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formate';
@override
String get searchAlbumsSectionTitle => 'Alben';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsEl extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Τα πιο πρόσφατα πρώτα';
@ -1625,6 +1628,9 @@ class AppLocalizationsEl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Ημερομηνια';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Άλμπουμ';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get sortByDuration => 'Por duración';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'El más nuevo primero';
@ -1625,6 +1628,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Fecha';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbumes';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsEt extends AppLocalizations {
@override
String get sortByDuration => 'Kestuse järgi';
@override
String get sortByPath => 'Asukoha alusel';
@override
String get sortOrderNewestFirst => 'Esmalt uuemad';
@ -1628,6 +1631,9 @@ class AppLocalizationsEt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Kuupäevad';
@override
String get searchFormatSectionTitle => 'Vormingud';
@override
String get searchAlbumsSectionTitle => 'Albumid';

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get sortByDuration => 'Iraupenaren arabera';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Berriena lehenengo';
@ -1580,6 +1583,9 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumak';

View file

@ -1448,6 +1448,9 @@ class AppLocalizationsFa extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'اول جدیدترین';
@ -1577,6 +1580,9 @@ class AppLocalizationsFa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'تاریخ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'آلبوم ها';

View file

@ -1493,6 +1493,9 @@ class AppLocalizationsFi extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1622,6 +1625,9 @@ class AppLocalizationsFi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get sortByDuration => 'par durée';
@override
String get sortByPath => 'par chemin';
@override
String get sortOrderNewestFirst => 'Plus récents dabord';
@ -1628,6 +1631,9 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsGl extends AppLocalizations {
@override
String get sortByDuration => 'Por duración';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Novos primeiro';
@ -1625,6 +1628,9 @@ class AppLocalizationsGl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbums';

View file

@ -28,8 +28,8 @@ class AppLocalizationsHe extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString items',
one: '$countString item',
other: '$countString פריטים',
one: '$countString פריט',
);
return '$_temp0';
}
@ -42,8 +42,8 @@ class AppLocalizationsHe extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString columns',
one: '$countString column',
other: '$countString עמודות',
one: '$countString עמודה',
);
return '$_temp0';
}
@ -56,8 +56,8 @@ class AppLocalizationsHe extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString seconds',
one: '$countString second',
other: '$countString שניות',
one: '$countString שניה',
);
return '$_temp0';
}
@ -70,8 +70,8 @@ class AppLocalizationsHe extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString minutes',
one: '$countString minute',
other: '$countString דקות',
one: '$countString דקה',
);
return '$_temp0';
}
@ -84,8 +84,8 @@ class AppLocalizationsHe extends AppLocalizations {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$countString days',
one: '$countString day',
other: '$countString ימים',
one: '$countString יום',
);
return '$_temp0';
}
@ -96,130 +96,130 @@ class AppLocalizationsHe extends AppLocalizations {
}
@override
String get applyButtonLabel => 'APPLY';
String get applyButtonLabel => 'החל';
@override
String get deleteButtonLabel => 'DELETE';
String get deleteButtonLabel => 'מחק';
@override
String get nextButtonLabel => 'NEXT';
String get nextButtonLabel => 'הבא';
@override
String get showButtonLabel => 'SHOW';
String get showButtonLabel => 'הצג';
@override
String get hideButtonLabel => 'HIDE';
String get hideButtonLabel => 'הסתר';
@override
String get continueButtonLabel => 'CONTINUE';
String get continueButtonLabel => 'המשך';
@override
String get saveCopyButtonLabel => 'SAVE COPY';
String get saveCopyButtonLabel => 'שמור עותק';
@override
String get applyTooltip => 'Apply';
String get applyTooltip => 'החל';
@override
String get cancelTooltip => 'Cancel';
String get cancelTooltip => 'ביטול';
@override
String get changeTooltip => 'Change';
String get changeTooltip => 'שינוי';
@override
String get clearTooltip => 'Clear';
String get clearTooltip => 'ניקוי';
@override
String get previousTooltip => 'Previous';
String get previousTooltip => 'הקודם';
@override
String get nextTooltip => 'Next';
String get nextTooltip => 'הבא';
@override
String get showTooltip => 'Show';
String get showTooltip => 'הצג';
@override
String get hideTooltip => 'Hide';
String get hideTooltip => 'הסתר';
@override
String get actionRemove => 'Remove';
String get actionRemove => 'הסרה';
@override
String get resetTooltip => 'Reset';
String get resetTooltip => 'אפס';
@override
String get saveTooltip => 'Save';
String get saveTooltip => 'שמור';
@override
String get stopTooltip => 'Stop';
String get stopTooltip => 'עצור';
@override
String get pickTooltip => 'Pick';
String get pickTooltip => 'בחר';
@override
String get doubleBackExitMessage => 'Tap “back” again to exit.';
String get doubleBackExitMessage => 'כדי לצאת הקש שוב על \"חזרה\".';
@override
String get doNotAskAgain => 'Do not ask again';
String get doNotAskAgain => 'אל תשאל שוב';
@override
String get sourceStateLoading => 'Loading';
String get sourceStateLoading => 'טוען';
@override
String get sourceStateCataloguing => 'Cataloguing';
String get sourceStateCataloguing => 'מקטלג';
@override
String get sourceStateLocatingCountries => 'Locating countries';
String get sourceStateLocatingCountries => 'טוען מדינות';
@override
String get sourceStateLocatingPlaces => 'Locating places';
String get sourceStateLocatingPlaces => 'טוען מקומות';
@override
String get chipActionDelete => 'Delete';
String get chipActionDelete => 'מחק';
@override
String get chipActionRemove => 'Remove';
String get chipActionRemove => 'הסר';
@override
String get chipActionShowCollection => 'Show in Collection';
String get chipActionShowCollection => 'הצג באוסף';
@override
String get chipActionGoToAlbumPage => 'Show in Albums';
String get chipActionGoToAlbumPage => 'הצג באלבום';
@override
String get chipActionGoToCountryPage => 'Show in Countries';
String get chipActionGoToCountryPage => 'הצג במדינות';
@override
String get chipActionGoToPlacePage => 'Show in Places';
String get chipActionGoToPlacePage => 'הצג במקומות';
@override
String get chipActionGoToTagPage => 'Show in Tags';
String get chipActionGoToTagPage => 'הצג בתגיות';
@override
String get chipActionGoToExplorerPage => 'Show in Explorer';
String get chipActionGoToExplorerPage => 'הצג בסייר';
@override
String get chipActionDecompose => 'Split';
String get chipActionDecompose => 'פיצול';
@override
String get chipActionFilterOut => 'Filter out';
String get chipActionFilterOut => 'סנן החוצה';
@override
String get chipActionFilterIn => 'Filter in';
String get chipActionFilterIn => 'סנן לבתוך';
@override
String get chipActionHide => 'Hide';
String get chipActionHide => 'הסתר';
@override
String get chipActionLock => 'Lock';
String get chipActionLock => 'נעל';
@override
String get chipActionPin => 'Pin to top';
String get chipActionPin => 'הצמד למעלה';
@override
String get chipActionUnpin => 'Unpin from top';
String get chipActionUnpin => 'בטל הצמד למעלה';
@override
String get chipActionRename => 'Rename';
String get chipActionRename => 'שנה שם';
@override
String get chipActionSetCover => 'Set cover';
@ -1499,6 +1499,9 @@ class AppLocalizationsHe extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsHe extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1490,6 +1490,9 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get sortByDuration => 'समय के अनुसार';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'नए पहले';
@ -1619,6 +1622,9 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'दिनांक';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'एल्बम';

View file

@ -1446,6 +1446,9 @@ class AppLocalizationsHu extends AppLocalizations {
@override
String get sortByDuration => 'Hossz szerint';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Legújabb legelöl';
@ -1575,6 +1578,9 @@ class AppLocalizationsHu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dátum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumok';

View file

@ -1480,6 +1480,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get sortByDuration => 'Berdasarkan durasi';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Terbaru pertama';
@ -1609,6 +1612,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Tanggal';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsIs extends AppLocalizations {
@override
String get sortByDuration => 'Eftir tímalengd';
@override
String get sortByPath => 'Eftir slóð';
@override
String get sortOrderNewestFirst => 'Nýjast fyrst';
@ -1580,6 +1583,9 @@ class AppLocalizationsIs extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dagsetning';
@override
String get searchFormatSectionTitle => 'Snið';
@override
String get searchAlbumsSectionTitle => 'Albúm';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get sortByDuration => 'Per durata';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Dal più nuovo';
@ -1625,6 +1628,9 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1480,6 +1480,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get sortByDuration => '期間順';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => '新しいものから表示';
@ -1609,6 +1612,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get searchDateSectionTitle => '日付';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'アルバム';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsKn extends AppLocalizations {
@override
String get sortByDuration => 'ಅವಧಿಯಂತೆ';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'ಹೊಸದು ಮೊದಲು';
@ -1628,6 +1631,9 @@ class AppLocalizationsKn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ದಿನಾಂಕ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'ಆಲ್ಬಮ್ ಗಳು';

View file

@ -1478,6 +1478,9 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get sortByDuration => '길이';
@override
String get sortByPath => '경로';
@override
String get sortOrderNewestFirst => '최근 날짜순';
@ -1607,6 +1610,9 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get searchDateSectionTitle => '날짜';
@override
String get searchFormatSectionTitle => '형식';
@override
String get searchAlbumsSectionTitle => '앨범';

View file

@ -1458,6 +1458,9 @@ class AppLocalizationsLt extends AppLocalizations {
@override
String get sortByDuration => 'Pagal trukmę';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Naujausi viršuje';
@ -1587,6 +1590,9 @@ class AppLocalizationsLt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datos';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumai';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsMl extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsMl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1460,6 +1460,9 @@ class AppLocalizationsMy extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'အသစ်ဆုံးက ထိပ်ဆုံး';
@ -1589,6 +1592,9 @@ class AppLocalizationsMy extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ရက်စွဲ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'အယ်လ်ဘမ်များ';

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsNb extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Nyeste først';
@ -1580,6 +1583,9 @@ class AppLocalizationsNb extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

File diff suppressed because it is too large Load diff

View file

@ -1092,7 +1092,7 @@ class AppLocalizationsNl extends AppLocalizations {
String get viewDialogLayoutSectionTitle => 'Layout';
@override
String get viewDialogReverseSortOrder => 'Draai sorteerrichting om';
String get viewDialogReverseSortOrder => 'Sortering omkeren';
@override
String get tileLayoutMosaic => 'Mozaïek';
@ -1498,6 +1498,9 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get sortByDuration => 'Op lengte';
@override
String get sortByPath => 'Op pad';
@override
String get sortOrderNewestFirst => 'Nieuwste eerst';
@ -1505,10 +1508,10 @@ class AppLocalizationsNl extends AppLocalizations {
String get sortOrderOldestFirst => 'Oudste eerst';
@override
String get sortOrderAtoZ => 'A tot Z';
String get sortOrderAtoZ => 'A - Z';
@override
String get sortOrderZtoA => 'Z tot A';
String get sortOrderZtoA => 'Z - A';
@override
String get sortOrderHighestFirst => 'Hoogste eerst';
@ -1627,6 +1630,9 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Formaten';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1440,6 +1440,9 @@ class AppLocalizationsNn extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Nyaste først';
@ -1569,6 +1572,9 @@ class AppLocalizationsNn extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dato';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsOr extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsOr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'ତାରିଖ';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1461,6 +1461,9 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get sortByDuration => 'Według czasu trwania';
@override
String get sortByPath => 'Według ścieżki';
@override
String get sortOrderNewestFirst => 'Najpierw najnowsze';
@ -1590,6 +1593,9 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formaty';
@override
String get searchAlbumsSectionTitle => 'Albumy';

View file

@ -1496,6 +1496,9 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get sortByDuration => 'Por duração';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Os mais novos primeiro';
@ -1625,6 +1628,9 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Data';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Álbuns';

View file

@ -1451,6 +1451,9 @@ class AppLocalizationsRo extends AppLocalizations {
@override
String get sortByDuration => 'După durată';
@override
String get sortByPath => 'După cale';
@override
String get sortOrderNewestFirst => 'Cele mai noi mai întâi';
@ -1580,6 +1583,9 @@ class AppLocalizationsRo extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dată';
@override
String get searchFormatSectionTitle => 'Formate';
@override
String get searchAlbumsSectionTitle => 'Albume';

View file

@ -1513,6 +1513,9 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get sortByDuration => 'По продолжительности';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Сначала новые';
@ -1642,6 +1645,9 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Форматы';
@override
String get searchAlbumsSectionTitle => 'Альбомы';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsSat extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsSat extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1456,6 +1456,9 @@ class AppLocalizationsSk extends AppLocalizations {
@override
String get sortByDuration => 'Trvanie';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Najskôr najnovšie';
@ -1585,6 +1588,9 @@ class AppLocalizationsSk extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Dátum';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albumy';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsSl extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsSl extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsSr extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1628,6 +1631,9 @@ class AppLocalizationsSr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -1002,7 +1002,7 @@ class AppLocalizationsSv extends AppLocalizations {
String get editEntryLocationDialogLongitude => 'Longitud';
@override
String get editEntryLocationDialogTimeShift => 'Time shift';
String get editEntryLocationDialogTimeShift => 'Tidsskifte';
@override
String get locationPickerUseThisLocationButton => 'Använd den här platsen';
@ -1479,6 +1479,9 @@ class AppLocalizationsSv extends AppLocalizations {
@override
String get sortByDuration => 'Efter spellängd';
@override
String get sortByPath => 'Efter sökväg';
@override
String get sortOrderNewestFirst => 'Nyast först';
@ -1608,6 +1611,9 @@ class AppLocalizationsSv extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Datum';
@override
String get searchFormatSectionTitle => 'Format';
@override
String get searchAlbumsSectionTitle => 'Album';

View file

@ -1499,6 +1499,9 @@ class AppLocalizationsTa extends AppLocalizations {
@override
String get sortByDuration => 'காலப்படி';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'முதலில் புதியது';
@ -1628,6 +1631,9 @@ class AppLocalizationsTa extends AppLocalizations {
@override
String get searchDateSectionTitle => 'திகதி';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'தொகுப்புகள்';

View file

@ -1487,6 +1487,9 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get sortByDuration => 'By duration';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Newest first';
@ -1616,6 +1619,9 @@ class AppLocalizationsTh extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Date';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Albums';

View file

@ -169,7 +169,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get chipActionDelete => 'Sil';
@override
String get chipActionRemove => 'Remove';
String get chipActionRemove => 'Kaldır';
@override
String get chipActionShowCollection => 'Koleksiyonda göster';
@ -190,7 +190,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get chipActionGoToExplorerPage => 'Gezginde göster';
@override
String get chipActionDecompose => 'Split';
String get chipActionDecompose => 'Böl';
@override
String get chipActionFilterOut => 'Dışarıda bırak';
@ -496,7 +496,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get albumTierVaults => 'Kilitli albümler';
@override
String get albumTierDynamic => 'Dynamic';
String get albumTierDynamic => 'Dinamik';
@override
String get albumTierRegular => 'Diğer';
@ -829,10 +829,10 @@ class AppLocalizationsTr extends AppLocalizations {
String get newAlbumDialogStorageLabel => 'Depolama:';
@override
String get newDynamicAlbumDialogTitle => 'New Dynamic Album';
String get newDynamicAlbumDialogTitle => 'Yeni dinamik albüm';
@override
String get dynamicAlbumAlreadyExists => 'Dynamic album already exists';
String get dynamicAlbumAlreadyExists => 'Dinamik albüm zaten var';
@override
String get newVaultWarningDialogMessage => 'Kilitli albümlere yalnızca bu uygulama erişebilir, başka herhangi bir uygulama erişemez.\n\nBu uygulamayı kaldırır veya verilerini silerseniz kilitli albümlerdeki bütün ögeleri kaybedersiniz.';
@ -992,7 +992,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get editEntryLocationDialogChooseOnMap => 'Harita üzerinde seç';
@override
String get editEntryLocationDialogImportGpx => 'Import GPX';
String get editEntryLocationDialogImportGpx => 'GPX\'i içe aktar';
@override
String get editEntryLocationDialogLatitude => 'Enlem';
@ -1013,7 +1013,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get removeEntryMetadataDialogTitle => 'Üst Veri Kaldırma';
@override
String get removeEntryMetadataDialogAll => 'All';
String get removeEntryMetadataDialogAll => 'Tümü';
@override
String get removeEntryMetadataDialogMore => 'Daha fazla';
@ -1217,7 +1217,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get collectionActionHideTitleSearch => 'Başlık filtresini gizle';
@override
String get collectionActionAddDynamicAlbum => 'Add dynamic album';
String get collectionActionAddDynamicAlbum => 'Dinamik albüm ekle';
@override
String get collectionActionAddShortcut => 'Kısayol ekle';
@ -1491,6 +1491,9 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get sortByDuration => 'Süreye göre';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Önce en yeni';
@ -1620,6 +1623,9 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Tarih';
@override
String get searchFormatSectionTitle => 'Biçimler';
@override
String get searchAlbumsSectionTitle => 'Albümler';
@ -1681,7 +1687,7 @@ class AppLocalizationsTr extends AppLocalizations {
String get appExportCovers => 'Kapaklar';
@override
String get appExportDynamicAlbums => 'Dynamic albums';
String get appExportDynamicAlbums => 'Dinamik albümler';
@override
String get appExportFavourites => 'Favoriler';

View file

@ -1470,6 +1470,9 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get sortByDuration => 'За тривалістю';
@override
String get sortByPath => 'Шляхом';
@override
String get sortOrderNewestFirst => 'Найновіші перші';
@ -1599,6 +1602,9 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Дата';
@override
String get searchFormatSectionTitle => 'Формати';
@override
String get searchAlbumsSectionTitle => 'Альбоми';

View file

@ -1446,6 +1446,9 @@ class AppLocalizationsVi extends AppLocalizations {
@override
String get sortByDuration => 'Theo thời lượng';
@override
String get sortByPath => 'By path';
@override
String get sortOrderNewestFirst => 'Mới nhất trước';
@ -1575,6 +1578,9 @@ class AppLocalizationsVi extends AppLocalizations {
@override
String get searchDateSectionTitle => 'Thời gian';
@override
String get searchFormatSectionTitle => 'Formats';
@override
String get searchAlbumsSectionTitle => 'Bộ sưu tập';

View file

@ -1480,6 +1480,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get sortByDuration => '按时长';
@override
String get sortByPath => '按路径';
@override
String get sortOrderNewestFirst => '降序';
@ -1609,6 +1612,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get searchDateSectionTitle => '日期';
@override
String get searchFormatSectionTitle => '格式';
@override
String get searchAlbumsSectionTitle => '相册';

View file

@ -132,6 +132,9 @@ class Contributors {
Contributor('hanyang cheng', 'cinxiafortis@tutanota.de'),
Contributor('Chethan', 'chethan@users.noreply.hosted.weblate.org'),
Contributor('Prasannakumar T Bhat', 'pbhat99@gmail.com'),
Contributor('Bora Atıcı', 'boratici.acc@gmail.com'),
Contributor('Ettore Atalan', 'atalanttore@googlemail.com'),
Contributor('VertekPlus', 'vertekplus@users.noreply.hosted.weblate.org'),
// Contributor('Femini', 'nizamismidov4@gmail.com'), // Azerbaijani
// Contributor('Alvi Khan', 'aveenalvi@gmail.com'), // Bengali
// Contributor('Htet Oo Hlaing', 'htetoh2006@outlook.com'), // Burmese
@ -140,6 +143,7 @@ class Contributors {
// Contributor('Olli', 'ollinen@ollit.dev'), // Finnish
// Contributor('Ricky Tigg', 'ricky.tigg@gmail.com'), // Finnish
// Contributor('Idj', 'joneltmp+goahn@gmail.com'), // Hebrew
// Contributor('elid', 'shopisrael12@gmail.com'), // Hebrew
// Contributor('Rohit Burman', 'rohitburman31p@rediffmail.com'), // Hindi
// Contributor('AJ07', 'ajaykumarmeena676@gmail.com'), // Hindi
// Contributor('Sartaj', 'ssaarrttaajj111@gmail.com'), // Hindi
@ -147,6 +151,7 @@ class Contributors {
// Contributor('GoRaN', 'gorangharib.909@gmail.com'), // Kurdish (Central)
// Contributor('Rasti K5', 'rasti.khdhr@gmail.com'), // Kurdish (Central)
// Contributor('Raman', 'xysed@tutanota.com'), // Malayalam
// Contributor('Over Barrow', 'rawixo6748@insfou.com'), // Nepali
// Contributor('Subham Jena', 'subhamjena8465@gmail.com'), // Odia
// Contributor('Prasanta-Hembram', 'Prasantahembram720@gmail.com'), // Santali
// Contributor('Enenra', 'nnra2210@gmail.com'), // Serbian

View file

@ -226,6 +226,11 @@ class Dependencies {
license: mit,
sourceUrl: 'https://github.com/ziofat/material_design_icons_flutter',
),
Dependency(
name: 'Material Symbols Icons for Flutter',
license: apache2,
sourceUrl: 'https://github.com/timmaffett/material_symbols_icons',
),
Dependency(
name: 'Overlay Support',
license: apache2,

View file

@ -64,7 +64,7 @@ class PathFilter extends CollectionFilter {
}
@override
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.explorer, size: size);
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.path, size: size);
@override
String get category => type;

View file

@ -21,6 +21,7 @@ class QueryFilter extends CollectionFilter {
static final _fieldPattern = RegExp(r'(.+)([=<>])(.+)');
static final _fileSizePattern = RegExp(r'(\d+)([KMG])?');
static const keyContentExtension = 'EXT';
static const keyContentId = 'ID';
static const keyContentYear = 'YEAR';
static const keyContentMonth = 'MONTH';
@ -82,7 +83,7 @@ class QueryFilter extends CollectionFilter {
String get universalLabel => query;
@override
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.text, size: size);
Widget? iconBuilder(BuildContext context, double size, {bool allowGenericIcon = true}) => Icon(AIcons.text, fill: 1, size: size);
@override
Future<Color> color(BuildContext context) {
@ -112,6 +113,11 @@ class QueryFilter extends CollectionFilter {
final valueInt = int.tryParse(valueString);
switch (key) {
case keyContentExtension:
if (op == opEqual) {
final extension = '.$valueString';
return (entry) => entry.extension?.toUpperCase() == extension;
}
case keyContentId:
if (valueInt == null) return null;
if (op == opEqual) {

Some files were not shown because too many files have changed in this diff Show more