Android Reemplace "..." con caracteres de puntos suspensivos

306

Desde las herramientas AVD 16 recibo esta advertencia:

Replace "..." with ellipsis character (..., …) ?

en mis cadenas.xml

en esta linea

 <string name="searching">Searching...</string>

¿Cómo lo reemplazo ...? ¿Es solo literalmente &#8230;?

¿Alguien podría explicar esta codificación?

Blundell
fuente
Como nota, he notado que algunos de los archivos de cadenas traducidos de Android usan ... en sí mismo en lugar de la entidad Unicode. Dado que los archivos XML de Android normalmente están codificados en UTF-8 de todos modos, no veo ninguna razón para no usar el carácter en sí en lugar de la entidad Unicode potencialmente esotérica, especialmente porque la mayoría de los programas de procesamiento de texto en estos días admiten la autocorrección "..." a " ... "(Microsoft Word lo hace de forma predeterminada, la última vez que lo verifiqué).
JAB
¿En realidad son tres puntos (ASCII 46 / 0x26)? ¿O ASCII 133 (un personaje)?
Peter Mortensen
1
En la respuesta de otra pregunta SO, hay una mejor explicación que 'Cambiar ... al Unicode porque es mejor'. stackoverflow.com/a/27984145/973919 En resumen, evita que los tres puntos se dividan en un texto de varias líneas (mostrando solo 1 o 2 puntos) y en algunas tipografías se ve mal ver 3 puntos.
xarlymg89

Respuestas:

538

&#8230;es el unicode para " ... ", así que simplemente reemplácelo. Es mejor tenerlo como un carácter / símbolo que tres puntos.

WarrenFe
fuente
41
¿Por qué es "mejor"? Esto complica las cosas al dar el texto a los traductores. ¿Podemos de alguna manera matar esta estúpida advertencia? Gracias
swinefeaster
25
@swinefeaster es bueno saberlo :) pero como son pagables, también se pueden
enseñar
25
@swinefeaster Es "mejor" en parte porque no se rompe ("..." podría terminar, por ejemplo, en el segundo período), y en teoría los idiomas podrían representarlos de manera diferente (muchos idiomas asiáticos los colocan en el medio y son más ancho (coincide con el ancho de un carácter)). La no ruptura es útil en todas partes, sin embargo, no estoy al tanto de que Android los represente correctamente en otros idiomas, ni tampoco estoy al tanto de los caracteres UTF para este propósito.
Groxx
12
Tener "..." provoca problemas de accesibilidad. Android Talkback dice "Cargando ..." como "Cargando 3 períodos"
Mohammad Shabaz Moosa
14
Parece que mi comentario no fue claro. Usar "cargando ..." (3 puntos) hace que Talkback diga "cargando 3 períodos" Usando "Cargando & # 8230;" (puntos suspensivos) lleva a Talkback a decir "Cargando" [Lo cual es bueno ..] Entonces, deberíamos usar puntos suspensivos siempre
Mohammad Shabaz Moosa
15

Para abreviar, simplemente poner &#x2026;en su lugar ...

Enlace a la lista de entidades de caracteres XML

  • Mire la columna Unicode de HTML para la fila llamada hellip
Jadeye
fuente
55
Inicialmente me pregunté por qué lo usó &#x2026;cuando la advertencia de Eclipse dice que lo use, &#8230;pero su enlace responde eso. Es decir, que la x significa un valor hexadecimal y 8230 en decimal es 2026 en hexadecimal.
k2col
dónde poner esto & # x2026 cualquier ubicación para esto.
Tushar Pandey
@ TusharPandey: si su código es <string name = "search"> Buscando ... </string>, entonces se verá algo así como <string name = "searching"> Buscando & # x2026 </string>
Jadeye
13

Si está utilizando Eclipse, siempre puede hacer lo siguiente:

  • Haga clic derecho sobre la advertencia
  • Seleccione "Solución rápida" (el acceso directo es Ctrl+ 1por defecto)
  • Seleccione "Reemplazar con caracteres sugeridos"

Esto debería reemplazar sus tres puntos con el carácter Unicode adecuado para puntos suspensivos.

Solo una nota: la última versión de ADT (21.1) a veces no realiza la operación de reemplazo correctamente, pero las versiones anteriores no tenían problemas para hacerlo.

Este es el personaje:

Michael Celey
fuente
¡Esto funcionó para mí! Sin embargo, no ocurrió nada "visual" aparte de que desapareció la advertencia, y estoy ejecutando ADT 22.2.1. Pero supongo que así es como funciona :)
ymerdrengene
No funcionó para mí Eclipse me sugirió (no sé por qué) rodear la etiqueta <resources> con una nueva etiqueta <element>.
Leonardo Raele
Eclipse lo hará en algún momento si no resalta exactamente el área correcta. Me encuentro resaltando e intentando solucionar rápidamente dos o tres veces antes de que realmente haga la sugerencia correcta.
Michael Celey
10

La solución a su problema es:

Go to Window -> Preferences -> Android -> Lint Error Checking

Y busque " puntos suspensivos ". Cambie el nivel de advertencia a " Información " o " Ignorar ".

Florian Fischer
fuente
8
Esas sugerencias tienen sentido. Simplemente ignorarlos es solo una solución, si está realmente seguro de lo que está haciendo. En este caso, el reemplazo tiene sentido, por lo que ignorar la advertencia no es bueno.
Alexander Pacha
¡Gracias! Justo lo que estaba buscando. Y ese es el lugar para hacer todo tipo de cosas relacionadas (no necesito una computadora para decirme cómo deletrear, capitalizar o puntuar). ¡Muy útil!
Scott Biggs
3
Esta no es una buena opción para ignorar las advertencias. Debe corregir las advertencias para obtener mejores resultados.
Deepak
1
@ScottBiggs, para ser justos, si la computadora te dice que has deletreado, capitalizado o puntuado algo incorrectamente, entonces debes solucionarlo. Las pelusas son útiles en ese sentido, aconsejo no deshabilitarlas.
EpicPandaForce
3

Esta respuesta está indirectamente relacionada con esta pregunta:

En mi caso textView1.setTextView("done&#8230");estaba mostrando alguna caja / carácter chino. Más tarde, revisé fileformat.infolo que representa el valor y descubrí que se trata de un personaje Han. ¿Entonces lo que hay que hacer? Busqué "fileformat.info ellipse character" y luego todo se volvió claro para mí una vez que vi que sus valores son;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

Por lo tanto, tiene varias codificaciones disponibles para representar un carácter (por ejemplo, 10 en decimal se representa como A en hexa), por lo que es muy importante saber cuándo está escribiendo un carácter unicode, cómo la función de recepción lo decodifica. Si decodifica como valor decimal, debe proporcionar un valor decimal, si acepta hexadecimal, debe proporcionar hexadecimal.

En mi caso, la función setTextView () acepta valores decimales codificados pero estaba proporcionando valores hexadecimales, así que estaba obteniendo un carácter incorrecto.

Seúl
fuente
3

El método abreviado de solución rápida en Android Studio es Alt+ Enterpor defecto.

Hasan El-Hefnawy
fuente
0

Es mejor no ignorarlo como lo sugieren algunos, me parece. Use Android Studio para corregirlo (en lugar de escribir el código de carácter), y la herramienta reemplazará los tres puntos con el carácter unicode de tres puntos . No será confuso para los traductores, etc.

Kofi
fuente