Catálogos de cadenas y cadenas localizadas
Localice texto con el moderno String Catalog.
Catálogos de cadenas y cadenas localizadas es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Por qué localizar
La localización (l10n) consiste en presentar el texto de su app en el idioma del usuario; la internacionalización (i18n) consiste en estructurar el código para que sea posible localizarlo. El primer paso es dejar de escribir directamente las cadenas que verá el usuario y obtenerlas de un catálogo de recursos.
// Hardcoded — bad for localization
// let title = "Welcome"
// Localized — looked up by key
let title = String(localized: "Welcome")String Catalogs
Los proyectos modernos de Xcode utilizan un String Catalog (archivo .xcstrings). Es un único archivo respaldado por JSON que enumera cada clave localizable, sus traducciones para cada idioma y metadatos como comentarios y formas plurales. Xcode puede extraer automáticamente las claves del código.
// Localizable.xcstrings holds entries like:
// key: "Welcome"
// en: "Welcome"
// tr: "Hos geldiniz"
// ja: "Yokoso"String(localized:)
En el código, String(localized:) resuelve una clave en tiempo de ejecución y obtiene la traducción correspondiente a la configuración regional actual. El literal que pasa sirve a la vez como clave y como valor alternativo en el idioma de desarrollo.
let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)Añadir comentarios para traductores
Una palabra aislada como Run puede significar ejecutar o correr. El parámetro comment: proporciona contexto a los traductores para que elijan la formulación adecuada. Los comentarios se incorporan automáticamente al String Catalog.
let runLabel = String(
localized: "Run",
comment: "Button that executes the user's code")Interpolar valores
Puede insertar valores de tiempo de ejecución en una cadena localizada. Swift convierte cada interpolación en un marcador de formato para que los traductores puedan reordenarlos. En distintos idiomas, el sujeto y el número ocupan posiciones diferentes.
let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)LocalizedStringKey en SwiftUI
En SwiftUI rara vez llama directamente a String(localized:). La mayoría de las vistas que aceptan texto reciben un LocalizedStringKey, por lo que un literal de cadena sencillo se localiza automáticamente.
// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back") // auto-localized
// Button("Save") { save() } // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = keyEvitar la localización accidental
Como SwiftUI trata los literales como claves, una variable dinámica de tipo String no se localiza. Si crea texto mediante concatenación, el catálogo nunca ve la clave real. Pase un único literal cuando quiera localizarlo y utilice verbatim: cuando no quiera hacerlo explícitamente.
let userInput = "hello"
// Text(userInput) // NOT a localization key
// Text(verbatim: userInput) // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKeyEspecificar una tabla
Las apps grandes dividen las cadenas entre varios catálogos (tablas). Puede seleccionar una tabla y un bundle específicos, algo esencial al incluir cadenas en un framework o paquete de Swift.
let onboardingTitle = String(
localized: "Get Started",
table: "Onboarding",
bundle: .main)LocalizedStringResource
LocalizedStringResource representa una cadena localizable como un valor que puede almacenar y resolver más adelante, incluso entre procesos (algo útil para App Intents y widgets). Pos习pone la búsqueda real hasta el momento de mostrarla.
let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)La localización predeterminada
El idioma de desarrollo del proyecto proporciona el valor alternativo cuando falta una traducción. El literal de cadena que escribe en el código se trata como el valor del idioma de origen, por lo que el código sigue siendo legible y nunca envía a los usuarios una clave sin procesar como welcome_screen_title.
// If only 'en' is translated and device is set to 'fr',
// the development-language value is shown as fallback.
let fallback = String(localized: "Settings")
print(fallback)Una búsqueda realista
Al reunir todos los elementos: una función que devuelve un mensaje completamente localizado, con contexto e interpolaciones, listo para cualquier interfaz de usuario.
func welcomeMessage(for user: String) -> String {
return String(
localized: "Welcome, \(user)!",
comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))Comprobación rápida
Recuerde cómo decide SwiftUI si debe localizar el texto.
Resumen
Ha establecido los fundamentos del texto localizado:
- Almacene las traducciones en un String Catalog (
.xcstrings). - Busque cadenas con
String(localized:)y añadacomment:para los traductores. - En SwiftUI, los literales se convierten en
LocalizedStringKeyy se localizan automáticamente; las variables no. - Utilice
table:/bundle:para frameworks yLocalizedStringResourcepara resolver de forma diferida.
Preguntas frecuentes
¿La lección «Catálogos de cadenas y cadenas localizadas» es gratis?
Sí — el texto completo de «Catálogos de cadenas y cadenas localizadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Catálogos de cadenas y cadenas localizadas»?
Localice texto con el moderno String Catalog. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Catálogos de cadenas y cadenas localizadas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Catálogos de cadenas y cadenas localizadas
- Pluralización y Stringsdict
- Formato según la configuración regional
- De derecha a izquierda y dirección del diseño