PDA

Ver la Versión Completa: Resuelto Acentos no se muestran correctamente ...



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

Estoy usando vbulletin 4.08.

Yo uso principalmente para VBET dos idiomas ... Inglés y Francés. Tengo el idioma por defecto foro establecido en Inglés. Sin embargo, cada vez que un usuario envia francés, la traducción se muestra correctamente en Inglés. Sin embargo, en francés los acentos no se muestran. En cambio, se muestra así:


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.

Se debe mostrar de esta manera:


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

Mi foro es creado para mostrar los dos idiomas como el ISO-8859-1. Por lo tanto, no estoy utilizando UTF-8

Además, he seguido las instrucciones de instalación muy de cerca.

La única modificación que le hice a VBET es que he cambiado las banderas por defecto con CSS Sprite. Sin embargo, he mirado el código, y nada de lo que se debe afectar la forma en que las cosas se están mostrando.

¿Tengo que convertir mi base de datos a UTF-8 para resolver este problema?

Cualquier consejo será apreciada. Gracias. :)

freddie3218
08-03-11, 17:56
Bueno .... He desactivado todos los plugins, y todavía tengo el mismo problema. Parece que un error en VBET

kamilkurczak
08-03-11, 19:35
hola, ¿utiliza UTF-8 en el foro y base de datos o no?
Si no es así - que debería haber una solución para usted. Wil me lo preparan y escriben aquí.

Si usted puede - por favor, pegue aquí a la URL del hilo de esta cuestión.
Gracias

freddie3218
09-03-11, 00:15
hola, ¿utiliza UTF-8 en el foro y base de datos o no?
Si no es así - que debería haber una solución para usted. Wil me lo preparan y escriben aquí.

Si usted puede - por favor, pegue aquí a la URL del hilo de esta cuestión.
ThanksNo, yo no uso UTF-8 o el foro de base de datos. Yo uso la norma ISO-8859-1.

Usted puede ver el problema de vivir viendo este tema:

$ 1 Esta es una prueba (http://kokoku.ca/forums/showthread.php?t=418)

Gracias. :)

freddie3218
10-03-11, 01:05
Cualquier noticia sobre lo que es la causa?

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

Estoy probando en mi foro de prueba (no en UTF) y no puedo reproducirlo, pero usted puede intentar esta solución.
Tengo algo para usted:
1. abrir, hacer un copiar y editar este archivo:
Foro / root includes / vbenterprisetranslator_functions_utils.php
2. en esta función de búsqueda:

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. y comentar todas las líneas sin retorno como el siguiente:

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 y poner a prueba!

esto debe funcionar sólo para los nuevos puestos. todos los puestos existentes se debe editar a mano.
No shure que usted tiene un foro ISO, pero puede probarlo. Si no es bueno - por favor sobrescribir estos archivos cambios bu edad

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

Que fue un buen intento. Sin embargo, no funciona.

La salida muestra ahora: ".. Ceci est la prueba de la ONU S'il vous plaa ® t Ignorer mensaje ce"

La salida correcta debería ser: "Ceci est la prueba de la ONU s'il vous plaît Ignorer mensaje ce.."

Por lo tanto, me volvió la espalda.

Esta es una cosa que he notado:

Al publicar y editar, no se muestra correctamente. Sin embargo, si pulsa el botón editor WYSIWYG para entrar en "modo básico", a continuación, se mostrarán correctamente en el editor WYSIWYG. Sin embargo, cuando trato de guardar, vuelve a mostrar correctamente de nuevo. Parece que el editor WYSIWYG no es el análisis de las cosas correctamente antes de guardar cuando estoy usando VBET en un idioma extranjero, o cuando estoy usando el [lang =] tags. Sin embargo, si después de una frase extranjera sin el uso de la [lang = fr] tags, entonces se mostrarán correctamente al guardar. Así que parece que VBET no permite que el editor WYSIWYG para analizar correctamente antes de guardar ... si eso tiene algún sentido.

kamilkurczak
10-03-11, 23:41
usted tiene este problema cuando desea publicar en la página traducida, o no? por favor, describir lo que debe hacer para tener los mismos resultados en mi foro de prueba.

freddie3218
11-03-11, 07:19
usted tiene este problema cuando desea publicar en la página traducida, o no? por favor, describir lo que debe hacer para tener los mismos resultados en forum.I mi prueba, no sé si se puede reproducir este en tu foro o no. Sin embargo, esto es lo que sucede:

Vbulletin versión 4.08
Tengo dos idiomas en mi sitio: Inglés y Francés. He desactivado todos los demás idiomas, y todas las otras banderas.
Todos Inglés y Francés se traduce a través del sitio correctamente, con el acento adecuado. La única vez que los acentos no se muestran correctamente es si alguien está usando la lengua francesa y los mensajes en francés ... tener el "francés" elegido en su perfil de usuario. En este caso, VBET asignará las etiquetas BBcode adecuado de forma automática cuando publican. IE: "[lang = es]" Sin embargo, una vez que presenten su mensaje, los acentos en su mensaje no aparecerá correctamente. Si se presiona el "post editar", que verá su cargo en el avanzado editor WYSIWYG muestra incorrectamente (no tengo todas las cuentas configuradas para usar el editor WYSIWYG, incluso en respuesta rápida, de forma predeterminada para todos los usuarios pueden adjuntar imágenes a partir de su disco duro). Sin embargo, si cambiar el "editor de cambiar el modo de" botón de ida y vuelta, verán su mensaje aparezca correctamente. Sin embargo, cuando tratan de guardar los cambios en su puesto, se volverá a mostrar incorrectamente cuando salvar su puesto.

Este problema sólo ocurre cuando el usuario está utilizando el "francés" en su configuración de perfil de usuario y la publicación en lengua francesa ... lo que hace VBET añadir el [lang = fr] a un puesto de forma automática.

Mi idioma por defecto es el Inglés foro.

Si necesita echar un vistazo en mi foro ... pm, y yo le enviará la información necesaria para revisar mi panel de administración de configuración.

Espero que esta información es útil.

Gracias.

kamilkurczak
11-03-11, 10:06
Sí. Puedo confirmar en mi foro de prueba!
Esto es un error VBET así que tengo que mover este hilo en la sección de informes de errores.

Me di cuenta de que hay un problema de codificación de letras del código ASCII en virtud de un

Puedo reproducir en mi foro de prueba para que yo pueda solucionar sin tener acceso a tu foro:)

Voy a tratar de encontrar la mejor solución para usted.

freddie3218
12-03-11, 06:02
Sí. Puedo confirmar en mi foro de prueba!
Esto es un error VBET así que tengo que mover este hilo en la sección de informes de errores.

Me di cuenta de que hay un problema de codificación de letras del código ASCII en virtud de un

Puedo reproducir en mi foro de prueba para que yo pueda solucionar sin tener acceso a tu foro:)

Voy a tratar de encontrar la mejor solución para usted.
Bueno, la buena noticia es que he solucionado el problema a mí mismo. La mala noticia es que no puedo confirmar que esta solución funciona como una función de sustitución de ... ya que sólo funciona en mis foros.

De todos modos, aquí está la nueva función:



function vbet_encodeToSafeUTF8(&$string) {

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


Esta función convierte UTF-8 a ISO-8859-1

kamilkurczak
12-03-11, 13:31
Gracias por esta buena noticia. Voy a probar y confirmar

kamilkurczak
13-03-11, 13:15
hola,
Su solución no es buena en general. ¿Por qué? Se trata de trabajar con las cartas con el código ASCII en 256 (convierte y se muestra bien) pero las cartas con el código ASCII de 256 que tengo "?" signos.

Así que tenemos que combinar estas dos soluciones en una sola;)

ejemplo:

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 línea:
[\304-\337] definir que las cartas con el código ASCII en 256 no serán decodificados por mi función, pero sólo por
utf8_decode

Estoy probando still.I no estoy del todo seguro de que todo funciona correctamente ahora.
Puedes probarlo también!

freddie3218
14-03-11, 05:10
Para mis propósitos, la solución funciona bien ... que a mí sólo se traduce en dos langauges ... Inglés y Francés. Ambos tienen la certificación ISO-8859-1 (latin1) idiomas. Por tanto, el "utf_decode" función trabaja muy bien.

Sin embargo, con un alcance global a la vista, la función utf_decode probablemente no funcione para otros idiomas fuera del "latin1".

Yo no soy mucho de un programador de vbulletin. Sin embargo, voy a ofrecer una sugerencia:

Tal vez con un "if" se adapten a sus fines mejor si su solución no funciona. En el siguiente ejemplo, el "translated_language_var" sería el idioma de destino para traducir.

IE:


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

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Tal vez con algo como esto podría ser un método seguro para mantener todo a salvo ...??? Estoy seguro de que podría usar esta pseudo-código y hacer que funcione para vbulletin. :)

kamilkurczak
27-03-11, 22:30
resuelto - se incluirán 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 Translator 4.9.99