PDA

Veure la Versió Completa: Resolt Accents no es mostren correctament ...



freddie3218
07-03-11, 16:09
Hola.

Estic usant vBulletin 08/04.

Jo faig servir principalment per VBET dos idiomes ... Anglès i Francès. Tinc l'idioma per defecte fòrum establert en anglès. No obstant això, cada vegada que un usuari envia francès, la traducció es mostra correctament en anglès. No obstant això, en francès els accents no es mostren. En canvi, es mostra així:


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.

S'ha de mostrar d'aquesta manera:


Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.

El meu fòrum és creat per mostrar els dos idiomes com l'ISO-8859-1. Per tant, no estic utilitzant UTF-8

A més, he seguit les instruccions d'instal lació molt de prop.

L'única modificació que vaig fer a VBET és que he canviat les banderes per defecte amb CSS Sprite. No obstant això, he mirat el codi, i res del que ha d'afectar la manera com les coses s'estan mostrant.

He de convertir la meva base de dades a UTF-8 per resoldre aquest problema?

Qualsevol consell serà apreciada. Gràcies. :)

freddie3218
08-03-11, 17:56
Bé .... He desactivat tots els plugins, i encara tinc el mateix problema. Sembla que un error en VBET

kamilkurczak
08-03-11, 19:35
hola, utilitza UTF-8 en el fòrum i base de dades o no?
Si no és així - que hauria d'haver una solució per a vostè. Wil m'ho preparen i escriuen aquí.

Si vostè pot - si us plau, enganxeu aquí a la URL del fil d'aquesta qüestió.
Gràcies

freddie3218
09-03-11, 00:15
hola, utilitza UTF-8 en el fòrum i base de dades o no?
Si no és així - que hauria d'haver una solució per a vostè. Wil m'ho preparen i escriuen aquí.

Si vostè pot - si us plau, enganxeu aquí a la URL del fil d'aquesta qüestió.
ThanksNo, jo no ús UTF-8 o el fòrum de base de dades. Jo faig servir la norma ISO-8859-1.

Vostè pot veure el problema de viure veient aquest tema:

1 $ Aquesta és una prova (http://kokoku.ca/forums/showthread.php?t=418)

Gràcies. :)

freddie3218
10-03-11, 01:05
Qualsevol notícia sobre el que és la causa?

kamilkurczak
10-03-11, 10:04
hola,

Estic provant en el meu fòrum de prova (no en UTF) i no puc reproduir-lo, però vostè pot intentar aquesta solució.
Tinc alguna cosa per a vostè:
1. obrir, fer un copiar i editar aquest arxiu:
Fòrum / root includes / vbenterprisetranslator_functions_utils.php
2. en aquesta funció de cerca:

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. i comentar totes les línies sense retorn com el següent:

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. guardar i posar a prova!

això ha de funcionar només per als nous llocs. tots els llocs existents s'ha d'editar a mà.
No shure que vostè té un fòrum ISO, però pot provar-ho. Si no és bo - si us plau sobreescriure aquests arxius canvis bu edat

freddie3218
10-03-11, 15:30
Hola,

Que va ser un bon intent. No obstant això, no funciona.

La sortida mostra ara: ".. Ceci est la prova de l'ONU s'il vous Plaça ® t Ignorar missatge ce"

La sortida correcta hauria de ser: "Ceci est la prova de l'ONU s'il vous plaît Ignorar missatge ce .."

Per tant, em va tornar l'esquena.

Aquesta és una cosa que he notat:

En publicar i editar, no es mostra correctament. No obstant això, si prem el botó editor WYSIWYG per entrar en "mode bàsic", a continuació, es mostraran correctament en l'editor WYSIWYG. No obstant això, quan tracte de guardar, torna a mostrar correctament de nou. Sembla que l'editor WYSIWYG no és l'anàlisi de les coses correctament per desar quan estic usant VBET en un idioma estranger, o quan estic fent servir el [lang =] tags. No obstant això, si després d'una frase estrangera sense l'ús de la [lang = fr] tags, llavors es mostraran correctament en desar. Així que sembla que VBET no permet que l'editor WYSIWYG per analitzar correctament per desar ... si això té algun sentit.

kamilkurczak
10-03-11, 23:41
vostè té aquest problema quan vol publicar a la pàgina traduïda, o no? si us plau, descriure el que ha de fer per tenir els mateixos resultats en el meu fòrum de prova.

freddie3218
11-03-11, 07:19
vostè té aquest problema quan vol publicar a la pàgina traduïda, o no? si us plau, descriure el que ha de fer per tenir els mateixos resultats en forum.I meva prova, no sé si es pot reproduir aquest al teu fòrum o no. No obstant això, això és el que succeeix:

VBulletin versió 08/04
Tinc dos idiomes al meu lloc: Anglès i Francès. He desactivat tots els altres idiomes, i totes les altres banderes.
Tots Anglès i Francès es tradueix a través del lloc correctament, amb l'accent adequat. L'única vegada que els accents no es mostren correctament és si algú està fent servir la llengua francesa i els missatges en francès ... tenir el "francès" elegit en el seu perfil d'usuari. En aquest cas, VBET assignarà les etiquetes BBcode adequat de forma automàtica quan publiquen. IE: "[lang = ca]" No obstant això, una vegada que presentin el seu missatge, els accents en el seu missatge no apareixerà correctament. Si es pressiona el "post editar", que veurà el seu càrrec en l'avançat editor WYSIWYG apareix és incorrecte (no tinc tots els comptes configurades per utilitzar l'editor WYSIWYG, fins i tot en resposta ràpida, per defecte per a tots els usuaris poden adjuntar imatges a partir de seu disc dur). No obstant això, si canviar el "editor de canviar la manera de" botó d'anada i tornada, veuran el seu missatge aparegui correctament. No obstant això, quan tracten de guardar els canvis en el seu lloc, es tornarà a mostrar incorrectament quan salvar el seu lloc.

Aquest problema només passa quan l'usuari està utilitzant el "francès" en la seva configuració de perfil d'usuari i la publicació en llengua francesa ... el que fa VBET afegir el [lang = fr] a un lloc de forma automàtica.

El meu idioma per defecte és l'anglès fòrum.

Si necessita fer una ullada al meu fòrum ... pm, i jo li enviarà la informació necessària per revisar la meva panell d'administració de configuració.

Espero que aquesta informació és útil.

Gràcies.

kamilkurczak
11-03-11, 10:06
Sí Puc confirmar en el meu fòrum de prova!
Això és un error VBET així que he de moure aquest fil a la secció d'informes d'errors.

Em vaig adonar que hi ha un problema de codificació de lletres del codi ASCII en virtut d'un

Puc reproduir en el meu fòrum de prova perquè jo pugui solucionar sense tenir accés al teu fòrum:)

Vaig a tractar de trobar la millor solució per a vostè.

freddie3218
12-03-11, 06:02
Sí Puc confirmar en el meu fòrum de prova!
Això és un error VBET així que he de moure aquest fil a la secció d'informes d'errors.

Em vaig adonar que hi ha un problema de codificació de lletres del codi ASCII en virtut d'un

Puc reproduir en el meu fòrum de prova perquè jo pugui solucionar sense tenir accés al teu fòrum:)

Vaig a tractar de trobar la millor solució per a vostè.
Bé, la bona notícia és que he solucionat el problema a mi mateix. La mala notícia és que no puc confirmar que aquesta solució funciona com una funció de substitució de ... ja que només funciona en els meus fòrums.

De tota manera, aquí hi ha la nova funció:



function vbet_encodeToSafeUTF8(&$string) {

$string = utf8_decode($string);
return $string;
}


Aquesta funció converteix UTF-8 a ISO-8859-1

kamilkurczak
12-03-11, 13:31
Gràcies per aquesta bona notícia. Vaig a provar i confirmar

kamilkurczak
13-03-11, 13:15
hola,
La seva solució no és bona en general. Per què? Es tracta de treballar amb les cartes amb el codi ASCII en 256 (converteix i es mostra bé) però les cartes amb el codi ASCII de 256 que tinc "?" signes.

Així que hem de combinar aquestes dues solucions en una sola;)

exemple:

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;
}

aquesta línia:
[\304-\337] definir que les cartes amb el codi ASCII en 256 no seran descodificats per la meva funció, però només per
utf8_decode

Estic provant still.I no estic del tot segur que tot funciona correctament ara.
Pots provar també!

freddie3218
14-03-11, 05:10
Per als meus propòsits, la solució funciona bé ... que a mi només es tradueix en dues langauges ... Anglès i Francès. Tots dos tenen la certificació ISO-8859-1 (latin1) idiomes. Per tant, el "utf_decode" funció treballa molt bé.

No obstant això, amb un abast global a la vista, la funció utf_decode probablement no funcioni per a altres idiomes fora del "latin1".

Jo no sóc molt d'un programador de vBulletin. No obstant això, vaig a oferir un suggeriment:

Potser amb un "if" s'adaptin als seus fins millor si la seva solució no funciona. En el següent exemple, el "translated_language_var" seria l'idioma de destinació per traduir.

IE:


$latin1 = array(English,French,Spanish,Italian....etc);

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Potser amb alguna cosa com això podria ser un mètode segur per mantenir tot fora de perill ...??? Estic segur que podria usar aquesta pseudo-codi i fer que funcioni per vBulletin. :)

kamilkurczak
27-03-11, 22:30
resolt - s'inclouran en la pròxima relase

Automatic Translations (Powered by Google, Microsoft®, Yandex, SDL Language Cloud, IBM Watson and Apertium):
AfrikaansAlbanianArabicBelarusianBulgarianCatalanChineseCroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTaiwaneseThaiTurkishUkrainianVietnameseWelshYiddish
Translations made by vBET 4.10.1