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?

Blundell
la source
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.

WarrenFaith
la source
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
Jadeye
la source
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:

Michael Celey
la source
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 ".

Florian Fischer
la source
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.

Séoul
la source
3

Le raccourci de correction rapide dans Android Studio est Alt+ Enterpar défaut.

Hasan El-Hefnawy
la source
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.

Kofi
la source