PDA

Voir la version complète: Résolu Accents ne s'affiche pas correctement ...



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

J'utilise vbulletin 4,08.

J'utilise essentiellement des vBET deux langues ... Anglais et en français. J'ai la langue par défaut du forum mis à l'anglais. Cependant, chaque fois qu'une messages de l'utilisateur en français, la traduction s'affiche correctement en anglais. Cependant, en français les accents ne s'affichent pas. Au lieu de cela, il affiche comme ceci:


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.

Il doit afficher comme ceci:


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

Mon forum est configuré pour afficher les deux langues comme l'ISO-8859-1. Donc, je ne suis pas en UTF-8

Aussi, j'ai suivi les instructions d'installation de très près.

La seule modification que j'ai faite à vBET est que j'ai changé les drapeaux par défaut en utilisant le CSS-Sprite. Cependant, j'ai regardé le code, et rien je n'ai devrait effet la façon dont les choses sont affichées.

Dois-je convertir ma db en UTF-8 pour résoudre ce problème?

Tout conseil sera apprécié. Merci. :)

freddie3218
08-03-11, 17:56
Eh bien .... J'ai désactivé tous les plugins d'autres, et j'ai toujours le même problème. On dirait un bug dans vBET

kamilkurczak
08-03-11, 19:35
Bonjour, pensez-vous utiliser UTF-8 forum et base de données ou pas?
Si ce n'est pas - je devrais avoir une solution pour vous. Je wil le préparer et écrire ici.

Si vous ne pouvez - s'il vous plaît coller ici une URL pour le fil de cette question.
Merci

freddie3218
09-03-11, 00:15
Bonjour, pensez-vous utiliser UTF-8 forum et base de données ou pas?
Si ce n'est pas - je devrais avoir une solution pour vous. Je wil le préparer et écrire ici.

Si vous ne pouvez - s'il vous plaît coller ici une URL pour le fil de cette question.
ThanksNo, je n'utilise pas UTF-8 forum ou base de données. J'utilise la norme ISO-8859-1.

Vous pouvez voir le problème direct en regardant cette discussion:

$ 1 Ceci est un test (http://kokoku.ca/forums/showthread.php?t=418)

Merci. :)

freddie3218
10-03-11, 01:05
Des nouvelles sur ce qui est la cause?

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

Je suis le tester sur mon forum de test (en pas UTF) et je ne peux pas le reproduire, mais vous pouvez essayer cette solution.
J'ai quelque chose pour vous:
1. ouverte, faire une copie et modifier ce fichier:
/ root forum includes / vbenterprisetranslator_functions_utils.php
2. dans cette fonction à trouver:

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. et commenter toutes les lignes sans retour comme celui-ci:

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. Enregistrez et testez!

cela ne devrait travailler que pour de nouveaux postes. tous les postes existants, vous devez éditer à la main.
Je ne shure que vous avez un forum ISO mais vous pouvez le tester. Si ce n'est pas une bonne - s'il vous plaît écraser ces fichiers bu changements anciennes

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

Ce fut un bon essai. Cependant, il ne fonctionne pas.

La sortie indique maintenant: ".. CECI EST UN essais S'il vous plaa ® t ignorer ce message»

La sortie correcte devrait être: "CECI EST UN tester s'il vous plaît ignorer ce message.."

Par conséquent, je revenue en arrière.

Voici une chose que j'ai remarqué:

Quand l'affichage et l'édition, il ne s'affiche pas correctement. Cependant, si j'ai touché le bouton de l'éditeur WYSIWYG pour aller en mode "basique", alors il s'affiche correctement dans l'éditeur WYSIWYG. Cependant, lorsque je tente de le sauver, il revient à montrer mal à nouveau. Il semble que l'éditeur WYSIWYG n'est pas l'analyse les choses correctement avant d'enregistrer lorsque j'utilise vBET dans une langue étrangère, ou quand je suis en utilisant le [lang =] tags. Cependant, si je poste une expression étrangère sans utiliser les [lang = fr] tags, il sera alors s'afficher correctement lors de l'enregistrement. Il semble donc que vBET n'est pas l'éditeur WYSIWYG permettant d'analyser correctement avant de sauver ... si cela n'a aucun sens.

kamilkurczak
10-03-11, 23:41
vous avez ce problème lorsque vous souhaitez afficher sur la page traduite ou non? S'il vous plaît décrire ce que je dois faire pour avoir les mêmes résultats sur mon forum de test.

freddie3218
11-03-11, 07:19
vous avez ce problème lorsque vous souhaitez afficher sur la page traduite ou non? S'il vous plaît décrire ce que je dois faire pour avoir les mêmes résultats sur mon forum.I tests ne sais pas si vous pouvez reproduire ceci sur votre forum ou non. Cependant, c'est ce qui arrive:

VBulletin version 4.08
J'ai deux langues sur mon site: anglais et français. J'ai désactivé toutes les autres langues, et tous les autres drapeaux.
Tous les français et en anglais est traduit à travers le site correctement, avec les accents. Le seul moment où les accents ne s'affichent pas correctement est de savoir si quelqu'un utilise la langue française et les messages en français ... ayant la «langue française» choisis dans leur profil utilisateur. Dans ce cas, vBET va assigner le BBcode bon automatiquement quand ils postent. IE: «[lang = fr]" Cependant, une fois qu'ils soumettent leur poste, les accents sur leur poste ne seront pas apparaître correctement. Si elles appuyez sur le «post Edit", ils verront leur poste dans l'éditeur avancé WYSIWYG affiché incorrectement (j'ai tous les comptes configurés pour utiliser l'éditeur WYSIWYG, même en réponse rapide, par défaut, afin que tous les utilisateurs peuvent joindre des photos à partir de leur disque dur). Toutefois, si elles basculer le "rédacteur en chef mode de commutation" bouton avant et en arrière, ils verront leur poste apparaissent correctement. Pourtant, quand ils essaient de sauvegarder les modifications à leur poste, il sera une fois de plus l'affichage mal quand ils sauver leur poste.

Ce problème se produit uniquement lorsque l'utilisateur se sert du "LANGUE FRANÇAISE" dans leurs paramètres de profil utilisateur et l'affichage dans la langue française ... rendant ainsi vBET ajouter le [lang = fr] à un poste automatiquement.

Ma langue par défaut du forum est l'anglais.

Si vous avez besoin de jeter un regard autour de mon forum ... h moi, et je vais vous envoyer les informations nécessaires pour vérifier mon installation panneau admin.

J'espère que cette information est utile.

Merci.

kamilkurczak
11-03-11, 10:06
oui. Je peux le confirmer sur mon forum de test!
C'est un bug vBET j'ai donc besoin de se déplacer ce fil dans la section rapport de bug.

J'ai remarqué qu'il ya un problème de codage avec des lettres avec le code ASCII sous un

Je peux le reproduire sur mon forum de test afin que je puisse le réparer sans avoir accès à votre forum:)

Je vais essayer de trouver la meilleure solution pour vous.

freddie3218
12-03-11, 06:02
oui. Je peux le confirmer sur mon forum de test!
C'est un bug vBET j'ai donc besoin de se déplacer ce fil dans la section rapport de bug.

J'ai remarqué qu'il ya un problème de codage avec des lettres avec le code ASCII sous un

Je peux le reproduire sur mon forum de test afin que je puisse le réparer sans avoir accès à votre forum:)

Je vais essayer de trouver la meilleure solution pour vous.
Eh bien les bonnes nouvelles sont que je me suis résolu le problème. Les mauvaises nouvelles sont que je ne peux pas confirmer que cette solution fonctionne comme une fonction de remplacement ... car il ne fonctionne que sur mon forum.

Quoiqu'il en soit, voici la nouvelle fonction:



function vbet_encodeToSafeUTF8(&$string) {

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


Cette fonction convertit en UTF-8 ISO-8859-1

kamilkurczak
12-03-11, 13:31
merci pour ces bonnes nouvelles. Je vais le tester et confirmer

kamilkurczak
13-03-11, 13:15
bonjour,
Votre solution n'est pas bon en général. Pourquoi? C'est travailler avec les lettres avec le code ASCII sous 256 (convertis et affichés bien), mais les lettres avec le code ASCII de plus de 256 que j'ai "?" signes.

Nous avons donc besoin de combiner nos deux solutions en une seule;)

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

cette ligne:
[\304-\337] définir que les lettres avec le code ASCII sous 256 ne sera pas décodé par ma fonction, mais seulement par
utf8_decode

Je suis le tester still.I ne suis pas entièrement sûr que tout fonctionne correctement maintenant.
Vous pouvez le tester aussi!

freddie3218
14-03-11, 05:10
Pour ma part, la solution fonctionne très bien ... que je suis seulement de traduire en deux langauges ... Anglais et en français. Les deux sont certifiés ISO-8859-1 (latin1) langues. Par conséquent, le «utf_decode" fonctionne très bien.

Cependant, avec une portée globale en vue, la fonction utf_decode ne fonctionnera probablement pas pour les autres langues en dehors de "latin1".

Je ne suis pas beaucoup plus d'un programmeur vbulletin. Cependant, je vais proposer une suggestion:

Peut-être en utilisant un "if" peuvent convenir à vos besoins mieux si votre solution ne fonctionne pas. Dans l'exemple ci-dessous, le "translated_language_var» serait la langue de destination pour traduire.

IE:


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

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Peut-être en utilisant quelque chose comme ce serait une méthode sûre pour tout garder en toute sécurité ...??? Je suis sûr que vous pourriez facilement utiliser ce code pseudo et le faire fonctionner pour vBulletin. :)

kamilkurczak
27-03-11, 22:30
résolu - seront inclus dans la prochaine relase

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