¿Es posible actualizar las cadenas de un guión gráfico localizado?

Localicé una parte de mi aplicación con la creación de un guión gráfico base.lproj y 3 archivos de cadena para él. Fue hace un mes y luego agregué un nuevo controlador de vista a la aplicación, pero los botones y tags de este controlador no aparecen en los archivos de cadena

¿Es posible actualizar estos 3 archivos de cadenas adjuntos o debo agregar nuevas cadenas de traducción programáticamente con NSLocalizableString y Localizable.strings?

Hay dos opciones:

Opción 1

Xcode puede “recargar” el archivo convirtiendo el archivo en un tipo de archivo [Interface Builder Cocoa Touch Storyboard] o en un tipo de archivo [Localizable Strings] .

  1. Seleccione su archivo de guión gráfico base desde Project Navigator
  2. Busque la sección Localización en el Inspector de archivos
  3. Si su archivo es actualmente un [Localizable Strings], cámbielo a [Interface Builder Cocoa Touch Storyboard] o viceversa.
  4. Xcode debería haber convertido su guión gráfico a la versión actual, conservando sus antiguos esfuerzos de localización. Aquí puede cambiar el archivo al tipo de archivo original si lo desea.

opcion 2

Usa ibtool para extraer las cadenas en tu guión gráfico.

  1. Abra la aplicación Terminal
  2. Ubique su directorio Base.lproj
  3. Use esta línea para extraer las cadenas:

    ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

  4. Después de que ibtool extraiga las cadenas a file_name.strings, puede copiarlo y pegarlo en su archivo original .strings

Visita para obtener más información: https://conyac.cc/business/columns/localization_guide_ios

Puede agregar manualmente una clave en su archivo de localización. Puede encontrar el objeto clave seleccionándolo en el editor del guión gráfico. Echemos un vistazo a Object-ID en el inspector de identidad. Se ve como "nwc-b2-19c"

En su actualización de localización o agregue traducción. Por ejemplo :

 "nwc-b2-19c.title" = "Translated title"; 

Mira BartyCrouch , resuelve perfectamente tu problema. También es de código abierto , mantenido activamente y puede instalarse e integrarse fácilmente dentro de su proyecto.


Instale BartyCrouch a través de Homebrew :

 $ brew install bartycrouch 

Actualiza incrementalmente tus archivos Storyboards / XIBs Strings:

 $ bartycrouch interfaces -p "/absolute/path/to/project" 

Esto hará exactamente lo que estabas buscando.


Para mantener sus archivos Storyboards / XIBs Strings actualizados a lo largo del tiempo, le recomiendo que agregue un script de comstackción (instrucciones sobre cómo agregar un script de comstackción aquí ):

 if which bartycrouch > /dev/null; then # Incrementally update all Storyboards/XIBs strings files bartycrouch interfaces -p "$PROJECT_DIR" # Add new keys to Localizable.strings files from NSLocalizedString in code bartycrouch code -p "$PROJECT_DIR" -l "$PROJECT_DIR" -a -s else echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch" fi 

Además de actualizar incrementalmente sus archivos Storyboards / XIBs Strings, esto también asegurará que sus archivos Localizable.strings permanezcan actualizados con las claves recién agregadas en el código usando NSLocalizedString .

Asegúrate de pagar BartyCrouch en GitHub para obtener información adicional.

Este no es para todos, pero no requiere herramientas adicionales en el terminal y es fácil para pequeños cambios manuales. (No considere esto cuando desee automatizar su proceso).

Paso 0: Configuración del lenguaje del guion gráfico

  • Base (con textos en inglés)
  • Inglés (el archivo de cadenas localizables no existe porque el archivo base es inglés)
  • otros idiomas (archivos de cadenas localizables)

configuración de base

Este paso se hace solo una vez.

Ahora cuando agrego algo al guión gráfico, hago lo siguiente

Paso 1: agrega el archivo de cadenas localizables en inglés

Añadir Inglés

simplemente marque la línea de artículo en inglés.

Esto crea un archivo de cadenas localizable en inglés completamente nuevo con todas las líneas

Paso 2: copie las nuevas líneas de pedido en los otros archivos de idioma

y traducirlos

Paso 3: desmarque inglés, elimine el archivo correspondiente de cadenas localizables

el archivo solo fue necesario para obtener las nuevas líneas de pedido

Este es un proceso fácil y rápido, todo se hace en el editor de guiones gráficos

Finalmente, mi solución fue (rudimentaria pero efectiva) copiar las traducciones anteriores y pegarlas en un nuevo archivo creado al desmarcar y marcar el cuadro de idioma de Localización.

Esto sería útil en algunos casos como el mío cuando tienes que cambiar solo uno o dos textos.

Creo que la mejor manera es mediante el uso de localizaciones de exportación / importación integradas:

  1. En Project Navigator elige tu carpeta de proyectos
  2. Elija Editor> Exportar para localización,
  3. Todas las traducciones quedaron en sus lugares y XCode agregó cadenas perdidas automáticamente. Además, antes de importar, puede editar .xliff en el Editor XLIFF (por ejemplo, en línea – http://xliff.brightec.co.uk ) y luego no necesita hacer esto en XCode.
  4. a continuación, edita> Importar localizaciones y elige el archivo .xliff guardado.

PD Si no quiere editar en XLIFF Editor y se ha saltado el paso 3, XCode no puede guardar nuevas cadenas. En este caso, abra .xliff en XLIFF Editor, vuelva a guardar sin cambios e importe el nuevo archivo.

Aquí hay un script para extraer cadenas de storyboards y xibs, y combinarlas con traducciones existentes.

Para ejecutar el script automáticamente cuando construya un proyecto, coloque el script en el directorio raíz de su proyecto y agregue una fase Run Script con la siguiente línea a las fases de construcción de un objective en la configuración de su proyecto.

 ./mergegenstrings.py PathToSourceDir 

O puede ejecutar el script en el Terminal de forma manual cuando lo desee.

La secuencia de comandos ejecuta ibtool como Tha Leang respondió. También ejecuta genstrings para extraer y fusionar cadenas marcadas con NSLocalizedString en su código fuente. El script se basa en un script en esta publicación , que fusiona cadenas después de ejecutar genstrings .

Existe una aplicación, una herramienta de línea de comandos de Apple llamada AppleGlot que admite localización incremental. Todavía no lo he probado, pero se ve exactamente como la herramienta que buscó (hace algún tiempo).

Tengo un gran guión gráfico con muchas cuerdas allí. Dos idiomas base inglés y otro árabe. La tarea era agregar algunos campos y tags al guión gráfico y agregarles localización sin ningún guión ni NSLocalizableStrings.

Para mí ayudó a continuación:

Primero : asegúrese de tener git para evitar cambios inesperados.

  1. Vaya a la pantalla de destino en xcode y presione Editor -> Export For Localization... Guarde el archivo ar.xliff en algún lugar.
  2. Descargar XLIFF Edtior .
  3. Abra el archivo ar.xliff y realice cambios.
  4. Importe este archivo en xcode. ¡Hecho! Has actualizado el archivo de cadenas de guiones gráficos.

Cuando hace clic en su guión gráfico, Main.storyboard por ejemplo … En el lado derecho puede ver el menú de localización (ver imagen adjunta). Si deselecciona y comprueba de nuevo un idioma, el archivo se generará nuevamente. Por lo tanto, generalmente copio el contenido, genero el archivo nuevamente y luego pego el contenido que copié y ya he traducido.

Esta es la forma en que uso para actualizar el diccionario.

enter image description here

Esta es mi manera fácil de actualizar el texto nuevo del guión gráfico o xib a la cadena de localización

1- utilizar este script http://tredje.se/dev/trouble/?x=entry:entry150917-204052

2- Seleccione la cadena de localización que desea actualizar y cambie su cadena de idioma de “Cadena de localización” a “Tabla de creación de interfaz”.

3- cambiarlo de vuelta 🙂

Hecho.

enter image description here

Puede desmarcar la checkbox del idioma. Cuando aparece el mensaje “¿Desea eliminar la localización en inglés de Main.storyboard?” diálogo, marque la opción “Eliminar archivos de recursos localizados del disco”. Entonces el archivo de cadena será eliminado. Marque la casilla nuevamente para agregar el nuevo archivo de cadena, obtendrá el último archivo con todo el texto recién agregado.