Merge branch 'develop'
4
.github/workflows/check.yml
vendored
|
@ -17,8 +17,8 @@ jobs:
|
|||
# Available versions may lag behind https://github.com/flutter/flutter.git
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.3.0-0.5.pre'
|
||||
channel: 'beta'
|
||||
flutter-version: '3.3.2'
|
||||
channel: 'stable'
|
||||
|
||||
- name: Clone the repository.
|
||||
uses: actions/checkout@v2
|
||||
|
|
12
.github/workflows/release.yml
vendored
|
@ -19,8 +19,8 @@ jobs:
|
|||
# Available versions may lag behind https://github.com/flutter/flutter.git
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.3.0-0.5.pre'
|
||||
channel: 'beta'
|
||||
flutter-version: '3.3.2'
|
||||
channel: 'stable'
|
||||
|
||||
# Workaround for this Android Gradle Plugin issue (supposedly fixed in AGP 4.1):
|
||||
# https://issuetracker.google.com/issues/144111441
|
||||
|
@ -56,15 +56,15 @@ jobs:
|
|||
rm release.keystore.asc
|
||||
mkdir outputs
|
||||
(cd scripts/; ./apply_flavor_play.sh)
|
||||
flutter build appbundle -t lib/main_play.dart --flavor play --bundle-sksl-path shaders_3.3.0-0.5.pre.sksl.json
|
||||
flutter build appbundle -t lib/main_play.dart --flavor play --bundle-sksl-path shaders_3.3.2.sksl.json
|
||||
cp build/app/outputs/bundle/playRelease/*.aab outputs
|
||||
flutter build apk -t lib/main_play.dart --flavor play --bundle-sksl-path shaders_3.3.0-0.5.pre.sksl.json
|
||||
flutter build apk -t lib/main_play.dart --flavor play --bundle-sksl-path shaders_3.3.2.sksl.json
|
||||
cp build/app/outputs/apk/play/release/*.apk outputs
|
||||
(cd scripts/; ./apply_flavor_huawei.sh)
|
||||
flutter build apk -t lib/main_huawei.dart --flavor huawei --bundle-sksl-path shaders_3.3.0-0.5.pre.sksl.json
|
||||
flutter build apk -t lib/main_huawei.dart --flavor huawei --bundle-sksl-path shaders_3.3.2.sksl.json
|
||||
cp build/app/outputs/apk/huawei/release/*.apk outputs
|
||||
(cd scripts/; ./apply_flavor_izzy.sh)
|
||||
flutter build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi --bundle-sksl-path shaders_3.3.0-0.5.pre.sksl.json
|
||||
flutter build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi --bundle-sksl-path shaders_3.3.2.sksl.json
|
||||
cp build/app/outputs/apk/izzy/release/*.apk outputs
|
||||
rm $AVES_STORE_FILE
|
||||
env:
|
||||
|
|
22
CHANGELOG.md
|
@ -4,6 +4,28 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
## <a id="unreleased"></a>[Unreleased]
|
||||
|
||||
## <a id="v1.7.0"></a>[v1.7.0] - 2022-09-19
|
||||
|
||||
### Added
|
||||
|
||||
- Collection: view settings allow changing the sort order (aka ascending/descending)
|
||||
- Collection / Info: edit title via IPTC / XMP
|
||||
- Albums / Countries / Tags: size displayed in list view details, sort by size
|
||||
- Search: `undated` and `untitled` filters
|
||||
- Greek translation (thanks Emmanouil Papavergis)
|
||||
|
||||
### Changed
|
||||
|
||||
- upgraded Flutter to stable v3.3.2
|
||||
|
||||
### Fixed
|
||||
|
||||
- opening viewer with directory context in some cases
|
||||
- photo frame widget rendering in some cases
|
||||
- exporting large images to BMP
|
||||
- replacing entries during move/copy
|
||||
- deleting binned item from the Download album
|
||||
|
||||
## <a id="v1.6.13"></a>[v1.6.13] - 2022-08-29
|
||||
|
||||
### Changed
|
||||
|
|
|
@ -154,7 +154,7 @@ repositories {
|
|||
|
||||
dependencies {
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'
|
||||
implementation 'androidx.core:core-ktx:1.8.0'
|
||||
implementation 'androidx.core:core-ktx:1.9.0'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.3.3'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'com.caverock:androidsvg-aar:1.4'
|
||||
|
|
|
@ -241,5 +241,9 @@ This change eventually prevents building the app with Flutter v3.0.2.
|
|||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
<!-- as of Flutter v3.3.0, background blur & icon shading fail with Impeller -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.EnableImpeller"
|
||||
android:value="false" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
@ -12,9 +12,8 @@ import android.os.Bundle
|
|||
import android.util.Log
|
||||
import android.widget.RemoteViews
|
||||
import app.loup.streams_channel.StreamsChannel
|
||||
import deckers.thibault.aves.channel.calls.DeviceHandler
|
||||
import deckers.thibault.aves.channel.calls.MediaFetchHandler
|
||||
import deckers.thibault.aves.channel.calls.MediaStoreHandler
|
||||
import deckers.thibault.aves.channel.AvesByteSendingMethodCodec
|
||||
import deckers.thibault.aves.channel.calls.*
|
||||
import deckers.thibault.aves.channel.streams.ImageByteStreamHandler
|
||||
import deckers.thibault.aves.channel.streams.MediaStoreStreamHandler
|
||||
import deckers.thibault.aves.utils.FlutterUtils
|
||||
|
@ -190,7 +189,9 @@ class HomeWidgetProvider : AppWidgetProvider() {
|
|||
// - need Context
|
||||
MethodChannel(messenger, DeviceHandler.CHANNEL).setMethodCallHandler(DeviceHandler(context))
|
||||
MethodChannel(messenger, MediaStoreHandler.CHANNEL).setMethodCallHandler(MediaStoreHandler(context))
|
||||
MethodChannel(messenger, MediaFetchHandler.CHANNEL).setMethodCallHandler(MediaFetchHandler(context))
|
||||
MethodChannel(messenger, MediaFetchBytesHandler.CHANNEL, AvesByteSendingMethodCodec.INSTANCE).setMethodCallHandler(MediaFetchBytesHandler(context))
|
||||
MethodChannel(messenger, MediaFetchObjectHandler.CHANNEL).setMethodCallHandler(MediaFetchObjectHandler(context))
|
||||
MethodChannel(messenger, StorageHandler.CHANNEL).setMethodCallHandler(StorageHandler(context))
|
||||
|
||||
// result streaming: dart -> platform ->->-> dart
|
||||
// - need Context
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.core.content.pm.ShortcutInfoCompat
|
|||
import androidx.core.content.pm.ShortcutManagerCompat
|
||||
import androidx.core.graphics.drawable.IconCompat
|
||||
import app.loup.streams_channel.StreamsChannel
|
||||
import deckers.thibault.aves.channel.AvesByteSendingMethodCodec
|
||||
import deckers.thibault.aves.channel.calls.*
|
||||
import deckers.thibault.aves.channel.calls.window.ActivityWindowHandler
|
||||
import deckers.thibault.aves.channel.calls.window.WindowHandler
|
||||
|
@ -70,7 +71,8 @@ open class MainActivity : FlutterActivity() {
|
|||
MethodChannel(messenger, GeocodingHandler.CHANNEL).setMethodCallHandler(GeocodingHandler(this))
|
||||
MethodChannel(messenger, GlobalSearchHandler.CHANNEL).setMethodCallHandler(GlobalSearchHandler(this))
|
||||
MethodChannel(messenger, HomeWidgetHandler.CHANNEL).setMethodCallHandler(HomeWidgetHandler(this))
|
||||
MethodChannel(messenger, MediaFetchHandler.CHANNEL).setMethodCallHandler(MediaFetchHandler(this))
|
||||
MethodChannel(messenger, MediaFetchBytesHandler.CHANNEL, AvesByteSendingMethodCodec.INSTANCE).setMethodCallHandler(MediaFetchBytesHandler(this))
|
||||
MethodChannel(messenger, MediaFetchObjectHandler.CHANNEL).setMethodCallHandler(MediaFetchObjectHandler(this))
|
||||
MethodChannel(messenger, MediaStoreHandler.CHANNEL).setMethodCallHandler(MediaStoreHandler(this))
|
||||
MethodChannel(messenger, MetadataFetchHandler.CHANNEL).setMethodCallHandler(MetadataFetchHandler(this))
|
||||
MethodChannel(messenger, StorageHandler.CHANNEL).setMethodCallHandler(StorageHandler(this))
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.service.dreams.DreamService
|
|||
import android.util.Log
|
||||
import android.view.View
|
||||
import app.loup.streams_channel.StreamsChannel
|
||||
import deckers.thibault.aves.channel.AvesByteSendingMethodCodec
|
||||
import deckers.thibault.aves.channel.calls.*
|
||||
import deckers.thibault.aves.channel.calls.window.ServiceWindowHandler
|
||||
import deckers.thibault.aves.channel.calls.window.WindowHandler
|
||||
|
@ -99,7 +100,8 @@ class ScreenSaverService : DreamService() {
|
|||
// - need Context
|
||||
MethodChannel(messenger, DeviceHandler.CHANNEL).setMethodCallHandler(DeviceHandler(this))
|
||||
MethodChannel(messenger, EmbeddedDataHandler.CHANNEL).setMethodCallHandler(EmbeddedDataHandler(this))
|
||||
MethodChannel(messenger, MediaFetchHandler.CHANNEL).setMethodCallHandler(MediaFetchHandler(this))
|
||||
MethodChannel(messenger, MediaFetchBytesHandler.CHANNEL, AvesByteSendingMethodCodec.INSTANCE).setMethodCallHandler(MediaFetchBytesHandler(this))
|
||||
MethodChannel(messenger, MediaFetchObjectHandler.CHANNEL).setMethodCallHandler(MediaFetchObjectHandler(this))
|
||||
MethodChannel(messenger, MediaStoreHandler.CHANNEL).setMethodCallHandler(MediaStoreHandler(this))
|
||||
MethodChannel(messenger, MetadataFetchHandler.CHANNEL).setMethodCallHandler(MetadataFetchHandler(this))
|
||||
MethodChannel(messenger, StorageHandler.CHANNEL).setMethodCallHandler(StorageHandler(this))
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.os.Handler
|
|||
import android.os.Looper
|
||||
import android.util.Log
|
||||
import app.loup.streams_channel.StreamsChannel
|
||||
import deckers.thibault.aves.channel.AvesByteSendingMethodCodec
|
||||
import deckers.thibault.aves.channel.calls.*
|
||||
import deckers.thibault.aves.channel.calls.window.ActivityWindowHandler
|
||||
import deckers.thibault.aves.channel.calls.window.WindowHandler
|
||||
|
@ -34,7 +35,8 @@ class WallpaperActivity : FlutterActivity() {
|
|||
// - need Context
|
||||
MethodChannel(messenger, DeviceHandler.CHANNEL).setMethodCallHandler(DeviceHandler(this))
|
||||
MethodChannel(messenger, EmbeddedDataHandler.CHANNEL).setMethodCallHandler(EmbeddedDataHandler(this))
|
||||
MethodChannel(messenger, MediaFetchHandler.CHANNEL).setMethodCallHandler(MediaFetchHandler(this))
|
||||
MethodChannel(messenger, MediaFetchBytesHandler.CHANNEL, AvesByteSendingMethodCodec.INSTANCE).setMethodCallHandler(MediaFetchBytesHandler(context))
|
||||
MethodChannel(messenger, MediaFetchObjectHandler.CHANNEL).setMethodCallHandler(MediaFetchObjectHandler(this))
|
||||
MethodChannel(messenger, MetadataFetchHandler.CHANNEL).setMethodCallHandler(MetadataFetchHandler(this))
|
||||
MethodChannel(messenger, StorageHandler.CHANNEL).setMethodCallHandler(StorageHandler(this))
|
||||
// - need ContextWrapper
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
package deckers.thibault.aves.channel
|
||||
|
||||
import android.util.Log
|
||||
import deckers.thibault.aves.utils.LogUtils
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodCodec
|
||||
import io.flutter.plugin.common.StandardMessageCodec
|
||||
import io.flutter.plugin.common.StandardMethodCodec
|
||||
import java.nio.ByteBuffer
|
||||
|
||||
class AvesByteSendingMethodCodec private constructor() : MethodCodec {
|
||||
override fun decodeMethodCall(methodCall: ByteBuffer): MethodCall {
|
||||
return STANDARD.decodeMethodCall(methodCall)
|
||||
}
|
||||
|
||||
override fun decodeEnvelope(envelope: ByteBuffer): Any {
|
||||
return STANDARD.decodeEnvelope(envelope)
|
||||
}
|
||||
|
||||
override fun encodeMethodCall(methodCall: MethodCall): ByteBuffer {
|
||||
return STANDARD.encodeMethodCall(methodCall)
|
||||
}
|
||||
|
||||
override fun encodeSuccessEnvelope(result: Any?): ByteBuffer {
|
||||
if (result is ByteArray) {
|
||||
val size = result.size
|
||||
return ByteBuffer.allocateDirect(4 + size).apply {
|
||||
put(0)
|
||||
put(result)
|
||||
}
|
||||
}
|
||||
|
||||
Log.e(LOG_TAG, "encodeSuccessEnvelope failed with result=$result")
|
||||
return ByteBuffer.allocateDirect(0)
|
||||
}
|
||||
|
||||
override fun encodeErrorEnvelope(errorCode: String, errorMessage: String?, errorDetails: Any?): ByteBuffer {
|
||||
Log.e(LOG_TAG, "encodeErrorEnvelope failed with errorCode=$errorCode, errorMessage=$errorMessage, errorDetails=$errorDetails")
|
||||
return ByteBuffer.allocateDirect(0)
|
||||
}
|
||||
|
||||
override fun encodeErrorEnvelopeWithStacktrace(errorCode: String, errorMessage: String?, errorDetails: Any?, errorStacktrace: String?): ByteBuffer {
|
||||
Log.e(LOG_TAG, "encodeErrorEnvelopeWithStacktrace failed with errorCode=$errorCode, errorMessage=$errorMessage, errorDetails=$errorDetails, errorStacktrace=$errorStacktrace")
|
||||
return ByteBuffer.allocateDirect(0)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val LOG_TAG = LogUtils.createTag<AvesByteSendingMethodCodec>()
|
||||
val INSTANCE = AvesByteSendingMethodCodec()
|
||||
private val STANDARD = StandardMethodCodec(StandardMessageCodec.INSTANCE)
|
||||
}
|
||||
}
|
|
@ -21,6 +21,7 @@ import deckers.thibault.aves.model.provider.ContentImageProvider
|
|||
import deckers.thibault.aves.model.provider.ImageProvider
|
||||
import deckers.thibault.aves.utils.BitmapUtils
|
||||
import deckers.thibault.aves.utils.BitmapUtils.getBytes
|
||||
import deckers.thibault.aves.utils.FileUtils.transferFrom
|
||||
import deckers.thibault.aves.utils.LogUtils
|
||||
import deckers.thibault.aves.utils.MimeTypes
|
||||
import deckers.thibault.aves.utils.MimeTypes.canReadWithExifInterface
|
||||
|
@ -96,7 +97,7 @@ class EmbeddedDataHandler(private val context: Context) : MethodCallHandler {
|
|||
val videoStartOffset = sizeBytes - videoSizeBytes
|
||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||
input.skip(videoStartOffset)
|
||||
copyEmbeddedBytes(result, MimeTypes.MP4, displayName, input)
|
||||
copyEmbeddedBytes(result, MimeTypes.MP4, displayName, input, videoSizeBytes)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -121,7 +122,7 @@ class EmbeddedDataHandler(private val context: Context) : MethodCallHandler {
|
|||
Helper.readMimeType(input)?.let { embedMimeType = it }
|
||||
}
|
||||
embedMimeType?.let { mime ->
|
||||
copyEmbeddedBytes(result, mime, displayName, bytes.inputStream())
|
||||
copyEmbeddedBytes(result, mime, displayName, bytes.inputStream(), bytes.size.toLong())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
@ -172,7 +173,7 @@ class EmbeddedDataHandler(private val context: Context) : MethodCallHandler {
|
|||
}
|
||||
}
|
||||
|
||||
copyEmbeddedBytes(result, embedMimeType, displayName, embedBytes.inputStream())
|
||||
copyEmbeddedBytes(result, embedMimeType, displayName, embedBytes.inputStream(), embedBytes.size.toLong())
|
||||
return
|
||||
} catch (e: XMPException) {
|
||||
result.error("extractXmpDataProp-xmp", "failed to read XMP directory for uri=$uri prop=$dataProp", e.message)
|
||||
|
@ -190,16 +191,19 @@ class EmbeddedDataHandler(private val context: Context) : MethodCallHandler {
|
|||
result.error("extractXmpDataProp-empty", "failed to extract file from XMP uri=$uri prop=$dataProp", null)
|
||||
}
|
||||
|
||||
private fun copyEmbeddedBytes(result: MethodChannel.Result, mimeType: String, displayName: String?, embeddedByteStream: InputStream) {
|
||||
private fun copyEmbeddedBytes(
|
||||
result: MethodChannel.Result,
|
||||
mimeType: String,
|
||||
displayName: String?,
|
||||
embeddedByteStream: InputStream,
|
||||
embeddedByteLength: Long,
|
||||
) {
|
||||
val extension = extensionFor(mimeType)
|
||||
val file = File.createTempFile("aves", extension, context.cacheDir).apply {
|
||||
val targetFile = File.createTempFile("aves", extension, context.cacheDir).apply {
|
||||
deleteOnExit()
|
||||
outputStream().use { output ->
|
||||
embeddedByteStream.use { input ->
|
||||
input.copyTo(output)
|
||||
}
|
||||
}
|
||||
transferFrom(embeddedByteStream, embeddedByteLength)
|
||||
}
|
||||
|
||||
val authority = "${context.applicationContext.packageName}.file_provider"
|
||||
val uri = if (displayName != null) {
|
||||
// add extension to ease type identification when sharing this content
|
||||
|
@ -208,9 +212,9 @@ class EmbeddedDataHandler(private val context: Context) : MethodCallHandler {
|
|||
} else {
|
||||
"$displayName$extension"
|
||||
}
|
||||
FileProvider.getUriForFile(context, authority, file, displayNameWithExtension)
|
||||
FileProvider.getUriForFile(context, authority, targetFile, displayNameWithExtension)
|
||||
} else {
|
||||
FileProvider.getUriForFile(context, authority, file)
|
||||
FileProvider.getUriForFile(context, authority, targetFile)
|
||||
}
|
||||
val resultFields: FieldMap = hashMapOf(
|
||||
"uri" to uri.toString(),
|
||||
|
|
|
@ -3,16 +3,11 @@ package deckers.thibault.aves.channel.calls
|
|||
import android.content.Context
|
||||
import android.graphics.Rect
|
||||
import android.net.Uri
|
||||
import com.bumptech.glide.Glide
|
||||
import deckers.thibault.aves.channel.calls.Coresult.Companion.safe
|
||||
import deckers.thibault.aves.channel.calls.Coresult.Companion.safeSuspend
|
||||
import deckers.thibault.aves.channel.calls.fetchers.RegionFetcher
|
||||
import deckers.thibault.aves.channel.calls.fetchers.SvgRegionFetcher
|
||||
import deckers.thibault.aves.channel.calls.fetchers.ThumbnailFetcher
|
||||
import deckers.thibault.aves.channel.calls.fetchers.TiffRegionFetcher
|
||||
import deckers.thibault.aves.model.FieldMap
|
||||
import deckers.thibault.aves.model.provider.ImageProvider.ImageOpCallback
|
||||
import deckers.thibault.aves.model.provider.ImageProviderFactory.getProvider
|
||||
import deckers.thibault.aves.utils.MimeTypes
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
@ -23,7 +18,7 @@ import kotlinx.coroutines.SupervisorJob
|
|||
import kotlinx.coroutines.launch
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class MediaFetchHandler(private val context: Context) : MethodCallHandler {
|
||||
class MediaFetchBytesHandler(private val context: Context) : MethodCallHandler {
|
||||
private val ioScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
|
||||
private val density = context.resources.displayMetrics.density
|
||||
|
||||
|
@ -31,34 +26,12 @@ class MediaFetchHandler(private val context: Context) : MethodCallHandler {
|
|||
|
||||
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
||||
when (call.method) {
|
||||
"getEntry" -> ioScope.launch { safe(call, result, ::getEntry) }
|
||||
"getThumbnail" -> ioScope.launch { safeSuspend(call, result, ::getThumbnail) }
|
||||
"getRegion" -> ioScope.launch { safeSuspend(call, result, ::getRegion) }
|
||||
"clearSizedThumbnailDiskCache" -> ioScope.launch { safe(call, result, ::clearSizedThumbnailDiskCache) }
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getEntry(call: MethodCall, result: MethodChannel.Result) {
|
||||
val mimeType = call.argument<String>("mimeType") // MIME type is optional
|
||||
val uri = call.argument<String>("uri")?.let { Uri.parse(it) }
|
||||
if (uri == null) {
|
||||
result.error("getEntry-args", "missing arguments", null)
|
||||
return
|
||||
}
|
||||
|
||||
val provider = getProvider(uri)
|
||||
if (provider == null) {
|
||||
result.error("getEntry-provider", "failed to find provider for uri=$uri", null)
|
||||
return
|
||||
}
|
||||
|
||||
provider.fetchSingle(context, uri, mimeType, object : ImageOpCallback {
|
||||
override fun onSuccess(fields: FieldMap) = result.success(fields)
|
||||
override fun onFailure(throwable: Throwable) = result.error("getEntry-failure", "failed to get entry for uri=$uri", throwable.message)
|
||||
})
|
||||
}
|
||||
|
||||
private suspend fun getThumbnail(call: MethodCall, result: MethodChannel.Result) {
|
||||
val uri = call.argument<String>("uri")
|
||||
val mimeType = call.argument<String>("mimeType")
|
||||
|
@ -77,17 +50,17 @@ class MediaFetchHandler(private val context: Context) : MethodCallHandler {
|
|||
|
||||
// convert DIP to physical pixels here, instead of using `devicePixelRatio` in Flutter
|
||||
ThumbnailFetcher(
|
||||
context,
|
||||
uri,
|
||||
mimeType,
|
||||
dateModifiedSecs,
|
||||
rotationDegrees,
|
||||
isFlipped,
|
||||
context = context,
|
||||
uri = uri,
|
||||
mimeType = mimeType,
|
||||
dateModifiedSecs = dateModifiedSecs,
|
||||
rotationDegrees = rotationDegrees,
|
||||
isFlipped = isFlipped,
|
||||
width = (widthDip * density).roundToInt(),
|
||||
height = (heightDip * density).roundToInt(),
|
||||
pageId = pageId,
|
||||
defaultSize = (defaultSizeDip * density).roundToInt(),
|
||||
result,
|
||||
result = result,
|
||||
).fetch()
|
||||
}
|
||||
|
||||
|
@ -137,12 +110,7 @@ class MediaFetchHandler(private val context: Context) : MethodCallHandler {
|
|||
}
|
||||
}
|
||||
|
||||
private fun clearSizedThumbnailDiskCache(@Suppress("unused_parameter") call: MethodCall, result: MethodChannel.Result) {
|
||||
Glide.get(context).clearDiskCache()
|
||||
result.success(null)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val CHANNEL = "deckers.thibault/aves/media_fetch"
|
||||
const val CHANNEL = "deckers.thibault/aves/media_fetch_bytes"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package deckers.thibault.aves.channel.calls
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import com.bumptech.glide.Glide
|
||||
import deckers.thibault.aves.channel.calls.Coresult.Companion.safe
|
||||
import deckers.thibault.aves.model.FieldMap
|
||||
import deckers.thibault.aves.model.provider.ImageProvider.ImageOpCallback
|
||||
import deckers.thibault.aves.model.provider.ImageProviderFactory.getProvider
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class MediaFetchObjectHandler(private val context: Context) : MethodCallHandler {
|
||||
private val ioScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
|
||||
|
||||
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
||||
when (call.method) {
|
||||
"getEntry" -> ioScope.launch { safe(call, result, ::getEntry) }
|
||||
"clearSizedThumbnailDiskCache" -> ioScope.launch { safe(call, result, ::clearSizedThumbnailDiskCache) }
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getEntry(call: MethodCall, result: MethodChannel.Result) {
|
||||
val mimeType = call.argument<String>("mimeType") // MIME type is optional
|
||||
val uri = call.argument<String>("uri")?.let { Uri.parse(it) }
|
||||
if (uri == null) {
|
||||
result.error("getEntry-args", "missing arguments", null)
|
||||
return
|
||||
}
|
||||
|
||||
val provider = getProvider(uri)
|
||||
if (provider == null) {
|
||||
result.error("getEntry-provider", "failed to find provider for uri=$uri", null)
|
||||
return
|
||||
}
|
||||
|
||||
provider.fetchSingle(context, uri, mimeType, object : ImageOpCallback {
|
||||
override fun onSuccess(fields: FieldMap) = result.success(fields)
|
||||
override fun onFailure(throwable: Throwable) = result.error("getEntry-failure", "failed to get entry for uri=$uri", throwable.message)
|
||||
})
|
||||
}
|
||||
|
||||
private fun clearSizedThumbnailDiskCache(@Suppress("unused_parameter") call: MethodCall, result: MethodChannel.Result) {
|
||||
Glide.get(context).clearDiskCache()
|
||||
result.success(null)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val CHANNEL = "deckers.thibault/aves/media_fetch_object"
|
||||
}
|
||||
}
|
|
@ -427,8 +427,9 @@ class MetadataFetchHandler(private val context: Context) : MethodCallHandler {
|
|||
// - XMP / photoshop:DateCreated
|
||||
// - PNG / TIME / LAST_MODIFICATION_TIME
|
||||
// - Video / METADATA_KEY_DATE
|
||||
// set `KEY_XMP_TITLE` from this field:
|
||||
// set `KEY_XMP_TITLE` from these fields (by precedence):
|
||||
// - XMP / dc:title
|
||||
// - IPTC / object-name
|
||||
// set `KEY_XMP_SUBJECTS` from these fields (by precedence):
|
||||
// - XMP / dc:subject
|
||||
// - IPTC / keywords
|
||||
|
@ -567,9 +568,14 @@ class MetadataFetchHandler(private val context: Context) : MethodCallHandler {
|
|||
metadata.getDirectoriesOfType(XmpDirectory::class.java).map { it.xmpMeta }.forEach(::processXmp)
|
||||
|
||||
// XMP fallback to IPTC
|
||||
if (!metadataMap.containsKey(KEY_XMP_SUBJECTS)) {
|
||||
if (!metadataMap.containsKey(KEY_XMP_TITLE) || !metadataMap.containsKey(KEY_XMP_SUBJECTS)) {
|
||||
for (dir in metadata.getDirectoriesOfType(IptcDirectory::class.java)) {
|
||||
dir.keywords?.let { metadataMap[KEY_XMP_SUBJECTS] = it.joinToString(XMP_SUBJECTS_SEPARATOR) }
|
||||
if (!metadataMap.containsKey(KEY_XMP_TITLE)) {
|
||||
dir.getSafeString(IptcDirectory.TAG_OBJECT_NAME) { metadataMap[KEY_XMP_TITLE] = it }
|
||||
}
|
||||
if (!metadataMap.containsKey(KEY_XMP_SUBJECTS)) {
|
||||
dir.keywords?.let { metadataMap[KEY_XMP_SUBJECTS] = it.joinToString(XMP_SUBJECTS_SEPARATOR) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,10 @@ import deckers.thibault.aves.utils.MimeTypes.needRotationAfterGlide
|
|||
import deckers.thibault.aves.utils.StorageUtils
|
||||
import io.flutter.plugin.common.EventChannel
|
||||
import io.flutter.plugin.common.EventChannel.EventSink
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.InputStream
|
||||
|
||||
class ImageByteStreamHandler(private val context: Context, private val arguments: Any?) : EventChannel.StreamHandler {
|
||||
|
@ -82,6 +85,7 @@ class ImageByteStreamHandler(private val context: Context, private val arguments
|
|||
|
||||
val mimeType = arguments["mimeType"] as String?
|
||||
val uri = (arguments["uri"] as String?)?.let { Uri.parse(it) }
|
||||
val sizeBytes = (arguments["sizeBytes"] as Number?)?.toLong()
|
||||
val rotationDegrees = arguments["rotationDegrees"] as Int
|
||||
val isFlipped = arguments["isFlipped"] as Boolean
|
||||
val pageId = arguments["pageId"] as Int?
|
||||
|
@ -96,7 +100,7 @@ class ImageByteStreamHandler(private val context: Context, private val arguments
|
|||
streamVideoByGlide(uri, mimeType)
|
||||
} else if (!canDecodeWithFlutter(mimeType, rotationDegrees, isFlipped)) {
|
||||
// decode exotic format on platform side, then encode it in portable format for Flutter
|
||||
streamImageByGlide(uri, pageId, mimeType, rotationDegrees, isFlipped)
|
||||
streamImageByGlide(uri, pageId, mimeType, sizeBytes, rotationDegrees, isFlipped)
|
||||
} else {
|
||||
// to be decoded by Flutter
|
||||
streamImageAsIs(uri, mimeType)
|
||||
|
@ -112,13 +116,20 @@ class ImageByteStreamHandler(private val context: Context, private val arguments
|
|||
}
|
||||
}
|
||||
|
||||
private suspend fun streamImageByGlide(uri: Uri, pageId: Int?, mimeType: String, rotationDegrees: Int, isFlipped: Boolean) {
|
||||
private suspend fun streamImageByGlide(
|
||||
uri: Uri,
|
||||
pageId: Int?,
|
||||
mimeType: String,
|
||||
sizeBytes: Long?,
|
||||
rotationDegrees: Int,
|
||||
isFlipped: Boolean,
|
||||
) {
|
||||
val model: Any = if (isHeic(mimeType) && pageId != null) {
|
||||
MultiTrackImage(context, uri, pageId)
|
||||
} else if (mimeType == MimeTypes.TIFF) {
|
||||
TiffImage(context, uri, pageId)
|
||||
} else {
|
||||
StorageUtils.getGlideSafeUri(context, uri, mimeType)
|
||||
StorageUtils.getGlideSafeUri(context, uri, mimeType, sizeBytes)
|
||||
}
|
||||
|
||||
val target = Glide.with(context)
|
||||
|
|
|
@ -3,6 +3,7 @@ package deckers.thibault.aves.metadata
|
|||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import androidx.exifinterface.media.ExifInterface
|
||||
import deckers.thibault.aves.utils.FileUtils.transferFrom
|
||||
import deckers.thibault.aves.utils.MimeTypes
|
||||
import deckers.thibault.aves.utils.StorageUtils
|
||||
import java.io.File
|
||||
|
@ -122,7 +123,7 @@ object Metadata {
|
|||
|
||||
// we try and read metadata from large files by copying an arbitrary amount from its beginning
|
||||
// to a temporary file, and reusing that preview file for all metadata reading purposes
|
||||
private const val previewSize = 5 * (1 shl 20) // MB
|
||||
private const val previewSize: Long = 5 * (1 shl 20) // MB
|
||||
|
||||
private val previewFiles = HashMap<Uri, File>()
|
||||
|
||||
|
@ -155,13 +156,7 @@ object Metadata {
|
|||
fun createPreviewFile(context: Context, uri: Uri): File {
|
||||
return File.createTempFile("aves", null, context.cacheDir).apply {
|
||||
deleteOnExit()
|
||||
outputStream().use { output ->
|
||||
StorageUtils.openInputStream(context, uri)?.use { input ->
|
||||
val b = ByteArray(previewSize)
|
||||
input.read(b, 0, previewSize)
|
||||
output.write(b)
|
||||
}
|
||||
}
|
||||
transferFrom(StorageUtils.openInputStream(context, uri), previewSize)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,15 @@ class AvesEntry(map: FieldMap) {
|
|||
val height = map["height"] as Int
|
||||
val rotationDegrees = map["rotationDegrees"] as Int
|
||||
val isFlipped = map["isFlipped"] as Boolean
|
||||
val sizeBytes = toLong(map["sizeBytes"])
|
||||
val trashed = map["trashed"] as Boolean
|
||||
val trashPath = map["trashPath"] as String?
|
||||
|
||||
companion object {
|
||||
// convenience method
|
||||
private fun toLong(o: Any?): Long? = when (o) {
|
||||
is Int -> o.toLong()
|
||||
else -> o as? Long
|
||||
}
|
||||
}
|
||||
}
|
|
@ -258,7 +258,6 @@ class SourceEntry {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
// convenience method
|
||||
private fun toLong(o: Any?): Long? = when (o) {
|
||||
|
|
|
@ -29,6 +29,8 @@ import deckers.thibault.aves.model.ExifOrientationOp
|
|||
import deckers.thibault.aves.model.FieldMap
|
||||
import deckers.thibault.aves.model.NameConflictStrategy
|
||||
import deckers.thibault.aves.utils.*
|
||||
import deckers.thibault.aves.utils.FileUtils.transferFrom
|
||||
import deckers.thibault.aves.utils.FileUtils.transferTo
|
||||
import deckers.thibault.aves.utils.MimeTypes.canEditExif
|
||||
import deckers.thibault.aves.utils.MimeTypes.canEditIptc
|
||||
import deckers.thibault.aves.utils.MimeTypes.canEditXmp
|
||||
|
@ -178,7 +180,7 @@ abstract class ImageProvider {
|
|||
} else if (sourceMimeType == MimeTypes.SVG) {
|
||||
SvgImage(activity, sourceUri)
|
||||
} else {
|
||||
StorageUtils.getGlideSafeUri(activity, sourceUri, sourceMimeType)
|
||||
StorageUtils.getGlideSafeUri(activity, sourceUri, sourceMimeType, sourceEntry.sizeBytes)
|
||||
}
|
||||
|
||||
// request a fresh image with the highest quality format
|
||||
|
@ -298,11 +300,7 @@ abstract class ImageProvider {
|
|||
} else {
|
||||
val editableFile = File.createTempFile("aves", null).apply {
|
||||
deleteOnExit()
|
||||
outputStream().use { output ->
|
||||
ByteArrayInputStream(bytes).use { imageInput ->
|
||||
imageInput.copyTo(output)
|
||||
}
|
||||
}
|
||||
transferFrom(ByteArrayInputStream(bytes), bytes.size.toLong())
|
||||
}
|
||||
|
||||
val exif = ExifInterface(editableFile)
|
||||
|
@ -425,29 +423,24 @@ abstract class ImageProvider {
|
|||
val editableFile = File.createTempFile("aves", null).apply {
|
||||
deleteOnExit()
|
||||
try {
|
||||
outputStream().use { output ->
|
||||
if (videoSize != null) {
|
||||
// handle motion photo and embedded video separately
|
||||
val imageSize = (originalFileSize - videoSize).toInt()
|
||||
videoBytes = ByteArray(videoSize)
|
||||
if (videoSize != null) {
|
||||
// handle motion photo and embedded video separately
|
||||
val imageSize = (originalFileSize - videoSize).toInt()
|
||||
videoBytes = ByteArray(videoSize)
|
||||
|
||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||
val imageBytes = ByteArray(imageSize)
|
||||
input.read(imageBytes, 0, imageSize)
|
||||
input.read(videoBytes, 0, videoSize)
|
||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||
val imageBytes = ByteArray(imageSize)
|
||||
input.read(imageBytes, 0, imageSize)
|
||||
input.read(videoBytes, 0, videoSize)
|
||||
|
||||
// copy only the image to a temporary file for editing
|
||||
// video will be appended after metadata modification
|
||||
ByteArrayInputStream(imageBytes).use { imageInput ->
|
||||
imageInput.copyTo(output)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// copy original file to a temporary file for editing
|
||||
StorageUtils.openInputStream(context, uri)?.use { imageInput ->
|
||||
imageInput.copyTo(output)
|
||||
}
|
||||
// copy only the image to a temporary file for editing
|
||||
// video will be appended after metadata modification
|
||||
transferFrom(ByteArrayInputStream(imageBytes), imageBytes.size.toLong())
|
||||
}
|
||||
} else {
|
||||
// copy original file to a temporary file for editing
|
||||
val inputStream = StorageUtils.openInputStream(context, uri)
|
||||
transferFrom(inputStream, originalFileSize)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
callback.onFailure(e)
|
||||
|
@ -464,7 +457,7 @@ abstract class ImageProvider {
|
|||
}
|
||||
|
||||
// copy the edited temporary file back to the original
|
||||
copyTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
copyFileTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
|
||||
if (autoCorrectTrailerOffset && !checkTrailerOffset(context, path, uri, mimeType, videoSize, editableFile, callback)) {
|
||||
return false
|
||||
|
@ -498,29 +491,24 @@ abstract class ImageProvider {
|
|||
val editableFile = File.createTempFile("aves", null).apply {
|
||||
deleteOnExit()
|
||||
try {
|
||||
outputStream().use { output ->
|
||||
if (videoSize != null) {
|
||||
// handle motion photo and embedded video separately
|
||||
val imageSize = (originalFileSize - videoSize).toInt()
|
||||
videoBytes = ByteArray(videoSize)
|
||||
if (videoSize != null) {
|
||||
// handle motion photo and embedded video separately
|
||||
val imageSize = (originalFileSize - videoSize).toInt()
|
||||
videoBytes = ByteArray(videoSize)
|
||||
|
||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||
val imageBytes = ByteArray(imageSize)
|
||||
input.read(imageBytes, 0, imageSize)
|
||||
input.read(videoBytes, 0, videoSize)
|
||||
StorageUtils.openInputStream(context, uri)?.let { input ->
|
||||
val imageBytes = ByteArray(imageSize)
|
||||
input.read(imageBytes, 0, imageSize)
|
||||
input.read(videoBytes, 0, videoSize)
|
||||
|
||||
// copy only the image to a temporary file for editing
|
||||
// video will be appended after metadata modification
|
||||
ByteArrayInputStream(imageBytes).use { imageInput ->
|
||||
imageInput.copyTo(output)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// copy original file to a temporary file for editing
|
||||
StorageUtils.openInputStream(context, uri)?.use { imageInput ->
|
||||
imageInput.copyTo(output)
|
||||
}
|
||||
// copy only the image to a temporary file for editing
|
||||
// video will be appended after metadata modification
|
||||
transferFrom(ByteArrayInputStream(imageBytes), imageBytes.size.toLong())
|
||||
}
|
||||
} else {
|
||||
// copy original file to a temporary file for editing
|
||||
val inputStream = StorageUtils.openInputStream(context, uri)
|
||||
transferFrom(inputStream, originalFileSize)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
callback.onFailure(e)
|
||||
|
@ -551,7 +539,7 @@ abstract class ImageProvider {
|
|||
}
|
||||
|
||||
// copy the edited temporary file back to the original
|
||||
copyTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
copyFileTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
|
||||
if (autoCorrectTrailerOffset && !checkTrailerOffset(context, path, uri, mimeType, videoSize, editableFile, callback)) {
|
||||
return false
|
||||
|
@ -626,7 +614,7 @@ abstract class ImageProvider {
|
|||
|
||||
try {
|
||||
// copy the edited temporary file back to the original
|
||||
copyTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
copyFileTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
|
||||
if (autoCorrectTrailerOffset && !checkTrailerOffset(context, path, uri, mimeType, videoSize, editableFile, callback)) {
|
||||
return false
|
||||
|
@ -926,26 +914,13 @@ abstract class ImageProvider {
|
|||
callback.onFailure(Exception("failed to get trailer video size"))
|
||||
return
|
||||
}
|
||||
val bytesToCopy = originalFileSize - videoSize
|
||||
|
||||
val editableFile = File.createTempFile("aves", null).apply {
|
||||
deleteOnExit()
|
||||
try {
|
||||
outputStream().use { output ->
|
||||
// reopen input to read from start
|
||||
StorageUtils.openInputStream(context, uri)?.use { input ->
|
||||
// partial copy
|
||||
var bytesRemaining: Long = bytesToCopy
|
||||
val buffer = ByteArray(DEFAULT_BUFFER_SIZE)
|
||||
var bytes = input.read(buffer)
|
||||
while (bytes >= 0 && bytesRemaining > 0) {
|
||||
val len = if (bytes > bytesRemaining) bytesRemaining.toInt() else bytes
|
||||
output.write(buffer, 0, len)
|
||||
bytesRemaining -= len
|
||||
bytes = input.read(buffer)
|
||||
}
|
||||
}
|
||||
}
|
||||
val inputStream = StorageUtils.openInputStream(context, uri)
|
||||
// partial copy
|
||||
transferFrom(inputStream, originalFileSize - videoSize)
|
||||
} catch (e: Exception) {
|
||||
Log.d(LOG_TAG, "failed to remove trailer video", e)
|
||||
callback.onFailure(e)
|
||||
|
@ -955,7 +930,7 @@ abstract class ImageProvider {
|
|||
|
||||
try {
|
||||
// copy the edited temporary file back to the original
|
||||
copyTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
copyFileTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
} catch (e: IOException) {
|
||||
callback.onFailure(e)
|
||||
return
|
||||
|
@ -998,7 +973,7 @@ abstract class ImageProvider {
|
|||
|
||||
try {
|
||||
// copy the edited temporary file back to the original
|
||||
copyTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
copyFileTo(context, mimeType, sourceFile = editableFile, targetUri = uri, targetPath = path)
|
||||
|
||||
if (!types.contains(Metadata.TYPE_XMP) && !checkTrailerOffset(context, path, uri, mimeType, videoSize, editableFile, callback)) {
|
||||
return
|
||||
|
@ -1012,25 +987,21 @@ abstract class ImageProvider {
|
|||
scanPostMetadataEdit(context, path, uri, mimeType, newFields, callback)
|
||||
}
|
||||
|
||||
private fun copyTo(
|
||||
private fun copyFileTo(
|
||||
context: Context,
|
||||
mimeType: String,
|
||||
sourceFile: File,
|
||||
targetUri: Uri,
|
||||
targetPath: String
|
||||
) {
|
||||
sourceFile.inputStream().use { input ->
|
||||
// truncate is necessary when overwriting a longer file
|
||||
val targetStream = if (isMediaUriPermissionGranted(context, targetUri, mimeType)) {
|
||||
StorageUtils.openOutputStream(context, targetUri, mimeType, "wt") ?: throw Exception("failed to open output stream for uri=$targetUri")
|
||||
} else {
|
||||
val documentUri = StorageUtils.getDocumentFile(context, targetPath, targetUri)?.uri ?: throw Exception("failed to get document file for path=$targetPath, uri=$targetUri")
|
||||
context.contentResolver.openOutputStream(documentUri, "wt") ?: throw Exception("failed to open output stream from documentUri=$documentUri for path=$targetPath, uri=$targetUri")
|
||||
}
|
||||
targetStream.use { output ->
|
||||
input.copyTo(output)
|
||||
}
|
||||
// truncate is necessary when overwriting a longer file
|
||||
val targetStream = if (isMediaUriPermissionGranted(context, targetUri, mimeType)) {
|
||||
StorageUtils.openOutputStream(context, targetUri, mimeType, "wt") ?: throw Exception("failed to open output stream for uri=$targetUri")
|
||||
} else {
|
||||
val documentUri = StorageUtils.getDocumentFile(context, targetPath, targetUri)?.uri ?: throw Exception("failed to get document file for path=$targetPath, uri=$targetUri")
|
||||
context.contentResolver.openOutputStream(documentUri, "wt") ?: throw Exception("failed to open output stream from documentUri=$documentUri for path=$targetPath, uri=$targetUri")
|
||||
}
|
||||
sourceFile.transferTo(targetStream)
|
||||
}
|
||||
|
||||
interface ImageOpCallback {
|
||||
|
|
|
@ -56,7 +56,7 @@ class MediaStoreImageProvider : ImageProvider() {
|
|||
val relativePath = PathSegments(context, relativePathDirectory).relativeDir
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && relativePath != null) {
|
||||
selection = "${MediaStore.MediaColumns.RELATIVE_PATH} = ? AND ${MediaColumns.PATH} LIKE ?"
|
||||
selectionArgs = arrayOf(relativePath, "relativePathDirectory%")
|
||||
selectionArgs = arrayOf(relativePath, "$relativePathDirectory%")
|
||||
} else {
|
||||
selection = "${MediaColumns.PATH} LIKE ?"
|
||||
selectionArgs = arrayOf("$relativePathDirectory%")
|
||||
|
|
|
@ -54,9 +54,8 @@ object BmpWriter {
|
|||
val padPerRow = (4 - (biWidth * BYTE_PER_PIXEL) % 4) % 4
|
||||
val biSizeImage = (biWidth * BYTE_PER_PIXEL + padPerRow) * biHeight
|
||||
val bfSize = FILE_HEADER_SIZE + INFO_HEADER_SIZE + biSizeImage
|
||||
val buffer = ByteBuffer.allocate(bfSize)
|
||||
val pixels = IntArray(biWidth * biHeight)
|
||||
bitmap.getPixels(pixels, 0, biWidth, 0, 0, biWidth, biHeight)
|
||||
|
||||
var buffer = ByteBuffer.allocate(FILE_HEADER_SIZE + INFO_HEADER_SIZE)
|
||||
|
||||
// file header
|
||||
buffer.put(bfType)
|
||||
|
@ -78,11 +77,17 @@ object BmpWriter {
|
|||
buffer.put(biClrUsed)
|
||||
buffer.put(biClrImportant)
|
||||
|
||||
outputStream.write(buffer.array())
|
||||
|
||||
// pixels
|
||||
buffer = ByteBuffer.allocate(biWidth * BYTE_PER_PIXEL + padPerRow)
|
||||
val pixels = IntArray(biWidth)
|
||||
val rgb = ByteArray(BYTE_PER_PIXEL)
|
||||
var value: Int
|
||||
var row = biHeight - 1
|
||||
while (row >= 0) {
|
||||
bitmap.getPixels(pixels, 0, biWidth, 0, row, biWidth, 1)
|
||||
|
||||
var column = 0
|
||||
while (column < biWidth) {
|
||||
/*
|
||||
|
@ -91,7 +96,7 @@ object BmpWriter {
|
|||
green: (value shr 8 and 0xFF).toByte()
|
||||
blue: (value and 0xFF).toByte()
|
||||
*/
|
||||
value = pixels[row * biWidth + column]
|
||||
value = pixels[column]
|
||||
// blue: [0], green: [1], red: [2]
|
||||
rgb[0] = (value and 0xFF).toByte()
|
||||
rgb[1] = (value shr 8 and 0xFF).toByte()
|
||||
|
@ -102,10 +107,9 @@ object BmpWriter {
|
|||
if (padPerRow > 0) {
|
||||
buffer.put(pad, 0, padPerRow)
|
||||
}
|
||||
outputStream.write(buffer.array())
|
||||
buffer.clear()
|
||||
row--
|
||||
}
|
||||
|
||||
// write to output stream
|
||||
outputStream.write(buffer.array())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package deckers.thibault.aves.utils
|
||||
|
||||
import android.os.Build
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.nio.channels.Channels
|
||||
import java.nio.channels.FileChannel
|
||||
import java.nio.file.StandardOpenOption
|
||||
|
||||
object FileUtils {
|
||||
fun File.transferFrom(inputStream: InputStream?, streamLength: Long?) {
|
||||
inputStream ?: return
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && streamLength != null) {
|
||||
FileChannel.open(toPath(), StandardOpenOption.WRITE).use { fileOutput ->
|
||||
Channels.newChannel(inputStream).use { input ->
|
||||
fileOutput.transferFrom(input, 0, streamLength)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
outputStream().use { fileOutput ->
|
||||
inputStream.use { input ->
|
||||
input.copyTo(fileOutput)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun File.transferTo(outputStream: OutputStream) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
FileChannel.open(toPath()).use { fileInput ->
|
||||
Channels.newChannel(outputStream).use { output ->
|
||||
fileInput.transferTo(0, fileInput.size(), output)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
inputStream().use { fileInput ->
|
||||
outputStream.use { output ->
|
||||
fileInput.copyTo(output)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -171,6 +171,7 @@ object PermissionManager {
|
|||
// returns paths accessible to the app (granted by the user or by default)
|
||||
private fun getAccessibleDirs(context: Context): Set<String> {
|
||||
val accessibleDirs = HashSet(getGrantedDirs(context))
|
||||
accessibleDirs.addAll(context.getExternalFilesDirs(null).filterNotNull().map { it.path })
|
||||
|
||||
// until API 18 / Android 4.3 / Jelly Bean MR2, removable storage is accessible by default like primary storage
|
||||
// from API 19 / Android 4.4 / KitKat, removable storage requires access permission, at the file level
|
||||
|
|
|
@ -16,6 +16,7 @@ import android.text.TextUtils
|
|||
import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
import com.commonsware.cwac.document.DocumentFileCompat
|
||||
import deckers.thibault.aves.utils.FileUtils.transferFrom
|
||||
import deckers.thibault.aves.utils.MimeTypes.isImage
|
||||
import deckers.thibault.aves.utils.MimeTypes.isVideo
|
||||
import deckers.thibault.aves.utils.PermissionManager.getGrantedDirForPath
|
||||
|
@ -507,7 +508,7 @@ object StorageUtils {
|
|||
// to work around a bug from Android 10 where metadata redaction corrupts HEIC images.
|
||||
// This loader relies on `MediaStore.setRequireOriginal` but this yields a `SecurityException`
|
||||
// for some non image/video content URIs (e.g. `downloads`, `file`)
|
||||
fun getGlideSafeUri(context: Context, uri: Uri, mimeType: String): Uri {
|
||||
fun getGlideSafeUri(context: Context, uri: Uri, mimeType: String, sizeBytes: Long? = null): Uri {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && isMediaStoreContentUri(uri)) {
|
||||
val uriPath = uri.path
|
||||
when {
|
||||
|
@ -521,11 +522,7 @@ object StorageUtils {
|
|||
File.createTempFile("aves", null).apply {
|
||||
deleteOnExit()
|
||||
try {
|
||||
outputStream().use { output ->
|
||||
openInputStream(context, uri)?.use { input ->
|
||||
input.copyTo(output)
|
||||
}
|
||||
}
|
||||
transferFrom(openInputStream(context, uri), sizeBytes)
|
||||
return Uri.fromFile(this)
|
||||
} catch (e: Exception) {
|
||||
Log.e(LOG_TAG, "failed to create temporary file from uri=$uri", e)
|
||||
|
|
12
android/app/src/main/res/values-el/strings.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Aves</string>
|
||||
<string name="app_widget_label">Κορνίζα</string>
|
||||
<string name="wallpaper">Ταπετσαρία</string>
|
||||
<string name="search_shortcut_short_label">Αναζήτηση</string>
|
||||
<string name="videos_shortcut_short_label">Βίντεο</string>
|
||||
<string name="analysis_channel_name">Σάρωση πολυμέσων</string>
|
||||
<string name="analysis_service_description">Σάρωση εικόνων & Βίντεο</string>
|
||||
<string name="analysis_notification_default_title">Σάρωση στοιχείων</string>
|
||||
<string name="analysis_notification_action_stop">Διακοπή</string>
|
||||
</resources>
|
|
@ -10,8 +10,8 @@ buildscript {
|
|||
classpath 'com.android.tools.build:gradle:7.2.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
// GMS & Firebase Crashlytics (used by some flavors only)
|
||||
classpath 'com.google.gms:google-services:4.3.13'
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1'
|
||||
classpath 'com.google.gms:google-services:4.3.14'
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
|
||||
// HMS (used by some flavors only)
|
||||
classpath 'com.huawei.agconnect:agcp:1.5.2.300'
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
5
fastlane/metadata/android/el/full_description.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
Η εφαρμογή <i>Aves</i> μπορεί να διαχειριστεί όλα τα είδη εικόνων και βίντεο, συμπεριλαμβανομένων των κλασσικών JPEG και MP4, αλλά και πιο προχωρημένα πράγματα όπως <b>multi-page TIFFs, SVGs, old AVIs και ακόμα περισσότερα</b>! Σαρώνει τη συλλογή των πολυμέσων σας για να αναγνωρίσει <b>Φωτογραφίες με κίνηση</b>, <b>Πανοραμικές</b> (aka photo spheres), <b>Βίντεο 360°</b>, καθώς και <b>GeoTIFF</b> αρχεία.
|
||||
|
||||
<b>Η πλοήγηση και η αναζήτηση</b> αποτελούν σημαντικό μέρος της εφαρμογής <i>Aves</i>. Ο στόχος της εφαρμογής είναι να παρέχει στους χρήστες εύκολη και γρήγορη πρόσβαση στα άλμπουμ, σε φωτογραφίες, ετικέτες, χάρτες κ.λπ.
|
||||
|
||||
Η εφαρμογή <i>Aves</i> εγκαθίσταται στο λογισμικό Android (συμβατότητα από <b>API 19 έως 33</b>, δηλαδή από KitKat έως Android 13) με δυνατότητες όπως <b>γραφικά στοιχεία</b>, <b>συντομεύσεις</b>, <b>προφύλαξη οθόνης</b> και <b>global search</b>. Μπορεί επίσης να χρησιμοποιηθεί ως <b>εφαρμογή προβολής και επιλογής πολυμέσων</b>.
|
BIN
fastlane/metadata/android/el/images/featureGraphic.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/1.png
Normal file
After Width: | Height: | Size: 255 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/2.png
Normal file
After Width: | Height: | Size: 499 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/3.png
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/4.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/5.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/6.png
Normal file
After Width: | Height: | Size: 350 KiB |
BIN
fastlane/metadata/android/el/images/phoneScreenshots/7.png
Normal file
After Width: | Height: | Size: 346 KiB |
1
fastlane/metadata/android/el/short_description.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Συλλογή φωτογραφιών και εξερεύνηση των μεταδεδομένων.
|
5
fastlane/metadata/android/en-US/changelogs/1080.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
In v1.7.0:
|
||||
- change the sort order
|
||||
- edit image titles
|
||||
- enjoy the app in Greek
|
||||
Full changelog available on GitHub
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 72 KiB |
|
@ -12,7 +12,7 @@ class TopoJson {
|
|||
|
||||
static Topology? _isoParse(String jsonData) {
|
||||
try {
|
||||
final data = json.decode(jsonData) as Map<String, dynamic>;
|
||||
final data = jsonDecode(jsonData) as Map<String, dynamic>;
|
||||
return Topology.parse(data);
|
||||
} catch (error, stack) {
|
||||
// an unhandled error in a spawn isolate would make the app crash
|
||||
|
|
|
@ -9,7 +9,7 @@ import 'package:flutter/widgets.dart';
|
|||
@immutable
|
||||
class UriImage extends ImageProvider<UriImage> with EquatableMixin {
|
||||
final String uri, mimeType;
|
||||
final int? pageId, rotationDegrees, expectedContentLength;
|
||||
final int? pageId, rotationDegrees, sizeBytes;
|
||||
final bool isFlipped;
|
||||
final double scale;
|
||||
|
||||
|
@ -22,7 +22,7 @@ class UriImage extends ImageProvider<UriImage> with EquatableMixin {
|
|||
required this.pageId,
|
||||
required this.rotationDegrees,
|
||||
required this.isFlipped,
|
||||
this.expectedContentLength,
|
||||
this.sizeBytes,
|
||||
this.scale = 1.0,
|
||||
});
|
||||
|
||||
|
@ -55,7 +55,7 @@ class UriImage extends ImageProvider<UriImage> with EquatableMixin {
|
|||
rotationDegrees,
|
||||
isFlipped,
|
||||
pageId: pageId,
|
||||
expectedContentLength: expectedContentLength,
|
||||
sizeBytes: sizeBytes,
|
||||
onBytesReceived: (cumulative, total) {
|
||||
chunkEvents.add(ImageChunkEvent(
|
||||
cumulativeBytesLoaded: cumulative,
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Entfernen",
|
||||
"resetTooltip": "Zurücksetzen",
|
||||
"saveTooltip": "Speichern",
|
||||
"pickTooltip": "Wähle",
|
||||
|
||||
"doubleBackExitMessage": "Zum Verlassen erneut auf „Zurück“ tippen.",
|
||||
"doNotAskAgain": "Nicht noch einmal fragen",
|
||||
|
@ -87,18 +88,17 @@
|
|||
|
||||
"entryInfoActionEditDate": "Datum & Uhrzeit bearbeiten",
|
||||
"entryInfoActionEditLocation": "Standort bearbeiten",
|
||||
"entryInfoActionEditDescription": "Beschreibung bearbeiten",
|
||||
"entryInfoActionEditRating": "Bewertung bearbeiten",
|
||||
"entryInfoActionEditTags": "Tags bearbeiten",
|
||||
"entryInfoActionRemoveMetadata": "Metadaten entfernen",
|
||||
|
||||
"filterBinLabel": "Papierkorb",
|
||||
"filterFavouriteLabel": "Favorit",
|
||||
"filterLocationEmptyLabel": "Ungeortet",
|
||||
"filterTagEmptyLabel": "Unmarkiert",
|
||||
"filterNoLocationLabel": "Ungeortet",
|
||||
"filterNoRatingLabel": "Nicht bewertet",
|
||||
"filterNoTagLabel": "Unmarkiert",
|
||||
"filterOnThisDayLabel": "Am heutigen Tag",
|
||||
"filterRecentlyAddedLabel": "Kürzlich hinzugefügt",
|
||||
"filterRatingUnratedLabel": "Nicht bewertet",
|
||||
"filterRatingRejectedLabel": "Verworfen",
|
||||
"filterTypeAnimatedLabel": "Animationen",
|
||||
"filterTypeMotionPhotoLabel": "Bewegtes Foto",
|
||||
|
@ -179,16 +179,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD-Karte",
|
||||
"rootDirectoryDescription": "Hauptverzeichnis",
|
||||
"otherDirectoryDescription": "„{name}“ Verzeichnis",
|
||||
"storageAccessDialogTitle": "Speicherzugriff",
|
||||
"storageAccessDialogMessage": "Bitte den {directory} von „{volume}“ auf dem nächsten Bildschirm auswählen, um dieser App Zugriff darauf zu geben.",
|
||||
"restrictedAccessDialogTitle": "Eingeschränkter Zugang",
|
||||
"restrictedAccessDialogMessage": "Diese Anwendung darf keine Dateien im {directory} von „{volume}“ verändern.\n\nBitte einen vorinstallierten Dateimanager verwenden oder eine Galerie-App, um die Objekte in ein anderes Verzeichnis zu verschieben.",
|
||||
"notEnoughSpaceDialogTitle": "Nicht genug Platz",
|
||||
"notEnoughSpaceDialogMessage": "Diese Operation benötigt {neededSize} freien Platz auf „{volume}“, um abgeschlossen zu werden, aber es ist nur noch {freeSize} übrig.",
|
||||
"missingSystemFilePickerDialogTitle": "Fehlender System-Dateiauswahldialog",
|
||||
"missingSystemFilePickerDialogMessage": "Der System-Dateiauswahldialog fehlt oder ist deaktiviert. Bitte aktivieren und es erneut versuchen.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Nicht unterstützte Typen",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Dieser Vorgang wird für Elemente des folgenden Typs nicht unterstützt: {types}.} other{Dieser Vorgang wird für Elemente der folgenden Typen nicht unterstützt: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Einige Dateien im Zielordner haben den gleichen Namen.",
|
||||
|
@ -197,7 +192,6 @@
|
|||
"addShortcutDialogLabel": "Shortcut-Etikett",
|
||||
"addShortcutButtonLabel": "Hinzufügen",
|
||||
|
||||
"noMatchingAppDialogTitle": "Keine passende App",
|
||||
"noMatchingAppDialogMessage": "Es gibt keine Anwendungen, die dies bewältigen können.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Dieses Element in den Papierkorb verschieben?} other{Diese {count} Elemente in den Papierkorb verschieben?}}",
|
||||
|
@ -226,7 +220,7 @@
|
|||
"renameEntrySetPageTitle": "Umbenennen",
|
||||
"renameEntrySetPagePatternFieldLabel": "Benennungsmuster",
|
||||
"renameEntrySetPageInsertTooltip": "Feld einfügen",
|
||||
"renameEntrySetPagePreview": "Vorschau",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Vorschau",
|
||||
|
||||
"renameProcessorCounter": "Zähler",
|
||||
"renameProcessorName": "Name",
|
||||
|
@ -259,8 +253,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Diesen Standort verwenden",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Beschreibung",
|
||||
|
||||
"editEntryRatingDialogTitle": "Bewertung",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Entfernung von Metadaten",
|
||||
|
@ -289,9 +281,9 @@
|
|||
"menuActionSlideshow": "Diashow",
|
||||
"menuActionStats": "Statistiken",
|
||||
|
||||
"viewDialogTabSort": "Sortieren",
|
||||
"viewDialogTabGroup": "Gruppe",
|
||||
"viewDialogTabLayout": "Layout",
|
||||
"viewDialogSortSectionTitle": "Sortieren",
|
||||
"viewDialogGroupSectionTitle": "Gruppe",
|
||||
"viewDialogLayoutSectionTitle": "Layout",
|
||||
|
||||
"tileLayoutGrid": "Kacheln",
|
||||
"tileLayoutList": "Liste",
|
||||
|
@ -308,24 +300,24 @@
|
|||
"aboutLinkLicense": "Lizenz",
|
||||
"aboutLinkPolicy": "Datenschutzrichtlinie",
|
||||
|
||||
"aboutBug": "Fehlerbericht",
|
||||
"aboutBugSectionTitle": "Fehlerbericht",
|
||||
"aboutBugSaveLogInstruction": "Anwendungsprotokolle in einer Datei speichern",
|
||||
"aboutBugCopyInfoInstruction": "Systeminformationen kopieren",
|
||||
"aboutBugCopyInfoButton": "Kopieren",
|
||||
"aboutBugReportInstruction": "Bericht auf GitHub mit den Protokollen und Systeminformationen",
|
||||
"aboutBugReportButton": "Bericht",
|
||||
|
||||
"aboutCredits": "Credits",
|
||||
"aboutCreditsSectionTitle": "Credits",
|
||||
"aboutCreditsWorldAtlas1": "Diese Anwendung verwendet eine TopoJSON-Datei von",
|
||||
"aboutCreditsWorldAtlas2": "unter ISC-Lizenz.",
|
||||
"aboutCreditsTranslators": "Übersetzer",
|
||||
"aboutTranslatorsSectionTitle": "Übersetzer",
|
||||
|
||||
"aboutLicenses": "Open-Source-Lizenzen",
|
||||
"aboutLicensesSectionTitle": "Open-Source-Lizenzen",
|
||||
"aboutLicensesBanner": "Diese Anwendung verwendet die folgenden Open-Source-Pakete und -Bibliotheken.",
|
||||
"aboutLicensesAndroidLibraries": "Android-Bibliotheken",
|
||||
"aboutLicensesFlutterPlugins": "Flutter-Plugins",
|
||||
"aboutLicensesFlutterPackages": "Flatter-Pakete",
|
||||
"aboutLicensesDartPackages": "Dart-Pakete",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android-Bibliotheken",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter-Plugins",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flatter-Pakete",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart-Pakete",
|
||||
"aboutLicensesShowAllButtonLabel": "Alle Lizenzen anzeigen",
|
||||
|
||||
"policyPageTitle": "Datenschutzrichtlinie",
|
||||
|
@ -345,11 +337,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Titel suchen",
|
||||
|
||||
"collectionSortDate": "Nach Datum",
|
||||
"collectionSortSize": "Nach Größe",
|
||||
"collectionSortName": "Nach Album & Dateiname",
|
||||
"collectionSortRating": "Nach Bewertung",
|
||||
|
||||
"collectionGroupAlbum": "Nach Album",
|
||||
"collectionGroupMonth": "Nach Monat",
|
||||
"collectionGroupDay": "Nach Tag",
|
||||
|
@ -378,6 +365,8 @@
|
|||
"collectionSelectSectionTooltip": "Bereich auswählen",
|
||||
"collectionDeselectSectionTooltip": "Bereich abwählen",
|
||||
|
||||
"drawerAboutButton": "Über",
|
||||
"drawerSettingsButton": "Einstellungen",
|
||||
"drawerCollectionAll": "Alle Bilder",
|
||||
"drawerCollectionFavourites": "Favoriten",
|
||||
"drawerCollectionImages": "Bilder",
|
||||
|
@ -387,10 +376,16 @@
|
|||
"drawerCollectionPanoramas": "Panoramen",
|
||||
"drawerCollectionRaws": "Rohdaten Fotos",
|
||||
"drawerCollectionSphericalVideos": "360°-Videos",
|
||||
"drawerAlbumPage": "Alben",
|
||||
"drawerCountryPage": "Länder",
|
||||
"drawerTagPage": "Tags",
|
||||
|
||||
"chipSortDate": "Nach Datum",
|
||||
"chipSortName": "Nach Name",
|
||||
"chipSortCount": "Nach Anzahl",
|
||||
"sortByDate": "Nach Datum",
|
||||
"sortByName": "Nach Name",
|
||||
"sortByItemCount": "Nach Anzahl",
|
||||
"sortBySize": "Nach Größe",
|
||||
"sortByAlbumFileName": "Nach Album & Dateiname",
|
||||
"sortByRating": "Nach Bewertung",
|
||||
|
||||
"albumGroupTier": "Nach Ebene",
|
||||
"albumGroupVolume": "Nach Speichervolumen",
|
||||
|
@ -422,13 +417,13 @@
|
|||
"binPageTitle": "Papierkorb",
|
||||
|
||||
"searchCollectionFieldHint": "Sammlung durchsuchen",
|
||||
"searchSectionRecent": "Neueste",
|
||||
"searchSectionDate": "Datum",
|
||||
"searchSectionAlbums": "Alben",
|
||||
"searchSectionCountries": "Länder",
|
||||
"searchSectionPlaces": "Orte",
|
||||
"searchSectionTags": "Tags",
|
||||
"searchSectionRating": "Bewertungen",
|
||||
"searchRecentSectionTitle": "Neueste",
|
||||
"searchDateSectionTitle": "Datum",
|
||||
"searchAlbumsSectionTitle": "Alben",
|
||||
"searchCountriesSectionTitle": "Länder",
|
||||
"searchPlacesSectionTitle": "Orte",
|
||||
"searchTagsSectionTitle": "Tags",
|
||||
"searchRatingSectionTitle": "Bewertungen",
|
||||
|
||||
"settingsPageTitle": "Einstellungen",
|
||||
"settingsSystemDefault": "System",
|
||||
|
@ -437,37 +432,40 @@
|
|||
"settingsSearchFieldLabel": "Einstellungen durchsuchen",
|
||||
"settingsSearchEmpty": "Keine passende Einstellung",
|
||||
"settingsActionExport": "Exportieren",
|
||||
"settingsActionExportDialogTitle": "Exportieren",
|
||||
"settingsActionImport": "Importieren",
|
||||
"settingsActionImportDialogTitle": "Importieren",
|
||||
|
||||
"appExportCovers": "Titelbilder",
|
||||
"appExportFavourites": "Favoriten",
|
||||
"appExportSettings": "Einstellungen",
|
||||
|
||||
"settingsSectionNavigation": "Navigation",
|
||||
"settingsHome": "Startseite",
|
||||
"settingsNavigationSectionTitle": "Navigation",
|
||||
"settingsHomeTile": "Startseite",
|
||||
"settingsHomeDialogTitle": "Startseite",
|
||||
"settingsShowBottomNavigationBar": "Untere Navigationsleiste anzeigen",
|
||||
"settingsKeepScreenOnTile": "Bildschirm eingeschaltet lassen",
|
||||
"settingsKeepScreenOnTitle": "Bildschirm eingeschaltet lassen",
|
||||
"settingsKeepScreenOnDialogTitle": "Bildschirm eingeschaltet lassen",
|
||||
"settingsDoubleBackExit": "Zum Verlassen zweimal „zurück“ tippen",
|
||||
|
||||
"settingsConfirmationDialogTile": "Bestätigungsdialoge",
|
||||
"settingsConfirmationTile": "Bestätigungsdialoge",
|
||||
"settingsConfirmationDialogTitle": "Bestätigungsdialoge",
|
||||
"settingsConfirmationDialogDeleteItems": "Vor dem endgültigen Löschen von Elementen fragen",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Vor dem Verschieben von Elementen in den Papierkorb fragen",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Vor Verschiebung von Objekten ohne Metadaten-Datum fragen",
|
||||
"settingsConfirmationBeforeDeleteItems": "Vor dem endgültigen Löschen von Elementen fragen",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Vor dem Verschieben von Elementen in den Papierkorb fragen",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Vor Verschiebung von Objekten ohne Metadaten-Datum fragen",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Nachricht nach dem Verschieben von Elementen in den Papierkorb anzeigen",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menü Navigation",
|
||||
"settingsNavigationDrawerEditorTitle": "Menü Navigation",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menü Navigation",
|
||||
"settingsNavigationDrawerBanner": "Die Taste berühren und halten, um Menüpunkte zu verschieben und neu anzuordnen.",
|
||||
"settingsNavigationDrawerTabTypes": "Typen",
|
||||
"settingsNavigationDrawerTabAlbums": "Alben",
|
||||
"settingsNavigationDrawerTabPages": "Seiten",
|
||||
"settingsNavigationDrawerAddAlbum": "Album hinzufügen",
|
||||
|
||||
"settingsSectionThumbnails": "Vorschaubilder",
|
||||
"settingsThumbnailSectionTitle": "Vorschaubilder",
|
||||
"settingsThumbnailOverlayTile": "Überlagerung",
|
||||
"settingsThumbnailOverlayTitle": "Überlagerung",
|
||||
"settingsThumbnailOverlayPageTitle": "Überlagerung",
|
||||
"settingsThumbnailShowFavouriteIcon": "Favoriten-Symbol anzeigen",
|
||||
"settingsThumbnailShowTagIcon": "Tag-Symbol anzeigen",
|
||||
"settingsThumbnailShowLocationIcon": "Standort-Symbol anzeigen",
|
||||
|
@ -477,13 +475,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Videodauer anzeigen",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Schnelle Aktionen",
|
||||
"settingsCollectionQuickActionEditorTitle": "Schnelle Aktionen",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Schnelle Aktionen",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Durchsuchen",
|
||||
"settingsCollectionQuickActionTabSelecting": "Auswahl",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Die Taste gedrückt halten, um die Schaltflächen zu bewegen und auszuwählen, welche Aktionen beim Durchsuchen von Elementen angezeigt werden.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Die Taste gedrückt halten, um die Schaltflächen zu bewegen und auszuwählen, welche Aktionen beim Durchsuchen von Elementen angezeigt werden.",
|
||||
|
||||
"settingsSectionViewer": "Anzeige",
|
||||
"settingsViewerSectionTitle": "Anzeige",
|
||||
"settingsViewerGestureSideTapNext": "Tippen auf den Bildschirmrand, um das vorheriges/nächstes Element anzuzeigen",
|
||||
"settingsViewerUseCutout": "Ausgeschnittenen Bereich verwenden",
|
||||
"settingsViewerMaximumBrightness": "Maximale Helligkeit",
|
||||
|
@ -491,14 +489,14 @@
|
|||
"settingsImageBackground": "Bild-Hintergrund",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Schnelle Aktionen",
|
||||
"settingsViewerQuickActionEditorTitle": "Schnelle Aktionen",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Schnelle Aktionen",
|
||||
"settingsViewerQuickActionEditorBanner": "Die Taste gedrückt halten, um die Schaltflächen zu bewegen und auszuwählen, welche Aktionen im Viewer angezeigt werden sollen.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Angezeigte Schaltflächen",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Verfügbare Schaltflächen",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Angezeigte Schaltflächen",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Verfügbare Schaltflächen",
|
||||
"settingsViewerQuickActionEmpty": "Keine Tasten",
|
||||
|
||||
"settingsViewerOverlayTile": "Überlagerung",
|
||||
"settingsViewerOverlayTitle": "Überlagerung",
|
||||
"settingsViewerOverlayPageTitle": "Überlagerung",
|
||||
"settingsViewerShowOverlayOnOpening": "Bei Eröffnung anzeigen",
|
||||
"settingsViewerShowMinimap": "Minimap anzeigen",
|
||||
"settingsViewerShowInformation": "Informationen anzeigen",
|
||||
|
@ -508,30 +506,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Unschärfe-Effekt",
|
||||
|
||||
"settingsViewerSlideshowTile": "Diashow",
|
||||
"settingsViewerSlideshowTitle": "Diashow",
|
||||
"settingsViewerSlideshowPageTitle": "Diashow",
|
||||
"settingsSlideshowRepeat": "Wiederholung",
|
||||
"settingsSlideshowShuffle": "Mischen",
|
||||
"settingsSlideshowFillScreen": "Bildschirm ausfüllen",
|
||||
"settingsSlideshowTransitionTile": "Übergang",
|
||||
"settingsSlideshowTransitionTitle": "Übergang",
|
||||
"settingsSlideshowTransitionDialogTitle": "Übergang",
|
||||
"settingsSlideshowIntervalTile": "Intervall",
|
||||
"settingsSlideshowIntervalTitle": "Intervall",
|
||||
"settingsSlideshowIntervalDialogTitle": "Intervall",
|
||||
"settingsSlideshowVideoPlaybackTile": "Videowiedergabe",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Videowiedergabe",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Videowiedergabe",
|
||||
|
||||
"settingsVideoPageTitle": "Video-Einstellungen",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Videos anzeigen",
|
||||
"settingsVideoEnableHardwareAcceleration": "Hardware-Beschleunigung",
|
||||
"settingsVideoEnableAutoPlay": "Automatische Wiedergabe",
|
||||
"settingsVideoLoopModeTile": "Schleifen-Modus",
|
||||
"settingsVideoLoopModeTitle": "Schleifen-Modus",
|
||||
"settingsVideoLoopModeDialogTitle": "Schleifen-Modus",
|
||||
|
||||
"settingsSubtitleThemeTile": "Untertitel",
|
||||
"settingsSubtitleThemeTitle": "Untertitel",
|
||||
"settingsSubtitleThemePageTitle": "Untertitel",
|
||||
"settingsSubtitleThemeSample": "Dies ist ein Beispiel.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Textausrichtung",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Textausrichtung",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Textausrichtung",
|
||||
"settingsSubtitleThemeTextSize": "Textgröße",
|
||||
"settingsSubtitleThemeShowOutline": "Umriss und Schatten anzeigen",
|
||||
"settingsSubtitleThemeTextColor": "Textfarbe",
|
||||
|
@ -543,13 +541,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Rechts",
|
||||
|
||||
"settingsVideoControlsTile": "Steuerung",
|
||||
"settingsVideoControlsTitle": "Steuerung",
|
||||
"settingsVideoControlsPageTitle": "Steuerung",
|
||||
"settingsVideoButtonsTile": "Schaltflächen",
|
||||
"settingsVideoButtonsTitle": "Schaltflächen",
|
||||
"settingsVideoButtonsDialogTitle": "Schaltflächen",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Doppeltippen zum Abspielen/Pausieren",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Doppeltippen auf die Bildschirmränder zum Rückwärts-/Vorwärtsspringen",
|
||||
|
||||
"settingsSectionPrivacy": "Datenschutz",
|
||||
"settingsPrivacySectionTitle": "Datenschutz",
|
||||
"settingsAllowInstalledAppAccess": "Zugriff auf die Liste der installierten Apps",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "zur Gruppierung von Bildern nach Apps",
|
||||
"settingsAllowErrorReporting": "Anonyme Fehlermeldungen zulassen",
|
||||
|
@ -558,52 +556,56 @@
|
|||
"settingsEnableBinSubtitle": "Gelöschte Elemente 30 Tage lang aufbewahren",
|
||||
|
||||
"settingsHiddenItemsTile": "Versteckte Elemente",
|
||||
"settingsHiddenItemsTitle": "Versteckte Elemente",
|
||||
"settingsHiddenItemsPageTitle": "Versteckte Elemente",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Versteckte Filter",
|
||||
"settingsHiddenItemsTabFilters": "Versteckte Filter",
|
||||
"settingsHiddenFiltersBanner": "Fotos und Videos, die versteckten Filtern entsprechen, werden nicht in Ihrer Sammlung angezeigt.",
|
||||
"settingsHiddenFiltersEmpty": "Keine versteckten Filter",
|
||||
|
||||
"settingsHiddenPathsTitle": "Verborgene Pfade",
|
||||
"settingsHiddenItemsTabPaths": "Verborgene Pfade",
|
||||
"settingsHiddenPathsBanner": "Fotos und Videos, die sich in diesen Ordnern oder in einem ihrer Unterordner befinden, werden nicht in Ihrer Sammlung angezeigt.",
|
||||
"addPathTooltip": "Pfad hinzufügen",
|
||||
|
||||
"settingsStorageAccessTile": "Speicherzugriff",
|
||||
"settingsStorageAccessTitle": "Speicherzugriff",
|
||||
"settingsStorageAccessPageTitle": "Speicherzugriff",
|
||||
"settingsStorageAccessBanner": "Einige Verzeichnisse erfordern eine explizite Zugriffsberechtigung, um Dateien darin zu ändern. Hier können Verzeichnisse überprüft werden, auf die zuvor Zugriff gewährt wurde.",
|
||||
"settingsStorageAccessEmpty": "Keine Zugangsberechtigungen",
|
||||
"settingsStorageAccessRevokeTooltip": "Widerrufen",
|
||||
|
||||
"settingsSectionAccessibility": "Barrierefreiheit",
|
||||
"settingsAccessibilitySectionTitle": "Barrierefreiheit",
|
||||
"settingsRemoveAnimationsTile": "Animationen entfernen",
|
||||
"settingsRemoveAnimationsTitle": "Animationen entfernen",
|
||||
"settingsRemoveAnimationsDialogTitle": "Animationen entfernen",
|
||||
"settingsTimeToTakeActionTile": "Zeit zum Reagieren",
|
||||
"settingsTimeToTakeActionTitle": "Zeit zum Reagieren",
|
||||
"settingsTimeToTakeActionDialogTitle": "Zeit zum Reagieren",
|
||||
|
||||
"settingsSectionDisplay": "Anzeige",
|
||||
"settingsThemeBrightness": "Thema",
|
||||
"settingsDisplaySectionTitle": "Anzeige",
|
||||
"settingsThemeBrightnessTile": "Thema",
|
||||
"settingsThemeBrightnessDialogTitle": "Thema",
|
||||
"settingsThemeColorHighlights": "Farbige Highlights",
|
||||
"settingsThemeEnableDynamicColor": "Dynamische Farben",
|
||||
"settingsDisplayRefreshRateModeTile": "Bildwiederholrate der Anzeige",
|
||||
"settingsDisplayRefreshRateModeTitle": "Bildwiederholrate",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Bildwiederholrate",
|
||||
|
||||
"settingsSectionLanguage": "Sprache & Formate",
|
||||
"settingsLanguage": "Sprache",
|
||||
"settingsLanguageSectionTitle": "Sprache & Formate",
|
||||
"settingsLanguageTile": "Sprache",
|
||||
"settingsLanguagePageTitle": "Sprache",
|
||||
"settingsCoordinateFormatTile": "Koordinatenformat",
|
||||
"settingsCoordinateFormatTitle": "Koordinatenformat",
|
||||
"settingsCoordinateFormatDialogTitle": "Koordinatenformat",
|
||||
"settingsUnitSystemTile": "Einheiten",
|
||||
"settingsUnitSystemTitle": "Einheiten",
|
||||
"settingsUnitSystemDialogTitle": "Einheiten",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Bildschirmschoner",
|
||||
|
||||
"settingsWidgetPageTitle": "Bilderrahmen",
|
||||
"settingsWidgetShowOutline": "Gliederung",
|
||||
|
||||
"settingsCollectionTile": "Sammlung",
|
||||
|
||||
"statsPageTitle": "Statistiken",
|
||||
"statsWithGps": "{count, plural, =1{1 Element mit Standort} other{{count} Elemente mit Standort}}",
|
||||
"statsTopCountries": "Top-Länder",
|
||||
"statsTopPlaces": "Top-Plätze",
|
||||
"statsTopTags": "Top-Tags",
|
||||
"statsTopCountriesSectionTitle": "Top-Länder",
|
||||
"statsTopPlacesSectionTitle": "Top-Plätze",
|
||||
"statsTopTagsSectionTitle": "Top-Tags",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "ÖFFNE PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "HINTERGRUNDBILD EINSTELLEN",
|
||||
|
@ -614,6 +616,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Zurück zum Betrachter",
|
||||
|
||||
"viewerInfoUnknown": "Unbekannt",
|
||||
"viewerInfoLabelDescription": "Beschreibung",
|
||||
"viewerInfoLabelTitle": "Titel",
|
||||
"viewerInfoLabelDate": "Datum",
|
||||
"viewerInfoLabelResolution": "Auflösung",
|
||||
|
@ -625,7 +628,7 @@
|
|||
"viewerInfoLabelCoordinates": "Koordinaten",
|
||||
"viewerInfoLabelAddress": "Adresse",
|
||||
|
||||
"mapStyleTitle": "Kartenstil",
|
||||
"mapStyleDialogTitle": "Kartenstil",
|
||||
"mapStyleTooltip": "Kartenstil auswählen",
|
||||
"mapZoomInTooltip": "Vergrößern",
|
||||
"mapZoomOutTooltip": "Verkleinern",
|
||||
|
|
682
lib/l10n/app_el.arb
Normal file
|
@ -0,0 +1,682 @@
|
|||
{
|
||||
"appName": "Aves",
|
||||
"welcomeMessage": "Καλωσορίσατε στην εφαρμογή Aves",
|
||||
"welcomeOptional": "Προαιρετικό",
|
||||
"welcomeTermsToggle": "Συμφωνώ με τους όρους και τις προυποθέσεις",
|
||||
"itemCount": "{count, plural, =1{1 στοιχείο} other{{count} στοιχεία}}",
|
||||
|
||||
"timeSeconds": "{seconds, plural, =1{1 δευτερόλεπτο} other{{seconds} δευτερόλεπτα}}",
|
||||
"timeMinutes": "{minutes, plural, =1{1 λεπτό} other{{minutes} λεπτά}}",
|
||||
"timeDays": "{days, plural, =1{1 ημέρα} other{{days} ημέρες}}",
|
||||
"focalLength": "{length} mm",
|
||||
|
||||
"applyButtonLabel": "ΕΦΑΡΜΟΓΗ",
|
||||
"deleteButtonLabel": "ΔΙΑΓΡΑΦΗ",
|
||||
"nextButtonLabel": "ΕΠΟΜΕΝΟ",
|
||||
"showButtonLabel": "ΕΜΦΑΝΙΣΗ",
|
||||
"hideButtonLabel": "ΑΠΟΚΡΥΨΗ",
|
||||
"continueButtonLabel": "ΣΥΝΕΧΕΙΑ",
|
||||
|
||||
"cancelTooltip": "Ακύρωση",
|
||||
"changeTooltip": "Αλλαγή",
|
||||
"clearTooltip": "Εκκαθάριση",
|
||||
"previousTooltip": "Προηγούμενο",
|
||||
"nextTooltip": "Επόμενο",
|
||||
"showTooltip": "Εμφάνιση",
|
||||
"hideTooltip": "Απόκρυψη",
|
||||
"actionRemove": "Αφαίρεση",
|
||||
"resetTooltip": "Επαναφορά",
|
||||
"saveTooltip": "Αποθήκευση",
|
||||
"pickTooltip": "Διαλέξτε",
|
||||
|
||||
"doubleBackExitMessage": "Αγγίξτε ξανά το «πίσω» για έξοδο.",
|
||||
"doNotAskAgain": "Να μην ερωτηθώ ξανά",
|
||||
|
||||
"sourceStateLoading": "Φόρτωση",
|
||||
"sourceStateCataloguing": "Καταλογογράφηση",
|
||||
"sourceStateLocatingCountries": "Εντοπισμός χωρών",
|
||||
"sourceStateLocatingPlaces": "Εντοπισμός τοποθεσιών",
|
||||
|
||||
"chipActionDelete": "Διαγραφή",
|
||||
"chipActionGoToAlbumPage": "Εμφάνιση στα Άλμπουμ",
|
||||
"chipActionGoToCountryPage": "Εμφάνιση στις χώρες",
|
||||
"chipActionGoToTagPage": "Εμφάνιση στις ετικέτες",
|
||||
"chipActionHide": "Απόκρυψη",
|
||||
"chipActionPin": "Καρφίτσωμα στην κορυφή",
|
||||
"chipActionUnpin": "Ξέκαρφίτσωμα από την κορυφή",
|
||||
"chipActionRename": "Μετονομασία",
|
||||
"chipActionSetCover": "Ορισμός ως εξώφυλλο",
|
||||
"chipActionCreateAlbum": "Δημιουργία άλμπουμ",
|
||||
|
||||
"entryActionCopyToClipboard": "Αντιγραφή στο πρόχειρο",
|
||||
"entryActionDelete": "Διαγραφή",
|
||||
"entryActionConvert": "Μετατροπή",
|
||||
"entryActionExport": "Εξαγωγή",
|
||||
"entryActionInfo": "Λεπτομέρειες",
|
||||
"entryActionRename": "Μετονομασία",
|
||||
"entryActionRestore": "Επαναφορά",
|
||||
"entryActionRotateCCW": "Περιστροφή προς τα αριστερά",
|
||||
"entryActionRotateCW": "Περιστροφή προς τα δεξιά",
|
||||
"entryActionFlip": "Αντανάκλαση καθρέφτη",
|
||||
"entryActionPrint": "Εκτύπωση",
|
||||
"entryActionShare": "Κοινοποίηση",
|
||||
"entryActionViewSource": "Προβολή πηγής",
|
||||
"entryActionShowGeoTiffOnMap": "Εμφάνιση ως επικάλυψη στον χάρτη",
|
||||
"entryActionConvertMotionPhotoToStillImage": "Μετατροπή σε στατική εικόνα",
|
||||
"entryActionViewMotionPhotoVideo": "Άνοιγμα του βίντεο",
|
||||
"entryActionEdit": "Επεξεργασία",
|
||||
"entryActionOpen": "Άνοιγμα με",
|
||||
"entryActionSetAs": "Ορισμός ως",
|
||||
"entryActionOpenMap": "Εμφάνιση στην εφαρμογή χάρτες",
|
||||
"entryActionRotateScreen": "Περιστροφή οθόνης",
|
||||
"entryActionAddFavourite": "Προσθήκη στα αγαπημένα",
|
||||
"entryActionRemoveFavourite": "Αφαίρεση από τα αγαπημένα",
|
||||
|
||||
"videoActionCaptureFrame": "Λήψη στιγμιότυπου",
|
||||
"videoActionMute": "Σίγαση",
|
||||
"videoActionUnmute": "Αναίρεση σίγασης",
|
||||
"videoActionPause": "Παύση",
|
||||
"videoActionPlay": "Αναπαραγωγή",
|
||||
"videoActionReplay10": "10 δευτερόλεπτα πίσω ",
|
||||
"videoActionSkip10": "10 δευτερόλεπτα μπροστά",
|
||||
"videoActionSelectStreams": "Επιλογή γλώσσας",
|
||||
"videoActionSetSpeed": "Ταχύτητα αναπαραγωγής",
|
||||
"videoActionSettings": "Ρυθμίσεις",
|
||||
|
||||
"slideshowActionResume": "Συνέχιση",
|
||||
"slideshowActionShowInCollection": "Εμφάνιση στη Συλλογή",
|
||||
|
||||
"entryInfoActionEditDate": "Επεξεργασία ημερομηνίας και ώρας",
|
||||
"entryInfoActionEditLocation": "Επεξεργασία τοποθεσίας",
|
||||
"entryInfoActionEditTitleDescription": "Επεξεργασία ονομασίας & περιγραφής",
|
||||
"entryInfoActionEditRating": "Επεξεργασία βαθμολογίας",
|
||||
"entryInfoActionEditTags": "Επεξεργασία ετικετών",
|
||||
"entryInfoActionRemoveMetadata": "Κατάργηση μεταδεδομένων",
|
||||
|
||||
"filterBinLabel": "Κάδος ανακύκλωσης",
|
||||
"filterFavouriteLabel": "Αγαπημένα",
|
||||
"filterNoDateLabel": "Χωρίς ημερομηνία",
|
||||
"filterNoLocationLabel": "Χωρίς τοποθεσία",
|
||||
"filterNoRatingLabel": "Χωρίς βαθμολογία",
|
||||
"filterNoTagLabel": "Χωρίς ετικέτα",
|
||||
"filterNoTitleLabel": "Χωρίς ονομασία",
|
||||
"filterOnThisDayLabel": "Αυτή τη μέρα",
|
||||
"filterRecentlyAddedLabel": "Προστέθηκαν πρόσφατα",
|
||||
"filterRatingRejectedLabel": "Απορριφθέντα",
|
||||
"filterTypeAnimatedLabel": "Κινούμενα",
|
||||
"filterTypeMotionPhotoLabel": "Φωτογραφίες με κίνηση",
|
||||
"filterTypePanoramaLabel": "Πανοραμικές",
|
||||
"filterTypeRawLabel": "Raw",
|
||||
"filterTypeSphericalVideoLabel": "Βίντεο 360°",
|
||||
"filterTypeGeotiffLabel": "GeoTIFF",
|
||||
"filterMimeImageLabel": "Εικόνα",
|
||||
"filterMimeVideoLabel": "Βίντεο",
|
||||
|
||||
"coordinateFormatDms": "DMS",
|
||||
"coordinateFormatDecimal": "Δεκαδικές μοίρες",
|
||||
"coordinateDms": "{coordinate} {direction}",
|
||||
"coordinateDmsNorth": "Β",
|
||||
"coordinateDmsSouth": "Ν",
|
||||
"coordinateDmsEast": "Α",
|
||||
"coordinateDmsWest": "Δ",
|
||||
|
||||
"unitSystemMetric": "Μετρικό",
|
||||
"unitSystemImperial": "Aγγλοσαξονικό",
|
||||
|
||||
"videoLoopModeNever": "Ποτέ",
|
||||
"videoLoopModeShortOnly": "Μόνο για βίντεο σύντομης διάρκειας",
|
||||
"videoLoopModeAlways": "Πάντα",
|
||||
|
||||
"videoControlsPlay": "Αναπαραγωγή",
|
||||
"videoControlsPlaySeek": "Αναπαραγωγή & πίσω/μπροστά",
|
||||
"videoControlsPlayOutside": "Άνοιγμα με άλλη εφαρμογή",
|
||||
"videoControlsNone": "Καμία επιλογή",
|
||||
|
||||
"mapStyleGoogleNormal": "Google Maps",
|
||||
"mapStyleGoogleHybrid": "Google Maps (Hybrid)",
|
||||
"mapStyleGoogleTerrain": "Google Maps (Terrain)",
|
||||
"mapStyleHuaweiNormal": "Petal Maps",
|
||||
"mapStyleHuaweiTerrain": "Petal Maps (Terrain)",
|
||||
"mapStyleOsmHot": "Humanitarian OSM",
|
||||
"mapStyleStamenToner": "Stamen Toner",
|
||||
"mapStyleStamenWatercolor": "Stamen Watercolor",
|
||||
|
||||
"nameConflictStrategyRename": "Μετονομασία",
|
||||
"nameConflictStrategyReplace": "Αντικατάσταση",
|
||||
"nameConflictStrategySkip": "Παράλειψη",
|
||||
|
||||
"keepScreenOnNever": "Ποτέ",
|
||||
"keepScreenOnViewerOnly": "Μόνο όταν πραγματοποιείται προβολή στοιχείων",
|
||||
"keepScreenOnAlways": "Πάντα",
|
||||
|
||||
"accessibilityAnimationsRemove": "Απενεργοποίηση εφέ οθόνης",
|
||||
"accessibilityAnimationsKeep": "Διατήρηση εφέ οθόνης",
|
||||
|
||||
"displayRefreshRatePreferHighest": "Υψηλότερος ρυθμός",
|
||||
"displayRefreshRatePreferLowest": "Χαμηλότερος ρυθμός",
|
||||
|
||||
"slideshowVideoPlaybackSkip": "Παράλειψη",
|
||||
"slideshowVideoPlaybackMuted": "Αναπαραγωγή σε σίγαση",
|
||||
"slideshowVideoPlaybackWithSound": "Αναπαραγωγή με ήχο",
|
||||
|
||||
"themeBrightnessLight": "Φωτεινό",
|
||||
"themeBrightnessDark": "Σκούρο",
|
||||
"themeBrightnessBlack": "Μαύρο",
|
||||
|
||||
"viewerTransitionSlide": "Ολίσθηση",
|
||||
"viewerTransitionParallax": "Παράλλαξη",
|
||||
"viewerTransitionFade": "Ξεθώριασμα",
|
||||
"viewerTransitionZoomIn": "Μεγέθυνση",
|
||||
|
||||
"wallpaperTargetHome": "Αρχική οθόνη",
|
||||
"wallpaperTargetLock": "Οθόνη κλειδώματος",
|
||||
"wallpaperTargetHomeLock": "Αρχική οθόνη και οθόνη κλειδώματος",
|
||||
|
||||
"albumTierNew": "Νέα",
|
||||
"albumTierPinned": "Καρφιτσωμένα",
|
||||
"albumTierSpecial": "Συστήματος",
|
||||
"albumTierApps": "Εφαρμογές",
|
||||
"albumTierRegular": "Προσωπικά",
|
||||
|
||||
"storageVolumeDescriptionFallbackPrimary": "Εσωτερικός χώρος αποθήκευσης",
|
||||
"storageVolumeDescriptionFallbackNonPrimary": "SD card/Εξωτερικός χώρος αποθήκευσης",
|
||||
"rootDirectoryDescription": "Κατάλογος ρίζας",
|
||||
"otherDirectoryDescription": "«{name}» κατάλογος",
|
||||
"storageAccessDialogMessage": "Παρακαλώ επιλέξτε τον {directory} του «{volume}» στην επόμενη οθόνη για να δώσετε πρόσβαση στην εφαρμογή",
|
||||
"restrictedAccessDialogMessage": "Αυτή η εφαρμογή δεν επιτρέπεται να τροποποιεί αρχεία στο {directory} του «{volume}».\n\nΠαρακαλώ χρησιμοποιήστε μια άλλη εφαρμογή διαχείρισης αρχείων ή συλλογή φωτογραφιών για να μετακινήσετε τα στοιχεία αλλού.",
|
||||
"notEnoughSpaceDialogMessage": "Αυτή η λειτουργία χρειάζεται {neededSize} ελεύθερου χώρου στο «{volume}» για να ολοκληρωθεί, αλλά μόνο {freeSize} απομένουν ελεύθερα.",
|
||||
"missingSystemFilePickerDialogMessage": "Η εφαρμογή επιλογής αρχείων του δεν βρέθηκε ή είναι απενεργοποιημένη. Ενεργοποιήστε την και δοκιμάστε ξανά.",
|
||||
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Αυτή η λειτουργία δεν υποστηρίζεται για το ακόλουθο αρχείο: {types}.} other{Αυτή η λειτουργία δεν υποστηρίζεται για τα ακόλουθα αρχεία: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Ορισμένα αρχεία στον φάκελο προορισμού έχουν το ίδιο όνομα.",
|
||||
"nameConflictDialogMultipleSourceMessage": "Ορισμένα αρχεία έχουν το ίδιο όνομα.",
|
||||
|
||||
"addShortcutDialogLabel": "Ετικέτα συντόμευσης",
|
||||
"addShortcutButtonLabel": "ΠΡΟΣΘΗΚΗ",
|
||||
|
||||
"noMatchingAppDialogMessage": "Δεν βρέθηκαν εγκατεστημένες εφαρμογές που μπορούν να το κάνουν αυτό.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Μετακίνηση αυτού του στοιχείου στον κάδο ανακύκλωσης;} other{Μετακίνηση αυτών των {count} στοιχείων στον κάδο ανακύκλωσης;}}",
|
||||
"deleteEntriesConfirmationDialogMessage": "{count, plural, =1{Διαγραφή αυτού του στοιχείου;} other{Διαγραφή αυτών των {count} στοιχείων;}}",
|
||||
"moveUndatedConfirmationDialogMessage": "Αποθήκευση ημερομηνιών στοιχείων πριν συνεχίσετε;",
|
||||
"moveUndatedConfirmationDialogSetDate": "Αποθήκευση ημερομηνιών",
|
||||
|
||||
"videoResumeDialogMessage": "Συνέχεια αναπαραγωγής από {time}?",
|
||||
"videoStartOverButtonLabel": "ΑΝΑΠΑΡΑΓΩΓΗ ΑΠΟ ΤΗΝ ΑΡΧΗ",
|
||||
"videoResumeButtonLabel": "ΣΥΝΕΧΙΣΗ ΑΝΑΠΑΡΑΓΩΓΗΣ",
|
||||
|
||||
"setCoverDialogLatest": "Πιο πρόσφατο στοιχείο",
|
||||
"setCoverDialogAuto": "Αυτόματο",
|
||||
"setCoverDialogCustom": "Προσαρμοσμένο",
|
||||
|
||||
"hideFilterConfirmationDialogMessage": "Οι φωτογραφίες και τα βίντεο που ταιριάζουν θα κρυφτούν από τη συλλογή σας. Μπορείτε να τα εμφανίσετε ξανά από τις ρυθμίσεις «Απόρρητο».\n\nΕίστε σίγουροι ότι θέλετε να τα κρύψετε;",
|
||||
|
||||
"newAlbumDialogTitle": "Νεο αλμπουμ",
|
||||
"newAlbumDialogNameLabel": "Όνομα άλμπουμ",
|
||||
"newAlbumDialogNameLabelAlreadyExistsHelper": "Ο κατάλογος υπάρχει ήδη",
|
||||
"newAlbumDialogStorageLabel": "Aποθηκευτικός χώρος:",
|
||||
|
||||
"renameAlbumDialogLabel": "Νέο όνομα",
|
||||
"renameAlbumDialogLabelAlreadyExistsHelper": "Ο κατάλογος υπάρχει ήδη",
|
||||
|
||||
"renameEntrySetPageTitle": "Μετονομασια",
|
||||
"renameEntrySetPagePatternFieldLabel": "Μοτίβο ονομασίας",
|
||||
"renameEntrySetPageInsertTooltip": "Εισαγωγή πεδίου",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Προεπισκοπηση",
|
||||
|
||||
"renameProcessorCounter": "Counter",
|
||||
"renameProcessorName": "Όνομα",
|
||||
|
||||
"deleteSingleAlbumConfirmationDialogMessage": "{count, plural, =1{Διαγραφή αυτού του άλμπουμ και του περιεχομένου του;} other{Διαγράψτε αυτό το άλμπουμ και όλα τα {count} στοιχεία του;}}",
|
||||
"deleteMultiAlbumConfirmationDialogMessage": "{count, plural, =1{Διαγράψτε αυτά τα άλμπουμ και το περιεχόμενό τους;} other{Διαγράψτε αυτά τα άλμπουμ και όλα τα {count} στοιχεία τους;}}",
|
||||
|
||||
"exportEntryDialogFormat": "Μορφή:",
|
||||
"exportEntryDialogWidth": "Πλάτος",
|
||||
"exportEntryDialogHeight": "Ύψος",
|
||||
|
||||
"renameEntryDialogLabel": "Νέο όνομα",
|
||||
|
||||
"editEntryDialogTargetFieldsHeader": "Πεδία προς τροποποίηση",
|
||||
|
||||
"editEntryDateDialogTitle": "Ημερομηνια & Ώρα",
|
||||
"editEntryDateDialogSetCustom": "Ορισμός προσαρμοσμένης ημερομηνίας",
|
||||
"editEntryDateDialogCopyField": "Αντιγραφή από άλλη ημερομηνία",
|
||||
"editEntryDateDialogCopyItem": "Αντιγραφή από άλλο στοιχείο",
|
||||
"editEntryDateDialogExtractFromTitle": "Εξαγωγή από το όνομα του κάθε αρχείου",
|
||||
"editEntryDateDialogShift": "Μετατόπιση",
|
||||
"editEntryDateDialogSourceFileModifiedDate": "Ημερομηνία τροποποίησης αρχείου",
|
||||
"editEntryDateDialogHours": "Ώρες",
|
||||
"editEntryDateDialogMinutes": "Λεπτά",
|
||||
|
||||
"editEntryLocationDialogTitle": "Τοποθεσια",
|
||||
"editEntryLocationDialogChooseOnMapTooltip": "Επιλογή στο χάρτη",
|
||||
"editEntryLocationDialogLatitude": "Γεωγραφικό πλάτος",
|
||||
"editEntryLocationDialogLongitude": "Γεωγραφικό μήκος",
|
||||
|
||||
"locationPickerUseThisLocationButton": "Χρησιμοποίηση της τοποθεσίας",
|
||||
|
||||
"editEntryRatingDialogTitle": "Βαθμολογια",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Αφαιρεση μεταδεδομενων",
|
||||
"removeEntryMetadataDialogMore": "Περισσότερα",
|
||||
|
||||
"removeEntryMetadataMotionPhotoXmpWarningDialogMessage": "Απαιτείται XMP για την αναπαραγωγή του βίντεο μέσα σε μια κινούμενη φωτογραφία.\n\nΕίστε βέβαιοι ότι θέλετε να αφαιρεθεί;",
|
||||
"convertMotionPhotoToStillImageWarningDialogMessage": "Είστε βέβαιοι;",
|
||||
|
||||
"videoSpeedDialogLabel": "Ταχύτητα αναπαραγωγής",
|
||||
|
||||
"videoStreamSelectionDialogVideo": "Βίντεο",
|
||||
"videoStreamSelectionDialogAudio": "Ήχος",
|
||||
"videoStreamSelectionDialogText": "Υπότιτλοι",
|
||||
"videoStreamSelectionDialogOff": "Απενεργοποίηση",
|
||||
"videoStreamSelectionDialogTrack": "Κομμάτι",
|
||||
"videoStreamSelectionDialogNoSelection": "Δεν υπάρχουν άλλα κομμάτια.",
|
||||
|
||||
"genericSuccessFeedback": "Ολοκληρώθηκε!",
|
||||
"genericFailureFeedback": "Απέτυχε",
|
||||
|
||||
"menuActionConfigureView": "Προβολή",
|
||||
"menuActionSelect": "Επιλογή",
|
||||
"menuActionSelectAll": "Επιλογή όλων",
|
||||
"menuActionSelectNone": "Να μην επιλεγεί κανένα",
|
||||
"menuActionMap": "Χάρτης",
|
||||
"menuActionSlideshow": "Παρουσίαση φωτογραφιών",
|
||||
"menuActionStats": "Στατιστικά",
|
||||
|
||||
"viewDialogSortSectionTitle": "Ταξινομηση",
|
||||
"viewDialogGroupSectionTitle": "Ομαδοποιηση",
|
||||
"viewDialogLayoutSectionTitle": "Διαταξη",
|
||||
"viewDialogReverseSortOrder": "Αντίστροφη σειρά ταξινόμησης",
|
||||
|
||||
"tileLayoutGrid": "Πλέγμα",
|
||||
"tileLayoutList": "Λίστα",
|
||||
|
||||
"coverDialogTabCover": "Εξώφυλλο",
|
||||
"coverDialogTabApp": "Εφαρμογή",
|
||||
"coverDialogTabColor": "Χρώμα",
|
||||
|
||||
"appPickDialogTitle": "Επιλογη εφαρμογης",
|
||||
"appPickDialogNone": "Καμία επιλογή",
|
||||
|
||||
"aboutPageTitle": "Διαφορα",
|
||||
"aboutLinkSources": "Πηγές",
|
||||
"aboutLinkLicense": "Άδειες",
|
||||
"aboutLinkPolicy": "Πολιτική Απορρήτου",
|
||||
|
||||
"aboutBugSectionTitle": "Αναφορα σφαλματος",
|
||||
"aboutBugSaveLogInstruction": "Αποθήκευση των αρχείων καταγραφής της εφαρμογής σε ένα ξεχωριστό αρχείο",
|
||||
"aboutBugCopyInfoInstruction": "Αντιγραφή πληροφοριών του συστήματος",
|
||||
"aboutBugCopyInfoButton": "Αντιγραφή",
|
||||
"aboutBugReportInstruction": "Αναφορά στο GitHub με τα αρχεία καταγραφής και τις πληροφορίες του συστήματος",
|
||||
"aboutBugReportButton": "Αναφορά",
|
||||
|
||||
"aboutCreditsSectionTitle": "Αναφορες",
|
||||
"aboutCreditsWorldAtlas1": "Αυτή η εφαρμογή χρησιμοποιεί ένα αρχείο TopoJSON από",
|
||||
"aboutCreditsWorldAtlas2": "υπό την άδεια ISC.",
|
||||
"aboutTranslatorsSectionTitle": "Μεταφραστες",
|
||||
|
||||
"aboutLicensesSectionTitle": "Αδειες ανοιχτου κωδικα",
|
||||
"aboutLicensesBanner": "Αυτή η εφαρμογή χρησιμοποιεί τα ακόλουθα πακέτα και βιβλιοθήκες ανοιχτού κώδικα.",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Βιβλιοθηκες Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Προσθετα Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Πακετα Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Πακετα Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Εμφάνιση όλων των αδειών",
|
||||
|
||||
"policyPageTitle": "Πολιτικη απορρητου",
|
||||
|
||||
"collectionPageTitle": "Συλλογη",
|
||||
"collectionPickPageTitle": "Διαλεξτε",
|
||||
"collectionSelectPageTitle": "Επιλογη στοιχειων",
|
||||
|
||||
"collectionActionShowTitleSearch": "Εμφάνιση φίλτρου τίτλου",
|
||||
"collectionActionHideTitleSearch": "Απόκρυψη φίλτρου τίτλου",
|
||||
"collectionActionAddShortcut": "Προσθήκη συντόμευσης",
|
||||
"collectionActionEmptyBin": "Καθαρισμός του κάδου ανακύκλωσης",
|
||||
"collectionActionCopy": "Αντιγραφή στο άλμπουμ",
|
||||
"collectionActionMove": "Μετακίνηση στο άλμπουμ",
|
||||
"collectionActionRescan": "Εκ νέου σάρωση",
|
||||
"collectionActionEdit": "Επεξεργασία",
|
||||
|
||||
"collectionSearchTitlesHintText": "Αναζήτηση τίτλων",
|
||||
|
||||
"collectionGroupAlbum": "Ανά άλμπουμ",
|
||||
"collectionGroupMonth": "Ανά μήνα",
|
||||
"collectionGroupDay": "Ανά ημέρα",
|
||||
"collectionGroupNone": "Να μην γίνει ομαδοποίηση",
|
||||
|
||||
"sectionUnknown": "Χωρίς λεπτομέρειες",
|
||||
"dateToday": "Σήμερα",
|
||||
"dateYesterday": "Εχθές",
|
||||
"dateThisMonth": "Αυτό το μήνα",
|
||||
"collectionDeleteFailureFeedback": "{count, plural, =1{Αποτυχία διαγραφής του στοιχείου} other{Αποτυχία διαγραφής των {count} στοιχείων}}",
|
||||
"collectionCopyFailureFeedback": "{count, plural, =1{Αποτυχία αντιγραφής του στοιχείου} other{Αποτυχία αντιγραφής των {count} στοιχείων}}",
|
||||
"collectionMoveFailureFeedback": "{count, plural, =1{Αποτυχία μετακίνησης του στοιχείου} other{Αποτυχία μετακίνησης των {count} στοιχείων}}",
|
||||
"collectionRenameFailureFeedback": "{count, plural, =1{Αποτυχία μετονομασίας του στοιχείου} other{Αποτυχία μετονομασίας των {count} στοιχείων}}",
|
||||
"collectionEditFailureFeedback": "{count, plural, =1{Απέτυχε η επεξεργασία του στοιχείου} other{Απέτυχε η επεξεργασία των {count} στοιχείων}}",
|
||||
"collectionExportFailureFeedback": "{count, plural, =1{Απέτυχε η εξαγωγή της σελίδας} other{Απέτυχε η εξαγωγή των {count} σελίδων}}",
|
||||
"collectionCopySuccessFeedback": "{count, plural, =1{Αντιγράφηκε το στοιχείο} other{Αντιγράφηκαν τα {count} στοιχεία}}",
|
||||
"collectionMoveSuccessFeedback": "{count, plural, =1{Μετακινήθηκε το στοιχείο} other{Μετακινήθηκαν τα {count} στοιχεία}}",
|
||||
"collectionRenameSuccessFeedback": "{count, plural, =1{Μετονομάστηκε το στοιχείο} other{Μετονομάστηκαν τα {count} στοιχεία}}",
|
||||
"collectionEditSuccessFeedback": "{count, plural, =1{Επεξεργάστηκε το στοιχείο} other{Επεξεργάστηκαν τα {count} στοιχεία}}",
|
||||
|
||||
"collectionEmptyFavourites": "Δεν έχουν καταχωρηθεί αγαπημένα στοιχεία",
|
||||
"collectionEmptyVideos": "Δεν υπάρχουν βίντεο",
|
||||
"collectionEmptyImages": "Δεν υπάρχουν εικόνες",
|
||||
"collectionEmptyGrantAccessButtonLabel": "Παραχώρηση πρόσβασης",
|
||||
|
||||
"collectionSelectSectionTooltip": "Επιλέξτε ενότητα",
|
||||
"collectionDeselectSectionTooltip": "Αφαιρέστε ενότητα",
|
||||
|
||||
"drawerAboutButton": "Διάφορα",
|
||||
"drawerSettingsButton": "Ρυθμίσεις",
|
||||
"drawerCollectionAll": "Όλη η συλλογή",
|
||||
"drawerCollectionFavourites": "Αγαπημένα",
|
||||
"drawerCollectionImages": "Εικόνες",
|
||||
"drawerCollectionVideos": "Βίντεο",
|
||||
"drawerCollectionAnimated": "Κινούμενα",
|
||||
"drawerCollectionMotionPhotos": "Φωτογραφίες με κίνηση",
|
||||
"drawerCollectionPanoramas": "Πανοραμικές",
|
||||
"drawerCollectionRaws": "Raw φωτογραφίες",
|
||||
"drawerCollectionSphericalVideos": "Βίντεο 360°",
|
||||
"drawerAlbumPage": "Άλμπουμ",
|
||||
"drawerCountryPage": "Χώρες",
|
||||
"drawerTagPage": "Ετικέτες",
|
||||
|
||||
"sortByDate": "Ανά ημερομηνία",
|
||||
"sortByName": "Ανά όνομα",
|
||||
"sortByItemCount": "Ανά μέτρηση στοιχείων",
|
||||
"sortBySize": "Ανά μέγεθος",
|
||||
"sortByAlbumFileName": "Ανά άλμπουμ και όνομα αρχείου",
|
||||
"sortByRating": "Ανά βαθμολογία",
|
||||
|
||||
"sortOrderNewestFirst": "Τα πιο πρόσφατα πρώτα",
|
||||
"sortOrderOldestFirst": "Τα παλαιότερα πρώτα",
|
||||
"sortOrderAtoZ": "Α έως Ω",
|
||||
"sortOrderZtoA": "Ω έως Α",
|
||||
"sortOrderHighestFirst": "Υψηλότερη βαθμολογία πρώτα",
|
||||
"sortOrderLowestFirst": "Χαμηλότερη βαθμολογία πρώτα",
|
||||
"sortOrderLargestFirst": "Τα μεγαλύτερα πρώτα",
|
||||
"sortOrderSmallestFirst": "Τα μικρότερα πρώτα",
|
||||
|
||||
"albumGroupTier": "Ανά βαθμίδα",
|
||||
"albumGroupVolume": "Ανά αποθηκευτική μονάδα",
|
||||
"albumGroupNone": "Να μην γίνει ομαδοποίηση",
|
||||
|
||||
"albumPickPageTitleCopy": "Αντιγραφή στο άλμπουμ",
|
||||
"albumPickPageTitleExport": "Εξαγωγή στο άλμπουμ",
|
||||
"albumPickPageTitleMove": "Μετακίνηση στο άλμπουμ",
|
||||
"albumPickPageTitlePick": "Επιλογή άλμπουμ",
|
||||
|
||||
"albumCamera": "Κάμερα",
|
||||
"albumDownload": "Λήψεις",
|
||||
"albumScreenshots": "Στιγμιότυπα οθόνης",
|
||||
"albumScreenRecordings": "Εγγραφές οθόνης",
|
||||
"albumVideoCaptures": "Στιγμιότυπα οθόνης από βίντεο",
|
||||
|
||||
"albumPageTitle": "Άλμπουμ",
|
||||
"albumEmpty": "Δεν υπάρχουν άλμπουμ",
|
||||
"createAlbumTooltip": "Δημιουργία άλμπουμ",
|
||||
"createAlbumButtonLabel": "ΔΗΜΙΟΥΡΓΙΑ",
|
||||
"newFilterBanner": "Νέα",
|
||||
|
||||
"countryPageTitle": "Χωρες",
|
||||
"countryEmpty": "Δεν έχουν καταχωρηθεί χώρες",
|
||||
|
||||
"tagPageTitle": "Ετικετες",
|
||||
"tagEmpty": "Δεν έχουν καταχωρηθεί ετικέτες",
|
||||
|
||||
"binPageTitle": "Καδος ανακυκλωσης",
|
||||
|
||||
"searchCollectionFieldHint": "Αναζήτηση στην συλλογή",
|
||||
"searchRecentSectionTitle": "Προσφατα",
|
||||
"searchDateSectionTitle": "Ημερομηνια",
|
||||
"searchAlbumsSectionTitle": "Άλμπουμ",
|
||||
"searchCountriesSectionTitle": "Χωρες",
|
||||
"searchPlacesSectionTitle": "Τοποθεσιες",
|
||||
"searchTagsSectionTitle": "Ετικετες",
|
||||
"searchRatingSectionTitle": "Βαθμολογιες",
|
||||
"searchMetadataSectionTitle": "Μεταδεδομενα",
|
||||
|
||||
"settingsPageTitle": "Ρυθμισεις",
|
||||
"settingsSystemDefault": "Σύστημα",
|
||||
"settingsDefault": "Προεπιλογή",
|
||||
|
||||
"settingsSearchFieldLabel": "Αναζήτηση ρυθμίσεων",
|
||||
"settingsSearchEmpty": "Δεν υπάρχει αντίστοιχη ρύθμιση",
|
||||
"settingsActionExport": "Εξαγωγή",
|
||||
"settingsActionExportDialogTitle": "Εξαγωγη",
|
||||
"settingsActionImport": "Εισαγωγή",
|
||||
"settingsActionImportDialogTitle": "Εισαγωγη",
|
||||
|
||||
"appExportCovers": "Εξώφυλλα",
|
||||
"appExportFavourites": "Αγαπημένα",
|
||||
"appExportSettings": "Ρυθμίσεις",
|
||||
|
||||
"settingsNavigationSectionTitle": "Πλοηγηση",
|
||||
"settingsHomeTile": "Αρχική σελίδα της εφαρμογής",
|
||||
"settingsHomeDialogTitle": "Αρχικη σελιδα της εφαρμογης",
|
||||
"settingsShowBottomNavigationBar": "Εμφάνιση κάτω γραμμής πλοήγησης",
|
||||
"settingsKeepScreenOnTile": "Διατήρηση της οθόνης ενεργοποιημένη",
|
||||
"settingsKeepScreenOnDialogTitle": "Διατηρηση της Οθονης Ενεργοποιημενη",
|
||||
"settingsDoubleBackExit": "Αγγίξτε το «πίσω» δύο φορές για έξοδο",
|
||||
|
||||
"settingsConfirmationTile": "Παράθυρα επιβεβαίωσης",
|
||||
"settingsConfirmationDialogTitle": "Παραθυρα Επιβεβαιωσης",
|
||||
"settingsConfirmationBeforeDeleteItems": "Ερώτηση πριν διαγραφούν στοιχεία οριστικά",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Ερώτηση πριν μεταφερθούν στοιχεία στον κάδο ανακύκλωσης",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Ερώτηση πριν μεταφερθούν στοιχεία χωρίς ημερομηνία",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Εμφάνιση μηνύματος μετά τη μεταφορά στοιχείων στον κάδο ανακύκλωσης",
|
||||
|
||||
"settingsNavigationDrawerTile": "Μενού πλοήγησης",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Μενου Πλοηγησης",
|
||||
"settingsNavigationDrawerBanner": "Αγγίξτε παρατεταμένα για να μετακινήσετε και να αναδιατάξετε τα στοιχεία του μενού.",
|
||||
"settingsNavigationDrawerTabTypes": "Τύποι",
|
||||
"settingsNavigationDrawerTabAlbums": "Άλμπουμ",
|
||||
"settingsNavigationDrawerTabPages": "Σελίδες",
|
||||
"settingsNavigationDrawerAddAlbum": "Προσθήκη άλμπουμ",
|
||||
|
||||
"settingsThumbnailSectionTitle": "Μικρογραφιες",
|
||||
"settingsThumbnailOverlayTile": "Βοηθητικές πληροφορίες",
|
||||
"settingsThumbnailOverlayPageTitle": "Βοηθητικές πληροφοριες",
|
||||
"settingsThumbnailShowFavouriteIcon": "Εμφάνιση εικονιδίου για αγαπημένο",
|
||||
"settingsThumbnailShowTagIcon": "Εμφάνιση εικονιδίου για ετικέτα",
|
||||
"settingsThumbnailShowLocationIcon": "Εμφάνιση εικονιδίου για τοποθεσία",
|
||||
"settingsThumbnailShowMotionPhotoIcon": "Εμφάνιση εικονιδίου για φωτογραφία με κίνηση",
|
||||
"settingsThumbnailShowRating": "Εμφάνιση βαθμολογίας",
|
||||
"settingsThumbnailShowRawIcon": "Εμφάνιση εικονιδίου για raw στοιχεία",
|
||||
"settingsThumbnailShowVideoDuration": "Εμφάνιση διάρκειας βίντεο",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Γρήγορες ενέργειες",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Γρηγορες Ενεργειες",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Περιήγηση",
|
||||
"settingsCollectionQuickActionTabSelecting": "Επιλογή",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Αγγίξτε παρατεταμένα για να μετακινήσετε τα κουμπιά και επιλέξτε ποιες ενέργειες θα εμφανίζονται κατά την περιήγηση στοιχείων.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Αγγίξτε παρατεταμένα για να μετακινήσετε τα κουμπιά και επιλέξτε ποιες ενέργειες θα εμφανίζονται κατά την επιλογή στοιχείων.",
|
||||
|
||||
"settingsViewerSectionTitle": "Προβολη",
|
||||
"settingsViewerGestureSideTapNext": "Πατήστε στις άκρες της οθόνης για να εμφανίσετε το προηγούμενο/επόμενο στοιχείο",
|
||||
"settingsViewerUseCutout": "Χρησιμοποιήστε την περιοχή αποκοπής",
|
||||
"settingsViewerMaximumBrightness": "Μέγιστη φωτεινότητα",
|
||||
"settingsMotionPhotoAutoPlay": "Αυτόματη αναπαραγωγή φωτογραφιών κίνησης",
|
||||
"settingsImageBackground": "Φόντο κατά την προβολή στοιχείων",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Γρήγορες ενέργειες",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Γρηγορες Ενεργειες",
|
||||
"settingsViewerQuickActionEditorBanner": "Αγγίξτε παρατεταμένα για να μετακινήσετε τα κουμπιά και επιλέξτε ποιες ενέργειες θα εμφανίζονται κατά την προβολή.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Εμφανιζομενα κουμπια",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Διαθεσιμα κουμπια",
|
||||
"settingsViewerQuickActionEmpty": "Χωρίς κουμπιά",
|
||||
|
||||
"settingsViewerOverlayTile": "Επικάλυψη",
|
||||
"settingsViewerOverlayPageTitle": "Επικαλυψη",
|
||||
"settingsViewerShowOverlayOnOpening": "Εμφάνιση κατά το άνοιγμα",
|
||||
"settingsViewerShowMinimap": "Εμφάνιση μικρού χάρτη",
|
||||
"settingsViewerShowInformation": "Εμφάνιση πληροφοριών",
|
||||
"settingsViewerShowInformationSubtitle": "Εμφάνιση ονομασίας, ημερομηνίας, τοποθεσίας κ.λπ.",
|
||||
"settingsViewerShowShootingDetails": "Εμφάνιση λεπτομερειών λήψης",
|
||||
"settingsViewerShowOverlayThumbnails": "Εμφάνιση μικρογραφιών",
|
||||
"settingsViewerEnableOverlayBlurEffect": "Εφέ θαμπώματος",
|
||||
|
||||
"settingsViewerSlideshowTile": "Παρουσίαση φωτογραφιών",
|
||||
"settingsViewerSlideshowPageTitle": "Παρουσιαση φωτογραφιων",
|
||||
"settingsSlideshowRepeat": "Επανάληψη",
|
||||
"settingsSlideshowShuffle": "Τυχαία σειρά",
|
||||
"settingsSlideshowFillScreen": "Χρησιμοποίηση πλήρης οθόνης",
|
||||
"settingsSlideshowTransitionTile": "Μετάβαση",
|
||||
"settingsSlideshowTransitionDialogTitle": "Μεταβαση",
|
||||
"settingsSlideshowIntervalTile": "Διάρκεια",
|
||||
"settingsSlideshowIntervalDialogTitle": "Διαρκεια",
|
||||
"settingsSlideshowVideoPlaybackTile": "Αναπαραγωγή βίντεο",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Αναπαραγωγη Βιντεο",
|
||||
|
||||
"settingsVideoPageTitle": "Ρυθμισεις Βιντεο",
|
||||
"settingsVideoSectionTitle": "Βιντεο",
|
||||
"settingsVideoShowVideos": "Εμφάνιση των βίντεο στη συλλογή",
|
||||
"settingsVideoEnableHardwareAcceleration": "Επιτάχυνση υλισμικού",
|
||||
"settingsVideoEnableAutoPlay": "Αυτόματη αναπαραγωγή κατά το άνοιγμα",
|
||||
"settingsVideoLoopModeTile": "Επανάληψη αυτόματα στο τέλος κάθε βίντεο",
|
||||
"settingsVideoLoopModeDialogTitle": "Επαναληψη Αυτοματα στο Τελος Καθε Βιντεο",
|
||||
|
||||
"settingsSubtitleThemeTile": "Υπότιτλοι",
|
||||
"settingsSubtitleThemePageTitle": "Υποτιτλοι",
|
||||
"settingsSubtitleThemeSample": "Αυτό είναι ένα δείγμα.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Στοίχιση κειμένου",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Στοιχιση Κειμενου",
|
||||
"settingsSubtitleThemeTextSize": "Μέγεθος κειμένου",
|
||||
"settingsSubtitleThemeShowOutline": "Εμφάνιση περιγράμματος και σκιάς",
|
||||
"settingsSubtitleThemeTextColor": "Χρώμα κειμένου",
|
||||
"settingsSubtitleThemeTextOpacity": "Αδιαφάνεια κειμένου",
|
||||
"settingsSubtitleThemeBackgroundColor": "Χρώμα του φόντου",
|
||||
"settingsSubtitleThemeBackgroundOpacity": "Αδιαφάνεια φόντου",
|
||||
"settingsSubtitleThemeTextAlignmentLeft": "Αριστερά",
|
||||
"settingsSubtitleThemeTextAlignmentCenter": "Κέντρο",
|
||||
"settingsSubtitleThemeTextAlignmentRight": "Δεξιά",
|
||||
|
||||
"settingsVideoControlsTile": "Έλεγχος",
|
||||
"settingsVideoControlsPageTitle": "Ελεγχος",
|
||||
"settingsVideoButtonsTile": "Κουμπιά",
|
||||
"settingsVideoButtonsDialogTitle": "Κουμπια",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Αγγίξτε την οθόνη δύο φορές για αναπαραγωγή/παύση",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Αγγίξτε δύο φορές τις άκρες της οθόνης για να πάτε πίσω/εμπρός",
|
||||
|
||||
"settingsPrivacySectionTitle": "Απορρητο",
|
||||
"settingsAllowInstalledAppAccess": "Να επιτρέπεται η πρόσβαση στον κατάλογο εγκατεστημένων εφαρμογών της συσκευής",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Χρησιμοποιείται για τη βελτίωση της εμφάνισης των στοιχείων από τα άλμπουμ",
|
||||
"settingsAllowErrorReporting": "Να επιτρέπεται η ανώνυμη αναφορά σφαλμάτων",
|
||||
"settingsSaveSearchHistory": "Αποθήκευση ιστορικού αναζήτησης",
|
||||
"settingsEnableBin": "Χρησιμοποίηση κάδου ανακύκλωσης",
|
||||
"settingsEnableBinSubtitle": "Διατήρηση των διαγραμμένων στοιχείων για 30 ημέρες",
|
||||
|
||||
"settingsHiddenItemsTile": "Κρυφά στοιχεία",
|
||||
"settingsHiddenItemsPageTitle": "Κρυφα Στοιχεια",
|
||||
|
||||
"settingsHiddenItemsTabFilters": "Κρυφά φίλτρα",
|
||||
"settingsHiddenFiltersBanner": "Οι φωτογραφίες και τα βίντεο που είναι κρυφά δεν θα εμφανίζονται στη συλλογή σας.",
|
||||
"settingsHiddenFiltersEmpty": "Χωρίς κρυφά φίλτρα",
|
||||
|
||||
"settingsHiddenItemsTabPaths": "Κρυφές διαδρομές",
|
||||
"settingsHiddenPathsBanner": "Οι φωτογραφίες και τα βίντεο σε αυτούς τους φακέλους ή σε οποιονδήποτε από τους υποφακέλους τους, δεν θα εμφανίζονται στη συλλογή σας.",
|
||||
"addPathTooltip": "Προσθήκη διαδρομής",
|
||||
|
||||
"settingsStorageAccessTile": "Πρόσβαση στον χώρο αποθήκευσης",
|
||||
"settingsStorageAccessPageTitle": "Προσβαση στον Χωρο Αποθηκευσης",
|
||||
"settingsStorageAccessBanner": "Ορισμένοι κατάλογοι απαιτούν ρητή άδεια πρόσβασης για την τροποποίηση των αρχείων που βρίσκονται σε αυτούς. Μπορείτε να δείτε εδώ τους καταλόγους στους οποίους έχετε ήδη χορηγήσει πρόσβαση.",
|
||||
"settingsStorageAccessEmpty": "Δεν έχει χορηγηθεί πρόσβαση",
|
||||
"settingsStorageAccessRevokeTooltip": "Ανάκληση χορήγησης πρόσβασης",
|
||||
|
||||
"settingsAccessibilitySectionTitle": "Προσβασιμοτητα",
|
||||
"settingsRemoveAnimationsTile": "Κατάργηση κινούμενων εικόνων",
|
||||
"settingsRemoveAnimationsDialogTitle": "Καταργηση Κινουμενων Εικονων",
|
||||
"settingsTimeToTakeActionTile": "Χρόνος λήψης ενεργειών",
|
||||
"settingsTimeToTakeActionDialogTitle": "Χρονος Ληψης Ενεργειων",
|
||||
|
||||
"settingsDisplaySectionTitle": "Οθονη",
|
||||
"settingsThemeBrightnessTile": "Θέμα",
|
||||
"settingsThemeBrightnessDialogTitle": "Θεμα",
|
||||
"settingsThemeColorHighlights": "Χρωματιστά εικονίδια",
|
||||
"settingsThemeEnableDynamicColor": "Έντονο χρώμα",
|
||||
"settingsDisplayRefreshRateModeTile": "Εμφάνιση ρυθμού ανανέωσης",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Ρυθμος ανανεωσης",
|
||||
|
||||
"settingsLanguageSectionTitle": "Γλωσσα & Μορφες",
|
||||
"settingsLanguageTile": "Γλώσσα",
|
||||
"settingsLanguagePageTitle": "Γλωσσα",
|
||||
"settingsCoordinateFormatTile": "Μορφή συντεταγμένων",
|
||||
"settingsCoordinateFormatDialogTitle": "Μορφη Συντεταγμενων",
|
||||
"settingsUnitSystemTile": "Σύστημα μέτρησης",
|
||||
"settingsUnitSystemDialogTitle": "Συστημα μετρησης",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Προφυλαξη οθονης",
|
||||
|
||||
"settingsWidgetPageTitle": "Κορνιζα",
|
||||
"settingsWidgetShowOutline": "Περίγραμμα",
|
||||
|
||||
"settingsCollectionTile": "Συλλογή",
|
||||
|
||||
"statsPageTitle": "Στατιστικα",
|
||||
"statsWithGps": "{count, plural, =1{1 στοιχείο με τοποθεσία} other{{count} στοιχεία με τοποθεσία}}",
|
||||
"statsTopCountriesSectionTitle": "Κορυφαιες Χωρες",
|
||||
"statsTopPlacesSectionTitle": "Κορυφαια Μερη",
|
||||
"statsTopTagsSectionTitle": "Κορυφαιες Ετικετες",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "Άνοιγμα πανοραμικών",
|
||||
"viewerSetWallpaperButtonLabel": "ΟΡΙΣΜΟΣ ΤΑΠΕΤΣΑΡΙΑΣ",
|
||||
"viewerErrorUnknown": "Ωχ!",
|
||||
"viewerErrorDoesNotExist": "Το αρχείο δεν υπάρχει πλέον.",
|
||||
|
||||
"viewerInfoPageTitle": "Πληροφοριες",
|
||||
"viewerInfoBackToViewerTooltip": "Επιστροφή στην προβολή",
|
||||
|
||||
"viewerInfoUnknown": "Άγνωστο",
|
||||
"viewerInfoLabelDescription": "Περιγραφή",
|
||||
"viewerInfoLabelTitle": "Όνομα",
|
||||
"viewerInfoLabelDate": "Ημερομηνία",
|
||||
"viewerInfoLabelResolution": "Ανάλυση",
|
||||
"viewerInfoLabelSize": "Μέγεθος",
|
||||
"viewerInfoLabelUri": "URI",
|
||||
"viewerInfoLabelPath": "Διαδρομή",
|
||||
"viewerInfoLabelDuration": "Διάρκεια",
|
||||
"viewerInfoLabelOwner": "Κάτοχος",
|
||||
"viewerInfoLabelCoordinates": "Συντεταγμένες",
|
||||
"viewerInfoLabelAddress": "Διεύθυνση",
|
||||
|
||||
"mapStyleDialogTitle": "Στυλ χαρτη",
|
||||
"mapStyleTooltip": "Επιλέξτε στυλ χάρτη",
|
||||
"mapZoomInTooltip": "Μεγέθυνση",
|
||||
"mapZoomOutTooltip": "Σμίκρυνση",
|
||||
"mapPointNorthUpTooltip": "Εμφάνιση του βορρά στην κορυφή",
|
||||
"mapAttributionOsmHot": "Map data © [OpenStreetMap](https://www.openstreetmap.org/copyright) contributors • Tiles by [HOT](https://www.hotosm.org/) • Hosted by [OSM France](https://openstreetmap.fr/)",
|
||||
"mapAttributionStamen": "Map data © [OpenStreetMap](https://www.openstreetmap.org/copyright) contributors • Tiles by [Stamen Design](http://stamen.com), [CC BY 3.0](http://creativecommons.org/licenses/by/3.0)",
|
||||
"openMapPageTooltip": "Προβολή στη σελίδα του χάρτη",
|
||||
"mapEmptyRegion": "Δεν υπάρχουν εικόνες σε αυτήν την περιοχή",
|
||||
|
||||
"viewerInfoOpenEmbeddedFailureFeedback": "Αποτυχία εξαγωγής ενσωματωμένων δεδομένων",
|
||||
"viewerInfoOpenLinkText": "Άνοιγμα",
|
||||
"viewerInfoViewXmlLinkText": "Προβολή του αρχείου XML",
|
||||
|
||||
"viewerInfoSearchFieldLabel": "Αναζήτηση μεταδεδομένων",
|
||||
"viewerInfoSearchEmpty": "Δεν ταιριάζουν τα κλειδιά",
|
||||
"viewerInfoSearchSuggestionDate": "Ημερομηνία & Ώρα",
|
||||
"viewerInfoSearchSuggestionDescription": "Περιγραφή",
|
||||
"viewerInfoSearchSuggestionDimensions": "Διαστάσεις",
|
||||
"viewerInfoSearchSuggestionResolution": "Ανάλυση",
|
||||
"viewerInfoSearchSuggestionRights": "Δικαιώματα",
|
||||
|
||||
"tagEditorPageTitle": "Επεξεργασια Ετικετων",
|
||||
"tagEditorPageNewTagFieldLabel": "Νέα ετικέτα",
|
||||
"tagEditorPageAddTagTooltip": "Προσθήκη ετικέτας",
|
||||
"tagEditorSectionRecent": "Πρόσφατα",
|
||||
|
||||
"panoramaEnableSensorControl": "Ενεργοποίηση ελέγχου αισθητήρα",
|
||||
"panoramaDisableSensorControl": "Απενεργοποίηση ελέγχου αισθητήρα",
|
||||
|
||||
"sourceViewerPageTitle": "Πηγη",
|
||||
|
||||
"filePickerShowHiddenFiles": "Εμφάνιση κρυφών αρχείων",
|
||||
"filePickerDoNotShowHiddenFiles": "Να μην εμφανίζονται τα κρυφά αρχεία",
|
||||
"filePickerOpenFrom": "Άνοιγμα από",
|
||||
"filePickerNoItems": "Κανένα στοιχείο",
|
||||
"filePickerUseThisFolder": "Χρησιμοποιήστε αυτόν τον φάκελο"
|
||||
}
|
|
@ -55,6 +55,7 @@
|
|||
"actionRemove": "Remove",
|
||||
"resetTooltip": "Reset",
|
||||
"saveTooltip": "Save",
|
||||
"pickTooltip": "Pick",
|
||||
|
||||
"doubleBackExitMessage": "Tap “back” again to exit.",
|
||||
"doNotAskAgain": "Do not ask again",
|
||||
|
@ -115,18 +116,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "Edit date & time",
|
||||
"entryInfoActionEditLocation": "Edit location",
|
||||
"entryInfoActionEditDescription": "Edit description",
|
||||
"entryInfoActionEditTitleDescription": "Edit title & description",
|
||||
"entryInfoActionEditRating": "Edit rating",
|
||||
"entryInfoActionEditTags": "Edit tags",
|
||||
"entryInfoActionRemoveMetadata": "Remove metadata",
|
||||
|
||||
"filterBinLabel": "Recycle bin",
|
||||
"filterFavouriteLabel": "Favorite",
|
||||
"filterLocationEmptyLabel": "Unlocated",
|
||||
"filterTagEmptyLabel": "Untagged",
|
||||
"filterNoDateLabel": "Undated",
|
||||
"filterNoLocationLabel": "Unlocated",
|
||||
"filterNoRatingLabel": "Unrated",
|
||||
"filterNoTagLabel": "Untagged",
|
||||
"filterNoTitleLabel": "Untitled",
|
||||
"filterOnThisDayLabel": "On this day",
|
||||
"filterRecentlyAddedLabel": "Recently added",
|
||||
"filterRatingUnratedLabel": "Unrated",
|
||||
"filterRatingRejectedLabel": "Rejected",
|
||||
"filterTypeAnimatedLabel": "Animated",
|
||||
"filterTypeMotionPhotoLabel": "Motion Photo",
|
||||
|
@ -228,7 +231,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"storageAccessDialogTitle": "Storage Access",
|
||||
"storageAccessDialogMessage": "Please select the {directory} of “{volume}” in the next screen to give this app access to it.",
|
||||
"@storageAccessDialogMessage": {
|
||||
"placeholders": {
|
||||
|
@ -243,7 +245,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"restrictedAccessDialogTitle": "Restricted Access",
|
||||
"restrictedAccessDialogMessage": "This app is not allowed to modify files in the {directory} of “{volume}”.\n\nPlease use a pre-installed file manager or gallery app to move the items to another directory.",
|
||||
"@restrictedAccessDialogMessage": {
|
||||
"placeholders": {
|
||||
|
@ -258,7 +259,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"notEnoughSpaceDialogTitle": "Not Enough Space",
|
||||
"notEnoughSpaceDialogMessage": "This operation needs {neededSize} of free space on “{volume}” to complete, but there is only {freeSize} left.",
|
||||
"@notEnoughSpaceDialogMessage": {
|
||||
"placeholders": {
|
||||
|
@ -277,10 +277,8 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"missingSystemFilePickerDialogTitle": "Missing System File Picker",
|
||||
"missingSystemFilePickerDialogMessage": "The system file picker is missing or disabled. Please enable it and try again.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Unsupported Types",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{This operation is not supported for items of the following type: {types}.} other{This operation is not supported for items of the following types: {types}.}}",
|
||||
"@unsupportedTypeDialogMessage": {
|
||||
"placeholders": {
|
||||
|
@ -299,7 +297,6 @@
|
|||
"addShortcutDialogLabel": "Shortcut label",
|
||||
"addShortcutButtonLabel": "ADD",
|
||||
|
||||
"noMatchingAppDialogTitle": "No Matching App",
|
||||
"noMatchingAppDialogMessage": "There are no apps that can handle this.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Move this item to the recycle bin?} other{Move these {count} items to the recycle bin?}}",
|
||||
|
@ -346,7 +343,7 @@
|
|||
"renameEntrySetPageTitle": "Rename",
|
||||
"renameEntrySetPagePatternFieldLabel": "Naming pattern",
|
||||
"renameEntrySetPageInsertTooltip": "Insert field",
|
||||
"renameEntrySetPagePreview": "Preview",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Preview",
|
||||
|
||||
"renameProcessorCounter": "Counter",
|
||||
"renameProcessorName": "Name",
|
||||
|
@ -389,8 +386,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Use this location",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Description",
|
||||
|
||||
"editEntryRatingDialogTitle": "Rating",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Metadata Removal",
|
||||
|
@ -419,9 +414,10 @@
|
|||
"menuActionSlideshow": "Slideshow",
|
||||
"menuActionStats": "Stats",
|
||||
|
||||
"viewDialogTabSort": "Sort",
|
||||
"viewDialogTabGroup": "Group",
|
||||
"viewDialogTabLayout": "Layout",
|
||||
"viewDialogSortSectionTitle": "Sort",
|
||||
"viewDialogGroupSectionTitle": "Group",
|
||||
"viewDialogLayoutSectionTitle": "Layout",
|
||||
"viewDialogReverseSortOrder": "Reverse sort order",
|
||||
|
||||
"tileLayoutGrid": "Grid",
|
||||
"tileLayoutList": "List",
|
||||
|
@ -438,24 +434,24 @@
|
|||
"aboutLinkLicense": "License",
|
||||
"aboutLinkPolicy": "Privacy Policy",
|
||||
|
||||
"aboutBug": "Bug Report",
|
||||
"aboutBugSectionTitle": "Bug Report",
|
||||
"aboutBugSaveLogInstruction": "Save app logs to a file",
|
||||
"aboutBugCopyInfoInstruction": "Copy system information",
|
||||
"aboutBugCopyInfoButton": "Copy",
|
||||
"aboutBugReportInstruction": "Report on GitHub with the logs and system information",
|
||||
"aboutBugReportButton": "Report",
|
||||
|
||||
"aboutCredits": "Credits",
|
||||
"aboutCreditsSectionTitle": "Credits",
|
||||
"aboutCreditsWorldAtlas1": "This app uses a TopoJSON file from",
|
||||
"aboutCreditsWorldAtlas2": "under ISC License.",
|
||||
"aboutCreditsTranslators": "Translators",
|
||||
"aboutTranslatorsSectionTitle": "Translators",
|
||||
|
||||
"aboutLicenses": "Open-Source Licenses",
|
||||
"aboutLicensesSectionTitle": "Open-Source Licenses",
|
||||
"aboutLicensesBanner": "This app uses the following open-source packages and libraries.",
|
||||
"aboutLicensesAndroidLibraries": "Android Libraries",
|
||||
"aboutLicensesFlutterPlugins": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackages": "Flutter Packages",
|
||||
"aboutLicensesDartPackages": "Dart Packages",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android Libraries",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flutter Packages",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart Packages",
|
||||
"aboutLicensesShowAllButtonLabel": "Show All Licenses",
|
||||
|
||||
"policyPageTitle": "Privacy Policy",
|
||||
|
@ -475,11 +471,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Search titles",
|
||||
|
||||
"collectionSortDate": "By date",
|
||||
"collectionSortSize": "By size",
|
||||
"collectionSortName": "By album & file name",
|
||||
"collectionSortRating": "By rating",
|
||||
|
||||
"collectionGroupAlbum": "By album",
|
||||
"collectionGroupMonth": "By month",
|
||||
"collectionGroupDay": "By day",
|
||||
|
@ -558,6 +549,8 @@
|
|||
"collectionSelectSectionTooltip": "Select section",
|
||||
"collectionDeselectSectionTooltip": "Deselect section",
|
||||
|
||||
"drawerAboutButton": "About",
|
||||
"drawerSettingsButton": "Settings",
|
||||
"drawerCollectionAll": "All collection",
|
||||
"drawerCollectionFavourites": "Favorites",
|
||||
"drawerCollectionImages": "Images",
|
||||
|
@ -567,10 +560,25 @@
|
|||
"drawerCollectionPanoramas": "Panoramas",
|
||||
"drawerCollectionRaws": "Raw photos",
|
||||
"drawerCollectionSphericalVideos": "360° Videos",
|
||||
"drawerAlbumPage": "Albums",
|
||||
"drawerCountryPage": "Countries",
|
||||
"drawerTagPage": "Tags",
|
||||
|
||||
"chipSortDate": "By date",
|
||||
"chipSortName": "By name",
|
||||
"chipSortCount": "By item count",
|
||||
"sortByDate": "By date",
|
||||
"sortByName": "By name",
|
||||
"sortByItemCount": "By item count",
|
||||
"sortBySize": "By size",
|
||||
"sortByAlbumFileName": "By album & file name",
|
||||
"sortByRating": "By rating",
|
||||
|
||||
"sortOrderNewestFirst": "Newest first",
|
||||
"sortOrderOldestFirst": "Oldest first",
|
||||
"sortOrderAtoZ": "A to Z",
|
||||
"sortOrderZtoA": "Z to A",
|
||||
"sortOrderHighestFirst": "Highest first",
|
||||
"sortOrderLowestFirst": "Lowest first",
|
||||
"sortOrderLargestFirst": "Largest first",
|
||||
"sortOrderSmallestFirst": "Smallest first",
|
||||
|
||||
"albumGroupTier": "By tier",
|
||||
"albumGroupVolume": "By storage volume",
|
||||
|
@ -602,13 +610,14 @@
|
|||
"binPageTitle": "Recycle Bin",
|
||||
|
||||
"searchCollectionFieldHint": "Search collection",
|
||||
"searchSectionRecent": "Recent",
|
||||
"searchSectionDate": "Date",
|
||||
"searchSectionAlbums": "Albums",
|
||||
"searchSectionCountries": "Countries",
|
||||
"searchSectionPlaces": "Places",
|
||||
"searchSectionTags": "Tags",
|
||||
"searchSectionRating": "Ratings",
|
||||
"searchRecentSectionTitle": "Recent",
|
||||
"searchDateSectionTitle": "Date",
|
||||
"searchAlbumsSectionTitle": "Albums",
|
||||
"searchCountriesSectionTitle": "Countries",
|
||||
"searchPlacesSectionTitle": "Places",
|
||||
"searchTagsSectionTitle": "Tags",
|
||||
"searchRatingSectionTitle": "Ratings",
|
||||
"searchMetadataSectionTitle": "Metadata",
|
||||
|
||||
"settingsPageTitle": "Settings",
|
||||
"settingsSystemDefault": "System",
|
||||
|
@ -617,37 +626,40 @@
|
|||
"settingsSearchFieldLabel": "Search settings",
|
||||
"settingsSearchEmpty": "No matching setting",
|
||||
"settingsActionExport": "Export",
|
||||
"settingsActionExportDialogTitle": "Export",
|
||||
"settingsActionImport": "Import",
|
||||
"settingsActionImportDialogTitle": "Import",
|
||||
|
||||
"appExportCovers": "Covers",
|
||||
"appExportFavourites": "Favorites",
|
||||
"appExportSettings": "Settings",
|
||||
|
||||
"settingsSectionNavigation": "Navigation",
|
||||
"settingsHome": "Home",
|
||||
"settingsNavigationSectionTitle": "Navigation",
|
||||
"settingsHomeTile": "Home",
|
||||
"settingsHomeDialogTitle": "Home",
|
||||
"settingsShowBottomNavigationBar": "Show bottom navigation bar",
|
||||
"settingsKeepScreenOnTile": "Keep screen on",
|
||||
"settingsKeepScreenOnTitle": "Keep Screen On",
|
||||
"settingsKeepScreenOnDialogTitle": "Keep Screen On",
|
||||
"settingsDoubleBackExit": "Tap “back” twice to exit",
|
||||
|
||||
"settingsConfirmationDialogTile": "Confirmation dialogs",
|
||||
"settingsConfirmationTile": "Confirmation dialogs",
|
||||
"settingsConfirmationDialogTitle": "Confirmation Dialogs",
|
||||
"settingsConfirmationDialogDeleteItems": "Ask before deleting items forever",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Ask before moving items to the recycle bin",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Ask before moving undated items",
|
||||
"settingsConfirmationBeforeDeleteItems": "Ask before deleting items forever",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Ask before moving items to the recycle bin",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Ask before moving undated items",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Show message after moving items to the recycle bin",
|
||||
|
||||
"settingsNavigationDrawerTile": "Navigation menu",
|
||||
"settingsNavigationDrawerEditorTitle": "Navigation Menu",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Navigation Menu",
|
||||
"settingsNavigationDrawerBanner": "Touch and hold to move and reorder menu items.",
|
||||
"settingsNavigationDrawerTabTypes": "Types",
|
||||
"settingsNavigationDrawerTabAlbums": "Albums",
|
||||
"settingsNavigationDrawerTabPages": "Pages",
|
||||
"settingsNavigationDrawerAddAlbum": "Add album",
|
||||
|
||||
"settingsSectionThumbnails": "Thumbnails",
|
||||
"settingsThumbnailSectionTitle": "Thumbnails",
|
||||
"settingsThumbnailOverlayTile": "Overlay",
|
||||
"settingsThumbnailOverlayTitle": "Overlay",
|
||||
"settingsThumbnailOverlayPageTitle": "Overlay",
|
||||
"settingsThumbnailShowFavouriteIcon": "Show favorite icon",
|
||||
"settingsThumbnailShowTagIcon": "Show tag icon",
|
||||
"settingsThumbnailShowLocationIcon": "Show location icon",
|
||||
|
@ -657,13 +669,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Show video duration",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Quick actions",
|
||||
"settingsCollectionQuickActionEditorTitle": "Quick Actions",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Quick Actions",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Browsing",
|
||||
"settingsCollectionQuickActionTabSelecting": "Selecting",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Touch and hold to move buttons and select which actions are displayed when browsing items.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Touch and hold to move buttons and select which actions are displayed when selecting items.",
|
||||
|
||||
"settingsSectionViewer": "Viewer",
|
||||
"settingsViewerSectionTitle": "Viewer",
|
||||
"settingsViewerGestureSideTapNext": "Tap on screen edges to show previous/next item",
|
||||
"settingsViewerUseCutout": "Use cutout area",
|
||||
"settingsViewerMaximumBrightness": "Maximum brightness",
|
||||
|
@ -671,14 +683,14 @@
|
|||
"settingsImageBackground": "Image background",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Quick actions",
|
||||
"settingsViewerQuickActionEditorTitle": "Quick Actions",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Quick Actions",
|
||||
"settingsViewerQuickActionEditorBanner": "Touch and hold to move buttons and select which actions are displayed in the viewer.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Displayed Buttons",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Available Buttons",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Displayed Buttons",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Available Buttons",
|
||||
"settingsViewerQuickActionEmpty": "No buttons",
|
||||
|
||||
"settingsViewerOverlayTile": "Overlay",
|
||||
"settingsViewerOverlayTitle": "Overlay",
|
||||
"settingsViewerOverlayPageTitle": "Overlay",
|
||||
"settingsViewerShowOverlayOnOpening": "Show on opening",
|
||||
"settingsViewerShowMinimap": "Show minimap",
|
||||
"settingsViewerShowInformation": "Show information",
|
||||
|
@ -688,30 +700,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Blur effect",
|
||||
|
||||
"settingsViewerSlideshowTile": "Slideshow",
|
||||
"settingsViewerSlideshowTitle": "Slideshow",
|
||||
"settingsViewerSlideshowPageTitle": "Slideshow",
|
||||
"settingsSlideshowRepeat": "Repeat",
|
||||
"settingsSlideshowShuffle": "Shuffle",
|
||||
"settingsSlideshowFillScreen": "Fill screen",
|
||||
"settingsSlideshowTransitionTile": "Transition",
|
||||
"settingsSlideshowTransitionTitle": "Transition",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transition",
|
||||
"settingsSlideshowIntervalTile": "Interval",
|
||||
"settingsSlideshowIntervalTitle": "Interval",
|
||||
"settingsSlideshowIntervalDialogTitle": "Interval",
|
||||
"settingsSlideshowVideoPlaybackTile": "Video playback",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Video Playback",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Video Playback",
|
||||
|
||||
"settingsVideoPageTitle": "Video Settings",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Show videos",
|
||||
"settingsVideoEnableHardwareAcceleration": "Hardware acceleration",
|
||||
"settingsVideoEnableAutoPlay": "Auto play",
|
||||
"settingsVideoLoopModeTile": "Loop mode",
|
||||
"settingsVideoLoopModeTitle": "Loop Mode",
|
||||
"settingsVideoLoopModeDialogTitle": "Loop Mode",
|
||||
|
||||
"settingsSubtitleThemeTile": "Subtitles",
|
||||
"settingsSubtitleThemeTitle": "Subtitles",
|
||||
"settingsSubtitleThemePageTitle": "Subtitles",
|
||||
"settingsSubtitleThemeSample": "This is a sample.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Text alignment",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Text Alignment",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Text Alignment",
|
||||
"settingsSubtitleThemeTextSize": "Text size",
|
||||
"settingsSubtitleThemeShowOutline": "Show outline and shadow",
|
||||
"settingsSubtitleThemeTextColor": "Text color",
|
||||
|
@ -723,13 +735,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Right",
|
||||
|
||||
"settingsVideoControlsTile": "Controls",
|
||||
"settingsVideoControlsTitle": "Controls",
|
||||
"settingsVideoControlsPageTitle": "Controls",
|
||||
"settingsVideoButtonsTile": "Buttons",
|
||||
"settingsVideoButtonsTitle": "Buttons",
|
||||
"settingsVideoButtonsDialogTitle": "Buttons",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Double tap to play/pause",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Double tap on screen edges to seek backward/forward",
|
||||
|
||||
"settingsSectionPrivacy": "Privacy",
|
||||
"settingsPrivacySectionTitle": "Privacy",
|
||||
"settingsAllowInstalledAppAccess": "Allow access to app inventory",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Used to improve album display",
|
||||
"settingsAllowErrorReporting": "Allow anonymous error reporting",
|
||||
|
@ -738,47 +750,51 @@
|
|||
"settingsEnableBinSubtitle": "Keep deleted items for 30 days",
|
||||
|
||||
"settingsHiddenItemsTile": "Hidden items",
|
||||
"settingsHiddenItemsTitle": "Hidden Items",
|
||||
"settingsHiddenItemsPageTitle": "Hidden Items",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Hidden Filters",
|
||||
"settingsHiddenItemsTabFilters": "Hidden Filters",
|
||||
"settingsHiddenFiltersBanner": "Photos and videos matching hidden filters will not appear in your collection.",
|
||||
"settingsHiddenFiltersEmpty": "No hidden filters",
|
||||
|
||||
"settingsHiddenPathsTitle": "Hidden Paths",
|
||||
"settingsHiddenItemsTabPaths": "Hidden Paths",
|
||||
"settingsHiddenPathsBanner": "Photos and videos in these folders, or any of their subfolders, will not appear in your collection.",
|
||||
"addPathTooltip": "Add path",
|
||||
|
||||
"settingsStorageAccessTile": "Storage access",
|
||||
"settingsStorageAccessTitle": "Storage Access",
|
||||
"settingsStorageAccessPageTitle": "Storage Access",
|
||||
"settingsStorageAccessBanner": "Some directories require an explicit access grant to modify files in them. You can review here directories to which you previously gave access.",
|
||||
"settingsStorageAccessEmpty": "No access grants",
|
||||
"settingsStorageAccessRevokeTooltip": "Revoke",
|
||||
|
||||
"settingsSectionAccessibility": "Accessibility",
|
||||
"settingsAccessibilitySectionTitle": "Accessibility",
|
||||
"settingsRemoveAnimationsTile": "Remove animations",
|
||||
"settingsRemoveAnimationsTitle": "Remove Animations",
|
||||
"settingsRemoveAnimationsDialogTitle": "Remove Animations",
|
||||
"settingsTimeToTakeActionTile": "Time to take action",
|
||||
"settingsTimeToTakeActionTitle": "Time to Take Action",
|
||||
"settingsTimeToTakeActionDialogTitle": "Time to Take Action",
|
||||
|
||||
"settingsSectionDisplay": "Display",
|
||||
"settingsThemeBrightness": "Theme",
|
||||
"settingsDisplaySectionTitle": "Display",
|
||||
"settingsThemeBrightnessTile": "Theme",
|
||||
"settingsThemeBrightnessDialogTitle": "Theme",
|
||||
"settingsThemeColorHighlights": "Color highlights",
|
||||
"settingsThemeEnableDynamicColor": "Dynamic color",
|
||||
"settingsDisplayRefreshRateModeTile": "Display refresh rate",
|
||||
"settingsDisplayRefreshRateModeTitle": "Refresh Rate",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Refresh Rate",
|
||||
|
||||
"settingsSectionLanguage": "Language & Formats",
|
||||
"settingsLanguage": "Language",
|
||||
"settingsLanguageSectionTitle": "Language & Formats",
|
||||
"settingsLanguageTile": "Language",
|
||||
"settingsLanguagePageTitle": "Language",
|
||||
"settingsCoordinateFormatTile": "Coordinate format",
|
||||
"settingsCoordinateFormatTitle": "Coordinate Format",
|
||||
"settingsCoordinateFormatDialogTitle": "Coordinate Format",
|
||||
"settingsUnitSystemTile": "Units",
|
||||
"settingsUnitSystemTitle": "Units",
|
||||
"settingsUnitSystemDialogTitle": "Units",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Screen Saver",
|
||||
|
||||
"settingsWidgetPageTitle": "Photo Frame",
|
||||
"settingsWidgetShowOutline": "Outline",
|
||||
|
||||
"settingsCollectionTile": "Collection",
|
||||
|
||||
"statsPageTitle": "Stats",
|
||||
"statsWithGps": "{count, plural, =1{1 item with location} other{{count} items with location}}",
|
||||
"@statsWithGps": {
|
||||
|
@ -786,9 +802,9 @@
|
|||
"count": {}
|
||||
}
|
||||
},
|
||||
"statsTopCountries": "Top Countries",
|
||||
"statsTopPlaces": "Top Places",
|
||||
"statsTopTags": "Top Tags",
|
||||
"statsTopCountriesSectionTitle": "Top Countries",
|
||||
"statsTopPlacesSectionTitle": "Top Places",
|
||||
"statsTopTagsSectionTitle": "Top Tags",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "OPEN PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "SET WALLPAPER",
|
||||
|
@ -799,6 +815,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Back to viewer",
|
||||
|
||||
"viewerInfoUnknown": "unknown",
|
||||
"viewerInfoLabelDescription": "Description",
|
||||
"viewerInfoLabelTitle": "Title",
|
||||
"viewerInfoLabelDate": "Date",
|
||||
"viewerInfoLabelResolution": "Resolution",
|
||||
|
@ -810,7 +827,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coordinates",
|
||||
"viewerInfoLabelAddress": "Address",
|
||||
|
||||
"mapStyleTitle": "Map Style",
|
||||
"mapStyleDialogTitle": "Map Style",
|
||||
"mapStyleTooltip": "Select map style",
|
||||
"mapZoomInTooltip": "Zoom in",
|
||||
"mapZoomOutTooltip": "Zoom out",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Remover",
|
||||
"resetTooltip": "Restablecer",
|
||||
"saveTooltip": "Guardar",
|
||||
"pickTooltip": "Elegir",
|
||||
|
||||
"doubleBackExitMessage": "Presione «atrás» nuevamente para salir.",
|
||||
"doNotAskAgain": "No preguntar nuevamente",
|
||||
|
@ -93,10 +94,10 @@
|
|||
|
||||
"filterBinLabel": "Cesto de basura",
|
||||
"filterFavouriteLabel": "Favorito",
|
||||
"filterLocationEmptyLabel": "No localizado",
|
||||
"filterTagEmptyLabel": "Sin etiquetar",
|
||||
"filterNoLocationLabel": "No localizado",
|
||||
"filterNoRatingLabel": "Sin clasificar",
|
||||
"filterNoTagLabel": "Sin etiquetar",
|
||||
"filterOnThisDayLabel": "De este día",
|
||||
"filterRatingUnratedLabel": "Sin clasificar",
|
||||
"filterRatingRejectedLabel": "Rechazado",
|
||||
"filterTypeAnimatedLabel": "Animado",
|
||||
"filterTypeMotionPhotoLabel": "Foto en movimiento",
|
||||
|
@ -177,16 +178,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "Tarjeta de memoria",
|
||||
"rootDirectoryDescription": "el directorio raíz",
|
||||
"otherDirectoryDescription": "el directorio «{name}»",
|
||||
"storageAccessDialogTitle": "Acceso al almacenamiento",
|
||||
"storageAccessDialogMessage": "Por favor seleccione {directory} en «{volume}» en la siguiente pantalla para permitir a esta aplicación tener acceso.",
|
||||
"restrictedAccessDialogTitle": "Acceso restringido",
|
||||
"restrictedAccessDialogMessage": "Esta aplicación no tiene permiso para modificar archivos de {directory} en «{volume}».\n\nPor favor use un gestor de archivos o la aplicación de galería preinstalada para mover los elementos a otro directorio.",
|
||||
"notEnoughSpaceDialogTitle": "Espacio insuficiente",
|
||||
"notEnoughSpaceDialogMessage": "Esta operación necesita {neededSize} de espacio libre en «{volume}» para completarse, pero sólo hay {freeSize} disponible.",
|
||||
"missingSystemFilePickerDialogTitle": "Selector de archivos del sistema no disponible",
|
||||
"missingSystemFilePickerDialogMessage": "El selector de archivos del sistema no se encuentra disponible o fue deshabilitado. Por favor habilítelo e intente nuevamente.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Tipos de archivo incompatibles",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Esta operación no está disponible para un elemento del siguiente tipo: {types}.} other{Esta operación no está disponible para elementos de los siguientes tipos: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Algunos archivos en el directorio de destino tienen el mismo nombre.",
|
||||
|
@ -195,7 +191,6 @@
|
|||
"addShortcutDialogLabel": "Etiqueta del atajo",
|
||||
"addShortcutButtonLabel": "AGREGAR",
|
||||
|
||||
"noMatchingAppDialogTitle": "Sin aplicación compatible",
|
||||
"noMatchingAppDialogMessage": "No se encontraron aplicaciones para manejar esto.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{¿Mover este elemento al cesto de basura?} other{¿Mover estos {count} elementos al cesto de basura?}}",
|
||||
|
@ -224,7 +219,7 @@
|
|||
"renameEntrySetPageTitle": "Renombrar",
|
||||
"renameEntrySetPagePatternFieldLabel": "Patrón de nombramiento",
|
||||
"renameEntrySetPageInsertTooltip": "Insertar campo",
|
||||
"renameEntrySetPagePreview": "Vista previa",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Vista previa",
|
||||
|
||||
"renameProcessorCounter": "Contador",
|
||||
"renameProcessorName": "Nombre",
|
||||
|
@ -285,9 +280,9 @@
|
|||
"menuActionSlideshow": "Presentación",
|
||||
"menuActionStats": "Estadísticas",
|
||||
|
||||
"viewDialogTabSort": "Ordenar",
|
||||
"viewDialogTabGroup": "Grupo",
|
||||
"viewDialogTabLayout": "Disposición",
|
||||
"viewDialogSortSectionTitle": "Ordenar",
|
||||
"viewDialogGroupSectionTitle": "Grupo",
|
||||
"viewDialogLayoutSectionTitle": "Disposición",
|
||||
|
||||
"tileLayoutGrid": "Cuadrícula",
|
||||
"tileLayoutList": "Lista",
|
||||
|
@ -304,24 +299,24 @@
|
|||
"aboutLinkLicense": "Licencia",
|
||||
"aboutLinkPolicy": "Política de privacidad",
|
||||
|
||||
"aboutBug": "Reporte de errores",
|
||||
"aboutBugSectionTitle": "Reporte de errores",
|
||||
"aboutBugSaveLogInstruction": "Guardar registros de la aplicación a un archivo",
|
||||
"aboutBugCopyInfoInstruction": "Copiar información del sistema",
|
||||
"aboutBugCopyInfoButton": "Copiar",
|
||||
"aboutBugReportInstruction": "Reportar en GitHub con los registros y la información del sistema",
|
||||
"aboutBugReportButton": "Reportar",
|
||||
|
||||
"aboutCredits": "Créditos",
|
||||
"aboutCreditsSectionTitle": "Créditos",
|
||||
"aboutCreditsWorldAtlas1": "Esta aplicación usa un archivo TopoJSON de",
|
||||
"aboutCreditsWorldAtlas2": "bajo licencia ISC.",
|
||||
"aboutCreditsTranslators": "Traductores:",
|
||||
"aboutTranslatorsSectionTitle": "Traductores:",
|
||||
|
||||
"aboutLicenses": "Licencias de código abierto",
|
||||
"aboutLicensesSectionTitle": "Licencias de código abierto",
|
||||
"aboutLicensesBanner": "Esta aplicación usa los siguientes paquetes y librerías de código abierto.",
|
||||
"aboutLicensesAndroidLibraries": "Librerías de Android",
|
||||
"aboutLicensesFlutterPlugins": "Añadidos de Flutter",
|
||||
"aboutLicensesFlutterPackages": "Paquetes de Flutter",
|
||||
"aboutLicensesDartPackages": "Paquetes de Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Librerías de Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Añadidos de Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Paquetes de Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Paquetes de Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Mostrar todas las licencias",
|
||||
|
||||
"policyPageTitle": "Política de privacidad",
|
||||
|
@ -341,11 +336,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Buscar títulos",
|
||||
|
||||
"collectionSortDate": "Por fecha",
|
||||
"collectionSortSize": "Por tamaño",
|
||||
"collectionSortName": "Por nombre de álbum y archivo",
|
||||
"collectionSortRating": "Por clasificación",
|
||||
|
||||
"collectionGroupAlbum": "Por álbum",
|
||||
"collectionGroupMonth": "Por mes",
|
||||
"collectionGroupDay": "Por día",
|
||||
|
@ -374,6 +364,8 @@
|
|||
"collectionSelectSectionTooltip": "Seleccionar sección",
|
||||
"collectionDeselectSectionTooltip": "Deseleccionar sección",
|
||||
|
||||
"drawerAboutButton": "Acerca de",
|
||||
"drawerSettingsButton": "Ajustes",
|
||||
"drawerCollectionAll": "Toda la colección",
|
||||
"drawerCollectionFavourites": "Favoritos",
|
||||
"drawerCollectionImages": "Imágenes",
|
||||
|
@ -383,10 +375,16 @@
|
|||
"drawerCollectionPanoramas": "Panorámicas",
|
||||
"drawerCollectionRaws": "Fotos Raw",
|
||||
"drawerCollectionSphericalVideos": "Videos en 360°",
|
||||
"drawerAlbumPage": "Álbumes",
|
||||
"drawerCountryPage": "Países",
|
||||
"drawerTagPage": "Etiquetas",
|
||||
|
||||
"chipSortDate": "Por fecha",
|
||||
"chipSortName": "Por nombre",
|
||||
"chipSortCount": "Por número de elementos",
|
||||
"sortByDate": "Por fecha",
|
||||
"sortByName": "Por nombre",
|
||||
"sortByItemCount": "Por número de elementos",
|
||||
"sortBySize": "Por tamaño",
|
||||
"sortByAlbumFileName": "Por nombre de álbum y archivo",
|
||||
"sortByRating": "Por clasificación",
|
||||
|
||||
"albumGroupTier": "Por nivel",
|
||||
"albumGroupVolume": "Por volumen de almacenamiento",
|
||||
|
@ -418,13 +416,13 @@
|
|||
"binPageTitle": "Cesto de basura",
|
||||
|
||||
"searchCollectionFieldHint": "Buscar en colección",
|
||||
"searchSectionRecent": "Reciente",
|
||||
"searchSectionDate": "Fecha",
|
||||
"searchSectionAlbums": "Álbumes",
|
||||
"searchSectionCountries": "Países",
|
||||
"searchSectionPlaces": "Lugares",
|
||||
"searchSectionTags": "Etiquetas",
|
||||
"searchSectionRating": "Clasificaciones",
|
||||
"searchRecentSectionTitle": "Reciente",
|
||||
"searchDateSectionTitle": "Fecha",
|
||||
"searchAlbumsSectionTitle": "Álbumes",
|
||||
"searchCountriesSectionTitle": "Países",
|
||||
"searchPlacesSectionTitle": "Lugares",
|
||||
"searchTagsSectionTitle": "Etiquetas",
|
||||
"searchRatingSectionTitle": "Clasificaciones",
|
||||
|
||||
"settingsPageTitle": "Ajustes",
|
||||
"settingsSystemDefault": "Sistema",
|
||||
|
@ -433,36 +431,39 @@
|
|||
"settingsSearchFieldLabel": "Buscar ajustes",
|
||||
"settingsSearchEmpty": "Sin coincidencias",
|
||||
"settingsActionExport": "Exportar",
|
||||
"settingsActionExportDialogTitle": "Exportar",
|
||||
"settingsActionImport": "Importar",
|
||||
"settingsActionImportDialogTitle": "Importar",
|
||||
|
||||
"appExportCovers": "Carátulas",
|
||||
"appExportFavourites": "Favoritos",
|
||||
"appExportSettings": "Ajustes",
|
||||
|
||||
"settingsSectionNavigation": "Navegación",
|
||||
"settingsHome": "Inicio",
|
||||
"settingsNavigationSectionTitle": "Navegación",
|
||||
"settingsHomeTile": "Inicio",
|
||||
"settingsHomeDialogTitle": "Inicio",
|
||||
"settingsShowBottomNavigationBar": "Mostrar barra de navegación inferior",
|
||||
"settingsKeepScreenOnTile": "Mantener pantalla encendida",
|
||||
"settingsKeepScreenOnTitle": "Mantener pantalla encendida",
|
||||
"settingsKeepScreenOnDialogTitle": "Mantener pantalla encendida",
|
||||
"settingsDoubleBackExit": "Presione «atrás» dos veces para salir",
|
||||
|
||||
"settingsConfirmationDialogTile": "Diálogos de confirmación",
|
||||
"settingsConfirmationTile": "Diálogos de confirmación",
|
||||
"settingsConfirmationDialogTitle": "Diálogos de confirmación",
|
||||
"settingsConfirmationDialogDeleteItems": "Preguntar antes de eliminar elementos permanentemente",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Preguntar antes de mover elementos al cesto de basura",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Preguntar antes de mover elementos sin una fecha de metadatos",
|
||||
"settingsConfirmationBeforeDeleteItems": "Preguntar antes de eliminar elementos permanentemente",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Preguntar antes de mover elementos al cesto de basura",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Preguntar antes de mover elementos sin una fecha de metadatos",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menú de navegación",
|
||||
"settingsNavigationDrawerEditorTitle": "Menú de navegación",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menú de navegación",
|
||||
"settingsNavigationDrawerBanner": "Toque y mantenga para mover y reordenar elementos del menú.",
|
||||
"settingsNavigationDrawerTabTypes": "Tipos",
|
||||
"settingsNavigationDrawerTabAlbums": "Álbumes",
|
||||
"settingsNavigationDrawerTabPages": "Páginas",
|
||||
"settingsNavigationDrawerAddAlbum": "Agregar álbum",
|
||||
|
||||
"settingsSectionThumbnails": "Miniaturas",
|
||||
"settingsThumbnailSectionTitle": "Miniaturas",
|
||||
"settingsThumbnailOverlayTile": "Incrustaciones",
|
||||
"settingsThumbnailOverlayTitle": "Incrustaciones",
|
||||
"settingsThumbnailOverlayPageTitle": "Incrustaciones",
|
||||
"settingsThumbnailShowFavouriteIcon": "Mostrar icono de favoritos",
|
||||
"settingsThumbnailShowTagIcon": "Mostrar ícono de etiqueta",
|
||||
"settingsThumbnailShowLocationIcon": "Mostrar icono de ubicación",
|
||||
|
@ -472,13 +473,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Mostrar duración de video",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Acciones rápidas",
|
||||
"settingsCollectionQuickActionEditorTitle": "Acciones rápidas",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Acciones rápidas",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Búsqueda",
|
||||
"settingsCollectionQuickActionTabSelecting": "Selección",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Toque y mantenga para mover botones y seleccionar cuáles acciones se muestran mientras busca elementos.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Toque y mantenga para mover botones y seleccionar cuáles acciones se muestran mientras selecciona elementos.",
|
||||
|
||||
"settingsSectionViewer": "Visor",
|
||||
"settingsViewerSectionTitle": "Visor",
|
||||
"settingsViewerGestureSideTapNext": "Toque en los bordes de la pantalla para mostrar el elemento anterior/siguiente",
|
||||
"settingsViewerUseCutout": "Usar área recortada",
|
||||
"settingsViewerMaximumBrightness": "Brillo máximo",
|
||||
|
@ -486,14 +487,14 @@
|
|||
"settingsImageBackground": "Imagen de fondo",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Acciones rápidas",
|
||||
"settingsViewerQuickActionEditorTitle": "Acciones rápidas",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Acciones rápidas",
|
||||
"settingsViewerQuickActionEditorBanner": "Toque y mantenga para mover botones y seleccionar cuáles acciones se muestran en el visor.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Botones mostrados",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Botones disponibles",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Botones mostrados",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Botones disponibles",
|
||||
"settingsViewerQuickActionEmpty": "Sin botones",
|
||||
|
||||
"settingsViewerOverlayTile": "Incrustaciones",
|
||||
"settingsViewerOverlayTitle": "Incrustaciones",
|
||||
"settingsViewerOverlayPageTitle": "Incrustaciones",
|
||||
"settingsViewerShowOverlayOnOpening": "Mostrar durante apertura",
|
||||
"settingsViewerShowMinimap": "Mostrar mapa en miniatura",
|
||||
"settingsViewerShowInformation": "Mostrar información",
|
||||
|
@ -503,30 +504,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Efecto de difuminado",
|
||||
|
||||
"settingsViewerSlideshowTile": "Presentación",
|
||||
"settingsViewerSlideshowTitle": "Presentación",
|
||||
"settingsViewerSlideshowPageTitle": "Presentación",
|
||||
"settingsSlideshowRepeat": "Repetir",
|
||||
"settingsSlideshowShuffle": "Mezclar",
|
||||
"settingsSlideshowFillScreen": "Llenar pantalla",
|
||||
"settingsSlideshowTransitionTile": "Transición",
|
||||
"settingsSlideshowTransitionTitle": "Transición",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transición",
|
||||
"settingsSlideshowIntervalTile": "Intervalo",
|
||||
"settingsSlideshowIntervalTitle": "Intervalo",
|
||||
"settingsSlideshowIntervalDialogTitle": "Intervalo",
|
||||
"settingsSlideshowVideoPlaybackTile": "Reproducción de video",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Reproducción de video",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Reproducción de video",
|
||||
|
||||
"settingsVideoPageTitle": "Ajustes de video",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Mostrar videos",
|
||||
"settingsVideoEnableHardwareAcceleration": "Aceleración por hardware",
|
||||
"settingsVideoEnableAutoPlay": "Reproducción automática",
|
||||
"settingsVideoLoopModeTile": "Modo bucle",
|
||||
"settingsVideoLoopModeTitle": "Modo bucle",
|
||||
"settingsVideoLoopModeDialogTitle": "Modo bucle",
|
||||
|
||||
"settingsSubtitleThemeTile": "Subtítulos",
|
||||
"settingsSubtitleThemeTitle": "Subtítulos",
|
||||
"settingsSubtitleThemePageTitle": "Subtítulos",
|
||||
"settingsSubtitleThemeSample": "Esto es un ejemplo.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Alineación de texto",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Alineación de texto",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Alineación de texto",
|
||||
"settingsSubtitleThemeTextSize": "Tamaño de texto",
|
||||
"settingsSubtitleThemeShowOutline": "Mostrar contorno y sombra",
|
||||
"settingsSubtitleThemeTextColor": "Color de texto",
|
||||
|
@ -538,13 +539,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Derecha",
|
||||
|
||||
"settingsVideoControlsTile": "Controles",
|
||||
"settingsVideoControlsTitle": "Controles",
|
||||
"settingsVideoControlsPageTitle": "Controles",
|
||||
"settingsVideoButtonsTile": "Botones",
|
||||
"settingsVideoButtonsTitle": "Botones",
|
||||
"settingsVideoButtonsDialogTitle": "Botones",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Doble toque para reproducir/pausar",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Doble toque en los bordes de la pantalla para buscar atrás/adelante",
|
||||
|
||||
"settingsSectionPrivacy": "Privacidad",
|
||||
"settingsPrivacySectionTitle": "Privacidad",
|
||||
"settingsAllowInstalledAppAccess": "Permita el acceso a lista de aplicaciones",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Usado para mejorar los álbumes mostrados",
|
||||
"settingsAllowErrorReporting": "Permitir reporte de errores anónimo",
|
||||
|
@ -553,52 +554,56 @@
|
|||
"settingsEnableBinSubtitle": "Guardar los elementos eliminados por 30 días",
|
||||
|
||||
"settingsHiddenItemsTile": "Elementos ocultos",
|
||||
"settingsHiddenItemsTitle": "Elementos ocultos",
|
||||
"settingsHiddenItemsPageTitle": "Elementos ocultos",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Filtros",
|
||||
"settingsHiddenItemsTabFilters": "Filtros",
|
||||
"settingsHiddenFiltersBanner": "Fotos y videos que concuerden con los filtros no aparecerán en su colección.",
|
||||
"settingsHiddenFiltersEmpty": "Sin filtros",
|
||||
|
||||
"settingsHiddenPathsTitle": "Ubicaciones ocultas",
|
||||
"settingsHiddenItemsTabPaths": "Ubicaciones ocultas",
|
||||
"settingsHiddenPathsBanner": "Fotos y videos que se encuentren en estos directorios y cualquiera de sus subdirectorios no aparecerán en su colección.",
|
||||
"addPathTooltip": "Añadir ubicación",
|
||||
|
||||
"settingsStorageAccessTile": "Acceso al almacenamiento",
|
||||
"settingsStorageAccessTitle": "Acceso al almacenamiento",
|
||||
"settingsStorageAccessPageTitle": "Acceso al almacenamiento",
|
||||
"settingsStorageAccessBanner": "Algunos directorios requieren un permiso de acceso explícito para que sea posible modificar los archivos que contienen. Puede revisar los directorios con permiso aquí.",
|
||||
"settingsStorageAccessEmpty": "Sin permisos de acceso",
|
||||
"settingsStorageAccessRevokeTooltip": "Revocar",
|
||||
|
||||
"settingsSectionAccessibility": "Accesibilidad",
|
||||
"settingsAccessibilitySectionTitle": "Accesibilidad",
|
||||
"settingsRemoveAnimationsTile": "Remover animaciones",
|
||||
"settingsRemoveAnimationsTitle": "Remover animaciones",
|
||||
"settingsRemoveAnimationsDialogTitle": "Remover animaciones",
|
||||
"settingsTimeToTakeActionTile": "Retraso para ejecutar una acción",
|
||||
"settingsTimeToTakeActionTitle": "Retraso para ejecutar una acción",
|
||||
"settingsTimeToTakeActionDialogTitle": "Retraso para ejecutar una acción",
|
||||
|
||||
"settingsSectionDisplay": "Pantalla",
|
||||
"settingsThemeBrightness": "Tema",
|
||||
"settingsDisplaySectionTitle": "Pantalla",
|
||||
"settingsThemeBrightnessTile": "Tema",
|
||||
"settingsThemeBrightnessDialogTitle": "Tema",
|
||||
"settingsThemeColorHighlights": "Acentos de color",
|
||||
"settingsThemeEnableDynamicColor": "Color dinámico",
|
||||
"settingsDisplayRefreshRateModeTile": "Tasa de refresco de la pantalla",
|
||||
"settingsDisplayRefreshRateModeTitle": "Tasa de refresco",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Tasa de refresco",
|
||||
|
||||
"settingsSectionLanguage": "Idioma y formatos",
|
||||
"settingsLanguage": "Idioma",
|
||||
"settingsLanguageSectionTitle": "Idioma y formatos",
|
||||
"settingsLanguageTile": "Idioma",
|
||||
"settingsLanguagePageTitle": "Idioma",
|
||||
"settingsCoordinateFormatTile": "Formato de coordenadas",
|
||||
"settingsCoordinateFormatTitle": "Formato de coordenadas",
|
||||
"settingsCoordinateFormatDialogTitle": "Formato de coordenadas",
|
||||
"settingsUnitSystemTile": "Unidades",
|
||||
"settingsUnitSystemTitle": "Unidades",
|
||||
"settingsUnitSystemDialogTitle": "Unidades",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Protector de pantalla",
|
||||
|
||||
"settingsWidgetPageTitle": "Marco de foto",
|
||||
"settingsWidgetShowOutline": "Borde",
|
||||
|
||||
"settingsCollectionTile": "Colección",
|
||||
|
||||
"statsPageTitle": "Stats",
|
||||
"statsWithGps": "{count, plural, =1{1 elemento con ubicación} other{{count} elementos con ubicación}}",
|
||||
"statsTopCountries": "Países principales",
|
||||
"statsTopPlaces": "Lugares principales",
|
||||
"statsTopTags": "Etiquetas principales",
|
||||
"statsTopCountriesSectionTitle": "Países principales",
|
||||
"statsTopPlacesSectionTitle": "Lugares principales",
|
||||
"statsTopTagsSectionTitle": "Etiquetas principales",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "ABRIR PANORÁMICA",
|
||||
"viewerSetWallpaperButtonLabel": "ESTABLECER FONDO",
|
||||
|
@ -620,7 +625,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coordinadas",
|
||||
"viewerInfoLabelAddress": "Dirección",
|
||||
|
||||
"mapStyleTitle": "Estilo de mapa",
|
||||
"mapStyleDialogTitle": "Estilo de mapa",
|
||||
"mapStyleTooltip": "Selección de estilo de mapa",
|
||||
"mapZoomInTooltip": "Acercar",
|
||||
"mapZoomOutTooltip": "Alejar",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Supprimer",
|
||||
"resetTooltip": "Réinitialiser",
|
||||
"saveTooltip": "Sauvegarder",
|
||||
"pickTooltip": "Sélectionner",
|
||||
|
||||
"doubleBackExitMessage": "Pressez «\u00A0retour\u00A0» à nouveau pour quitter.",
|
||||
"doNotAskAgain": "Ne pas demander de nouveau",
|
||||
|
@ -87,18 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "Modifier la date",
|
||||
"entryInfoActionEditLocation": "Modifier le lieu",
|
||||
"entryInfoActionEditDescription": "Modifier la description",
|
||||
"entryInfoActionEditTitleDescription": "Modifier titre et description",
|
||||
"entryInfoActionEditRating": "Modifier la notation",
|
||||
"entryInfoActionEditTags": "Modifier les libellés",
|
||||
"entryInfoActionRemoveMetadata": "Retirer les métadonnées",
|
||||
|
||||
"filterBinLabel": "Corbeille",
|
||||
"filterFavouriteLabel": "Favori",
|
||||
"filterLocationEmptyLabel": "Sans lieu",
|
||||
"filterTagEmptyLabel": "Sans libellé",
|
||||
"filterNoDateLabel": "Sans date",
|
||||
"filterNoLocationLabel": "Sans lieu",
|
||||
"filterNoRatingLabel": "Sans notation",
|
||||
"filterNoTagLabel": "Sans libellé",
|
||||
"filterNoTitleLabel": "Sans titre",
|
||||
"filterOnThisDayLabel": "Ce jour-là",
|
||||
"filterRecentlyAddedLabel": "Ajouté récemment",
|
||||
"filterRatingUnratedLabel": "Sans notation",
|
||||
"filterRatingRejectedLabel": "Rejeté",
|
||||
"filterTypeAnimatedLabel": "Animation",
|
||||
"filterTypeMotionPhotoLabel": "Photo animée",
|
||||
|
@ -179,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "Carte SD",
|
||||
"rootDirectoryDescription": "dossier racine",
|
||||
"otherDirectoryDescription": "dossier «\u00A0{name}\u00A0»",
|
||||
"storageAccessDialogTitle": "Accès au dossier",
|
||||
"storageAccessDialogMessage": "Veuillez sélectionner le {directory} de «\u00A0{volume}\u00A0» à l’écran suivant, pour que l’app puisse modifier son contenu.",
|
||||
"restrictedAccessDialogTitle": "Accès restreint",
|
||||
"restrictedAccessDialogMessage": "Cette app ne peut pas modifier les fichiers du {directory} de «\u00A0{volume}\u00A0».\n\nVeuillez utiliser une app pré-installée pour déplacer les fichiers vers un autre dossier.",
|
||||
"notEnoughSpaceDialogTitle": "Espace insuffisant",
|
||||
"notEnoughSpaceDialogMessage": "Cette opération nécessite {neededSize} d’espace disponible sur «\u00A0{volume}\u00A0», mais il ne reste que {freeSize}.",
|
||||
"missingSystemFilePickerDialogTitle": "Sélecteur de fichiers désactivé",
|
||||
"missingSystemFilePickerDialogMessage": "Le sélecteur de fichiers du système est absent ou désactivé. Veuillez le réactiver et réessayer.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Formats non supportés",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Cette opération n’est pas disponible pour les fichiers au format suivant : {types}.} other{Cette opération n’est pas disponible pour les fichiers aux formats suivants : {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Certains fichiers dans le dossier de destination ont le même nom.",
|
||||
|
@ -197,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "Nom du raccourci",
|
||||
"addShortcutButtonLabel": "AJOUTER",
|
||||
|
||||
"noMatchingAppDialogTitle": "App indisponible",
|
||||
"noMatchingAppDialogMessage": "Aucune app ne peut effectuer cette opération.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Mettre cet élément à la corbeille ?} other{Mettre ces {count} éléments à la corbeille ?}}",
|
||||
|
@ -226,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "Renommage",
|
||||
"renameEntrySetPagePatternFieldLabel": "Modèle de nommage",
|
||||
"renameEntrySetPageInsertTooltip": "Ajouter un champ",
|
||||
"renameEntrySetPagePreview": "Aperçu",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Aperçu",
|
||||
|
||||
"renameProcessorCounter": "Compteur",
|
||||
"renameProcessorName": "Nom",
|
||||
|
@ -259,8 +256,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Utiliser ce lieu",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Description",
|
||||
|
||||
"editEntryRatingDialogTitle": "Notation",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Retrait de métadonnées",
|
||||
|
@ -289,9 +284,10 @@
|
|||
"menuActionSlideshow": "Diaporama",
|
||||
"menuActionStats": "Statistiques",
|
||||
|
||||
"viewDialogTabSort": "Tri",
|
||||
"viewDialogTabGroup": "Groupes",
|
||||
"viewDialogTabLayout": "Vue",
|
||||
"viewDialogSortSectionTitle": "Tri",
|
||||
"viewDialogGroupSectionTitle": "Groupes",
|
||||
"viewDialogLayoutSectionTitle": "Vue",
|
||||
"viewDialogReverseSortOrder": "Inverser l’ordre",
|
||||
|
||||
"tileLayoutGrid": "Grille",
|
||||
"tileLayoutList": "Liste",
|
||||
|
@ -308,24 +304,24 @@
|
|||
"aboutLinkLicense": "Licence",
|
||||
"aboutLinkPolicy": "Politique de confidentialité",
|
||||
|
||||
"aboutBug": "Rapports d’erreur",
|
||||
"aboutBugSectionTitle": "Rapports d’erreur",
|
||||
"aboutBugSaveLogInstruction": "Sauvegarder les logs de l’app vers un fichier",
|
||||
"aboutBugCopyInfoInstruction": "Copier les informations d’environnement",
|
||||
"aboutBugCopyInfoButton": "Copier",
|
||||
"aboutBugReportInstruction": "Créer une «\u00A0issue\u00A0» sur GitHub en attachant les logs et informations d’environnement",
|
||||
"aboutBugReportButton": "Créer",
|
||||
|
||||
"aboutCredits": "Remerciements",
|
||||
"aboutCreditsSectionTitle": "Remerciements",
|
||||
"aboutCreditsWorldAtlas1": "Cette app utilise un fichier TopoJSON de ",
|
||||
"aboutCreditsWorldAtlas2": "sous licence ISC.",
|
||||
"aboutCreditsTranslators": "Traducteurs",
|
||||
"aboutTranslatorsSectionTitle": "Traducteurs",
|
||||
|
||||
"aboutLicenses": "Licences open-source",
|
||||
"aboutLicensesSectionTitle": "Licences open-source",
|
||||
"aboutLicensesBanner": "Cette app utilise ces librairies et packages open-source.",
|
||||
"aboutLicensesAndroidLibraries": "Librairies Android",
|
||||
"aboutLicensesFlutterPlugins": "Plugins Flutter",
|
||||
"aboutLicensesFlutterPackages": "Packages Flutter",
|
||||
"aboutLicensesDartPackages": "Packages Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Librairies Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Plugins Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Packages Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Packages Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Afficher toutes les licences",
|
||||
|
||||
"policyPageTitle": "Politique de confidentialité",
|
||||
|
@ -345,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Recherche de titres",
|
||||
|
||||
"collectionSortDate": "par date",
|
||||
"collectionSortSize": "par taille",
|
||||
"collectionSortName": "alphabétique",
|
||||
"collectionSortRating": "par notation",
|
||||
|
||||
"collectionGroupAlbum": "par album",
|
||||
"collectionGroupMonth": "par mois",
|
||||
"collectionGroupDay": "par jour",
|
||||
|
@ -378,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "Sélectionner la section",
|
||||
"collectionDeselectSectionTooltip": "Désélectionner la section",
|
||||
|
||||
"drawerAboutButton": "À propos",
|
||||
"drawerSettingsButton": "Réglages",
|
||||
"drawerCollectionAll": "Toute la collection",
|
||||
"drawerCollectionFavourites": "Favoris",
|
||||
"drawerCollectionImages": "Images",
|
||||
|
@ -387,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "Panoramas",
|
||||
"drawerCollectionRaws": "Photos Raw",
|
||||
"drawerCollectionSphericalVideos": "Vidéos à 360°",
|
||||
"drawerAlbumPage": "Albums",
|
||||
"drawerCountryPage": "Pays",
|
||||
"drawerTagPage": "Libellés",
|
||||
|
||||
"chipSortDate": "par date",
|
||||
"chipSortName": "alphabétique",
|
||||
"chipSortCount": "par nombre d’éléments",
|
||||
"sortByDate": "par date",
|
||||
"sortByName": "alphabétique",
|
||||
"sortByItemCount": "par nombre d’éléments",
|
||||
"sortBySize": "par taille",
|
||||
"sortByAlbumFileName": "alphabétique",
|
||||
"sortByRating": "par notation",
|
||||
|
||||
"sortOrderNewestFirst": "Plus récents d’abord",
|
||||
"sortOrderOldestFirst": "Plus anciens d’abord",
|
||||
"sortOrderAtoZ": "De A à Z",
|
||||
"sortOrderZtoA": "De Z à A",
|
||||
"sortOrderHighestFirst": "Meilleurs d’abord",
|
||||
"sortOrderLowestFirst": "Moins bons d’abord",
|
||||
"sortOrderLargestFirst": "Plus larges d’abord",
|
||||
"sortOrderSmallestFirst": "Moins larges d’abord",
|
||||
|
||||
"albumGroupTier": "par importance",
|
||||
"albumGroupVolume": "par volume de stockage",
|
||||
|
@ -422,13 +430,14 @@
|
|||
"binPageTitle": "Corbeille",
|
||||
|
||||
"searchCollectionFieldHint": "Recherche",
|
||||
"searchSectionRecent": "Historique",
|
||||
"searchSectionDate": "Date",
|
||||
"searchSectionAlbums": "Albums",
|
||||
"searchSectionCountries": "Pays",
|
||||
"searchSectionPlaces": "Lieux",
|
||||
"searchSectionTags": "Libellés",
|
||||
"searchSectionRating": "Notations",
|
||||
"searchRecentSectionTitle": "Historique",
|
||||
"searchDateSectionTitle": "Date",
|
||||
"searchAlbumsSectionTitle": "Albums",
|
||||
"searchCountriesSectionTitle": "Pays",
|
||||
"searchPlacesSectionTitle": "Lieux",
|
||||
"searchTagsSectionTitle": "Libellés",
|
||||
"searchRatingSectionTitle": "Notations",
|
||||
"searchMetadataSectionTitle": "Métadonnées",
|
||||
|
||||
"settingsPageTitle": "Réglages",
|
||||
"settingsSystemDefault": "Système",
|
||||
|
@ -437,37 +446,40 @@
|
|||
"settingsSearchFieldLabel": "Recherche de réglages",
|
||||
"settingsSearchEmpty": "Aucun réglage correspondant",
|
||||
"settingsActionExport": "Exporter",
|
||||
"settingsActionExportDialogTitle": "Exporter",
|
||||
"settingsActionImport": "Importer",
|
||||
"settingsActionImportDialogTitle": "Importer",
|
||||
|
||||
"appExportCovers": "Couvertures",
|
||||
"appExportFavourites": "Favoris",
|
||||
"appExportSettings": "Réglages",
|
||||
|
||||
"settingsSectionNavigation": "Navigation",
|
||||
"settingsHome": "Page d’accueil",
|
||||
"settingsNavigationSectionTitle": "Navigation",
|
||||
"settingsHomeTile": "Page d’accueil",
|
||||
"settingsHomeDialogTitle": "Page d’accueil",
|
||||
"settingsShowBottomNavigationBar": "Afficher la barre de navigation",
|
||||
"settingsKeepScreenOnTile": "Maintenir l’écran allumé",
|
||||
"settingsKeepScreenOnTitle": "Allumage de l’écran",
|
||||
"settingsKeepScreenOnDialogTitle": "Allumage de l’écran",
|
||||
"settingsDoubleBackExit": "Presser «\u00A0retour\u00A0» 2 fois pour quitter",
|
||||
|
||||
"settingsConfirmationDialogTile": "Demandes de confirmation",
|
||||
"settingsConfirmationTile": "Demandes de confirmation",
|
||||
"settingsConfirmationDialogTitle": "Demandes de confirmation",
|
||||
"settingsConfirmationDialogDeleteItems": "Suppression définitive d’éléments",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Mise d’éléments à la corbeille",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Déplacement d’éléments non datés",
|
||||
"settingsConfirmationBeforeDeleteItems": "Suppression définitive d’éléments",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Mise d’éléments à la corbeille",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Déplacement d’éléments non datés",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Confirmation après mise d’éléments à la corbeille",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menu de navigation",
|
||||
"settingsNavigationDrawerEditorTitle": "Menu de navigation",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menu de navigation",
|
||||
"settingsNavigationDrawerBanner": "Maintenez votre doigt appuyé pour déplacer et réorganiser les éléments de menu.",
|
||||
"settingsNavigationDrawerTabTypes": "Types",
|
||||
"settingsNavigationDrawerTabAlbums": "Albums",
|
||||
"settingsNavigationDrawerTabPages": "Pages",
|
||||
"settingsNavigationDrawerAddAlbum": "Ajouter un album",
|
||||
|
||||
"settingsSectionThumbnails": "Vignettes",
|
||||
"settingsThumbnailSectionTitle": "Vignettes",
|
||||
"settingsThumbnailOverlayTile": "Incrustations",
|
||||
"settingsThumbnailOverlayTitle": "Incrustations",
|
||||
"settingsThumbnailOverlayPageTitle": "Incrustations",
|
||||
"settingsThumbnailShowFavouriteIcon": "Afficher l’icône de favori",
|
||||
"settingsThumbnailShowTagIcon": "Afficher l’icône de libellé",
|
||||
"settingsThumbnailShowLocationIcon": "Afficher l’icône de lieu",
|
||||
|
@ -477,13 +489,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Afficher la durée de la vidéo",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Actions rapides",
|
||||
"settingsCollectionQuickActionEditorTitle": "Actions rapides",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Actions rapides",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Navigation",
|
||||
"settingsCollectionQuickActionTabSelecting": "Sélection",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Maintenez votre doigt appuyé pour déplacer les boutons et choisir les actions affichées lors de la navigation.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Maintenez votre doigt appuyé pour déplacer les boutons et choisir les actions affichées lors de la sélection d’éléments.",
|
||||
|
||||
"settingsSectionViewer": "Visionneuse",
|
||||
"settingsViewerSectionTitle": "Visionneuse",
|
||||
"settingsViewerGestureSideTapNext": "Appuyer sur les bords de l’écran pour passer à l’élément précédent/suivant",
|
||||
"settingsViewerUseCutout": "Utiliser la zone d’encoche",
|
||||
"settingsViewerMaximumBrightness": "Luminosité maximale",
|
||||
|
@ -491,14 +503,14 @@
|
|||
"settingsImageBackground": "Arrière-plan de l’image",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Actions rapides",
|
||||
"settingsViewerQuickActionEditorTitle": "Actions rapides",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Actions rapides",
|
||||
"settingsViewerQuickActionEditorBanner": "Maintenez votre doigt appuyé pour déplacer les boutons et choisir les actions affichées sur la visionneuse.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Boutons affichés",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Boutons disponibles",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Boutons affichés",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Boutons disponibles",
|
||||
"settingsViewerQuickActionEmpty": "Aucun bouton",
|
||||
|
||||
"settingsViewerOverlayTile": "Incrustations",
|
||||
"settingsViewerOverlayTitle": "Incrustations",
|
||||
"settingsViewerOverlayPageTitle": "Incrustations",
|
||||
"settingsViewerShowOverlayOnOpening": "Afficher à l’ouverture",
|
||||
"settingsViewerShowMinimap": "Afficher la mini-carte",
|
||||
"settingsViewerShowInformation": "Afficher les détails",
|
||||
|
@ -508,30 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Effets de flou",
|
||||
|
||||
"settingsViewerSlideshowTile": "Diaporama",
|
||||
"settingsViewerSlideshowTitle": "Diaporama",
|
||||
"settingsViewerSlideshowPageTitle": "Diaporama",
|
||||
"settingsSlideshowRepeat": "Répéter",
|
||||
"settingsSlideshowShuffle": "Aléatoire",
|
||||
"settingsSlideshowFillScreen": "Remplir l’écran",
|
||||
"settingsSlideshowTransitionTile": "Transition",
|
||||
"settingsSlideshowTransitionTitle": "Transition",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transition",
|
||||
"settingsSlideshowIntervalTile": "Intervalle",
|
||||
"settingsSlideshowIntervalTitle": "Intervalle",
|
||||
"settingsSlideshowIntervalDialogTitle": "Intervalle",
|
||||
"settingsSlideshowVideoPlaybackTile": "Lecture de vidéos",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Lecture de vidéos",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Lecture de vidéos",
|
||||
|
||||
"settingsVideoPageTitle": "Réglages vidéo",
|
||||
"settingsSectionVideo": "Vidéo",
|
||||
"settingsVideoSectionTitle": "Vidéo",
|
||||
"settingsVideoShowVideos": "Afficher les vidéos",
|
||||
"settingsVideoEnableHardwareAcceleration": "Accélération matérielle",
|
||||
"settingsVideoEnableAutoPlay": "Lecture automatique",
|
||||
"settingsVideoLoopModeTile": "Lecture répétée",
|
||||
"settingsVideoLoopModeTitle": "Lecture répétée",
|
||||
"settingsVideoLoopModeDialogTitle": "Lecture répétée",
|
||||
|
||||
"settingsSubtitleThemeTile": "Sous-titres",
|
||||
"settingsSubtitleThemeTitle": "Sous-titres",
|
||||
"settingsSubtitleThemePageTitle": "Sous-titres",
|
||||
"settingsSubtitleThemeSample": "Ceci est un exemple.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Alignement du texte",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Alignement du texte",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Alignement du texte",
|
||||
"settingsSubtitleThemeTextSize": "Taille du texte",
|
||||
"settingsSubtitleThemeShowOutline": "Afficher les contours et ombres",
|
||||
"settingsSubtitleThemeTextColor": "Couleur du texte",
|
||||
|
@ -543,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "droite",
|
||||
|
||||
"settingsVideoControlsTile": "Contrôles",
|
||||
"settingsVideoControlsTitle": "Contrôles",
|
||||
"settingsVideoControlsPageTitle": "Contrôles",
|
||||
"settingsVideoButtonsTile": "Boutons",
|
||||
"settingsVideoButtonsTitle": "Boutons",
|
||||
"settingsVideoButtonsDialogTitle": "Boutons",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Appuyer deux fois pour lire ou mettre en pause",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Appuyer deux fois sur les bords de l’écran pour reculer ou avancer",
|
||||
|
||||
"settingsSectionPrivacy": "Confidentialité",
|
||||
"settingsPrivacySectionTitle": "Confidentialité",
|
||||
"settingsAllowInstalledAppAccess": "Autoriser l’accès à l’inventaire des apps",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Pour un affichage amélioré des albums",
|
||||
"settingsAllowErrorReporting": "Autoriser l’envoi de rapports d’erreur",
|
||||
|
@ -558,52 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "Conserver les éléments supprimés pendant 30 jours",
|
||||
|
||||
"settingsHiddenItemsTile": "Éléments masqués",
|
||||
"settingsHiddenItemsTitle": "Éléments masqués",
|
||||
"settingsHiddenItemsPageTitle": "Éléments masqués",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Filtres masqués",
|
||||
"settingsHiddenItemsTabFilters": "Filtres masqués",
|
||||
"settingsHiddenFiltersBanner": "Les images et vidéos correspondantes aux filtres masqués n’apparaîtront pas dans votre collection.",
|
||||
"settingsHiddenFiltersEmpty": "Aucun filtre masqué",
|
||||
|
||||
"settingsHiddenPathsTitle": "Chemins masqués",
|
||||
"settingsHiddenItemsTabPaths": "Chemins masqués",
|
||||
"settingsHiddenPathsBanner": "Les images et vidéos dans ces dossiers, ou leurs sous-dossiers, n’apparaîtront pas dans votre collection.",
|
||||
"addPathTooltip": "Ajouter un chemin",
|
||||
|
||||
"settingsStorageAccessTile": "Accès au stockage",
|
||||
"settingsStorageAccessTitle": "Accès au stockage",
|
||||
"settingsStorageAccessPageTitle": "Accès au stockage",
|
||||
"settingsStorageAccessBanner": "Une autorisation d’accès au stockage est nécessaire pour modifier le contenu de certains dossiers. Voici la liste des autorisations couramment en vigueur.",
|
||||
"settingsStorageAccessEmpty": "Aucune autorisation d’accès",
|
||||
"settingsStorageAccessRevokeTooltip": "Retirer",
|
||||
|
||||
"settingsSectionAccessibility": "Accessibilité",
|
||||
"settingsAccessibilitySectionTitle": "Accessibilité",
|
||||
"settingsRemoveAnimationsTile": "Suppression des animations",
|
||||
"settingsRemoveAnimationsTitle": "Suppression des animations",
|
||||
"settingsRemoveAnimationsDialogTitle": "Suppression des animations",
|
||||
"settingsTimeToTakeActionTile": "Délai pour effectuer une action",
|
||||
"settingsTimeToTakeActionTitle": "Délai pour effectuer une action",
|
||||
"settingsTimeToTakeActionDialogTitle": "Délai pour effectuer une action",
|
||||
|
||||
"settingsSectionDisplay": "Affichage",
|
||||
"settingsThemeBrightness": "Thème",
|
||||
"settingsDisplaySectionTitle": "Affichage",
|
||||
"settingsThemeBrightnessTile": "Thème",
|
||||
"settingsThemeBrightnessDialogTitle": "Thème",
|
||||
"settingsThemeColorHighlights": "Surlignages colorés",
|
||||
"settingsThemeEnableDynamicColor": "Couleur dynamique",
|
||||
"settingsDisplayRefreshRateModeTile": "Fréquence d’actualisation de l’écran",
|
||||
"settingsDisplayRefreshRateModeTitle": "Fréquence d’actualisation",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Fréquence d’actualisation",
|
||||
|
||||
"settingsSectionLanguage": "Langue & Formats",
|
||||
"settingsLanguage": "Langue",
|
||||
"settingsLanguageSectionTitle": "Langue & Formats",
|
||||
"settingsLanguageTile": "Langue",
|
||||
"settingsLanguagePageTitle": "Langue",
|
||||
"settingsCoordinateFormatTile": "Format de coordonnées",
|
||||
"settingsCoordinateFormatTitle": "Format de coordonnées",
|
||||
"settingsCoordinateFormatDialogTitle": "Format de coordonnées",
|
||||
"settingsUnitSystemTile": "Unités",
|
||||
"settingsUnitSystemTitle": "Unités",
|
||||
"settingsUnitSystemDialogTitle": "Unités",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Économiseur d’écran",
|
||||
|
||||
"settingsWidgetPageTitle": "Cadre photo",
|
||||
"settingsWidgetShowOutline": "Contours",
|
||||
|
||||
"settingsCollectionTile": "Collection",
|
||||
|
||||
"statsPageTitle": "Statistiques",
|
||||
"statsWithGps": "{count, plural, =1{1 élément localisé} other{{count} éléments localisés}}",
|
||||
"statsTopCountries": "Top pays",
|
||||
"statsTopPlaces": "Top lieux",
|
||||
"statsTopTags": "Top libellés",
|
||||
"statsTopCountriesSectionTitle": "Top pays",
|
||||
"statsTopPlacesSectionTitle": "Top lieux",
|
||||
"statsTopTagsSectionTitle": "Top libellés",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "OUVRIR LE PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "APPLIQUER",
|
||||
|
@ -614,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Retour à la visionneuse",
|
||||
|
||||
"viewerInfoUnknown": "inconnu",
|
||||
"viewerInfoLabelDescription": "Description",
|
||||
"viewerInfoLabelTitle": "Titre",
|
||||
"viewerInfoLabelDate": "Date",
|
||||
"viewerInfoLabelResolution": "Résolution",
|
||||
|
@ -625,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coordonnées",
|
||||
"viewerInfoLabelAddress": "Adresse",
|
||||
|
||||
"mapStyleTitle": "Type de carte",
|
||||
"mapStyleDialogTitle": "Type de carte",
|
||||
"mapStyleTooltip": "Sélectionner le type de carte",
|
||||
"mapZoomInTooltip": "Zoomer",
|
||||
"mapZoomOutTooltip": "Dézoomer",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Hapus",
|
||||
"resetTooltip": "Ulang",
|
||||
"saveTooltip": "Simpan",
|
||||
"pickTooltip": "Pilih",
|
||||
|
||||
"doubleBackExitMessage": "Ketuk “kembali” lagi untuk keluar.",
|
||||
"doNotAskAgain": "Jangan tanya lagi",
|
||||
|
@ -87,16 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "Ubah tanggal & waktu",
|
||||
"entryInfoActionEditLocation": "Ubah lokasi",
|
||||
"entryInfoActionEditTitleDescription": "Ubah judul & deskripsi",
|
||||
"entryInfoActionEditRating": "Ubah nilai",
|
||||
"entryInfoActionEditTags": "Ubah label",
|
||||
"entryInfoActionRemoveMetadata": "Hapus metadata",
|
||||
|
||||
"filterBinLabel": "Tong sampah",
|
||||
"filterFavouriteLabel": "Favorit",
|
||||
"filterLocationEmptyLabel": "Lokasi yang tidak ditemukan",
|
||||
"filterTagEmptyLabel": "Tidak dilabel",
|
||||
"filterNoDateLabel": "Tak ada tanggal",
|
||||
"filterNoLocationLabel": "Lokasi yang tidak ditemukan",
|
||||
"filterNoRatingLabel": "Belum diberi nilai",
|
||||
"filterNoTagLabel": "Tidak dilabel",
|
||||
"filterNoTitleLabel": "Tak ada judul",
|
||||
"filterOnThisDayLabel": "Di hari ini",
|
||||
"filterRatingUnratedLabel": "Belum diberi nilai",
|
||||
"filterRecentlyAddedLabel": "Baru-baru ini ditambahkan",
|
||||
"filterRatingRejectedLabel": "Ditolak",
|
||||
"filterTypeAnimatedLabel": "Teranimasi",
|
||||
"filterTypeMotionPhotoLabel": "Foto bergerak",
|
||||
|
@ -177,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "kartu SD",
|
||||
"rootDirectoryDescription": "direktori root",
|
||||
"otherDirectoryDescription": "direktori “{name}”",
|
||||
"storageAccessDialogTitle": "Akses Penyimpanan",
|
||||
"storageAccessDialogMessage": "Silahkan pilih {directory} dari “{volume}” di layar berikutnya untuk memberikan akses aplikasi ini ke sana.",
|
||||
"restrictedAccessDialogTitle": "Akses Terbatas",
|
||||
"restrictedAccessDialogMessage": "Aplikasi ini tidak diizinkan untuk mengubah file di {directory} dari “{volume}”.\n\nSilahkan pakai aplikasi Manager File atau aplikasi gallery untuk gerakkan benda ke direktori lain.",
|
||||
"notEnoughSpaceDialogTitle": "Tidak Cukup Ruang",
|
||||
"notEnoughSpaceDialogMessage": "Operasi ini memerlukan {neededSize} ruang kosong di “{volume}” untuk menyelesaikan, tetapi hanya ada {freeSize} tersisa.",
|
||||
"missingSystemFilePickerDialogTitle": "Pemilih File Sistem Tidak Ada",
|
||||
"missingSystemFilePickerDialogMessage": "Pemilih file sistem tidak ada atau dinonaktifkan. Harap aktifkan dan coba lagi.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Tipe Yang Tidak Didukung",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, other{Operasi ini tidak didukung untuk benda dari jenis berikut: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Beberapa file di folder tujuan memiliki nama yang sama.",
|
||||
|
@ -195,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "Label pintasan",
|
||||
"addShortcutButtonLabel": "TAMBAH",
|
||||
|
||||
"noMatchingAppDialogTitle": "Tidak Ada Aplikasi Yang Cocok",
|
||||
"noMatchingAppDialogMessage": "Tidak ada aplikasi yang cocok untuk menangani ini.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Pindahkan benda ini ke tong sampah?} other{Pindahkan {count} benda ke tempat sampah?}}",
|
||||
|
@ -224,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "Ganti nama",
|
||||
"renameEntrySetPagePatternFieldLabel": "Pola penamaan",
|
||||
"renameEntrySetPageInsertTooltip": "Masukkan bidang",
|
||||
"renameEntrySetPagePreview": "Pratinjau",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Pratinjau",
|
||||
|
||||
"renameProcessorCounter": "Penghitungan",
|
||||
"renameProcessorName": "Nama",
|
||||
|
@ -285,9 +284,10 @@
|
|||
"menuActionSlideshow": "Tampilan slide",
|
||||
"menuActionStats": "Statistik",
|
||||
|
||||
"viewDialogTabSort": "Sortir",
|
||||
"viewDialogTabGroup": "Grup",
|
||||
"viewDialogTabLayout": "Tata letak",
|
||||
"viewDialogSortSectionTitle": "Sortir",
|
||||
"viewDialogGroupSectionTitle": "Grup",
|
||||
"viewDialogLayoutSectionTitle": "Tata letak",
|
||||
"viewDialogReverseSortOrder": "Urutan pengurutan terbalik",
|
||||
|
||||
"tileLayoutGrid": "Grid",
|
||||
"tileLayoutList": "Daftar",
|
||||
|
@ -304,24 +304,24 @@
|
|||
"aboutLinkLicense": "Lisensi",
|
||||
"aboutLinkPolicy": "Aturan Privasi",
|
||||
|
||||
"aboutBug": "Lapor Bug",
|
||||
"aboutBugSectionTitle": "Lapor Bug",
|
||||
"aboutBugSaveLogInstruction": "Simpan log aplikasi ke file",
|
||||
"aboutBugCopyInfoInstruction": "Salin informasi sistem",
|
||||
"aboutBugCopyInfoButton": "Salin",
|
||||
"aboutBugReportInstruction": "Laporkan ke GitHub dengan log dan informasi sistem",
|
||||
"aboutBugReportButton": "Rapor",
|
||||
|
||||
"aboutCredits": "Kredit",
|
||||
"aboutCreditsSectionTitle": "Kredit",
|
||||
"aboutCreditsWorldAtlas1": "Aplikasi ini menggunakan file TopoJSON dari",
|
||||
"aboutCreditsWorldAtlas2": "dibawah Lisensi ISC.",
|
||||
"aboutCreditsTranslators": "Penerjemah",
|
||||
"aboutTranslatorsSectionTitle": "Penerjemah",
|
||||
|
||||
"aboutLicenses": "Lisensi Sumber Terbuka",
|
||||
"aboutLicensesSectionTitle": "Lisensi Sumber Terbuka",
|
||||
"aboutLicensesBanner": "Aplikasi ini menggunakan paket dan perpustakaan sumber terbuka berikut.",
|
||||
"aboutLicensesAndroidLibraries": "Perpustakaan Android",
|
||||
"aboutLicensesFlutterPlugins": "Plugin Flutter",
|
||||
"aboutLicensesFlutterPackages": "Paket Flutter",
|
||||
"aboutLicensesDartPackages": "Paket Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Perpustakaan Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Plugin Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Paket Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Paket Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Tampilkan Semua Lisensi",
|
||||
|
||||
"policyPageTitle": "Aturan Privasi",
|
||||
|
@ -341,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Cari judul",
|
||||
|
||||
"collectionSortDate": "Lewat tanggal",
|
||||
"collectionSortSize": "Lewat ukuran",
|
||||
"collectionSortName": "Lewat nama album & file",
|
||||
"collectionSortRating": "Lewat nilai",
|
||||
|
||||
"collectionGroupAlbum": "Lewat album",
|
||||
"collectionGroupMonth": "Lewat bulan",
|
||||
"collectionGroupDay": "Lewat hari",
|
||||
|
@ -374,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "Pilih bagian",
|
||||
"collectionDeselectSectionTooltip": "Batalkan pilihan bagian",
|
||||
|
||||
"drawerAboutButton": "Tentang",
|
||||
"drawerSettingsButton": "Pengaturan",
|
||||
"drawerCollectionAll": "Semua koleksi",
|
||||
"drawerCollectionFavourites": "Favorit",
|
||||
"drawerCollectionImages": "Gambar",
|
||||
|
@ -383,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "Panorama",
|
||||
"drawerCollectionRaws": "Foto Raw",
|
||||
"drawerCollectionSphericalVideos": "Video 360°",
|
||||
"drawerAlbumPage": "Album",
|
||||
"drawerCountryPage": "Negara",
|
||||
"drawerTagPage": "Label",
|
||||
|
||||
"chipSortDate": "Lewat tanggal",
|
||||
"chipSortName": "Lewat nama",
|
||||
"chipSortCount": "Lewat jumlah benda",
|
||||
"sortByDate": "Lewat tanggal",
|
||||
"sortByName": "Lewat nama",
|
||||
"sortByItemCount": "Lewat jumlah benda",
|
||||
"sortBySize": "Lewat ukuran",
|
||||
"sortByAlbumFileName": "Lewat nama album & file",
|
||||
"sortByRating": "Lewat nilai",
|
||||
|
||||
"sortOrderNewestFirst": "Terbaru pertama",
|
||||
"sortOrderOldestFirst": "Tertua pertama",
|
||||
"sortOrderAtoZ": "A ke Z",
|
||||
"sortOrderZtoA": "Z ke A",
|
||||
"sortOrderHighestFirst": "Tertinggi pertama",
|
||||
"sortOrderLowestFirst": "Terendah pertama",
|
||||
"sortOrderLargestFirst": "Terbesar pertama",
|
||||
"sortOrderSmallestFirst": "Terkecil pertama",
|
||||
|
||||
"albumGroupTier": "Lewat tingkat",
|
||||
"albumGroupVolume": "Lewat volume penyimpanan",
|
||||
|
@ -418,13 +430,14 @@
|
|||
"binPageTitle": "Tong Sampah",
|
||||
|
||||
"searchCollectionFieldHint": "Cari koleksi",
|
||||
"searchSectionRecent": "Terkini",
|
||||
"searchSectionDate": "Tanggal",
|
||||
"searchSectionAlbums": "Album",
|
||||
"searchSectionCountries": "Negara",
|
||||
"searchSectionPlaces": "Tempat",
|
||||
"searchSectionTags": "Label",
|
||||
"searchSectionRating": "Nilai",
|
||||
"searchRecentSectionTitle": "Terkini",
|
||||
"searchDateSectionTitle": "Tanggal",
|
||||
"searchAlbumsSectionTitle": "Album",
|
||||
"searchCountriesSectionTitle": "Negara",
|
||||
"searchPlacesSectionTitle": "Tempat",
|
||||
"searchTagsSectionTitle": "Label",
|
||||
"searchRatingSectionTitle": "Nilai",
|
||||
"searchMetadataSectionTitle": "Metadata",
|
||||
|
||||
"settingsPageTitle": "Pengaturan",
|
||||
"settingsSystemDefault": "Sistem",
|
||||
|
@ -433,36 +446,40 @@
|
|||
"settingsSearchFieldLabel": "Cari peraturan",
|
||||
"settingsSearchEmpty": "Tidak ada peraturan yang cocok",
|
||||
"settingsActionExport": "Ekspor",
|
||||
"settingsActionExportDialogTitle": "Ekspor",
|
||||
"settingsActionImport": "Impor",
|
||||
"settingsActionImportDialogTitle": "Impor",
|
||||
|
||||
"appExportCovers": "Sampul",
|
||||
"appExportFavourites": "Favorit",
|
||||
"appExportSettings": "Pengaturan",
|
||||
|
||||
"settingsSectionNavigation": "Navigasi",
|
||||
"settingsHome": "Beranda",
|
||||
"settingsNavigationSectionTitle": "Navigasi",
|
||||
"settingsHomeTile": "Beranda",
|
||||
"settingsHomeDialogTitle": "Beranda",
|
||||
"settingsShowBottomNavigationBar": "Tampilkan bilah navigasi bawah",
|
||||
"settingsKeepScreenOnTile": "Biarkan layarnya menyala",
|
||||
"settingsKeepScreenOnTitle": "Biarkan Layarnya Menyala",
|
||||
"settingsKeepScreenOnDialogTitle": "Biarkan Layarnya Menyala",
|
||||
"settingsDoubleBackExit": "Ketuk “kembali” dua kali untuk keluar",
|
||||
|
||||
"settingsConfirmationDialogTile": "Dialog konfirmasi",
|
||||
"settingsConfirmationTile": "Dialog konfirmasi",
|
||||
"settingsConfirmationDialogTitle": "Dialog Konfirmasi",
|
||||
"settingsConfirmationDialogDeleteItems": "Tanya sebelum menghapus benda selamanya",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Tanya sebelum memindahkan benda ke tong sampah",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Tanyakan sebelum memindahkan barang tanpa metadata tanggal",
|
||||
"settingsConfirmationBeforeDeleteItems": "Tanya sebelum menghapus benda selamanya",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Tanya sebelum memindahkan benda ke tong sampah",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Tanyakan sebelum memindahkan barang tanpa metadata tanggal",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Tampilkan pesan setelah menggerakkan barang ke tong sampah",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menu navigasi",
|
||||
"settingsNavigationDrawerEditorTitle": "Menu Navigasi",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menu Navigasi",
|
||||
"settingsNavigationDrawerBanner": "Sentuh dan tahan untuk memindahkan dan menyusun ulang benda menu.",
|
||||
"settingsNavigationDrawerTabTypes": "Tipe",
|
||||
"settingsNavigationDrawerTabAlbums": "Album",
|
||||
"settingsNavigationDrawerTabPages": "Halaman",
|
||||
"settingsNavigationDrawerAddAlbum": "Tambahkan album",
|
||||
|
||||
"settingsSectionThumbnails": "Thumbnail",
|
||||
"settingsThumbnailSectionTitle": "Thumbnail",
|
||||
"settingsThumbnailOverlayTile": "Hamparan",
|
||||
"settingsThumbnailOverlayTitle": "Hamparan",
|
||||
"settingsThumbnailOverlayPageTitle": "Hamparan",
|
||||
"settingsThumbnailShowFavouriteIcon": "Tampilkan ikon favorit",
|
||||
"settingsThumbnailShowTagIcon": "Tampilkan ikon label",
|
||||
"settingsThumbnailShowLocationIcon": "Tampilkan ikon lokasi",
|
||||
|
@ -472,27 +489,28 @@
|
|||
"settingsThumbnailShowVideoDuration": "Tampilkan durasi video",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Aksi cepat",
|
||||
"settingsCollectionQuickActionEditorTitle": "Aksi Cepat",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Aksi Cepat",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Menjelajah",
|
||||
"settingsCollectionQuickActionTabSelecting": "Memilih",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Sentuh dan tahan untuk memindahkan tombol dan memilih tindakan yang ditampilkan saat menelusuri benda.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Sentuh dan tahan untuk memindahkan tombol dan memilih tindakan yang ditampilkan saat memilih benda.",
|
||||
|
||||
"settingsSectionViewer": "Penonton",
|
||||
"settingsViewerSectionTitle": "Penonton",
|
||||
"settingsViewerGestureSideTapNext": "Ketuk tepi layar untuk menampilkan benda sebelumnya/berikutnya",
|
||||
"settingsViewerUseCutout": "Gunakan area potongan",
|
||||
"settingsViewerMaximumBrightness": "Kecerahan maksimum",
|
||||
"settingsMotionPhotoAutoPlay": "Putar foto bergerak otomatis",
|
||||
"settingsImageBackground": "Latar belakang gambar",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Aksi cepat",
|
||||
"settingsViewerQuickActionEditorTitle": "Aksi Cepat",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Aksi Cepat",
|
||||
"settingsViewerQuickActionEditorBanner": "Sentuh dan tahan untuk memindahkan tombol dan memilih tindakan yang ditampilkan di penampil.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Tombol yang Ditampilkan",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Tombol yang tersedia",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Tombol yang Ditampilkan",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Tombol yang tersedia",
|
||||
"settingsViewerQuickActionEmpty": "Tidak ada tombol",
|
||||
|
||||
"settingsViewerOverlayTile": "Hamparan",
|
||||
"settingsViewerOverlayTitle": "Hamparan",
|
||||
"settingsViewerOverlayPageTitle": "Hamparan",
|
||||
"settingsViewerShowOverlayOnOpening": "Tampilkan saat pembukaan",
|
||||
"settingsViewerShowMinimap": "Tampilkan minimap",
|
||||
"settingsViewerShowInformation": "Tampilkan informasi",
|
||||
|
@ -502,30 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Efek Kabur",
|
||||
|
||||
"settingsViewerSlideshowTile": "Tampilan slide",
|
||||
"settingsViewerSlideshowTitle": "Tampilan Slide",
|
||||
"settingsViewerSlideshowPageTitle": "Tampilan Slide",
|
||||
"settingsSlideshowRepeat": "Ulangi",
|
||||
"settingsSlideshowShuffle": "Acak",
|
||||
"settingsSlideshowFillScreen": "Isi layar",
|
||||
"settingsSlideshowTransitionTile": "Transisi",
|
||||
"settingsSlideshowTransitionTitle": "Transisi",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transisi",
|
||||
"settingsSlideshowIntervalTile": "Interval",
|
||||
"settingsSlideshowIntervalTitle": "Interval",
|
||||
"settingsSlideshowIntervalDialogTitle": "Interval",
|
||||
"settingsSlideshowVideoPlaybackTile": "Putaran ulang video",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Putaran Ulang Video",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Putaran Ulang Video",
|
||||
|
||||
"settingsVideoPageTitle": "Pengaturan Video",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Tampilkan video",
|
||||
"settingsVideoEnableHardwareAcceleration": "Akselerasi perangkat keras",
|
||||
"settingsVideoEnableAutoPlay": "Putar otomatis",
|
||||
"settingsVideoLoopModeTile": "Putar ulang",
|
||||
"settingsVideoLoopModeTitle": "Putar Ulang",
|
||||
"settingsVideoLoopModeDialogTitle": "Putar Ulang",
|
||||
|
||||
"settingsSubtitleThemeTile": "Subjudul",
|
||||
"settingsSubtitleThemeTitle": "Subjudul",
|
||||
"settingsSubtitleThemePageTitle": "Subjudul",
|
||||
"settingsSubtitleThemeSample": "Ini adalah sampel.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Perataan teks",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Perataan Teks",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Perataan Teks",
|
||||
"settingsSubtitleThemeTextSize": "Ukuran teks",
|
||||
"settingsSubtitleThemeShowOutline": "Tampilkan garis besar dan bayangan",
|
||||
"settingsSubtitleThemeTextColor": "Warna teks",
|
||||
|
@ -537,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Kanan",
|
||||
|
||||
"settingsVideoControlsTile": "Kontrol",
|
||||
"settingsVideoControlsTitle": "Kontrol",
|
||||
"settingsVideoControlsPageTitle": "Kontrol",
|
||||
"settingsVideoButtonsTile": "Tombol",
|
||||
"settingsVideoButtonsTitle": "Tombol",
|
||||
"settingsVideoButtonsDialogTitle": "Tombol",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Ketuk dua kali untuk mainkan/hentikan",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Ketuk dua kali di tepi layar untuk mencari kebelakang/kedepan",
|
||||
|
||||
"settingsSectionPrivacy": "Privasi",
|
||||
"settingsPrivacySectionTitle": "Privasi",
|
||||
"settingsAllowInstalledAppAccess": "Izinkan akses ke inventori aplikasi",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Digunakan untuk meningkatkan tampilan album",
|
||||
"settingsAllowErrorReporting": "Izinkan pelaporan kesalahan secara anonim",
|
||||
|
@ -552,52 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "Simpan benda yang dihapus selama 30 hari",
|
||||
|
||||
"settingsHiddenItemsTile": "Benda tersembunyi",
|
||||
"settingsHiddenItemsTitle": "Benda Tersembunyi",
|
||||
"settingsHiddenItemsPageTitle": "Benda Tersembunyi",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Filter Tersembunyi",
|
||||
"settingsHiddenItemsTabFilters": "Filter Tersembunyi",
|
||||
"settingsHiddenFiltersBanner": "Foto dan video filter tersembunyi yang cocok tidak akan muncul di koleksi Anda.",
|
||||
"settingsHiddenFiltersEmpty": "Tidak ada filter tersembunyi",
|
||||
|
||||
"settingsHiddenPathsTitle": "Jalan Tersembunyi",
|
||||
"settingsHiddenItemsTabPaths": "Jalan Tersembunyi",
|
||||
"settingsHiddenPathsBanner": "Foto dan video di folder ini, atau subfoldernya, tidak akan muncul di koleksi Anda.",
|
||||
"addPathTooltip": "Tambahkan jalan",
|
||||
|
||||
"settingsStorageAccessTile": "Akses penyimpanan",
|
||||
"settingsStorageAccessTitle": "Akses Penyimpanan",
|
||||
"settingsStorageAccessPageTitle": "Akses Penyimpanan",
|
||||
"settingsStorageAccessBanner": "Beberapa direktori memerlukan pemberian akses eksplisit untuk memodifikasi file di dalamnya. Anda dapat meninjau direktori yang anda beri akses sebelumnya di sini.",
|
||||
"settingsStorageAccessEmpty": "Tidak ada akses",
|
||||
"settingsStorageAccessRevokeTooltip": "Tarik kembali",
|
||||
|
||||
"settingsSectionAccessibility": "Aksesibilitas",
|
||||
"settingsAccessibilitySectionTitle": "Aksesibilitas",
|
||||
"settingsRemoveAnimationsTile": "Hapus animasi",
|
||||
"settingsRemoveAnimationsTitle": "Hapus Animasi",
|
||||
"settingsRemoveAnimationsDialogTitle": "Hapus Animasi",
|
||||
"settingsTimeToTakeActionTile": "Waktu untuk mengambil tindakan",
|
||||
"settingsTimeToTakeActionTitle": "Saatnya Bertindak",
|
||||
"settingsTimeToTakeActionDialogTitle": "Saatnya Bertindak",
|
||||
|
||||
"settingsSectionDisplay": "Tampilan",
|
||||
"settingsThemeBrightness": "Tema",
|
||||
"settingsDisplaySectionTitle": "Tampilan",
|
||||
"settingsThemeBrightnessTile": "Tema",
|
||||
"settingsThemeBrightnessDialogTitle": "Tema",
|
||||
"settingsThemeColorHighlights": "Highlight warna",
|
||||
"settingsThemeEnableDynamicColor": "Warna dinamis",
|
||||
"settingsDisplayRefreshRateModeTile": "Tingkat penyegaran tampilan",
|
||||
"settingsDisplayRefreshRateModeTitle": "Tingkat Penyegaran",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Tingkat Penyegaran",
|
||||
|
||||
"settingsSectionLanguage": "Bahasa & Format",
|
||||
"settingsLanguage": "Bahasa",
|
||||
"settingsLanguageSectionTitle": "Bahasa & Format",
|
||||
"settingsLanguageTile": "Bahasa",
|
||||
"settingsLanguagePageTitle": "Bahasa",
|
||||
"settingsCoordinateFormatTile": "Format koordinat",
|
||||
"settingsCoordinateFormatTitle": "Format Koordinat",
|
||||
"settingsCoordinateFormatDialogTitle": "Format Koordinat",
|
||||
"settingsUnitSystemTile": "Unit",
|
||||
"settingsUnitSystemTitle": "Unit",
|
||||
"settingsUnitSystemDialogTitle": "Unit",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Screensaver",
|
||||
|
||||
"settingsWidgetPageTitle": "Bingkai Foto",
|
||||
"settingsWidgetShowOutline": "Garis luar",
|
||||
|
||||
"settingsCollectionTile": "Koleksi",
|
||||
|
||||
"statsPageTitle": "Statistik",
|
||||
"statsWithGps": "{count, plural, other{{count} benda dengan lokasi}}",
|
||||
"statsTopCountries": "Negara Teratas",
|
||||
"statsTopPlaces": "Tempat Teratas",
|
||||
"statsTopTags": "Label Teratas",
|
||||
"statsTopCountriesSectionTitle": "Negara Teratas",
|
||||
"statsTopPlacesSectionTitle": "Tempat Teratas",
|
||||
"statsTopTagsSectionTitle": "Label Teratas",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "BUKA PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "TETAPKAN SEBAGAI WALLPAPER",
|
||||
|
@ -608,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Kembali ke penonton",
|
||||
|
||||
"viewerInfoUnknown": "tidak dikenal",
|
||||
"viewerInfoLabelDescription": "Deskripsi",
|
||||
"viewerInfoLabelTitle": "Judul",
|
||||
"viewerInfoLabelDate": "Tanggal",
|
||||
"viewerInfoLabelResolution": "Resolusi",
|
||||
|
@ -619,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "Koordinat",
|
||||
"viewerInfoLabelAddress": "Alamat",
|
||||
|
||||
"mapStyleTitle": "Gaya Peta",
|
||||
"mapStyleDialogTitle": "Gaya Peta",
|
||||
"mapStyleTooltip": "Pilih gaya peta",
|
||||
"mapZoomInTooltip": "Perbesar",
|
||||
"mapZoomOutTooltip": "Perkecil",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Rimuovi",
|
||||
"resetTooltip": "Reimposta",
|
||||
"saveTooltip": "Salva",
|
||||
"pickTooltip": "Seleziona",
|
||||
|
||||
"doubleBackExitMessage": "Tocca di nuovo «indietro» per uscire",
|
||||
"doNotAskAgain": "Non chiedere di nuovo",
|
||||
|
@ -87,18 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "Modifica data e ora",
|
||||
"entryInfoActionEditLocation": "Modifica posizione",
|
||||
"entryInfoActionEditDescription": "Modifica descrizione",
|
||||
"entryInfoActionEditTitleDescription": "Modifica titolo & descrizione",
|
||||
"entryInfoActionEditRating": "Modifica valutazione",
|
||||
"entryInfoActionEditTags": "Modifica etichetta",
|
||||
"entryInfoActionRemoveMetadata": "Rimuovi metadati",
|
||||
|
||||
"filterBinLabel": "Cestino",
|
||||
"filterFavouriteLabel": "Preferiti",
|
||||
"filterLocationEmptyLabel": "Senza posizione",
|
||||
"filterTagEmptyLabel": "Senza etichetta",
|
||||
"filterNoDateLabel": "Senza data",
|
||||
"filterNoLocationLabel": "Senza posizione",
|
||||
"filterNoRatingLabel": "Non valutato",
|
||||
"filterNoTagLabel": "Senza etichetta",
|
||||
"filterNoTitleLabel": "Senza titolo",
|
||||
"filterOnThisDayLabel": "In questo giorno",
|
||||
"filterRecentlyAddedLabel": "Aggiunto di recente",
|
||||
"filterRatingUnratedLabel": "Non valutato",
|
||||
"filterRatingRejectedLabel": "Rifiutato",
|
||||
"filterTypeAnimatedLabel": "Animato",
|
||||
"filterTypeMotionPhotoLabel": "Foto in movimento",
|
||||
|
@ -179,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "Scheda SD",
|
||||
"rootDirectoryDescription": "cartella root",
|
||||
"otherDirectoryDescription": "cartella «{name}»",
|
||||
"storageAccessDialogTitle": "Accesso a tutti i file",
|
||||
"storageAccessDialogMessage": "Si prega di selezionare la {directory} di «{volume}» nella prossima schermata per dare accesso a questa applicazione",
|
||||
"restrictedAccessDialogTitle": "Accesso limitato",
|
||||
"restrictedAccessDialogMessage": "Questa applicazione non è autorizzata a modificare i file nella {directory} di «{volume}»",
|
||||
"notEnoughSpaceDialogTitle": "Spazio insufficiente",
|
||||
"notEnoughSpaceDialogMessage": "Questa operazione ha bisogno di {needSize} di spazio libero su «{volume}» per essere completata, ma è rimasto solo {freeSize}",
|
||||
"missingSystemFilePickerDialogTitle": "Selezionatore file mancante",
|
||||
"missingSystemFilePickerDialogMessage": "Il selezionatore file di sistema è mancante o disabilitato. Per favore abilitalo e riprova",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Formati non supportati",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Questa operazione non è supportata per elementi del seguente tipo: {types}.} other{Questa operazione non è supportata per elementi dei seguenti tipi: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Alcuni file nella cartella di destinazione hanno lo stesso nome",
|
||||
|
@ -197,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "Etichetta della scorciatoia",
|
||||
"addShortcutButtonLabel": "AGGIUNGI",
|
||||
|
||||
"noMatchingAppDialogTitle": "Nessuna app corrispondente",
|
||||
"noMatchingAppDialogMessage": "Non ci sono app che possono gestire questo",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Spostare questo elemento nel cestino?} other{Spostare questi {count} elementi nel cestino?}}",
|
||||
|
@ -226,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "Rinomina",
|
||||
"renameEntrySetPagePatternFieldLabel": "Schema per i nomi",
|
||||
"renameEntrySetPageInsertTooltip": "Inserisci campo",
|
||||
"renameEntrySetPagePreview": "Anteprima",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Anteprima",
|
||||
|
||||
"renameProcessorCounter": "Contatore",
|
||||
"renameProcessorName": "Nome",
|
||||
|
@ -259,8 +256,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Usa questa posizione",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Descrizione",
|
||||
|
||||
"editEntryRatingDialogTitle": "Valutazione",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Rimozione dei metadati",
|
||||
|
@ -289,9 +284,10 @@
|
|||
"menuActionSlideshow": "Presentazione",
|
||||
"menuActionStats": "Statistiche",
|
||||
|
||||
"viewDialogTabSort": "Ordina",
|
||||
"viewDialogTabGroup": "Raggruppa",
|
||||
"viewDialogTabLayout": "Layout",
|
||||
"viewDialogSortSectionTitle": "Ordina",
|
||||
"viewDialogGroupSectionTitle": "Raggruppa",
|
||||
"viewDialogLayoutSectionTitle": "Layout",
|
||||
"viewDialogReverseSortOrder": "Inverti ordinamento",
|
||||
|
||||
"tileLayoutGrid": "Griglia",
|
||||
"tileLayoutList": "Lista",
|
||||
|
@ -308,24 +304,24 @@
|
|||
"aboutLinkLicense": "Licenza",
|
||||
"aboutLinkPolicy": "Informativa sulla privacy",
|
||||
|
||||
"aboutBug": "Segnalazione bug",
|
||||
"aboutBugSectionTitle": "Segnalazione bug",
|
||||
"aboutBugSaveLogInstruction": "Salva i log dell’app in un file",
|
||||
"aboutBugCopyInfoInstruction": "Copia le informazioni di sistema",
|
||||
"aboutBugCopyInfoButton": "Copia",
|
||||
"aboutBugReportInstruction": "Segnala su GitHub con i log e le informazioni di sistema",
|
||||
"aboutBugReportButton": "Segnala",
|
||||
|
||||
"aboutCredits": "Crediti",
|
||||
"aboutCreditsSectionTitle": "Crediti",
|
||||
"aboutCreditsWorldAtlas1": "Questa applicazione utilizza un file TopoJSON di",
|
||||
"aboutCreditsWorldAtlas2": "sotto licenza ISC",
|
||||
"aboutCreditsTranslators": "Traduttori",
|
||||
"aboutTranslatorsSectionTitle": "Traduttori",
|
||||
|
||||
"aboutLicenses": "Licenze Open-Source",
|
||||
"aboutLicensesSectionTitle": "Licenze Open-Source",
|
||||
"aboutLicensesBanner": "Questa applicazione utilizza i seguenti pacchetti e librerie open-source",
|
||||
"aboutLicensesAndroidLibraries": "Librerie Android",
|
||||
"aboutLicensesFlutterPlugins": "Plugin Flutter",
|
||||
"aboutLicensesFlutterPackages": "Pacchetti Flutter",
|
||||
"aboutLicensesDartPackages": "Pacchetti Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Librerie Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Plugin Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Pacchetti Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Pacchetti Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Mostra tutte le licenze",
|
||||
|
||||
"policyPageTitle": "Informativa sulla privacy",
|
||||
|
@ -345,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Cerca titoli",
|
||||
|
||||
"collectionSortDate": "Per data",
|
||||
"collectionSortSize": "Per dimensione",
|
||||
"collectionSortName": "Per album e nome del file",
|
||||
"collectionSortRating": "Per valutazione",
|
||||
|
||||
"collectionGroupAlbum": "Per album",
|
||||
"collectionGroupMonth": "Per mese",
|
||||
"collectionGroupDay": "Per giorno",
|
||||
|
@ -378,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "Seleziona sezione",
|
||||
"collectionDeselectSectionTooltip": "Deseleziona sezione",
|
||||
|
||||
"drawerAboutButton": "Informazioni",
|
||||
"drawerSettingsButton": "Impostazioni",
|
||||
"drawerCollectionAll": "Tutte le collezioni",
|
||||
"drawerCollectionFavourites": "Preferiti",
|
||||
"drawerCollectionImages": "Immagini",
|
||||
|
@ -387,10 +380,24 @@
|
|||
"drawerCollectionPanoramas": "Panorami",
|
||||
"drawerCollectionRaws": "Foto raw",
|
||||
"drawerCollectionSphericalVideos": "Video a 360°",
|
||||
"drawerAlbumPage": "Album",
|
||||
"drawerCountryPage": "Paesi",
|
||||
"drawerTagPage": "Etichette",
|
||||
|
||||
"chipSortDate": "Per data",
|
||||
"chipSortName": "Per nome",
|
||||
"chipSortCount": "Per numero di elementi",
|
||||
"sortByDate": "Per data",
|
||||
"sortByName": "Per nome",
|
||||
"sortByItemCount": "Per numero di elementi",
|
||||
"sortBySize": "Per dimensione",
|
||||
"sortByAlbumFileName": "Per album e nome del file",
|
||||
"sortByRating": "Per valutazione",
|
||||
"sortOrderNewestFirst": "Prima i più nuovi",
|
||||
"sortOrderOldestFirst": "Prima i più vecchi",
|
||||
"sortOrderAtoZ": "Dalla A alla Z",
|
||||
"sortOrderZtoA": "Dalla Z alla A",
|
||||
"sortOrderHighestFirst": "Prima le più alte",
|
||||
"sortOrderLowestFirst": "Prima le più basse",
|
||||
"sortOrderLargestFirst": "Prima i più grandi",
|
||||
"sortOrderSmallestFirst": "Prima i più piccoli",
|
||||
|
||||
"albumGroupTier": "Per importanza",
|
||||
"albumGroupVolume": "Per volume di archiviazione",
|
||||
|
@ -422,13 +429,14 @@
|
|||
"binPageTitle": "Cestino",
|
||||
|
||||
"searchCollectionFieldHint": "Cerca raccolta",
|
||||
"searchSectionRecent": "Recenti",
|
||||
"searchSectionDate": "Data",
|
||||
"searchSectionAlbums": "Album",
|
||||
"searchSectionCountries": "Paesi",
|
||||
"searchSectionPlaces": "Luoghi",
|
||||
"searchSectionTags": "Etichette",
|
||||
"searchSectionRating": "Valutazioni",
|
||||
"searchRecentSectionTitle": "Recenti",
|
||||
"searchDateSectionTitle": "Data",
|
||||
"searchAlbumsSectionTitle": "Album",
|
||||
"searchCountriesSectionTitle": "Paesi",
|
||||
"searchPlacesSectionTitle": "Luoghi",
|
||||
"searchTagsSectionTitle": "Etichette",
|
||||
"searchRatingSectionTitle": "Valutazioni",
|
||||
"searchMetadataSectionTitle": "Metadati",
|
||||
|
||||
"settingsPageTitle": "Impostazioni",
|
||||
"settingsSystemDefault": "Sistema",
|
||||
|
@ -437,37 +445,40 @@
|
|||
"settingsSearchFieldLabel": "Ricerca impostazioni",
|
||||
"settingsSearchEmpty": "Nessuna impostazione corrispondente",
|
||||
"settingsActionExport": "Esporta",
|
||||
"settingsActionExportDialogTitle": "Esporta",
|
||||
"settingsActionImport": "Importa",
|
||||
"settingsActionImportDialogTitle": "Importa",
|
||||
|
||||
"appExportCovers": "Copertine",
|
||||
"appExportFavourites": "Preferiti",
|
||||
"appExportSettings": "Impostazioni",
|
||||
|
||||
"settingsSectionNavigation": "Navigazione",
|
||||
"settingsHome": "Pagina iniziale",
|
||||
"settingsNavigationSectionTitle": "Navigazione",
|
||||
"settingsHomeTile": "Pagina iniziale",
|
||||
"settingsHomeDialogTitle": "Pagina iniziale",
|
||||
"settingsShowBottomNavigationBar": "Mostra la barra di navigazione in basso",
|
||||
"settingsKeepScreenOnTile": "Mantieni acceso lo schermo",
|
||||
"settingsKeepScreenOnTitle": "Illuminazione schermo",
|
||||
"settingsKeepScreenOnDialogTitle": "Illuminazione schermo",
|
||||
"settingsDoubleBackExit": "Tocca «indietro» due volte per uscire",
|
||||
|
||||
"settingsConfirmationDialogTile": "Richieste di conferma",
|
||||
"settingsConfirmationTile": "Richieste di conferma",
|
||||
"settingsConfirmationDialogTitle": "Richieste di conferma",
|
||||
"settingsConfirmationDialogDeleteItems": "Chiedi prima di cancellare gli elementi definitivamente",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Chiedi prima di spostare gli elementi nel cestino",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Chiedi prima di spostare gli elementi senza data",
|
||||
"settingsConfirmationBeforeDeleteItems": "Chiedi prima di cancellare gli elementi definitivamente",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Chiedi prima di spostare gli elementi nel cestino",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Chiedi prima di spostare gli elementi senza data",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Mostra un messaggio dopo aver spostato gli elementi nel cestino",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menu di navigazione",
|
||||
"settingsNavigationDrawerEditorTitle": "Menu di navigazione",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menu di navigazione",
|
||||
"settingsNavigationDrawerBanner": "Tocca e tieni premuto per spostare e riordinare gli elementi del menu",
|
||||
"settingsNavigationDrawerTabTypes": "Tipi",
|
||||
"settingsNavigationDrawerTabAlbums": "Album",
|
||||
"settingsNavigationDrawerTabPages": "Pagine",
|
||||
"settingsNavigationDrawerAddAlbum": "Aggiungi album",
|
||||
|
||||
"settingsSectionThumbnails": "Miniature",
|
||||
"settingsThumbnailSectionTitle": "Miniature",
|
||||
"settingsThumbnailOverlayTile": "Sovrapposizione",
|
||||
"settingsThumbnailOverlayTitle": "Sovrapposizione",
|
||||
"settingsThumbnailOverlayPageTitle": "Sovrapposizione",
|
||||
"settingsThumbnailShowFavouriteIcon": "Mostra l’icona Preferiti",
|
||||
"settingsThumbnailShowTagIcon": "Mostra l’icona Etichetta",
|
||||
"settingsThumbnailShowLocationIcon": "Mostra l’icona Posizione",
|
||||
|
@ -477,13 +488,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Mostra la durata del video",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Azioni rapide",
|
||||
"settingsCollectionQuickActionEditorTitle": "Azioni rapide",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Azioni rapide",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Navigazione",
|
||||
"settingsCollectionQuickActionTabSelecting": "Selezione",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Tocca e tieni premuto per spostare i pulsanti e selezionare quali azioni vengono visualizzate durante la navigazione degli elementi",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Tocca e tieni premuto per spostare i pulsanti e selezionare quali azioni vengono visualizzate quando si selezionano gli elementi",
|
||||
|
||||
"settingsSectionViewer": "Visualizzazione",
|
||||
"settingsViewerSectionTitle": "Visualizzazione",
|
||||
"settingsViewerGestureSideTapNext": "Tocca i bordi dello schermo per visualizzare l'elemento precedente/successivo",
|
||||
"settingsViewerUseCutout": "Usa area di ritaglio",
|
||||
"settingsViewerMaximumBrightness": "Luminosità massima",
|
||||
|
@ -491,14 +502,14 @@
|
|||
"settingsImageBackground": "Sfondo immagine",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Azioni rapide",
|
||||
"settingsViewerQuickActionEditorTitle": "Azioni rapide",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Azioni rapide",
|
||||
"settingsViewerQuickActionEditorBanner": "Tocca e tieni premuto per spostare i pulsanti e selezionare quali azioni vengono mostrate durante la visualizione",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Pulsanti visualizzati",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Pulsanti disponibili",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Pulsanti visualizzati",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Pulsanti disponibili",
|
||||
"settingsViewerQuickActionEmpty": "Nessun pulsante",
|
||||
|
||||
"settingsViewerOverlayTile": "Sovrapposizione",
|
||||
"settingsViewerOverlayTitle": "Sovrapposizione",
|
||||
"settingsViewerOverlayPageTitle": "Sovrapposizione",
|
||||
"settingsViewerShowOverlayOnOpening": "Mostra all’apertura",
|
||||
"settingsViewerShowMinimap": "Mostra la minimappa",
|
||||
"settingsViewerShowInformation": "Mostra informazioni",
|
||||
|
@ -508,30 +519,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Effetto sfocatura",
|
||||
|
||||
"settingsViewerSlideshowTile": "Presentazione",
|
||||
"settingsViewerSlideshowTitle": "Presentazione",
|
||||
"settingsViewerSlideshowPageTitle": "Presentazione",
|
||||
"settingsSlideshowRepeat": "Ripeti",
|
||||
"settingsSlideshowShuffle": "Ordine casuale",
|
||||
"settingsSlideshowFillScreen": "Riempi schermo",
|
||||
"settingsSlideshowTransitionTile": "Transizione",
|
||||
"settingsSlideshowTransitionTitle": "Transizione",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transizione",
|
||||
"settingsSlideshowIntervalTile": "Intervallo",
|
||||
"settingsSlideshowIntervalTitle": "Intervallo",
|
||||
"settingsSlideshowIntervalDialogTitle": "Intervallo",
|
||||
"settingsSlideshowVideoPlaybackTile": "Riproduzione video",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Riproduzione video",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Riproduzione video",
|
||||
|
||||
"settingsVideoPageTitle": "Impostazioni video",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Mostra video",
|
||||
"settingsVideoEnableHardwareAcceleration": "Accelerazione hardware",
|
||||
"settingsVideoEnableAutoPlay": "Riproduzione automatica",
|
||||
"settingsVideoLoopModeTile": "Modalità loop",
|
||||
"settingsVideoLoopModeTitle": "Modalità loop",
|
||||
"settingsVideoLoopModeDialogTitle": "Modalità loop",
|
||||
|
||||
"settingsSubtitleThemeTile": "Sottotitoli",
|
||||
"settingsSubtitleThemeTitle": "Sottotitoli",
|
||||
"settingsSubtitleThemePageTitle": "Sottotitoli",
|
||||
"settingsSubtitleThemeSample": "Questo è un campione",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Allineamento del testo",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Allineamento del testo",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Allineamento del testo",
|
||||
"settingsSubtitleThemeTextSize": "Dimensione del testo",
|
||||
"settingsSubtitleThemeShowOutline": "Mostra contorno e ombra",
|
||||
"settingsSubtitleThemeTextColor": "Colore del testo",
|
||||
|
@ -543,13 +554,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Destra",
|
||||
|
||||
"settingsVideoControlsTile": "Controlli",
|
||||
"settingsVideoControlsTitle": "Controlli",
|
||||
"settingsVideoControlsPageTitle": "Controlli",
|
||||
"settingsVideoButtonsTile": "Pulsanti",
|
||||
"settingsVideoButtonsTitle": "Pulsanti",
|
||||
"settingsVideoButtonsDialogTitle": "Pulsanti",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Doppio tocco per play/pausa",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Doppio tocco sui bordi dello schermo per cercare avanti/indietro",
|
||||
|
||||
"settingsSectionPrivacy": "Privacy",
|
||||
"settingsPrivacySectionTitle": "Privacy",
|
||||
"settingsAllowInstalledAppAccess": "Consentire l’accesso all’inventario delle app",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Utilizzato per migliorare la visualizzazione degli album",
|
||||
"settingsAllowErrorReporting": "Consenti segnalazione anonima degli errori",
|
||||
|
@ -558,52 +569,56 @@
|
|||
"settingsEnableBinSubtitle": "Conserva gli elementi cancellati per 30 giorni",
|
||||
|
||||
"settingsHiddenItemsTile": "Elementi nascosti",
|
||||
"settingsHiddenItemsTitle": "Elementi nascosti",
|
||||
"settingsHiddenItemsPageTitle": "Elementi nascosti",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Filtri nascosti",
|
||||
"settingsHiddenItemsTabFilters": "Filtri nascosti",
|
||||
"settingsHiddenFiltersBanner": "Le foto e i video che corrispondono ai filtri nascosti non appariranno nella tua collezione",
|
||||
"settingsHiddenFiltersEmpty": "Nessun filtro nascosto",
|
||||
|
||||
"settingsHiddenPathsTitle": "Percorsi nascosti",
|
||||
"settingsHiddenItemsTabPaths": "Percorsi nascosti",
|
||||
"settingsHiddenPathsBanner": "Le foto e i video in queste cartelle, o in qualsiasi loro sottocartella, non appariranno nella tua collezione",
|
||||
"addPathTooltip": "Aggiungi percorso",
|
||||
|
||||
"settingsStorageAccessTile": "Accesso a tutti i file",
|
||||
"settingsStorageAccessTitle": "Accesso a tutti i file",
|
||||
"settingsStorageAccessPageTitle": "Accesso a tutti i file",
|
||||
"settingsStorageAccessBanner": "Alcune cartelle richiedono una concessione di accesso esplicita per modificare i file al loro interno. Puoi rivedere qui le cartelle a cui hai dato accesso in precedenza",
|
||||
"settingsStorageAccessEmpty": "Nessuna autorizzazione concessa",
|
||||
"settingsStorageAccessRevokeTooltip": "Rifiuta autorizzazione",
|
||||
|
||||
"settingsSectionAccessibility": "Accessibilità",
|
||||
"settingsAccessibilitySectionTitle": "Accessibilità",
|
||||
"settingsRemoveAnimationsTile": "Rimuovi animazioni",
|
||||
"settingsRemoveAnimationsTitle": "Rimuovi animazioni",
|
||||
"settingsRemoveAnimationsDialogTitle": "Rimuovi animazioni",
|
||||
"settingsTimeToTakeActionTile": "Tempo di reazione",
|
||||
"settingsTimeToTakeActionTitle": "Tempo di reazione",
|
||||
"settingsTimeToTakeActionDialogTitle": "Tempo di reazione",
|
||||
|
||||
"settingsSectionDisplay": "Schermo",
|
||||
"settingsThemeBrightness": "Tema",
|
||||
"settingsDisplaySectionTitle": "Schermo",
|
||||
"settingsThemeBrightnessTile": "Tema",
|
||||
"settingsThemeBrightnessDialogTitle": "Tema",
|
||||
"settingsThemeColorHighlights": "Colori evidenziati",
|
||||
"settingsThemeEnableDynamicColor": "Colori dinamici",
|
||||
"settingsDisplayRefreshRateModeTile": "Frequenza di aggiornamento dello schermo",
|
||||
"settingsDisplayRefreshRateModeTitle": "Frequenza di aggiornamento",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Frequenza di aggiornamento",
|
||||
|
||||
"settingsSectionLanguage": "Lingua e formati",
|
||||
"settingsLanguage": "Lingua",
|
||||
"settingsLanguageSectionTitle": "Lingua e formati",
|
||||
"settingsLanguageTile": "Lingua",
|
||||
"settingsLanguagePageTitle": "Lingua",
|
||||
"settingsCoordinateFormatTile": "Formato coordinate",
|
||||
"settingsCoordinateFormatTitle": "Formato coordinate",
|
||||
"settingsCoordinateFormatDialogTitle": "Formato coordinate",
|
||||
"settingsUnitSystemTile": "Unità",
|
||||
"settingsUnitSystemTitle": "Unità",
|
||||
"settingsUnitSystemDialogTitle": "Unità",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Salvaschermo",
|
||||
|
||||
"settingsWidgetPageTitle": "Cornice foto",
|
||||
"settingsWidgetShowOutline": "Contorno",
|
||||
|
||||
"settingsCollectionTile": "Collezione",
|
||||
|
||||
"statsPageTitle": "Statistiche",
|
||||
"statsWithGps": "{count, plural, =1{1 elemento con posizione} other{{count} elementi con posizione}}",
|
||||
"statsTopCountries": "Paesi più frequenti",
|
||||
"statsTopPlaces": "Luoghi più frequenti",
|
||||
"statsTopTags": "Etichette più frequenti",
|
||||
"statsTopCountriesSectionTitle": "Paesi più frequenti",
|
||||
"statsTopPlacesSectionTitle": "Luoghi più frequenti",
|
||||
"statsTopTagsSectionTitle": "Etichette più frequenti",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "APRI PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "IMPOSTA SFONDO",
|
||||
|
@ -614,6 +629,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Torna alla visualizzazione",
|
||||
|
||||
"viewerInfoUnknown": "sconosciuto",
|
||||
"viewerInfoLabelDescription": "Descrizione",
|
||||
"viewerInfoLabelTitle": "Titolo",
|
||||
"viewerInfoLabelDate": "Data",
|
||||
"viewerInfoLabelResolution": "Risoluzione",
|
||||
|
@ -625,7 +641,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coordinate",
|
||||
"viewerInfoLabelAddress": "Indirizzo",
|
||||
|
||||
"mapStyleTitle": "Stile Mappa",
|
||||
"mapStyleDialogTitle": "Stile Mappa",
|
||||
"mapStyleTooltip": "Seleziona lo stile della mappa",
|
||||
"mapZoomInTooltip": "Ingrandisci",
|
||||
"mapZoomOutTooltip": "Riduci",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "削除",
|
||||
"resetTooltip": "リセット",
|
||||
"saveTooltip": "保存",
|
||||
"pickTooltip": "ピック",
|
||||
|
||||
"doubleBackExitMessage": "終了するには「戻る」をもう一度タップしてください。",
|
||||
"doNotAskAgain": "今後このメッセージを表示しない",
|
||||
|
@ -93,10 +94,10 @@
|
|||
|
||||
"filterBinLabel": "ごみ箱",
|
||||
"filterFavouriteLabel": "お気に入り",
|
||||
"filterLocationEmptyLabel": "位置情報なし",
|
||||
"filterTagEmptyLabel": "タグ情報なし",
|
||||
"filterNoLocationLabel": "位置情報なし",
|
||||
"filterNoRatingLabel": "評価情報なし",
|
||||
"filterNoTagLabel": "タグ情報なし",
|
||||
"filterOnThisDayLabel": "過去のこの日",
|
||||
"filterRatingUnratedLabel": "評価情報なし",
|
||||
"filterRatingRejectedLabel": "拒否",
|
||||
"filterTypeAnimatedLabel": "アニメーション",
|
||||
"filterTypeMotionPhotoLabel": "モーションフォト",
|
||||
|
@ -177,16 +178,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD カード",
|
||||
"rootDirectoryDescription": "ルート ディレクトリ",
|
||||
"otherDirectoryDescription": "“{name}” ディレクトリ",
|
||||
"storageAccessDialogTitle": "ストレージ アクセス",
|
||||
"storageAccessDialogMessage": "このアプリにアクセスを許可するために次の画面で {directory} の “{volume}” を選択してください。",
|
||||
"restrictedAccessDialogTitle": "アクセス制限",
|
||||
"restrictedAccessDialogMessage": "このアプリは {directory} の “{volume}” にあるファイルを変更できません。\n\nプリインストールされているファイル マネージャまたはギャラリー アプリを使用して他のディレクトリに移動してください。",
|
||||
"notEnoughSpaceDialogTitle": "容量不足",
|
||||
"notEnoughSpaceDialogMessage": "この操作には “{volume}” に {neededSize} の容量が必要ですが、 残り {freeSize} のみ利用可能です。",
|
||||
"missingSystemFilePickerDialogTitle": "システム ファイル ピッカーが見つかりません",
|
||||
"missingSystemFilePickerDialogMessage": "システム ファイル ピッカーが見つからないか、利用できません。利用可能にしてから再度お試しください。",
|
||||
|
||||
"unsupportedTypeDialogTitle": "対応していないタイプ",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, other{この操作は次のタイプのアイテムには対応していません: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "目的フォルダに同じ名前のファイルが存在しています。",
|
||||
|
@ -195,7 +191,6 @@
|
|||
"addShortcutDialogLabel": "ショートカット ラベル",
|
||||
"addShortcutButtonLabel": "追加",
|
||||
|
||||
"noMatchingAppDialogTitle": "一致するアプリなし",
|
||||
"noMatchingAppDialogMessage": "処理できるアプリが見つかりません。",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{このアイテムをごみ箱に移動しますか?} other{{count} 件のアイテムをごみ箱に移動しますか?}}",
|
||||
|
@ -224,7 +219,7 @@
|
|||
"renameEntrySetPageTitle": "名前を変更",
|
||||
"renameEntrySetPagePatternFieldLabel": "名前付けのパターン",
|
||||
"renameEntrySetPageInsertTooltip": "フィールドを挿入",
|
||||
"renameEntrySetPagePreview": "プレビュー",
|
||||
"renameEntrySetPagePreviewSectionTitle": "プレビュー",
|
||||
|
||||
"renameProcessorCounter": "連番",
|
||||
"renameProcessorName": "名前",
|
||||
|
@ -285,9 +280,9 @@
|
|||
"menuActionSlideshow": "スライドショー",
|
||||
"menuActionStats": "統計",
|
||||
|
||||
"viewDialogTabSort": "並べ替え",
|
||||
"viewDialogTabGroup": "グループ",
|
||||
"viewDialogTabLayout": "レイアウト",
|
||||
"viewDialogSortSectionTitle": "並べ替え",
|
||||
"viewDialogGroupSectionTitle": "グループ",
|
||||
"viewDialogLayoutSectionTitle": "レイアウト",
|
||||
|
||||
"tileLayoutGrid": "グリッド表示",
|
||||
"tileLayoutList": "リスト表示",
|
||||
|
@ -304,24 +299,24 @@
|
|||
"aboutLinkLicense": "ライセンス",
|
||||
"aboutLinkPolicy": "プライバシー ポリシー",
|
||||
|
||||
"aboutBug": "バグの報告",
|
||||
"aboutBugSectionTitle": "バグの報告",
|
||||
"aboutBugSaveLogInstruction": "アプリのログをファイルに保存",
|
||||
"aboutBugCopyInfoInstruction": "システム情報をコピー",
|
||||
"aboutBugCopyInfoButton": "コピー",
|
||||
"aboutBugReportInstruction": "ログとシステム情報とともに GitHub で報告",
|
||||
"aboutBugReportButton": "報告",
|
||||
|
||||
"aboutCredits": "クレジット",
|
||||
"aboutCreditsSectionTitle": "クレジット",
|
||||
"aboutCreditsWorldAtlas1": "このアプリは TopoJSON ファイルを",
|
||||
"aboutCreditsWorldAtlas2": "ISC License の下使用しています。",
|
||||
"aboutCreditsTranslators": "翻訳",
|
||||
"aboutTranslatorsSectionTitle": "翻訳",
|
||||
|
||||
"aboutLicenses": "オープンソース ライセンス",
|
||||
"aboutLicensesSectionTitle": "オープンソース ライセンス",
|
||||
"aboutLicensesBanner": "このアプリは下記のオープンソース パッケージおよびライブラリを使用しています。",
|
||||
"aboutLicensesAndroidLibraries": "Android ライブラリ",
|
||||
"aboutLicensesFlutterPlugins": "Flutter プラグイン",
|
||||
"aboutLicensesFlutterPackages": "Flutter パッケージ",
|
||||
"aboutLicensesDartPackages": "Dart パッケージ",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android ライブラリ",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter プラグイン",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flutter パッケージ",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart パッケージ",
|
||||
"aboutLicensesShowAllButtonLabel": "すべてのライセンスを表示",
|
||||
|
||||
"policyPageTitle": "プライバシー ポリシー",
|
||||
|
@ -341,11 +336,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "タイトルを検索",
|
||||
|
||||
"collectionSortDate": "日付",
|
||||
"collectionSortSize": "サイズ",
|
||||
"collectionSortName": "アルバムとファイル名",
|
||||
"collectionSortRating": "評価",
|
||||
|
||||
"collectionGroupAlbum": "アルバム別",
|
||||
"collectionGroupMonth": "月別",
|
||||
"collectionGroupDay": "日別",
|
||||
|
@ -374,6 +364,8 @@
|
|||
"collectionSelectSectionTooltip": "セクションを選択",
|
||||
"collectionDeselectSectionTooltip": "セクションの選択を解除",
|
||||
|
||||
"drawerAboutButton": "アプリについて",
|
||||
"drawerSettingsButton": "設定",
|
||||
"drawerCollectionAll": "すべてのコレクション",
|
||||
"drawerCollectionFavourites": "お気に入り",
|
||||
"drawerCollectionImages": "画像",
|
||||
|
@ -383,10 +375,16 @@
|
|||
"drawerCollectionPanoramas": "パノラマ",
|
||||
"drawerCollectionRaws": "Raw 写真",
|
||||
"drawerCollectionSphericalVideos": "360° 動画",
|
||||
"drawerAlbumPage": "アルバム",
|
||||
"drawerCountryPage": "国",
|
||||
"drawerTagPage": "タグ",
|
||||
|
||||
"chipSortDate": "日付",
|
||||
"chipSortName": "名前",
|
||||
"chipSortCount": "アイテム件数",
|
||||
"sortByDate": "日付",
|
||||
"sortByName": "名前",
|
||||
"sortByItemCount": "アイテム件数",
|
||||
"sortBySize": "サイズ",
|
||||
"sortByAlbumFileName": "アルバムとファイル名",
|
||||
"sortByRating": "評価",
|
||||
|
||||
"albumGroupTier": "階層別",
|
||||
"albumGroupVolume": "ストレージ ボリューム別",
|
||||
|
@ -418,13 +416,13 @@
|
|||
"binPageTitle": "ごみ箱",
|
||||
|
||||
"searchCollectionFieldHint": "コレクションを検索",
|
||||
"searchSectionRecent": "最近",
|
||||
"searchSectionDate": "日付",
|
||||
"searchSectionAlbums": "アルバム",
|
||||
"searchSectionCountries": "国",
|
||||
"searchSectionPlaces": "場所",
|
||||
"searchSectionTags": "タグ",
|
||||
"searchSectionRating": "評価",
|
||||
"searchRecentSectionTitle": "最近",
|
||||
"searchDateSectionTitle": "日付",
|
||||
"searchAlbumsSectionTitle": "アルバム",
|
||||
"searchCountriesSectionTitle": "国",
|
||||
"searchPlacesSectionTitle": "場所",
|
||||
"searchTagsSectionTitle": "タグ",
|
||||
"searchRatingSectionTitle": "評価",
|
||||
|
||||
"settingsPageTitle": "設定",
|
||||
"settingsSystemDefault": "システム",
|
||||
|
@ -433,36 +431,39 @@
|
|||
"settingsSearchFieldLabel": "検索設定",
|
||||
"settingsSearchEmpty": "一致する設定なし",
|
||||
"settingsActionExport": "エクスポート",
|
||||
"settingsActionExportDialogTitle": "エクスポート",
|
||||
"settingsActionImport": "インポート",
|
||||
"settingsActionImportDialogTitle": "インポート",
|
||||
|
||||
"appExportCovers": "カバー",
|
||||
"appExportFavourites": "お気に入り",
|
||||
"appExportSettings": "設定",
|
||||
|
||||
"settingsSectionNavigation": "ナビゲーション",
|
||||
"settingsHome": "ホーム",
|
||||
"settingsNavigationSectionTitle": "ナビゲーション",
|
||||
"settingsHomeTile": "ホーム",
|
||||
"settingsHomeDialogTitle": "ホーム",
|
||||
"settingsShowBottomNavigationBar": "下部のナビゲーションバーを表示",
|
||||
"settingsKeepScreenOnTile": "画面をオンのままにする",
|
||||
"settingsKeepScreenOnTitle": "画面をオンのままにする",
|
||||
"settingsKeepScreenOnDialogTitle": "画面をオンのままにする",
|
||||
"settingsDoubleBackExit": "「戻る」を2回タップして終了",
|
||||
|
||||
"settingsConfirmationDialogTile": "確認メッセージ",
|
||||
"settingsConfirmationTile": "確認メッセージ",
|
||||
"settingsConfirmationDialogTitle": "確認メッセージ",
|
||||
"settingsConfirmationDialogDeleteItems": "アイテムを完全に削除する前に確認",
|
||||
"settingsConfirmationDialogMoveToBinItems": "アイテムをごみ箱に移動する前に確認",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "メタデータ上に日付のないアイテムを移動する前に確認",
|
||||
"settingsConfirmationBeforeDeleteItems": "アイテムを完全に削除する前に確認",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "アイテムをごみ箱に移動する前に確認",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "メタデータ上に日付のないアイテムを移動する前に確認",
|
||||
|
||||
"settingsNavigationDrawerTile": "ナビゲーション メニュー",
|
||||
"settingsNavigationDrawerEditorTitle": "ナビゲーション メニュー",
|
||||
"settingsNavigationDrawerEditorPageTitle": "ナビゲーション メニュー",
|
||||
"settingsNavigationDrawerBanner": "メニュー項目を長押しして、移動および並べ替え",
|
||||
"settingsNavigationDrawerTabTypes": "タイプ",
|
||||
"settingsNavigationDrawerTabAlbums": "アルバム",
|
||||
"settingsNavigationDrawerTabPages": "ページ",
|
||||
"settingsNavigationDrawerAddAlbum": "アルバムを追加",
|
||||
|
||||
"settingsSectionThumbnails": "サムネイル",
|
||||
"settingsThumbnailSectionTitle": "サムネイル",
|
||||
"settingsThumbnailOverlayTile": "オーバーレイ",
|
||||
"settingsThumbnailOverlayTitle": "オーバーレイ",
|
||||
"settingsThumbnailOverlayPageTitle": "オーバーレイ",
|
||||
"settingsThumbnailShowFavouriteIcon": "お気に入りアイコンを表示",
|
||||
"settingsThumbnailShowTagIcon": "タグアイコンを表示",
|
||||
"settingsThumbnailShowLocationIcon": "位置情報アイコンを表示",
|
||||
|
@ -472,27 +473,27 @@
|
|||
"settingsThumbnailShowVideoDuration": "動画の再生時間を表示",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "クイック アクション",
|
||||
"settingsCollectionQuickActionEditorTitle": "クイック アクション",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "クイック アクション",
|
||||
"settingsCollectionQuickActionTabBrowsing": "ブラウズ中",
|
||||
"settingsCollectionQuickActionTabSelecting": "選択中",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "長押ししてボタンを移動しアイテムを閲覧中に表示されるアクションを選択します。",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "長押ししてボタンを移動しアイテムを選択中に表示されるアクションを選択します。",
|
||||
|
||||
"settingsSectionViewer": "ビューアー",
|
||||
"settingsViewerSectionTitle": "ビューアー",
|
||||
"settingsViewerUseCutout": "切り取り領域を使用",
|
||||
"settingsViewerMaximumBrightness": "明るさ最大",
|
||||
"settingsMotionPhotoAutoPlay": "モーションフォトを自動再生",
|
||||
"settingsImageBackground": "画像の背景",
|
||||
|
||||
"settingsViewerQuickActionsTile": "クイックアクション",
|
||||
"settingsViewerQuickActionEditorTitle": "クイックアクション",
|
||||
"settingsViewerQuickActionEditorPageTitle": "クイックアクション",
|
||||
"settingsViewerQuickActionEditorBanner": "長押ししてボタンを移動しビューアーで表示されるアクションを選択します。",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "表示ボタン",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "利用可能なボタン",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "表示ボタン",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "利用可能なボタン",
|
||||
"settingsViewerQuickActionEmpty": "ボタンなし",
|
||||
|
||||
"settingsViewerOverlayTile": "オーバーレイ",
|
||||
"settingsViewerOverlayTitle": "オーバーレイ",
|
||||
"settingsViewerOverlayPageTitle": "オーバーレイ",
|
||||
"settingsViewerShowOverlayOnOpening": "起動時に表示",
|
||||
"settingsViewerShowMinimap": "小さな地図を表示",
|
||||
"settingsViewerShowInformation": "情報を表示",
|
||||
|
@ -502,30 +503,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "ぼかし効果",
|
||||
|
||||
"settingsViewerSlideshowTile": "スライドショー",
|
||||
"settingsViewerSlideshowTitle": "スライドショー",
|
||||
"settingsViewerSlideshowPageTitle": "スライドショー",
|
||||
"settingsSlideshowRepeat": "繰り返し",
|
||||
"settingsSlideshowShuffle": "シャッフル",
|
||||
"settingsSlideshowFillScreen": "画面いっぱいに表示",
|
||||
"settingsSlideshowTransitionTile": "トランジション",
|
||||
"settingsSlideshowTransitionTitle": "トランジション",
|
||||
"settingsSlideshowTransitionDialogTitle": "トランジション",
|
||||
"settingsSlideshowIntervalTile": "間隔",
|
||||
"settingsSlideshowIntervalTitle": "間隔",
|
||||
"settingsSlideshowIntervalDialogTitle": "間隔",
|
||||
"settingsSlideshowVideoPlaybackTile": "動画を再生",
|
||||
"settingsSlideshowVideoPlaybackTitle": "動画再生",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "動画再生",
|
||||
|
||||
"settingsVideoPageTitle": "動画設定",
|
||||
"settingsSectionVideo": "動画",
|
||||
"settingsVideoSectionTitle": "動画",
|
||||
"settingsVideoShowVideos": "動画を表示",
|
||||
"settingsVideoEnableHardwareAcceleration": "ハードウェア アクセラレーション",
|
||||
"settingsVideoEnableAutoPlay": "自動再生",
|
||||
"settingsVideoLoopModeTile": "ループ モード",
|
||||
"settingsVideoLoopModeTitle": "ループ モード",
|
||||
"settingsVideoLoopModeDialogTitle": "ループ モード",
|
||||
|
||||
"settingsSubtitleThemeTile": "字幕",
|
||||
"settingsSubtitleThemeTitle": "字幕",
|
||||
"settingsSubtitleThemePageTitle": "字幕",
|
||||
"settingsSubtitleThemeSample": "これはサンプルです。",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "テキストの配置",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "テキストの配置",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "テキストの配置",
|
||||
"settingsSubtitleThemeTextSize": "テキストのサイズ",
|
||||
"settingsSubtitleThemeShowOutline": "アウトラインと影を表示",
|
||||
"settingsSubtitleThemeTextColor": "テキストの色",
|
||||
|
@ -537,13 +538,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "右揃え",
|
||||
|
||||
"settingsVideoControlsTile": "操作",
|
||||
"settingsVideoControlsTitle": "操作",
|
||||
"settingsVideoControlsPageTitle": "操作",
|
||||
"settingsVideoButtonsTile": "ボタン",
|
||||
"settingsVideoButtonsTitle": "ボタン",
|
||||
"settingsVideoButtonsDialogTitle": "ボタン",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "2回タップして再生/一時停止",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "画面の角を2回タップして早送り/早戻し",
|
||||
|
||||
"settingsSectionPrivacy": "プライバシー",
|
||||
"settingsPrivacySectionTitle": "プライバシー",
|
||||
"settingsAllowInstalledAppAccess": "アプリのインベントリへのアクセスを許可する",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "アルバム表示の改善に使用されます",
|
||||
"settingsAllowErrorReporting": "匿名でのエラー報告を許可する",
|
||||
|
@ -552,52 +553,56 @@
|
|||
"settingsEnableBinSubtitle": "削除したアイテムを30日間保持します",
|
||||
|
||||
"settingsHiddenItemsTile": "非表示アイテム",
|
||||
"settingsHiddenItemsTitle": "非表示アイテム",
|
||||
"settingsHiddenItemsPageTitle": "非表示アイテム",
|
||||
|
||||
"settingsHiddenFiltersTitle": "非表示フィルター",
|
||||
"settingsHiddenItemsTabFilters": "非表示フィルター",
|
||||
"settingsHiddenFiltersBanner": "非表示のフィルターに一致する写真と動画は、コレクションに表示されません。",
|
||||
"settingsHiddenFiltersEmpty": "非表示フィルターがありません",
|
||||
|
||||
"settingsHiddenPathsTitle": "非表示パス",
|
||||
"settingsHiddenItemsTabPaths": "非表示パス",
|
||||
"settingsHiddenPathsBanner": "これらのフォルダまたはそのサブフォルダにある写真と動画は、コレクションに表示されません。",
|
||||
"addPathTooltip": "パスを追加",
|
||||
|
||||
"settingsStorageAccessTile": "ストレージへのアクセス",
|
||||
"settingsStorageAccessTitle": "ストレージへのアクセス",
|
||||
"settingsStorageAccessPageTitle": "ストレージへのアクセス",
|
||||
"settingsStorageAccessBanner": "ディレクトリによっては、ファイルの編集のためにアクセス許可が必要です。ここには、これまでにアクセスを許可したディレクトリが表示されます。",
|
||||
"settingsStorageAccessEmpty": "許可したアクセスはありません",
|
||||
"settingsStorageAccessRevokeTooltip": "許可を取り消し",
|
||||
|
||||
"settingsSectionAccessibility": "アクセシビリティ",
|
||||
"settingsAccessibilitySectionTitle": "アクセシビリティ",
|
||||
"settingsRemoveAnimationsTile": "アニメーションの削除",
|
||||
"settingsRemoveAnimationsTitle": "アニメーションの削除",
|
||||
"settingsRemoveAnimationsDialogTitle": "アニメーションの削除",
|
||||
"settingsTimeToTakeActionTile": "操作までの時間",
|
||||
"settingsTimeToTakeActionTitle": "操作までの時間",
|
||||
"settingsTimeToTakeActionDialogTitle": "操作までの時間",
|
||||
|
||||
"settingsSectionDisplay": "ディスプレイ",
|
||||
"settingsThemeBrightness": "テーマ",
|
||||
"settingsDisplaySectionTitle": "ディスプレイ",
|
||||
"settingsThemeBrightnessTile": "テーマ",
|
||||
"settingsThemeBrightnessDialogTitle": "テーマ",
|
||||
"settingsThemeColorHighlights": "カラー強調表示",
|
||||
"settingsThemeEnableDynamicColor": "ダイナミックカラー",
|
||||
"settingsDisplayRefreshRateModeTile": "ディスプレイ リフレッシュ レート",
|
||||
"settingsDisplayRefreshRateModeTitle": "リフレッシュ レート",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "リフレッシュ レート",
|
||||
|
||||
"settingsSectionLanguage": "言語と形式",
|
||||
"settingsLanguage": "言語",
|
||||
"settingsLanguageSectionTitle": "言語と形式",
|
||||
"settingsLanguageTile": "言語",
|
||||
"settingsLanguagePageTitle": "言語",
|
||||
"settingsCoordinateFormatTile": "座標形式",
|
||||
"settingsCoordinateFormatTitle": "座標形式",
|
||||
"settingsCoordinateFormatDialogTitle": "座標形式",
|
||||
"settingsUnitSystemTile": "単位",
|
||||
"settingsUnitSystemTitle": "単位",
|
||||
"settingsUnitSystemDialogTitle": "単位",
|
||||
|
||||
"settingsScreenSaverPageTitle": "スクリーンセーバー",
|
||||
|
||||
"settingsWidgetPageTitle": "フォトフレーム",
|
||||
"settingsWidgetShowOutline": "枠",
|
||||
|
||||
"settingsCollectionTile": "コレクション",
|
||||
|
||||
"statsPageTitle": "統計",
|
||||
"statsWithGps": "{count, plural, other{位置情報のあるアイテム {count} 件}}",
|
||||
"statsTopCountries": "上位の国",
|
||||
"statsTopPlaces": "上位の場所",
|
||||
"statsTopTags": "上位のタグ",
|
||||
"statsTopCountriesSectionTitle": "上位の国",
|
||||
"statsTopPlacesSectionTitle": "上位の場所",
|
||||
"statsTopTagsSectionTitle": "上位のタグ",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "パノラマを開く",
|
||||
"viewerSetWallpaperButtonLabel": "壁紙設定",
|
||||
|
@ -619,7 +624,7 @@
|
|||
"viewerInfoLabelCoordinates": "座標",
|
||||
"viewerInfoLabelAddress": "アドレス",
|
||||
|
||||
"mapStyleTitle": "地図のスタイル",
|
||||
"mapStyleDialogTitle": "地図のスタイル",
|
||||
"mapStyleTooltip": "地図のスタイルを選択",
|
||||
"mapZoomInTooltip": "ズームイン",
|
||||
"mapZoomOutTooltip": "ズームアウト",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "제거",
|
||||
"resetTooltip": "복원",
|
||||
"saveTooltip": "저장",
|
||||
"pickTooltip": "선택",
|
||||
|
||||
"doubleBackExitMessage": "종료하려면 한번 더 누르세요.",
|
||||
"doNotAskAgain": "다시 묻지 않기",
|
||||
|
@ -87,18 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "날짜 및 시간 수정",
|
||||
"entryInfoActionEditLocation": "위치 수정",
|
||||
"entryInfoActionEditDescription": "설명 수정",
|
||||
"entryInfoActionEditTitleDescription": "제목 및 설명 수정",
|
||||
"entryInfoActionEditRating": "별점 수정",
|
||||
"entryInfoActionEditTags": "태그 수정",
|
||||
"entryInfoActionRemoveMetadata": "메타데이터 삭제",
|
||||
|
||||
"filterBinLabel": "휴지통",
|
||||
"filterFavouriteLabel": "즐겨찾기",
|
||||
"filterLocationEmptyLabel": "장소 없음",
|
||||
"filterTagEmptyLabel": "태그 없음",
|
||||
"filterNoDateLabel": "날짜 없음",
|
||||
"filterNoLocationLabel": "장소 없음",
|
||||
"filterNoRatingLabel": "별점 없음",
|
||||
"filterNoTagLabel": "태그 없음",
|
||||
"filterNoTitleLabel": "제목 없음",
|
||||
"filterOnThisDayLabel": "이 날",
|
||||
"filterRecentlyAddedLabel": "최근 추가된",
|
||||
"filterRatingUnratedLabel": "별점 없음",
|
||||
"filterRatingRejectedLabel": "거부됨",
|
||||
"filterTypeAnimatedLabel": "애니메이션",
|
||||
"filterTypeMotionPhotoLabel": "모션 사진",
|
||||
|
@ -179,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD 카드",
|
||||
"rootDirectoryDescription": "루트 폴더",
|
||||
"otherDirectoryDescription": "“{name}” 폴더",
|
||||
"storageAccessDialogTitle": "저장공간 접근",
|
||||
"storageAccessDialogMessage": "파일에 접근하도록 다음 화면에서 “{volume}”의 {directory}를 선택하세요.",
|
||||
"restrictedAccessDialogTitle": "접근 제한",
|
||||
"restrictedAccessDialogMessage": "“{volume}”의 {directory}에 있는 파일의 접근이 제한됩니다.\n\n기본으로 설치된 갤러리나 파일 관리 앱을 사용해서 다른 폴더로 파일을 이동하세요.",
|
||||
"notEnoughSpaceDialogTitle": "저장공간 부족",
|
||||
"notEnoughSpaceDialogMessage": "“{volume}”에 필요 공간은 {neededSize}인데 사용 가능한 용량은 {freeSize}만 남아있습니다.",
|
||||
"missingSystemFilePickerDialogTitle": "기본 파일 선택기 없음",
|
||||
"missingSystemFilePickerDialogMessage": "기본 파일 선택기가 없거나 비활성화딥니다. 파일 선택기를 켜고 다시 시도하세요.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "미지원 형식",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, other{이 작업은 다음 항목의 형식을 지원하지 않습니다: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "이동할 폴더에 이름이 같은 파일이 있습니다.",
|
||||
|
@ -197,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "바로가기 라벨",
|
||||
"addShortcutButtonLabel": "추가",
|
||||
|
||||
"noMatchingAppDialogTitle": "처리할 앱 없음",
|
||||
"noMatchingAppDialogMessage": "이 작업을 처리할 수 있는 앱이 없습니다.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{이 항목을 휴지통으로 이동하시겠습니까?} other{항목 {count}개를 휴지통으로 이동하시겠습니까?}}",
|
||||
|
@ -226,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "이름 변경",
|
||||
"renameEntrySetPagePatternFieldLabel": "이름 양식",
|
||||
"renameEntrySetPageInsertTooltip": "필드 추가",
|
||||
"renameEntrySetPagePreview": "미리보기",
|
||||
"renameEntrySetPagePreviewSectionTitle": "미리보기",
|
||||
|
||||
"renameProcessorCounter": "숫자 증가",
|
||||
"renameProcessorName": "이름",
|
||||
|
@ -259,8 +256,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "이 위치 사용",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "설명",
|
||||
|
||||
"editEntryRatingDialogTitle": "별점",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "메타데이터 삭제",
|
||||
|
@ -289,9 +284,10 @@
|
|||
"menuActionSlideshow": "슬라이드쇼",
|
||||
"menuActionStats": "통계",
|
||||
|
||||
"viewDialogTabSort": "정렬",
|
||||
"viewDialogTabGroup": "묶음",
|
||||
"viewDialogTabLayout": "배치",
|
||||
"viewDialogSortSectionTitle": "정렬",
|
||||
"viewDialogGroupSectionTitle": "묶음",
|
||||
"viewDialogLayoutSectionTitle": "배치",
|
||||
"viewDialogReverseSortOrder": "순서를 뒤바꾸기",
|
||||
|
||||
"tileLayoutGrid": "바둑판",
|
||||
"tileLayoutList": "목록",
|
||||
|
@ -308,24 +304,24 @@
|
|||
"aboutLinkLicense": "라이선스",
|
||||
"aboutLinkPolicy": "개인정보 보호정책",
|
||||
|
||||
"aboutBug": "버그 보고",
|
||||
"aboutBugSectionTitle": "버그 보고",
|
||||
"aboutBugSaveLogInstruction": "앱 로그를 파일에 저장하기",
|
||||
"aboutBugCopyInfoInstruction": "시스템 정보를 복사하기",
|
||||
"aboutBugCopyInfoButton": "복사",
|
||||
"aboutBugReportInstruction": "로그와 시스템 정보를 첨부하여 깃허브에서 이슈를 제출하기",
|
||||
"aboutBugReportButton": "제출",
|
||||
|
||||
"aboutCredits": "크레딧",
|
||||
"aboutCreditsSectionTitle": "크레딧",
|
||||
"aboutCreditsWorldAtlas1": "이 앱은",
|
||||
"aboutCreditsWorldAtlas2": "의 TopoJSON 파일(ISC 라이선스)을 이용합니다.",
|
||||
"aboutCreditsTranslators": "번역가",
|
||||
"aboutTranslatorsSectionTitle": "번역가",
|
||||
|
||||
"aboutLicenses": "오픈 소스 라이선스",
|
||||
"aboutLicensesSectionTitle": "오픈 소스 라이선스",
|
||||
"aboutLicensesBanner": "이 앱은 다음의 오픈 소스 패키지와 라이브러리를 이용합니다.",
|
||||
"aboutLicensesAndroidLibraries": "안드로이드 라이브러리",
|
||||
"aboutLicensesFlutterPlugins": "플러터 플러그인",
|
||||
"aboutLicensesFlutterPackages": "플러터 패키지",
|
||||
"aboutLicensesDartPackages": "다트 패키지",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "안드로이드 라이브러리",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "플러터 플러그인",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "플러터 패키지",
|
||||
"aboutLicensesDartPackagesSectionTitle": "다트 패키지",
|
||||
"aboutLicensesShowAllButtonLabel": "라이선스 모두 보기",
|
||||
|
||||
"policyPageTitle": "개인정보 보호정책",
|
||||
|
@ -345,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "제목 검색",
|
||||
|
||||
"collectionSortDate": "날짜",
|
||||
"collectionSortSize": "크기",
|
||||
"collectionSortName": "이름",
|
||||
"collectionSortRating": "별점",
|
||||
|
||||
"collectionGroupAlbum": "앨범별로",
|
||||
"collectionGroupMonth": "월별로",
|
||||
"collectionGroupDay": "날짜별로",
|
||||
|
@ -378,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "묶음 선택",
|
||||
"collectionDeselectSectionTooltip": "묶음 선택 해제",
|
||||
|
||||
"drawerAboutButton": "앱 정보",
|
||||
"drawerSettingsButton": "설정",
|
||||
"drawerCollectionAll": "모든 미디어",
|
||||
"drawerCollectionFavourites": "즐겨찾기",
|
||||
"drawerCollectionImages": "사진",
|
||||
|
@ -387,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "파노라마",
|
||||
"drawerCollectionRaws": "Raw 이미지",
|
||||
"drawerCollectionSphericalVideos": "360° 동영상",
|
||||
"drawerAlbumPage": "앨범",
|
||||
"drawerCountryPage": "국가",
|
||||
"drawerTagPage": "태그",
|
||||
|
||||
"chipSortDate": "날짜",
|
||||
"chipSortName": "이름",
|
||||
"chipSortCount": "항목수",
|
||||
"sortByDate": "날짜",
|
||||
"sortByName": "이름",
|
||||
"sortByItemCount": "항목수",
|
||||
"sortBySize": "크기",
|
||||
"sortByAlbumFileName": "이름",
|
||||
"sortByRating": "별점",
|
||||
|
||||
"sortOrderNewestFirst": "최근 날짜순",
|
||||
"sortOrderOldestFirst": "오래된 날짜순",
|
||||
"sortOrderAtoZ": "A~Z",
|
||||
"sortOrderZtoA": "Z~A",
|
||||
"sortOrderHighestFirst": "높은 별점순",
|
||||
"sortOrderLowestFirst": "낮은 별점순",
|
||||
"sortOrderLargestFirst": "큰 파일순",
|
||||
"sortOrderSmallestFirst": "작은 파일순",
|
||||
|
||||
"albumGroupTier": "단계별로",
|
||||
"albumGroupVolume": "저장공간별로",
|
||||
|
@ -422,13 +430,14 @@
|
|||
"binPageTitle": "휴지통",
|
||||
|
||||
"searchCollectionFieldHint": "미디어 검색",
|
||||
"searchSectionRecent": "최근 검색기록",
|
||||
"searchSectionDate": "날짜",
|
||||
"searchSectionAlbums": "앨범",
|
||||
"searchSectionCountries": "국가",
|
||||
"searchSectionPlaces": "장소",
|
||||
"searchSectionTags": "태그",
|
||||
"searchSectionRating": "별점",
|
||||
"searchRecentSectionTitle": "최근 검색기록",
|
||||
"searchDateSectionTitle": "날짜",
|
||||
"searchAlbumsSectionTitle": "앨범",
|
||||
"searchCountriesSectionTitle": "국가",
|
||||
"searchPlacesSectionTitle": "장소",
|
||||
"searchTagsSectionTitle": "태그",
|
||||
"searchRatingSectionTitle": "별점",
|
||||
"searchMetadataSectionTitle": "메타데이터",
|
||||
|
||||
"settingsPageTitle": "설정",
|
||||
"settingsSystemDefault": "시스템",
|
||||
|
@ -437,37 +446,40 @@
|
|||
"settingsSearchFieldLabel": "설정 검색",
|
||||
"settingsSearchEmpty": "결과가 없습니다",
|
||||
"settingsActionExport": "내보내기",
|
||||
"settingsActionExportDialogTitle": "내보내기",
|
||||
"settingsActionImport": "가져오기",
|
||||
"settingsActionImportDialogTitle": "가져오기",
|
||||
|
||||
"appExportCovers": "대표 이미지",
|
||||
"appExportFavourites": "즐겨찾기",
|
||||
"appExportSettings": "설정",
|
||||
|
||||
"settingsSectionNavigation": "탐색",
|
||||
"settingsHome": "홈",
|
||||
"settingsNavigationSectionTitle": "탐색",
|
||||
"settingsHomeTile": "홈",
|
||||
"settingsHomeDialogTitle": "홈",
|
||||
"settingsShowBottomNavigationBar": "하단 탐색 모음 표시",
|
||||
"settingsKeepScreenOnTile": "화면 자동 꺼짐 방지",
|
||||
"settingsKeepScreenOnTitle": "화면 자동 꺼짐 방지",
|
||||
"settingsKeepScreenOnDialogTitle": "화면 자동 꺼짐 방지",
|
||||
"settingsDoubleBackExit": "뒤로가기 두번 눌러 앱 종료하기",
|
||||
|
||||
"settingsConfirmationDialogTile": "확정 대화상자",
|
||||
"settingsConfirmationTile": "확정 대화상자",
|
||||
"settingsConfirmationDialogTitle": "확정 대화상자",
|
||||
"settingsConfirmationDialogDeleteItems": "항목을 완전히 삭제 시",
|
||||
"settingsConfirmationDialogMoveToBinItems": "항목을 휴지통으로 이동 시",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "날짜가 지정되지 않은 항목을 이동 시",
|
||||
"settingsConfirmationBeforeDeleteItems": "항목을 완전히 삭제 시",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "항목을 휴지통으로 이동 시",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "날짜가 지정되지 않은 항목을 이동 시",
|
||||
"settingsConfirmationAfterMoveToBinItems": "항목을 휴지통으로 이동 후",
|
||||
|
||||
"settingsNavigationDrawerTile": "탐색 메뉴",
|
||||
"settingsNavigationDrawerEditorTitle": "탐색 메뉴",
|
||||
"settingsNavigationDrawerEditorPageTitle": "탐색 메뉴",
|
||||
"settingsNavigationDrawerBanner": "항목을 길게 누른 후 이동하여 탐색 메뉴에 표시될 항목의 순서를 수정하세요.",
|
||||
"settingsNavigationDrawerTabTypes": "유형",
|
||||
"settingsNavigationDrawerTabAlbums": "앨범",
|
||||
"settingsNavigationDrawerTabPages": "페이지",
|
||||
"settingsNavigationDrawerAddAlbum": "앨범 추가",
|
||||
|
||||
"settingsSectionThumbnails": "섬네일",
|
||||
"settingsThumbnailSectionTitle": "섬네일",
|
||||
"settingsThumbnailOverlayTile": "오버레이",
|
||||
"settingsThumbnailOverlayTitle": "오버레이",
|
||||
"settingsThumbnailOverlayPageTitle": "오버레이",
|
||||
"settingsThumbnailShowFavouriteIcon": "즐겨찾기 아이콘 표시",
|
||||
"settingsThumbnailShowTagIcon": "태그 아이콘 표시",
|
||||
"settingsThumbnailShowLocationIcon": "위치 아이콘 표시",
|
||||
|
@ -477,13 +489,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "동영상 길이 표시",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "빠른 작업",
|
||||
"settingsCollectionQuickActionEditorTitle": "빠른 작업",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "빠른 작업",
|
||||
"settingsCollectionQuickActionTabBrowsing": "탐색 시",
|
||||
"settingsCollectionQuickActionTabSelecting": "선택 시",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "버튼을 길게 누른 후 이동하여 항목 탐색할 때 표시될 버튼을 선택하세요.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "버튼을 길게 누른 후 이동하여 항목 선택할 때 표시될 버튼을 선택하세요.",
|
||||
|
||||
"settingsSectionViewer": "뷰어",
|
||||
"settingsViewerSectionTitle": "뷰어",
|
||||
"settingsViewerGestureSideTapNext": "화면 측면에서 탭해서 이전/다음 항목 보기",
|
||||
"settingsViewerUseCutout": "컷아웃 영역 사용",
|
||||
"settingsViewerMaximumBrightness": "최대 밝기",
|
||||
|
@ -491,14 +503,14 @@
|
|||
"settingsImageBackground": "이미지 배경",
|
||||
|
||||
"settingsViewerQuickActionsTile": "빠른 작업",
|
||||
"settingsViewerQuickActionEditorTitle": "빠른 작업",
|
||||
"settingsViewerQuickActionEditorPageTitle": "빠른 작업",
|
||||
"settingsViewerQuickActionEditorBanner": "버튼을 길게 누른 후 이동하여 뷰어에 표시될 버튼을 선택하세요.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "표시될 버튼",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "추가 가능한 버튼",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "표시될 버튼",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "추가 가능한 버튼",
|
||||
"settingsViewerQuickActionEmpty": "버튼이 없습니다",
|
||||
|
||||
"settingsViewerOverlayTile": "오버레이",
|
||||
"settingsViewerOverlayTitle": "오버레이",
|
||||
"settingsViewerOverlayPageTitle": "오버레이",
|
||||
"settingsViewerShowOverlayOnOpening": "열릴 때 표시",
|
||||
"settingsViewerShowMinimap": "미니맵 표시",
|
||||
"settingsViewerShowInformation": "상세 정보 표시",
|
||||
|
@ -508,30 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "흐림 효과",
|
||||
|
||||
"settingsViewerSlideshowTile": "슬라이드쇼",
|
||||
"settingsViewerSlideshowTitle": "슬라이드쇼",
|
||||
"settingsViewerSlideshowPageTitle": "슬라이드쇼",
|
||||
"settingsSlideshowRepeat": "반복",
|
||||
"settingsSlideshowShuffle": "순서섞기",
|
||||
"settingsSlideshowFillScreen": "화면 채우기",
|
||||
"settingsSlideshowTransitionTile": "전환 효과",
|
||||
"settingsSlideshowTransitionTitle": "전환 효과",
|
||||
"settingsSlideshowTransitionDialogTitle": "전환 효과",
|
||||
"settingsSlideshowIntervalTile": "교체 주기",
|
||||
"settingsSlideshowIntervalTitle": "교체 주기",
|
||||
"settingsSlideshowIntervalDialogTitle": "교체 주기",
|
||||
"settingsSlideshowVideoPlaybackTile": "동영상 재생",
|
||||
"settingsSlideshowVideoPlaybackTitle": "동영상 재생",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "동영상 재생",
|
||||
|
||||
"settingsVideoPageTitle": "동영상 설정",
|
||||
"settingsSectionVideo": "동영상",
|
||||
"settingsVideoSectionTitle": "동영상",
|
||||
"settingsVideoShowVideos": "미디어에 동영상 표시",
|
||||
"settingsVideoEnableHardwareAcceleration": "하드웨어 가속",
|
||||
"settingsVideoEnableAutoPlay": "자동 재생",
|
||||
"settingsVideoLoopModeTile": "반복 모드",
|
||||
"settingsVideoLoopModeTitle": "반복 모드",
|
||||
"settingsVideoLoopModeDialogTitle": "반복 모드",
|
||||
|
||||
"settingsSubtitleThemeTile": "자막",
|
||||
"settingsSubtitleThemeTitle": "자막",
|
||||
"settingsSubtitleThemePageTitle": "자막",
|
||||
"settingsSubtitleThemeSample": "샘플입니다.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "정렬",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "정렬",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "정렬",
|
||||
"settingsSubtitleThemeTextSize": "글자 크기",
|
||||
"settingsSubtitleThemeShowOutline": "윤곽 및 그림자 표시",
|
||||
"settingsSubtitleThemeTextColor": "글자 색상",
|
||||
|
@ -543,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "오른쪽",
|
||||
|
||||
"settingsVideoControlsTile": "제어",
|
||||
"settingsVideoControlsTitle": "제어",
|
||||
"settingsVideoControlsPageTitle": "제어",
|
||||
"settingsVideoButtonsTile": "버튼",
|
||||
"settingsVideoButtonsTitle": "버튼",
|
||||
"settingsVideoButtonsDialogTitle": "버튼",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "두 번 탭해서 재생이나 일시정지하기",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "화면 측면에서 두 번 탭해서 앞뒤로 가기",
|
||||
|
||||
"settingsSectionPrivacy": "개인정보 보호",
|
||||
"settingsPrivacySectionTitle": "개인정보 보호",
|
||||
"settingsAllowInstalledAppAccess": "설치된 앱의 목록 접근 허용",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "앨범 표시 개선을 위해",
|
||||
"settingsAllowErrorReporting": "오류 보고서 보내기",
|
||||
|
@ -558,52 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "삭제한 항목을 30일 동안 보관하기",
|
||||
|
||||
"settingsHiddenItemsTile": "숨겨진 항목",
|
||||
"settingsHiddenItemsTitle": "숨겨진 항목",
|
||||
"settingsHiddenItemsPageTitle": "숨겨진 항목",
|
||||
|
||||
"settingsHiddenFiltersTitle": "숨겨진 필터",
|
||||
"settingsHiddenItemsTabFilters": "숨겨진 필터",
|
||||
"settingsHiddenFiltersBanner": "이 필터에 맞는 사진과 동영상이 숨겨지고 있으며 이 앱에서 보여지지 않을 것입니다.",
|
||||
"settingsHiddenFiltersEmpty": "숨겨진 필터가 없습니다",
|
||||
|
||||
"settingsHiddenPathsTitle": "숨겨진 경로",
|
||||
"settingsHiddenItemsTabPaths": "숨겨진 경로",
|
||||
"settingsHiddenPathsBanner": "이 경로에 있는 사진과 동영상이 숨겨지고 있으며 이 앱에서 보여지지 않을 것입니다.",
|
||||
"addPathTooltip": "경로 추가",
|
||||
|
||||
"settingsStorageAccessTile": "저장공간 접근",
|
||||
"settingsStorageAccessTitle": "저장공간 접근",
|
||||
"settingsStorageAccessPageTitle": "저장공간 접근",
|
||||
"settingsStorageAccessBanner": "어떤 폴더는 사용자의 허용을 받아야만 앱이 파일에 접근이 가능합니다. 이 화면에 허용을 받은 폴더를 확인할 수 있으며 원하지 않으면 취소할 수 있습니다.",
|
||||
"settingsStorageAccessEmpty": "접근 허용이 없습니다",
|
||||
"settingsStorageAccessRevokeTooltip": "취소",
|
||||
|
||||
"settingsSectionAccessibility": "접근성",
|
||||
"settingsAccessibilitySectionTitle": "접근성",
|
||||
"settingsRemoveAnimationsTile": "애니메이션 삭제",
|
||||
"settingsRemoveAnimationsTitle": "애니메이션 삭제",
|
||||
"settingsRemoveAnimationsDialogTitle": "애니메이션 삭제",
|
||||
"settingsTimeToTakeActionTile": "액션 취하기 전 대기 시간",
|
||||
"settingsTimeToTakeActionTitle": "액션 취하기 전 대기 시간",
|
||||
"settingsTimeToTakeActionDialogTitle": "액션 취하기 전 대기 시간",
|
||||
|
||||
"settingsSectionDisplay": "디스플레이",
|
||||
"settingsThemeBrightness": "테마",
|
||||
"settingsDisplaySectionTitle": "디스플레이",
|
||||
"settingsThemeBrightnessTile": "테마",
|
||||
"settingsThemeBrightnessDialogTitle": "테마",
|
||||
"settingsThemeColorHighlights": "색 강조",
|
||||
"settingsThemeEnableDynamicColor": "동적 색상",
|
||||
"settingsDisplayRefreshRateModeTile": "화면 재생률",
|
||||
"settingsDisplayRefreshRateModeTitle": "화면 재생률",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "화면 재생률",
|
||||
|
||||
"settingsSectionLanguage": "언어 및 표시 형식",
|
||||
"settingsLanguage": "언어",
|
||||
"settingsLanguageSectionTitle": "언어 및 표시 형식",
|
||||
"settingsLanguageTile": "언어",
|
||||
"settingsLanguagePageTitle": "언어",
|
||||
"settingsCoordinateFormatTile": "좌표 표현",
|
||||
"settingsCoordinateFormatTitle": "좌표 표현",
|
||||
"settingsCoordinateFormatDialogTitle": "좌표 표현",
|
||||
"settingsUnitSystemTile": "단위법",
|
||||
"settingsUnitSystemTitle": "단위법",
|
||||
"settingsUnitSystemDialogTitle": "단위법",
|
||||
|
||||
"settingsScreenSaverPageTitle": "화면보호기",
|
||||
|
||||
"settingsWidgetPageTitle": "사진 액자",
|
||||
"settingsWidgetShowOutline": "윤곽",
|
||||
|
||||
"settingsCollectionTile": "미디어",
|
||||
|
||||
"statsPageTitle": "통계",
|
||||
"statsWithGps": "{count, plural, other{{count}개 위치가 있음}}",
|
||||
"statsTopCountries": "국가 랭킹",
|
||||
"statsTopPlaces": "장소 랭킹",
|
||||
"statsTopTags": "태그 랭킹",
|
||||
"statsTopCountriesSectionTitle": "국가 랭킹",
|
||||
"statsTopPlacesSectionTitle": "장소 랭킹",
|
||||
"statsTopTagsSectionTitle": "태그 랭킹",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "파노라마 열기",
|
||||
"viewerSetWallpaperButtonLabel": "설정",
|
||||
|
@ -614,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "뷰어로",
|
||||
|
||||
"viewerInfoUnknown": "알 수 없음",
|
||||
"viewerInfoLabelDescription": "설명",
|
||||
"viewerInfoLabelTitle": "제목",
|
||||
"viewerInfoLabelDate": "날짜",
|
||||
"viewerInfoLabelResolution": "해상도",
|
||||
|
@ -625,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "좌표",
|
||||
"viewerInfoLabelAddress": "주소",
|
||||
|
||||
"mapStyleTitle": "지도 유형",
|
||||
"mapStyleDialogTitle": "지도 유형",
|
||||
"mapStyleTooltip": "지도 유형 선택",
|
||||
"mapZoomInTooltip": "확대",
|
||||
"mapZoomOutTooltip": "축소",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Verwijderen",
|
||||
"resetTooltip": "Resetten",
|
||||
"saveTooltip": "Opslaan",
|
||||
"pickTooltip": "Kies",
|
||||
|
||||
"doubleBackExitMessage": "Tap nogmaals “Terug” om te sluiten.",
|
||||
"doNotAskAgain": "Niet opnieuw vragen",
|
||||
|
@ -85,20 +86,22 @@
|
|||
"slideshowActionResume": "Hervatten",
|
||||
"slideshowActionShowInCollection": "Tonen in Collectie",
|
||||
|
||||
"entryInfoActionEditDate": "Bewerk Datum & Tijd",
|
||||
"entryInfoActionEditLocation": "Bewerk Locatie",
|
||||
"entryInfoActionEditDescription": "Omschrijving wijzigen",
|
||||
"entryInfoActionEditDate": "Bewerk datum & tijd",
|
||||
"entryInfoActionEditLocation": "Bewerk locatie",
|
||||
"entryInfoActionEditTitleDescription": "Wijzig titel & omschrijving",
|
||||
"entryInfoActionEditRating": "Bewerk waardering",
|
||||
"entryInfoActionEditTags": "Bewerk labels",
|
||||
"entryInfoActionRemoveMetadata": "Verwijder metadata",
|
||||
|
||||
"filterBinLabel": "Prullenbak",
|
||||
"filterFavouriteLabel": "Favorieten",
|
||||
"filterLocationEmptyLabel": "Geen locatie",
|
||||
"filterTagEmptyLabel": "Geen label",
|
||||
"filterNoDateLabel": "Geen datum",
|
||||
"filterNoLocationLabel": "Geen locatie",
|
||||
"filterNoRatingLabel": "Geen rating",
|
||||
"filterNoTagLabel": "Geen label",
|
||||
"filterNoTitleLabel": "Geen titel",
|
||||
"filterOnThisDayLabel": "Op deze dag",
|
||||
"filterRecentlyAddedLabel": "Recent toegevoegd",
|
||||
"filterRatingUnratedLabel": "Geen rating",
|
||||
"filterRatingRejectedLabel": "Afgekeurd",
|
||||
"filterTypeAnimatedLabel": "Geanimeerd",
|
||||
"filterTypeMotionPhotoLabel": "Bewegende Foto",
|
||||
|
@ -179,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD kaart",
|
||||
"rootDirectoryDescription": "root map",
|
||||
"otherDirectoryDescription": "“{name}” map",
|
||||
"storageAccessDialogTitle": "Toegang tot opslag",
|
||||
"storageAccessDialogMessage": "Selecteer de {directory} van “{volume}”, in het volgende scherm om deze app er toegang toe te geven.",
|
||||
"restrictedAccessDialogTitle": "Beperkte toegang",
|
||||
"restrictedAccessDialogMessage": "Deze applicatie mag geen bestanden wijzigen in de {directory} van “{volume}”,.\n\n Gebruik een vooraf geïnstalleerde filemanager of galerij-app om de items naar een andere map te verplaatsen.",
|
||||
"notEnoughSpaceDialogTitle": "Te weinig vrije opslagruimte",
|
||||
"notEnoughSpaceDialogMessage": "Deze bewerking heeft {neededSize} vrije ruimte op “{volume}”, nodig om te voltooien, maar er is nog slechts {freeSize} over.",
|
||||
"missingSystemFilePickerDialogTitle": "Ontbrekende systeembestandkiezer",
|
||||
"missingSystemFilePickerDialogMessage": "De systeembestandskiezer ontbreekt of is uitgeschakeld. Schakel het in en probeer het opnieuw.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Niet-ondersteunde Bestandstypen",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, other{Deze bewerking wordt niet ondersteund voor items van het volgende bestandstype: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Sommige bestanden in de doelmap hebben dezelfde naam.",
|
||||
|
@ -197,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "Label snelkoppeling",
|
||||
"addShortcutButtonLabel": "TOEVOEGEN",
|
||||
|
||||
"noMatchingAppDialogTitle": "Geen overeenkomende applicatie",
|
||||
"noMatchingAppDialogMessage": "Er zijn geen apps die dit ondersteunen.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Dit item naar de prullenbak verplaatsen??} other{Verplaats deze {count} items naar de prullenbak?}}",
|
||||
|
@ -226,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "Hernoemen",
|
||||
"renameEntrySetPagePatternFieldLabel": "Naamgevingspatroon",
|
||||
"renameEntrySetPageInsertTooltip": "Veld invoegen",
|
||||
"renameEntrySetPagePreview": "Voorbeeld",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Voorbeeld",
|
||||
|
||||
"renameProcessorCounter": "Teller",
|
||||
"renameProcessorName": "Naam",
|
||||
|
@ -259,8 +256,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Gebruik deze locatie",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Omschrijving",
|
||||
|
||||
"editEntryRatingDialogTitle": "Beoordeling",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Verwijderen metadata",
|
||||
|
@ -289,9 +284,10 @@
|
|||
"menuActionSlideshow": "Diavoorstelling",
|
||||
"menuActionStats": "Statistieken",
|
||||
|
||||
"viewDialogTabSort": "Sorteer",
|
||||
"viewDialogTabGroup": "Groeperen",
|
||||
"viewDialogTabLayout": "Layout",
|
||||
"viewDialogSortSectionTitle": "Sorteer",
|
||||
"viewDialogGroupSectionTitle": "Groeperen",
|
||||
"viewDialogLayoutSectionTitle": "Layout",
|
||||
"viewDialogReverseSortOrder": "Draai sorteerrichting om",
|
||||
|
||||
"tileLayoutGrid": "Raster",
|
||||
"tileLayoutList": "Lijst",
|
||||
|
@ -308,24 +304,24 @@
|
|||
"aboutLinkLicense": "Licentie",
|
||||
"aboutLinkPolicy": "Privacy Policy",
|
||||
|
||||
"aboutBug": "Bug Reporteren",
|
||||
"aboutBugSectionTitle": "Bug Reporteren",
|
||||
"aboutBugSaveLogInstruction": "Sla applicatielogs op in een bestand",
|
||||
"aboutBugCopyInfoInstruction": "Kopieer systeem informatie",
|
||||
"aboutBugCopyInfoButton": "Kopieer",
|
||||
"aboutBugReportInstruction": "Reporteer op GitHub met de logs en systeeminformatie",
|
||||
"aboutBugReportButton": "Reporteer",
|
||||
|
||||
"aboutCredits": "Credits",
|
||||
"aboutCreditsSectionTitle": "Credits",
|
||||
"aboutCreditsWorldAtlas1": "Deze applicatie gebruikt een TopoJSON-bestand van",
|
||||
"aboutCreditsWorldAtlas2": "Gebruik makend van de ISC License.",
|
||||
"aboutCreditsTranslators": "Vdertalers",
|
||||
"aboutTranslatorsSectionTitle": "Vdertalers",
|
||||
|
||||
"aboutLicenses": "Open-Source Licenties",
|
||||
"aboutLicensesSectionTitle": "Open-Source Licenties",
|
||||
"aboutLicensesBanner": "Deze app maakt gebruik van de volgende open-sourcepakketten en bibliotheken.",
|
||||
"aboutLicensesAndroidLibraries": "Android bibliotheken",
|
||||
"aboutLicensesFlutterPlugins": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackages": "Flutter Packages",
|
||||
"aboutLicensesDartPackages": "Dart Packages",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android bibliotheken",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flutter Packages",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart Packages",
|
||||
"aboutLicensesShowAllButtonLabel": "Laat alle licenties zien",
|
||||
|
||||
"policyPageTitle": "Privacy Policy",
|
||||
|
@ -345,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Zoek op titel",
|
||||
|
||||
"collectionSortDate": "Op datum",
|
||||
"collectionSortSize": "Op grootte",
|
||||
"collectionSortName": "Op album- en bestandsnaam",
|
||||
"collectionSortRating": "Op rating",
|
||||
|
||||
"collectionGroupAlbum": "Op Albumnaam",
|
||||
"collectionGroupMonth": "Op maand",
|
||||
"collectionGroupDay": "Op dag",
|
||||
|
@ -378,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "Selecteer sectie",
|
||||
"collectionDeselectSectionTooltip": "Deselecteer sectie",
|
||||
|
||||
"drawerAboutButton": "Over",
|
||||
"drawerSettingsButton": "Instellingen",
|
||||
"drawerCollectionAll": "Alle verzamelingen",
|
||||
"drawerCollectionFavourites": "Favourieten",
|
||||
"drawerCollectionImages": "Afbeeldingen",
|
||||
|
@ -387,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "Panoramas",
|
||||
"drawerCollectionRaws": "Raw foto’s",
|
||||
"drawerCollectionSphericalVideos": "360° video’s",
|
||||
"drawerAlbumPage": "Albums",
|
||||
"drawerCountryPage": "Landen",
|
||||
"drawerTagPage": "Labels",
|
||||
|
||||
"chipSortDate": "Op datum",
|
||||
"chipSortName": "Op naam",
|
||||
"chipSortCount": "Op aantal items",
|
||||
"sortByDate": "Op datum",
|
||||
"sortByName": "Op naam",
|
||||
"sortByItemCount": "Op aantal items",
|
||||
"sortBySize": "Op grootte",
|
||||
"sortByAlbumFileName": "Op album- en bestandsnaam",
|
||||
"sortByRating": "Op rating",
|
||||
|
||||
"sortOrderNewestFirst": "Nieuwste eerst",
|
||||
"sortOrderOldestFirst": "Oudste eerst",
|
||||
"sortOrderAtoZ": "A tot Z",
|
||||
"sortOrderZtoA": "Z tot A",
|
||||
"sortOrderHighestFirst": "Hoogste eerst",
|
||||
"sortOrderLowestFirst": "Laagste eerst",
|
||||
"sortOrderLargestFirst": "Grootste eerst",
|
||||
"sortOrderSmallestFirst": "Kleinste eerst",
|
||||
|
||||
"albumGroupTier": "Op rang",
|
||||
"albumGroupVolume": "Op opslagvolume",
|
||||
|
@ -422,13 +430,14 @@
|
|||
"binPageTitle": "Prullenbak",
|
||||
|
||||
"searchCollectionFieldHint": "Doorzoek collectie",
|
||||
"searchSectionRecent": "Recent",
|
||||
"searchSectionDate": "Datum",
|
||||
"searchSectionAlbums": "Albums",
|
||||
"searchSectionCountries": "Landen",
|
||||
"searchSectionPlaces": "Plaatsen",
|
||||
"searchSectionTags": "Labels",
|
||||
"searchSectionRating": "Beoordeling",
|
||||
"searchRecentSectionTitle": "Recent",
|
||||
"searchDateSectionTitle": "Datum",
|
||||
"searchAlbumsSectionTitle": "Albums",
|
||||
"searchCountriesSectionTitle": "Landen",
|
||||
"searchPlacesSectionTitle": "Plaatsen",
|
||||
"searchTagsSectionTitle": "Labels",
|
||||
"searchRatingSectionTitle": "Beoordeling",
|
||||
"searchMetadataSectionTitle": "Metadata",
|
||||
|
||||
"settingsPageTitle": "Instellingen",
|
||||
"settingsSystemDefault": "Systeem",
|
||||
|
@ -437,37 +446,40 @@
|
|||
"settingsSearchFieldLabel": "Instellingen doorzoeken",
|
||||
"settingsSearchEmpty": "Geen instellingen gevonden",
|
||||
"settingsActionExport": "Exporteer",
|
||||
"settingsActionExportDialogTitle": "Exporteer",
|
||||
"settingsActionImport": "Importeer",
|
||||
"settingsActionImportDialogTitle": "Importeer",
|
||||
|
||||
"appExportCovers": "Omslagen",
|
||||
"appExportFavourites": "Favorieten",
|
||||
"appExportSettings": "Instellingen",
|
||||
|
||||
"settingsSectionNavigation": "Navigatie",
|
||||
"settingsHome": "Startscherm",
|
||||
"settingsNavigationSectionTitle": "Navigatie",
|
||||
"settingsHomeTile": "Startscherm",
|
||||
"settingsHomeDialogTitle": "Startscherm",
|
||||
"settingsShowBottomNavigationBar": "Laat onderste navigatiebalk zien",
|
||||
"settingsKeepScreenOnTile": "Houd het scherm aan",
|
||||
"settingsKeepScreenOnTitle": "Houd het scherm aan",
|
||||
"settingsKeepScreenOnDialogTitle": "Houd het scherm aan",
|
||||
"settingsDoubleBackExit": "Tik twee keer op “terug” om af te sluiten",
|
||||
|
||||
"settingsConfirmationDialogTile": "Bevestigingsscherm",
|
||||
"settingsConfirmationTile": "Bevestigingsscherm",
|
||||
"settingsConfirmationDialogTitle": "Bevestigingsschermen",
|
||||
"settingsConfirmationDialogDeleteItems": "Bevestig voordat je items voor altijd verwijdert",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Bevestig voordat u items naar de prullenbak verplaatst",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Bevestigvoordat u ongedateerde items verplaatst",
|
||||
"settingsConfirmationBeforeDeleteItems": "Bevestig voordat je items voor altijd verwijdert",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Bevestig voordat u items naar de prullenbak verplaatst",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Bevestigvoordat u ongedateerde items verplaatst",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Toon bevestigingsbericht na het verplaatsen van items naar de prullenbak",
|
||||
|
||||
"settingsNavigationDrawerTile": "Navigatiemenu",
|
||||
"settingsNavigationDrawerEditorTitle": "Navigatiemenu",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Navigatiemenu",
|
||||
"settingsNavigationDrawerBanner": "Houd ingedrukt om menu-items te verplaatsen en opnieuw te ordenen.",
|
||||
"settingsNavigationDrawerTabTypes": "Typen",
|
||||
"settingsNavigationDrawerTabAlbums": "Albums",
|
||||
"settingsNavigationDrawerTabPages": "Pagina’s",
|
||||
"settingsNavigationDrawerAddAlbum": "Album toevoegen",
|
||||
|
||||
"settingsSectionThumbnails": "Miniaturen",
|
||||
"settingsThumbnailSectionTitle": "Miniaturen",
|
||||
"settingsThumbnailOverlayTile": "Overlay",
|
||||
"settingsThumbnailOverlayTitle": "Overlay",
|
||||
"settingsThumbnailOverlayPageTitle": "Overlay",
|
||||
"settingsThumbnailShowFavouriteIcon": "Favorieten icoon zichtbaar",
|
||||
"settingsThumbnailShowTagIcon": "Label icoon zichtbaar",
|
||||
"settingsThumbnailShowLocationIcon": "Locatie icoon zichtbaar",
|
||||
|
@ -477,13 +489,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Videoduur zichtbaar",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Snelle bewerkingen",
|
||||
"settingsCollectionQuickActionEditorTitle": "Snelle bewerkingen",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Snelle bewerkingen",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Blader",
|
||||
"settingsCollectionQuickActionTabSelecting": "Selecteren",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Houd ingedrukt om knoppen te verplaatsen en te selecteren welke acties worden weergegeven bij het bladeren door items.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Houd ingedrukt om knoppen te verplaatsen en te selecteren welke acties worden weergegeven bij het selecteren van items.",
|
||||
|
||||
"settingsSectionViewer": "Voorbeeld",
|
||||
"settingsViewerSectionTitle": "Voorbeeld",
|
||||
"settingsViewerGestureSideTapNext": "Druk op het scherm om het vorige/volgende item weer te geven",
|
||||
"settingsViewerUseCutout": "Uitgesneden gebied gebruiken",
|
||||
"settingsViewerMaximumBrightness": "Maximale helderheid",
|
||||
|
@ -491,14 +503,14 @@
|
|||
"settingsImageBackground": "Afbeeldingsachtergrond",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Snelle bewerkingen",
|
||||
"settingsViewerQuickActionEditorTitle": "Snelle bewerkingen",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Snelle bewerkingen",
|
||||
"settingsViewerQuickActionEditorBanner": "Houd ingedrukt om knoppen te verplaatsen en te selecteren welke acties in de viewer worden weergegeven.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Zichtbare knoppen",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Beschikbare knoppen",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Zichtbare knoppen",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Beschikbare knoppen",
|
||||
"settingsViewerQuickActionEmpty": "Geen knoppen",
|
||||
|
||||
"settingsViewerOverlayTile": "Overlay",
|
||||
"settingsViewerOverlayTitle": "Overlay",
|
||||
"settingsViewerOverlayPageTitle": "Overlay",
|
||||
"settingsViewerShowOverlayOnOpening": "Zichtbaar bij openen",
|
||||
"settingsViewerShowMinimap": "Laat kleine kaart zien",
|
||||
"settingsViewerShowInformation": "Laat informatie zien",
|
||||
|
@ -508,30 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Vervagingseffect",
|
||||
|
||||
"settingsViewerSlideshowTile": "Diavoorstelling",
|
||||
"settingsViewerSlideshowTitle": "Diavoorstelling",
|
||||
"settingsViewerSlideshowPageTitle": "Diavoorstelling",
|
||||
"settingsSlideshowRepeat": "Herhalen",
|
||||
"settingsSlideshowShuffle": "Shuffle",
|
||||
"settingsSlideshowFillScreen": "Volledig scherm",
|
||||
"settingsSlideshowTransitionTile": "Overgang",
|
||||
"settingsSlideshowTransitionTitle": "Overgang",
|
||||
"settingsSlideshowTransitionDialogTitle": "Overgang",
|
||||
"settingsSlideshowIntervalTile": "Interval",
|
||||
"settingsSlideshowIntervalTitle": "Interval",
|
||||
"settingsSlideshowIntervalDialogTitle": "Interval",
|
||||
"settingsSlideshowVideoPlaybackTile": "Video afspelen",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Video afspelen",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Video afspelen",
|
||||
|
||||
"settingsVideoPageTitle": "Video Instellingen",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Videos",
|
||||
"settingsVideoEnableHardwareAcceleration": "Hardware acceleratie",
|
||||
"settingsVideoEnableAutoPlay": "Automatisch afspelen",
|
||||
"settingsVideoLoopModeTile": "Herhaald afspelen",
|
||||
"settingsVideoLoopModeTitle": "Herhaald afspelen",
|
||||
"settingsVideoLoopModeDialogTitle": "Herhaald afspelen",
|
||||
|
||||
"settingsSubtitleThemeTile": "Ondertiteling",
|
||||
"settingsSubtitleThemeTitle": "Ondertiteling",
|
||||
"settingsSubtitleThemePageTitle": "Ondertiteling",
|
||||
"settingsSubtitleThemeSample": "Dit is een voorbeeld",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Tekst uitlijnen",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Tekst uitlijnen",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Tekst uitlijnen",
|
||||
"settingsSubtitleThemeTextSize": "Tekstgroote",
|
||||
"settingsSubtitleThemeShowOutline": "Laat omtrek en schaduw zien",
|
||||
"settingsSubtitleThemeTextColor": "Tekstkleur",
|
||||
|
@ -543,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Rechts",
|
||||
|
||||
"settingsVideoControlsTile": "Bediening",
|
||||
"settingsVideoControlsTitle": "Bediening",
|
||||
"settingsVideoControlsPageTitle": "Bediening",
|
||||
"settingsVideoButtonsTile": "Knoppen",
|
||||
"settingsVideoButtonsTitle": "Knoppen",
|
||||
"settingsVideoButtonsDialogTitle": "Knoppen",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Dubbeltik om te spelen/pauzeren",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Dubbeltik op schermranden om achteruit/vooruit te zoeken",
|
||||
|
||||
"settingsSectionPrivacy": "Privacy",
|
||||
"settingsPrivacySectionTitle": "Privacy",
|
||||
"settingsAllowInstalledAppAccess": "Toegang tot app-inventaris toestaan",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Gebruikt om de albumweergave te verbeteren",
|
||||
"settingsAllowErrorReporting": "Anonieme foutrapportage toestaan",
|
||||
|
@ -558,52 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "Bewaar verwijderde items 30 dagen",
|
||||
|
||||
"settingsHiddenItemsTile": "Verborgen items",
|
||||
"settingsHiddenItemsTitle": "Verborgen Items",
|
||||
"settingsHiddenItemsPageTitle": "Verborgen Items",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Verborgen Filters",
|
||||
"settingsHiddenItemsTabFilters": "Verborgen Filters",
|
||||
"settingsHiddenFiltersBanner": "Foto’s en video’s die overeenkomen met verborgen filters, worden niet weergegeven in uw verzameling.",
|
||||
"settingsHiddenFiltersEmpty": "Geen verborgen filters",
|
||||
|
||||
"settingsHiddenPathsTitle": "Verborgen paden",
|
||||
"settingsHiddenItemsTabPaths": "Verborgen paden",
|
||||
"settingsHiddenPathsBanner": "Foto’s en video’s in deze mappen, of een van hun submappen, verschijnen niet in uw verzameling.",
|
||||
"addPathTooltip": "Pad toevoegen",
|
||||
|
||||
"settingsStorageAccessTile": "Toegang tot opslag",
|
||||
"settingsStorageAccessTitle": "Toegang tot opslag",
|
||||
"settingsStorageAccessPageTitle": "Toegang tot opslag",
|
||||
"settingsStorageAccessBanner": "Sommige mappen vereisen een expliciete toegangstoekenning om bestanden erin te wijzigen. U kunt hier directory’s bekijken waartoe u eerder toegang heeft verleend.",
|
||||
"settingsStorageAccessEmpty": "Geen toegang verleend",
|
||||
"settingsStorageAccessRevokeTooltip": "Herroepen",
|
||||
|
||||
"settingsSectionAccessibility": "Toegankelijkheid",
|
||||
"settingsAccessibilitySectionTitle": "Toegankelijkheid",
|
||||
"settingsRemoveAnimationsTile": "Animaties verwijderen",
|
||||
"settingsRemoveAnimationsTitle": "Animaties verwijderen",
|
||||
"settingsRemoveAnimationsDialogTitle": "Animaties verwijderen",
|
||||
"settingsTimeToTakeActionTile": "Tijd om actie te ondernemen",
|
||||
"settingsTimeToTakeActionTitle": "Tijd om actie te ondernemen",
|
||||
"settingsTimeToTakeActionDialogTitle": "Tijd om actie te ondernemen",
|
||||
|
||||
"settingsSectionDisplay": "Scherm",
|
||||
"settingsThemeBrightness": "Thema",
|
||||
"settingsDisplaySectionTitle": "Scherm",
|
||||
"settingsThemeBrightnessTile": "Thema",
|
||||
"settingsThemeBrightnessDialogTitle": "Thema",
|
||||
"settingsThemeColorHighlights": "Kleur highlights",
|
||||
"settingsThemeEnableDynamicColor": "Dynamische kleur",
|
||||
"settingsDisplayRefreshRateModeTile": "Vernieuwingsfrequentie weergeven",
|
||||
"settingsDisplayRefreshRateModeTitle": "Vernieuwingsfrequentie",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Vernieuwingsfrequentie",
|
||||
|
||||
"settingsSectionLanguage": "Taal & landinstellingen",
|
||||
"settingsLanguage": "Taal",
|
||||
"settingsCoordinateFormatTile": "Coördineer formaat",
|
||||
"settingsCoordinateFormatTitle": "Coördineer formaat",
|
||||
"settingsLanguageSectionTitle": "Taal & landinstellingen",
|
||||
"settingsLanguageTile": "Taal",
|
||||
"settingsLanguagePageTitle": "Taal",
|
||||
"settingsCoordinateFormatTile": "Coördinaten format",
|
||||
"settingsCoordinateFormatDialogTitle": "Coördinaten format",
|
||||
"settingsUnitSystemTile": "Eenheden",
|
||||
"settingsUnitSystemTitle": "Eenheden",
|
||||
"settingsUnitSystemDialogTitle": "Eenheden",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Schermbeveiliging",
|
||||
|
||||
"settingsWidgetPageTitle": "Foto Lijstje",
|
||||
"settingsWidgetShowOutline": "Contour",
|
||||
|
||||
"settingsCollectionTile": "Verzameling",
|
||||
|
||||
"statsPageTitle": "Stats",
|
||||
"statsWithGps": "{count, plural, =1{1 item met locatie} other{{count} items met locatie}}",
|
||||
"statsTopCountries": "Top Landen",
|
||||
"statsTopPlaces": "Top Plaatsen",
|
||||
"statsTopTags": "Top Labels",
|
||||
"statsTopCountriesSectionTitle": "Top Landen",
|
||||
"statsTopPlacesSectionTitle": "Top Plaatsen",
|
||||
"statsTopTagsSectionTitle": "Top Labels",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "OPEN PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "ALS ACHTERGROND INSTELLEN",
|
||||
|
@ -614,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Terug naar viewer",
|
||||
|
||||
"viewerInfoUnknown": "onbekendd",
|
||||
"viewerInfoLabelDescription": "Omschrijving",
|
||||
"viewerInfoLabelTitle": "Titel",
|
||||
"viewerInfoLabelDate": "Datum",
|
||||
"viewerInfoLabelResolution": "Resolutie",
|
||||
|
@ -625,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coördinaten",
|
||||
"viewerInfoLabelAddress": "Adres",
|
||||
|
||||
"mapStyleTitle": "Kaartstijl",
|
||||
"mapStyleDialogTitle": "Kaartstijl",
|
||||
"mapStyleTooltip": "Selecteer kaart stijl",
|
||||
"mapZoomInTooltip": "Inzoomen",
|
||||
"mapZoomOutTooltip": "Uitzoomen",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Remover",
|
||||
"resetTooltip": "Resetar",
|
||||
"saveTooltip": "Salve",
|
||||
"pickTooltip": "Escolher",
|
||||
|
||||
"doubleBackExitMessage": "Toque em “voltar” novamente para sair.",
|
||||
"doNotAskAgain": "Não pergunte novamente",
|
||||
|
@ -87,18 +88,17 @@
|
|||
|
||||
"entryInfoActionEditDate": "Editar data e hora",
|
||||
"entryInfoActionEditLocation": "Editar localização",
|
||||
"entryInfoActionEditDescription": "Editar descrição",
|
||||
"entryInfoActionEditRating": "Editar classificação",
|
||||
"entryInfoActionEditTags": "Editar etiquetas",
|
||||
"entryInfoActionRemoveMetadata": "Remover metadados",
|
||||
|
||||
"filterBinLabel": "Lixeira",
|
||||
"filterFavouriteLabel": "Favorito",
|
||||
"filterLocationEmptyLabel": "Não localizado",
|
||||
"filterTagEmptyLabel": "Sem etiqueta",
|
||||
"filterNoLocationLabel": "Não localizado",
|
||||
"filterNoRatingLabel": "Sem classificação",
|
||||
"filterNoTagLabel": "Sem etiqueta",
|
||||
"filterOnThisDayLabel": "Neste dia",
|
||||
"filterRecentlyAddedLabel": "Adicionado recentemente",
|
||||
"filterRatingUnratedLabel": "Sem classificação",
|
||||
"filterRatingRejectedLabel": "Rejeitado",
|
||||
"filterTypeAnimatedLabel": "Animado",
|
||||
"filterTypeMotionPhotoLabel": "Foto em movimento",
|
||||
|
@ -179,16 +179,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "cartão SD",
|
||||
"rootDirectoryDescription": "diretório raiz",
|
||||
"otherDirectoryDescription": "diretório “{name}”",
|
||||
"storageAccessDialogTitle": "Acesso de armazenamento",
|
||||
"storageAccessDialogMessage": "Selecione o {directory} de “{volume}” na próxima tela para dar acesso a este aplicativo.",
|
||||
"restrictedAccessDialogTitle": "Acesso restrito",
|
||||
"restrictedAccessDialogMessage": "Este aplicativo não tem permissão para modificar arquivos no {directory} de “{volume}”.\n\nUse um gerenciador de arquivos ou aplicativo de galeria pré-instalado para mover os itens para outro diretório.",
|
||||
"notEnoughSpaceDialogTitle": "Espaço insuficiente",
|
||||
"notEnoughSpaceDialogMessage": "Esta operação precisa {neededSize} de espaço livre em “{volume}” para completar, mas só {freeSize} restantes.",
|
||||
"missingSystemFilePickerDialogTitle": "Seletor de arquivos do sistema ausente",
|
||||
"missingSystemFilePickerDialogMessage": "O seletor de arquivos do sistema está ausente ou desabilitado. Por favor, habilite e tente novamente.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Tipos não suportados",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Esta operação não é suportada para itens do seguinte tipo: {types}.} other{Esta operação não é suportada para itens dos seguintes tipos: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Alguns arquivos na pasta de destino têm o mesmo nome.",
|
||||
|
@ -197,7 +192,6 @@
|
|||
"addShortcutDialogLabel": "Rótulo de atalho",
|
||||
"addShortcutButtonLabel": "ADICIONAR",
|
||||
|
||||
"noMatchingAppDialogTitle": "Nenhum aplicativo correspondente",
|
||||
"noMatchingAppDialogMessage": "Não há aplicativos que possam lidar com isso.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Mover esse item para a lixeira?} other{Mova estes {count} itens para a lixeira?}}",
|
||||
|
@ -226,7 +220,7 @@
|
|||
"renameEntrySetPageTitle": "Renomear",
|
||||
"renameEntrySetPagePatternFieldLabel": "Padrão de nomeação",
|
||||
"renameEntrySetPageInsertTooltip": "Inserir campo",
|
||||
"renameEntrySetPagePreview": "Visualizar",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Visualizar",
|
||||
|
||||
"renameProcessorCounter": "Contador",
|
||||
"renameProcessorName": "Nome",
|
||||
|
@ -259,8 +253,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "Usar essa localização",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "Descrição",
|
||||
|
||||
"editEntryRatingDialogTitle": "Avaliação",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "Remoção de metadados",
|
||||
|
@ -289,9 +281,9 @@
|
|||
"menuActionSlideshow": "Apresentação de slides",
|
||||
"menuActionStats": "Estatísticas",
|
||||
|
||||
"viewDialogTabSort": "Organizar",
|
||||
"viewDialogTabGroup": "Grupo",
|
||||
"viewDialogTabLayout": "Layout",
|
||||
"viewDialogSortSectionTitle": "Organizar",
|
||||
"viewDialogGroupSectionTitle": "Grupo",
|
||||
"viewDialogLayoutSectionTitle": "Layout",
|
||||
|
||||
"tileLayoutGrid": "Grid",
|
||||
"tileLayoutList": "Lista",
|
||||
|
@ -308,24 +300,24 @@
|
|||
"aboutLinkLicense": "Licença",
|
||||
"aboutLinkPolicy": "Política de Privacidade",
|
||||
|
||||
"aboutBug": "Relatório de erro",
|
||||
"aboutBugSectionTitle": "Relatório de erro",
|
||||
"aboutBugSaveLogInstruction": "Salvar registros de aplicativos em um arquivo",
|
||||
"aboutBugCopyInfoInstruction": "Copiar informações do sistema",
|
||||
"aboutBugCopyInfoButton": "Copiar",
|
||||
"aboutBugReportInstruction": "Relatório no GitHub com os logs e informações do sistema",
|
||||
"aboutBugReportButton": "Relatório",
|
||||
|
||||
"aboutCredits": "Créditos",
|
||||
"aboutCreditsSectionTitle": "Créditos",
|
||||
"aboutCreditsWorldAtlas1": "Este aplicativo usa um arquivo de TopoJSON",
|
||||
"aboutCreditsWorldAtlas2": "sob licença ISC.",
|
||||
"aboutCreditsTranslators": "Tradutores",
|
||||
"aboutTranslatorsSectionTitle": "Tradutores",
|
||||
|
||||
"aboutLicenses": "Licenças de código aberto",
|
||||
"aboutLicensesSectionTitle": "Licenças de código aberto",
|
||||
"aboutLicensesBanner": "Este aplicativo usa os seguintes pacotes e bibliotecas de código aberto.",
|
||||
"aboutLicensesAndroidLibraries": "Bibliotecas Android",
|
||||
"aboutLicensesFlutterPlugins": "Plug-ins Flutter",
|
||||
"aboutLicensesFlutterPackages": "Pacotes Flutter",
|
||||
"aboutLicensesDartPackages": "Pacotes Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Bibliotecas Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Plug-ins Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Pacotes Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Pacotes Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Mostrar todas as licenças",
|
||||
|
||||
"policyPageTitle": "Política de Privacidade",
|
||||
|
@ -345,11 +337,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Pesquisar títulos",
|
||||
|
||||
"collectionSortDate": "Por data",
|
||||
"collectionSortSize": "Por tamanho",
|
||||
"collectionSortName": "Por álbum e nome de arquivo",
|
||||
"collectionSortRating": "Por classificação",
|
||||
|
||||
"collectionGroupAlbum": "Por álbum",
|
||||
"collectionGroupMonth": "Por mês",
|
||||
"collectionGroupDay": "Por dia",
|
||||
|
@ -378,6 +365,8 @@
|
|||
"collectionSelectSectionTooltip": "Selecionar seção",
|
||||
"collectionDeselectSectionTooltip": "Desmarcar seção",
|
||||
|
||||
"drawerAboutButton": "Sobre",
|
||||
"drawerSettingsButton": "Configurações",
|
||||
"drawerCollectionAll": "Toda a coleção",
|
||||
"drawerCollectionFavourites": "Favoritos",
|
||||
"drawerCollectionImages": "Imagens",
|
||||
|
@ -387,10 +376,16 @@
|
|||
"drawerCollectionPanoramas": "Panoramas",
|
||||
"drawerCollectionRaws": "Fotos Raw",
|
||||
"drawerCollectionSphericalVideos": "360° Videos",
|
||||
"drawerAlbumPage": "Álbuns",
|
||||
"drawerCountryPage": "Países",
|
||||
"drawerTagPage": "Etiquetas",
|
||||
|
||||
"chipSortDate": "Por data",
|
||||
"chipSortName": "Por nome",
|
||||
"chipSortCount": "Por contagem de itens",
|
||||
"sortByDate": "Por data",
|
||||
"sortByName": "Por nome",
|
||||
"sortByItemCount": "Por contagem de itens",
|
||||
"sortBySize": "Por tamanho",
|
||||
"sortByAlbumFileName": "Por álbum e nome de arquivo",
|
||||
"sortByRating": "Por classificação",
|
||||
|
||||
"albumGroupTier": "Por nível",
|
||||
"albumGroupVolume": "Por volume de armazenamento",
|
||||
|
@ -422,13 +417,13 @@
|
|||
"binPageTitle": "Lixeira",
|
||||
|
||||
"searchCollectionFieldHint": "Pesquisar coleção",
|
||||
"searchSectionRecent": "Recente",
|
||||
"searchSectionDate": "Data",
|
||||
"searchSectionAlbums": "Álbuns",
|
||||
"searchSectionCountries": "Países",
|
||||
"searchSectionPlaces": "Locais",
|
||||
"searchSectionTags": "Etiquetas",
|
||||
"searchSectionRating": "Classificações",
|
||||
"searchRecentSectionTitle": "Recente",
|
||||
"searchDateSectionTitle": "Data",
|
||||
"searchAlbumsSectionTitle": "Álbuns",
|
||||
"searchCountriesSectionTitle": "Países",
|
||||
"searchPlacesSectionTitle": "Locais",
|
||||
"searchTagsSectionTitle": "Etiquetas",
|
||||
"searchRatingSectionTitle": "Classificações",
|
||||
|
||||
"settingsPageTitle": "Configurações",
|
||||
"settingsSystemDefault": "Sistema",
|
||||
|
@ -437,37 +432,40 @@
|
|||
"settingsSearchFieldLabel": "Pesquisar configuração",
|
||||
"settingsSearchEmpty": "Nenhuma configuração correspondente",
|
||||
"settingsActionExport": "Exportar",
|
||||
"settingsActionExportDialogTitle": "Exportar",
|
||||
"settingsActionImport": "Importar",
|
||||
"settingsActionImportDialogTitle": "Importar",
|
||||
|
||||
"appExportCovers": "Capas",
|
||||
"appExportFavourites": "Favoritos",
|
||||
"appExportSettings": "Configurações",
|
||||
|
||||
"settingsSectionNavigation": "Navegação",
|
||||
"settingsHome": "Início",
|
||||
"settingsNavigationSectionTitle": "Navegação",
|
||||
"settingsHomeTile": "Início",
|
||||
"settingsHomeDialogTitle": "Início",
|
||||
"settingsShowBottomNavigationBar": "Mostrar barra de navegação inferior",
|
||||
"settingsKeepScreenOnTile": "Manter a tela ligada",
|
||||
"settingsKeepScreenOnTitle": "Manter a tela ligada",
|
||||
"settingsKeepScreenOnDialogTitle": "Manter a tela ligada",
|
||||
"settingsDoubleBackExit": "Toque em “voltar” duas vezes para sair",
|
||||
|
||||
"settingsConfirmationDialogTile": "Caixas de diálogo de confirmação",
|
||||
"settingsConfirmationTile": "Caixas de diálogo de confirmação",
|
||||
"settingsConfirmationDialogTitle": "Caixas de diálogo de confirmação",
|
||||
"settingsConfirmationDialogDeleteItems": "Pergunte antes de excluir itens para sempre",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Pergunte antes de mover itens para a lixeira",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Pergunte antes de mover itens sem data de metadados",
|
||||
"settingsConfirmationBeforeDeleteItems": "Pergunte antes de excluir itens para sempre",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Pergunte antes de mover itens para a lixeira",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Pergunte antes de mover itens sem data de metadados",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Mostrar mensagem depois de mover itens para a lixeira",
|
||||
|
||||
"settingsNavigationDrawerTile": "Menu de navegação",
|
||||
"settingsNavigationDrawerEditorTitle": "Menu de navegação",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Menu de navegação",
|
||||
"settingsNavigationDrawerBanner": "Toque e segure para mover e reordenar os itens do menu.",
|
||||
"settingsNavigationDrawerTabTypes": "Tipos",
|
||||
"settingsNavigationDrawerTabAlbums": "Álbuns",
|
||||
"settingsNavigationDrawerTabPages": "Páginas",
|
||||
"settingsNavigationDrawerAddAlbum": "Adicionar álbum",
|
||||
|
||||
"settingsSectionThumbnails": "Miniaturas",
|
||||
"settingsThumbnailSectionTitle": "Miniaturas",
|
||||
"settingsThumbnailOverlayTile": "Sobreposição",
|
||||
"settingsThumbnailOverlayTitle": "Sobreposição",
|
||||
"settingsThumbnailOverlayPageTitle": "Sobreposição",
|
||||
"settingsThumbnailShowFavouriteIcon": "Mostrar ícone favorito",
|
||||
"settingsThumbnailShowTagIcon": "Mostrar ícone de etiqueta",
|
||||
"settingsThumbnailShowLocationIcon": "Mostrar ícone de localização",
|
||||
|
@ -477,13 +475,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "Mostrar duração do vídeo",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Ações rápidas",
|
||||
"settingsCollectionQuickActionEditorTitle": "Ações rápidas",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Ações rápidas",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Navegando",
|
||||
"settingsCollectionQuickActionTabSelecting": "Selecionando",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Toque e segure para mover os botões e selecionar quais ações são exibidas ao navegar pelos itens.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Toque e segure para mover os botões e selecionar quais ações são exibidas ao selecionar itens.",
|
||||
|
||||
"settingsSectionViewer": "Visualizador",
|
||||
"settingsViewerSectionTitle": "Visualizador",
|
||||
"settingsViewerGestureSideTapNext": "Toque nas bordas da tela para mostrar anterior/seguinte",
|
||||
"settingsViewerUseCutout": "Usar área de recorte",
|
||||
"settingsViewerMaximumBrightness": "Brilho máximo",
|
||||
|
@ -491,14 +489,14 @@
|
|||
"settingsImageBackground": "Plano de fundo da imagem",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Ações rápidas",
|
||||
"settingsViewerQuickActionEditorTitle": "Ações rápidas",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Ações rápidas",
|
||||
"settingsViewerQuickActionEditorBanner": "Toque e segure para mover os botões e selecionar quais ações são exibidas no visualizador.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Botões exibidos",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Botões disponíveis",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Botões exibidos",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Botões disponíveis",
|
||||
"settingsViewerQuickActionEmpty": "Sem botões",
|
||||
|
||||
"settingsViewerOverlayTile": "Sobreposição",
|
||||
"settingsViewerOverlayTitle": "Sobreposição",
|
||||
"settingsViewerOverlayPageTitle": "Sobreposição",
|
||||
"settingsViewerShowOverlayOnOpening": "Mostrar na abertura",
|
||||
"settingsViewerShowMinimap": "Mostrar minimapa",
|
||||
"settingsViewerShowInformation": "Mostrar informações",
|
||||
|
@ -508,30 +506,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Efeito de desfoque",
|
||||
|
||||
"settingsViewerSlideshowTile": "Apresentação de slides",
|
||||
"settingsViewerSlideshowTitle": "Apresentação de slides",
|
||||
"settingsViewerSlideshowPageTitle": "Apresentação de slides",
|
||||
"settingsSlideshowRepeat": "Repetir",
|
||||
"settingsSlideshowShuffle": "Embaralhar",
|
||||
"settingsSlideshowFillScreen": "Preencher tela",
|
||||
"settingsSlideshowTransitionTile": "Transição",
|
||||
"settingsSlideshowTransitionTitle": "Transição",
|
||||
"settingsSlideshowTransitionDialogTitle": "Transição",
|
||||
"settingsSlideshowIntervalTile": "Intervalo",
|
||||
"settingsSlideshowIntervalTitle": "Intervalo",
|
||||
"settingsSlideshowIntervalDialogTitle": "Intervalo",
|
||||
"settingsSlideshowVideoPlaybackTile": "Reprodução de vídeo",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Reprodução de vídeo",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Reprodução de vídeo",
|
||||
|
||||
"settingsVideoPageTitle": "Configurações de vídeo",
|
||||
"settingsSectionVideo": "Vídeo",
|
||||
"settingsVideoSectionTitle": "Vídeo",
|
||||
"settingsVideoShowVideos": "Mostrar vídeos",
|
||||
"settingsVideoEnableHardwareAcceleration": "Aceleraçao do hardware",
|
||||
"settingsVideoEnableAutoPlay": "Reprodução automática",
|
||||
"settingsVideoLoopModeTile": "Modo de loop",
|
||||
"settingsVideoLoopModeTitle": "Modo de loop",
|
||||
"settingsVideoLoopModeDialogTitle": "Modo de loop",
|
||||
|
||||
"settingsSubtitleThemeTile": "Legendas",
|
||||
"settingsSubtitleThemeTitle": "Legendas",
|
||||
"settingsSubtitleThemePageTitle": "Legendas",
|
||||
"settingsSubtitleThemeSample": "Esta é uma amostra.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Alinhamento de texto",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Alinhamento de Texto",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Alinhamento de Texto",
|
||||
"settingsSubtitleThemeTextSize": "Tamanho do texto",
|
||||
"settingsSubtitleThemeShowOutline": "Mostrar contorno e sombra",
|
||||
"settingsSubtitleThemeTextColor": "Cor do texto",
|
||||
|
@ -543,13 +541,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Direita",
|
||||
|
||||
"settingsVideoControlsTile": "Controles",
|
||||
"settingsVideoControlsTitle": "Controles",
|
||||
"settingsVideoControlsPageTitle": "Controles",
|
||||
"settingsVideoButtonsTile": "Botões",
|
||||
"settingsVideoButtonsTitle": "Botões",
|
||||
"settingsVideoButtonsDialogTitle": "Botões",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Toque duas vezes para reproduzir/pausar",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Toque duas vezes nas bordas da tela buscar para trás/para frente",
|
||||
|
||||
"settingsSectionPrivacy": "Privacidade",
|
||||
"settingsPrivacySectionTitle": "Privacidade",
|
||||
"settingsAllowInstalledAppAccess": "Permitir acesso ao inventário de aplicativos",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Usado para melhorar a exibição do álbum",
|
||||
"settingsAllowErrorReporting": "Permitir relatórios de erros anônimos",
|
||||
|
@ -558,52 +556,56 @@
|
|||
"settingsEnableBinSubtitle": "Manter itens excluídos por 30 dias",
|
||||
|
||||
"settingsHiddenItemsTile": "Itens ocultos",
|
||||
"settingsHiddenItemsTitle": "Itens ocultos",
|
||||
"settingsHiddenItemsPageTitle": "Itens ocultos",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Filtros ocultos",
|
||||
"settingsHiddenItemsTabFilters": "Filtros ocultos",
|
||||
"settingsHiddenFiltersBanner": "Fotos e vídeos que correspondem a filtros ocultos não aparecerão em sua coleção.",
|
||||
"settingsHiddenFiltersEmpty": "Sem filtros ocultos",
|
||||
|
||||
"settingsHiddenPathsTitle": "Caminhos Ocultos",
|
||||
"settingsHiddenItemsTabPaths": "Caminhos Ocultos",
|
||||
"settingsHiddenPathsBanner": "Fotos e vídeos nessas pastas, ou em qualquer uma de suas subpastas, não aparecerão em sua coleção.",
|
||||
"addPathTooltip": "Adicionar caminho",
|
||||
|
||||
"settingsStorageAccessTile": "Acesso ao armazenamento",
|
||||
"settingsStorageAccessTitle": "Acesso ao armazenamento",
|
||||
"settingsStorageAccessPageTitle": "Acesso ao armazenamento",
|
||||
"settingsStorageAccessBanner": "Alguns diretórios exigem uma concessão de acesso explícito para modificar arquivos neles. Você pode revisar aqui os diretórios aos quais você deu acesso anteriormente.",
|
||||
"settingsStorageAccessEmpty": "Sem concessões de acesso",
|
||||
"settingsStorageAccessRevokeTooltip": "Revogar",
|
||||
|
||||
"settingsSectionAccessibility": "Acessibilidade",
|
||||
"settingsAccessibilitySectionTitle": "Acessibilidade",
|
||||
"settingsRemoveAnimationsTile": "Remover animações",
|
||||
"settingsRemoveAnimationsTitle": "Remover Animações",
|
||||
"settingsRemoveAnimationsDialogTitle": "Remover Animações",
|
||||
"settingsTimeToTakeActionTile": "Tempo para executar uma ação",
|
||||
"settingsTimeToTakeActionTitle": "Tempo para executar uma ação",
|
||||
"settingsTimeToTakeActionDialogTitle": "Tempo para executar uma ação",
|
||||
|
||||
"settingsSectionDisplay": "Tela",
|
||||
"settingsThemeBrightness": "Tema",
|
||||
"settingsDisplaySectionTitle": "Tela",
|
||||
"settingsThemeBrightnessTile": "Tema",
|
||||
"settingsThemeBrightnessDialogTitle": "Tema",
|
||||
"settingsThemeColorHighlights": "Destaques de cores",
|
||||
"settingsThemeEnableDynamicColor": "Cor dinâmica",
|
||||
"settingsDisplayRefreshRateModeTile": "Taxa de atualização de exibição",
|
||||
"settingsDisplayRefreshRateModeTitle": "Taxa de atualização",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Taxa de atualização",
|
||||
|
||||
"settingsSectionLanguage": "Idioma e Formatos",
|
||||
"settingsLanguage": "Língua",
|
||||
"settingsLanguageSectionTitle": "Idioma e Formatos",
|
||||
"settingsLanguageTile": "Língua",
|
||||
"settingsLanguagePageTitle": "Língua",
|
||||
"settingsCoordinateFormatTile": "Formato de coordenadas",
|
||||
"settingsCoordinateFormatTitle": "Formato de coordenadas",
|
||||
"settingsCoordinateFormatDialogTitle": "Formato de coordenadas",
|
||||
"settingsUnitSystemTile": "Unidades",
|
||||
"settingsUnitSystemTitle": "Unidades",
|
||||
"settingsUnitSystemDialogTitle": "Unidades",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Protetor de tela",
|
||||
|
||||
"settingsWidgetPageTitle": "Porta-retratos",
|
||||
"settingsWidgetShowOutline": "Contorno",
|
||||
|
||||
"settingsCollectionTile": "Coleção",
|
||||
|
||||
"statsPageTitle": "Estatísticas",
|
||||
"statsWithGps": "{count, plural, =1{1 item com localização} other{{count} itens com localização}}",
|
||||
"statsTopCountries": "Principais Países",
|
||||
"statsTopPlaces": "Principais Lugares",
|
||||
"statsTopTags": "Principais Etiquetas",
|
||||
"statsTopCountriesSectionTitle": "Principais Países",
|
||||
"statsTopPlacesSectionTitle": "Principais Lugares",
|
||||
"statsTopTagsSectionTitle": "Principais Etiquetas",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "ABRIR PANORAMA",
|
||||
"viewerSetWallpaperButtonLabel": "DEFINIR PAPEL DE PAREDE",
|
||||
|
@ -614,6 +616,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Voltar ao visualizador",
|
||||
|
||||
"viewerInfoUnknown": "desconhecido",
|
||||
"viewerInfoLabelDescription": "Descrição",
|
||||
"viewerInfoLabelTitle": "Título",
|
||||
"viewerInfoLabelDate": "Data",
|
||||
"viewerInfoLabelResolution": "Resolução",
|
||||
|
@ -625,7 +628,7 @@
|
|||
"viewerInfoLabelCoordinates": "Coordenadas",
|
||||
"viewerInfoLabelAddress": "Endereço",
|
||||
|
||||
"mapStyleTitle": "Estilo do mapa",
|
||||
"mapStyleDialogTitle": "Estilo do mapa",
|
||||
"mapStyleTooltip": "Selecione o estilo do mapa",
|
||||
"mapZoomInTooltip": "Mais zoom",
|
||||
"mapZoomOutTooltip": "Reduzir o zoom",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Удалить",
|
||||
"resetTooltip": "Сбросить",
|
||||
"saveTooltip": "Сохранить",
|
||||
"pickTooltip": "Выбрать",
|
||||
|
||||
"doubleBackExitMessage": "Нажмите «Назад» еще раз, чтобы выйти.",
|
||||
"doNotAskAgain": "Больше не спрашивать",
|
||||
|
@ -87,15 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "Изменить дату и время",
|
||||
"entryInfoActionEditLocation": "Изменить местоположение",
|
||||
"entryInfoActionEditTitleDescription": "Изменить название & описание",
|
||||
"entryInfoActionEditRating": "Изменить рейтинг",
|
||||
"entryInfoActionEditTags": "Изменить теги",
|
||||
"entryInfoActionRemoveMetadata": "Удалить метаданные",
|
||||
|
||||
"filterBinLabel": "Корзина",
|
||||
"filterFavouriteLabel": "Избранное",
|
||||
"filterLocationEmptyLabel": "Без местоположения",
|
||||
"filterTagEmptyLabel": "Без тегов",
|
||||
"filterRatingUnratedLabel": "Без рейтинга",
|
||||
"filterNoDateLabel": "Без даты",
|
||||
"filterNoLocationLabel": "Без местоположения",
|
||||
"filterNoRatingLabel": "Без рейтинга",
|
||||
"filterNoTagLabel": "Без тегов",
|
||||
"filterNoTitleLabel": "Без названия",
|
||||
"filterOnThisDayLabel": "В этот день",
|
||||
"filterRecentlyAddedLabel": "Недавно добавленные",
|
||||
"filterRatingRejectedLabel": "Отклонённое",
|
||||
"filterTypeAnimatedLabel": "GIF",
|
||||
"filterTypeMotionPhotoLabel": "Живое фото",
|
||||
|
@ -176,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD-карта",
|
||||
"rootDirectoryDescription": "корневой каталог",
|
||||
"otherDirectoryDescription": "каталог «{name}»",
|
||||
"storageAccessDialogTitle": "Доступ к хранилищу",
|
||||
"storageAccessDialogMessage": "Пожалуйста, выберите {directory} на накопителе «{volume}» на следующем экране, чтобы предоставить этому приложению доступ к нему.",
|
||||
"restrictedAccessDialogTitle": "Ограниченный доступ",
|
||||
"restrictedAccessDialogMessage": "Этому приложению не разрешается изменять файлы в каталоге {directory} накопителя «{volume}».\n\nПожалуйста, используйте предустановленный файловый менеджер или галерею, чтобы переместить объекты в другой каталог.",
|
||||
"notEnoughSpaceDialogTitle": "Недостаточно свободного места.",
|
||||
"notEnoughSpaceDialogMessage": "Для завершения этой операции требуется {neededSize} свободного места на «{volume}», но осталось только {freeSize}.",
|
||||
"missingSystemFilePickerDialogTitle": "Отсутствует системное приложение выбора файлов",
|
||||
"missingSystemFilePickerDialogMessage": "Системное приложение выбора файлов отсутствует или отключено. Пожалуйста, включите его и повторите попытку.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Неподдерживаемые форматы",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Эта операция не поддерживается для объектов следующего формата: {types}.} other{Эта операция не поддерживается для объектов следующих форматов: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Некоторые файлы в папке назначения имеют одно и то же имя.",
|
||||
|
@ -194,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "Название ярлыка",
|
||||
"addShortcutButtonLabel": "СОЗДАТЬ",
|
||||
|
||||
"noMatchingAppDialogTitle": "Нет подходящего приложения",
|
||||
"noMatchingAppDialogMessage": "Нет приложений, которые могли бы с этим справиться.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Переместить этот объект в корзину?} few{Переместить эти {count} объекта в корзину?} other{Переместить эти {count} объектов в корзину?}}",
|
||||
|
@ -223,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "Переименовать",
|
||||
"renameEntrySetPagePatternFieldLabel": "Образец наименования",
|
||||
"renameEntrySetPageInsertTooltip": "Вставить поле",
|
||||
"renameEntrySetPagePreview": "Предпросмотр",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Предпросмотр",
|
||||
|
||||
"renameProcessorCounter": "Счётчик",
|
||||
"renameProcessorName": "Название",
|
||||
|
@ -284,9 +284,10 @@
|
|||
"menuActionSlideshow": "Слайд-шоу",
|
||||
"menuActionStats": "Статистика",
|
||||
|
||||
"viewDialogTabSort": "Сортировка",
|
||||
"viewDialogTabGroup": "Группировка",
|
||||
"viewDialogTabLayout": "Макет",
|
||||
"viewDialogSortSectionTitle": "Сортировка",
|
||||
"viewDialogGroupSectionTitle": "Группировка",
|
||||
"viewDialogLayoutSectionTitle": "Макет",
|
||||
"viewDialogReverseSortOrder": "Обратный порядок сортировки",
|
||||
|
||||
"tileLayoutGrid": "Сетка",
|
||||
"tileLayoutList": "Список",
|
||||
|
@ -303,24 +304,24 @@
|
|||
"aboutLinkLicense": "Лицензия",
|
||||
"aboutLinkPolicy": "Политика конфиденциальности",
|
||||
|
||||
"aboutBug": "Отчет об ошибке",
|
||||
"aboutBugSectionTitle": "Отчет об ошибке",
|
||||
"aboutBugSaveLogInstruction": "Сохраните логи приложения в файл",
|
||||
"aboutBugCopyInfoInstruction": "Скопируйте системную информацию",
|
||||
"aboutBugCopyInfoButton": "Скопировать",
|
||||
"aboutBugReportInstruction": "Отправьте отчёт об ошибке на GitHub вместе с логами и системной информацией",
|
||||
"aboutBugReportButton": "Отправить",
|
||||
|
||||
"aboutCredits": "Благодарности",
|
||||
"aboutCreditsSectionTitle": "Благодарности",
|
||||
"aboutCreditsWorldAtlas1": "Это приложение использует файл TopoJSON из",
|
||||
"aboutCreditsWorldAtlas2": "под лицензией ISC.",
|
||||
"aboutCreditsTranslators": "Переводчики",
|
||||
"aboutTranslatorsSectionTitle": "Переводчики",
|
||||
|
||||
"aboutLicenses": "Лицензии с открытым исходным кодом",
|
||||
"aboutLicensesSectionTitle": "Лицензии с открытым исходным кодом",
|
||||
"aboutLicensesBanner": "Это приложение использует следующие пакеты и библиотеки с открытым исходным кодом.",
|
||||
"aboutLicensesAndroidLibraries": "Библиотеки Android",
|
||||
"aboutLicensesFlutterPlugins": "Плагины Flutter",
|
||||
"aboutLicensesFlutterPackages": "Пакеты Flutter",
|
||||
"aboutLicensesDartPackages": "Пакеты Dart",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Библиотеки Android",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Плагины Flutter",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Пакеты Flutter",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Пакеты Dart",
|
||||
"aboutLicensesShowAllButtonLabel": "Показать все лицензии",
|
||||
|
||||
"policyPageTitle": "Политика конфиденциальности",
|
||||
|
@ -340,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Поиск заголовков",
|
||||
|
||||
"collectionSortDate": "По дате",
|
||||
"collectionSortSize": "По размеру",
|
||||
"collectionSortName": "По имени альбома и файла",
|
||||
"collectionSortRating": "По рейтингу",
|
||||
|
||||
"collectionGroupAlbum": "По альбому",
|
||||
"collectionGroupMonth": "По месяцу",
|
||||
"collectionGroupDay": "По дню",
|
||||
|
@ -373,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "Выбрать раздел",
|
||||
"collectionDeselectSectionTooltip": "Снять выбор с раздела",
|
||||
|
||||
"drawerAboutButton": "О нас",
|
||||
"drawerSettingsButton": "Настройки",
|
||||
"drawerCollectionAll": "Вся коллекция",
|
||||
"drawerCollectionFavourites": "Избранное",
|
||||
"drawerCollectionImages": "Изображения",
|
||||
|
@ -382,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "Панорамы",
|
||||
"drawerCollectionRaws": "RAW",
|
||||
"drawerCollectionSphericalVideos": "360° видео",
|
||||
"drawerAlbumPage": "Альбомы",
|
||||
"drawerCountryPage": "Страны",
|
||||
"drawerTagPage": "Теги",
|
||||
|
||||
"chipSortDate": "По дате",
|
||||
"chipSortName": "По названию",
|
||||
"chipSortCount": "По количеству объектов",
|
||||
"sortByDate": "По дате",
|
||||
"sortByName": "По названию",
|
||||
"sortByItemCount": "По количеству объектов",
|
||||
"sortBySize": "По размеру",
|
||||
"sortByAlbumFileName": "По имени альбома и файла",
|
||||
"sortByRating": "По рейтингу",
|
||||
|
||||
"sortOrderNewestFirst": "Сначала новые",
|
||||
"sortOrderOldestFirst": "Сначала старые",
|
||||
"sortOrderAtoZ": "От А до Я",
|
||||
"sortOrderZtoA": "От Я до А",
|
||||
"sortOrderHighestFirst": "Сначала с высоким",
|
||||
"sortOrderLowestFirst": "Сначала с низким",
|
||||
"sortOrderLargestFirst": "Сначала большие",
|
||||
"sortOrderSmallestFirst": "Сначала маленькие",
|
||||
|
||||
"albumGroupTier": "По уровню",
|
||||
"albumGroupVolume": "По накопителю",
|
||||
|
@ -417,13 +430,14 @@
|
|||
"binPageTitle": "Корзина",
|
||||
|
||||
"searchCollectionFieldHint": "Поиск по коллекции",
|
||||
"searchSectionRecent": "Недавние",
|
||||
"searchSectionDate": "Дата",
|
||||
"searchSectionAlbums": "Альбомы",
|
||||
"searchSectionCountries": "Страны",
|
||||
"searchSectionPlaces": "Локации",
|
||||
"searchSectionTags": "Теги",
|
||||
"searchSectionRating": "Рейтинги",
|
||||
"searchRecentSectionTitle": "Недавние",
|
||||
"searchDateSectionTitle": "Дата",
|
||||
"searchAlbumsSectionTitle": "Альбомы",
|
||||
"searchCountriesSectionTitle": "Страны",
|
||||
"searchPlacesSectionTitle": "Локации",
|
||||
"searchTagsSectionTitle": "Теги",
|
||||
"searchRatingSectionTitle": "Рейтинги",
|
||||
"searchMetadataSectionTitle": "Метаданные",
|
||||
|
||||
"settingsPageTitle": "Настройки",
|
||||
"settingsSystemDefault": "Система",
|
||||
|
@ -432,36 +446,40 @@
|
|||
"settingsSearchFieldLabel": "Поиск настроек",
|
||||
"settingsSearchEmpty": "Нет соответствующих настроек",
|
||||
"settingsActionExport": "Экспорт",
|
||||
"settingsActionExportDialogTitle": "Экспорт",
|
||||
"settingsActionImport": "Импорт",
|
||||
"settingsActionImportDialogTitle": "Импорт",
|
||||
|
||||
"appExportCovers": "Обложки",
|
||||
"appExportFavourites": "Избранное",
|
||||
"appExportSettings": "Настройки",
|
||||
|
||||
"settingsSectionNavigation": "Навигация",
|
||||
"settingsHome": "Домашний каталог",
|
||||
"settingsNavigationSectionTitle": "Навигация",
|
||||
"settingsHomeTile": "Домашний каталог",
|
||||
"settingsHomeDialogTitle": "Домашний каталог",
|
||||
"settingsShowBottomNavigationBar": "Показать нижнюю панель навигации",
|
||||
"settingsKeepScreenOnTile": "Держать экран включенным",
|
||||
"settingsKeepScreenOnTitle": "Держать экран включенным",
|
||||
"settingsKeepScreenOnDialogTitle": "Держать экран включенным",
|
||||
"settingsDoubleBackExit": "Дважды нажмите «Назад», чтобы выйти",
|
||||
|
||||
"settingsConfirmationDialogTile": "Диалоги подтверждения",
|
||||
"settingsConfirmationTile": "Диалоги подтверждения",
|
||||
"settingsConfirmationDialogTitle": "Диалоги подтверждения",
|
||||
"settingsConfirmationDialogDeleteItems": "Спросить, прежде чем удалять объекты навсегда",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Спросить, прежде чем перемещать объекты в корзину",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Спросить, прежде чем перемещать объекты без даты в метаданных",
|
||||
"settingsConfirmationBeforeDeleteItems": "Спросить, прежде чем удалять объекты навсегда",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Спросить, прежде чем перемещать объекты в корзину",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Спросить, прежде чем перемещать объекты без даты в метаданных",
|
||||
"settingsConfirmationAfterMoveToBinItems": "Показывать сообщение после перемещения в корзину",
|
||||
|
||||
"settingsNavigationDrawerTile": "Навигационное меню",
|
||||
"settingsNavigationDrawerEditorTitle": "Навигационное меню",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Навигационное меню",
|
||||
"settingsNavigationDrawerBanner": "Нажмите и удерживайте, чтобы переместить и изменить порядок пунктов меню.",
|
||||
"settingsNavigationDrawerTabTypes": "Типы",
|
||||
"settingsNavigationDrawerTabAlbums": "Альбомы",
|
||||
"settingsNavigationDrawerTabPages": "Страницы",
|
||||
"settingsNavigationDrawerAddAlbum": "Добавить альбом",
|
||||
|
||||
"settingsSectionThumbnails": "Эскизы",
|
||||
"settingsThumbnailSectionTitle": "Эскизы",
|
||||
"settingsThumbnailOverlayTile": "Наложение",
|
||||
"settingsThumbnailOverlayTitle": "Наложение",
|
||||
"settingsThumbnailOverlayPageTitle": "Наложение",
|
||||
"settingsThumbnailShowFavouriteIcon": "Показать значок избранного",
|
||||
"settingsThumbnailShowTagIcon": "Показать значок тега",
|
||||
"settingsThumbnailShowLocationIcon": "Показать значок местоположения",
|
||||
|
@ -471,27 +489,28 @@
|
|||
"settingsThumbnailShowVideoDuration": "Показать продолжительность видео",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Быстрые действия",
|
||||
"settingsCollectionQuickActionEditorTitle": "Быстрые действия",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Быстрые действия",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Просмотр",
|
||||
"settingsCollectionQuickActionTabSelecting": "Выбор",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Нажмите и удерживайте для перемещения кнопок и выбора действий, отображаемых при просмотре объектов.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Нажмите и удерживайте, чтобы переместить кнопки и выбрать, какие действия будут отображаться при выборе элементов.",
|
||||
|
||||
"settingsSectionViewer": "Просмотрщик",
|
||||
"settingsViewerSectionTitle": "Просмотрщик",
|
||||
"settingsViewerGestureSideTapNext": "Нажатие на край экрана для перехода назад/вперед",
|
||||
"settingsViewerUseCutout": "Использовать область выреза",
|
||||
"settingsViewerMaximumBrightness": "Максимальная яркость",
|
||||
"settingsMotionPhotoAutoPlay": "Автовоспроизведение «живых фото»",
|
||||
"settingsImageBackground": "Фон изображения",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Быстрые действия",
|
||||
"settingsViewerQuickActionEditorTitle": "Быстрые действия",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Быстрые действия",
|
||||
"settingsViewerQuickActionEditorBanner": "Нажмите и удерживайте для перемещения кнопок и выбора действий, отображаемых в просмотрщике.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Отображаемые кнопки",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Доступные кнопки",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Отображаемые кнопки",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Доступные кнопки",
|
||||
"settingsViewerQuickActionEmpty": "Нет кнопок",
|
||||
|
||||
"settingsViewerOverlayTile": "Наложение",
|
||||
"settingsViewerOverlayTitle": "Наложение",
|
||||
"settingsViewerOverlayPageTitle": "Наложение",
|
||||
"settingsViewerShowOverlayOnOpening": "Показать наложение при открытии",
|
||||
"settingsViewerShowMinimap": "Показать миникарту",
|
||||
"settingsViewerShowInformation": "Показать информацию",
|
||||
|
@ -501,29 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Наложение эффекта размытия",
|
||||
|
||||
"settingsViewerSlideshowTile": "Слайд-шоу",
|
||||
"settingsViewerSlideshowTitle": "Слайд-шоу",
|
||||
"settingsViewerSlideshowPageTitle": "Слайд-шоу",
|
||||
"settingsSlideshowRepeat": "Повтор",
|
||||
"settingsSlideshowShuffle": "Вперемешку",
|
||||
"settingsSlideshowFillScreen": "Полный экран",
|
||||
"settingsSlideshowTransitionTile": "Эффект перехода",
|
||||
"settingsSlideshowTransitionTitle": "Эффект Перехода",
|
||||
"settingsSlideshowTransitionDialogTitle": "Эффект Перехода",
|
||||
"settingsSlideshowIntervalTile": "Интервал",
|
||||
"settingsSlideshowIntervalTitle": "Интервал",
|
||||
"settingsSlideshowIntervalDialogTitle": "Интервал",
|
||||
"settingsSlideshowVideoPlaybackTile": "Проигрывание видео",
|
||||
"settingsSlideshowVideoPlaybackTitle": "Проигрывание Видео",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "Проигрывание Видео",
|
||||
|
||||
"settingsVideoPageTitle": "Настройки видео",
|
||||
"settingsSectionVideo": "Видео",
|
||||
"settingsVideoSectionTitle": "Видео",
|
||||
"settingsVideoShowVideos": "Показать видео",
|
||||
"settingsVideoEnableHardwareAcceleration": "Аппаратное ускорение",
|
||||
"settingsVideoEnableAutoPlay": "Автозапуск воспроизведения",
|
||||
"settingsVideoLoopModeTile": "Циклический режим",
|
||||
"settingsVideoLoopModeTitle": "Цикличный режим",
|
||||
"settingsVideoLoopModeDialogTitle": "Цикличный режим",
|
||||
|
||||
"settingsSubtitleThemeTile": "Субтитры",
|
||||
"settingsSubtitleThemeTitle": "Субтитры",
|
||||
"settingsSubtitleThemePageTitle": "Субтитры",
|
||||
"settingsSubtitleThemeSample": "Образец.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Выравнивание текста",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Выравнивание текста",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Выравнивание текста",
|
||||
"settingsSubtitleThemeTextSize": "Размер текста",
|
||||
"settingsSubtitleThemeShowOutline": "Показать контур и тень",
|
||||
"settingsSubtitleThemeTextColor": "Цвет текста",
|
||||
|
@ -535,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "По правой стороне",
|
||||
|
||||
"settingsVideoControlsTile": "Элементы управления",
|
||||
"settingsVideoControlsTitle": "Элементы управления",
|
||||
"settingsVideoControlsPageTitle": "Элементы управления",
|
||||
"settingsVideoButtonsTile": "Кнопки",
|
||||
"settingsVideoButtonsTitle": "Кнопки",
|
||||
"settingsVideoButtonsDialogTitle": "Кнопки",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Двойное нажатие для воспроизведения/паузы",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Двойное нажатие на края экрана для перехода назад/вперёд",
|
||||
|
||||
"settingsSectionPrivacy": "Конфиденциальность",
|
||||
"settingsPrivacySectionTitle": "Конфиденциальность",
|
||||
"settingsAllowInstalledAppAccess": "Разрешить доступ к библиотеке приложения",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Используется для улучшения отображения альбомов",
|
||||
"settingsAllowErrorReporting": "Разрешить анонимную отправку логов",
|
||||
|
@ -550,49 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "Хранить удалённые объекты в течение 30 дней",
|
||||
|
||||
"settingsHiddenItemsTile": "Скрытые объекты",
|
||||
"settingsHiddenItemsTitle": "Скрытые объекты",
|
||||
"settingsHiddenItemsPageTitle": "Скрытые объекты",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Скрытые фильтры",
|
||||
"settingsHiddenItemsTabFilters": "Скрытые фильтры",
|
||||
"settingsHiddenFiltersBanner": "Фотографии и видео, соответствующие скрытым фильтрам, не появятся в вашей коллекции.",
|
||||
"settingsHiddenFiltersEmpty": "Нет скрытых фильтров",
|
||||
|
||||
"settingsHiddenPathsTitle": "Скрытые каталоги",
|
||||
"settingsHiddenItemsTabPaths": "Скрытые каталоги",
|
||||
"settingsHiddenPathsBanner": "Фотографии и видео в этих каталогах или любых их вложенных каталогах не будут отображаться в вашей коллекции.",
|
||||
"addPathTooltip": "Добавить каталог",
|
||||
|
||||
"settingsStorageAccessTile": "Доступ к хранилищу",
|
||||
"settingsStorageAccessTitle": "Доступ к хранилищу",
|
||||
"settingsStorageAccessPageTitle": "Доступ к хранилищу",
|
||||
"settingsStorageAccessBanner": "Некоторые каталоги требуют обязательного предоставления доступа для изменения файлов в них. Вы можете просмотреть здесь каталоги, к которым вы ранее предоставили доступ.",
|
||||
"settingsStorageAccessEmpty": "Нет прав доступа",
|
||||
"settingsStorageAccessRevokeTooltip": "Отменить",
|
||||
|
||||
"settingsSectionAccessibility": "Специальные возможности",
|
||||
"settingsAccessibilitySectionTitle": "Специальные возможности",
|
||||
"settingsRemoveAnimationsTile": "Удалить анимацию",
|
||||
"settingsRemoveAnimationsTitle": "Удалить анимацию",
|
||||
"settingsRemoveAnimationsDialogTitle": "Удалить анимацию",
|
||||
"settingsTimeToTakeActionTile": "Время на выполнение действия",
|
||||
"settingsTimeToTakeActionTitle": "Время на выполнение действия",
|
||||
"settingsTimeToTakeActionDialogTitle": "Время на выполнение действия",
|
||||
|
||||
"settingsSectionDisplay": "Отображение",
|
||||
"settingsThemeBrightness": "Тема",
|
||||
"settingsDisplaySectionTitle": "Отображение",
|
||||
"settingsThemeBrightnessTile": "Тема",
|
||||
"settingsThemeBrightnessDialogTitle": "Тема",
|
||||
"settingsThemeColorHighlights": "Цветовые акценты",
|
||||
"settingsThemeEnableDynamicColor": "Динамический цвет",
|
||||
"settingsDisplayRefreshRateModeTile": "Частота обновления экрана",
|
||||
"settingsDisplayRefreshRateModeTitle": "Частота обновления",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Частота обновления",
|
||||
|
||||
"settingsSectionLanguage": "Язык и форматы",
|
||||
"settingsLanguage": "Язык",
|
||||
"settingsLanguageSectionTitle": "Язык и форматы",
|
||||
"settingsLanguageTile": "Язык",
|
||||
"settingsLanguagePageTitle": "Язык",
|
||||
"settingsCoordinateFormatTile": "Формат координат",
|
||||
"settingsCoordinateFormatTitle": "Формат координат",
|
||||
"settingsCoordinateFormatDialogTitle": "Формат координат",
|
||||
"settingsUnitSystemTile": "Единицы измерения",
|
||||
"settingsUnitSystemTitle": "Единицы измерения",
|
||||
"settingsUnitSystemDialogTitle": "Единицы измерения",
|
||||
|
||||
"settingsScreenSaverPageTitle": "Скринсейвер",
|
||||
|
||||
"settingsWidgetPageTitle": "Фоторамка",
|
||||
"settingsWidgetShowOutline": "Выделение",
|
||||
|
||||
"settingsCollectionTile": "Коллекция",
|
||||
|
||||
"statsPageTitle": "Статистика",
|
||||
"statsWithGps": "{count, plural, =1{1 объект с местоположением} few{{count} объекта с местоположением} other{{count} объектов с местоположением}}",
|
||||
"statsTopCountries": "Топ стран",
|
||||
"statsTopPlaces": "Топ локаций",
|
||||
"statsTopTags": "Топ тегов",
|
||||
"statsTopCountriesSectionTitle": "Топ стран",
|
||||
"statsTopPlacesSectionTitle": "Топ локаций",
|
||||
"statsTopTagsSectionTitle": "Топ тегов",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "ОТКРЫТЬ ПАНОРАМУ",
|
||||
"viewerSetWallpaperButtonLabel": "УСТАНОВИТЬ КАК ОБОИ",
|
||||
|
@ -603,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "Вернуться к просмотрщику",
|
||||
|
||||
"viewerInfoUnknown": "неизвестный",
|
||||
"viewerInfoLabelDescription": "Описание",
|
||||
"viewerInfoLabelTitle": "Название",
|
||||
"viewerInfoLabelDate": "Дата",
|
||||
"viewerInfoLabelResolution": "Разрешение",
|
||||
|
@ -614,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "Координаты",
|
||||
"viewerInfoLabelAddress": "Адрес",
|
||||
|
||||
"mapStyleTitle": "Стиль карты",
|
||||
"mapStyleDialogTitle": "Стиль карты",
|
||||
"mapStyleTooltip": "Выберите стиль карты",
|
||||
"mapZoomInTooltip": "Увеличить",
|
||||
"mapZoomOutTooltip": "Уменьшить",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "Kaldır",
|
||||
"resetTooltip": "Sıfırla",
|
||||
"saveTooltip": "Kaydet",
|
||||
"pickTooltip": "Seç",
|
||||
|
||||
"doubleBackExitMessage": "Çıkmak için tekrar “geri”, düğmesine dokunun.",
|
||||
"doNotAskAgain": "Bir daha sorma",
|
||||
|
@ -90,9 +91,9 @@
|
|||
|
||||
"filterBinLabel": "Geri dönüşüm kutusu",
|
||||
"filterFavouriteLabel": "Favori",
|
||||
"filterLocationEmptyLabel": "Konumsuz",
|
||||
"filterTagEmptyLabel": "Etiketsiz",
|
||||
"filterRatingUnratedLabel": "Derecelendirilmemiş",
|
||||
"filterNoLocationLabel": "Konumsuz",
|
||||
"filterNoRatingLabel": "Derecelendirilmemiş",
|
||||
"filterNoTagLabel": "Etiketsiz",
|
||||
"filterRatingRejectedLabel": "Reddedilmiş",
|
||||
"filterTypeAnimatedLabel": "Hareketli",
|
||||
"filterTypeMotionPhotoLabel": "Hareketli Fotoğraf",
|
||||
|
@ -161,20 +162,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD kart",
|
||||
"rootDirectoryDescription": "kök dizin",
|
||||
"otherDirectoryDescription": "“{name}” dizin",
|
||||
|
||||
"storageAccessDialogTitle": "Depolama Erişimi",
|
||||
"storageAccessDialogMessage": "Bu uygulamaya erişim sağlamak için lütfen bir sonraki ekranda “{volume}” öğesinin {directory} dizinini seçin.",
|
||||
|
||||
"restrictedAccessDialogTitle": "Kısıtlı Erişim",
|
||||
"restrictedAccessDialogMessage": "Bu uygulamanın “{volume}” içindeki {directory} dosyaları değiştirmesine izin verilmiyor.\n\nÖğeleri başka bir dizine taşımak için lütfen önceden yüklenmiş bir dosya yöneticisi veya galeri uygulaması kullanın.",
|
||||
|
||||
"notEnoughSpaceDialogTitle": "Yeterli Yer Yok",
|
||||
"notEnoughSpaceDialogMessage": "Bu işlemin tamamlanması için “{volume}” üzerinde {needSize} boş alana ihtiyaç var, ancak yalnızca {freeSize} kaldı.",
|
||||
|
||||
"missingSystemFilePickerDialogTitle": "Eksik Sistem Dosya Seçicisi",
|
||||
"missingSystemFilePickerDialogMessage": "Sistem dosya seçicisi eksik veya devre dışı. Lütfen etkinleştirin ve tekrar deneyin.",
|
||||
|
||||
"unsupportedTypeDialogTitle": "Desteklenmeyen Türler",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, =1{Bu işlem aşağıdaki türdeki öğeler için desteklenmez: {types}.} other{Bu işlem aşağıdaki türlerdeki öğeler için desteklenmez: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "Hedef klasördeki bazı dosyalar aynı ada sahip.",
|
||||
|
@ -183,7 +175,6 @@
|
|||
"addShortcutDialogLabel": "Kısayol etiketi",
|
||||
"addShortcutButtonLabel": "EKLE",
|
||||
|
||||
"noMatchingAppDialogTitle": "Eşleşen Uygulama Yok",
|
||||
"noMatchingAppDialogMessage": "Bununla ilgilenebilecek bir uygulama yok.",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{Bu öğe geri dönüşüm kutusuna taşınsın mı?} other{Bu {count} madde geri dönüşüm kutusuna atılsın mı?}}",
|
||||
|
@ -215,7 +206,7 @@
|
|||
"renameEntrySetPageTitle": "Yeniden adlandır",
|
||||
"renameEntrySetPagePatternFieldLabel": "İsimlendirme şekli",
|
||||
"renameEntrySetPageInsertTooltip": "Alan ekle",
|
||||
"renameEntrySetPagePreview": "Önizleme",
|
||||
"renameEntrySetPagePreviewSectionTitle": "Önizleme",
|
||||
|
||||
"renameProcessorCounter": "Sayaç",
|
||||
"renameProcessorName": "Ad",
|
||||
|
@ -276,9 +267,9 @@
|
|||
"menuActionMap": "Harita",
|
||||
"menuActionStats": "İstatistikler",
|
||||
|
||||
"viewDialogTabSort": "Sırala",
|
||||
"viewDialogTabGroup": "Grup",
|
||||
"viewDialogTabLayout": "Düzen",
|
||||
"viewDialogSortSectionTitle": "Sırala",
|
||||
"viewDialogGroupSectionTitle": "Grup",
|
||||
"viewDialogLayoutSectionTitle": "Düzen",
|
||||
|
||||
"tileLayoutGrid": "Izgara",
|
||||
"tileLayoutList": "Liste",
|
||||
|
@ -295,24 +286,24 @@
|
|||
"aboutLinkLicense": "Lisans",
|
||||
"aboutLinkPolicy": "Gizlilik Politikası",
|
||||
|
||||
"aboutBug": "Hata Bildirimi",
|
||||
"aboutBugSectionTitle": "Hata Bildirimi",
|
||||
"aboutBugSaveLogInstruction": "Uygulama günlüklerini bir dosyaya kaydet",
|
||||
"aboutBugCopyInfoInstruction": "Sistem bilgilerini kopyala",
|
||||
"aboutBugCopyInfoButton": "Kopyala",
|
||||
"aboutBugReportInstruction": "GitHub'da günlükleri ve sistem bilgilerini içeren bir rapor oluştur",
|
||||
"aboutBugReportButton": "Raporla",
|
||||
|
||||
"aboutCredits": "Kredi",
|
||||
"aboutCreditsSectionTitle": "Kredi",
|
||||
"aboutCreditsWorldAtlas1": "Bu uygulama bir TopoJSON dosyası kullanır",
|
||||
"aboutCreditsWorldAtlas2": "ISC Lisansı kapsamında.",
|
||||
"aboutCreditsTranslators": "Tercümanlar",
|
||||
"aboutTranslatorsSectionTitle": "Tercümanlar",
|
||||
|
||||
"aboutLicenses": "Açık Kaynak Lisansları",
|
||||
"aboutLicensesSectionTitle": "Açık Kaynak Lisansları",
|
||||
"aboutLicensesBanner": "Bu uygulama aşağıdaki açık kaynaklı paketleri ve kütüphaneleri kullanır.",
|
||||
"aboutLicensesAndroidLibraries": "Android Kütüphaneleri",
|
||||
"aboutLicensesFlutterPlugins": "Flutter Eklentileri",
|
||||
"aboutLicensesFlutterPackages": "Flutter Paketleri",
|
||||
"aboutLicensesDartPackages": "Dart Paketleri",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android Kütüphaneleri",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter Eklentileri",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flutter Paketleri",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart Paketleri",
|
||||
"aboutLicensesShowAllButtonLabel": "Tüm Lisansları Göster",
|
||||
|
||||
"policyPageTitle": "Gizlilik Politikası",
|
||||
|
@ -332,11 +323,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "Başlıkları ara",
|
||||
|
||||
"collectionSortDate": "Tarihe göre",
|
||||
"collectionSortSize": "Boyuta göre",
|
||||
"collectionSortName": "Albüm ve dosya adına göre",
|
||||
"collectionSortRating": "Derecelendirmeye göre",
|
||||
|
||||
"collectionGroupAlbum": "Albüme göre",
|
||||
"collectionGroupMonth": "Aya göre",
|
||||
"collectionGroupDay": "Güne göre",
|
||||
|
@ -374,6 +360,8 @@
|
|||
"collectionSelectSectionTooltip": "Bölüm seç",
|
||||
"collectionDeselectSectionTooltip": "Bölüm seçimini kaldır",
|
||||
|
||||
"drawerAboutButton": "Hakkında",
|
||||
"drawerSettingsButton": "Ayarlar",
|
||||
"drawerCollectionAll": "Tüm koleksiyon",
|
||||
"drawerCollectionFavourites": "Favoriler",
|
||||
"drawerCollectionImages": "Resimler",
|
||||
|
@ -383,10 +371,16 @@
|
|||
"drawerCollectionPanoramas": "Panoramalar",
|
||||
"drawerCollectionRaws": "Raw fotoğraflar",
|
||||
"drawerCollectionSphericalVideos": "360° Videolar",
|
||||
"drawerAlbumPage": "Albümler",
|
||||
"drawerCountryPage": "Ülkeler",
|
||||
"drawerTagPage": "Etiketler",
|
||||
|
||||
"chipSortDate": "Tarihe göre",
|
||||
"chipSortName": "Adına göre",
|
||||
"chipSortCount": "Öğe sayısına göre",
|
||||
"sortByDate": "Tarihe göre",
|
||||
"sortByName": "Adına göre",
|
||||
"sortByItemCount": "Öğe sayısına göre",
|
||||
"sortBySize": "Boyuta göre",
|
||||
"sortByAlbumFileName": "Albüm ve dosya adına göre",
|
||||
"sortByRating": "Derecelendirmeye göre",
|
||||
|
||||
"albumGroupTier": "Kademeye göre",
|
||||
"albumGroupVolume": "Depolama hacmine göre",
|
||||
|
@ -418,13 +412,13 @@
|
|||
"binPageTitle": "Geri Dönüşüm Kutusu",
|
||||
|
||||
"searchCollectionFieldHint": "Koleksiyonu ara",
|
||||
"searchSectionRecent": "Yakın zamanda",
|
||||
"searchSectionDate": "Tarih",
|
||||
"searchSectionAlbums": "Albümler",
|
||||
"searchSectionCountries": "Ülkeler",
|
||||
"searchSectionPlaces": "Yerler",
|
||||
"searchSectionTags": "Etiketler",
|
||||
"searchSectionRating": "Derecelendirmeler",
|
||||
"searchRecentSectionTitle": "Yakın zamanda",
|
||||
"searchDateSectionTitle": "Tarih",
|
||||
"searchAlbumsSectionTitle": "Albümler",
|
||||
"searchCountriesSectionTitle": "Ülkeler",
|
||||
"searchPlacesSectionTitle": "Yerler",
|
||||
"searchTagsSectionTitle": "Etiketler",
|
||||
"searchRatingSectionTitle": "Derecelendirmeler",
|
||||
|
||||
"settingsPageTitle": "Ayarlar",
|
||||
"settingsSystemDefault": "Sistem",
|
||||
|
@ -433,36 +427,39 @@
|
|||
"settingsSearchFieldLabel": "Ayarlarda ara",
|
||||
"settingsSearchEmpty": "Eşleşen ayar bulunamadı",
|
||||
"settingsActionExport": "Dışa aktar",
|
||||
"settingsActionExportDialogTitle": "Dışa aktar",
|
||||
"settingsActionImport": "İçe aktar",
|
||||
"settingsActionImportDialogTitle": "İçe aktar",
|
||||
|
||||
"appExportCovers": "Kapaklar",
|
||||
"appExportFavourites": "Favoriler",
|
||||
"appExportSettings": "Ayarlar",
|
||||
|
||||
"settingsSectionNavigation": "Gezinti",
|
||||
"settingsHome": "Anasayfa",
|
||||
"settingsNavigationSectionTitle": "Gezinti",
|
||||
"settingsHomeTile": "Anasayfa",
|
||||
"settingsHomeDialogTitle": "Anasayfa",
|
||||
"settingsShowBottomNavigationBar": "Alt gezinti çubuğunu göster",
|
||||
"settingsKeepScreenOnTile": "Ekranı açık tut",
|
||||
"settingsKeepScreenOnTitle": "Ekranı Açık Tut",
|
||||
"settingsKeepScreenOnDialogTitle": "Ekranı Açık Tut",
|
||||
"settingsDoubleBackExit": "Çıkmak için iki kez “geri” düğmesine dokunun",
|
||||
|
||||
"settingsConfirmationDialogTile": "Onaylama diyalogları",
|
||||
"settingsConfirmationTile": "Onaylama diyalogları",
|
||||
"settingsConfirmationDialogTitle": "Onaylama Diyalogları",
|
||||
"settingsConfirmationDialogDeleteItems": "Öğeleri sonsuza dek silmeden önce sor",
|
||||
"settingsConfirmationDialogMoveToBinItems": "Eşyaları geri dönüşüm kutusuna atmadan önce sor",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "Tarihsiz eşyaları taşımadan önce sor",
|
||||
"settingsConfirmationBeforeDeleteItems": "Öğeleri sonsuza dek silmeden önce sor",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "Eşyaları geri dönüşüm kutusuna atmadan önce sor",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "Tarihsiz eşyaları taşımadan önce sor",
|
||||
|
||||
"settingsNavigationDrawerTile": "Gezinti menüsü",
|
||||
"settingsNavigationDrawerEditorTitle": "Gezinti Menüsü",
|
||||
"settingsNavigationDrawerEditorPageTitle": "Gezinti Menüsü",
|
||||
"settingsNavigationDrawerBanner": "Menü öğelerini taşımak ve yeniden sıralamak için dokunun ve basılı tutun.",
|
||||
"settingsNavigationDrawerTabTypes": "Türler",
|
||||
"settingsNavigationDrawerTabAlbums": "Albümler",
|
||||
"settingsNavigationDrawerTabPages": "Sayfalar",
|
||||
"settingsNavigationDrawerAddAlbum": "Albüm ekle",
|
||||
|
||||
"settingsSectionThumbnails": "Küçük resimler",
|
||||
"settingsThumbnailSectionTitle": "Küçük resimler",
|
||||
"settingsThumbnailOverlayTile": "Kaplama",
|
||||
"settingsThumbnailOverlayTitle": "Kaplama",
|
||||
"settingsThumbnailOverlayPageTitle": "Kaplama",
|
||||
"settingsThumbnailShowFavouriteIcon": "Favori simgeyi göster",
|
||||
"settingsThumbnailShowTagIcon": "Etiket simgesini göster",
|
||||
"settingsThumbnailShowLocationIcon": "Konum simgesini göster",
|
||||
|
@ -472,27 +469,27 @@
|
|||
"settingsThumbnailShowVideoDuration": "Video süresini göster",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "Hızlı eylemler",
|
||||
"settingsCollectionQuickActionEditorTitle": "Hızlı Eylemler",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "Hızlı Eylemler",
|
||||
"settingsCollectionQuickActionTabBrowsing": "Gözatma",
|
||||
"settingsCollectionQuickActionTabSelecting": "Seçme",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "Düğmeleri hareket ettirmek ve öğelere göz atarken hangi eylemlerin görüntüleneceğini seçmek için dokunun ve basılı tutun.",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "Düğmeleri hareket ettirmek ve öğeleri seçerken hangi eylemlerin görüntüleneceğini seçmek için dokunun ve basılı tutun.",
|
||||
|
||||
"settingsSectionViewer": "Görüntüleyici",
|
||||
"settingsViewerSectionTitle": "Görüntüleyici",
|
||||
"settingsViewerUseCutout": "Kesim alanını kullan",
|
||||
"settingsViewerMaximumBrightness": "Maksimum parlaklık",
|
||||
"settingsMotionPhotoAutoPlay": "Hareketli fotoğrafları otomatik oynat",
|
||||
"settingsImageBackground": "Resim arka planı",
|
||||
|
||||
"settingsViewerQuickActionsTile": "Hızlı eylemler",
|
||||
"settingsViewerQuickActionEditorTitle": "Hızlı Eylemler",
|
||||
"settingsViewerQuickActionEditorPageTitle": "Hızlı Eylemler",
|
||||
"settingsViewerQuickActionEditorBanner": "Düğmeleri hareket ettirmek ve görüntüleyicide hangi eylemlerin görüntüleneceğini seçmek için dokunun ve basılı tutun.",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "Gösterilen Düğmeler",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "Mevcut Düğmeler",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "Gösterilen Düğmeler",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "Mevcut Düğmeler",
|
||||
"settingsViewerQuickActionEmpty": "Düğme yok",
|
||||
|
||||
"settingsViewerOverlayTile": "Kaplama",
|
||||
"settingsViewerOverlayTitle": "Kaplama",
|
||||
"settingsViewerOverlayPageTitle": "Kaplama",
|
||||
"settingsViewerShowOverlayOnOpening": "Açılışta göster",
|
||||
"settingsViewerShowMinimap": "Mini haritayı göster",
|
||||
"settingsViewerShowInformation": "Bilgileri göster",
|
||||
|
@ -502,18 +499,18 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "Bulanıklık efekti",
|
||||
|
||||
"settingsVideoPageTitle": "Video Ayarları",
|
||||
"settingsSectionVideo": "Video",
|
||||
"settingsVideoSectionTitle": "Video",
|
||||
"settingsVideoShowVideos": "Videoları göster",
|
||||
"settingsVideoEnableHardwareAcceleration": "Donanım hızlandırma",
|
||||
"settingsVideoEnableAutoPlay": "Otomatik oynat",
|
||||
"settingsVideoLoopModeTile": "Döngü modu",
|
||||
"settingsVideoLoopModeTitle": "Döngü Modu",
|
||||
"settingsVideoLoopModeDialogTitle": "Döngü Modu",
|
||||
|
||||
"settingsSubtitleThemeTile": "Altyazılar",
|
||||
"settingsSubtitleThemeTitle": "Altyazılar",
|
||||
"settingsSubtitleThemePageTitle": "Altyazılar",
|
||||
"settingsSubtitleThemeSample": "Bu bir örnek.",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "Metin hizalama",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "Metin Hizalama",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "Metin Hizalama",
|
||||
"settingsSubtitleThemeTextSize": "Metin boyutu",
|
||||
"settingsSubtitleThemeShowOutline": "Dış çizgiyi ve gölgeyi göster",
|
||||
"settingsSubtitleThemeTextColor": "Metin rengi",
|
||||
|
@ -525,13 +522,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "Sağ",
|
||||
|
||||
"settingsVideoControlsTile": "Kontroller",
|
||||
"settingsVideoControlsTitle": "Kontroller",
|
||||
"settingsVideoControlsPageTitle": "Kontroller",
|
||||
"settingsVideoButtonsTile": "Düğmeler",
|
||||
"settingsVideoButtonsTitle": "Düğmeler",
|
||||
"settingsVideoButtonsDialogTitle": "Düğmeler",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "Oynatmak/duraklatmak için çift dokunun",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "Geri/ileri aramak için ekran kenarlarına çift dokunun",
|
||||
|
||||
"settingsSectionPrivacy": "Gizlilik",
|
||||
"settingsPrivacySectionTitle": "Gizlilik",
|
||||
"settingsAllowInstalledAppAccess": "Uygulama envanterine erişime izin ver",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "Albüm görüntüsünü iyileştirmek için kullanılır",
|
||||
"settingsAllowErrorReporting": "Anonim hata raporlamasına izin ver",
|
||||
|
@ -540,49 +537,53 @@
|
|||
"settingsEnableBinSubtitle": "Silinen öğeleri 30 gün boyunca saklar",
|
||||
|
||||
"settingsHiddenItemsTile": "Gizli öğeler",
|
||||
"settingsHiddenItemsTitle": "Gizli Öğeler",
|
||||
"settingsHiddenItemsPageTitle": "Gizli Öğeler",
|
||||
|
||||
"settingsHiddenFiltersTitle": "Gizli Filtreler",
|
||||
"settingsHiddenItemsTabFilters": "Gizli Filtreler",
|
||||
"settingsHiddenFiltersBanner": "Gizli filtrelerle eşleşen fotoğraflar ve videolar koleksiyonunuzda görünmeyecektir.",
|
||||
"settingsHiddenFiltersEmpty": "Gizli filtre yok",
|
||||
|
||||
"settingsHiddenPathsTitle": "Gizli Yollar",
|
||||
"settingsHiddenItemsTabPaths": "Gizli Yollar",
|
||||
"settingsHiddenPathsBanner": "Bu klasörlerdeki veya alt klasörlerindeki fotoğraflar ve videolar koleksiyonunuzda görünmeyecektir.",
|
||||
"addPathTooltip": "Yol ekle",
|
||||
|
||||
"settingsStorageAccessTile": "Depolama erişimi",
|
||||
"settingsStorageAccessTitle": "Depolama Erişimi",
|
||||
"settingsStorageAccessPageTitle": "Depolama Erişimi",
|
||||
"settingsStorageAccessBanner": "Bazı dizinler, içlerindeki dosyaları değiştirmek için açık bir erişim izni gerektirir. Daha önce erişim izni verdiğiniz dizinleri buradan inceleyebilirsiniz.",
|
||||
"settingsStorageAccessEmpty": "Erişim izni yok",
|
||||
"settingsStorageAccessRevokeTooltip": "Geri al",
|
||||
|
||||
"settingsSectionAccessibility": "Erişilebilirlik",
|
||||
"settingsAccessibilitySectionTitle": "Erişilebilirlik",
|
||||
"settingsRemoveAnimationsTile": "Animasyonları kaldır",
|
||||
"settingsRemoveAnimationsTitle": "Animasyonları Kaldır",
|
||||
"settingsRemoveAnimationsDialogTitle": "Animasyonları Kaldır",
|
||||
"settingsTimeToTakeActionTile": "Harekete geçme zamanı",
|
||||
"settingsTimeToTakeActionTitle": "Harekete Geçme Zamanı",
|
||||
"settingsTimeToTakeActionDialogTitle": "Harekete Geçme Zamanı",
|
||||
|
||||
"settingsSectionDisplay": "Ekran",
|
||||
"settingsThemeBrightness": "Tema",
|
||||
"settingsDisplaySectionTitle": "Ekran",
|
||||
"settingsThemeBrightnessTile": "Tema",
|
||||
"settingsThemeBrightnessDialogTitle": "Tema",
|
||||
"settingsThemeColorHighlights": "Renk vurguları",
|
||||
"settingsThemeEnableDynamicColor": "Dinamik renk",
|
||||
"settingsDisplayRefreshRateModeTile": "Görüntü yenileme hızı",
|
||||
"settingsDisplayRefreshRateModeTitle": "Yenileme Hızı",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "Yenileme Hızı",
|
||||
|
||||
"settingsSectionLanguage": "Dil ve Biçimler",
|
||||
"settingsLanguage": "Dil",
|
||||
"settingsLanguageSectionTitle": "Dil ve Biçimler",
|
||||
"settingsLanguageTile": "Dil",
|
||||
"settingsLanguagePageTitle": "Dil",
|
||||
"settingsCoordinateFormatTile": "Koordinat formatı",
|
||||
"settingsCoordinateFormatTitle": "Koordinat Formatı",
|
||||
"settingsCoordinateFormatDialogTitle": "Koordinat Formatı",
|
||||
"settingsUnitSystemTile": "Birimler",
|
||||
"settingsUnitSystemTitle": "Birimler",
|
||||
"settingsUnitSystemDialogTitle": "Birimler",
|
||||
|
||||
"settingsWidgetPageTitle": "Fotoğraf Çerçevesi",
|
||||
|
||||
"settingsCollectionTile": "Koleksiyon",
|
||||
|
||||
"statsPageTitle": "İstatistikler",
|
||||
"statsWithGps": "{count, plural, =1{1 konuma sahip öğe} other{{count} konuma sahip öğe}}",
|
||||
"statsTopCountries": "Başlıca Ülkeler",
|
||||
"statsTopPlaces": "Başlıca Yerler",
|
||||
"statsTopTags": "Başlıca Etiketler",
|
||||
"statsTopCountriesSectionTitle": "Başlıca Ülkeler",
|
||||
"statsTopPlacesSectionTitle": "Başlıca Yerler",
|
||||
"statsTopTagsSectionTitle": "Başlıca Etiketler",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "PANORAMAYI AÇ",
|
||||
"viewerErrorUnknown": "Tüh!",
|
||||
|
@ -603,7 +604,7 @@
|
|||
"viewerInfoLabelCoordinates": "Koordinatlar",
|
||||
"viewerInfoLabelAddress": "Adres",
|
||||
|
||||
"mapStyleTitle": "Harita Şekli",
|
||||
"mapStyleDialogTitle": "Harita Şekli",
|
||||
"mapStyleTooltip": "Harita şeklini seç",
|
||||
"mapZoomInTooltip": "Yakınlaştır",
|
||||
"mapZoomOutTooltip": "Uzaklaştır",
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"actionRemove": "移除",
|
||||
"resetTooltip": "重置",
|
||||
"saveTooltip": "保存",
|
||||
"pickTooltip": "挑选",
|
||||
|
||||
"doubleBackExitMessage": "再按一次退出",
|
||||
"doNotAskAgain": "不再询问",
|
||||
|
@ -87,18 +88,20 @@
|
|||
|
||||
"entryInfoActionEditDate": "编辑日期和时间",
|
||||
"entryInfoActionEditLocation": "编辑位置",
|
||||
"entryInfoActionEditDescription": "编辑备注",
|
||||
"entryInfoActionEditTitleDescription": "编辑标题和描述",
|
||||
"entryInfoActionEditRating": "修改评分",
|
||||
"entryInfoActionEditTags": "编辑标签",
|
||||
"entryInfoActionRemoveMetadata": "移除元数据",
|
||||
|
||||
"filterBinLabel": "回收站",
|
||||
"filterFavouriteLabel": "收藏夹",
|
||||
"filterLocationEmptyLabel": "未定位",
|
||||
"filterTagEmptyLabel": "无标签",
|
||||
"filterNoDateLabel": "未注明日期",
|
||||
"filterNoLocationLabel": "未定位",
|
||||
"filterNoRatingLabel": "未评分",
|
||||
"filterNoTagLabel": "无标签",
|
||||
"filterNoTitleLabel": "无标题",
|
||||
"filterOnThisDayLabel": "选择日期",
|
||||
"filterRecentlyAddedLabel": "最近添加",
|
||||
"filterRatingUnratedLabel": "未评分",
|
||||
"filterRatingRejectedLabel": "拒绝",
|
||||
"filterTypeAnimatedLabel": "动画",
|
||||
"filterTypeMotionPhotoLabel": "动态照片",
|
||||
|
@ -179,16 +182,11 @@
|
|||
"storageVolumeDescriptionFallbackNonPrimary": "SD 卡",
|
||||
"rootDirectoryDescription": "根目录",
|
||||
"otherDirectoryDescription": "“{name}” 目录",
|
||||
"storageAccessDialogTitle": "存储访问权限",
|
||||
"storageAccessDialogMessage": "请在下一屏幕中选择“{volume}”的{directory},以授予本应用对其的访问权限",
|
||||
"restrictedAccessDialogTitle": "限制访问",
|
||||
"restrictedAccessDialogMessage": "本应用无权修改“{volume}”的{directory}中的文件\n\n请使用预装的文件管理器或图库应用将项目移至其他目录",
|
||||
"notEnoughSpaceDialogTitle": "空间不足",
|
||||
"notEnoughSpaceDialogMessage": "此操作需要“{volume}”上具有 {neededSize} 可用空间才能完成,实际仅剩 {freeSize}",
|
||||
"missingSystemFilePickerDialogTitle": "找不到系统文件选择器",
|
||||
"missingSystemFilePickerDialogMessage": "系统文件选择器缺失或被禁用,请将其启用后再试",
|
||||
|
||||
"unsupportedTypeDialogTitle": "不支持的类型",
|
||||
"unsupportedTypeDialogMessage": "{count, plural, other{此操作不支持以下类型的项目: {types}.}}",
|
||||
|
||||
"nameConflictDialogSingleSourceMessage": "目标文件夹中具有同名文件",
|
||||
|
@ -197,7 +195,6 @@
|
|||
"addShortcutDialogLabel": "快捷方式标签",
|
||||
"addShortcutButtonLabel": "添加",
|
||||
|
||||
"noMatchingAppDialogTitle": "无匹配的应用",
|
||||
"noMatchingAppDialogMessage": "无对应的处理程序",
|
||||
|
||||
"binEntriesConfirmationDialogMessage": "{count, plural, =1{将此项移至回收站?} other{将这 {count} 项移至回收站?}}",
|
||||
|
@ -226,7 +223,7 @@
|
|||
"renameEntrySetPageTitle": "重命名",
|
||||
"renameEntrySetPagePatternFieldLabel": "命名模式",
|
||||
"renameEntrySetPageInsertTooltip": "插入字段",
|
||||
"renameEntrySetPagePreview": "预览",
|
||||
"renameEntrySetPagePreviewSectionTitle": "预览",
|
||||
|
||||
"renameProcessorCounter": "计数器",
|
||||
"renameProcessorName": "名称",
|
||||
|
@ -259,8 +256,6 @@
|
|||
|
||||
"locationPickerUseThisLocationButton": "使用此位置",
|
||||
|
||||
"editEntryDescriptionDialogTitle": "备注",
|
||||
|
||||
"editEntryRatingDialogTitle": "评分",
|
||||
|
||||
"removeEntryMetadataDialogTitle": "元数据移除工具",
|
||||
|
@ -289,9 +284,10 @@
|
|||
"menuActionSlideshow": "幻灯片",
|
||||
"menuActionStats": "统计",
|
||||
|
||||
"viewDialogTabSort": "排序",
|
||||
"viewDialogTabGroup": "分组",
|
||||
"viewDialogTabLayout": "布局",
|
||||
"viewDialogSortSectionTitle": "排序",
|
||||
"viewDialogGroupSectionTitle": "分组",
|
||||
"viewDialogLayoutSectionTitle": "布局",
|
||||
"viewDialogReverseSortOrder": "反向排序",
|
||||
|
||||
"tileLayoutGrid": "网格",
|
||||
"tileLayoutList": "列表",
|
||||
|
@ -308,24 +304,24 @@
|
|||
"aboutLinkLicense": "许可协议",
|
||||
"aboutLinkPolicy": "隐私政策",
|
||||
|
||||
"aboutBug": "报告错误",
|
||||
"aboutBugSectionTitle": "报告错误",
|
||||
"aboutBugSaveLogInstruction": "将应用日志保存到文件",
|
||||
"aboutBugCopyInfoInstruction": "复制系统信息",
|
||||
"aboutBugCopyInfoButton": "复制",
|
||||
"aboutBugReportInstruction": "在 GitHub 上报告日志和系统信息",
|
||||
"aboutBugReportButton": "报告",
|
||||
|
||||
"aboutCredits": "鸣谢",
|
||||
"aboutCreditsSectionTitle": "鸣谢",
|
||||
"aboutCreditsWorldAtlas1": "本应用使用的 TopoJSON 文件来自",
|
||||
"aboutCreditsWorldAtlas2": "符合 ISC 许可协议",
|
||||
"aboutCreditsTranslators": "翻译人员",
|
||||
"aboutTranslatorsSectionTitle": "翻译人员",
|
||||
|
||||
"aboutLicenses": "开源许可协议",
|
||||
"aboutLicensesSectionTitle": "开源许可协议",
|
||||
"aboutLicensesBanner": "本应用使用以下开源软件包和库",
|
||||
"aboutLicensesAndroidLibraries": "Android Libraries",
|
||||
"aboutLicensesFlutterPlugins": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackages": "Flutter Packages",
|
||||
"aboutLicensesDartPackages": "Dart Packages",
|
||||
"aboutLicensesAndroidLibrariesSectionTitle": "Android Libraries",
|
||||
"aboutLicensesFlutterPluginsSectionTitle": "Flutter Plugins",
|
||||
"aboutLicensesFlutterPackagesSectionTitle": "Flutter Packages",
|
||||
"aboutLicensesDartPackagesSectionTitle": "Dart Packages",
|
||||
"aboutLicensesShowAllButtonLabel": "显示所有许可协议",
|
||||
|
||||
"policyPageTitle": "隐私政策",
|
||||
|
@ -345,11 +341,6 @@
|
|||
|
||||
"collectionSearchTitlesHintText": "搜索标题",
|
||||
|
||||
"collectionSortDate": "按日期",
|
||||
"collectionSortSize": "按大小",
|
||||
"collectionSortName": "按相册和文件名",
|
||||
"collectionSortRating": "按评分",
|
||||
|
||||
"collectionGroupAlbum": "按相册",
|
||||
"collectionGroupMonth": "按月份",
|
||||
"collectionGroupDay": "按天",
|
||||
|
@ -378,6 +369,8 @@
|
|||
"collectionSelectSectionTooltip": "选择部分",
|
||||
"collectionDeselectSectionTooltip": "取消选择部分",
|
||||
|
||||
"drawerAboutButton": "关于",
|
||||
"drawerSettingsButton": "设置",
|
||||
"drawerCollectionAll": "所有媒体集",
|
||||
"drawerCollectionFavourites": "收藏夹",
|
||||
"drawerCollectionImages": "图像",
|
||||
|
@ -387,10 +380,25 @@
|
|||
"drawerCollectionPanoramas": "全景图",
|
||||
"drawerCollectionRaws": "Raw 照片",
|
||||
"drawerCollectionSphericalVideos": "360° 视频",
|
||||
"drawerAlbumPage": "相册",
|
||||
"drawerCountryPage": "国家",
|
||||
"drawerTagPage": "标签",
|
||||
|
||||
"chipSortDate": "按日期",
|
||||
"chipSortName": "按名称",
|
||||
"chipSortCount": "按数量",
|
||||
"sortByDate": "按日期",
|
||||
"sortByName": "按名称",
|
||||
"sortByItemCount": "按数量",
|
||||
"sortBySize": "按大小",
|
||||
"sortByAlbumFileName": "按相册和文件名",
|
||||
"sortByRating": "按评分",
|
||||
|
||||
"sortOrderNewestFirst": "降序",
|
||||
"sortOrderOldestFirst": "升序",
|
||||
"sortOrderAtoZ": "A — Z",
|
||||
"sortOrderZtoA": "Z — A",
|
||||
"sortOrderHighestFirst": "由高到低",
|
||||
"sortOrderLowestFirst": "由低到高",
|
||||
"sortOrderLargestFirst": "由大到小",
|
||||
"sortOrderSmallestFirst": "由小到大",
|
||||
|
||||
"albumGroupTier": "按层级",
|
||||
"albumGroupVolume": "按存储卷",
|
||||
|
@ -422,13 +430,14 @@
|
|||
"binPageTitle": "回收站",
|
||||
|
||||
"searchCollectionFieldHint": "搜索媒体集",
|
||||
"searchSectionRecent": "最近",
|
||||
"searchSectionDate": "日期",
|
||||
"searchSectionAlbums": "相册",
|
||||
"searchSectionCountries": "国家",
|
||||
"searchSectionPlaces": "地点",
|
||||
"searchSectionTags": "标签",
|
||||
"searchSectionRating": "评分",
|
||||
"searchRecentSectionTitle": "最近",
|
||||
"searchDateSectionTitle": "日期",
|
||||
"searchAlbumsSectionTitle": "相册",
|
||||
"searchCountriesSectionTitle": "国家",
|
||||
"searchPlacesSectionTitle": "地点",
|
||||
"searchTagsSectionTitle": "标签",
|
||||
"searchRatingSectionTitle": "评分",
|
||||
"searchMetadataSectionTitle": "元数据",
|
||||
|
||||
"settingsPageTitle": "设置",
|
||||
"settingsSystemDefault": "系统",
|
||||
|
@ -437,37 +446,40 @@
|
|||
"settingsSearchFieldLabel": "搜索设置",
|
||||
"settingsSearchEmpty": "无匹配设置项",
|
||||
"settingsActionExport": "导出",
|
||||
"settingsActionExportDialogTitle": "导出",
|
||||
"settingsActionImport": "导入",
|
||||
"settingsActionImportDialogTitle": "导入",
|
||||
|
||||
"appExportCovers": "封面",
|
||||
"appExportFavourites": "收藏夹",
|
||||
"appExportSettings": "设置",
|
||||
|
||||
"settingsSectionNavigation": "导航",
|
||||
"settingsHome": "主页",
|
||||
"settingsNavigationSectionTitle": "导航",
|
||||
"settingsHomeTile": "主页",
|
||||
"settingsHomeDialogTitle": "主页",
|
||||
"settingsShowBottomNavigationBar": "显示底部导航栏",
|
||||
"settingsKeepScreenOnTile": "保持亮屏",
|
||||
"settingsKeepScreenOnTitle": "保持亮屏",
|
||||
"settingsKeepScreenOnDialogTitle": "保持亮屏",
|
||||
"settingsDoubleBackExit": "按两次返回键退出",
|
||||
|
||||
"settingsConfirmationDialogTile": "确认对话框",
|
||||
"settingsConfirmationTile": "确认对话框",
|
||||
"settingsConfirmationDialogTitle": "确认对话框",
|
||||
"settingsConfirmationDialogDeleteItems": "永久删除项目之前询问",
|
||||
"settingsConfirmationDialogMoveToBinItems": "移至回收站之前询问",
|
||||
"settingsConfirmationDialogMoveUndatedItems": "移动未注明日期的项目之前询问",
|
||||
"settingsConfirmationBeforeDeleteItems": "永久删除项目之前询问",
|
||||
"settingsConfirmationBeforeMoveToBinItems": "移至回收站之前询问",
|
||||
"settingsConfirmationBeforeMoveUndatedItems": "移动未注明日期的项目之前询问",
|
||||
"settingsConfirmationAfterMoveToBinItems": "移至回收站后显示消息",
|
||||
|
||||
"settingsNavigationDrawerTile": "导航栏菜单",
|
||||
"settingsNavigationDrawerEditorTitle": "导航栏菜单",
|
||||
"settingsNavigationDrawerEditorPageTitle": "导航栏菜单",
|
||||
"settingsNavigationDrawerBanner": "长按移动和重新排序菜单项",
|
||||
"settingsNavigationDrawerTabTypes": "类型",
|
||||
"settingsNavigationDrawerTabAlbums": "相册",
|
||||
"settingsNavigationDrawerTabPages": "页面",
|
||||
"settingsNavigationDrawerAddAlbum": "添加相册",
|
||||
|
||||
"settingsSectionThumbnails": "缩略图",
|
||||
"settingsThumbnailSectionTitle": "缩略图",
|
||||
"settingsThumbnailOverlayTile": "叠加层",
|
||||
"settingsThumbnailOverlayTitle": "叠加层",
|
||||
"settingsThumbnailOverlayPageTitle": "叠加层",
|
||||
"settingsThumbnailShowFavouriteIcon": "显示收藏图标",
|
||||
"settingsThumbnailShowTagIcon": "显示标签图标",
|
||||
"settingsThumbnailShowLocationIcon": "显示位置图标",
|
||||
|
@ -477,13 +489,13 @@
|
|||
"settingsThumbnailShowVideoDuration": "显示视频时长",
|
||||
|
||||
"settingsCollectionQuickActionsTile": "快速操作",
|
||||
"settingsCollectionQuickActionEditorTitle": "快速操作",
|
||||
"settingsCollectionQuickActionEditorPageTitle": "快速操作",
|
||||
"settingsCollectionQuickActionTabBrowsing": "浏览",
|
||||
"settingsCollectionQuickActionTabSelecting": "选择",
|
||||
"settingsCollectionBrowsingQuickActionEditorBanner": "按住并拖拽可移动按钮并选择浏览项目时显示的操作",
|
||||
"settingsCollectionSelectionQuickActionEditorBanner": "按住并拖拽可移动按钮并选择选择项目时显示的操作",
|
||||
|
||||
"settingsSectionViewer": "查看器",
|
||||
"settingsViewerSectionTitle": "查看器",
|
||||
"settingsViewerGestureSideTapNext": "轻触屏幕边缘显示上/下一个项目",
|
||||
"settingsViewerUseCutout": "使用剪切区域",
|
||||
"settingsViewerMaximumBrightness": "最大亮度",
|
||||
|
@ -491,14 +503,14 @@
|
|||
"settingsImageBackground": "图像背景",
|
||||
|
||||
"settingsViewerQuickActionsTile": "快速操作",
|
||||
"settingsViewerQuickActionEditorTitle": "快速操作",
|
||||
"settingsViewerQuickActionEditorPageTitle": "快速操作",
|
||||
"settingsViewerQuickActionEditorBanner": "按住并拖拽可移动按钮并选择查看器中显示的操作",
|
||||
"settingsViewerQuickActionEditorDisplayedButtons": "显示的按钮",
|
||||
"settingsViewerQuickActionEditorAvailableButtons": "可用按钮",
|
||||
"settingsViewerQuickActionEditorDisplayedButtonsSectionTitle": "显示的按钮",
|
||||
"settingsViewerQuickActionEditorAvailableButtonsSectionTitle": "可用按钮",
|
||||
"settingsViewerQuickActionEmpty": "无按钮",
|
||||
|
||||
"settingsViewerOverlayTile": "叠加层",
|
||||
"settingsViewerOverlayTitle": "叠加层",
|
||||
"settingsViewerOverlayPageTitle": "叠加层",
|
||||
"settingsViewerShowOverlayOnOpening": "打开时显示",
|
||||
"settingsViewerShowMinimap": "显示小地图",
|
||||
"settingsViewerShowInformation": "显示信息",
|
||||
|
@ -508,30 +520,30 @@
|
|||
"settingsViewerEnableOverlayBlurEffect": "模糊特效",
|
||||
|
||||
"settingsViewerSlideshowTile": "幻灯片",
|
||||
"settingsViewerSlideshowTitle": "幻灯片",
|
||||
"settingsViewerSlideshowPageTitle": "幻灯片",
|
||||
"settingsSlideshowRepeat": "重复",
|
||||
"settingsSlideshowShuffle": "随机播放",
|
||||
"settingsSlideshowFillScreen": "填充屏幕",
|
||||
"settingsSlideshowTransitionTile": "过渡动画",
|
||||
"settingsSlideshowTransitionTitle": "过渡动画",
|
||||
"settingsSlideshowTransitionDialogTitle": "过渡动画",
|
||||
"settingsSlideshowIntervalTile": "时间间隔",
|
||||
"settingsSlideshowIntervalTitle": "时间间隔",
|
||||
"settingsSlideshowIntervalDialogTitle": "时间间隔",
|
||||
"settingsSlideshowVideoPlaybackTile": "视频回放",
|
||||
"settingsSlideshowVideoPlaybackTitle": "视频回放",
|
||||
"settingsSlideshowVideoPlaybackDialogTitle": "视频回放",
|
||||
|
||||
"settingsVideoPageTitle": "视频设置",
|
||||
"settingsSectionVideo": "视频",
|
||||
"settingsVideoSectionTitle": "视频",
|
||||
"settingsVideoShowVideos": "显示视频",
|
||||
"settingsVideoEnableHardwareAcceleration": "硬件加速",
|
||||
"settingsVideoEnableAutoPlay": "自动播放",
|
||||
"settingsVideoLoopModeTile": "循环模式",
|
||||
"settingsVideoLoopModeTitle": "循环模式",
|
||||
"settingsVideoLoopModeDialogTitle": "循环模式",
|
||||
|
||||
"settingsSubtitleThemeTile": "字幕",
|
||||
"settingsSubtitleThemeTitle": "字幕",
|
||||
"settingsSubtitleThemePageTitle": "字幕",
|
||||
"settingsSubtitleThemeSample": "这是一个字幕示例。",
|
||||
"settingsSubtitleThemeTextAlignmentTile": "对齐方式",
|
||||
"settingsSubtitleThemeTextAlignmentTitle": "对齐方式",
|
||||
"settingsSubtitleThemeTextAlignmentDialogTitle": "对齐方式",
|
||||
"settingsSubtitleThemeTextSize": "文本大小",
|
||||
"settingsSubtitleThemeShowOutline": "显示轮廓和阴影",
|
||||
"settingsSubtitleThemeTextColor": "文本颜色",
|
||||
|
@ -543,13 +555,13 @@
|
|||
"settingsSubtitleThemeTextAlignmentRight": "居右",
|
||||
|
||||
"settingsVideoControlsTile": "控件",
|
||||
"settingsVideoControlsTitle": "控件",
|
||||
"settingsVideoControlsPageTitle": "控件",
|
||||
"settingsVideoButtonsTile": "按钮",
|
||||
"settingsVideoButtonsTitle": "按钮",
|
||||
"settingsVideoButtonsDialogTitle": "按钮",
|
||||
"settingsVideoGestureDoubleTapTogglePlay": "双击播放/暂停",
|
||||
"settingsVideoGestureSideDoubleTapSeek": "双击屏幕边缘步进/步退",
|
||||
|
||||
"settingsSectionPrivacy": "隐私",
|
||||
"settingsPrivacySectionTitle": "隐私",
|
||||
"settingsAllowInstalledAppAccess": "允许访问应用清单",
|
||||
"settingsAllowInstalledAppAccessSubtitle": "用于改善相册显示结果",
|
||||
"settingsAllowErrorReporting": "允许匿名错误报告",
|
||||
|
@ -558,52 +570,56 @@
|
|||
"settingsEnableBinSubtitle": "将删除项保留 30 天",
|
||||
|
||||
"settingsHiddenItemsTile": "隐藏项",
|
||||
"settingsHiddenItemsTitle": "隐藏项",
|
||||
"settingsHiddenItemsPageTitle": "隐藏项",
|
||||
|
||||
"settingsHiddenFiltersTitle": "隐藏过滤器",
|
||||
"settingsHiddenItemsTabFilters": "隐藏过滤器",
|
||||
"settingsHiddenFiltersBanner": "匹配隐藏过滤器的照片和视频将不会出现在你的媒体集中",
|
||||
"settingsHiddenFiltersEmpty": "无隐藏过滤器",
|
||||
|
||||
"settingsHiddenPathsTitle": "隐藏路径",
|
||||
"settingsHiddenItemsTabPaths": "隐藏路径",
|
||||
"settingsHiddenPathsBanner": "以下文件夹及其子文件夹中的照片和视频将不会出现在你的媒体集中",
|
||||
"addPathTooltip": "添加路径",
|
||||
|
||||
"settingsStorageAccessTile": "存储访问",
|
||||
"settingsStorageAccessTitle": "存储访问",
|
||||
"settingsStorageAccessPageTitle": "存储访问",
|
||||
"settingsStorageAccessBanner": "某些目录需要具有明确的访问权限才能修改其中的文件,你可以在此处查看你之前已授予访问权限的目录",
|
||||
"settingsStorageAccessEmpty": "尚未授予访问权限",
|
||||
"settingsStorageAccessRevokeTooltip": "撤消",
|
||||
|
||||
"settingsSectionAccessibility": "无障碍",
|
||||
"settingsAccessibilitySectionTitle": "无障碍",
|
||||
"settingsRemoveAnimationsTile": "移除动画",
|
||||
"settingsRemoveAnimationsTitle": "移除动画",
|
||||
"settingsRemoveAnimationsDialogTitle": "移除动画",
|
||||
"settingsTimeToTakeActionTile": "生效时间",
|
||||
"settingsTimeToTakeActionTitle": "生效时间",
|
||||
"settingsTimeToTakeActionDialogTitle": "生效时间",
|
||||
|
||||
"settingsSectionDisplay": "显示",
|
||||
"settingsThemeBrightness": "主题",
|
||||
"settingsDisplaySectionTitle": "显示",
|
||||
"settingsThemeBrightnessTile": "主题",
|
||||
"settingsThemeBrightnessDialogTitle": "主题",
|
||||
"settingsThemeColorHighlights": "色彩强调",
|
||||
"settingsThemeEnableDynamicColor": "动态色彩",
|
||||
"settingsDisplayRefreshRateModeTile": "显示刷新率",
|
||||
"settingsDisplayRefreshRateModeTitle": "刷新率",
|
||||
"settingsDisplayRefreshRateModeDialogTitle": "刷新率",
|
||||
|
||||
"settingsSectionLanguage": "语言和格式",
|
||||
"settingsLanguage": "界面语言",
|
||||
"settingsLanguageSectionTitle": "语言和格式",
|
||||
"settingsLanguageTile": "界面语言",
|
||||
"settingsLanguagePageTitle": "界面语言",
|
||||
"settingsCoordinateFormatTile": "坐标格式",
|
||||
"settingsCoordinateFormatTitle": "坐标格式",
|
||||
"settingsCoordinateFormatDialogTitle": "坐标格式",
|
||||
"settingsUnitSystemTile": "单位",
|
||||
"settingsUnitSystemTitle": "单位",
|
||||
"settingsUnitSystemDialogTitle": "单位",
|
||||
|
||||
"settingsScreenSaverPageTitle": "屏保",
|
||||
|
||||
"settingsWidgetPageTitle": "相框",
|
||||
"settingsWidgetShowOutline": "轮廓",
|
||||
|
||||
"settingsCollectionTile": "媒体集",
|
||||
|
||||
"statsPageTitle": "统计",
|
||||
"statsWithGps": "{count, plural, other{{count} 项带位置信息}}",
|
||||
"statsTopCountries": "热门国家",
|
||||
"statsTopPlaces": "热门地点",
|
||||
"statsTopTags": "热门标签",
|
||||
"statsTopCountriesSectionTitle": "热门国家",
|
||||
"statsTopPlacesSectionTitle": "热门地点",
|
||||
"statsTopTagsSectionTitle": "热门标签",
|
||||
|
||||
"viewerOpenPanoramaButtonLabel": "打开全景",
|
||||
"viewerSetWallpaperButtonLabel": "设置壁纸",
|
||||
|
@ -614,6 +630,7 @@
|
|||
"viewerInfoBackToViewerTooltip": "返回查看器",
|
||||
|
||||
"viewerInfoUnknown": "未知",
|
||||
"viewerInfoLabelDescription": "备注",
|
||||
"viewerInfoLabelTitle": "标题",
|
||||
"viewerInfoLabelDate": "日期",
|
||||
"viewerInfoLabelResolution": "分辨率",
|
||||
|
@ -625,7 +642,7 @@
|
|||
"viewerInfoLabelCoordinates": "坐标",
|
||||
"viewerInfoLabelAddress": "地址",
|
||||
|
||||
"mapStyleTitle": "地图样式",
|
||||
"mapStyleDialogTitle": "地图样式",
|
||||
"mapStyleTooltip": "选择地图样式",
|
||||
"mapZoomInTooltip": "放大",
|
||||
"mapZoomOutTooltip": "缩小",
|
||||
|
|
|
@ -7,7 +7,7 @@ enum EntryInfoAction {
|
|||
// general
|
||||
editDate,
|
||||
editLocation,
|
||||
editDescription,
|
||||
editTitleDescription,
|
||||
editRating,
|
||||
editTags,
|
||||
removeMetadata,
|
||||
|
@ -24,7 +24,7 @@ class EntryInfoActions {
|
|||
static const common = [
|
||||
EntryInfoAction.editDate,
|
||||
EntryInfoAction.editLocation,
|
||||
EntryInfoAction.editDescription,
|
||||
EntryInfoAction.editTitleDescription,
|
||||
EntryInfoAction.editRating,
|
||||
EntryInfoAction.editTags,
|
||||
EntryInfoAction.removeMetadata,
|
||||
|
@ -45,8 +45,8 @@ extension ExtraEntryInfoAction on EntryInfoAction {
|
|||
return context.l10n.entryInfoActionEditDate;
|
||||
case EntryInfoAction.editLocation:
|
||||
return context.l10n.entryInfoActionEditLocation;
|
||||
case EntryInfoAction.editDescription:
|
||||
return context.l10n.entryInfoActionEditDescription;
|
||||
case EntryInfoAction.editTitleDescription:
|
||||
return context.l10n.entryInfoActionEditTitleDescription;
|
||||
case EntryInfoAction.editRating:
|
||||
return context.l10n.entryInfoActionEditRating;
|
||||
case EntryInfoAction.editTags:
|
||||
|
@ -88,7 +88,7 @@ extension ExtraEntryInfoAction on EntryInfoAction {
|
|||
return AIcons.date;
|
||||
case EntryInfoAction.editLocation:
|
||||
return AIcons.location;
|
||||
case EntryInfoAction.editDescription:
|
||||
case EntryInfoAction.editTitleDescription:
|
||||
return AIcons.description;
|
||||
case EntryInfoAction.editRating:
|
||||
return AIcons.editRating;
|
||||
|
|
|
@ -31,7 +31,7 @@ enum EntrySetAction {
|
|||
flip,
|
||||
editDate,
|
||||
editLocation,
|
||||
editDescription,
|
||||
editTitleDescription,
|
||||
editRating,
|
||||
editTags,
|
||||
removeMetadata,
|
||||
|
@ -100,7 +100,7 @@ class EntrySetActions {
|
|||
static const edit = [
|
||||
EntrySetAction.editDate,
|
||||
EntrySetAction.editLocation,
|
||||
EntrySetAction.editDescription,
|
||||
EntrySetAction.editTitleDescription,
|
||||
EntrySetAction.editRating,
|
||||
EntrySetAction.editTags,
|
||||
EntrySetAction.removeMetadata,
|
||||
|
@ -164,8 +164,8 @@ extension ExtraEntrySetAction on EntrySetAction {
|
|||
return context.l10n.entryInfoActionEditDate;
|
||||
case EntrySetAction.editLocation:
|
||||
return context.l10n.entryInfoActionEditLocation;
|
||||
case EntrySetAction.editDescription:
|
||||
return context.l10n.entryInfoActionEditDescription;
|
||||
case EntrySetAction.editTitleDescription:
|
||||
return context.l10n.entryInfoActionEditTitleDescription;
|
||||
case EntrySetAction.editRating:
|
||||
return context.l10n.entryInfoActionEditRating;
|
||||
case EntrySetAction.editTags:
|
||||
|
@ -233,7 +233,7 @@ extension ExtraEntrySetAction on EntrySetAction {
|
|||
return AIcons.date;
|
||||
case EntrySetAction.editLocation:
|
||||
return AIcons.location;
|
||||
case EntrySetAction.editDescription:
|
||||
case EntrySetAction.editTitleDescription:
|
||||
return AIcons.description;
|
||||
case EntrySetAction.editRating:
|
||||
return AIcons.editRating;
|
||||
|
|
|
@ -213,9 +213,13 @@ class AvesEntry {
|
|||
return _extension;
|
||||
}
|
||||
|
||||
String? get storagePath => trashed ? trashDetails?.path : path;
|
||||
|
||||
String? get storageDirectory => trashed ? pContext.dirname(trashDetails!.path) : directory;
|
||||
|
||||
bool get isMissingAtPath {
|
||||
final effectivePath = trashed ? trashDetails?.path : path;
|
||||
return effectivePath != null && !File(effectivePath).existsSync();
|
||||
final _storagePath = storagePath;
|
||||
return _storagePath != null && !File(_storagePath).existsSync();
|
||||
}
|
||||
|
||||
// the MIME type reported by the Media Store is unreliable
|
||||
|
@ -279,7 +283,7 @@ class AvesEntry {
|
|||
|
||||
bool get canEditLocation => canEdit && canEditExif;
|
||||
|
||||
bool get canEditDescription => canEdit && (canEditExif || canEditXmp);
|
||||
bool get canEditTitleDescription => canEdit && canEditXmp;
|
||||
|
||||
bool get canEditRating => canEdit && canEditXmp;
|
||||
|
||||
|
@ -738,7 +742,12 @@ class AvesEntry {
|
|||
}
|
||||
|
||||
// when the MIME type or the image itself changed (e.g. after rotation)
|
||||
Future<void> _onVisualFieldChanged(String oldMimeType, int? oldDateModifiedSecs, int oldRotationDegrees, bool oldIsFlipped) async {
|
||||
Future<void> _onVisualFieldChanged(
|
||||
String oldMimeType,
|
||||
int? oldDateModifiedSecs,
|
||||
int oldRotationDegrees,
|
||||
bool oldIsFlipped,
|
||||
) async {
|
||||
if ((!MimeTypes.refersToSameType(oldMimeType, mimeType) && !MimeTypes.isVideo(oldMimeType)) || oldDateModifiedSecs != dateModifiedSecs || oldRotationDegrees != rotationDegrees || oldIsFlipped != isFlipped) {
|
||||
await EntryCache.evict(uri, oldMimeType, oldDateModifiedSecs, oldRotationDegrees, oldIsFlipped);
|
||||
imageChangeNotifier.notify();
|
||||
|
|
|
@ -53,7 +53,7 @@ extension ExtraAvesEntryImages on AvesEntry {
|
|||
pageId: pageId,
|
||||
rotationDegrees: rotationDegrees,
|
||||
isFlipped: isFlipped,
|
||||
expectedContentLength: sizeBytes,
|
||||
sizeBytes: sizeBytes,
|
||||
);
|
||||
|
||||
bool _isReady(Object providerKey) => imageCache.statusForKey(providerKey).keepAlive;
|
||||
|
|
|
@ -140,37 +140,62 @@ extension ExtraAvesEntryMetadataEdition on AvesEntry {
|
|||
return _changeOrientation(() => metadataEditService.flip(this));
|
||||
}
|
||||
|
||||
// write:
|
||||
// write title:
|
||||
// - IPTC / object-name, if IPTC exists
|
||||
// - XMP / dc:title
|
||||
// write description:
|
||||
// - Exif / ImageDescription
|
||||
// - IPTC / caption-abstract, if IPTC exists
|
||||
// - XMP / dc:description
|
||||
Future<Set<EntryDataType>> editDescription(String? description) async {
|
||||
Future<Set<EntryDataType>> editTitleDescription(Map<DescriptionField, String?> fields) async {
|
||||
final Set<EntryDataType> dataTypes = {};
|
||||
final Map<MetadataType, dynamic> metadata = {};
|
||||
|
||||
final missingDate = await _missingDateCheckAndExifEdit(dataTypes);
|
||||
|
||||
if (canEditExif) {
|
||||
final editTitle = fields.keys.contains(DescriptionField.title);
|
||||
final editDescription = fields.keys.contains(DescriptionField.description);
|
||||
final title = fields[DescriptionField.title];
|
||||
final description = fields[DescriptionField.description];
|
||||
|
||||
if (canEditExif && editDescription) {
|
||||
metadata[MetadataType.exif] = {MetadataField.exifImageDescription.exifInterfaceTag!: description};
|
||||
}
|
||||
|
||||
if (canEditIptc) {
|
||||
final iptc = await metadataFetchService.getIptc(this);
|
||||
if (iptc != null) {
|
||||
editIptcValues(iptc, IPTC.applicationRecord, IPTC.captionAbstractTag, {if (description != null) description});
|
||||
if (editTitle) {
|
||||
editIptcValues(iptc, IPTC.applicationRecord, IPTC.objectName, {if (title != null) title});
|
||||
}
|
||||
if (editDescription) {
|
||||
editIptcValues(iptc, IPTC.applicationRecord, IPTC.captionAbstractTag, {if (description != null) description});
|
||||
}
|
||||
metadata[MetadataType.iptc] = iptc;
|
||||
}
|
||||
}
|
||||
|
||||
if (canEditXmp) {
|
||||
metadata[MetadataType.xmp] = await _editXmp((descriptions) {
|
||||
final modified = XMP.setAttribute(
|
||||
descriptions,
|
||||
XMP.dcDescription,
|
||||
description,
|
||||
namespace: Namespaces.dc,
|
||||
strat: XmpEditStrategy.always,
|
||||
);
|
||||
var modified = false;
|
||||
if (editTitle) {
|
||||
modified |= XMP.setAttribute(
|
||||
descriptions,
|
||||
XMP.dcTitle,
|
||||
title,
|
||||
namespace: Namespaces.dc,
|
||||
strat: XmpEditStrategy.always,
|
||||
);
|
||||
}
|
||||
if (editDescription) {
|
||||
modified |= XMP.setAttribute(
|
||||
descriptions,
|
||||
XMP.dcDescription,
|
||||
description,
|
||||
namespace: Namespaces.dc,
|
||||
strat: XmpEditStrategy.always,
|
||||
);
|
||||
}
|
||||
if (modified && missingDate != null) {
|
||||
editCreateDateXmp(descriptions, missingDate);
|
||||
}
|
||||
|
@ -182,6 +207,7 @@ extension ExtraAvesEntryMetadataEdition on AvesEntry {
|
|||
if (newFields.isNotEmpty) {
|
||||
dataTypes.addAll({
|
||||
EntryDataType.basic,
|
||||
EntryDataType.catalog,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -467,3 +493,5 @@ extension ExtraAvesEntryMetadataEdition on AvesEntry {
|
|||
};
|
||||
}
|
||||
}
|
||||
|
||||
enum DescriptionField { title, description }
|
||||
|
|
|
@ -8,6 +8,7 @@ import 'package:aves/model/filters/date.dart';
|
|||
import 'package:aves/model/filters/favourite.dart';
|
||||
import 'package:aves/model/filters/location.dart';
|
||||
import 'package:aves/model/filters/mime.dart';
|
||||
import 'package:aves/model/filters/missing.dart';
|
||||
import 'package:aves/model/filters/path.dart';
|
||||
import 'package:aves/model/filters/query.dart';
|
||||
import 'package:aves/model/filters/rating.dart';
|
||||
|
@ -30,12 +31,14 @@ abstract class CollectionFilter extends Equatable implements Comparable<Collecti
|
|||
MimeFilter.type,
|
||||
AlbumFilter.type,
|
||||
TypeFilter.type,
|
||||
RecentlyAddedFilter.type,
|
||||
DateFilter.type,
|
||||
LocationFilter.type,
|
||||
CoordinateFilter.type,
|
||||
FavouriteFilter.type,
|
||||
RatingFilter.type,
|
||||
TagFilter.type,
|
||||
MissingFilter.type,
|
||||
PathFilter.type,
|
||||
];
|
||||
|
||||
|
@ -63,6 +66,8 @@ abstract class CollectionFilter extends Equatable implements Comparable<Collecti
|
|||
return LocationFilter.fromMap(jsonMap);
|
||||
case MimeFilter.type:
|
||||
return MimeFilter.fromMap(jsonMap);
|
||||
case MissingFilter.type:
|
||||
return MissingFilter.fromMap(jsonMap);
|
||||
case PathFilter.type:
|
||||
return PathFilter.fromMap(jsonMap);
|
||||
case QueryFilter.type:
|
||||
|
|
|
@ -56,7 +56,7 @@ class LocationFilter extends CoveredCollectionFilter {
|
|||
String get universalLabel => _location;
|
||||
|
||||
@override
|
||||
String getLabel(BuildContext context) => _location.isEmpty ? context.l10n.filterLocationEmptyLabel : _location;
|
||||
String getLabel(BuildContext context) => _location.isEmpty ? context.l10n.filterNoLocationLabel : _location;
|
||||
|
||||
@override
|
||||
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) {
|
||||
|
|
73
lib/model/filters/missing.dart
Normal file
|
@ -0,0 +1,73 @@
|
|||
import 'package:aves/model/filters/filters.dart';
|
||||
import 'package:aves/theme/icons.dart';
|
||||
import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class MissingFilter extends CollectionFilter {
|
||||
static const type = 'missing';
|
||||
|
||||
static const _date = 'date';
|
||||
static const _title = 'title';
|
||||
|
||||
final String metadataType;
|
||||
late final EntryFilter _test;
|
||||
late final IconData _icon;
|
||||
|
||||
static final date = MissingFilter._private(_date);
|
||||
static final title = MissingFilter._private(_title);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [metadataType];
|
||||
|
||||
MissingFilter._private(this.metadataType) {
|
||||
switch (metadataType) {
|
||||
case _date:
|
||||
_test = (entry) => (entry.catalogMetadata?.dateMillis ?? 0) == 0;
|
||||
_icon = AIcons.dateUndated;
|
||||
break;
|
||||
case _title:
|
||||
_test = (entry) => (entry.catalogMetadata?.xmpTitle ?? '').isEmpty;
|
||||
_icon = AIcons.descriptionUntitled;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
factory MissingFilter.fromMap(Map<String, dynamic> json) {
|
||||
return MissingFilter._private(
|
||||
json['metadataType'],
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toMap() => {
|
||||
'type': type,
|
||||
'metadataType': metadataType,
|
||||
};
|
||||
|
||||
@override
|
||||
EntryFilter get test => _test;
|
||||
|
||||
@override
|
||||
String get universalLabel => metadataType;
|
||||
|
||||
@override
|
||||
String getLabel(BuildContext context) {
|
||||
switch (metadataType) {
|
||||
case _date:
|
||||
return context.l10n.filterNoDateLabel;
|
||||
case _title:
|
||||
return context.l10n.filterNoTitleLabel;
|
||||
default:
|
||||
return metadataType;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(_icon, size: size);
|
||||
|
||||
@override
|
||||
String get category => type;
|
||||
|
||||
@override
|
||||
String get key => '$type-$metadataType';
|
||||
}
|
|
@ -57,7 +57,7 @@ class RatingFilter extends CollectionFilter {
|
|||
case -1:
|
||||
return context.l10n.filterRatingRejectedLabel;
|
||||
case 0:
|
||||
return context.l10n.filterRatingUnratedLabel;
|
||||
return context.l10n.filterNoRatingLabel;
|
||||
default:
|
||||
return '\u2B50' * rating;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ class RecentlyAddedFilter extends CollectionFilter {
|
|||
String getLabel(BuildContext context) => context.l10n.filterRecentlyAddedLabel;
|
||||
|
||||
@override
|
||||
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(AIcons.recent, size: size);
|
||||
Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(AIcons.dateRecent, size: size);
|
||||
|
||||
@override
|
||||
String get category => type;
|
||||
|
|
|
@ -44,7 +44,7 @@ class TagFilter extends CoveredCollectionFilter {
|
|||
String get universalLabel => tag;
|
||||
|
||||
@override
|
||||
String getLabel(BuildContext context) => tag.isEmpty ? context.l10n.filterTagEmptyLabel : tag;
|
||||
String getLabel(BuildContext context) => tag.isEmpty ? context.l10n.filterNoTagLabel : tag;
|
||||
|
||||
@override
|
||||
Widget? iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => showGenericIcon ? Icon(tag.isEmpty ? AIcons.tagUntagged : AIcons.tag, size: size) : null;
|
||||
|
|
|
@ -46,7 +46,7 @@ class TypeFilter extends CollectionFilter {
|
|||
break;
|
||||
case _panorama:
|
||||
_test = (entry) => entry.isImage && entry.is360;
|
||||
_icon = AIcons.threeSixty;
|
||||
_icon = AIcons.panorama;
|
||||
break;
|
||||
case _raw:
|
||||
_test = (entry) => entry.isRaw;
|
||||
|
@ -54,7 +54,7 @@ class TypeFilter extends CollectionFilter {
|
|||
break;
|
||||
case _sphericalVideo:
|
||||
_test = (entry) => entry.isVideo && entry.is360;
|
||||
_icon = AIcons.threeSixty;
|
||||
_icon = AIcons.sphericalVideo;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import 'package:aves/model/filters/mime.dart';
|
|||
import 'package:aves/model/filters/recent.dart';
|
||||
import 'package:aves/model/naming_pattern.dart';
|
||||
import 'package:aves/model/settings/enums/enums.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/widgets/filter_grids/albums_page.dart';
|
||||
import 'package:aves/widgets/filter_grids/countries_page.dart';
|
||||
import 'package:aves/widgets/filter_grids/tags_page.dart';
|
||||
|
|
|
@ -9,9 +9,9 @@ extension ExtraHomePageSetting on HomePageSetting {
|
|||
String getName(BuildContext context) {
|
||||
switch (this) {
|
||||
case HomePageSetting.collection:
|
||||
return context.l10n.collectionPageTitle;
|
||||
return context.l10n.drawerCollectionAll;
|
||||
case HomePageSetting.albums:
|
||||
return context.l10n.albumPageTitle;
|
||||
return context.l10n.drawerAlbumPage;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:aves/l10n/l10n.dart';
|
||||
|
@ -8,13 +9,14 @@ import 'package:aves/model/filters/filters.dart';
|
|||
import 'package:aves/model/settings/defaults.dart';
|
||||
import 'package:aves/model/settings/enums/enums.dart';
|
||||
import 'package:aves/model/settings/enums/map_style.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/services/common/optional_event_channel.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves_map/aves_map.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
|
||||
final Settings settings = Settings._private();
|
||||
|
||||
|
@ -73,6 +75,7 @@ class Settings extends ChangeNotifier {
|
|||
// collection
|
||||
static const collectionGroupFactorKey = 'collection_group_factor';
|
||||
static const collectionSortFactorKey = 'collection_sort_factor';
|
||||
static const collectionSortReverseKey = 'collection_sort_reverse';
|
||||
static const collectionBrowsingQuickActionsKey = 'collection_browsing_quick_actions';
|
||||
static const collectionSelectionQuickActionsKey = 'collection_selection_quick_actions';
|
||||
static const showThumbnailFavouriteKey = 'show_thumbnail_favourite';
|
||||
|
@ -88,6 +91,9 @@ class Settings extends ChangeNotifier {
|
|||
static const albumSortFactorKey = 'album_sort_factor';
|
||||
static const countrySortFactorKey = 'country_sort_factor';
|
||||
static const tagSortFactorKey = 'tag_sort_factor';
|
||||
static const albumSortReverseKey = 'album_sort_reverse';
|
||||
static const countrySortReverseKey = 'country_sort_reverse';
|
||||
static const tagSortReverseKey = 'tag_sort_reverse';
|
||||
static const pinnedFiltersKey = 'pinned_filters';
|
||||
static const hiddenFiltersKey = 'hidden_filters';
|
||||
|
||||
|
@ -121,11 +127,14 @@ class Settings extends ChangeNotifier {
|
|||
static const subtitleBackgroundColorKey = 'subtitle_background_color';
|
||||
|
||||
// info
|
||||
static const infoMapStyleKey = 'info_map_style';
|
||||
static const infoMapZoomKey = 'info_map_zoom';
|
||||
static const coordinateFormatKey = 'coordinates_format';
|
||||
static const unitSystemKey = 'unit_system';
|
||||
|
||||
// map
|
||||
static const mapStyleKey = 'info_map_style';
|
||||
static const mapDefaultCenterKey = 'map_default_center';
|
||||
|
||||
// search
|
||||
static const saveSearchHistoryKey = 'save_search_history';
|
||||
static const searchHistoryKey = 'search_history';
|
||||
|
@ -172,6 +181,7 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
Future<void> init({required bool monitorPlatformSettings}) async {
|
||||
await settingsStore.init();
|
||||
_appliedLocale = null;
|
||||
if (monitorPlatformSettings) {
|
||||
_platformSettingsChangeChannel.receiveBroadcastStream().listen((event) => _onPlatformSettingsChange(event as Map?));
|
||||
}
|
||||
|
@ -197,10 +207,10 @@ class Settings extends ChangeNotifier {
|
|||
// availability
|
||||
final defaultMapStyle = mobileServices.defaultMapStyle;
|
||||
if (mobileServices.mapStyles.contains(defaultMapStyle)) {
|
||||
infoMapStyle = defaultMapStyle;
|
||||
mapStyle = defaultMapStyle;
|
||||
} else {
|
||||
final styles = EntryMapStyle.values.whereNot((v) => v.needMobileService).toList();
|
||||
infoMapStyle = styles[Random().nextInt(styles.length)];
|
||||
mapStyle = styles[Random().nextInt(styles.length)];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -382,6 +392,10 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
set collectionSortFactor(EntrySortFactor newValue) => setAndNotify(collectionSortFactorKey, newValue.toString());
|
||||
|
||||
bool get collectionSortReverse => getBoolOrDefault(collectionSortReverseKey, false);
|
||||
|
||||
set collectionSortReverse(bool newValue) => setAndNotify(collectionSortReverseKey, newValue);
|
||||
|
||||
List<EntrySetAction> get collectionBrowsingQuickActions => getEnumListOrDefault(collectionBrowsingQuickActionsKey, SettingsDefaults.collectionBrowsingQuickActions, EntrySetAction.values);
|
||||
|
||||
set collectionBrowsingQuickActions(List<EntrySetAction> newValue) => setAndNotify(collectionBrowsingQuickActionsKey, newValue.map((v) => v.toString()).toList());
|
||||
|
@ -436,6 +450,18 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
set tagSortFactor(ChipSortFactor newValue) => setAndNotify(tagSortFactorKey, newValue.toString());
|
||||
|
||||
bool get albumSortReverse => getBoolOrDefault(albumSortReverseKey, false);
|
||||
|
||||
set albumSortReverse(bool newValue) => setAndNotify(albumSortReverseKey, newValue);
|
||||
|
||||
bool get countrySortReverse => getBoolOrDefault(countrySortReverseKey, false);
|
||||
|
||||
set countrySortReverse(bool newValue) => setAndNotify(countrySortReverseKey, newValue);
|
||||
|
||||
bool get tagSortReverse => getBoolOrDefault(tagSortReverseKey, false);
|
||||
|
||||
set tagSortReverse(bool newValue) => setAndNotify(tagSortReverseKey, newValue);
|
||||
|
||||
Set<CollectionFilter> get pinnedFilters => (getStringList(pinnedFiltersKey) ?? []).map(CollectionFilter.fromJson).whereNotNull().toSet();
|
||||
|
||||
set pinnedFilters(Set<CollectionFilter> newValue) => setAndNotify(pinnedFiltersKey, newValue.map((filter) => filter.toJson()).toList());
|
||||
|
@ -555,14 +581,6 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
// info
|
||||
|
||||
EntryMapStyle get infoMapStyle {
|
||||
final preferred = getEnumOrDefault(infoMapStyleKey, SettingsDefaults.infoMapStyle, EntryMapStyle.values);
|
||||
final available = availability.mapStyles;
|
||||
return available.contains(preferred) ? preferred : available.first;
|
||||
}
|
||||
|
||||
set infoMapStyle(EntryMapStyle newValue) => setAndNotify(infoMapStyleKey, newValue.toString());
|
||||
|
||||
double get infoMapZoom => getDouble(infoMapZoomKey) ?? SettingsDefaults.infoMapZoom;
|
||||
|
||||
set infoMapZoom(double newValue) => setAndNotify(infoMapZoomKey, newValue);
|
||||
|
@ -575,6 +593,23 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
set unitSystem(UnitSystem newValue) => setAndNotify(unitSystemKey, newValue.toString());
|
||||
|
||||
// map
|
||||
|
||||
EntryMapStyle get mapStyle {
|
||||
final preferred = getEnumOrDefault(mapStyleKey, SettingsDefaults.infoMapStyle, EntryMapStyle.values);
|
||||
final available = availability.mapStyles;
|
||||
return available.contains(preferred) ? preferred : available.first;
|
||||
}
|
||||
|
||||
set mapStyle(EntryMapStyle newValue) => setAndNotify(mapStyleKey, newValue.toString());
|
||||
|
||||
LatLng? get mapDefaultCenter {
|
||||
final json = getString(mapDefaultCenterKey);
|
||||
return json != null ? LatLng.fromJson(jsonDecode(json)) : null;
|
||||
}
|
||||
|
||||
set mapDefaultCenter(LatLng? newValue) => setAndNotify(mapDefaultCenterKey, newValue != null ? jsonEncode(newValue.toJson()) : null);
|
||||
|
||||
// search
|
||||
|
||||
bool get saveSearchHistory => getBoolOrDefault(saveSearchHistoryKey, SettingsDefaults.saveSearchHistory);
|
||||
|
@ -813,6 +848,7 @@ class Settings extends ChangeNotifier {
|
|||
case confirmMoveUndatedItemsKey:
|
||||
case confirmAfterMoveToBinKey:
|
||||
case setMetadataDateBeforeFileOpKey:
|
||||
case collectionSortReverseKey:
|
||||
case showThumbnailFavouriteKey:
|
||||
case showThumbnailTagKey:
|
||||
case showThumbnailLocationKey:
|
||||
|
@ -820,6 +856,9 @@ class Settings extends ChangeNotifier {
|
|||
case showThumbnailRatingKey:
|
||||
case showThumbnailRawKey:
|
||||
case showThumbnailVideoDurationKey:
|
||||
case albumSortReverseKey:
|
||||
case countrySortReverseKey:
|
||||
case tagSortReverseKey:
|
||||
case showOverlayOnOpeningKey:
|
||||
case showOverlayMinimapKey:
|
||||
case showOverlayInfoKey:
|
||||
|
@ -862,7 +901,8 @@ class Settings extends ChangeNotifier {
|
|||
case videoLoopModeKey:
|
||||
case videoControlsKey:
|
||||
case subtitleTextAlignmentKey:
|
||||
case infoMapStyleKey:
|
||||
case mapStyleKey:
|
||||
case mapDefaultCenterKey:
|
||||
case coordinateFormatKey:
|
||||
case unitSystemKey:
|
||||
case accessibilityAnimationsKey:
|
||||
|
|
|
@ -4,12 +4,13 @@ import 'package:aves/model/settings/settings.dart';
|
|||
import 'package:aves/model/source/collection_source.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves/utils/android_file_utils.dart';
|
||||
import 'package:aves/utils/collection_utils.dart';
|
||||
import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
mixin AlbumMixin on SourceBase {
|
||||
final Set<String?> _directories = {};
|
||||
final Set<String> _directories = {};
|
||||
final Set<String> _newAlbums = {};
|
||||
|
||||
List<String> get rawAlbums => List.unmodifiable(_directories);
|
||||
|
@ -67,7 +68,7 @@ mixin AlbumMixin on SourceBase {
|
|||
|
||||
void addDirectories({required Set<String?> albums, bool notify = true}) {
|
||||
if (!_directories.containsAll(albums)) {
|
||||
_directories.addAll(albums);
|
||||
_directories.addAll(albums.whereNotNull());
|
||||
_onAlbumChanged(notify: notify);
|
||||
}
|
||||
}
|
||||
|
@ -95,7 +96,7 @@ mixin AlbumMixin on SourceBase {
|
|||
// filter summary
|
||||
|
||||
// by directory
|
||||
final Map<String, int> _filterEntryCountMap = {};
|
||||
final Map<String, int> _filterEntryCountMap = {}, _filterSizeMap = {};
|
||||
final Map<String, AvesEntry?> _filterRecentEntryMap = {};
|
||||
|
||||
void invalidateAlbumFilterSummary({
|
||||
|
@ -103,10 +104,11 @@ mixin AlbumMixin on SourceBase {
|
|||
Set<String?>? directories,
|
||||
bool notify = true,
|
||||
}) {
|
||||
if (_filterEntryCountMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
if (_filterEntryCountMap.isEmpty && _filterSizeMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
|
||||
if (entries == null && directories == null) {
|
||||
_filterEntryCountMap.clear();
|
||||
_filterSizeMap.clear();
|
||||
_filterRecentEntryMap.clear();
|
||||
} else {
|
||||
directories ??= {};
|
||||
|
@ -115,6 +117,7 @@ mixin AlbumMixin on SourceBase {
|
|||
}
|
||||
directories.forEach((directory) {
|
||||
_filterEntryCountMap.remove(directory);
|
||||
_filterSizeMap.remove(directory);
|
||||
_filterRecentEntryMap.remove(directory);
|
||||
});
|
||||
}
|
||||
|
@ -127,6 +130,10 @@ mixin AlbumMixin on SourceBase {
|
|||
return _filterEntryCountMap.putIfAbsent(filter.album, () => visibleEntries.where(filter.test).length);
|
||||
}
|
||||
|
||||
int albumSize(AlbumFilter filter) {
|
||||
return _filterSizeMap.putIfAbsent(filter.album, () => visibleEntries.where(filter.test).map((v) => v.sizeBytes).sum);
|
||||
}
|
||||
|
||||
AvesEntry? albumRecentEntry(AlbumFilter filter) {
|
||||
return _filterRecentEntryMap.putIfAbsent(filter.album, () => sortedEntriesByDate.firstWhereOrNull(filter.test));
|
||||
}
|
||||
|
|
|
@ -22,13 +22,14 @@ import 'package:aves/utils/collection_utils.dart';
|
|||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'enums.dart';
|
||||
import 'enums/enums.dart';
|
||||
|
||||
class CollectionLens with ChangeNotifier {
|
||||
final CollectionSource source;
|
||||
final Set<CollectionFilter> filters;
|
||||
EntryGroupFactor sectionFactor;
|
||||
EntrySortFactor sortFactor;
|
||||
bool sortReverse;
|
||||
final AChangeNotifier filterChangeNotifier = AChangeNotifier(), sortSectionChangeNotifier = AChangeNotifier();
|
||||
final List<StreamSubscription> _subscriptions = [];
|
||||
int? id;
|
||||
|
@ -49,7 +50,8 @@ class CollectionLens with ChangeNotifier {
|
|||
this.fixedSelection,
|
||||
}) : filters = (filters ?? {}).whereNotNull().toSet(),
|
||||
sectionFactor = settings.collectionSectionFactor,
|
||||
sortFactor = settings.collectionSortFactor {
|
||||
sortFactor = settings.collectionSortFactor,
|
||||
sortReverse = settings.collectionSortReverse {
|
||||
id ??= hashCode;
|
||||
if (listenToSource) {
|
||||
final sourceEvents = source.eventBus;
|
||||
|
@ -84,6 +86,7 @@ class CollectionLens with ChangeNotifier {
|
|||
.where((event) => [
|
||||
Settings.collectionSortFactorKey,
|
||||
Settings.collectionGroupFactorKey,
|
||||
Settings.collectionSortReverseKey,
|
||||
].contains(event.key))
|
||||
.listen((_) => _onSettingsChanged()));
|
||||
refresh();
|
||||
|
@ -218,6 +221,9 @@ class CollectionLens with ChangeNotifier {
|
|||
_filteredSortedEntries.sort(AvesEntry.compareBySize);
|
||||
break;
|
||||
}
|
||||
if (sortReverse) {
|
||||
_filteredSortedEntries = _filteredSortedEntries.reversed.toList();
|
||||
}
|
||||
}
|
||||
|
||||
void _applySection() {
|
||||
|
@ -247,7 +253,8 @@ class CollectionLens with ChangeNotifier {
|
|||
break;
|
||||
case EntrySortFactor.name:
|
||||
final byAlbum = groupBy<AvesEntry, EntryAlbumSectionKey>(_filteredSortedEntries, (entry) => EntryAlbumSectionKey(entry.directory));
|
||||
sections = SplayTreeMap<EntryAlbumSectionKey, List<AvesEntry>>.of(byAlbum, (a, b) => source.compareAlbumsByName(a.directory!, b.directory!));
|
||||
final compare = sortReverse ? (a, b) => source.compareAlbumsByName(b.directory!, a.directory!) : (a, b) => source.compareAlbumsByName(a.directory!, b.directory!);
|
||||
sections = SplayTreeMap<EntryAlbumSectionKey, List<AvesEntry>>.of(byAlbum, compare);
|
||||
break;
|
||||
case EntrySortFactor.rating:
|
||||
sections = groupBy<AvesEntry, EntryRatingSectionKey>(_filteredSortedEntries, (entry) => EntryRatingSectionKey(entry.rating));
|
||||
|
@ -281,12 +288,14 @@ class CollectionLens with ChangeNotifier {
|
|||
void _onSettingsChanged() {
|
||||
final newSortFactor = settings.collectionSortFactor;
|
||||
final newSectionFactor = settings.collectionSectionFactor;
|
||||
final newSortReverse = settings.collectionSortReverse;
|
||||
|
||||
final needSort = sortFactor != newSortFactor;
|
||||
final needSort = sortFactor != newSortFactor || sortReverse != newSortReverse;
|
||||
final needSection = needSort || sectionFactor != newSectionFactor;
|
||||
|
||||
if (needSort) {
|
||||
sortFactor = newSortFactor;
|
||||
sortReverse = newSortReverse;
|
||||
_applySort();
|
||||
}
|
||||
if (needSection) {
|
||||
|
|
|
@ -13,7 +13,7 @@ import 'package:aves/model/metadata/trash.dart';
|
|||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/model/source/album.dart';
|
||||
import 'package:aves/model/source/analysis_controller.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/model/source/events.dart';
|
||||
import 'package:aves/model/source/location.dart';
|
||||
import 'package:aves/model/source/tag.dart';
|
||||
|
@ -283,6 +283,16 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
}) async {
|
||||
if (movedOps.isEmpty) return;
|
||||
|
||||
final replacedUris = movedOps
|
||||
.map((movedOp) => movedOp.newFields['path'] as String?)
|
||||
.map((targetPath) {
|
||||
final existingEntry = _rawEntries.firstWhereOrNull((entry) => entry.path == targetPath && !entry.trashed);
|
||||
return existingEntry?.uri;
|
||||
})
|
||||
.whereNotNull()
|
||||
.toSet();
|
||||
await removeEntries(replacedUris, includeTrash: false);
|
||||
|
||||
final fromAlbums = <String?>{};
|
||||
final movedEntries = <AvesEntry>{};
|
||||
final copy = moveType == MoveType.copy;
|
||||
|
@ -458,6 +468,13 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
return 0;
|
||||
}
|
||||
|
||||
int size(CollectionFilter filter) {
|
||||
if (filter is AlbumFilter) return albumSize(filter);
|
||||
if (filter is LocationFilter) return countrySize(filter);
|
||||
if (filter is TagFilter) return tagSize(filter);
|
||||
return 0;
|
||||
}
|
||||
|
||||
AvesEntry? recentEntry(CollectionFilter filter) {
|
||||
if (filter is AlbumFilter) return albumRecentEntry(filter);
|
||||
if (filter is LocationFilter) return countryRecentEntry(filter);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
enum SourceState { loading, cataloguing, locatingCountries, locatingPlaces, ready }
|
||||
|
||||
enum ChipSortFactor { date, name, count }
|
||||
enum ChipSortFactor { date, name, count, size }
|
||||
|
||||
enum AlbumChipGroupFactor { none, importance, volume }
|
||||
|
105
lib/model/source/enums/view.dart
Normal file
|
@ -0,0 +1,105 @@
|
|||
import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
import 'enums.dart';
|
||||
|
||||
extension ExtraEntrySortFactor on EntrySortFactor {
|
||||
String getName(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case EntrySortFactor.date:
|
||||
return l10n.sortByDate;
|
||||
case EntrySortFactor.name:
|
||||
return l10n.sortByAlbumFileName;
|
||||
case EntrySortFactor.rating:
|
||||
return l10n.sortByRating;
|
||||
case EntrySortFactor.size:
|
||||
return l10n.sortBySize;
|
||||
}
|
||||
}
|
||||
|
||||
String getOrderName(BuildContext context, bool reverse) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case EntrySortFactor.date:
|
||||
return reverse ? l10n.sortOrderOldestFirst : l10n.sortOrderNewestFirst;
|
||||
case EntrySortFactor.name:
|
||||
return reverse ? l10n.sortOrderZtoA : l10n.sortOrderAtoZ;
|
||||
case EntrySortFactor.rating:
|
||||
return reverse ? l10n.sortOrderLowestFirst : l10n.sortOrderHighestFirst;
|
||||
case EntrySortFactor.size:
|
||||
return reverse ? l10n.sortOrderSmallestFirst : l10n.sortOrderLargestFirst;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ExtraChipSortFactor on ChipSortFactor {
|
||||
String getName(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case ChipSortFactor.date:
|
||||
return l10n.sortByDate;
|
||||
case ChipSortFactor.name:
|
||||
return l10n.sortByName;
|
||||
case ChipSortFactor.count:
|
||||
return l10n.sortByItemCount;
|
||||
case ChipSortFactor.size:
|
||||
return l10n.sortBySize;
|
||||
}
|
||||
}
|
||||
|
||||
String getOrderName(BuildContext context, bool reverse) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case ChipSortFactor.date:
|
||||
return reverse ? l10n.sortOrderOldestFirst : l10n.sortOrderNewestFirst;
|
||||
case ChipSortFactor.name:
|
||||
return reverse ? l10n.sortOrderZtoA : l10n.sortOrderAtoZ;
|
||||
case ChipSortFactor.count:
|
||||
case ChipSortFactor.size:
|
||||
return reverse ? l10n.sortOrderSmallestFirst : l10n.sortOrderLargestFirst;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ExtraEntryGroupFactor on EntryGroupFactor {
|
||||
String getName(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case EntryGroupFactor.album:
|
||||
return l10n.collectionGroupAlbum;
|
||||
case EntryGroupFactor.month:
|
||||
return l10n.collectionGroupMonth;
|
||||
case EntryGroupFactor.day:
|
||||
return l10n.collectionGroupDay;
|
||||
case EntryGroupFactor.none:
|
||||
return l10n.collectionGroupNone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ExtraAlbumChipGroupFactor on AlbumChipGroupFactor {
|
||||
String getName(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case AlbumChipGroupFactor.importance:
|
||||
return l10n.albumGroupTier;
|
||||
case AlbumChipGroupFactor.volume:
|
||||
return l10n.albumGroupVolume;
|
||||
case AlbumChipGroupFactor.none:
|
||||
return l10n.albumGroupNone;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ExtraTileLayout on TileLayout {
|
||||
String getName(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
switch (this) {
|
||||
case TileLayout.grid:
|
||||
return l10n.tileLayoutGrid;
|
||||
case TileLayout.list:
|
||||
return l10n.tileLayoutList;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,8 +7,9 @@ import 'package:aves/model/metadata/address.dart';
|
|||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/model/source/analysis_controller.dart';
|
||||
import 'package:aves/model/source/collection_source.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves/utils/collection_utils.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:tuple/tuple.dart';
|
||||
|
@ -180,7 +181,7 @@ mixin LocationMixin on SourceBase {
|
|||
// filter summary
|
||||
|
||||
// by country code
|
||||
final Map<String, int> _filterEntryCountMap = {};
|
||||
final Map<String, int> _filterEntryCountMap = {}, _filterSizeMap = {};
|
||||
final Map<String, AvesEntry?> _filterRecentEntryMap = {};
|
||||
|
||||
void invalidateCountryFilterSummary({
|
||||
|
@ -188,10 +189,11 @@ mixin LocationMixin on SourceBase {
|
|||
Set<String>? countryCodes,
|
||||
bool notify = true,
|
||||
}) {
|
||||
if (_filterEntryCountMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
if (_filterEntryCountMap.isEmpty && _filterSizeMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
|
||||
if (entries == null && countryCodes == null) {
|
||||
_filterEntryCountMap.clear();
|
||||
_filterSizeMap.clear();
|
||||
_filterRecentEntryMap.clear();
|
||||
} else {
|
||||
countryCodes ??= {};
|
||||
|
@ -200,6 +202,7 @@ mixin LocationMixin on SourceBase {
|
|||
}
|
||||
countryCodes.forEach((countryCode) {
|
||||
_filterEntryCountMap.remove(countryCode);
|
||||
_filterSizeMap.remove(countryCode);
|
||||
_filterRecentEntryMap.remove(countryCode);
|
||||
});
|
||||
}
|
||||
|
@ -214,6 +217,12 @@ mixin LocationMixin on SourceBase {
|
|||
return _filterEntryCountMap.putIfAbsent(countryCode, () => visibleEntries.where(filter.test).length);
|
||||
}
|
||||
|
||||
int countrySize(LocationFilter filter) {
|
||||
final countryCode = filter.countryCode;
|
||||
if (countryCode == null) return 0;
|
||||
return _filterSizeMap.putIfAbsent(countryCode, () => visibleEntries.where(filter.test).map((v) => v.sizeBytes).sum);
|
||||
}
|
||||
|
||||
AvesEntry? countryRecentEntry(LocationFilter filter) {
|
||||
final countryCode = filter.countryCode;
|
||||
if (countryCode == null) return null;
|
||||
|
|
|
@ -7,7 +7,7 @@ import 'package:aves/model/favourites.dart';
|
|||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/model/source/analysis_controller.dart';
|
||||
import 'package:aves/model/source/collection_source.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves/utils/android_file_utils.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:aves/l10n/l10n.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
|
||||
extension ExtraSourceState on SourceState {
|
||||
String? getName(AppLocalizations l10n) {
|
||||
|
|
|
@ -3,8 +3,9 @@ import 'package:aves/model/filters/tag.dart';
|
|||
import 'package:aves/model/metadata/catalog.dart';
|
||||
import 'package:aves/model/source/analysis_controller.dart';
|
||||
import 'package:aves/model/source/collection_source.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves/utils/collection_utils.dart';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
|
@ -75,7 +76,7 @@ mixin TagMixin on SourceBase {
|
|||
// filter summary
|
||||
|
||||
// by tag
|
||||
final Map<String, int> _filterEntryCountMap = {};
|
||||
final Map<String, int> _filterEntryCountMap = {}, _filterSizeMap = {};
|
||||
final Map<String, AvesEntry?> _filterRecentEntryMap = {};
|
||||
|
||||
void invalidateTagFilterSummary({
|
||||
|
@ -83,10 +84,11 @@ mixin TagMixin on SourceBase {
|
|||
Set<String>? tags,
|
||||
bool notify = true,
|
||||
}) {
|
||||
if (_filterEntryCountMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
if (_filterEntryCountMap.isEmpty && _filterSizeMap.isEmpty && _filterRecentEntryMap.isEmpty) return;
|
||||
|
||||
if (entries == null && tags == null) {
|
||||
_filterEntryCountMap.clear();
|
||||
_filterSizeMap.clear();
|
||||
_filterRecentEntryMap.clear();
|
||||
} else {
|
||||
tags ??= {};
|
||||
|
@ -95,6 +97,7 @@ mixin TagMixin on SourceBase {
|
|||
}
|
||||
tags.forEach((tag) {
|
||||
_filterEntryCountMap.remove(tag);
|
||||
_filterSizeMap.remove(tag);
|
||||
_filterRecentEntryMap.remove(tag);
|
||||
});
|
||||
}
|
||||
|
@ -107,6 +110,10 @@ mixin TagMixin on SourceBase {
|
|||
return _filterEntryCountMap.putIfAbsent(filter.tag, () => visibleEntries.where(filter.test).length);
|
||||
}
|
||||
|
||||
int tagSize(TagFilter filter) {
|
||||
return _filterSizeMap.putIfAbsent(filter.tag, () => visibleEntries.where(filter.test).map((v) => v.sizeBytes).sum);
|
||||
}
|
||||
|
||||
AvesEntry? tagRecentEntry(TagFilter filter) {
|
||||
return _filterRecentEntryMap.putIfAbsent(filter.tag, () => sortedEntriesByDate.firstWhereOrNull(filter.test));
|
||||
}
|
||||
|
|
|
@ -22,8 +22,7 @@ import 'package:fijkplayer/fijkplayer.dart';
|
|||
import 'package:flutter/foundation.dart';
|
||||
|
||||
class VideoMetadataFormatter {
|
||||
static final _dateY4M2D2H2m2s2Pattern = RegExp(r'(\d{4})[-/](\d{2})[-/](\d{2}) (\d{2}):(\d{2}):(\d{2})');
|
||||
static final _dateY4M2D2H2m2s2APmPattern = RegExp(r'(\d{4})[-/](\d{1,2})[-/](\d{1,2})T(\d+):(\d+):(\d+)( ([ap]\.? ?m\.?))?Z');
|
||||
static final _dateY4M2D2H2m2s2Pattern = RegExp(r'(\d{4})[-./](\d{1,2})[-./](\d{1,2})([ T](\d{1,2}):(\d{1,2}):(\d{1,2})( ([ap]\.? ?m\.?))?)?');
|
||||
static final _ambiguousDatePatterns = {
|
||||
RegExp(r'^\d{2}[-/]\d{2}[-/]\d{4}$'),
|
||||
};
|
||||
|
@ -126,6 +125,7 @@ class VideoMetadataFormatter {
|
|||
// - `2021-09-10T7:14:49 pmZ`
|
||||
// - `2022-01-28T5:07:46 p. m.Z`
|
||||
// - `2012-1-1T12:00:00Z`
|
||||
// - `2020.10.14`
|
||||
// - `2021` (not enough to build a date)
|
||||
|
||||
var match = _dateY4M2D2H2m2s2Pattern.firstMatch(dateString);
|
||||
|
@ -133,27 +133,16 @@ class VideoMetadataFormatter {
|
|||
final year = int.tryParse(match.group(1)!);
|
||||
final month = int.tryParse(match.group(2)!);
|
||||
final day = int.tryParse(match.group(3)!);
|
||||
final hour = int.tryParse(match.group(4)!);
|
||||
final minute = int.tryParse(match.group(5)!);
|
||||
final second = int.tryParse(match.group(6)!);
|
||||
|
||||
if (year != null && month != null && day != null && hour != null && minute != null && second != null) {
|
||||
final date = DateTime(year, month, day, hour, minute, second, 0);
|
||||
return date.millisecondsSinceEpoch;
|
||||
}
|
||||
}
|
||||
if (year != null && month != null && day != null) {
|
||||
var hour = 0, minute = 0, second = 0, pm = false;
|
||||
if (match.groupCount >= 7 && match.group(4) != null) {
|
||||
hour = int.tryParse(match.group(5)!) ?? 0;
|
||||
minute = int.tryParse(match.group(6)!) ?? 0;
|
||||
second = int.tryParse(match.group(7)!) ?? 0;
|
||||
pm = match.group(9) == 'pm';
|
||||
}
|
||||
|
||||
match = _dateY4M2D2H2m2s2APmPattern.firstMatch(dateString);
|
||||
if (match != null) {
|
||||
final year = int.tryParse(match.group(1)!);
|
||||
final month = int.tryParse(match.group(2)!);
|
||||
final day = int.tryParse(match.group(3)!);
|
||||
final hour = int.tryParse(match.group(4)!);
|
||||
final minute = int.tryParse(match.group(5)!);
|
||||
final second = int.tryParse(match.group(6)!);
|
||||
final pm = match.group(8) == 'pm';
|
||||
|
||||
if (year != null && month != null && day != null && hour != null && minute != null && second != null) {
|
||||
final date = DateTime(year, month, day, hour + (pm ? 12 : 0), minute, second, 0);
|
||||
return date.millisecondsSinceEpoch;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ class IPTC {
|
|||
static const int applicationRecord = 2;
|
||||
|
||||
// ApplicationRecord tags
|
||||
static const int objectName = 5;
|
||||
static const int keywordsTag = 25;
|
||||
static const int captionAbstractTag = 120;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import 'dart:ui';
|
|||
import 'package:aves/l10n/l10n.dart';
|
||||
import 'package:aves/model/settings/settings.dart';
|
||||
import 'package:aves/model/source/analysis_controller.dart';
|
||||
import 'package:aves/model/source/enums.dart';
|
||||
import 'package:aves/model/source/enums/enums.dart';
|
||||
import 'package:aves/model/source/media_store_source.dart';
|
||||
import 'package:aves/model/source/source_state.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
|
|
27
lib/services/media/byte_receiving_codec.dart
Normal file
|
@ -0,0 +1,27 @@
|
|||
import 'package:flutter/services.dart';
|
||||
|
||||
class AvesByteReceivingMethodCodec extends StandardMethodCodec {
|
||||
const AvesByteReceivingMethodCodec() : super();
|
||||
|
||||
@override
|
||||
dynamic decodeEnvelope(ByteData envelope) {
|
||||
// First byte is zero in success case, and non-zero otherwise.
|
||||
if (envelope.lengthInBytes == 0) {
|
||||
throw const FormatException('Expected envelope, got nothing');
|
||||
}
|
||||
final ReadBuffer buffer = ReadBuffer(envelope);
|
||||
if (buffer.getUint8() == 0) {
|
||||
return envelope.buffer.asUint8List(envelope.offsetInBytes + 1, envelope.lengthInBytes - 1);
|
||||
}
|
||||
|
||||
final Object? errorCode = messageCodec.readValue(buffer);
|
||||
final Object? errorMessage = messageCodec.readValue(buffer);
|
||||
final Object? errorDetails = messageCodec.readValue(buffer);
|
||||
final String? errorStacktrace = (buffer.hasRemaining) ? messageCodec.readValue(buffer) as String? : null;
|
||||
if (errorCode is String && (errorMessage == null || errorMessage is String) && !buffer.hasRemaining) {
|
||||
throw PlatformException(code: errorCode, message: errorMessage as String?, details: errorDetails, stacktrace: errorStacktrace);
|
||||
} else {
|
||||
throw const FormatException('Invalid envelope');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ import 'package:aves/ref/mime_types.dart';
|
|||
import 'package:aves/services/common/output_buffer.dart';
|
||||
import 'package:aves/services/common/service_policy.dart';
|
||||
import 'package:aves/services/common/services.dart';
|
||||
import 'package:aves/services/media/byte_receiving_codec.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:streams_channel/streams_channel.dart';
|
||||
|
@ -26,7 +27,7 @@ abstract class MediaFetchService {
|
|||
int? rotationDegrees,
|
||||
bool isFlipped, {
|
||||
int? pageId,
|
||||
int? expectedContentLength,
|
||||
int? sizeBytes,
|
||||
BytesReceivedCallback? onBytesReceived,
|
||||
});
|
||||
|
||||
|
@ -66,14 +67,15 @@ abstract class MediaFetchService {
|
|||
}
|
||||
|
||||
class PlatformMediaFetchService implements MediaFetchService {
|
||||
static const _platform = MethodChannel('deckers.thibault/aves/media_fetch');
|
||||
static const _platformObject = MethodChannel('deckers.thibault/aves/media_fetch_object');
|
||||
static const _platformBytes = MethodChannel('deckers.thibault/aves/media_fetch_bytes', AvesByteReceivingMethodCodec());
|
||||
static final _byteStream = StreamsChannel('deckers.thibault/aves/media_byte_stream');
|
||||
static const double _thumbnailDefaultSize = 64.0;
|
||||
|
||||
@override
|
||||
Future<AvesEntry?> getEntry(String uri, String? mimeType) async {
|
||||
try {
|
||||
final result = await _platform.invokeMethod('getEntry', <String, dynamic>{
|
||||
final result = await _platformObject.invokeMethod('getEntry', <String, dynamic>{
|
||||
'uri': uri,
|
||||
'mimeType': mimeType,
|
||||
}) as Map;
|
||||
|
@ -100,7 +102,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
mimeType,
|
||||
0,
|
||||
false,
|
||||
expectedContentLength: expectedContentLength,
|
||||
sizeBytes: expectedContentLength,
|
||||
onBytesReceived: onBytesReceived,
|
||||
);
|
||||
|
||||
|
@ -111,7 +113,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
int? rotationDegrees,
|
||||
bool isFlipped, {
|
||||
int? pageId,
|
||||
int? expectedContentLength,
|
||||
int? sizeBytes,
|
||||
BytesReceivedCallback? onBytesReceived,
|
||||
}) async {
|
||||
try {
|
||||
|
@ -121,6 +123,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
_byteStream.receiveBroadcastStream(<String, dynamic>{
|
||||
'uri': uri,
|
||||
'mimeType': mimeType,
|
||||
'sizeBytes': sizeBytes,
|
||||
'rotationDegrees': rotationDegrees ?? 0,
|
||||
'isFlipped': isFlipped,
|
||||
'pageId': pageId,
|
||||
|
@ -131,7 +134,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
if (onBytesReceived != null) {
|
||||
bytesReceived += chunk.length;
|
||||
try {
|
||||
onBytesReceived(bytesReceived, expectedContentLength);
|
||||
onBytesReceived(bytesReceived, sizeBytes);
|
||||
} catch (error, stack) {
|
||||
completer.completeError(error, stack);
|
||||
return;
|
||||
|
@ -171,7 +174,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
return servicePolicy.call(
|
||||
() async {
|
||||
try {
|
||||
final result = await _platform.invokeMethod('getRegion', <String, dynamic>{
|
||||
final result = await _platformBytes.invokeMethod('getRegion', <String, dynamic>{
|
||||
'uri': uri,
|
||||
'mimeType': mimeType,
|
||||
'pageId': pageId,
|
||||
|
@ -211,7 +214,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
return servicePolicy.call(
|
||||
() async {
|
||||
try {
|
||||
final result = await _platform.invokeMethod('getThumbnail', <String, dynamic>{
|
||||
final result = await _platformBytes.invokeMethod('getThumbnail', <String, dynamic>{
|
||||
'uri': uri,
|
||||
'mimeType': mimeType,
|
||||
'dateModifiedSecs': dateModifiedSecs,
|
||||
|
@ -238,7 +241,7 @@ class PlatformMediaFetchService implements MediaFetchService {
|
|||
@override
|
||||
Future<void> clearSizedThumbnailDiskCache() async {
|
||||
try {
|
||||
return _platform.invokeMethod('clearSizedThumbnailDiskCache');
|
||||
return _platformObject.invokeMethod('clearSizedThumbnailDiskCache');
|
||||
} on PlatformException catch (e, stack) {
|
||||
await reportService.recordError(e, stack);
|
||||
}
|
||||
|
|
|
@ -95,6 +95,7 @@ class DurationsData {
|
|||
// common animations
|
||||
final Duration expansionTileAnimation;
|
||||
final Duration formTransition;
|
||||
final Duration chartTransition;
|
||||
final Duration iconAnimation;
|
||||
final Duration staggeredAnimation;
|
||||
final Duration staggeredAnimationPageTarget;
|
||||
|
@ -110,6 +111,7 @@ class DurationsData {
|
|||
const DurationsData({
|
||||
this.expansionTileAnimation = const Duration(milliseconds: 200),
|
||||
this.formTransition = const Duration(milliseconds: 200),
|
||||
this.chartTransition = const Duration(milliseconds: 400),
|
||||
this.iconAnimation = const Duration(milliseconds: 300),
|
||||
this.staggeredAnimation = const Duration(milliseconds: 375),
|
||||
this.staggeredAnimationPageTarget = const Duration(milliseconds: 800),
|
||||
|
@ -123,6 +125,7 @@ class DurationsData {
|
|||
// as of Flutter v2.5.1, `ExpansionPanelList` throws if animation duration is zero
|
||||
expansionTileAnimation: const Duration(microseconds: 1),
|
||||
formTransition: Duration.zero,
|
||||
chartTransition: Duration.zero,
|
||||
iconAnimation: Duration.zero,
|
||||
staggeredAnimation: Duration.zero,
|
||||
staggeredAnimationPageTarget: Duration.zero,
|
||||
|
|
|
@ -16,7 +16,10 @@ class AIcons {
|
|||
static const IconData checked = Icons.done_outlined;
|
||||
static const IconData counter = Icons.plus_one_outlined;
|
||||
static const IconData date = Icons.calendar_today_outlined;
|
||||
static const IconData dateRecent = Icons.today_outlined;
|
||||
static const IconData dateUndated = Icons.event_busy_outlined;
|
||||
static const IconData description = Icons.description_outlined;
|
||||
static const IconData descriptionUntitled = Icons.comments_disabled_outlined;
|
||||
static const IconData disc = Icons.fiber_manual_record;
|
||||
static const IconData display = Icons.light_mode_outlined;
|
||||
static const IconData error = Icons.error_outline;
|
||||
|
@ -35,7 +38,6 @@ class AIcons {
|
|||
static const IconData ratingRejected = MdiIcons.starMinusOutline;
|
||||
static const IconData ratingUnrated = MdiIcons.starOffOutline;
|
||||
static const IconData raw = Icons.raw_on_outlined;
|
||||
static const IconData recent = Icons.today_outlined;
|
||||
static const IconData shooting = Icons.camera_outlined;
|
||||
static const IconData removableStorage = Icons.sd_storage_outlined;
|
||||
static const IconData sensorControlEnabled = Icons.explore_outlined;
|
||||
|
@ -49,6 +51,7 @@ class AIcons {
|
|||
static const IconData group = Icons.group_work_outlined;
|
||||
static const IconData layout = Icons.grid_view_outlined;
|
||||
static const IconData sort = Icons.sort_outlined;
|
||||
static const IconData sortOrder = Icons.swap_vert_outlined;
|
||||
|
||||
// actions
|
||||
static const IconData add = Icons.add_circle_outline;
|
||||
|
@ -134,7 +137,8 @@ class AIcons {
|
|||
static const IconData geo = Icons.language_outlined;
|
||||
static const IconData motionPhoto = Icons.motion_photos_on_outlined;
|
||||
static const IconData multiPage = Icons.burst_mode_outlined;
|
||||
static const IconData threeSixty = Icons.threesixty_outlined;
|
||||
static const IconData panorama = Icons.vrpano_outlined;
|
||||
static const IconData sphericalVideo = Icons.threesixty_outlined;
|
||||
static const IconData videoThumb = Icons.play_circle_outline;
|
||||
static const IconData selected = Icons.check_circle_outline;
|
||||
static const IconData unselected = Icons.radio_button_unchecked;
|
||||
|
|
|
@ -13,3 +13,7 @@ extension ExtraMapNullableKeyValue<K extends Object, V> on Map<K?, V?> {
|
|||
|
||||
Map<K?, V> whereNotNullValue() => <K?, V>{for (var kv in entries.where((kv) => kv.value != null)) kv.key: kv.value as V};
|
||||
}
|
||||
|
||||
extension ExtraNumIterable on Iterable<int?> {
|
||||
int get sum => fold(0, (prev, v) => prev + (v ?? 0));
|
||||
}
|
||||
|
|
|
@ -11,12 +11,19 @@ class Constants {
|
|||
|
||||
static const double colorPickerRadius = 16;
|
||||
|
||||
static const titleTextStyle = TextStyle(
|
||||
static const knownTitleTextStyle = TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w300,
|
||||
fontFeatures: [FontFeature.enable('smcp')],
|
||||
);
|
||||
|
||||
static TextStyle unknownTitleTextStyle = knownTitleTextStyle;
|
||||
|
||||
static void updateStylesForLocale(Locale locale) {
|
||||
final smcp = locale.languageCode != 'el';
|
||||
unknownTitleTextStyle = smcp ? knownTitleTextStyle : knownTitleTextStyle.copyWith(fontFeatures: []);
|
||||
}
|
||||
|
||||
static const embossShadows = [
|
||||
Shadow(
|
||||
color: Colors.black,
|
||||
|
|
|
@ -48,7 +48,8 @@ DateTime? dateTimeFromMillis(int? millis, {bool isUtc = false}) {
|
|||
final _unixStampMillisPattern = RegExp(r'\d{13}');
|
||||
final _unixStampSecPattern = RegExp(r'\d{10}');
|
||||
final _dateYMD8Hms6Sub3Pattern = RegExp(r'(\d{8})([_-\s](\d{6})([_-\s](\d{3}))?)?');
|
||||
final _dateY4M2D2H2m2s2Sub3Pattern = RegExp(r'(\d{4})-(\d{1,2})-(\d{1,2})-(\d{1,2})-(\d{1,2})-(\d{1,2})-(\d{1,3})');
|
||||
final _dateY4M2D2H2m2s2Sub3Pattern = RegExp(r'(\d{4})-(\d{1,2})-(\d{1,2})[ -](\d{1,2})[.-](\d{1,2})[.-](\d{1,2})([.-](\d{1,3})?)?');
|
||||
final _dateY4M2D2Hms6Pattern = RegExp(r'(\d{4})-(\d{1,2})-(\d{1,2}) (\d{6})');
|
||||
|
||||
DateTime? parseUnknownDateFormat(String? s) {
|
||||
if (s == null) return null;
|
||||
|
@ -110,12 +111,31 @@ DateTime? parseUnknownDateFormat(String? s) {
|
|||
final hour = int.tryParse(match.group(4)!);
|
||||
final minute = int.tryParse(match.group(5)!);
|
||||
final second = int.tryParse(match.group(6)!);
|
||||
final millis = int.tryParse(match.group(7)!);
|
||||
final millis = match.groupCount >= 8 ? int.tryParse(match.group(8) ?? '0') : 0;
|
||||
|
||||
if (year != null && month != null && day != null && hour != null && minute != null && second != null && millis != null) {
|
||||
return DateTime(year, month, day, hour, minute, second, millis);
|
||||
}
|
||||
}
|
||||
|
||||
match = _dateY4M2D2Hms6Pattern.firstMatch(s);
|
||||
if (match != null) {
|
||||
final year = int.tryParse(match.group(1)!);
|
||||
final month = int.tryParse(match.group(2)!);
|
||||
final day = int.tryParse(match.group(3)!);
|
||||
final timeString = match.group(4);
|
||||
|
||||
var hour = 0, minute = 0, second = 0;
|
||||
if (timeString != null) {
|
||||
hour = int.tryParse(timeString.substring(0, 2)) ?? 0;
|
||||
minute = int.tryParse(timeString.substring(2, 4)) ?? 0;
|
||||
second = int.tryParse(timeString.substring(4, 6)) ?? 0;
|
||||
}
|
||||
|
||||
if (year != null && month != null && day != null) {
|
||||
return DateTime(year, month, day, hour, minute, second);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|