View Full Version: Gelöst Akzente nicht richtig angezeigt ...
freddie3218
07-03-11, 16:09
Hallo.
Ich bin mit vbulletin 4,08.
Ich benutze vbet aus hauptsächlich zwei Sprachen ... Englisch und Französisch. Ich habe das Forum Standardsprache auf Englisch eingestellt. Allerdings, wenn ein Französisch Benutzer Beiträge, zeigt die Übersetzung korrekt in Englisch. Doch in Französisch die Akzente werden nicht angezeigt. Stattdessen wird es wie folgt aus:
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.
Es sollte wie folgt angezeigt:
Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.
Mein Forum ist bis zu beiden Sprachen auch als ISO-8859-1 Display eingestellt. Deshalb bin ich nicht mit UTF-8
Auch ich folgte den Installationsanweisungen sehr eng.
Die einzige Änderung habe ich auf vBet ist, dass ich die Standard-Flaggen mit CSS-Sprite geändert. Allerdings sah ich den Code, und nichts, was ich tat sollte die Art und Weise, dass die Dinge werden angezeigt Wirkung.
Muss ich meine db auf UTF-8 zu konvertieren, um dieses Problem zu lösen?
Jede Beratung wird geschätzt. Dank. :)
freddie3218
08-03-11, 17:56
Nun .... Ich deaktiviert alle anderen Plugins, und ich habe noch das gleiche Problem. Sieht aus wie ein Fehler in vbet
kamilkurczak
08-03-11, 19:35
hallo, benutzen Sie UTF-8-Forum und der Datenbank, oder nicht?
Wenn nicht - ich habe eine Lösung für Sie. Ich wil vorbereiten und schreiben Sie hier.
Wenn Sie können - bitte hier eine url, den Faden mit diesem Thema einfügen.
Dank
freddie3218
09-03-11, 00:15
hallo, benutzen Sie UTF-8-Forum und der Datenbank, oder nicht?
Wenn nicht - ich habe eine Lösung für Sie. Ich wil vorbereiten und schreiben Sie hier.
Wenn Sie können - bitte hier eine url, den Faden mit diesem Thema einfügen.
ThanksNo, weiß ich nicht mit einem UTF-8-Forum oder Datenbank. Ich verwende ISO-8859-1.
Sie können sehen, das Problem, indem Sie diesen Thread zu leben:
$ 1 Dies ist ein Test (http://kokoku.ca/forums/showthread.php?t=418)
Dank. :)
freddie3218
10-03-11, 01:05
Gibt es Neuigkeiten darüber, was es verursacht wird?
kamilkurczak
10-03-11, 10:04
hallo,
Ich teste es auf meinem Test-Forum (in nicht UTF) und ich kann es nicht zu reproduzieren, aber Sie können diese Lösung zu versuchen.
Ich habe etwas für Sie:
1. zu öffnen, machen Sie eine Kopie und bearbeiten Sie diese Datei:
Forum root / includes / vbenterprisetranslator_functions_utils.php
2. in dieser Funktion zu finden:
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. und alle Zeilen ohne Wiederkehr wie diese:
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. Speichern und testen!
Dies sollte nur Arbeit für neue Beiträge. alle vorhandenen Beiträge sollten von Hand editieren.
Ich nicht sicher, dass Sie ein ISO-Forum haben, aber Sie können es testen. Wenn nicht gut - bitte überschreiben diese Änderungen bu alte Datei
freddie3218
10-03-11, 15:30
Hallo,
Das war ein guter Versuch. Allerdings funktioniert es nicht.
Die Ausgabe zeigt nun: ".. Ceci est un-Test S'il vous Plaça ® t ignorer ce message"
Die richtige Ausgabe sollte sein: "Ceci est un-Test S'il vous plaît ignorer ce Nachricht.."
Daher kehrte ich zurück.
Hier ist einer, was mir auffiel:
Bei der Buchung und Bearbeitung, ist es nicht richtig angezeigt. Allerdings, wenn ich den WYSIWYG-Editor, um in "Basic Mode" gehen schlagen, dann wird es richtig angezeigt in der WYSIWYG-Editor. Allerdings, wenn ich sie zu retten versuchen, wechselt es zu zeigen, falsch wieder. Es scheint, dass der WYSIWYG-Editor ist nicht Parsen Dinge richtig vor dem Speichern, wenn ich mit VBET bin in einer fremden Sprache, oder wenn ich mit dem [lang =]-Tags. Allerdings, wenn ich ein fremdes Wort post, ohne die [lang = fr] tags, dann wird es richtig angezeigt, wenn retten. So scheint es, dass VBET ist nicht erlaubt die WYSIWYG-Editor, um korrekt zu analysieren vor dem Speichern ... wenn das macht keinen Sinn.
kamilkurczak
10-03-11, 23:41
Sie haben dieses Problem, wenn Sie möchten, dass auf übersetzte Seite oder nicht erlaubt? Sie beschreiben, was ich tun sollte, um die gleichen Ergebnisse auf meinem Test-Forum haben.
freddie3218
11-03-11, 07:19
Sie haben dieses Problem, wenn Sie möchten, dass auf übersetzte Seite oder nicht erlaubt? Sie beschreiben, was ich tun sollte, um die gleichen Ergebnisse auf meinem Test forum.I haben weiß nicht, ob Sie diese auf Ihrem Forum oder nicht wiedergeben kann. Dies ist jedoch, was passiert:
VBulletin Version 4.08
Ich habe zwei Sprachen auf meiner Website: Englisch und Französisch. Ich deaktiviert alle anderen Sprachen, und alle anderen Flaggen.
Alle Englisch und Französisch ist auf der gesamten Website richtig, mit den richtigen Akzenten übersetzt. Das einzige Mal, die Akzente nicht korrekt angezeigt werden, wenn jemand mit dem Französisch Sprache und Beiträge auf Französisch ... mit dem "Französisch Sprache" in ihrem Benutzerprofil gewählt. In diesem Fall wird VBET die richtige BBcode tags automatisch zuweisen, wenn sie Post. IE: "[lang = fr]" Allerdings, wenn sie ihre Post einreichen, die Akzente auf ihren Beitrag nicht richtig angezeigt werden. Wenn sie den "edit post"-Taste drücken, wird sie ihre Post in der erweiterten WYSIWYG-Editor nicht ordnungsgemäß (ich habe alle Konten bis zum WYSIWYG-Editor verwenden gesetzt, auch in schnelle Antwort, die standardmäßig so, dass alle Benutzer können Bilder von anhängen angezeigt sehen ihre Festplatte). Allerdings, wenn sie den "switch-Editor-Modus"-Taste hin-und herwechseln, sehen sie ihre Post ordnungsgemäß angezeigt. Doch wenn sie die Änderungen an ihren Beitrag zu speichern, wird es wieder richtig angezeigt, wenn sie ihre Post zu speichern.
Dieses Problem tritt nur, wenn der Benutzer mit der "französischer Sprache" in ihrem Benutzerprofil-Einstellungen und Buchung in Französisch ... damit vbet fügen Sie die [lang = fr] an einen Pfosten automatisch.
Mein Forum voreingestellte Sprache ist Englisch.
Wenn Sie brauchen, um sich umzuschauen auf meinem Forum ... pm mich, und ich werde Ihnen die notwendigen Informationen, um check out my Admin-Panel-Setup.
Ich hoffe, diese Informationen sind hilfreich.
Dank.
kamilkurczak
11-03-11, 10:06
Ja. Ich kann es auf meinem Test-Forum bestätigen!
Dies ist ein vBET Bug, so dass ich diesen Thread in Bug-Reporting Sektion verschieben müssen.
Ich bemerkte, dass es eine Codierung Problem mit Buchstaben mit dem ASCII-Code unter einer
Ich reproduzieren können es auf meinem Test-Forum, damit ich es ohne Zugang zu Ihrem Forum beheben können:)
Ich werde versuchen, die beste Lösung für Sie zu finden.
freddie3218
12-03-11, 06:02
Ja. Ich kann es auf meinem Test-Forum bestätigen!
Dies ist ein vBET Bug, so dass ich diesen Thread in Bug-Reporting Sektion verschieben müssen.
Ich bemerkte, dass es eine Codierung Problem mit Buchstaben mit dem ASCII-Code unter einer
Ich reproduzieren können es auf meinem Test-Forum, damit ich es ohne Zugang zu Ihrem Forum beheben können:)
Ich werde versuchen, die beste Lösung für Sie zu finden.
Nun die gute Nachricht ist, dass ich das Problem behoben mich. Die schlechte Nachricht ist, dass kann ich nicht bestätigen, dass diese Lösung als Ersatz-Funktion arbeiten ... wie es funktioniert nur auf meine Foren.
Egal, hier ist die neue Funktion:
function vbet_encodeToSafeUTF8(&$string) {
$string = utf8_decode($string);
return $string;
}
Diese Funktion wandelt UTF-8 zu ISO-8859-1
kamilkurczak
12-03-11, 13:31
Dank für diese gute Nachricht. Ich werde es testen und bestätigen
kamilkurczak
13-03-11, 13:15
hallo,
Ihre Lösung ist nicht gut, in der Regel. Warum? Dies ist mit den Buchstaben mit dem ASCII-Code arbeiten unter 256 (umgerechnet und gut), aber Briefe mit ASCII-Code über 256 habe ich "?" Zeichen.
Also müssen wir unsere zwei Lösungen in einem zu kombinieren;)
Beispiel:
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;
}
diese Zeile:
[\304-\337] definieren als Buchstaben mit dem ASCII-Code unter 256 wird nicht durch meine Funktion, sondern nur durch decodiert werden
utf8_decode
Ich teste es still.I bin nicht ganz sicher, dass alles richtig funktioniert jetzt.
Sie können es zu testen!
freddie3218
14-03-11, 05:10
Für meine Zwecke, arbeitet die Lösung in Ordnung ... wie ich bin nur die Übersetzung in zwei langauges ... Englisch und Französisch. Beide sind ISO-8859-1 (latin1) Sprachen. Deshalb ist die "utf_decode"-Funktion funktioniert einwandfrei.
Allerdings mit einem globalen Rahmen in Sicht, wird die utf_decode Funktion wahrscheinlich nicht für andere Sprachen außerhalb des "latin1" zu arbeiten.
Ich bin nicht viel von einem vbulletin Programmierer. Allerdings biete ich einen Vorschlag:
Vielleicht mit einer "If"-Anweisung kann Ihre Zwecke besser entsprechen, wenn Ihre Lösung funktioniert nicht. In dem folgenden Beispiel würde die "translated_language_var" die Zielsprache zu übersetzen.
IE:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
Vielleicht mit so etwas wie dieses wäre eine sichere Methode, um alles sicher sein ...??? Ich bin sicher, Sie könnten leicht mit dieser Pseudo-Code und machen es für vBulletin zu arbeiten. :)
kamilkurczak
27-03-11, 22:30
gelöst - wird in den nächsten Relase aufgenommen werden
Automatic Translations (Powered by Google, Microsoft®,
Yandex, SDL Language Cloud, IBM Watson and Apertium):
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.