diff --git a/README.md b/README.md index 78f1bc157..c4975eba2 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ At this stage this project does *not* accept PRs, except for translations. ### Translations -If you want to translate this app in your language and share the result, feel free to open a PR or send the translation by [email](mailto:gallery.aves@gmail.com). You can find some localization notes in [pubspec.yaml](https://github.com/deckerst/aves/blob/develop/pubspec.yaml). English, Korean and French are already handled. +If you want to translate this app in your language and share the result, feel free to open a PR or send the translation by [email](mailto:gallery.aves@gmail.com). You can find some localization notes in [pubspec.yaml](https://github.com/deckerst/aves/blob/develop/pubspec.yaml). English, Korean and French are already handled by me. Russian, German and Spanish are handled by generous volunteers. ### Donations diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index edebff219..b53ed158c 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -73,12 +73,15 @@ "videoActionSettings": "Einstellungen", "entryInfoActionEditDate": "Datum & Uhrzeit bearbeiten", + "entryInfoActionEditRating": "Bewertung bearbeiten", "entryInfoActionEditTags": "Tags bearbeiten", "entryInfoActionRemoveMetadata": "Metadaten entfernen", "filterFavouriteLabel": "Favorit", "filterLocationEmptyLabel": "Ungeortet", "filterTagEmptyLabel": "Unmarkiert", + "filterRatingUnratedLabel": "Nicht bewertet", + "filterRatingRejectedLabel": "Verworfen", "filterTypeAnimatedLabel": "Animationen", "filterTypeMotionPhotoLabel": "Bewegtes Foto", "filterTypePanoramaLabel": "Panorama", @@ -137,6 +140,8 @@ "restrictedAccessDialogMessage": "Diese Anwendung darf keine Dateien im {directory} von „{volume}“ verändern.\n\nBitte verwenden Sie einen vorinstallierten Dateimanager 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 Sie ihn und versuchen Sie es erneut.", "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}.}}", @@ -178,11 +183,17 @@ "renameEntryDialogLabel": "Neuer Name", "editEntryDateDialogTitle": "Datum & Uhrzeit", + "editEntryDateDialogSetCustom": "Benutzerdefiniertes Datum einstellen", + "editEntryDateDialogCopyField": "Von anderem Datum kopieren", "editEntryDateDialogExtractFromTitle": "Auszug aus dem Titel", "editEntryDateDialogShift": "Verschieben", + "editEntryDateDialogSourceFileModifiedDate": "Änderungsdatum der Datei", + "editEntryDateDialogTargetFieldsHeader": "Zu ändernde Felder", "editEntryDateDialogHours": "Stunden", "editEntryDateDialogMinutes": "Minuten", + "editEntryRatingDialogTitle": "Bewertung", + "removeEntryMetadataDialogTitle": "Entfernung von Metadaten", "removeEntryMetadataDialogMore": "Mehr", @@ -267,6 +278,7 @@ "collectionSortDate": "Nach Datum", "collectionSortSize": "Nach Größe", "collectionSortName": "Nach Album & Dateiname", + "collectionSortRating": "Nach Bewertung", "collectionGroupAlbum": "Nach Album", "collectionGroupMonth": "Nach Monat", @@ -340,6 +352,7 @@ "searchSectionCountries": "Länder", "searchSectionPlaces": "Orte", "searchSectionTags": "Tags", + "searchSectionRating": "Bewertungen", "settingsPageTitle": "Einstellungen", "settingsSystemDefault": "System", @@ -365,6 +378,7 @@ "settingsSectionThumbnails": "Vorschaubilder", "settingsThumbnailShowLocationIcon": "Standort-Symbol anzeigen", "settingsThumbnailShowMotionPhotoIcon": "Bewegungsfoto-Symbol anzeigen", + "settingsThumbnailShowRating": "Bewertung anzeigen", "settingsThumbnailShowRawIcon": "Rohdaten-Symbol anzeigen", "settingsThumbnailShowVideoDuration": "Videodauer anzeigen", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 8cbfe7f2b..a4b3ac6a8 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -112,10 +112,12 @@ "@coordinateDms": { "placeholders": { "coordinate": { - "type": "String" + "type": "String", + "example": "38° 41′ 47.72″" }, "direction": { - "type": "String" + "type": "String", + "example": "S" } } }, @@ -162,7 +164,9 @@ "@otherDirectoryDescription": { "placeholders": { "name": { - "type": "String" + "type": "String", + "example": "Pictures", + "description": "the name of a specific directory" } } }, @@ -171,10 +175,13 @@ "@storageAccessDialogMessage": { "placeholders": { "directory": { - "type": "String" + "type": "String", + "description": "the name of a directory, using the output of `rootDirectoryDescription` or `otherDirectoryDescription`" }, "volume": { - "type": "String" + "type": "String", + "example": "SD card", + "description": "the name of a storage volume" } } }, @@ -183,10 +190,13 @@ "@restrictedAccessDialogMessage": { "placeholders": { "directory": { - "type": "String" + "type": "String", + "description": "the name of a directory, using the output of `rootDirectoryDescription` or `otherDirectoryDescription`" }, "volume": { - "type": "String" + "type": "String", + "example": "SD card", + "description": "the name of a storage volume" } } }, @@ -195,13 +205,17 @@ "@notEnoughSpaceDialogMessage": { "placeholders": { "neededSize": { - "type": "String" + "type": "String", + "example": "314 MB" }, "freeSize": { - "type": "String" + "type": "String", + "example": "123 MB" }, "volume": { - "type": "String" + "type": "String", + "example": "SD card", + "description": "the name of a storage volume" } } }, @@ -214,7 +228,9 @@ "placeholders": { "count": {}, "types": { - "type": "String" + "type": "String", + "example": "GIF, TIFF, MP4", + "description": "a list of unsupported types" } } }, @@ -238,7 +254,10 @@ "videoResumeDialogMessage": "Do you want to resume playing at {time}?", "@videoResumeDialogMessage": { "placeholders": { - "time": {} + "time": { + "type": "String", + "example": "13:37" + } } }, "videoStartOverButtonLabel": "START OVER", @@ -346,10 +365,12 @@ "@aboutCreditsTranslatorLine": { "placeholders": { "language": { - "type": "String" + "type": "String", + "example": "Sumerian" }, "names": { - "type": "String" + "type": "String", + "example": "Reggie Lampert" } } }, diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 3975fda04..77d9a38af 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -73,6 +73,7 @@ "videoActionSettings": "Préférences", "entryInfoActionEditDate": "Modifier la date", + "entryInfoActionEditRating": "Modifier la notation", "entryInfoActionEditTags": "Modifier les libellés", "entryInfoActionRemoveMetadata": "Retirer les métadonnées", @@ -189,6 +190,8 @@ "editEntryDateDialogHours": "Heures", "editEntryDateDialogMinutes": "Minutes", + "editEntryRatingDialogTitle": "Notation", + "removeEntryMetadataDialogTitle": "Retrait de métadonnées", "removeEntryMetadataDialogMore": "Voir plus", diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 595e1300f..2653a4d24 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -73,6 +73,7 @@ "videoActionSettings": "설정", "entryInfoActionEditDate": "날짜 및 시간 수정", + "entryInfoActionEditRating": "별점 수정", "entryInfoActionEditTags": "태그 수정", "entryInfoActionRemoveMetadata": "메타데이터 삭제", @@ -189,6 +190,8 @@ "editEntryDateDialogHours": "시간", "editEntryDateDialogMinutes": "분", + "editEntryRatingDialogTitle": "별점", + "removeEntryMetadataDialogTitle": "메타데이터 삭제", "removeEntryMetadataDialogMore": "더 보기", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 9d9e3809f..1d8649cc9 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -73,12 +73,15 @@ "videoActionSettings": "Настройки", "entryInfoActionEditDate": "Изменить дату и время", + "entryInfoActionEditRating": "Изменить рейтинг", "entryInfoActionEditTags": "Изменить теги", "entryInfoActionRemoveMetadata": "Удалить метаданные", "filterFavouriteLabel": "Избранное", "filterLocationEmptyLabel": "Без местоположения", "filterTagEmptyLabel": "Без тегов", + "filterRatingUnratedLabel": "Без рейтинга", + "filterRatingRejectedLabel": "Отклонённые", "filterTypeAnimatedLabel": "GIF", "filterTypeMotionPhotoLabel": "Живое фото", "filterTypePanoramaLabel": "Панорама", @@ -137,6 +140,8 @@ "restrictedAccessDialogMessage": "Этому приложению не разрешается изменять файлы в каталоге {directory} накопителя «{volume}».\n\nПожалуйста, используйте предустановленный файловый менеджер или галерею, чтобы переместить элементы в другой каталог.", "notEnoughSpaceDialogTitle": "Недостаточно свободного места.", "notEnoughSpaceDialogMessage": "Для завершения этой операции требуется {neededSize} свободного места на «{volume}», но осталось только {freeSize}.", + "missingSystemFilePickerDialogTitle": "Отсутствует системное приложение выбора файлов", + "missingSystemFilePickerDialogMessage": "Системное приложение выбора файлов отсутствует или отключено. Пожалуйста, включите его и повторите попытку.", "unsupportedTypeDialogTitle": "Неподдерживаемые форматы", "unsupportedTypeDialogMessage": "{count, plural, =1{Эта операция не поддерживается для объектов следующего формата: {types}.} other{Эта операция не поддерживается для объектов следующих форматов: {types}.}}", @@ -178,11 +183,17 @@ "renameEntryDialogLabel": "Новое название", "editEntryDateDialogTitle": "Дата и время", + "editEntryDateDialogSetCustom": "Задайте дату", + "editEntryDateDialogCopyField": "Копировать с другой даты", "editEntryDateDialogExtractFromTitle": "Извлечь из названия", "editEntryDateDialogShift": "Сдвиг", + "editEntryDateDialogSourceFileModifiedDate": "Дата изменения файла", + "editEntryDateDialogTargetFieldsHeader": "Поля для изменения", "editEntryDateDialogHours": "Часов", "editEntryDateDialogMinutes": "Минут", + "editEntryRatingDialogTitle": "Рейтинг", + "removeEntryMetadataDialogTitle": "Удаление метаданных", "removeEntryMetadataDialogMore": "Дополнительно", @@ -267,6 +278,7 @@ "collectionSortDate": "По дате", "collectionSortSize": "По размеру", "collectionSortName": "По имени альбома и файла", + "collectionSortRating": "По рейтингу", "collectionGroupAlbum": "По альбому", "collectionGroupMonth": "По месяцу", @@ -340,6 +352,7 @@ "searchSectionCountries": "Страны", "searchSectionPlaces": "Локации", "searchSectionTags": "Теги", + "searchSectionRating": "Рейтинги", "settingsPageTitle": "Настройки", "settingsSystemDefault": "Система", @@ -365,6 +378,7 @@ "settingsSectionThumbnails": "Эскизы", "settingsThumbnailShowLocationIcon": "Показать значок местоположения", "settingsThumbnailShowMotionPhotoIcon": "Показать значок живого фото", + "settingsThumbnailShowRating": "Показывать рейтинг", "settingsThumbnailShowRawIcon": "Показать значок RAW-файла", "settingsThumbnailShowVideoDuration": "Показывать продолжительность видео", diff --git a/lib/widgets/about/credits.dart b/lib/widgets/about/credits.dart index a8d3c4cac..35251d760 100644 --- a/lib/widgets/about/credits.dart +++ b/lib/widgets/about/credits.dart @@ -8,7 +8,7 @@ class AboutCredits extends StatelessWidget { static const translators = { 'Deutsch': 'JanWaldhorn', - 'Español': 'n-berenice', + 'Español (México)': 'n-berenice', 'Русский': 'D3ZOXY', }; diff --git a/lib/widgets/settings/language/locale.dart b/lib/widgets/settings/language/locale.dart index 2fcf15aab..631890ad2 100644 --- a/lib/widgets/settings/language/locale.dart +++ b/lib/widgets/settings/language/locale.dart @@ -52,7 +52,7 @@ class LocaleTile extends StatelessWidget { case 'en': return 'English'; case 'es': - return 'Español'; + return 'Español (México)'; case 'fr': return 'Français'; case 'ko': diff --git a/untranslated.json b/untranslated.json index 4789f58a8..df1b09c1c 100644 --- a/untranslated.json +++ b/untranslated.json @@ -1,49 +1,23 @@ { "de": [ - "entryInfoActionEditRating", - "filterRatingUnratedLabel", - "filterRatingRejectedLabel", - "missingSystemFilePickerDialogTitle", - "missingSystemFilePickerDialogMessage", - "editEntryDateDialogSetCustom", - "editEntryDateDialogCopyField", - "editEntryDateDialogSourceFileModifiedDate", - "editEntryDateDialogTargetFieldsHeader", - "editEntryRatingDialogTitle", - "collectionSortRating", - "searchSectionRating", - "settingsThumbnailShowFavouriteIcon", - "settingsThumbnailShowRating" + "settingsThumbnailShowFavouriteIcon" + ], + + "es": [ + "settingsThumbnailShowFavouriteIcon" ], "fr": [ - "entryInfoActionEditRating", "missingSystemFilePickerDialogTitle", - "missingSystemFilePickerDialogMessage", - "editEntryRatingDialogTitle" + "missingSystemFilePickerDialogMessage" ], "ko": [ - "entryInfoActionEditRating", "missingSystemFilePickerDialogTitle", - "missingSystemFilePickerDialogMessage", - "editEntryRatingDialogTitle" + "missingSystemFilePickerDialogMessage" ], "ru": [ - "entryInfoActionEditRating", - "filterRatingUnratedLabel", - "filterRatingRejectedLabel", - "missingSystemFilePickerDialogTitle", - "missingSystemFilePickerDialogMessage", - "editEntryDateDialogSetCustom", - "editEntryDateDialogCopyField", - "editEntryDateDialogSourceFileModifiedDate", - "editEntryDateDialogTargetFieldsHeader", - "editEntryRatingDialogTitle", - "collectionSortRating", - "searchSectionRating", - "settingsThumbnailShowFavouriteIcon", - "settingsThumbnailShowRating" + "settingsThumbnailShowFavouriteIcon" ] }