mirror of
https://github.com/faroukbmiled/RyukGram.git
synced 2026-07-25 05:30:52 +02:00
feat: Confirm story like
feat: Confirm story emoji reaction feat: Spanish translation feat: Language switcher + import/export localization from Debug feat: Swipe down to dismiss media viewer feat: Manually add users to story/chat exclusion lists by username feat: Keep stories visually seen locally — split mode (grey ring locally, seen receipt still blockedon server) feat: Auto-scroll reels — IG default or RyukGram mode, keeps advancing after swiping back (#3) fix: Messages-only mode — tab swiping disabled fix: Settings quick-access broken in non-English languages fix: Story seen-receipt block restored on IG v425+ (Sundial uploader), per-owner, both "Block all" and "Block selected" modes fix: Block selected mode no longer marks listed stories as seen imp: Story-interaction pipeline unifies confirm + seen/advance side effects
This commit is contained in:
@@ -229,6 +229,10 @@
|
||||
|
||||
"Adds a RyukGram action button above the reel sidebar with view-cover/download/share/copy/expand/repost entries. Tap opens the menu by default; change the tap behavior below." = "Adds a RyukGram action button above the reel sidebar with view-cover/download/share/copy/expand/repost entries. Tap opens the menu by default; change the tap behavior below.";
|
||||
"Always show progress scrubber" = "Always show progress scrubber";
|
||||
"Auto-scroll reels" = "Auto-scroll reels";
|
||||
"IG default: native behavior. RyukGram: re-advances after swiping back." = "IG default: native behavior. RyukGram: re-advances after swiping back.";
|
||||
"IG default" = "IG default";
|
||||
"RyukGram" = "RyukGram";
|
||||
"Change what happens when you tap on a reel" = "Change what happens when you tap on a reel";
|
||||
"Confirm reel refresh" = "Confirm reel refresh";
|
||||
"Disable auto-unmuting reels" = "Disable auto-unmuting reels";
|
||||
@@ -315,7 +319,7 @@
|
||||
"Hides the functionality to create/send instants" = "Hides the functionality to create/send instants";
|
||||
"Hides the notification for others when you view their story" = "Hides the notification for others when you view their story";
|
||||
"Inserts a button next to the seen/eye button on story overlays" = "Inserts a button next to the seen/eye button on story overlays";
|
||||
"Keep stories visually unseen" = "Keep stories visually unseen";
|
||||
"Keep stories visually seen locally" = "Keep stories visually seen locally";
|
||||
"Liking a story automatically advances to the next one after a short delay" = "Liking a story automatically advances to the next one after a short delay";
|
||||
"Manage list" = "Manage list";
|
||||
"Manage list (%lu)" = "Manage list (%lu)";
|
||||
@@ -327,7 +331,7 @@
|
||||
"Master toggle. When off, the list is ignored" = "Master toggle. When off, the list is ignored";
|
||||
"Other" = "Other";
|
||||
"Playback" = "Playback";
|
||||
"Prevents stories from visually marking as seen in the tray (keeps colorful ring)" = "Prevents stories from visually marking as seen in the tray (keeps colorful ring)";
|
||||
"Marks stories as seen locally (grey ring) while still blocking the seen receipt on the server" = "Marks stories as seen locally (grey ring) while still blocking the seen receipt on the server";
|
||||
"Quick list button in stories" = "Quick list button in stories";
|
||||
"Search, sort, swipe to remove" = "Search, sort, swipe to remove";
|
||||
"Seen receipts" = "Seen receipts";
|
||||
@@ -466,13 +470,18 @@
|
||||
"Confirm changing theme" = "Confirm changing theme";
|
||||
"Confirm follow" = "Confirm follow";
|
||||
"Confirm follow requests" = "Confirm follow requests";
|
||||
"Confirm like: Posts/Stories" = "Confirm like: Posts/Stories";
|
||||
"Confirm like: Posts" = "Confirm like: Posts";
|
||||
"Confirm like: Reels" = "Confirm like: Reels";
|
||||
"Confirm posting comment" = "Confirm posting comment";
|
||||
"Confirm repost" = "Confirm repost";
|
||||
"Confirm shh mode" = "Confirm shh mode";
|
||||
"Confirm sticker interaction" = "Confirm sticker interaction";
|
||||
"Confirm story emoji reaction" = "Confirm story emoji reaction";
|
||||
"Confirm story like" = "Confirm story like";
|
||||
"Confirm unfollow" = "Confirm unfollow";
|
||||
"Shows an alert before sending an emoji reaction on a story" = "Shows an alert before sending an emoji reaction on a story";
|
||||
"Shows an alert when you click the like button on posts to confirm the like" = "Shows an alert when you click the like button on posts to confirm the like";
|
||||
"Shows an alert when you click the like button on stories to confirm the like" = "Shows an alert when you click the like button on stories to confirm the like";
|
||||
"Confirm voice messages" = "Confirm voice messages";
|
||||
"Shows an alert to confirm before sending a voice message" = "Shows an alert to confirm before sending a voice message";
|
||||
"Shows an alert to confirm before toggling disappearing messages" = "Shows an alert to confirm before toggling disappearing messages";
|
||||
@@ -739,15 +748,21 @@
|
||||
"Set location" = "Set location";
|
||||
"Settings…" = "Settings…";
|
||||
"Type emoji..." = "Type emoji...";
|
||||
"direct-inbox-tab" = "direct-inbox-tab";
|
||||
"mainfeed-tab" = "mainfeed-tab";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// SETTINGS VIEWS & DIALOGS //
|
||||
// Excluded-lists managers, backup/restore flows, in-picker labels. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Add chat" = "Add chat";
|
||||
"Add custom domain" = "Add custom domain";
|
||||
"Add to list?" = "Add to list?";
|
||||
"Add user" = "Add user";
|
||||
"Could not resolve user ID" = "Could not resolve user ID";
|
||||
"Enter username" = "Enter username";
|
||||
"Enter username of the DM thread" = "Enter username of the DM thread";
|
||||
"No DM thread found with @%@" = "No DM thread found with @%@";
|
||||
"User '%@' not found" = "User '%@' not found";
|
||||
"Add preset…" = "Add preset…";
|
||||
"All RyukGram settings will be reset to defaults and the imported values applied. The app will need to restart for some changes to take effect." = "All RyukGram settings will be reset to defaults and the imported values applied. The app will need to restart for some changes to take effect.";
|
||||
"Apply" = "Apply";
|
||||
@@ -902,4 +917,10 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Navigation Cell" = "Navigation Cell";
|
||||
"Localization" = "Localization";
|
||||
"Update localization file" = "Update localization file";
|
||||
"Import a .strings file for a language" = "Import a .strings file for a language";
|
||||
"Import a .strings file to update a translation. Pick a language, select the file, restart." = "Import a .strings file to update a translation. Pick a language, select the file, restart.";
|
||||
"Export English strings" = "Export English strings";
|
||||
"Share the base English .strings file for translating" = "Share the base English .strings file for translating";
|
||||
|
||||
|
||||
@@ -0,0 +1,930 @@
|
||||
// Spanish translation by Furamako (@furamako)
|
||||
//
|
||||
/*
|
||||
* RyukGram — Localizable.strings (Spanish)
|
||||
* -------------------------------------------------------------------------
|
||||
*
|
||||
* Every user-facing string in RyukGram goes through the macro
|
||||
* SCILocalized(@"English text here")
|
||||
* in the Objective-C source. The argument is BOTH the lookup key and the
|
||||
* English fallback, so if a translation is missing the user still sees
|
||||
* clean English — nothing ever breaks.
|
||||
*
|
||||
*
|
||||
* HOW TO ADD A NEW LANGUAGE
|
||||
* -------------------------------------------------------------------------
|
||||
*
|
||||
* 1. Copy this file into a new folder named after the language code:
|
||||
* src/Localization/Resources/<code>.lproj/Localizable.strings
|
||||
* e.g. ar.lproj (Arabic)
|
||||
* es.lproj (Spanish)
|
||||
* fr.lproj (French)
|
||||
* 2. Translate the RIGHT-hand side of every `"key" = "value";` line.
|
||||
* Do NOT touch the left-hand side — that is the lookup key and must
|
||||
* stay identical to the English version, otherwise the app will never
|
||||
* find your translation.
|
||||
* 3. Keep every format specifier (%@, %lu, %d, %lld, %1$@, …) exactly
|
||||
* as-is, in the same order. If you need to reorder them, switch to
|
||||
* positional specifiers (%1$@ %2$lu).
|
||||
* 4. Keep embedded quotes escaped with a backslash: \" — and newlines
|
||||
* as \n.
|
||||
* 5. Open a pull request at https://github.com/faroukbmiled/RyukGram/pulls
|
||||
* so we can ship the language in the next release.
|
||||
*
|
||||
*
|
||||
* HOW TO ADD A NEW STRING IN CODE
|
||||
* -------------------------------------------------------------------------
|
||||
*
|
||||
* Just wrap the English text with SCILocalized(...) in the .m / .x / .xm
|
||||
* file — the helper resolves to the English text automatically when no
|
||||
* translation exists. Then add the same English text as BOTH the key and
|
||||
* the value inside the matching section below, e.g.
|
||||
*
|
||||
* "Download all items" = "Download all items";
|
||||
*
|
||||
* Translators copy that line into their own .lproj and translate only the
|
||||
* right-hand side.
|
||||
*
|
||||
*
|
||||
* FILE FORMAT NOTES
|
||||
* -------------------------------------------------------------------------
|
||||
*
|
||||
* - UTF-8, LF line endings.
|
||||
* - Slash-star block comments and double-slash line comments both work.
|
||||
* - DO NOT nest one slash-star block comment inside another — the
|
||||
* parser will close the outer block at the first inner close marker
|
||||
* and every lookup in the file will silently fail.
|
||||
* - Keys and values are both quoted; every line ends with a semicolon.
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// CHROME — TOP BAR, LANGUAGE PICKER, FIRST-RUN //
|
||||
// Shown on the root Settings screen: title, search bar, the globe language //
|
||||
// menu, and the one-time welcome alert. These use dotted keys (settings.*) //
|
||||
// and are hand-authored rather than extracted from English source. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"settings.firstrun.message" = "Para el futuro: Mantener pulsadas las tres líneas en la parte superior derecha en la página de perfil, para volver a abrir la configuración de RyukGram";
|
||||
"settings.firstrun.ok" = "Entiendo!";
|
||||
"settings.firstrun.title" = "Información de configuración de RyukGram";
|
||||
"settings.language.system" = "Por defecto del sistema";
|
||||
"settings.language.title" = "Idioma";
|
||||
/* [ADDED_BY_DEV] */ "settings.language.english_only" = "Por el momento, RyukGram solo está disponible en Inglés. ¡Las traducciones son bienvenidas!";
|
||||
/* [ADDED_BY_DEV] */ "settings.language.help_translate" = "Ayudar a traducir";
|
||||
/* [ADDED_BY_DEV] */ "settings.language.ok" = "OK";
|
||||
"settings.results.many" = "%lu resultados";
|
||||
"settings.results.none" = "Sin resultados";
|
||||
"settings.results.one" = "%lu resultado";
|
||||
"settings.search.placeholder" = "Configuración de búsqueda";
|
||||
"settings.title" = "Configuración de RyukGram";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// GENERAL //
|
||||
// Settings → General tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Adds a copy option to the comment long-press menu" = "Añade la opción de copiar en el menú que aparece al mantener pulsado un comentario";
|
||||
"Adds a download option for GIF comments" = "Añade la opción de descargar los GIF en comentarios";
|
||||
"Browser" = "Navegador";
|
||||
"Comments" = "Comentarios";
|
||||
"Copy comment text" = "Copiar texto del comentario";
|
||||
"Copy description" = "Copiar descripción";
|
||||
"Copy description text fields by long-pressing on them" = "Copia la descripción al mantenerla pulsada";
|
||||
"Date format" = "Formato de fecha";
|
||||
"Disable app haptics" = "Deshabilitar respuesta háptica de la aplicación";
|
||||
"Disables haptics/vibrations within the app" = "Deshabilita la respuesta háptica y vibraciones dentro de la aplicación";
|
||||
"Do not save recent searches" = "No guardar búsquedas recientes";
|
||||
/* [ADDED_BY_DEV] */ "Search bars will no longer save your recent searches" = "Las barras de búsqueda ya no guardarán tus búsquedas recientes";
|
||||
"Download GIF comments" = "Descargar GIF en comentarios";
|
||||
"Embed domain" = "Dominio embebido";
|
||||
"Embed domain: %@" = "Dominio embebido: %@";
|
||||
"Enable liquid glass buttons" = "Habilitar botones Liquid Glass";
|
||||
"Enable liquid glass surfaces" = "Habilitar superficies Liquid Glass";
|
||||
"Enable teen app icons" = "Habilitar íconos para adolescentes";
|
||||
"Enables experimental liquid glass buttons" = "Habilita botones experimentales Liquid Glass";
|
||||
"Enables liquid glass tab bar, floating navigation, and other UI elements" = "Habilita Liquid Glass en la barra de pestañas, navegación flotante y otros elementos de la interfaz";
|
||||
"Experimental features" = "Funciones experimentales";
|
||||
"Focus/distractions" = "Concentración/Distracciones";
|
||||
"General" = "General";
|
||||
"Hide Meta AI" = "Ocultar Meta AI";
|
||||
"Hide ads" = "Ocultar anuncios";
|
||||
"Hide explore posts grid" = "Ocultar la cuadrícula de publicaciones";
|
||||
"Hide friends map" = "Ocultar el mapa de amigos";
|
||||
"Hide metrics" = "Ocultar métricas";
|
||||
"Hide notes tray" = "Ocultar bandeja de notas";
|
||||
"Hide trending searches" = "Ocultar búsquedas en tendencia";
|
||||
"Hides all suggested users for you to follow, outside your feed" = "Oculta 'Sugerencias para ti' en tu Feed (Inicio)";
|
||||
"Hides like/comment/share counts on posts and reels" = "Oculta el contador de me gusta, comentarios y compartidos en publicaciones y reels";
|
||||
"Hides the friends map icon in the notes tray" = "Oculta el ícono de mapa de amigos en la bandeja de notas";
|
||||
"Hides the grid of suggested posts on the explore/search tab" = "Oculta la cuadrícula de publicaciones sugeridas en la pestaña de exploración/búsqueda";
|
||||
"Hides the meta ai buttons/functionality within the app" = "Oculta los botones y funcionalidad de Meta AI dentro de la aplicación";
|
||||
"Hides the notes tray in the DM inbox" = "Oculta la bandeja de notas en la pestaña Mensajes";
|
||||
"Hides the suggested broadcast channels in direct messages" = "Oculta los canales sugeridos en mensajes";
|
||||
"Hides the trending searches under the explore search bar" = "Oculta las búsquedas en tendencia debajo de la barra de búsqueda";
|
||||
"Hold down on the Instagram logo to change the app icon" = "Mantén pulsado el logo de Instagram para cambiar el ícono de la aplicación";
|
||||
"Long press on the eyedropper tool in stories to customize the text color more precisely" = "Mantener pulsada la herramienta de selección de color en historias para seleccionar el color del texto de manera más precisa";
|
||||
"No suggested chats" = "Ocultar conversaciones sugeridas";
|
||||
"No suggested users" = "Ocultar usuarios sugeridos";
|
||||
"Notes" = "Notas";
|
||||
"Open links in external browser" = "Abrir enlaces en navegador externo";
|
||||
"Opens links in Safari instead of Instagram's in-app browser" = "Abrir enlaces en Safari en vez del navegador interno de Instagram";
|
||||
"Removes Instagram tracking wrappers (l.instagram.com) and UTM/fbclid params from URLs" = "Elimina intermediarios de rastreo de Instagram (l.instagram.com) y los parámetros UTM/fbclid de los enlaces";
|
||||
"Removes all ads from the Instagram app" = "Elimina todos los anuncios de la aplicación de Instagram";
|
||||
"Removes igsh, utm_source, and other tracking parameters from shared links" = "Elimina igsh, utm_source, y otros parámetros de rastreo de los enlaces compartidos";
|
||||
"Replace IG's relative timestamps (\"3d ago\") with a custom format. Toggle which surfaces it applies to inside the picker." = "Reemplaza las marcas de tiempo relativas de Instagram (\"Hace 3d\") con un formato personalizado. Escoge sobre cuales superficies se aplica dentro del selector.";
|
||||
"Replace domain in shared links" = "Reemplazar dominio en enlaces compartidos";
|
||||
"Rewrites copied/shared links to use an embed-friendly domain for previews in Discord, Telegram, etc." = "Reescribe enlaces copiados/compartidos para utilizar un dominio compatible con vistas previas embebidas en Discord, Telegram, etc.";
|
||||
"Sharing" = "Compartir";
|
||||
"Strip tracking from links" = "Eliminar rastreo de los enlaces";
|
||||
"Strip tracking params" = "Eliminar parámetros de rastreo";
|
||||
"These features rely on hidden Instagram flags and may not work on all accounts or versions.\nExperimental flags research by @euoradan (Radan)." = "Estas funciones se basan en opciones ocultas de Instagram y es posible que no funcionen en todas las cuentas o versiones.\nInvestigación sobre opciones experimentales por @euoradan (Radan).";
|
||||
"Use detailed color picker" = "Usar selector de color detallado";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// DATE FORMAT //
|
||||
// Settings → Date format tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Alternate" = "Alternativo";
|
||||
"Always ask" = "Siempre preguntar";
|
||||
"Balanced" = "Balanceada";
|
||||
"Block all" = "Bloquear todo";
|
||||
"Block selected" = "Bloquear seleccionado";
|
||||
"Button" = "Botón";
|
||||
"Classic" = "Clásico";
|
||||
"Date format — %@" = "Formato de fecha — %@";
|
||||
"Default" = "Predeterminado";
|
||||
"Disabled" = "Desactivado";
|
||||
"Download and share" = "Descargar y compartir";
|
||||
"Download to Photos" = "Descargar a Fotos";
|
||||
"Enabled" = "Activado";
|
||||
"Expand" = "Ampliar";
|
||||
"Explore" = "Explorar";
|
||||
"Fast" = "Rápida";
|
||||
"Feed" = "Feed (Inicio)";
|
||||
"High" = "Alta";
|
||||
"Inbox" = "Bandeja de entrada";
|
||||
"Low" = "Baja";
|
||||
"Max" = "Máxima";
|
||||
"Medium" = "Media";
|
||||
"Mute/Unmute" = "Silencio/Sonido";
|
||||
"Open menu" = "Abrir menú";
|
||||
"Pause/Play" = "Pausar/Reproducir";
|
||||
"Profile" = "Perfil";
|
||||
"Quality" = "Calidad";
|
||||
"Reels" = "Reels";
|
||||
"Requires restart" = "Requiere reiniciar";
|
||||
"Save to Photos" = "Guardar en Fotos";
|
||||
"Share sheet" = "Menú de compartir";
|
||||
"Standard" = "Estándar";
|
||||
"Toggle" = "Interruptor";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// FEED //
|
||||
// Settings → Feed tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Action button" = "Botón de acción";
|
||||
"Adds 'View profile picture' and 'View cover' to story tray long-press menus" = "Añade las opciones 'Ver foto de perfil' y 'Ver portada' al menú que aparece al mantener pulsado en la bandeja de historias";
|
||||
"Adds a RyukGram action button under each feed post with download/share/copy/expand/repost entries. Tap opens the menu by default; change the tap behavior below." = "Añade un botón de acción de RyukGram debajo de cada publicación en el Feed (Inicio), con las opciones descargar, compartir, copiar, ampliar y repost. Tocar abre el menú de forma predeterminada.\nArriba puedes cambiar el comportamiento al tocar.";
|
||||
"Controls when and how the feed refreshes. Background refresh occurs when returning to the app after ~10 minutes. Home button refresh occurs when tapping the Home tab while already on it." = "Controla cuando y como se actualiza el Feed (Inicio). La actualización en segundo plano ocurre cuando vuelves a la aplicación después de unos 10 minutos. La actualización al pulsar el botón de Inicio se produce al tocar el botón mientras te encuentras en el Feed (Inicio)";
|
||||
"Default tap action" = "Acción al tocar";
|
||||
"Disable background refresh" = "Deshabilitar actualización en segundo plano";
|
||||
"Disable home button refresh" = "Deshabilitar actualización con botón de Inicio";
|
||||
"Disable home button scroll" = "Deshabilitar desplazamiento con botón de Inicio";
|
||||
"Disable video autoplay" = "Deshabilitar reproducción automática de video";
|
||||
"Hide" = "Ocultar";
|
||||
"Hide entire feed" = "Ocultar todo el Feed (Inicio)";
|
||||
"Hide repost button" = "Ocultar botón de repost";
|
||||
"Hide stories tray" = "Ocultar bandeja de historias";
|
||||
"Hide suggested stories" = "Ocultar historias sugeridas";
|
||||
"Hides suggested accounts" = "Oculta las cuentas sugeridas";
|
||||
"Hides suggested reels" = "Oculta los reels sugeridos";
|
||||
"Hides suggested threads posts" = "Oculta los hilos sugeridos de Threads";
|
||||
"Hides the repost button on feed posts" = "Oculta el botón de repost en las publicaciones del Feed (Inicio)";
|
||||
"Hides the story tray at the top" = "Oculta la bandeja de historias en la parte superior";
|
||||
"Inserts a button row below like/comment/share on each post" = "Inserta un botón en la fila de los botones me gusta, comentar y compartir en cada publicación";
|
||||
"Long press on media to expand in full-screen viewer" = "Mantener pulsado el contenido multimedia para ver en pantalla completa";
|
||||
"Media" = "Contenido multimedia";
|
||||
"Media zoom" = "Ampliar contenido multimedia";
|
||||
"No suggested for you" = "Sin 'Sugerencias para ti'";
|
||||
"No suggested posts" = "Sin 'Publicaciones sugeridas'";
|
||||
"No suggested reels" = "Sin 'Reels sugeridos'";
|
||||
"No suggested threads" = "Sin'Hilos sugeridos'";
|
||||
"Prevents feed from reloading when returning from background" = "Evita que el Feed (Inicio) se actualice cuando se regrese de segundo plano";
|
||||
"Prevents videos from playing automatically" = "Evita que los videos se reproduzcan automáticamente";
|
||||
"Refresh" = "Actualizar";
|
||||
"Removes all content from your home feed" = "Elimina todo el contenido de tu Feed (Inicio)";
|
||||
"Removes suggested accounts from the stories tray" = "Elimina las cuentas sugeridas de la bandeja de historias";
|
||||
"Removes suggested posts" = "Elimina las publicaciones sugeridas";
|
||||
"Scroll to top without refreshing when tapping Home" = "Desplazarse hacia arriba sin actualizar al pulsar el botón de Inicio";
|
||||
"Show action button" = "Mostrar botón de acción";
|
||||
"Stories tray" = "Bandeja de historias";
|
||||
"Tapping Home does nothing when already on feed" = "Pulsar botón de Inicio no hace nada cuando te encuentres en la pestaña de Feed (Inicio)";
|
||||
"Tray long-press actions" = "Acciones al mantener pulsado en la bandeja";
|
||||
"What happens on a single tap. Long-press always opens the full menu" = "Lo que ocurre con un solo toque. Mantener pulsado siempre abre el menú completo";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// REELS //
|
||||
// Settings → Reels tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Adds a RyukGram action button above the reel sidebar with view-cover/download/share/copy/expand/repost entries. Tap opens the menu by default; change the tap behavior below." = "Añade un botón de acción de RyukGram sobre la barra lateral del reel con las opciones ver portada, descargar, compartir, copiar, ampliar y repost. Tocar abre el menú de forma predeterminada.\nArriba puedes cambiar el comportamiento al tocar.";
|
||||
"Always show progress scrubber" = "Siempre mostrar el indicador de progreso";
|
||||
"Auto-scroll reels" = "Desplazamiento automático de reels";
|
||||
"IG default: native behavior. RyukGram: re-advances after swiping back." = "IG por defecto: comportamiento nativo. RyukGram: vuelve a avanzar después de deslizar hacia atrás.";
|
||||
"IG default" = "IG por defecto";
|
||||
"RyukGram" = "RyukGram";
|
||||
"Change what happens when you tap on a reel" = "Cambia lo que ocurre cuando tocas en un reel";
|
||||
"Confirm reel refresh" = "Confirmar actualización de reels";
|
||||
"Disable auto-unmuting reels" = "Deshabilitar el reactivado automático del sonido en los reels";
|
||||
"Disable scrolling reels" = "Deshabilitar desplazamiento en reels";
|
||||
"Disable tab button refresh" = "Deshabilitar actualización con el botón de la pestaña";
|
||||
"Doom scrolling limit" = "Límite de doom scrolling";
|
||||
"Forces the progress bar to appear on every reel" = "Fuerza la barra de progreso a aparecer en todos los reels";
|
||||
"Hide reels header" = "Ocultar el encabezado de los reels";
|
||||
"Hides the repost button on the reels sidebar" = "Oculta el botón repost en la barra lateral de los reels";
|
||||
"Hides the top navigation bar when watching reels" = "Oculta la barra de navegación superior al ver reels";
|
||||
"Hiding" = "Ocultar";
|
||||
"Limits" = "Límites";
|
||||
"Limits the amount of reels available to scroll at any given time, and prevents refreshing" = "Limita la cantidad de reels disponibles para desplazar en cualquier momento, y evita que se actualice";
|
||||
"Only loads %@ %@" = "Solo cargar %@ %@";
|
||||
"Places a button above the like/comment/share column on each reel" = "Coloca un botón sobre la columna de botones me gusta, comentar y compartir en cada reel";
|
||||
"Prevent doom scrolling" = "Evitar doom scrolling";
|
||||
"Prevents reels from being scrolled to the next video" = "Evita que los reels se desplacen al siguiente video";
|
||||
"Prevents reels from unmuting when the volume/silent button is pressed" = "Evita que los reels dejen de estar silenciados cuando se presionan los botones de volumen o silencio";
|
||||
"Shows an alert when you trigger a reels refresh" = "Muestra una alerta al solicitar una actualización de reels";
|
||||
"Shows buttons to reveal and auto-fill the password on locked reels" = "Muestra botones para revelar y auto-completar la contraseña en reels bloqueados";
|
||||
"Tap Controls" = "Controles táctiles";
|
||||
"Tapping the Reels tab while on reels does nothing" = "Pulsar el botón de reels no hace nada cuando te encuentres en la pestaña de Reels";
|
||||
"Unlock password-locked reels" = "Desbloquea reels bloqueados por contraseña";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// PROFILE //
|
||||
// Settings → Profile tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Adds a button next to the burger menu on profiles to copy username, name or bio" = "Añade un botón junto al menú de hamburguesa (☰) en los perfiles para copiar nombre de usuario, nombre o presentación";
|
||||
"Adds a view option to the highlight long-press menu to open the cover in full-screen" = "Añade una opción de visualización en el menú que aparece al mantener pulsado sobre la historia destacada para abrir la portada en pantalla completa";
|
||||
"Copy note on long press" = "Copia la nota al mantener pulsado";
|
||||
"Follow indicator" = "Indicador de seguido";
|
||||
"Long press a profile picture to open it in full-screen with zoom, share, and save" = "Mantener pulsado en una foto de perfil para abrirla en pantalla completa para ampliar, compartir y guardar";
|
||||
"Long press the note bubble on a profile to copy the text" = "Mantén pulsado la burbuja de una nota en un perfil para copiar el texto";
|
||||
"Long press to download directly (ignored when zoom is on)" = "Mantén pulsado para descargar directamente (Se ignora cuando la foto está ampliada)";
|
||||
"Long-press gestures on profile elements — kept separate from the per-feature action buttons." = "Los gestos al mantener pulsado en los elementos del perfil, se mantienen separados de los botones de acción específicos de cada función.";
|
||||
"Profile copy button" = "Botón de copiar perfil";
|
||||
"Save profile picture" = "Guardar foto de perfil";
|
||||
"Shows whether the profile user follows you" = "Muestra si el usuario del perfil te sigue";
|
||||
"View highlight cover" = "Ver portada de la historia destacada";
|
||||
"Zoom profile photo" = "Ampliar foto de perfil";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// SAVING & DOWNLOADS //
|
||||
// Settings → Saving tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Confirm before download" = "Confirmar antes de descargar";
|
||||
"Deprecated. The RyukGram action button (configured per feature in Feed/Reels/Stories) is the new way to download media. Enable this master toggle only if you prefer the old multi-finger long-press directly on the media." = "Obsoleto. El botón de acción de RyukGram (configurado por cada por cada tipo de contenido en Feed (Inicio)/Reels/Historias) es la nueva forma de descargar contenido multimedia. Habilita este control general solo si prefieres el antiguo método de mantener pulsado con varios dedos directamente sobre el contenido multimedia.";
|
||||
"Downloads" = "Descargas";
|
||||
"Downloads with %@ %@" = "Descargar con %@ %@";
|
||||
"Enable long-press gesture" = "Habilitar gesto de mantener pulsado";
|
||||
"Finger count for long-press" = "Cantidad de dedos a mantener pulsados";
|
||||
"Legacy long-press gesture" = "Gesto antiguo de mantener pulsado";
|
||||
"Long-press hold time" = "Tiempo a mantener pulsado";
|
||||
"Master toggle for the deprecated gesture workflow (off by default)" = "Control general para el gesto antiguo (Desactivado por defecto)";
|
||||
"Press finger(s) for %@ %@" = "Pulsar dedo(s) por %@ %@";
|
||||
"Route saves into a dedicated album in Photos instead of the camera roll root" = "Guarda en un álbum dedicado en Fotos, en vez de la Fototeca";
|
||||
"Save action" = "Acción después de guardar";
|
||||
"Save to RyukGram album" = "Guardar en álbum RyukGram";
|
||||
"Saving" = "Descargar";
|
||||
"Show a confirmation dialog before starting a download" = "Muestra un diálogo de confirmación antes de iniciar una descarga";
|
||||
"What happens after the gesture downloads" = "Lo que ocurre después de que termina la descarga";
|
||||
"When \"Save to RyukGram album\" is on, downloads and share-sheet \"Save to Photos\" picks are routed into a dedicated \"RyukGram\" album in your Photos library." = "Cuando \"Guardar en álbum RyukGram\" está activado, las descargas y elementos seleccionados en \"Guardar en Fotos\" se dirigen a un álbum llamado \"RyukGram\" en tu Fototeca.";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// STORIES //
|
||||
// Settings → Stories tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Adds a RyukGram action button next to the eye button on stories with download/share/copy/expand/repost/view-mentions entries. Tap opens the menu by default; change the tap behavior below." = "Añade un botón de acción de RyukGram junto al botón con forma de ojo (👁) en las historias con las opciones descargar, compartir, copiar, ampliar, repost y ver menciones. Tocar abre el menú de forma predeterminada.\nArriba puedes cambiar el comportamiento al tocar.";
|
||||
"Adds a speaker button to the story overlay to unmute/mute audio. Also available in the 3-dot menu" = "Añade un botón de altavoz a la superposición de las historias para alternar el sonido. También disponible en el menú de los 3 puntos";
|
||||
"Advance on story like" = "Avanzar historia al dar me gusta";
|
||||
"Advance on story reply" = "Avanzar historia al responder";
|
||||
"Advance when marking as seen" = "Avanzar historia cuando se marque como vista";
|
||||
"Audio" = "Sonido";
|
||||
"Block all: all stories blocked — listed users are exceptions.\nBlock selected: only listed users are blocked — everything else is normal.\nBoth lists are saved independently." = "Bloquear todo: Todas las historias bloqueadas — Usuarios en la lista son excepciones.\nBloquear seleccionadas: Solo los usuarios en la lista son bloqueados — Todo lo demás permanece normal.\nAmbas listas son guardadas independientemente.";
|
||||
"Blocking mode" = "Modo de bloqueo";
|
||||
"Button = single-tap mark seen. Toggle = tap toggles story read receipts on/off (eye fills blue when on)" = "Botón = Un toque marca como vista. Interruptor = Tocar el interruptor alterna el aviso de visualización de las historias (👁 se vuelve azul cuando se activa)";
|
||||
"Disable instants creation" = "Deshabilitar creación de instantáneas";
|
||||
"Disable story seen receipt" = "Deshabilitar aviso de visualización de historias";
|
||||
"Enable story user list" = "Habilitar lista de usuarios para historias";
|
||||
"Hides the functionality to create/send instants" = "Oculta la funcionalidad de crear/enviar instantáneas";
|
||||
"Hides the notification for others when you view their story" = "Oculta la notificación a los demás cuando ves sus historias";
|
||||
"Inserts a button next to the seen/eye button on story overlays" = "Inserta un botón junto al botón con forma de ojo (👁) en la superposición de las historias";
|
||||
"Keep stories visually seen locally" = "Marcar historias como vistas localmente";
|
||||
"Liking a story automatically advances to the next one after a short delay" = "Darle me gusta a una historia avanza automáticamente a la siguiente después de un breve período";
|
||||
"Manage list" = "Gestionar lista";
|
||||
"Manage list (%lu)" = "Gestionar lista (%lu)";
|
||||
"Manual seen button mode" = "Modo visualización manual";
|
||||
"Mark seen on story like" = "Marcar visualización de historia al darle me gusta";
|
||||
"Mark seen on story reply" = "Marcar visualización de historia al responder";
|
||||
"Marks a story as seen the moment you tap the heart, even with seen blocking on" = "Marca una historia como vista en el momento en que tocas el corazón, incluso con el bloqueo de aviso de visualización activado";
|
||||
"Marks a story as seen when you send a reply or emoji reaction, even with seen blocking on" = "Marca una historia como vista cuando envías una respuesta o una reacción con emoji, incluso con el bloqueo de aviso de visualización activado";
|
||||
"Master toggle. When off, the list is ignored" = "Control general. Cuando está desactivado, la lista es ignorada";
|
||||
"Other" = "Otros";
|
||||
"Playback" = "Reproducción";
|
||||
"Marks stories as seen locally (grey ring) while still blocking the seen receipt on the server" = "Marca las historias como vistas localmente (círculo gris) mientras sigue bloqueando el recibo de visto en el servidor";
|
||||
"Quick list button in stories" = "Botón de lista rápida en historias";
|
||||
"Search, sort, swipe to remove" = "Buscar y ordenar. Desliza para eliminar";
|
||||
"Seen receipts" = "Confirmación de visualización";
|
||||
"Sending a reply or emoji reaction automatically advances to the next story" = "Enviar una respuesta o una reacción con emoji automáticamente avanza a la siguiente historia";
|
||||
"Show mentioned users in eye button and story menu" = "Mostrar usuarios mencionados en el botón con forma de ojo (👁) y el menú de la historia";
|
||||
"Shows an eye button on stories to add/remove users from the list. Off = use the 3-dot menu or long-press only" = "Muestra un botón con forma de ojo (👁) en las historias para añadir o eliminar usuarios de la lista. Desactivado = Usar el menú de los 3 puntos o solo mantener pulsado";
|
||||
"Stop story auto-advance" = "Detener avance automático de las historias";
|
||||
"Stories" = "Historias";
|
||||
"Stories won't auto-skip to the next one when the timer ends. Tap to advance manually" = "Historias no avanzan automáticamente a la siguiente cuando el temporizador termina. Toca para avanzar manualmente";
|
||||
"Story audio toggle" = "Alternar sonido de la historia";
|
||||
"Story user list" = "Lista de usuarios para historias";
|
||||
"Tapping the eye button to mark a story as seen advances to the next story automatically" = "Tocar el botón con forma de ojo para marcar una historia como vista avanza a la siguiente historia automáticamente";
|
||||
"View story mentions" = "Ver mencionados en la historia";
|
||||
"Which stories get seen-receipt blocking" = "Cuales historias tienen bloqueado el aviso de visualización";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// MESSAGES — READ RECEIPTS //
|
||||
// Settings → Read receipts tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Adds a button to DM threads to mark messages as seen" = "Añade un botón en las conversaciones para marcar los mensajes como vistos";
|
||||
"Auto mark seen on interact" = "Marcar automáticamente como visto al interactuar";
|
||||
"Auto mark seen on typing" = "Marcar automáticamente como visto al escribir";
|
||||
"Control when messages are marked as seen" = "Controla cuando los mensajes son marcados como vistos";
|
||||
"How the seen button behaves" = "Como el botón de visto se comporta";
|
||||
"Manually mark messages as seen" = "Marcar manualmente los mensajes como vistos";
|
||||
"Marks messages as seen when you send any message" = "Marca los mensajes como vistos cuando envías cualquier mensaje";
|
||||
"Marks messages as seen when you start typing" = "Marca los mensajes como vistos cuando comienzas a escribir";
|
||||
"Read receipt mode" = "Modo de confirmación de lectura";
|
||||
"Read receipts" = "Confirmación de lectura";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// MESSAGES — KEEP DELETED //
|
||||
// Settings → Keep deleted messages tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Activity" = "Actividad";
|
||||
"Adds a 'Download' option to the long-press menu on voice messages to save them as M4A audio" = "Añade una opción 'Descargar' al menú que aparece al mantener pulsado sobre los mensajes de voz para guardarlos como archivos M4A";
|
||||
"Adds a 'Send File' option to the plus menu in DMs. Supported file types may be limited by Instagram" = "Añade una opción 'Enviar archivo' al menú ⊕ en las conversaciones.\nTipos de archivos soportados puede estar limitado por Instagram";
|
||||
"Adds an 'Audio File' option to the plus menu in DMs to send audio files as voice messages" = "Añade una opción 'Archivo de audio' al menú ⊕ en las conversaciones para enviar archivos de audio como mensajes de voz";
|
||||
"Adds copy text, download GIF/audio to the note long-press menu" = "Añade las opciones copiar texto, descargar GIF/Audio al menú que aparece al mantener pulsada una nota";
|
||||
"Block all: all chats blocked — listed chats are exceptions.\nBlock selected: only listed chats are blocked — everything else is normal.\nBoth lists are saved independently. Long-press a chat in the inbox to add or remove." = "Bloquear todo: Todas las conversaciones bloqueadas — Conversaciones en la lista son excepciones.\nBloquear seleccionadas: Solo las conversaciones en la lista son bloqueadas — Todo lo demás permanece normal.\nAmbas listas son guardadas independientemente. Mantén pulsada una conversación en la bandeja de entrada para añadir o eliminar";
|
||||
"Block keep-deleted for excluded chats" = "Bloquea mantener mensajes eliminados para conversaciones excluidas";
|
||||
"Block keep-deleted for unlisted chats" = "Bloquear mantener eliminados para conversaciones sin listar";
|
||||
"Chat list" = "Lista de conversaciones";
|
||||
"Confirmation dialog before clearing preserved messages" = "Muestra un diálogo de confirmación antes de borrar mensajes guardados";
|
||||
"Copies note text directly on long press without opening the menu" = "Copia el texto de la nota directamente al mantener pulsado sin abrir el menú";
|
||||
"Copy text on hold" = "Copiar texto al mantener pulsado";
|
||||
"Custom emojis and background/text colors" = "Emojis, color de fondo y texto personalizado";
|
||||
"Custom note themes" = "Tema de notas personalizado";
|
||||
"Disable disappearing mode swipe" = "Deshabilitar deslizamiento para mensajes temporales";
|
||||
"Disable screenshot detection" = "Deshabilitar detección de capturas de pantalla";
|
||||
"Disable typing status" = "Deshabilitar estado de escritura";
|
||||
"Disable view-once limitations" = "Deshabilitar limitaciones de ver una vez";
|
||||
"Download voice messages" = "Descargar mensajes de voz";
|
||||
"Enable chat list" = "Habilitar lista de conversaciones";
|
||||
"Enable note theming" = "Habilitar temas en notas";
|
||||
"Enables the notes theme picker" = "Habilita el selector de temas para notas";
|
||||
"Files" = "Archivos";
|
||||
"Full last active date" = "Fecha de última vez completa";
|
||||
"Hide reels blend button" = "Ocultar el botón de blend";
|
||||
"Hide video call button" = "Ocultar botón de video llamada";
|
||||
"Hide voice call button" = "Ocultar botón de llamada";
|
||||
"Hides the blend button in DMs" = "Elimina el botón de blend en las conversaciones";
|
||||
"Hides typing indicator from others" = "Oculta el indicador de escribiendo para los demás";
|
||||
"Indicate unsent messages" = "Indicar eliminación de mensaje";
|
||||
"Keep deleted messages" = "Mantener mensajes eliminados";
|
||||
"Makes view-once messages behave like normal visual messages (loopable/pauseable)" = "Hace que los mensajes para ver una vez se comporten como mensajes visuales normales (Búcle/Pausa)";
|
||||
"Note actions" = "Acciones en notas";
|
||||
"Preserve messages that others unsend" = "Guardar los mensajes que los demás eliminen";
|
||||
"Preserves messages that others unsend" = "Guarda los mensajes que los demás eliminen";
|
||||
"Prevents accidental swipe-up activation of disappearing mode" = "Evita la activación accidental de los mensajes temporales al deslizar hacia arriba";
|
||||
"Quick list button in chats" = "Botón de lista rápida en conversaciones";
|
||||
"Removes the audio call button from DM thread header" = "Elimina el botón de llamada en las conversaciones";
|
||||
"Removes the screenshot-prevention features for visual messages in DMs" = "Elimina las funciones que impiden hacer capturas de pantalla para mensajes visuales en las conversaciones";
|
||||
"Removes the video call button from DM thread header" = "Elimina el botón de video llamada en las conversaciones";
|
||||
"Replay visual messages without expiring. Toggle in the eye button menu, or as a standalone button when the eye button is disabled" = "Reproducir mensajes visuales sin expiración. Alterna en el menú del botón ojo (👁), o como un botón por separado cuando el botón ojo (👁) está deshabilitado";
|
||||
"Search, sort, swipe to remove or toggle keep-deleted" = "Buscar y ordenar. Desliza para eliminar o alterna mantener eliminados";
|
||||
"Send audio as file" = "Enviar audio como archivo";
|
||||
"Send files (experimental)" = "Enviar archivos (Experimental)";
|
||||
"Show full date instead of \"Active 2h ago\"" = "Muestra la fecha completa en vez de \"Activo hace 2 horas\"";
|
||||
"Shows a button in DM threads to add/remove chats from the list. Long-press for more options" = "Muestra un botón en la pestaña Mensajes para añadir o eliminar conversaciones de la lista. Mantén pulsado para más opciones";
|
||||
"Shows a notification pill when a message is unsent" = "Muestra una notificación cuando se elimine un mensaje";
|
||||
"Shows an \"Unsent\" label on preserved messages" = "Muestra una etiqueta \"Mensaje eliminado\" en mensajes guardados";
|
||||
"Unlimited replay of visual messages" = "Reproducción ilimitada de mensajes visuales";
|
||||
"Unsent message notification" = "Notificación de eliminación de mensaje";
|
||||
"Visual messages" = "Mensajes visuales";
|
||||
"Voice messages" = "Mensajes de voz";
|
||||
"Warn before clearing on refresh" = "Mostrar un aviso antes de actualizar";
|
||||
"Which chats get read-receipt blocking" = "Cuales conversaciones tienen bloqueada la confirmación de lectura";
|
||||
"⚠️ Pull-to-refresh in the DMs tab clears all preserved messages. Enable the warning below to get a confirmation dialog." = "⚠️ Deslizar para actualizar en la pestaña Mensajes borra todos los mensajes guardados. Activa la advertencia que aparece arriba para que se muestre diálogo de confirmación.";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// MESSAGES //
|
||||
// Settings → Messages tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Messages" = "Mensajes";
|
||||
"Threads" = "Hilos";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// NAVIGATION //
|
||||
// Settings → Navigation tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Hide create tab" = "Ocultar pestaña Crear";
|
||||
"Hide explore tab" = "Ocultar pestaña Explorar";
|
||||
"Hide feed tab" = "Ocultar pestaña Feed (Inicio)";
|
||||
"Hide messages tab" = "Ocultar pestaña Mensajes";
|
||||
"Hide reels tab" = "Ocultar pestaña Reels";
|
||||
"Hides every tab except DM inbox + profile and forces launch into the inbox. Settings shortcut moves to long-press on the inbox tab." = "Oculta todas las pestañas excepto Mensajes y Perfil. Inicia la aplicación en la pestaña Mensajes. El acceso rápido a la configuración se cambia a mantener pulsada la pestaña Mensajes.";
|
||||
"Hides the create tab on the bottom navigation bar" = "Oculta la pestaña Crear en la barra de navegación inferior";
|
||||
"Hides the direct messages tab on the bottom navigation bar" = "Oculta la pestaña Mensajes en la barra de navegación inferior";
|
||||
"Hides the explore/search tab on the bottom navigation bar" = "Oculta la pestaña Explorar (Busca) en la barra de navegación inferior";
|
||||
"Hides the feed/home tab on the bottom navigation bar" = "Oculta la pestaña Feed (Inicio) en la barra de navegación inferior";
|
||||
"Hides the reels tab on the bottom navigation bar" = "Oculta la pestaña Reels en la barra de navegación inferior";
|
||||
"Hiding tabs" = "Ocultar pestañas";
|
||||
"Icon order" = "Orden de los íconos";
|
||||
"Launch tab" = "Pestaña inicial";
|
||||
"Lets you swipe to switch between navigation bar tabs" = "Permite deslizar para cambiar entre las pestañas de la barra de navegación";
|
||||
"Messages only" = "Únicamente Mensajes";
|
||||
"Messages-only mode" = "Modo mensajería";
|
||||
"Navigation" = "Navegación";
|
||||
"Swipe between tabs" = "Deslizar entre pestañas";
|
||||
"Tab the app opens to. Ignored when Messages-only is on" = "Pestaña en la que inicia la aplicación. Se ignora cuando el modo mensajería está activado";
|
||||
"The order of the icons on the bottom navigation bar" = "Orden de los íconos en la barra de navegación inferior";
|
||||
"Turn IG into a DM-only client" = "Convierte Instagram en una aplicación de mensajería instantánea";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// CONFIRM ACTIONS //
|
||||
// Settings → Confirm actions tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Confirm actions" = "Confirmar acciones";
|
||||
"Confirm call" = "Confirmar llamada";
|
||||
"Confirm changing theme" = "Confirmar cambiar el tema";
|
||||
"Confirm follow" = "Confirmar seguir";
|
||||
"Confirm follow requests" = "Confirmar solicitud de seguimiento";
|
||||
/* [ADDED_BY_DEV] */ "Confirm like: Posts" = "Confirmar me gusta en publicaciones";
|
||||
/* [ADDED_BY_DEV] */ "Confirm story like" = "Confirmar me gusta en historias";
|
||||
/* [ADDED_BY_DEV] */ "Confirm story emoji reaction" = "Confirmar reacción con emojis en historias";
|
||||
"Confirm like: Reels" = "Confirmar me gusta en reels";
|
||||
"Confirm posting comment" = "Confirmar publicar comentario";
|
||||
"Confirm repost" = "Confirmar repost";
|
||||
"Confirm shh mode" = "Confirmar mensajes temporales";
|
||||
"Confirm sticker interaction" = "Confirma interacción con stickers";
|
||||
"Confirm unfollow" = "Confirmar dejar de seguir";
|
||||
"Confirm voice messages" = "Confirmar mensaje de voz";
|
||||
"Shows an alert to confirm before sending a voice message" = "Muestra una alerta para confirmar antes de enviar un mensaje de voz";
|
||||
"Shows an alert to confirm before toggling disappearing messages" = "Muestra una alerta para confirmar antes de activar los mensajes temporales";
|
||||
"Shows an alert when you accept/decline a follow request" = "Muestra una alerta cuando aceptas o rechazas una solicitud de seguimiento";
|
||||
"Shows an alert when you change a chat theme to confirm" = "Muestra una alerta para confirmar cuando cambias el tema en una conversación";
|
||||
"Shows an alert when you click a sticker on someone's story to confirm the action" = "Muestra una alerta para confirmar la acción cuando tocas un sticker en la historia de alguien";
|
||||
"Shows an alert when you click the audio/video call button to confirm before calling" = "Muestra una alerta cuando tocas los botones de llamada y video llamada, antes de llamar";
|
||||
"Shows an alert when you click the follow button to confirm the follow" = "Muestra una alerta para confirmar cuando tocas el botón de seguir";
|
||||
/* [ADDED_BY_DEV] */ "Shows an alert when you click the like button on posts to confirm the like" = "Muestra una alerta para confirmar cuando tocas el botón de me gusta en publicaciones";
|
||||
"Shows an alert when you click the like button on reels to confirm the like" = "Muestra una alerta para confirmar cuando tocas el botón de me gusta en reels";
|
||||
/* [ADDED_BY_DEV] */ "Shows an alert when you click the like button on stories to confirm the like" = "Muestra una alerta para confirmar cuando tocas el botón de me gusta en historias";
|
||||
/* [ADDED_BY_DEV] */ "Shows an alert before sending an emoji reaction on a story" = "Muestra una alerta antes de enviar una reacción con emojis en una historia";
|
||||
"Shows an alert when you click the post comment button to confirm" = "Muestra una alerta para confirmar cuando tocas el botón de publicar comentario";
|
||||
"Shows an alert when you click the repost button to confirm before resposting" = "Muestra una alerta para confirmar cuando tocas el botón de repost";
|
||||
"Shows an alert when you click the unfollow button to confirm" = "Muestra una alerta para confirmar cuando tocas el botón de dejar de seguir";
|
||||
"Shows an alert when you click the like button on posts or stories to confirm the like" = "Muestra una alerta para confirmar cuando tocas el botón de me gusta en publicaciones o historias";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// BACKUP & RESTORE //
|
||||
// Settings → Backup & Restore tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Backup & Restore" = "Copia de seguridad & restauración";
|
||||
"Export settings" = "Exportar configuración";
|
||||
"Export your RyukGram settings to a JSON file and import them later. Importing resets all settings to defaults before applying the imported values, and shows a preview before anything changes." = "Exporta tu configuración de RyukGram a un archivo JSON para importarlos mas tarde. Al importar, se restaurarán los valores predeterminados antes de aplicar la nueva configuración. Podrás ver una vista previa antes de confirmar los cambios.";
|
||||
"Import settings" = "Importar configuración";
|
||||
"Load settings from a JSON file" = "Cargar configuración desde un archivo JSON";
|
||||
"Reset to defaults" = "Restablecer los valores predeterminados";
|
||||
"Revert every RyukGram preference" = "Restablecer todas las preferencias de RyukGram";
|
||||
"Save settings as a JSON file" = "Guarda configuración como un archivo JSON";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// EXPERIMENTAL //
|
||||
// Settings → Experimental tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Experimental" = "Experimental";
|
||||
"These features are unstable and cause the Instagram app to crash unexpectedly.\n\nUse at your own risk!" = "Estas funciones son inestables y provocan que la aplicación de Instagram se cierre inesperadamente.\n\n¡Úsalas bajo tu propia responsabilidad!";
|
||||
"Warning" = "Advertencia";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ADVANCED //
|
||||
// Settings → Advanced tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Advanced" = "Avanzado";
|
||||
"Automatically opens settings when the app launches" = "Abre la configuración automáticamente cuando se inicia la aplicación";
|
||||
"Disable safe mode" = "Deshabilitar modo seguro";
|
||||
"Enable tweak settings quick-access" = "Habilitar acceso rápido a la configuración del Tweak";
|
||||
"Hold on the home tab to open RyukGram settings" = "Mantén pulsada la pestaña Feed (Inicio) para abrir la configuración de RyukGram";
|
||||
"Instagram" = "Instagram";
|
||||
"Pause playback when opening settings" = "Pausa la reproducción al abrir la configuración";
|
||||
"Pauses any playing video/audio when settings opens" = "Pausa cualquier reproducción de video o audio cuando se abre la configuración";
|
||||
"Prevents Instagram from resetting settings after crashes (at your own risk)" = "Evita que Instagram restablezca la configuración después de un cierre inesperado\n(¡Bajo tu propia responsabilidad!)";
|
||||
"Reset onboarding state" = "Restablecer estado onboarding"; // Verify onboarding - Verificar onboarding
|
||||
"Settings" = "Configuración";
|
||||
"Show tweak settings on app launch" = "Muestra la configuración del Tweak cuando se inicia la aplicación";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// DEBUG //
|
||||
// Settings → Debug tab //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Button Cell" = "Celda de botón";
|
||||
"Change the value on the right" = "Cambia el valor a la derecha";
|
||||
"Debug" = "Debug";
|
||||
"Enable FLEX gesture" = "Habilitar gesto FLEX";
|
||||
"Hold 5 fingers on the screen to open FLEX" = "Mantén pulsados 5 dedos en la pantalla para abrir FLEX";
|
||||
"I have %@%@" = "Tengo %@%@";
|
||||
"Link Cell" = "Celda de enlace";
|
||||
"Menu Cell" = "Celda de menú";
|
||||
"Open FLEX on app focus" = "Abrir FLEX al enfocar la aplicación";
|
||||
"Open FLEX on app launch" = "Abrir FLEX al iniciar la aplicación";
|
||||
"Opens FLEX when the app is focused" = "Abre FLEX cuando la aplicación es enfocada";
|
||||
"Opens FLEX when the app launches" = "Abre FLEX cuando la aplicación se inicia";
|
||||
"Static Cell" = "Celda estática";
|
||||
"Stepper cell" = "Celda de paso";
|
||||
"Switch Cell" = "Celda interruptor";
|
||||
"Switch Cell (Restart)" = "Cambiar celda (Reinicio)";
|
||||
"Tap the switch" = "Toca el interruptor";
|
||||
"Using icon" = "Usar ícono";
|
||||
"Using image" = "Usar imagen";
|
||||
"_ Example" = "_ Ejemplo";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// DOWNLOADS & MEDIA ACTIONS //
|
||||
// Action button menus, download/share/copy toasts, quality picker pills. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"%@ settings" = "Configuración de %@";
|
||||
"Cancelled" = "Cancelado";
|
||||
"Copied %lu URLs" = "Copiados %lu enlaces";
|
||||
"Copied caption" = "Descripción copiada";
|
||||
"Copied download URL" = "Enlace de descarga copiado";
|
||||
"Copy all URLs" = "Copiar todos los enlaces";
|
||||
"Copy caption" = "Copiar descripción";
|
||||
"Copy download URL" = "Copiar enlace de descarga";
|
||||
"Could not extract any URLs" = "No se logró extraer ningún enlace";
|
||||
"Could not extract media URL" = "No se logró extraer enlace de medios";
|
||||
"Could not extract photo URL" = "No se logró extraer enlace de fotos";
|
||||
"Could not extract video URL" = "No se logró extraer enlace de videos";
|
||||
"Done" = "Finalizado";
|
||||
"Download all (%lu)" = "Descargar todos (%lu)";
|
||||
"Download all stories and share?" = "¿Descargar todas las historias y compartir?";
|
||||
"Download all to Photos" = "Descargar todo en Fotos";
|
||||
"Download and share all" = "Descargar y compartir todo";
|
||||
"Download and share?" = "¿Descargar y compartir?";
|
||||
"Download failed" = "Descarga fallida";
|
||||
"Downloaded %lu items" = "Descargando %lu elementos";
|
||||
"Downloading %@..." = "Descargando %@...";
|
||||
"Downloading..." = "Descargando...";
|
||||
"Failed to save" = "Error al guardar";
|
||||
"HD download complete" = "Descarga HD completada";
|
||||
"Mute audio" = "Silenciar sonido";
|
||||
"No URLs" = "Sin enlaces";
|
||||
"No URLs found" = "Sin enlaces encontrados";
|
||||
"No caption on this post" = "No hay descripción en esta publicación";
|
||||
"No carousel children" = "Sin carrusel hijo";
|
||||
"No cover image" = "Sin imagen de portada";
|
||||
"No files downloaded" = "No se descargaron archivos";
|
||||
"No media" = "Sin medios";
|
||||
"No media URL" = "Sin enlace de medios";
|
||||
"No media to expand" = "Sin medios para ampliar";
|
||||
"No media to show" = "Sin medios para mostrar";
|
||||
"No video URL" = "Sin enlace de video";
|
||||
"Not a carousel" = "No es un carrusel";
|
||||
"Nothing to save" = "Nada para guardar";
|
||||
"Nothing to share" = "Nada para compartir";
|
||||
"Opening creator..." = "Abriendo creador...";
|
||||
"Photo library access denied" = "Acceso a la Fototeca denegado";
|
||||
"Photos access denied" = "Acceso a Fotos denegado";
|
||||
"Preparing repost..." = "Preparando repost...";
|
||||
"Repost" = "Repost";
|
||||
"Repost unavailable" = "Repost no disponible";
|
||||
"Save all stories to Photos?" = "¿Guardar todas las historias en Fotos?";
|
||||
"Save failed" = "Error al guardar";
|
||||
"Save to Photos?" = "¿Guardar en Fotos?";
|
||||
"Saved %lu items" = "Guardados %lu elementos";
|
||||
"Saved to Photos" = "Guardado en Fotos";
|
||||
"Saved to RyukGram" = "Guardado en RyukGram";
|
||||
"Tap to cancel" = "Toca para cancelar";
|
||||
"Unmute audio" = "Activar sonido";
|
||||
"View cover" = "Ver portada";
|
||||
"View mentions" = "Ver menciones";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// STORIES & MESSAGES (FEATURES) //
|
||||
// Buttons, menu entries, toasts and alerts shown while watching stories or //
|
||||
// inside DM threads. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"A message was unsent" = "Se anuló el envío de un mensaje";
|
||||
"Add" = "Añadir";
|
||||
"Add to block list" = "Añadir a la lista de bloqueo";
|
||||
"Add to block list?" = "¿Añadir a la lista de bloqueo?";
|
||||
"Added to block list" = "Añadido a la lista de bloqueo";
|
||||
"Audio not loaded yet. Play the message first and try again." = "Audio aún no cargado. Reproduce el mensaje primero y vuelve a intentar.";
|
||||
"Audio sent" = "Audio enviado";
|
||||
"Audio/Video from Files" = "Audio/Video desde Archivos";
|
||||
"Blocked" = "Bloqueado";
|
||||
"Cancel" = "Cancelar";
|
||||
"Clear preserved messages?" = "¿Borrar mensajes guardados?";
|
||||
"Converting..." = "Convirtiendo...";
|
||||
"Copy text" = "Copiar texto";
|
||||
"Could not find media" = "No se logró encontrar medios";
|
||||
"Could not find story media" = "No se logró encontrar medios para la historia";
|
||||
"Could not get audio data. Try again after refreshing the chat." = "No se encontró datos de audio. Intenta nuevamente luego de actualizar la conversación.";
|
||||
"Could not get video URL" = "No se encontró enlace al video";
|
||||
"Disable read receipts" = "Deshabilitar confirmación de lectura";
|
||||
"Done!" = "¡Finalizado!";
|
||||
"Download audio" = "Descargar audio";
|
||||
"Downloading audio..." = "Descargando audio...";
|
||||
"Enable read receipts" = "Habilitar confirmación de lectura";
|
||||
"Error: %@" = "Error: %@";
|
||||
"Exclude chat" = "Excluir chat";
|
||||
"Exclude story seen" = "Excluir de visualización de historia";
|
||||
"Excluded" = "Excluído";
|
||||
"Extracting audio..." = "Extrayendo audio...";
|
||||
"Failed to encode GIF" = "No se logró codificar el GIF";
|
||||
"File sending not supported" = "Enviar archivos no soportado";
|
||||
"Follow" = "Seguir";
|
||||
"Following" = "Siguiendo";
|
||||
"Mark messages as seen" = "Marcar mensajes como vistos";
|
||||
"Mark seen" = "Marcar como vista";
|
||||
"Marked as seen" = "Marcado como visto";
|
||||
"Marked as viewed" = "Marcado como visto";
|
||||
"Marked messages as seen" = "Mensajes marcados como vistos";
|
||||
"Mentions" = "Menciones";
|
||||
"Message sender not found" = "No se encontró remitente del mensaje";
|
||||
"Messages settings" = "Configuración de Mensajes";
|
||||
"Mute story audio" = "Silenciar sonido de historia";
|
||||
"No audio URL found. Try again after refreshing the chat." = "No se encontró enlace de audio. Intenta nuevamente luego de actualizar la conversación.";
|
||||
"No mentions in this story" = "Sin menciones en esta historia";
|
||||
"No thread key" = "Sin llave";
|
||||
"No voice send method found" = "No se encontró método para envío de voz";
|
||||
"Note not found" = "Nota no encontrada";
|
||||
"Note text copied" = "Texto de la nota copiado";
|
||||
"Open GitHub" = "Abrir GitHub";
|
||||
"Read receipts disabled" = "Confirmación de lectura DESACTIVADA";
|
||||
"Read receipts enabled" = "Confirmación de lectura ACTIVADA";
|
||||
"Read receipts will be blocked for this chat." = "Confirmación de lectura estará bloqueado para esta conversación.";
|
||||
"Read receipts will no longer be blocked for this chat." = "Confirmación de lectura ya no estará bloqueado para este chat.";
|
||||
"Remove" = "Eliminar";
|
||||
"Remove from block list" = "Eliminar de la lista de bloqueo";
|
||||
"Remove from block list?" = "¿Eliminar de la lista de bloqueo?";
|
||||
"Removed" = "Eliminado";
|
||||
"Save GIF" = "Guardar GIF";
|
||||
"Selection too short (min 0.5s)" = "Selección demasiado corta (min 0.5s)";
|
||||
"Send Audio" = "Enviar audio";
|
||||
"Send anyway" = "Enviar de todos modos";
|
||||
"Send failed: %@" = "Envío fallido: %@";
|
||||
"Send service not found" = "Servicio de envío no encontrado";
|
||||
"Share" = "Compartir";
|
||||
"Story read receipts disabled" = "Aviso de visualización de historia DESACTIVADO";
|
||||
"Story read receipts enabled" = "Aviso de visualización de historia ACTIVADO";
|
||||
"Story seen receipts will be blocked for @%@." = "Aviso de visualización de historia será bloqueado para @%@.";
|
||||
"This chat will resume normal read-receipt behavior." = "Este chat volverá a funcionar con el sistema habitual de confirmaciones de lectura.";
|
||||
"Total: %@" = "Total: %@";
|
||||
"Un-exclude" = "No excluir";
|
||||
"Un-exclude chat" = "No excluir conversación";
|
||||
"Un-exclude chat?" = "¿No excluir conversación?";
|
||||
"Un-exclude story seen" = "No excluir de visualización de la historia";
|
||||
"Un-exclude story seen?" = "¿No excluir de visualización de la historia?";
|
||||
"Un-excluded" = "No excluído";
|
||||
"Unblock" = "Desbloquear";
|
||||
"Unblocked" = "Desbloqueado";
|
||||
"Unlimited replay enabled" = "Reproducción ilimitada ACTIVADA";
|
||||
"Unmute story audio" = "Activar sonido de la historia";
|
||||
"Unsent" = "Mensaje eliminado";
|
||||
"Upload Audio" = "Subir Audio";
|
||||
"VC not found" = "VC no encontrado"; // Verify - Verificar
|
||||
"Video from Library" = "Video desde Fototeca";
|
||||
"Visual messages will expire" = "Mensajes visuales expirarán";
|
||||
"Visual messages: expiring" = "Mensajes visuales: Expirando";
|
||||
"Visual messages: unlimited replay" = "Mensajes visuales: Reproducción ilimitada";
|
||||
"Will sync when leaving stories" = "Se sincronizará al salir de las historias";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// GENERAL FEATURES //
|
||||
// Strings inside per-feature overlays: fake location, color picker, notes //
|
||||
// customization, profile copy, etc. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Add location" = "Añadir ubicación";
|
||||
"Add preset" = "Añadir ajuste preestablecido";
|
||||
"Change location" = "Cambiar ubicación";
|
||||
"Click the Apply button after this to see the emoji" = "Toca el botón Aplicar después de esto para ver el emoji";
|
||||
"Copied text to clipboard" = "Texto copiado al portapapeles";
|
||||
"Copy" = "Copiar";
|
||||
"Copy all" = "Copiar todo";
|
||||
"Copy bio" = "Copiar presentación";
|
||||
"Copy from profile" = "Copiar desde perfil";
|
||||
"Copy name" = "Copiar nombre";
|
||||
"Could not find cover image" = "No se encontró imagen de portada";
|
||||
"Current: %@" = "Actual: %@";
|
||||
"Disable" = "Desactivado";
|
||||
"Download GIF" = "Descargar GIF";
|
||||
"Enable" = "Activado";
|
||||
"Enter Emoji Text" = "Introduce Texto con Emoji";
|
||||
"Fake location" = "Ubicación falsa";
|
||||
"Name" = "Nombre";
|
||||
"Nothing to copy" = "Nada para copiar";
|
||||
"Save" = "Guardar";
|
||||
"Save preset" = "Guardar ajuste preestablecido";
|
||||
"Saved locations" = "Ubicaciones guardadas";
|
||||
"Select color" = "Escoger color";
|
||||
"Set location" = "Establecer ubicación";
|
||||
"Settings…" = "Configuración…";
|
||||
"Type emoji..." = "Introduce emoji...";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// SETTINGS VIEWS & DIALOGS //
|
||||
// Excluded-lists managers, backup/restore flows, in-picker labels. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Add chat" = "Añadir conversación";
|
||||
"Add custom domain" = "Añadir dominio personalizado";
|
||||
"Add preset…" = "Añadir ajuste preestablecido";
|
||||
"Add to list?" = "¿Añadir a la lista?";
|
||||
"Add user" = "Añadir usuario";
|
||||
"Could not resolve user ID" = "No se pudo resolver el ID del usuario";
|
||||
"Enter username" = "Introducir nombre de usuario";
|
||||
"Enter username of the DM thread" = "Introducir nombre de usuario de la conversación";
|
||||
"No DM thread found with @%@" = "No se encontró conversación con @%@";
|
||||
"User '%@' not found" = "Usuario '%@' no encontrado";
|
||||
"All RyukGram settings will be reset to defaults and the imported values applied. The app will need to restart for some changes to take effect." = "Todas las configuraciones de RyukGram se restablecerán a los valores predeterminados y se aplicarán los valores importados. Será necesario reiniciar la aplicación para que algunos cambios surtan efecto.";
|
||||
"Apply" = "Aplicar";
|
||||
"Apply imported settings?" = "¿Aplicar configuración importada?";
|
||||
"Apply to" = "Aplicar a";
|
||||
"Chats" = "Conversaciones";
|
||||
"Could not read file." = "No se logró leer el archivo.";
|
||||
"Could not write temporary file." = "No se logró escribir el archivo temporal.";
|
||||
"Current location" = "Ubicación actual";
|
||||
"Custom" = "Personalizada";
|
||||
"Date Format" = "Formato de Fecha";
|
||||
"Delete" = "Eliminar";
|
||||
"Done editing" = "Finalizar edición";
|
||||
"Edit values" = "Editar valores";
|
||||
"Enable fake location" = "Habilitar ubicación falsa";
|
||||
"Every RyukGram preference will revert to its built-in default. This can't be undone." = "Todas las preferencias de RyukGram volverán a los valores predeterminados. Esto no se puede deshacer.";
|
||||
"Excluded chats" = "Conversaciones excluídas";
|
||||
"Excluded users" = "Usuarios excluídos";
|
||||
"File is not a valid RyukGram settings export." = "Archivo no es una exportación válida de la configuración de RyukGram.";
|
||||
"Follow default" = "Seguir predeterminada";
|
||||
"Force OFF (allow unsends)" = "Forzar DESACTIVADO (Permite anular envío)";
|
||||
"Force ON (preserve unsends)" = "Forzar ACTIVADO (Mantiene eliminados)";
|
||||
"Form view" = "Vista de forma";
|
||||
"Format" = "Formato";
|
||||
"Import failed" = "Importación fallida";
|
||||
"Import preview" = "Previsualizar importación";
|
||||
"Included chats" = "Conversaciones incluidas";
|
||||
"Included users" = "Usuarios incluidos";
|
||||
"KD: ON" = "KD: ACTIVADO";
|
||||
"KD: default" = "ME: Predeterminado";
|
||||
"Keep-deleted" = "Mantener eliminados";
|
||||
"Keep-deleted override" = "Anular mantener eliminados";
|
||||
"Off" = "DESACTIVADO";
|
||||
"On" = "ACTIVADO";
|
||||
"Presets" = "Preajustes";
|
||||
"Raw JSON view" = "Ver JSON sin formato";
|
||||
"Remove Selected" = "Eliminar Seleccionados";
|
||||
"Remove from list" = "Eliminar de la lista";
|
||||
"Reset" = "Restablecer";
|
||||
"Reset all settings?" = "¿Restablecer todas las configuraciones?";
|
||||
"Saved presets are reusable. Tap a preset to make it the active location." = "Los ajustes preestablecidos guardados se pueden reutilizar. Toca un ajuste preestablecido para convertirlo en la ubicación activa.";
|
||||
"Search address or place" = "Buscar dirección o lugar";
|
||||
"Search by name or username" = "Buscar por nombre o nombre de usuario";
|
||||
"Search by username or name" = "Buscar por nombre de usuario o nombre";
|
||||
"Search settings" = "Buscar en configuración";
|
||||
"Select" = "Seleccionar";
|
||||
"Select location on map" = "Seleccionar ubicación en el mapa";
|
||||
"Set current location" = "Establecer ubicación actual";
|
||||
"Set keep-deleted override" = "Establecer anulación de mantener eliminados";
|
||||
"Settings exported" = "Configuración exportada";
|
||||
"Settings imported" = "Configuración importada";
|
||||
"Show seconds" = "Mostrar segundos";
|
||||
"Sort by" = "Ordenar por";
|
||||
"Story users" = "Usuarios de historias";
|
||||
"Toggle each NSDate formatter IG uses. Different surfaces (feed, comments, stories, DMs) go through different methods — enable the ones you want the custom format applied to." = "Alterna cada formato NSDate que utiliza Instagram. Las distintas secciones (Feed (Inicio), comentarios, historias, mensajes) utilizan métodos diferentes: activa aquellos a los que quieras aplicar el formato personalizado.";
|
||||
"Use this location" = "Usar esta ubicación";
|
||||
"When on, all CoreLocation requests inside Instagram return the location below." = "Cuando está activada, todas las solicitudes de CoreLocation dentro de Instagram devuelven la ubicación que se indica a continuación.";
|
||||
"Show map button" = "Botón de mostrar mapa";
|
||||
"When on, all CoreLocation requests inside Instagram return the location below. Toggle the map button to show or hide the quick toggle on the Friends Map view." = "Cuando está activado, todas las solicitudes de CoreLocation dentro de Instagram devuelven la ubicación que se muestra a continuación. Pulsa el botón del mapa para mostrar u ocultar el control rápido en la vista mapa de amigos.";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// REELS (FEATURES) //
|
||||
// Strings from Reels. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Copied!" = "¡Copiado!";
|
||||
"No password found" = "No se encontró contraseña";
|
||||
"No text field found" = "No se encontró campo de texto";
|
||||
"Password" = "Contraseña";
|
||||
"Refresh Reels?" = "¿Actualizar Reels?";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// PROFILE (FEATURES) //
|
||||
// Strings from Profile. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Doesn't follow you" = "No te sigue";
|
||||
"Follows you" = "Te sigue";
|
||||
"Note copied" = "Nota copiada";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// CONFIRM DIALOGS (IN-FEATURE) //
|
||||
// Strings from Confirm dialogs. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Unfollow?" = "¿Dejar de seguir?";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// MISC //
|
||||
// Anything that didn't fit a named section. Usually short labels. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"720p • progressive • fastest" = "720p • Progresivo • Más rápido";
|
||||
"Are you sure?" = "¿Estás seguro?";
|
||||
"Copy audio URL" = "Copiar enlace de audio";
|
||||
"Copy quality info" = "Copiar información sobre la calidad";
|
||||
"Copy video URL" = "Copiar enlace de video";
|
||||
"Could not access reel media" = "No se logró acceder a los medios del reel";
|
||||
"Could not access reel photo" = "No se logró acceder a la foto del reel";
|
||||
"Could not extract photo url from post" = "No se logró extraer foto de la publicación";
|
||||
"Could not extract photo url from reel" = "No se logró extraer enlace de la foto del reel";
|
||||
"Could not extract photo url from story" = "No se logró extraer enlace de la foto de la historia";
|
||||
"Could not extract video url from post" = "No se logró extraer enlace del video de la publicación";
|
||||
"Could not extract video url from reel" = "No se logró extraer enlace del video del reel";
|
||||
"Could not extract video url from story" = "No se logró extraer enlace del video de la historia";
|
||||
"Download Quality" = "Calidad de descarga";
|
||||
"FFmpegKit Debug" = "FFmpegKit Debug";
|
||||
"Later" = "Mas tarde";
|
||||
"No!" = "¡No!";
|
||||
"Restart" = "Reiniciar";
|
||||
"Restart required" = "Reinicio requerido";
|
||||
"Yes" = "Si";
|
||||
"You must restart the app to apply this change" = "Debes reiniciar la aplicación para aplicar este cambio";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// ABOUT / CREDITS //
|
||||
// Settings → Credits footer. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"%@ — view source, report issues, see releases" = "%@ — ver código fuente, reportar problemas y ver lanzamientos";
|
||||
"Credits" = "Créditos";
|
||||
"Developer" = "Desarrollador";
|
||||
"Donate to SoCuul" = "Donar a SoCuul";
|
||||
"Original SCInsta developer" = "Desarrollador Original SCInsta";
|
||||
"Ryuk" = "Ryuk";
|
||||
"RyukGram %@\n\nInstagram v%@\n\nBased on SCInsta by SoCuul" = "RyukGram %@\n\nInstagram v%@\n\nBasado en SCInsta por SoCuul";
|
||||
"RyukGram on GitHub" = "RyukGram en GitHub";
|
||||
"SoCuul" = "SoCuul";
|
||||
"Support the original developer" = "Apoyar al desarrollador original";
|
||||
"View Repo" = "Ver Repo";
|
||||
"View the source code on GitHub" = "Ver el código fuente en GitHub";
|
||||
/* [ADDED_BY_TRANSLATOR] */ "Translator" = "Traductor";
|
||||
/* [ADDED_BY_TRANSLATOR] */ "Flamako" = "Flamako";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// HD DOWNLOADS //
|
||||
// Enhanced / HD downloads settings (DASH + FFmpegKit encoding). //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Download video at the highest available quality" = "Descargar video en la mejor calidad disponible";
|
||||
"Downloads HD video via DASH streams and encodes to H.264. Requires FFmpegKit." = "Descarga el video en HD mediante transmisión DASH y lo codifica en H.264. Requiere FFmpegKit.";
|
||||
"Encoding speed" = "Velocidad de codificación";
|
||||
"Enhanced downloads" = "Mejorar descargas";
|
||||
"FFmpegKit is not available. Install the sideloaded IPA or the _ffmpeg .deb variant to enable." = "FFmpegKit no está disponible. Instala el archivo IPA descargado o la variante .deb de _ffmpeg para activarlo.";
|
||||
"Faster = lower quality" = "Más rápido = Menor calidad";
|
||||
"Photo quality" = "Calidad de imagen";
|
||||
"Use highest resolution available" = "Usar la resolución mas alta disponible";
|
||||
"Video quality" = "Calidad de video";
|
||||
"Which quality to download" = "En qué calidad descargar";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// EXPERIMENTAL / DEBUG //
|
||||
// Placeholder rows only shown in the experimental settings sandbox. //
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"Navigation Cell" = "Celda de navegación";
|
||||
/* [ADDED_BY_DEV] */ "Localization" = "Traducción";
|
||||
/* [ADDED_BY_DEV] */ "Update localization file" = "Actualizar traducción";
|
||||
/* [ADDED_BY_DEV] */ "Import a .strings file for a language" = "Importa un archivo .strings para añadir un idioma";
|
||||
/* [ADDED_BY_DEV] */ "Import a .strings file to update a translation. Pick a language, select the file, restart." = "Importa un archivo .strings para actualizar una traducción. Escoge un idioma, selecciona el archivo y reinicia";
|
||||
/* [ADDED_BY_DEV] */ "Export English strings" = "Exportar archivo .strings en Inglés";
|
||||
/* [ADDED_BY_DEV] */ "Share the base English .strings file for translating" = "Comparte el archivo .strings en Inglés para traducir";
|
||||
|
||||
@@ -27,6 +27,9 @@ NSString *SCIResolvedLanguageCode(void);
|
||||
// Invalidate cached bundles/strings after a language switch.
|
||||
void SCILocalizationReset(void);
|
||||
|
||||
// Writable path for user-imported lproj overrides (Library/RyukGram.bundle/).
|
||||
NSString *SCILocalizationOverridePath(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,11 @@ static NSBundle *gLanguageBundle = nil;
|
||||
static NSString *gLanguageBundleCode = nil;
|
||||
static dispatch_once_t gResourceOnce;
|
||||
|
||||
NSString *SCILocalizationOverridePath(void) {
|
||||
NSString *lib = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject;
|
||||
return [lib stringByAppendingPathComponent:@"RyukGram.bundle"];
|
||||
}
|
||||
|
||||
static NSBundle *resolveResourceBundle(void) {
|
||||
// 1) Sideload: cyan copies RyukGram.bundle into the app's resource root.
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:@"RyukGram" ofType:@"bundle"];
|
||||
@@ -66,9 +71,17 @@ static NSBundle *activeLanguageBundle(void) {
|
||||
NSString *code = preferredLanguageCode(resource);
|
||||
if (gLanguageBundle && [code isEqualToString:gLanguageBundleCode]) return gLanguageBundle;
|
||||
|
||||
NSString *lprojPath = [resource pathForResource:code ofType:@"lproj"];
|
||||
if (!lprojPath) lprojPath = [resource pathForResource:@"en" ofType:@"lproj"];
|
||||
gLanguageBundle = lprojPath ? [NSBundle bundleWithPath:lprojPath] : resource;
|
||||
// User-imported overrides take priority (writable Library dir).
|
||||
NSString *overrideLproj = [[SCILocalizationOverridePath()
|
||||
stringByAppendingPathComponent:[code stringByAppendingString:@".lproj"]]
|
||||
stringByAppendingPathComponent:@"Localizable.strings"];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:overrideLproj]) {
|
||||
gLanguageBundle = [NSBundle bundleWithPath:[overrideLproj stringByDeletingLastPathComponent]];
|
||||
} else {
|
||||
NSString *lprojPath = [resource pathForResource:code ofType:@"lproj"];
|
||||
if (!lprojPath) lprojPath = [resource pathForResource:@"en" ofType:@"lproj"];
|
||||
gLanguageBundle = lprojPath ? [NSBundle bundleWithPath:lprojPath] : resource;
|
||||
}
|
||||
gLanguageBundleCode = [code copy];
|
||||
return gLanguageBundle;
|
||||
}
|
||||
@@ -86,11 +99,39 @@ NSString *SCILocalizedString(NSString *key, NSString *fallback) {
|
||||
}
|
||||
|
||||
NSArray<NSDictionary<NSString *, NSString *> *> *SCIAvailableLanguages(void) {
|
||||
// `code` is what we persist; `native` is shown in the picker (endonyms read best).
|
||||
return @[
|
||||
@{ @"code": @"system", @"native": @"System", @"english": @"System default" },
|
||||
@{ @"code": @"en", @"native": @"English", @"english": @"English" },
|
||||
];
|
||||
NSMutableArray *result = [NSMutableArray array];
|
||||
[result addObject:@{@"code": @"system", @"native": @"System"}];
|
||||
[result addObject:@{@"code": @"en", @"native": @"English"}];
|
||||
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSMutableSet *seen = [NSMutableSet setWithObject:@"en"];
|
||||
|
||||
// Scan both shipped bundle + writable override dir for .lproj dirs.
|
||||
NSMutableArray *searchPaths = [NSMutableArray array];
|
||||
NSBundle *res = SCILocalizationBundle();
|
||||
if (res) [searchPaths addObject:res.bundlePath];
|
||||
NSString *overrides = SCILocalizationOverridePath();
|
||||
if ([fm fileExistsAtPath:overrides]) [searchPaths addObject:overrides];
|
||||
|
||||
for (NSString *base in searchPaths) {
|
||||
NSArray *contents = [fm contentsOfDirectoryAtPath:base error:nil];
|
||||
for (NSString *name in [contents sortedArrayUsingSelector:@selector(compare:)]) {
|
||||
if (![name hasSuffix:@".lproj"]) continue;
|
||||
NSString *code = [name stringByDeletingPathExtension];
|
||||
if ([code isEqualToString:@"Base"] || [seen containsObject:code]) continue;
|
||||
NSString *stringsPath = [[base stringByAppendingPathComponent:name]
|
||||
stringByAppendingPathComponent:@"Localizable.strings"];
|
||||
if (![fm fileExistsAtPath:stringsPath]) continue;
|
||||
[seen addObject:code];
|
||||
|
||||
NSLocale *loc = [NSLocale localeWithLocaleIdentifier:code];
|
||||
NSString *native = [loc localizedStringForLanguageCode:code] ?: code;
|
||||
if (native.length) native = [[[native substringToIndex:1] uppercaseString]
|
||||
stringByAppendingString:[native substringFromIndex:1]];
|
||||
[result addObject:@{@"code": code, @"native": native}];
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void SCILocalizationReset(void) {
|
||||
|
||||
Reference in New Issue
Block a user