Android Remplacez «…» par des points de suspension


306

Depuis les outils AVD 16, je reçois cet avertissement:

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

dans mes strings.xml

à cette ligne

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

Comment remplacer ...? Est-ce juste littéralement &#8230;?

Quelqu'un pourrait-il expliquer cet encodage?


Comme note, j'ai remarqué que certains des propres fichiers de chaînes traduits d'Android utilisent… lui-même plutôt que l'entité Unicode. Étant donné que les fichiers XML Android sont normalement encodés en UTF-8 de toute façon, je ne vois aucune raison de ne pas utiliser le caractère lui-même plutôt que l'entité Unicode potentiellement ésotérique, d'autant plus que la plupart des programmes de traitement de texte prennent en charge de nos jours la correction automatique "..." à " … "(Microsoft Word le fait par défaut, la dernière fois que j'ai vérifié).
JAB

S'agit-il en fait de trois points (ASCII 46 / 0x26)? Ou ASCII 133 (un caractère)?
Peter Mortensen

1
À la réponse à une autre question SO, il y a une meilleure explication que 'Changer ... en Unicode parce que c'est mieux'. stackoverflow.com/a/27984145/973919 En bref, cela empêche les trois points d'être divisés sur un texte à plusieurs lignes (montrant 1 ou 2 points seulement) et dans certaines typographies, il semble mauvais de voir 3 points.
xarlymg89

Réponses:


538

&#8230;est l'unicode pour " " alors remplacez-le. Il vaut mieux l'avoir comme un caractère / symbole que trois points.


41
Pourquoi est-ce "mieux"? Cela complique les choses lors de la remise du texte aux traducteurs. Pouvons-nous en quelque sorte tuer cet avertissement stupide? Merci
swinefeaster

25
@swinefeaster bon à savoir :) mais comme ils sont payants, ils peuvent également être enseignés :)
WarrenFaith

25
@swinefeaster C'est "mieux" en partie parce qu'il ne casse pas ("..." pourrait se terminer par exemple sur la deuxième période), et théoriquement les langues pourraient les rendre différemment (beaucoup de langues asiatiques les mettent au milieu et elles sont plus large (correspond à une largeur de caractère)). La non-rupture est utile partout, je ne connais pas Android pour les rendre correctement dans d'autres langages, ni pour les caractères UTF à cet effet.
Groxx

12
Le fait d'avoir "..." provoque des problèmes d'accessibilité. Android Talkback lit "Chargement ..." comme "Chargement 3 période"
Mohammad Shabaz Moosa

14
Il semble que mon commentaire n'était pas clair. L'utilisation de "chargement ..." (3 points) conduit Talkback à dire "chargement de 3 périodes" Utilisation de "chargement & # 8230;" (points de suspension) conduit Talkback à dire "Chargement" [Ce qui est bien ..] Donc, nous devons toujours utiliser des points de suspension
Mohammad Shabaz Moosa

15

Pour faire court, il suffit de mettre &#x2026;en place ...

Lien vers la liste des entités de caractères XML

  • Regardez la colonne HTML Unicode pour la ligne nommée hellip

5
Je me suis d'abord demandé pourquoi vous l'avez utilisé &#x2026;lorsque l'avertissement Eclipse dit d'utiliser, &#8230;mais votre lien y répond. A savoir que le x signifie une valeur hexadécimale et 8230 en décimal est 2026 en hexadécimal.
k2col

où mettre cela & # x2026 n'importe quel emplacement pour cela.
Tushar Pandey

@ TusharPandey - si votre code est <string name = "recherche"> Recherche ... </string> alors il ressemblera à <string name = "recherche"> Recherche & # x2026 </string>
Jadeye

13

Si vous utilisez Eclipse, vous pouvez toujours effectuer les opérations suivantes:

  • Clic droit sur l'avertissement
  • Sélectionnez "Quick Fix" (le raccourci est Ctrl+ 1par défaut)
  • Sélectionnez "Remplacer par les caractères suggérés"

Cela devrait remplacer vos trois points par le caractère Unicode approprié pour les points de suspension.

Juste une note: la dernière version d'ADT (21.1) ne fait parfois pas correctement l'opération de remplacement, mais les versions antérieures n'ont eu aucun problème à le faire.

Voici le personnage:


Cela a fonctionné pour moi! Cependant, rien de "visuel" ne s'est produit, à part que l'avertissement a disparu, et j'utilise ADT 22.2.1. Mais je suppose que c'est comme ça que ça marche :)
ymerdrengene

Ça n'a pas marché pour moi. Eclipse m'a suggéré (je ne sais pas pourquoi) de contourner la balise <resources> avec une nouvelle balise <element>.
Leonardo Raele

Eclipse le fera parfois si vous ne mettez pas exactement en évidence la bonne zone. Je me retrouve à mettre en évidence et à essayer de corriger rapidement deux ou trois fois avant qu'il ne fasse réellement la bonne suggestion.
Michael Celey

10

La solution à votre problème est:

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

Et recherchez " points de suspension ". Modifiez le niveau d'avertissement sur " Info " ou " Ignorer ".


8
Ces suggestions ont du sens. Les ignorer n'est qu'une solution, si vous êtes vraiment sûr de ce que vous faites. Dans ce cas, le remplacement est logique, donc ignorer l'avertissement n'est pas bon.
Alexander Pacha

Merci! Exactement ce que je cherchais. Et c'est l'endroit pour faire toutes sortes de choses liées (je n'ai pas besoin d'un ordinateur pour me dire comment épeler, mettre en majuscule ou ponctuer). Très utile!
Scott Biggs du

3
ce n'est pas une bonne option pour ignorer les avertissements. vous devez corriger les avertissements pour de meilleurs résultats.
Deepak

1
@ScottBiggs pour être honnête, si l'ordinateur vous dit que vous avez mal orthographié, mis en majuscule ou ponctué quelque chose, vous devez le corriger. Les peluches sont utiles à cet égard, je déconseille de les désactiver.
EpicPandaForce

3

Cette réponse est indirectement liée à cette question:

Dans mon cas, je textView1.setTextView("done&#8230");montrais une boîte / un caractère chinois. Plus tard, j'ai vérifié fileformat.infoce que la valeur représente et j'ai trouvé que c'était un caractère Han. Alors que faire? J'ai recherché "fileformat.info ellipse character" et tout est devenu clair pour moi une fois que j'ai vu ses valeurs;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

Donc, vous avez plusieurs encodages disponibles pour représenter un caractère (par exemple 10 en décimal est représenté comme A en hexa), il est donc très important de savoir quand vous écrivez un caractère unicode, comment la fonction de réception le décode. S'il décode en valeur décimale, vous devez fournir une valeur décimale, s'il accepte hexadécimal, vous devez fournir hexadécimal.

Dans mon cas, la fonction setTextView () accepte la valeur codée décimale mais je fournissais des valeurs hexadécimales donc je me trompais de caractère.



0

Mieux vaut ne pas l'ignorer comme le suggèrent certains, me semble-t-il. Utilisez Android Studio pour le corriger (plutôt que de taper réellement le code de caractère), et l'outil remplacera les trois points par le caractère unicode à trois points . Ne sera pas déroutant pour les traducteurs, etc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.