Android Substitua "…" pelo caractere de reticências


306

Desde as ferramentas do AVD 16, recebo este aviso:

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

no meu strings.xml

nesta linha

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

Como eu substituo ...? É literalmente &#8230;?

Alguém poderia explicar essa codificação?


Como observação, notei que alguns dos arquivos de string traduzidos do Android usam ... ele próprio, e não a entidade Unicode. Como os arquivos XML do Android normalmente são codificados em UTF-8 de qualquer maneira, não vejo razão para não usar o próprio caractere, e não a entidade Unicode potencialmente esotérica, especialmente porque a maioria dos programas de processamento de texto atualmente suporta a correção automática de "..." para " … "(O Microsoft Word faz isso por padrão, a última vez que verifiquei).
JAB

Na verdade, são três pontos (ASCII 46 / 0x26)? Ou ASCII 133 (um caractere)?
Peter Mortensen

1
Na resposta de outra pergunta do SO, há uma explicação melhor do que 'Alterar ... no Unicode porque é melhor'. stackoverflow.com/a/27984145/973919 Em resumo, evita que os três pontos sejam divididos em um texto de várias linhas (mostrando 1 ou 2 pontos apenas) e, em algumas tipografias, parece ruim ver 3 pontos.
xarlymg89

Respostas:


538

&#8230;é o unicode para " ... ", então substitua-o. É melhor tê-lo como um caractere / símbolo do que três pontos.


41
Por que é "melhor"? Isso complica as coisas ao entregar o texto aos tradutores. De alguma forma, podemos matar esse aviso estúpido? Obrigado
swinefeaster

25
@swinefeaster bom saber :), mas como eles são pagos, eles são dóceis, também :)
WarrenFaith

25
@swinefeaster É "melhor" em parte porque não quebra ("..." pode demorar, por exemplo, no segundo período), e, teoricamente, as línguas podem torná-las diferentes (muitas línguas asiáticas as colocam no meio e estão maior (corresponde à largura de um caractere)). No entanto, não quebra é útil em todos os lugares; no entanto, não estou ciente de que o Android as processa corretamente em outros idiomas, nem estou ciente dos caracteres UTF para essa finalidade.
Groxx

12
Ter "..." causa problemas de acessibilidade. O Android Talkback lê "Loading ..." como "Loading 3 period"
Mohammad Shabaz Moosa

14
Parece que meu comentário não foi claro. Usar "loading ..." (3 pontos) leva o Talkback a dizer "loading 3 period" Usando "Loading & # 8230;" (reticências) leva o Talkback a dizer "Carregando" [o que é bom ..] Portanto, devemos sempre usar reticências
Mohammad Shabaz Moosa

15

Para encurtar, basta colocar &#x2026;no lugar ...

Link para lista de entidades de caracteres XML

  • Veja a coluna Unicode do HTML da linha chamada hellip

5
Inicialmente, perguntei-me por que você usou &#x2026;quando o aviso do Eclipse diz para usar, &#8230;mas seu link responde a isso. Ou seja, que x significa um valor hexadecimal e 8230 em decimal é 2026 em hexadecimal.
K2col # 27/14

onde colocar este & # x2026 qualquer local para isso.
Tushar Pandey

@ TusharPandey- se o seu código estiver <string name = "search"> Pesquisando ... </string>, ele se parecerá com <string name = "search"> Pesquisando & # x2026 </string>
Jadeye

13

Se você estiver usando o Eclipse, poderá sempre fazer o seguinte:

  • Clique com o botão direito do mouse no aviso
  • Selecione "Correção rápida" (o atalho é Ctrl+ 1por padrão)
  • Selecione "Substituir por caracteres sugeridos"

Isso deve substituir seus três pontos pelo caractere Unicode adequado para reticências.

Apenas uma observação: a versão mais recente do ADT (21.1) às vezes não executa a operação de substituição corretamente, mas as versões anteriores não tiveram problemas ao fazer isso.

Este é o personagem:


Isso funcionou para mim! No entanto, nada "visual" aconteceu além do aviso desapareceu e estou executando o ADT 22.2.1. Mas eu acho que isso é como ele funciona :)
ymerdrengene

Não funcionou para mim. O Eclipse me sugeriu (não sei por quê) para passar a tag <resources> com uma nova tag <element>.
Leonardo Raele

O Eclipse fará isso em algum momento se você não destacar exatamente a área certa. Encontro-me destacando e tentando corrigir rapidamente duas ou três vezes antes de realmente fazer a sugestão certa.
Michael Celey

10

A solução para o seu problema é:

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

E procure por " reticências ". Altere o nível de aviso para " Informações " ou " Ignorar ".


8
Essas sugestões fazem sentido. Simplesmente ignorá-los é apenas uma solução, se você tem certeza do que está fazendo. Nesse caso, a substituição faz sentido; portanto, ignorar o aviso não é bom.
Alexander Pacha

Obrigado! É mesmo o que eu procurava. E esse é o lugar para fazer todo tipo de coisa relacionada (não preciso de um computador para me dizer como se escreve, colocar em maiúscula ou pontuar). Muito útil!
Scott Biggs

3
essa não é uma boa opção para ignorar os avisos. você deve corrigir os avisos para obter melhores resultados.
Deepak

1
@ScottBiggs para ser justo, se o computador estiver lhe dizendo que você digitou, colocou em maiúscula ou pontuou algo incorretamente, então você deve corrigi-lo. Os fiapos são úteis nesse sentido, eu aconselho a desativá-los.
EpicPandaForce 20/01

3

Esta resposta está indiretamente relacionada a esta pergunta:

No meu caso, textView1.setTextView("done&#8230");estava mostrando alguma caixa / caractere chinês. Mais tarde, verifiquei fileformat.infoo que o valor representa e descobri que esse é um caractere Han. Então o que fazer? Procurei "caractere elipse fileformat.info" e tudo ficou claro para mim quando vi seus valores;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

Portanto, você tem várias codificações disponíveis para representar um caractere (por exemplo, 10 em decimal é representado como A em hexa), portanto, é muito importante saber quando você está escrevendo um caractere unicode, como a função de recebimento o decodifica. Se ele decodificar como valor decimal, será necessário fornecer o valor decimal; se aceitar hexadecimal, será necessário fornecer hexadecimal.

No meu caso, a função setTextView () aceita um valor codificado decimal, mas eu estava fornecendo valores hexadecimais, então estava obtendo um caracter errado.



0

Melhor não ignorá-lo, como sugerido por alguns, parece-me. Use o Android Studio para corrigi-lo (em vez de realmente digitar o código do caractere), e a ferramenta substituirá os três pontos pelo caractere unicode de três pontos . Não será confuso para tradutores, etc.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.