From 14ca37b7d92cb73f811220457ca6a90bed20a100 Mon Sep 17 00:00:00 2001 From: and4po Date: Mon, 18 Dec 2023 19:03:49 +0100 Subject: [PATCH 1/4] Add Catalan localization --- CHANGELOG.md | 1 + CONTRIBUTORS.md | 1 + lib/lang/ca.dart | 212 ++++++++++++++++++++++++++++++ lib/lang/translation_service.dart | 3 + 4 files changed, 217 insertions(+) create mode 100644 lib/lang/ca.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 9663773..cb65a4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Autofocus and capitalize first letter of custom locale and subtitles text fields - Remember last recording settings (which camera was used and geotagging checkbox) - Automatically retry geotagging when it fails for the first time +- Added Catalan localization ## v1.5.2 - 09/2023 - Added quick trim shortcuts in save video page for a more precise editing diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 15377bc..540ae6f 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -27,6 +27,7 @@ - Bagas Wastu - Indonesian - Варвара Попова - Russian - Miloš Koliáš - Czech +- Ander Romero - Catalan ## App Logo (Initial Version) - Victória Marques diff --git a/lib/lang/ca.dart b/lib/lang/ca.dart new file mode 100644 index 0000000..8fba056 --- /dev/null +++ b/lib/lang/ca.dart @@ -0,0 +1,212 @@ +const Map en = { + 'darkMode': 'Mode Fosc', + 'language': 'Llengua', + 'videoQuality': 'Qualitat del vídeo', + 'donate': 'Fes un donatiu', + 'donateMsg': + 'Moltes gràcies per fer servir l’app!\n\nSi us agradaria donar suport al desenvolupament,\nno dubteu en fer una donació ^^', + 'donationPageTitle': 'Doneu suport al desenvolupament', + 'about': 'Quant a', + 'appVersion': 'Versió 1.6.0', + 'record': 'Enregistra', + 'createMovie': 'Crea pel·lícula', + 'settings': 'Configuració', + 'movieErrorTitle': 'No s’ha creat la pel·lícula!', + 'movieInsufficientVideos': + 'Cal que tingueu 2 o més vídeos enregistrats per crear una pel·lícula.', + 'movieCreatedTitle': 'S’ha creat la pel·lícula!', + 'movieCreatedDesc': 'La pel·lícula s’ha desat a l’emmagatzematge dins la carpeta DCIM/OneSecondDiary/Movies', + 'movieError': 'S’ha produït un error en desar la pel·lícula!', + 'tryAgainMsg': 'Torneu a provar-ho. Si el problema persisteix, contacteu amb el desenvolupador.', + 'create': 'Crea', + 'days': 'dies', + 'day': 'dia', + 'totalRecordedTitle': 'Heu enregistrat:', + 'tapBelowToGenerate': 'Premeu el botó a sota per generar\nun únic fitxer de vídeo:', + 'editQuestionTitle': 'Voleu editar el vídeo?', + 'editQuestion': 'Se suprimirà l’enregistrament previ, voleu continuar?', + 'yes': 'Sí', + 'no': 'No', + 'edit': 'Edita', + 'emojiHappy': 'Fantàstic!\nFins demà.', + 'emojiSad': 'Esperant el\nvostre enregistrament ...', + 'rotateDevice': 'Roteu el dispositiu a la dreta', + 'recordingErrorTitle': 'S’ha produït un error en enregistrar el vídeo!', + 'save': 'Desa', + 'saveVideoErrorTitle': 'S’ha produït un error en desar el vídeo!', + 'videoSavedTitle': 'S’ha desat el vídeo!', + 'videoSavedDesc': 'A reveure :)', + 'editVideoProperties': 'Edita les propietats del vídeo', + 'comingSoon': ' Pròximament... ', + 'saveVideo': 'Desa el vídeo', + 'discardVideoTitle': 'Voleu descartar aquest vídeo?', + 'discardVideoDesc': 'Premeu «Sí» per tornar a enregistrar-lo', + 'introTitle1': 'Enregistreu 1 segon cada dia', + 'introDesc1': + 'Trieu un moment especial del dia que us agradaria recordar en el futur.', + 'introTitle2': 'Creeu la pel·lícula de la vostra vida', + 'introDesc2': 'Genereu una recopilació de tots els vídeos que heu enregistrat.', + 'introTitle3': 'Sense anuncis i totalment gratuïta', + 'introDesc3': 'Si us agrada l’aplicació, considereu donar suport al desenvolupament amb una donació.', + 'skip': 'Omet', + 'done': 'Fet', + 'futureUpdates': 'Futures actualitzacions', + 'licenses': 'Llicències', + 'contact': 'Contacte', + 'share': 'Comparteix', + 'shareMsg': + 'Fes una ullada a aquesta app: https://play.google.com/store/apps/details?id=com.kylekun.one_second_diary', + 'thanksTo': 'Agraïments especials', + 'foundVideos': 'vídeos trobats!', + 'foundVideo': 'vídeo trobat!', + 'notifications': 'Notificacions', + 'enableNotifications': 'Activa les notificacions', + 'scheduleTime': 'Programa l’hora', + 'usePersistentNotifications': 'Notificacions persistents', + 'test': 'Prova', + 'notificationTitle': 'Ei!', + 'notificationBody': 'No us oblideu d’enregistrar un segon del vostre dia 👀', + 'recordingSettings': 'Configuració de l’enregistrament', + 'seconds': 'Segons: ', + 'timer': 'Temporitzador: ', + 'dateFormat': 'Format de la data:', + 'dateColor': 'Color de la data:', + 'selectColor': 'Seleccioneu un color', + 'enableGeotagging': 'Activa el geoetiquetatge (opcional)', + 'setCustomLocation': 'Defineix una ubicació personalitzada (opcional)', + 'ok': 'D’acord', + 'reset': 'Restableix', + 'enterLocation': 'Introduïu la ubicació', + 'allTime': 'Des de sempre', + 'last7Days': 'Últims 7 dies', + 'last30Days': 'Últims 30 dies', + 'last60Days': 'Últims 60 dies', + 'last90Days': 'Últims 90 dies', + 'thisMonth': 'Aquest mes', + 'thisYear': 'Aquest any', + 'lastYear': 'L’any passat', + 'custom': 'Personalitzat', + 'dateRange': 'Rang de dates', + 'clipsFound': 'Clips trobats', + 'enterSubtitles': 'Introduïu subtítols (opcional)', + 'totalSelected': 'Total seleccionats: ', + 'selectVideos': 'Seleccioneu vídeos', + 'editSubtitles': 'Edita els subtítols', + 'noVideoRecorded': 'Cap vídeo enregistrat', + 'subtitles': 'Subtítols', + 'addVideo': 'Afegeix vídeo', + 'calendar': 'Calendari', + 'orientation': 'Orientació', + 'portrait': 'Vertical', + 'landscape': 'Horitzontal', + 'profiles': 'Perfils', + 'tapToSwitch': 'Feu clic sobre un perfil per canviar', + 'createNewProfile': 'Crea un nou perfil', + 'newProfile': 'Nou perfil', + 'deleteProfile': 'Suprimir el perfil', + 'enterProfileName': 'Introduïu el nom del perfil', + 'newProfileTooltip': + 'En crear un nou perfil es configurarà un nou directori per als vídeos creats mentre aquest perfil sigui seleccionat.', + 'deleteProfileTooltip': + 'Tots els vídeos associats amb aquest perfil també se suprimiran permanentment. Esteu segur que voleu continuar?', + 'profileNameCannotBeEmpty': 'El nom del perfil no pot estar buit', + 'reservedProfileName': 'Aquest és un nom de perfil reservat', + 'creatingMovie': 'S’està processant... Espereu.\nPot trigar uns quants minuts', + 'doNotCloseTheApp': 'No tanqueu l’aplicació', + 'cancelMovieCreation': 'Cancel·la la creació de la pel·lícula', + 'cancelMovieDesc': 'Esteu segur que voleu cancel·lar la creació de la pel·lícula?', + 'reportError': 'Informa d’un error', + 'errorMailSubject': '[One Second Diary - v1.6.0] Informe d’error de l’aplicació', + 'errorMailBody': + 'Si us plau, descriviu l’error que heu trobat i les necessàries passes per reproduir-lo. Gràcies!', + 'oops': 'Ups!', + 'videoResolutionWarning': + 'Ara per ara aquesta resolució de vídeo no és compatible. Assegureu-vos que l’heu enregistrat en horitzontal (relació d’aspecte 16:9)', + 'unsupportedPortraitMode': + 'Ara per ara els vídeos en vertical no són compatibles. Seleccioneu un altre vídeo.', + 'processingVideo': 'S’està processant el vídeo', + 'deleteVideoWarning': 'Esteu segur que voleu suprimir aquest vídeo permanentment?', + 'deleteVideo': 'Suprimeix el vídeo', + 'addSubtitles': 'Afegeix subtítols', + 'dateColorAndFormat': 'Color i format de la data', + 'locationServicesDisabled': + 'Els serveis d’ubicació estan desactivats al vostre dispositiu. Activeu-los i toneu a intentar-ho.', + 'locationPermissionDenied': 'S’ha denegat el permís d’ubicació.', + 'locationPermissionPermanentlyDenied': + 'El permís d’ubicació està permanentment denegat. Activeu-lo manualment a la configuració del telèfon.ç', + 'locationServiceError': + 'S’ha produït un error mentre es provava d’obtenir la vostra ubicació. Proveu d’afegir una ubicació personalitzada manualment.', + 'whatsNew': 'Novetats', + 'whatsNewDescv15': + 'Aquesta versió porta moltes característiques i millores!\n\nFeu-hi una ullada a les següents pàgines 😊', + 'feat1v15': 'Galeria', + 'featDesc1v15': 'Afegiu vídeos de la galeria a la vostra col·lecció fàcilment 🤩', + 'feat2v15': 'Subtítols', + 'featDesc2v15': 'Afegiu o editeu subtítols per incloure més detalls del vostre dia 📝', + 'feat3v15': 'Geoetiquetatge', + 'featDesc3v15': + 'Afegiu geoetiquetatge manual o automàtic als vídeos per recordar on va succeir cada moment 📍', + 'feat4v15': 'Perfils', + 'featDesc4v15': + 'Creeu múltiples perfils per desar els vostres vídeos per separat i canviar entre ells fàcilment 🤗', + 'feat5v15': 'Calendari', + 'featDesc5v15': 'Vegeu o editeu qualsevol dels dies que heu enregistrat en un calendari 📅', + 'feat6v15': 'Pel·lícules', + 'featDesc6v15': 'Genereu pel·lícules personalitzades amb períodes i vídeos específics 🎥', + 'feat7v15': 'Notificacions', + 'featDesc7v15': + 'Configureu notificacions programades per recordar-vos que enregistreu el vostre instant especial 🔔', + 'default': 'Per defecte', + 'profileNameAlreadyExists': 'Ja existeix un perfil amb aquest nom', + 'profileNameCannotContainSpecialChars': 'El nom del perfil no pot contenir\ncaràcters especials', + 'subtitlesSaved': 'S’han desat els subtítols!', + 'error': 'Error', + 'migrationError': + 'S’ha produït un error mentre es migraven els vídeos. Tanqueu l’aplicació i copieu manualment els vídeos de «Emmagatzematge intern > OneSecondDiary» a «Emmagatzematge intern > DCIM > OneSecondDiary» i després suprimiu la carpeta vella.', + 'success': 'Èxit', + 'migrationSuccess': + 'Migració exitosa! Tots els vídeos i pel·lícules són desats a «Emmagatzematge intern > DCIM > OneSecondDiary»', + 'migrationInProgress': 'S’estan migrant tots els vídeos a la nova carpeta de l’aplicació, espereu...', + 'migrationFolderDeletionError': + 'S’ha completat la migració, però ha succeït un error mentre se suprimien les carpetes velles. Suprimiu-les manualment.', + 'preferences': 'Preferències', + 'forceNativeCamera': 'Forca la càmera nativa', + 'forceNativeCameraDescription': + 'Fes servir l’aplicació de càmera nativa per enregistrar vídeos en lloc de la integrada. Això pot solucionar problemes d’enregistrament a dispositius amb pitjor rendiment. Pot ser que no funcioni en alguns dispositius.', + 'movies': 'Pel·lícules', + 'myMovies': 'Les meves pel·lícules', + 'noMoviesFound': 'No s’han trobat pel·lícules', + 'play': 'Reprodueix', + 'saveVideoTabOne': 'General', + 'saveVideoTabTwo': 'Ubicació', + 'saveVideoTabThree': 'Subtítols', + 'useExperimentalPicker': 'Fes servir el selector de fitxers experimental', + 'useExperimentalPickerDescription': + 'Fes servir el selector de fitxers experimental per seleccionar vídeos de la galeria. Això permet que veieu els vídeos abans de seleccionar-los, redueix el temps de càrrega i mostra directament els vídeos de la data seleccionada. Desactiveu-lo si experimenteu qualsevol problema o preferiu el mètode antic.', + 'currentProfile': 'Perfil actual:', + 'change': 'Canvia', + 'sendLogs': 'Voleu enviar els registres?', + 'sendLogsDescription': + 'Si us trobeu davant d’un problema, premeu «Sí» per incloure els registres que m’ajudaran a trobar el problema. Si voleu suggerir una característica o qualsevol altra cosa, premeu «No».', + 'whatsNewDescv152': + 'La versió 1.6.0 porta diverses correccions i millores!\n\nFeu-hi una ullada a les següents pàgines 😊', + 'feat1v152': 'Processament de vídeo més ràpid', + 'featDesc1v152': 'El procés d’edició de vídeos llargs ara és molt més ràpid 🚀', + 'feat2v152': 'Millora en la retallada dels vídeos', + 'featDesc2v152': + 'Trieu l’instant d’una forma més precisa amb els nous ràpids botons de tall i una barra de retall millorada 🎞️', + 'feat3v152': 'Nou selector de fitxers experimental', + 'featDesc3v152': + 'El nou selector de fitxers experimental permet previsualitzar i filtrar els vídeos per data, prou de baixar cap avall quan voleu afegir vídeos antics 📅 (Desactiveu-lo des de la configuració si experimenteu qualsevol problema)', + 'feat4v152': 'Bloqueig de l’orientació', + 'featDesc4v152': + 'Quan enregistreu dins l’aplicació, premeu el botó després de posicionar el telèfon per bloquejar l’orientació i prevenir resultats inesperats 📱', + 'feat5v152': 'I més...', + 'featDesc5v152': 'També trobareu algunes petites millores visuals i correccions d’errors 🐛', + 'useFilterInExperimentalPicker': 'Fes servir el filtre de data per seleccionar vídeos', + 'useFilterInExperimentalPickerDescription': + 'Si està activat, en seleccionar vídeos amb dates passades filtrarà els vídeos amb aquella data. Si està desactivat, es mostraran tots els vídeos. Només funciona amb el selector de fitxers experimental.', + 'useAlternativeCalendarColors': 'Fes servir colors del calendari alternatius', + 'useAlternativeCalendarColorsDescription': + 'Canvia el verd i el vermell del calendari per blau i groc. Útil per a persones daltòniques.', +}; diff --git a/lib/lang/translation_service.dart b/lib/lang/translation_service.dart index 000714b..47236f9 100644 --- a/lib/lang/translation_service.dart +++ b/lib/lang/translation_service.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'ca.dart'; import 'cs.dart'; import 'de.dart'; import 'en.dart'; @@ -34,6 +35,7 @@ class TranslationService extends Translations { LanguageModel('Français', 'fr'), LanguageModel('Русский', 'ru'), LanguageModel('Čeština', 'cs'), + LanguageModel('Català', 'ca'), ]; @override @@ -47,5 +49,6 @@ class TranslationService extends Translations { 'fr': fr, 'ru': ru, 'cs': cs, + 'ca': ca, }; } From a95cf57c943350b1781196744e61ee5006eeb7d4 Mon Sep 17 00:00:00 2001 From: and4po Date: Thu, 21 Dec 2023 17:25:42 +0100 Subject: [PATCH 2/4] Add Catalan date --- lib/utils/constants.dart | 15 +++++++++++++++ lib/utils/date_format_utils.dart | 12 ++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/utils/constants.dart b/lib/utils/constants.dart index dfae6f2..49d13bc 100644 --- a/lib/utils/constants.dart +++ b/lib/utils/constants.dart @@ -52,6 +52,21 @@ class Constants { 'Noviembre', 'Diciembre', ]; + + static const caMonths = [ + 'gener', + 'febrer', + 'març', + 'abril', + 'maig', + 'juny', + 'juliol', + 'agost', + 'setembre', + 'octubre', + 'novembre', + 'desembre', + ]; } class AppColors { diff --git a/lib/utils/date_format_utils.dart b/lib/utils/date_format_utils.dart index c6a4dba..848f366 100644 --- a/lib/utils/date_format_utils.dart +++ b/lib/utils/date_format_utils.dart @@ -50,6 +50,14 @@ class DateFormatUtils { month = Constants.ptMonths[monthNumber - 1]; return '$day de $month de $year'; } + if (lang == 'ca') { + month = caMonths[monthNumber - 1]; + //Add custom article for the months that start with a vowel + if (monthNumber == 4 || monthNumber == 8 || monthNumber == 10) { + return "$day d'$month de $year"; + } + return "$day de $month de $year"; + } // Default format for English and other languages month = Constants.enMonths[monthNumber - 1]; // Used to remove leading 0 @@ -59,10 +67,10 @@ class DateFormatUtils { return '$month $day$suffix, $year'; } - /// Applied if language is ['pt' or 'es'] + /// Applied if language is ['pt', 'es' or 'ca'] static bool isDayFirstPattern() { final String languageCode = Get.locale!.languageCode; - if (languageCode == 'pt' || languageCode == 'es') { + if (languageCode == 'pt' || languageCode == 'es' || languageCode == 'ca') { return true; } return false; From 91af531ddd924737662393c897c7777cdd13182b Mon Sep 17 00:00:00 2001 From: Caio Pedroso Date: Sun, 24 Dec 2023 10:48:04 -0300 Subject: [PATCH 3/4] Fix caMonths usage --- lib/utils/date_format_utils.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/utils/date_format_utils.dart b/lib/utils/date_format_utils.dart index 848f366..69e9197 100644 --- a/lib/utils/date_format_utils.dart +++ b/lib/utils/date_format_utils.dart @@ -51,12 +51,12 @@ class DateFormatUtils { return '$day de $month de $year'; } if (lang == 'ca') { - month = caMonths[monthNumber - 1]; + month = Constants.caMonths[monthNumber - 1]; //Add custom article for the months that start with a vowel if (monthNumber == 4 || monthNumber == 8 || monthNumber == 10) { return "$day d'$month de $year"; } - return "$day de $month de $year"; + return '$day de $month de $year'; } // Default format for English and other languages month = Constants.enMonths[monthNumber - 1]; From ef6447e79c040fc4e89107690aba3f805dddffbd Mon Sep 17 00:00:00 2001 From: Caio Pedroso Date: Sun, 24 Dec 2023 10:57:56 -0300 Subject: [PATCH 4/4] Fix ca reference --- lib/lang/ca.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/lang/ca.dart b/lib/lang/ca.dart index 8fba056..0fe6f47 100644 --- a/lib/lang/ca.dart +++ b/lib/lang/ca.dart @@ -1,4 +1,4 @@ -const Map en = { +const Map ca = { 'darkMode': 'Mode Fosc', 'language': 'Llengua', 'videoQuality': 'Qualitat del vídeo', @@ -15,7 +15,8 @@ const Map en = { 'movieInsufficientVideos': 'Cal que tingueu 2 o més vídeos enregistrats per crear una pel·lícula.', 'movieCreatedTitle': 'S’ha creat la pel·lícula!', - 'movieCreatedDesc': 'La pel·lícula s’ha desat a l’emmagatzematge dins la carpeta DCIM/OneSecondDiary/Movies', + 'movieCreatedDesc': + 'La pel·lícula s’ha desat a l’emmagatzematge dins la carpeta DCIM/OneSecondDiary/Movies', 'movieError': 'S’ha produït un error en desar la pel·lícula!', 'tryAgainMsg': 'Torneu a provar-ho. Si el problema persisteix, contacteu amb el desenvolupador.', 'create': 'Crea', @@ -42,12 +43,12 @@ const Map en = { 'discardVideoTitle': 'Voleu descartar aquest vídeo?', 'discardVideoDesc': 'Premeu «Sí» per tornar a enregistrar-lo', 'introTitle1': 'Enregistreu 1 segon cada dia', - 'introDesc1': - 'Trieu un moment especial del dia que us agradaria recordar en el futur.', + 'introDesc1': 'Trieu un moment especial del dia que us agradaria recordar en el futur.', 'introTitle2': 'Creeu la pel·lícula de la vostra vida', 'introDesc2': 'Genereu una recopilació de tots els vídeos que heu enregistrat.', 'introTitle3': 'Sense anuncis i totalment gratuïta', - 'introDesc3': 'Si us agrada l’aplicació, considereu donar suport al desenvolupament amb una donació.', + 'introDesc3': + 'Si us agrada l’aplicació, considereu donar suport al desenvolupament amb una donació.', 'skip': 'Omet', 'done': 'Fet', 'futureUpdates': 'Futures actualitzacions', @@ -166,7 +167,8 @@ const Map en = { 'success': 'Èxit', 'migrationSuccess': 'Migració exitosa! Tots els vídeos i pel·lícules són desats a «Emmagatzematge intern > DCIM > OneSecondDiary»', - 'migrationInProgress': 'S’estan migrant tots els vídeos a la nova carpeta de l’aplicació, espereu...', + 'migrationInProgress': + 'S’estan migrant tots els vídeos a la nova carpeta de l’aplicació, espereu...', 'migrationFolderDeletionError': 'S’ha completat la migració, però ha succeït un error mentre se suprimien les carpetes velles. Suprimiu-les manualment.', 'preferences': 'Preferències',