Ver Versão Completa: Resolvido Acentos não exibir corretamente ...
freddie3218
07-03-11, 16:09
Oi.
Eu estou usando vbulletin 4,08.
Eu uso principalmente para vbet duas línguas ... Inglês e Francês. Eu tenho o idioma padrão forum o Inglês. No entanto, sempre que um usuário posta francês, a tradução é exibida corretamente em Inglês. No entanto, em francês os acentos não são exibidos. Em vez disso, ele exibe assim:
Dans quelle langue vous allez & #233;crire vos messages. Forum traduira automatiquement vos messages & #224; d'autres utilisateurs langues. En outre, il se traduira par des postes dans d'autres langues & #224; votre langue par d& #233;faut.
Ele deve exibir assim:
Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.
Meu fórum é configurado para exibir as duas línguas como ISO-8859-1. Portanto, eu não estou usando UTF-8
Além disso, eu segui as instruções de instalação muito de perto.
A única modificação que eu fiz para vBet é que eu mudei as bandeiras padrão usando CSS-Sprite. No entanto, eu olhei para o código, e nada que eu fiz devem efeito a maneira que as coisas estão sendo exibidos.
Tenho que converter o meu banco de dados para UTF-8 para resolver este problema?
Qualquer conselho será apreciada. Graças. :)
freddie3218
08-03-11, 17:56
Bem .... Eu desativei todos os plugins outros, e ainda tenho o mesmo problema. Parece um bug no vbet
kamilkurczak
08-03-11, 19:35
Olá, você usa UTF-8 fórum e banco de dados ou não?
Se não - eu deveria ter uma solução para você. I wil prepará-lo e escrever aqui.
Se você puder - por favor colar aqui uma url para o segmento com esta questão.
Obrigado
freddie3218
09-03-11, 00:15
Olá, você usa UTF-8 fórum e banco de dados ou não?
Se não - eu deveria ter uma solução para você. I wil prepará-lo e escrever aqui.
Se você puder - por favor colar aqui uma url para o segmento com esta questão.
ThanksNo, eu não uso um UTF-8 forum ou banco de dados. Eu uso ISO-8859-1.
Você pode ver o problema através da visualização ao vivo neste tópico:
$ 1 Este é um teste (http://kokoku.ca/forums/showthread.php?t=418)
Graças. :)
freddie3218
10-03-11, 01:05
Qualquer notícia sobre o que está causando isso?
kamilkurczak
10-03-11, 10:04
Olá,
Estou testando isso no meu fórum de teste (em não UTF) e eu não posso reproduzi-lo, mas você pode tentar esta solução.
Tenho uma coisa para você:
1. aberto, faça uma cópia e editar este arquivo:
raiz forum / includes / vbenterprisetranslator_functions_utils.php
2. nesta função encontrar:
function vbet_encodeToSafeUTF8(&$string) {
//TODO how to check does utf-8 is involved? how often this function is used?
// if (! ereg('[\200-\237]', $string) and ! ereg('[\241-\377]', $string))
// if (!preg_match('/[\200-\237]/', $string) and !preg_match('/[\241-\377]/', $string))
// if (!preg_match('/[\200-\237\241-\377]/e', $string))
// return $string;
// decode three byte unicode characters
$string = preg_replace('/([\340-\357])([\200-\277])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-224)*4096 + (ord(\'\\2\')-128)*64 + (ord(\'\\3\')-128)).\';\'',
$string);
//decode two byte unicode characters
$string = preg_replace('/([\300-\337])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-192)*64+(ord(\'\\2\')-128)).\';\'',
$string);
return $string;
}
3. e comentar todas as linhas sem retorno como este:
function vbet_encodeToSafeUTF8(&$string) {
//TODO how to check does utf-8 is involved? how often this function is used?
// if (! ereg('[\200-\237]', $string) and ! ereg('[\241-\377]', $string))
// if (!preg_match('/[\200-\237]/', $string) and !preg_match('/[\241-\377]/', $string))
// if (!preg_match('/[\200-\237\241-\377]/e', $string))
// return $string;
// decode three byte unicode characters
// $string = preg_replace('/([\340-\357])([\200-\277])([\200-\277])/e',
// '\'&#\'.((ord(\'\\1\')-224)*4096 + (ord(\'\\2\')-128)*64 + (ord(\'\\3\')-128)).\';\'',
// $string);
//decode two byte unicode characters
//$string = preg_replace('/([\300-\337])([\200-\277])/e',
// '\'&#\'.((ord(\'\\1\')-192)*64+(ord(\'\\2\')-128)).\';\'',
// $string);
return $string;
}
4. salve e teste!
isso deve funcionar apenas para novas mensagens. todas as mensagens existentes, você deve editar manualmente.
Eu não shure que você tem um fórum ISO mas você pode testá-lo. Se não é bom - por favor, substitua essas mudanças arquivo bu idade
freddie3218
10-03-11, 15:30
Oi,
Que foi uma boa tentativa. No entanto, ele não funciona.
A saída agora mostra: ".. Ceci est un teste S'il vous Plaa ® t ignorer mensagem ce"
A saída correta deve ser: "Ceci est un teste S'il vous plaît ce ignorer mensagem.."
Portanto, eu revertido.
Aqui está uma coisa que notei:
Quando postagem e edição, ele não exibe corretamente. No entanto, se eu apertar o botão editor WYSIWYG para entrar em "modo básico", em seguida, ele irá exibir corretamente no editor WYSIWYG. No entanto, quando tento salvar, ele volta a mostrar incorretamente novamente. Parece que o editor WYSIWYG não é analisar as coisas corretamente antes de salvar quando eu estou usando VBET em língua estrangeira, ou quando eu estou usando o [lang =] tags. No entanto, se eu postar uma frase estrangeira sem usar o [lang = fr] tags, então ele irá exibir corretamente quando salvar. Assim, parece que VBET não está permitindo que o editor WYSIWYG para analisar corretamente antes de salvar ... se isso faz algum sentido.
kamilkurczak
10-03-11, 23:41
você tem esse problema quando você gostaria de postar na página traduzida ou não? descreva o que eu deveria fazer para ter os mesmos resultados em meu fórum de teste.
freddie3218
11-03-11, 07:19
você tem esse problema quando você gostaria de postar na página traduzida ou não? descreva o que eu deveria fazer para ter os mesmos resultados em forum.I meu teste não sei se você pode reproduzir isso em seu fórum ou não. No entanto, isso é o que acontece:
Vbulletin versão 4.08
Eu tenho duas línguas no meu site: Inglês e Francês. Eu desativei todos os outros idiomas, e todas as outras bandeiras.
Todos Inglês e Francês é traduzido em todo o site corretamente, com os acentos adequados. A única vez que os acentos não são exibidos corretamente é se alguém está usando a língua francesa e mensagens em francês ... ter a "língua francesa" escolhido em seu perfil de usuário. Neste caso, VBET irá atribuir as tags BBcode adequada automaticamente quando post. IE: "[lang = fr]" Entretanto, uma vez que apresentam o respectivo post, os acentos em seu post não aparecerá corretamente. Se pressionar o "post edit" botão, eles vão ver o seu posto no editor WYSIWYG avançado exibida indevidamente (eu tenho todas as contas configuradas para utilizar o editor WYSIWYG, mesmo em resposta rápida, por padrão para que todos os usuários podem anexar imagens a partir de seu disco rígido). No entanto, se alternar o "switch editor Mode" frente e para trás, eles vão ver o seu post aparecer corretamente. No entanto, quando tentam salvar as alterações para seu posto, ele mais uma vez mostrar indevidamente quando salvar seu post.
Esse problema só acontece quando o usuário está usando o "Língua Francesa" em suas configurações de perfil de usuário e postagem em língua francesa ... tornando vbet adicionar o [lang = fr] a uma mensagem automaticamente.
A minha língua padrão forum é o Inglês.
Caso você precisa dar uma olhada em meu fórum ... pm me, e eu vou lhe enviar as informações necessárias para verificar minha configuração painel de administração.
Espero que esta informação é útil.
Graças.
kamilkurczak
11-03-11, 10:06
Sim. Posso confirmar isso em meu fórum de teste!
Este é um bug vBET então eu preciso para mover esta discussão na seção de relatórios de bugs.
Notei que há um problema de codificação com letras com código ASCII sob um
Eu posso reproduzi-lo em meu fórum de teste para que eu possa corrigi-lo sem acesso ao seu fórum:)
Vou tentar encontrar a melhor solução para você.
freddie3218
12-03-11, 06:02
Sim. Posso confirmar isso em meu fórum de teste!
Este é um bug vBET então eu preciso para mover esta discussão na seção de relatórios de bugs.
Notei que há um problema de codificação com letras com código ASCII sob um
Eu posso reproduzi-lo em meu fórum de teste para que eu possa corrigi-lo sem acesso ao seu fórum:)
Vou tentar encontrar a melhor solução para você.
Bem, a boa notícia é que eu me resolveu o problema. A má notícia é que eu não posso confirmar que esta solução vai funcionar como uma função de substituição ... como ele só funciona no meu fóruns.
De qualquer maneira, aqui está a nova função:
function vbet_encodeToSafeUTF8(&$string) {
$string = utf8_decode($string);
return $string;
}
Esta função converte UTF-8 para ISO-8859-1
kamilkurczak
12-03-11, 13:31
obrigado por essa boa notícia. Vou testá-lo e confirmar
kamilkurczak
13-03-11, 13:15
Olá,
Sua solução não é boa em geral. Por quê? Esse é um trabalho com letras com código ASCII e menos de 256 (convertida e exibida bom), mas letras com código ASCII mais de 256 que eu tenho "?" sinais.
Então, precisamos combinar nossos duas soluções em um;)
exemplo:
function vbet_encodeToSafeUTF8(&$string) {
$string = preg_replace('/([\340-\357])([\200-\277])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-224)*4096 + (ord(\'\\2\')-128)*64 + (ord(\'\\3\')-128)).\';\'',
$string);
//decode two byte unicode characters
$string = preg_replace('/([\304-\337])([\200-\277])/e',
'\'&#\'.((ord(\'\\1\')-192)*64+(ord(\'\\2\')-128)).\';\'',
$string);
$string = utf8_decode($string);
return $string;
}
esta linha:
[\304-\337] definir do que cartas com código ASCII e menos de 256 não vai ser decodificado pela minha função, mas apenas por
utf8_decode
Estou testando still.I não estou totalmente certo de que tudo funciona corretamente agora.
Você pode testá-lo também!
freddie3218
14-03-11, 05:10
Para os meus propósitos, a solução funciona bem ... como eu estou apenas traduzindo-se em duas langauges ... Inglês e Francês. Ambos são ISO-8859-1 (latin1) idiomas. Portanto, o "utf_decode" função funciona bem.
No entanto, com um âmbito global tendo em vista, a função utf_decode provavelmente não funcionará para outros idiomas fora da "latin1".
Eu não sou muito de um programador vbulletin. No entanto, vou oferecer uma sugestão:
Talvez usando um "if" pode atender às suas finalidades melhor se sua solução não funciona. No exemplo abaixo, o "translated_language_var" seria a língua de destino para traduzir.
IE:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
Talvez usando algo como isso seria um método seguro para manter tudo seguro ...??? Tenho certeza que você pode facilmente utilizar este código pseudo e fazer o trabalho para vbulletin. :)
kamilkurczak
27-03-11, 22:30
resolvido - serão incluídos na próxima relase
Automatic Translations (Powered by Google, Microsoft®,
Yandex, SDL Language Cloud, IBM Watson and Apertium):
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.