1
0
mirror of https://github.com/immich-app/immich.git synced 2024-12-25 10:43:13 +02:00

fix(mobile): Mark more strings for translation (#5132)

* fix(mobile): Mark more strings for translation

Moving more strings to the `i18n` JSON file, and also including their
es-US translations.

* Add more translatable strings
This commit is contained in:
Michael Manganiello 2023-11-18 21:32:28 -05:00 committed by GitHub
parent f5ce3deb3a
commit 6d310d6297
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 181 additions and 72 deletions

View File

@ -1,6 +1,7 @@
{ {
"add_to_album_bottom_sheet_added": "Added to {album}", "add_to_album_bottom_sheet_added": "Added to {album}",
"add_to_album_bottom_sheet_already_exists": "Already in {album}", "add_to_album_bottom_sheet_already_exists": "Already in {album}",
"advanced_settings_log_level_title": "Log level: {}",
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.", "advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
"advanced_settings_prefer_remote_title": "Prefer remote images", "advanced_settings_prefer_remote_title": "Prefer remote images",
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.", "advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
@ -106,6 +107,9 @@
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)", "cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
"cache_settings_clear_cache_button": "Clear cache", "cache_settings_clear_cache_button": "Clear cache",
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.", "cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
"cache_settings_duplicated_assets_clear_button": "CLEAR",
"cache_settings_duplicated_assets_subtitle": "Photos and videos that are black listed by the app",
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
"cache_settings_image_cache_size": "Image cache size ({} assets)", "cache_settings_image_cache_size": "Image cache size ({} assets)",
"cache_settings_statistics_album": "Library thumbnails", "cache_settings_statistics_album": "Library thumbnails",
"cache_settings_statistics_assets": "{} assets ({})", "cache_settings_statistics_assets": "{} assets ({})",
@ -195,6 +199,7 @@
"library_page_sort_title": "Album title", "library_page_sort_title": "Album title",
"login_disabled": "Login has been disabled", "login_disabled": "Login has been disabled",
"login_form_api_exception": "API exception. Please check the server URL and try again.", "login_form_api_exception": "API exception. Please check the server URL and try again.",
"login_form_back_button_text": "Back",
"login_form_button_text": "Login", "login_form_button_text": "Login",
"login_form_email_hint": "youremail@email.com", "login_form_email_hint": "youremail@email.com",
"login_form_endpoint_hint": "http://your-server-ip:port/api", "login_form_endpoint_hint": "http://your-server-ip:port/api",
@ -217,6 +222,10 @@
"login_form_server_error": "Could not connect to server.", "login_form_server_error": "Could not connect to server.",
"login_password_changed_error": "There was an error updating your password", "login_password_changed_error": "There was an error updating your password",
"login_password_changed_success": "Password updated successfully", "login_password_changed_success": "Password updated successfully",
"map_assets_in_bounds": {
"one": "{} photo",
"many": "{} photos"
},
"map_cannot_get_user_location": "Cannot get user's location", "map_cannot_get_user_location": "Cannot get user's location",
"map_location_dialog_cancel": "Cancel", "map_location_dialog_cancel": "Cancel",
"map_location_dialog_yes": "Yes", "map_location_dialog_yes": "Yes",
@ -226,6 +235,15 @@
"map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?", "map_no_location_permission_content": "Location permission is needed to display assets from your current location. Do you want to allow it now?",
"map_no_location_permission_title": "Location Permission denied", "map_no_location_permission_title": "Location Permission denied",
"map_settings_dark_mode": "Dark mode", "map_settings_dark_mode": "Dark mode",
"map_settings_date_range_option_all": "All",
"map_settings_date_range_option_days": {
"one": "Past 24 hours",
"other": "Past {} days"
},
"map_settings_date_range_option_years": {
"one": "Past year",
"other": "Past {} years"
},
"map_settings_dialog_cancel": "Cancel", "map_settings_dialog_cancel": "Cancel",
"map_settings_dialog_save": "Save", "map_settings_dialog_save": "Save",
"map_settings_dialog_title": "Map Settings", "map_settings_dialog_title": "Map Settings",
@ -261,9 +279,13 @@
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.", "permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
"permission_onboarding_request": "Immich requires permission to view your photos and videos.", "permission_onboarding_request": "Immich requires permission to view your photos and videos.",
"profile_drawer_app_logs": "Logs", "profile_drawer_app_logs": "Logs",
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
"profile_drawer_client_server_up_to_date": "Client and Server are up-to-date", "profile_drawer_client_server_up_to_date": "Client and Server are up-to-date",
"profile_drawer_documentation": "Documentation", "profile_drawer_documentation": "Documentation",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "Server is out of date. Please update to the latest major version.",
"profile_drawer_server_out_of_date_minor": "Server is out of date. Please update to the latest minor version.",
"profile_drawer_settings": "Settings", "profile_drawer_settings": "Settings",
"profile_drawer_sign_out": "Sign Out", "profile_drawer_sign_out": "Sign Out",
"profile_drawer_trash": "Trash", "profile_drawer_trash": "Trash",
@ -275,6 +297,13 @@
"search_page_no_objects": "No Objects Info Available", "search_page_no_objects": "No Objects Info Available",
"search_page_no_places": "No Places Info Available", "search_page_no_places": "No Places Info Available",
"search_page_people": "People", "search_page_people": "People",
"search_page_person_add_name_dialog_cancel": "Cancel",
"search_page_person_add_name_dialog_save": "Save",
"search_page_person_add_name_dialog_hint": "Name",
"search_page_person_add_name_dialog_title": "Add a name",
"search_page_person_add_name_subtitle": "Find them fast by name with search",
"search_page_person_add_name_title": "Add a name",
"search_page_person_edit_name": "Edit name",
"search_page_places": "Places", "search_page_places": "Places",
"search_page_recently_added": "Recently added", "search_page_recently_added": "Recently added",
"search_page_screenshots": "Screenshots", "search_page_screenshots": "Screenshots",
@ -283,6 +312,7 @@
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "View all", "search_page_view_all_button": "View all",
"search_page_your_activity": "Your activity", "search_page_your_activity": "Your activity",
"search_page_your_map": "Your Map",
"search_result_page_new_search_hint": "New Search", "search_result_page_new_search_hint": "New Search",
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ", "search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
"search_suggestion_list_smart_search_hint_2": "m:your-search-term", "search_suggestion_list_smart_search_hint_2": "m:your-search-term",
@ -322,9 +352,17 @@
"shared_album_activity_remove_title": "Delete Activity", "shared_album_activity_remove_title": "Delete Activity",
"shared_album_activity_setting_subtitle": "Let others respond", "shared_album_activity_setting_subtitle": "Let others respond",
"shared_album_activity_setting_title": "Comments & likes", "shared_album_activity_setting_title": "Comments & likes",
"shared_album_section_people_action_error": "Error leaving/removing from album",
"shared_album_section_people_action_leave": "Remove user from album",
"shared_album_section_people_action_remove_user": "Remove user from album",
"shared_album_section_people_owner_label": "Owner",
"shared_album_section_people_title": "PEOPLE",
"share_dialog_preparing": "Preparing...", "share_dialog_preparing": "Preparing...",
"shared_link_app_bar_title": "Shared Links", "shared_link_app_bar_title": "Shared Links",
"shared_link_clipboard_copied_massage": "Copied to clipboard",
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
"shared_link_create_app_bar_title": "Create link to share", "shared_link_create_app_bar_title": "Create link to share",
"shared_link_create_error": "Error while creating shared link",
"shared_link_create_info": "Let anyone with the link see the selected photo(s)", "shared_link_create_info": "Let anyone with the link see the selected photo(s)",
"shared_link_create_submit_button": "Create link", "shared_link_create_submit_button": "Create link",
"shared_link_edit_allow_download": "Allow public user to download", "shared_link_edit_allow_download": "Allow public user to download",
@ -334,6 +372,19 @@
"shared_link_edit_description": "Description", "shared_link_edit_description": "Description",
"shared_link_edit_description_hint": "Enter the share description", "shared_link_edit_description_hint": "Enter the share description",
"shared_link_edit_expire_after": "Expire after", "shared_link_edit_expire_after": "Expire after",
"shared_link_edit_expire_after_option_days": {
"one": "{} day",
"other": "{} days"
},
"shared_link_edit_expire_after_option_hours": {
"one": "{} hour",
"other": "{} hours"
},
"shared_link_edit_expire_after_option_minutes": {
"one": "{} minute",
"other": "{} minutes"
},
"shared_link_edit_expire_after_option_never": "Never",
"shared_link_edit_password": "Password", "shared_link_edit_password": "Password",
"shared_link_edit_password_hint": "Enter the share password", "shared_link_edit_password_hint": "Enter the share password",
"shared_link_edit_show_meta": "Show metadata", "shared_link_edit_show_meta": "Show metadata",
@ -388,4 +439,4 @@
"viewer_remove_from_stack": "Remove from Stack", "viewer_remove_from_stack": "Remove from Stack",
"viewer_stack_use_as_main_asset": "Use as Main Asset", "viewer_stack_use_as_main_asset": "Use as Main Asset",
"viewer_unstack": "Un-Stack" "viewer_unstack": "Un-Stack"
} }

View File

@ -1,6 +1,7 @@
{ {
"add_to_album_bottom_sheet_added": "Agregado a {album}", "add_to_album_bottom_sheet_added": "Agregado a {album}",
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}", "add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
"advanced_settings_log_level_title": "Nivel de registro: {}",
"advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de recursos encontrados en el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.", "advanced_settings_prefer_remote_subtitle": "Algunos dispositivos tardan mucho en cargar las miniaturas de recursos encontrados en el dispositivo. Activa esta opción para cargar imágenes remotas en su lugar.",
"advanced_settings_prefer_remote_title": "Preferir imágenes remotas", "advanced_settings_prefer_remote_title": "Preferir imágenes remotas",
"advanced_settings_self_signed_ssl_subtitle": "Omite la verificación del certificado SSL para la URL del servidor. Requerido para certificados autofirmados.", "advanced_settings_self_signed_ssl_subtitle": "Omite la verificación del certificado SSL para la URL del servidor. Requerido para certificados autofirmados.",
@ -106,6 +107,9 @@
"cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} recursos)", "cache_settings_album_thumbnails": "Miniaturas de la página de la biblioteca ({} recursos)",
"cache_settings_clear_cache_button": "Borrar caché", "cache_settings_clear_cache_button": "Borrar caché",
"cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.", "cache_settings_clear_cache_button_title": "Borra la caché de la aplicación. Esto afectará significativamente el rendimiento de la aplicación hasta que se reconstruya la caché.",
"cache_settings_duplicated_assets_clear_button": "BORRAR",
"cache_settings_duplicated_assets_subtitle": "Fotos y videos que son ignorados por la aplicación",
"cache_settings_duplicated_assets_title": "Recursos duplicados ({})",
"cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} recursos)", "cache_settings_image_cache_size": "Tamaño de la caché de imágenes ({} recursos)",
"cache_settings_statistics_album": "Miniaturas de la biblioteca", "cache_settings_statistics_album": "Miniaturas de la biblioteca",
"cache_settings_statistics_assets": "{} recursos ({})", "cache_settings_statistics_assets": "{} recursos ({})",
@ -174,6 +178,7 @@
"home_page_building_timeline": "Construyendo la línea de tiempo", "home_page_building_timeline": "Construyendo la línea de tiempo",
"home_page_favorite_err_local": "Aún no se pueden marcar recursos locales como favoritos, omitiendo", "home_page_favorite_err_local": "Aún no se pueden marcar recursos locales como favoritos, omitiendo",
"home_page_first_time_notice": "Si ésta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.", "home_page_first_time_notice": "Si ésta es la primera vez que usas la app, por favor, asegúrate de elegir un álbum de respaldo para que la línea de tiempo pueda cargar fotos y videos en los álbumes.",
"home_page_share_err_local": "No se pueden compartir recursos locales a través de enlaces, omitiendo",
"home_page_upload_err_limit": "Sólo se pueden subir un máximo de 30 recursos a la vez, omitiendo", "home_page_upload_err_limit": "Sólo se pueden subir un máximo de 30 recursos a la vez, omitiendo",
"home_page_favorite_err_partner": "Aún no se pueden marcar recursos de compañeros como favoritos, omitiendo", "home_page_favorite_err_partner": "Aún no se pueden marcar recursos de compañeros como favoritos, omitiendo",
"home_page_album_err_partner": "Aún no se pueden agregar recursos de compañeros a un álbum, omitiendo", "home_page_album_err_partner": "Aún no se pueden agregar recursos de compañeros a un álbum, omitiendo",
@ -194,6 +199,7 @@
"library_page_sort_title": "Título del álbum", "library_page_sort_title": "Título del álbum",
"login_disabled": "El inicio de sesión ha sido deshabilitado", "login_disabled": "El inicio de sesión ha sido deshabilitado",
"login_form_api_exception": "Excepción de API. Por favor, verifica la URL del servidor e inténtalo de nuevo.", "login_form_api_exception": "Excepción de API. Por favor, verifica la URL del servidor e inténtalo de nuevo.",
"login_form_back_button_text": "Volver",
"login_form_button_text": "Iniciar sesión", "login_form_button_text": "Iniciar sesión",
"login_form_email_hint": "tucorreo@correo.com", "login_form_email_hint": "tucorreo@correo.com",
"login_form_endpoint_hint": "http://ip-de-tu-servidor:puerto/api", "login_form_endpoint_hint": "http://ip-de-tu-servidor:puerto/api",
@ -216,6 +222,10 @@
"login_form_server_error": "No se pudo conectar al servidor.", "login_form_server_error": "No se pudo conectar al servidor.",
"login_password_changed_error": "Hubo un error al actualizar tu contraseña", "login_password_changed_error": "Hubo un error al actualizar tu contraseña",
"login_password_changed_success": "Contraseña actualizada exitosamente", "login_password_changed_success": "Contraseña actualizada exitosamente",
"map_assets_in_bounds": {
"one": "{} foto",
"other": "{} fotos"
},
"map_cannot_get_user_location": "No se puede obtener la ubicación del usuario", "map_cannot_get_user_location": "No se puede obtener la ubicación del usuario",
"map_location_dialog_cancel": "Cancelar", "map_location_dialog_cancel": "Cancelar",
"map_location_dialog_yes": "Sí", "map_location_dialog_yes": "Sí",
@ -225,6 +235,15 @@
"map_no_location_permission_content": "Se necesita permiso de ubicación para mostrar recursos desde tu ubicación actual. ¿Quieres permitirlo ahora?", "map_no_location_permission_content": "Se necesita permiso de ubicación para mostrar recursos desde tu ubicación actual. ¿Quieres permitirlo ahora?",
"map_no_location_permission_title": "Permiso de ubicación denegado", "map_no_location_permission_title": "Permiso de ubicación denegado",
"map_settings_dark_mode": "Modo oscuro", "map_settings_dark_mode": "Modo oscuro",
"map_settings_date_range_option_all": "Todo",
"map_settings_date_range_option_days": {
"one": "Últimas 24 horas",
"other": "Últimos {} días"
},
"map_settings_date_range_option_years": {
"one": "Último año",
"other": "Últimos {} años"
},
"map_settings_dialog_cancel": "Cancelar", "map_settings_dialog_cancel": "Cancelar",
"map_settings_dialog_save": "Guardar", "map_settings_dialog_save": "Guardar",
"map_settings_dialog_title": "Configuración del mapa", "map_settings_dialog_title": "Configuración del mapa",
@ -249,6 +268,7 @@
"partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos", "partner_page_stop_sharing_content": "{} ya no podrá acceder a tus fotos",
"partner_page_stop_sharing_title": "¿Dejar de compartir tus fotos?", "partner_page_stop_sharing_title": "¿Dejar de compartir tus fotos?",
"partner_page_title": "Compañero", "partner_page_title": "Compañero",
"permission_onboarding_back": "Volver",
"permission_onboarding_continue_anyway": "Continuar de todos modos", "permission_onboarding_continue_anyway": "Continuar de todos modos",
"permission_onboarding_get_started": "Empezar", "permission_onboarding_get_started": "Empezar",
"permission_onboarding_go_to_settings": "Ir a configuración", "permission_onboarding_go_to_settings": "Ir a configuración",
@ -259,9 +279,13 @@
"permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.", "permission_onboarding_permission_limited": "Permiso limitado. Para permitir que Immich haga copia de seguridad y gestione toda tu colección de galería, concede permisos de fotos y videos en Configuración.",
"permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.", "permission_onboarding_request": "Immich requiere permiso para ver tus fotos y videos.",
"profile_drawer_app_logs": "Registros", "profile_drawer_app_logs": "Registros",
"profile_drawer_client_out_of_date_major": "La aplicación móvil está desactualizada. Actualiza a la última versión mayor.",
"profile_drawer_client_out_of_date_minor": "La aplicación móvil está desactualizada. Actualiza a la última versión menor.",
"profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados", "profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados",
"profile_drawer_documentation": "Documentación", "profile_drawer_documentation": "Documentación",
"profile_drawer_github": "GitHub", "profile_drawer_github": "GitHub",
"profile_drawer_server_out_of_date_major": "El servidor está desactualizado. Actualiza a la última versión mayor.",
"profile_drawer_server_out_of_date_minor": "El servidor está desactualizado. Actualiza a la última versión menor.",
"profile_drawer_settings": "Configuración", "profile_drawer_settings": "Configuración",
"profile_drawer_sign_out": "Cerrar sesión", "profile_drawer_sign_out": "Cerrar sesión",
"profile_drawer_trash": "Papelera", "profile_drawer_trash": "Papelera",
@ -269,10 +293,17 @@
"search_bar_hint": "Busca tus fotos", "search_bar_hint": "Busca tus fotos",
"search_page_categories": "Categorías", "search_page_categories": "Categorías",
"search_page_favorites": "Favoritos", "search_page_favorites": "Favoritos",
"search_page_motion_photos": "Fotos en .ovimiento", "search_page_motion_photos": "Fotos en movimiento",
"search_page_no_objects": "No hay información de objetos disponible", "search_page_no_objects": "No hay información de objetos disponible",
"search_page_no_places": "No hay información de lugares disponible", "search_page_no_places": "No hay información de lugares disponible",
"search_page_people": "Personas", "search_page_people": "Personas",
"search_page_person_add_name_dialog_cancel": "Cancelar",
"search_page_person_add_name_dialog_hint": "Nombre",
"search_page_person_add_name_dialog_save": "Guardar",
"search_page_person_add_name_dialog_title": "Agregar nombre",
"search_page_person_add_name_subtitle": "Encuéntralos rápidamente por nombre",
"search_page_person_add_name_title": "Agregar un nombre",
"search_page_person_edit_name": "Editar nombre",
"search_page_places": "Lugares", "search_page_places": "Lugares",
"search_page_recently_added": "Recién agregados", "search_page_recently_added": "Recién agregados",
"search_page_screenshots": "Capturas de pantalla", "search_page_screenshots": "Capturas de pantalla",
@ -281,6 +312,7 @@
"search_page_videos": "Videos", "search_page_videos": "Videos",
"search_page_view_all_button": "Ver todo", "search_page_view_all_button": "Ver todo",
"search_page_your_activity": "Tu actividad", "search_page_your_activity": "Tu actividad",
"search_page_your_map": "Tu mapa",
"search_result_page_new_search_hint": "Nueva búsqueda", "search_result_page_new_search_hint": "Nueva búsqueda",
"search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza la sintaxis ", "search_suggestion_list_smart_search_hint_1": "La búsqueda inteligente está habilitada por defecto, para buscar metadatos utiliza la sintaxis ",
"search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda", "search_suggestion_list_smart_search_hint_2": "m:tu-término-de-búsqueda",
@ -290,6 +322,7 @@
"server_info_box_app_version": "Versión de la Aplicación", "server_info_box_app_version": "Versión de la Aplicación",
"server_info_box_server_url": "URL del Servidor", "server_info_box_server_url": "URL del Servidor",
"server_info_box_server_version": "Versión del Servidor", "server_info_box_server_version": "Versión del Servidor",
"server_info_box_latest_release": "Última versión",
"setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).", "setting_image_viewer_help": "El visor de detalles carga primero la miniatura pequeña, luego carga la vista previa de tamaño mediano (si está habilitada), finalmente carga la original (si está habilitada).",
"setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).", "setting_image_viewer_original_subtitle": "Activar para cargar la imagen en resolución original (¡muy grande!). Deshabilitar para reducir el consumo de datos (de red y caché).",
"setting_image_viewer_original_title": "Cargar imagen original", "setting_image_viewer_original_title": "Cargar imagen original",
@ -319,9 +352,17 @@
"shared_album_activity_remove_title": "Eliminar actividad", "shared_album_activity_remove_title": "Eliminar actividad",
"shared_album_activity_setting_subtitle": "Permitir que otros respondan", "shared_album_activity_setting_subtitle": "Permitir que otros respondan",
"shared_album_activity_setting_title": "Comentarios y me gusta", "shared_album_activity_setting_title": "Comentarios y me gusta",
"shared_album_section_people_action_error": "Error al dejar/remover del álbum",
"shared_album_section_people_action_leave": "Dejar álbum",
"shared_album_section_people_action_remove_user": "Remover usuario del álbum",
"shared_album_section_people_owner_label": "Dueño",
"shared_album_section_people_title": "PERSONAS",
"share_dialog_preparing": "Preparando...", "share_dialog_preparing": "Preparando...",
"shared_link_app_bar_title": "Enlaces compartidos", "shared_link_app_bar_title": "Enlaces compartidos",
"shared_link_clipboard_copied_massage": "Copiado al portapapeles",
"shared_link_clipboard_text": "Enlace: {}\nContraseña: {}",
"shared_link_create_app_bar_title": "Crear enlace para compartir", "shared_link_create_app_bar_title": "Crear enlace para compartir",
"shared_link_create_error": "Error al crear enlace compartido",
"shared_link_create_info": "Permitir que cualquiera con el enlace vea la(s) foto(s) seleccionada(s)", "shared_link_create_info": "Permitir que cualquiera con el enlace vea la(s) foto(s) seleccionada(s)",
"shared_link_create_submit_button": "Crear enlace", "shared_link_create_submit_button": "Crear enlace",
"shared_link_edit_allow_download": "Permitir que el usuario público pueda descargar", "shared_link_edit_allow_download": "Permitir que el usuario público pueda descargar",
@ -331,6 +372,19 @@
"shared_link_edit_description": "Descripción", "shared_link_edit_description": "Descripción",
"shared_link_edit_description_hint": "Introduce la descripción del enlace", "shared_link_edit_description_hint": "Introduce la descripción del enlace",
"shared_link_edit_expire_after": "Expirar después de", "shared_link_edit_expire_after": "Expirar después de",
"shared_link_edit_expire_after_option_days": {
"one": "{} día",
"other": "{} días"
},
"shared_link_edit_expire_after_option_hours": {
"one": "{} hora",
"other": "{} horas"
},
"shared_link_edit_expire_after_option_minutes": {
"one": "{} minuto",
"other": "{} minutos"
},
"shared_link_edit_expire_after_option_never": "Nunca",
"shared_link_edit_password": "Contraseña", "shared_link_edit_password": "Contraseña",
"shared_link_edit_password_hint": "Introduce la contraseña del enlace", "shared_link_edit_password_hint": "Introduce la contraseña del enlace",
"shared_link_edit_show_meta": "Mostrar metadatos", "shared_link_edit_show_meta": "Mostrar metadatos",

View File

@ -30,7 +30,7 @@ class AlbumOptionsPage extends HookConsumerWidget {
Navigator.pop(context); Navigator.pop(context);
ImmichToast.show( ImmichToast.show(
context: context, context: context,
msg: "Error leaving/removing from album", msg: "shared_album_section_people_action_error".tr(),
toastType: ToastType.error, toastType: ToastType.error,
gravity: ToastGravity.BOTTOM, gravity: ToastGravity.BOTTOM,
); );
@ -81,7 +81,7 @@ class AlbumOptionsPage extends HookConsumerWidget {
actions = [ actions = [
ListTile( ListTile(
leading: const Icon(Icons.exit_to_app_rounded), leading: const Icon(Icons.exit_to_app_rounded),
title: const Text("Leave album"), title: const Text("shared_album_section_people_action_leave").tr(),
onTap: leaveAlbum, onTap: leaveAlbum,
), ),
]; ];
@ -91,7 +91,7 @@ class AlbumOptionsPage extends HookConsumerWidget {
actions = [ actions = [
ListTile( ListTile(
leading: const Icon(Icons.person_remove_rounded), leading: const Icon(Icons.person_remove_rounded),
title: const Text("Remove user from album"), title: const Text("shared_album_section_people_remove_user").tr(),
onTap: () => removeUserFromAlbum(user), onTap: () => removeUserFromAlbum(user),
), ),
]; ];
@ -130,11 +130,11 @@ class AlbumOptionsPage extends HookConsumerWidget {
style: TextStyle(color: Colors.grey[500]), style: TextStyle(color: Colors.grey[500]),
), ),
trailing: const Text( trailing: const Text(
"Owner", "shared_album_section_people_owner_label",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ).tr(),
); );
} }
@ -215,7 +215,7 @@ class AlbumOptionsPage extends HookConsumerWidget {
subtitle: subtitle:
const Text("shared_album_activity_setting_subtitle").tr(), const Text("shared_album_activity_setting_subtitle").tr(),
), ),
buildSectionTitle("PEOPLE"), buildSectionTitle("shared_album_section_people_title".tr()),
buildOwnerInfo(), buildOwnerInfo(),
buildSharedUsersList(), buildSharedUsersList(),
], ],

View File

@ -358,7 +358,7 @@ class LoginForm extends HookConsumerWidget {
TextButton.icon( TextButton.icon(
icon: const Icon(Icons.arrow_back), icon: const Icon(Icons.arrow_back),
onPressed: () => serverEndpoint.value = null, onPressed: () => serverEndpoint.value = null,
label: const Text('Back'), label: const Text('login_form_back_button_text').tr(),
), ),
], ],
), ),

View File

@ -176,7 +176,7 @@ class AssetsInBoundBottomSheetState extends ConsumerState<MapPageBottomSheet> {
Widget buildDragHandle(ScrollController scrollController) { Widget buildDragHandle(ScrollController scrollController) {
final textToDisplay = assetsInBound.value.isNotEmpty final textToDisplay = assetsInBound.value.isNotEmpty
? "${assetsInBound.value.length} photo${assetsInBound.value.length > 1 ? "s" : ""}" ? "map_assets_in_bounds".plural(assetsInBound.value.length)
: "map_no_assets_in_bounds".tr(); : "map_no_assets_in_bounds".tr();
final dragHandle = Container( final dragHandle = Container(
height: 60, height: 60,

View File

@ -76,18 +76,21 @@ class MapSettingsDialog extends HookConsumerWidget {
showRelativeDate.value = value!; showRelativeDate.value = value!;
}, },
dropdownMenuEntries: [ dropdownMenuEntries: [
const DropdownMenuEntry(value: 0, label: "All"), DropdownMenuEntry(
const DropdownMenuEntry( value: 0,
label: "map_settings_date_range_option_all".tr(),
),
DropdownMenuEntry(
value: 1, value: 1,
label: "Past 24 hours", label: "map_settings_date_range_option_days".plural(1),
), ),
const DropdownMenuEntry( DropdownMenuEntry(
value: 7, value: 7,
label: "Past 7 days", label: "map_settings_date_range_option_days".plural(7),
), ),
const DropdownMenuEntry( DropdownMenuEntry(
value: 30, value: 30,
label: "Past 30 days", label: "map_settings_date_range_option_days".plural(30),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: now value: now
@ -102,7 +105,7 @@ class MapSettingsDialog extends HookConsumerWidget {
), ),
) )
.inDays, .inDays,
label: "Past year", label: "map_settings_date_range_option_years".plural(1),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: now value: now
@ -117,7 +120,7 @@ class MapSettingsDialog extends HookConsumerWidget {
), ),
) )
.inDays, .inDays,
label: "Past 3 years", label: "map_settings_date_range_option_years".plural(3),
), ),
], ],
); );

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/modules/map/ui/map_thumbnail.dart'; import 'package:immich_mobile/modules/map/ui/map_thumbnail.dart';
@ -64,18 +65,18 @@ class CuratedPlacesRow extends CuratedRow {
), ),
), ),
), ),
const Align( Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: Padding( child: Padding(
padding: EdgeInsets.only(bottom: 10), padding: const EdgeInsets.only(bottom: 10),
child: Text( child: const Text(
"Your Map", "search_page_your_map",
style: TextStyle( style: TextStyle(
color: Colors.white, color: Colors.white,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 14, fontSize: 14,
), ),
), ).tr(),
), ),
), ),
], ],

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -27,15 +28,15 @@ class PersonNameEditForm extends HookConsumerWidget {
return AlertDialog( return AlertDialog(
title: const Text( title: const Text(
"Add a name", "search_page_person_add_name_dialog_title",
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ).tr(),
content: SingleChildScrollView( content: SingleChildScrollView(
child: TextFormField( child: TextFormField(
controller: controller, controller: controller,
autofocus: true, autofocus: true,
decoration: const InputDecoration( decoration: InputDecoration(
hintText: 'Name', hintText: 'search_page_person_add_name_dialog_hint'.tr(),
), ),
), ),
), ),
@ -49,12 +50,12 @@ class PersonNameEditForm extends HookConsumerWidget {
); );
}, },
child: Text( child: Text(
"Cancel", "search_page_person_add_name_dialog_cancel",
style: TextStyle( style: TextStyle(
color: Colors.red[300], color: Colors.red[300],
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ).tr(),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
@ -70,12 +71,12 @@ class PersonNameEditForm extends HookConsumerWidget {
); );
}, },
child: Text( child: Text(
"Save", "search_page_person_add_name_dialog_save",
style: TextStyle( style: TextStyle(
color: context.primaryColor, color: context.primaryColor,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ).tr(),
), ),
], ],
); );

View File

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -52,9 +53,9 @@ class PersonResultPage extends HookConsumerWidget {
ListTile( ListTile(
leading: const Icon(Icons.edit_outlined), leading: const Icon(Icons.edit_outlined),
title: const Text( title: const Text(
'Edit name', 'search_page_person_edit_name',
style: TextStyle(fontWeight: FontWeight.bold), style: TextStyle(fontWeight: FontWeight.bold),
), ).tr(),
onTap: showEditNameDialog, onTap: showEditNameDialog,
), ),
], ],
@ -72,15 +73,15 @@ class PersonResultPage extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'Add a name', 'search_page_person_add_name_title',
style: context.textTheme.titleSmall?.copyWith( style: context.textTheme.titleSmall?.copyWith(
color: context.themeData.colorScheme.secondary, color: context.themeData.colorScheme.secondary,
), ),
), ).tr(),
Text( Text(
'Find them fast by name with search', 'search_page_person_add_name_subtitle',
style: context.textTheme.labelSmall, style: context.textTheme.labelSmall,
), ).tr(),
], ],
), ),
); );

View File

@ -198,7 +198,7 @@ class SearchPage extends HookConsumerWidget {
).tr(), ).tr(),
), ),
ListTile( ListTile(
title: Text('Screenshots', style: categoryTitleStyle).tr(), title: Text('search_page_screenshots', style: categoryTitleStyle).tr(),
leading: Icon( leading: Icon(
Icons.screenshot, Icons.screenshot,
color: categoryIconColor, color: categoryIconColor,

View File

@ -68,11 +68,10 @@ class AdvancedSettings extends HookConsumerWidget {
), ),
ListTile( ListTile(
dense: true, dense: true,
title: Text( title: const Text(
// Not translated because the levels are only English "advanced_settings_log_level_title",
"Log level: $logLevel", style: TextStyle(fontWeight: FontWeight.bold),
style: const TextStyle(fontWeight: FontWeight.bold), ).tr(args: [logLevel]),
),
subtitle: Slider( subtitle: Slider(
value: levelId.value.toDouble(), value: levelId.value.toDouble(),
onChanged: (double v) => levelId.value = v.toInt(), onChanged: (double v) => levelId.value = v.toInt(),

View File

@ -42,12 +42,12 @@ class LocalStorageSettings extends HookConsumerWidget {
children: [ children: [
ListTile( ListTile(
title: Text( title: Text(
"Duplicated Assets (${cacheItemCount.value})", "cache_settings_duplicated_assets_title",
style: context.textTheme.labelLarge style: context.textTheme.labelLarge
?.copyWith(fontWeight: FontWeight.bold), ?.copyWith(fontWeight: FontWeight.bold),
).tr(), ).tr(args: ["${cacheItemCount.value}"]),
subtitle: const Text( subtitle: const Text(
"Photos and videos that are black listed by the app", "cache_settings_duplicated_assets_subtitle",
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
), ),
@ -55,7 +55,7 @@ class LocalStorageSettings extends HookConsumerWidget {
trailing: TextButton( trailing: TextButton(
onPressed: cacheItemCount.value > 0 ? clearCache : null, onPressed: cacheItemCount.value > 0 ? clearCache : null,
child: Text( child: Text(
"CLEAR", "cache_settings_duplicated_assets_clear_button",
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: cacheItemCount.value > 0 ? Colors.red : Colors.grey, color: cacheItemCount.value > 0 ? Colors.red : Colors.grey,

View File

@ -230,31 +230,34 @@ class SharedLinkEditPage extends HookConsumerWidget {
borderSide: BorderSide(color: Colors.grey), borderSide: BorderSide(color: Colors.grey),
), ),
), ),
dropdownMenuEntries: const [ dropdownMenuEntries: [
DropdownMenuEntry(value: 0, label: "Never"), DropdownMenuEntry(
value: 0,
label: "shared_link_edit_expire_after_option_never".tr(),
),
DropdownMenuEntry( DropdownMenuEntry(
value: 30, value: 30,
label: '30 minutes', label: "shared_link_edit_expire_after_option_minutes".plural(30),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: 60, value: 60,
label: '1 hour', label: "shared_link_edit_expire_after_option_hours".plural(1),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: 60 * 6, value: 60 * 6,
label: '6 hours', label: "shared_link_edit_expire_after_option_hours".plural(6),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: 60 * 24, value: 60 * 24,
label: '1 day', label: "shared_link_edit_expire_after_option_days".plural(1),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: 60 * 24 * 7, value: 60 * 24 * 7,
label: '7 days', label: "shared_link_edit_expire_after_option_days".plural(7),
), ),
DropdownMenuEntry( DropdownMenuEntry(
value: 60 * 24 * 30, value: 60 * 24 * 30,
label: '30 days', label: "shared_link_edit_expire_after_option_days".plural(30),
), ),
], ],
); );
@ -265,15 +268,15 @@ class SharedLinkEditPage extends HookConsumerWidget {
ClipboardData( ClipboardData(
text: passwordController.text.isEmpty text: passwordController.text.isEmpty
? newShareLink.value ? newShareLink.value
: "Link: ${newShareLink.value}\nPassword: ${passwordController.text}", : "shared_link_clipboard_text".tr(
args: [newShareLink.value, passwordController.text],
),
), ),
).then((_) { ).then((_) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( SnackBar(
content: Text( content: const Text("shared_link_clipboard_copied_massage").tr(),
"Copied to clipboard", duration: const Duration(seconds: 2),
),
duration: Duration(seconds: 2),
), ),
); );
}); });
@ -310,7 +313,7 @@ class SharedLinkEditPage extends HookConsumerWidget {
context.autoPop(); context.autoPop();
}, },
child: const Text( child: const Text(
"Done", "share_done",
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -353,7 +356,7 @@ class SharedLinkEditPage extends HookConsumerWidget {
context: context, context: context,
gravity: ToastGravity.BOTTOM, gravity: ToastGravity.BOTTOM,
toastType: ToastType.error, toastType: ToastType.error,
msg: 'Error while creating shared link', msg: 'shared_link_create_error'.tr(),
); );
} }
} }

View File

@ -74,8 +74,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
if (appVersion["major"]! > serverVersion.major) { if (appVersion["major"]! > serverVersion.major) {
state = state.copyWith( state = state.copyWith(
isVersionMismatch: true, isVersionMismatch: true,
versionMismatchErrorMessage: versionMismatchErrorMessage: "profile_drawer_server_out_of_date_major".tr(),
"Server is out of date. Please update to the latest major version.",
); );
return; return;
} }
@ -83,8 +82,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
if (appVersion["major"]! < serverVersion.major) { if (appVersion["major"]! < serverVersion.major) {
state = state.copyWith( state = state.copyWith(
isVersionMismatch: true, isVersionMismatch: true,
versionMismatchErrorMessage: versionMismatchErrorMessage: "profile_drawer_client_out_of_date_major".tr(),
"Mobile App is out of date. Please update to the latest major version.",
); );
return; return;
} }
@ -92,8 +90,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
if (appVersion["minor"]! > serverVersion.minor) { if (appVersion["minor"]! > serverVersion.minor) {
state = state.copyWith( state = state.copyWith(
isVersionMismatch: true, isVersionMismatch: true,
versionMismatchErrorMessage: versionMismatchErrorMessage: "profile_drawer_server_out_of_date_minor".tr(),
"Server is out of date. Please update to the latest minor version.",
); );
return; return;
} }
@ -101,8 +98,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
if (appVersion["minor"]! < serverVersion.minor) { if (appVersion["minor"]! < serverVersion.minor) {
state = state.copyWith( state = state.copyWith(
isVersionMismatch: true, isVersionMismatch: true,
versionMismatchErrorMessage: versionMismatchErrorMessage: "profile_drawer_client_out_of_date_minor".tr(),
"Mobile App is out of date. Please update to the latest minor version.",
); );
return; return;
} }