EmuLabZip logo EmuLabZip

Idioma, tamaño de texto y texto que no cabe

Actualizado el · Editar esta página en GitHub

La vista Audit encontrando una etiqueta demasiado larga para su línea

El texto es donde se rompen los diseños: una palabra alemana es más larga, el árabe va de derecha a izquierda, una persona que necesita texto grande lo pone al 200%. EmuLabZip puede cambiar el idioma y el tamaño de texto de un dispositivo, comprobar si la pantalla tiene texto que no cabe, y barrer una pantalla por varios idiomas y tamaños con un solo comando.

Cambiar el dispositivo#

emulabzip control locale en-XA --app com.example.shop   # long, accented text
emulabzip control locale ar-XB --app com.example.shop   # right to left
emulabzip control reset-locale --app com.example.shop
emulabzip control font-scale 130                        # percent of normal; 100 puts it back
emulabzip control display --width 720 --height 1600 --density 320     # Android
emulabzip control reset-display
AndroidiOS Simulator
Idiomacmd locale set-app-locales: una app a la vez, Android 13 y posterior. Los pseudo-locales en-XA y ar-XB funcionan. Se avisa a la app y esta recrea su pantalladefaults write -g AppleLanguages y AppleLocale para todo el simulador; una app lo toma cuando se inicia de nuevo
Tamaño de textosettings put system font_scalesimctl ui … content_size: el tamaño de Dynamic Type más cercano al porcentaje (130% es extra-extra-extra-large, 200% accessibility-extra-large)
Tamaño y densidad de pantallawm size, wm densityNo disponible

Una etiqueta de idioma son letras, dígitos y guiones (de-DE, pt-BR, zh-Hans-CN). El tamaño de texto va del 50 al 300 por ciento. Todo esto también está en la vista Controls, bajo Text size and language y Display size.

Comprobar una pantalla#

emulabzip i18n check            # the screen as it is now
emulabzip i18n check --rtl      # it is shown in a right-to-left language: also check the layout was mirrored
ReglaBusca
text-off-screenTexto que sobrepasa el borde de la pantalla (salvo que esté dentro de algo que se desplaza)
text-clipped-by-parentTexto que no cabe dentro de su contenedor, de modo que el contenedor lo corta
text-cut-offUna sola línea de texto limitada al espacio que se le dio, cuya tinta llega al final de su caja: probablemente está cortada o termina en puntos suspensivos
rtl-not-mirroredEn un idioma de derecha a izquierda, la mayor parte del texto de la pantalla sigue a la izquierda

text-cut-off es una heurística. El diseño dice dónde está cada vista, y la captura dice si su texto llega al final de la caja. Una etiqueta que simplemente se ajusta a su texto no se informa (su caja es solo tan ancha como el texto), y una etiqueta solo se informa cuando su caja termina donde su contenedor, o la siguiente vista de su fila, no deja espacio. El mensaje dice "may be". Sin una captura de pantalla solo se ejecutan las reglas de diseño.

Barrer#

emulabzip i18n sweep --app com.example.shop --locales en-XA,ar-XB --scales 100,130,200

El barrido prueba cada idioma en cada tamaño de texto, lee el diseño e imprime una tabla: cuántos hallazgos, cuáles y cuáles son peores que el dispositivo tal como está ahora. El dispositivo se restaura (tamaño de texto e idioma) cuando termina, y también cuando un paso falla. --fail-on-worse sale con 1 cuando algún ajuste es peor. En el iOS Simulator solo se barren los tamaños de texto, porque una app solo toma un idioma nuevo cuando se inicia de nuevo.

El escalado de texto también se revisa mediante el barrido: al 200% informa de áreas táctiles y orden de foco que empeoraron.

Para asistentes#

Por MCP: control_locale, control_font_scale, control_display_size y check_text.

Límites#

  • Android cambia el idioma de una app, no del dispositivo. Los idiomas de todo el dispositivo necesitan root.
  • Las heurísticas ven vistas, no glifos. Una fuente de iconos, una etiqueta dibujada a medida o el texto de un juego no se juzgan.
  • Los pseudo-locales dependen de que la app tenga sus cadenas en recursos; el texto escrito directamente en el código se queda como está.