Lingo.dev + .strings (Xcode)
Lingo.dev CLI traduce archivos .strings de Xcode preservando la estructura clave-valor, comentarios y convenciones de localización de iOS. La CLI funciona con proyectos y flujos de trabajo de Xcode más antiguos, mantiene el contexto del desarrollador e instrucciones en comentarios, preserva los especificadores de formato de iOS como %@
y %d
, maneja correctamente las codificaciones UTF-16 y UTF-8, y se integra con los flujos estándar de localización de iOS.
Configuración rápida
Configuración para archivos strings heredados de Xcode:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"]
}
}
}
Recordatorio: [locale]
es un marcador de posición que debe permanecer literalmente en la configuración, ya que se reemplaza con el locale real durante la ejecución de la CLI.
Traducir archivos Strings
npx lingo.dev@latest i18n
Preserva el formato de archivos strings, comentarios de desarrolladores y convenciones específicas de iOS mientras traduce los valores.
Estructura de archivos Strings
Pares clave-valor básicos
/* Navegación principal */
"nav.home" = "Inicio";
"nav.settings" = "Ajustes";
"nav.profile" = "Perfil";
/* Autenticación */
"auth.login" = "Iniciar sesión";
"auth.logout" = "Cerrar sesión";
"auth.register" = "Registrarse";
Especificadores de formato
/* Mensajes de usuario con marcadores de posición */
"welcome.user" = "¡Bienvenido de nuevo, %@!";
"items.count" = "Tienes %d artículos en tu carrito";
"download.progress" = "Descargando... %.1f%% completado";
Strings multilínea
/* Contenido extenso */
"terms.agreement" = "Al usar esta aplicación, aceptas nuestros términos de servicio y política de privacidad. Por favor, léelos cuidadosamente antes de continuar.";
"help.description" = "Esta función te ayuda a gestionar tus tareas de manera eficiente. Puedes crear, editar y organizar tus elementos de trabajo.";
Características específicas de iOS
Comentarios de localización
/* Aparece en la barra de pestañas en la parte inferior */
"tab.home" = "Inicio";
/* Texto del botón para enviar un formulario */
"button.submit" = "Enviar";
/* Mensaje de error cuando la red no está disponible */
"error.network" = "Por favor, comprueba tu conexión a internet";
Los comentarios del desarrollador proporcionan contexto para los traductores.
Caracteres especiales
/* Cadenas con comillas y caracteres especiales */
"message.quote" = "Ella dijo, \"¡Hola!\"";
"path.file" = "Documents\\MyFile.txt";
"symbol.copyright" = "© 2024 Company Name";
Se preserva el escape adecuado para comillas y barras invertidas.
Integración con Storyboard
/* Localizaciones de Storyboard */
"A8K-3L-9X7.text" = "Bienvenido";
"B9M-4N-0Y8.placeholder" = "Introduce tu nombre";
"C0P-5Q-1Z9.title" = "Ajustes";
Las claves generadas por Interface Builder se manejan correctamente.
Configuración avanzada
Múltiples archivos de cadenas
"xcode-strings": {
"include": [
"Resources/[locale].lproj/Localizable.strings",
"Resources/[locale].lproj/InfoPlist.strings"
]
}
Bloquear claves del sistema
"xcode-strings": {
"include": ["Resources/[locale].lproj/Localizable.strings"],
"lockedKeys": ["CFBundleName", "CFBundleDisplayName"]
}