View Full Version: Løst Accenter ikke vises korrekt ...
freddie3218
07-03-11, 16:09
Hej.
Jeg bruger vBulletin 4.08.
Jeg bruger vbet til hovedsageligt to sprog ... Engelsk og fransk. Jeg har forummet standard sproget indstillet til engelsk. Men når en fransk bruger indlæg, oversættelsen vises korrekt på engelsk. Men i den franske accenter, vises ikke. I stedet vises sådan her:
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.
Det skal vise sådan her:
Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.
Mit forum er sat op til at vise begge sprog som ISO-8859-1. Derfor er jeg ikke bruger UTF-8
Også, jeg fulgte installationsvejledningen meget nøje.
Den eneste ændring jeg lavede til vBet er, at jeg har ændret standard-flag ved hjælp af CSS-Sprite. Men jeg kiggede på koden, og intet jeg gjorde skal foretage den måde, tingene bliver vist.
Skal jeg konvertere min db til UTF-8 til at løse dette problem?
Nogle gode råd vil blive værdsat. Thanks. :)
freddie3218
08-03-11, 17:56
Well .... Jeg har deaktiveret alle andre plugin, og jeg har stadig det samme problem. Ligner en fejl i vbet
kamilkurczak
08-03-11, 19:35
Hej, du bruger UTF-8 forum og database eller ej?
Hvis ikke - jeg skulle have en løsning til dig. Jeg Wil forberede det og skrive her.
Hvis du kan - venligst indsæt en URL til tråden med dette spørgsmål.
Thanks
freddie3218
09-03-11, 00:15
Hej, du bruger UTF-8 forum og database eller ej?
Hvis ikke - jeg skulle have en løsning til dig. Jeg Wil forberede det og skrive her.
Hvis du kan - venligst indsæt en URL til tråden med dette spørgsmål.
ThanksNo, kan jeg ikke bruge en UTF-8 forum eller database. Jeg bruger ISO-8859-1.
Du kan se problemet lever ved at se denne tråd:
$ 1 Dette er en test (http://kokoku.ca/forums/showthread.php?t=418)
Thanks. :)
freddie3218
10-03-11, 01:05
Alle nyheder om, hvad der forårsager det?
kamilkurczak
10-03-11, 10:04
hej,
Jeg teste det på min test-forum (i ikke UTF) og jeg kan ikke at gengive det, men du kan prøve denne løsning.
Jeg har noget til dig:
1. åbne, lave en kopi og redigere denne fil:
forum root / includes / vbenterprisetranslator_functions_utils.php
2. i denne funktion finde:
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. og kommentere alle linjer uden at vende tilbage som denne:
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. gemme og test!
dette bør arbejde kun for nye stillinger. alle eksisterende indlæg skal du redigere i hånden.
Jeg ikke SHURE, at du har en ISO-forum, men du kan teste det. Hvis det ikke er godt - du overskrive disse ændringer bu gamle fil
freddie3218
10-03-11, 15:30
Hej,
Det var en god prøve. Imidlertid virker det ikke.
Udgangen viser nu: ».. Ceci est un-test S'il vous Plaa ® t ignorer ce besked"
Den korrekte output bør være: "Ceci est un-test S'il vous fletning ignorer ce besked.."
Derfor er jeg vendt tilbage.
Her er en ting jeg bemærkede:
Ved udstationering og redigering, er det ikke vises korrekt. Men hvis jeg ramte den WYSIWYG editor-knappen for at gå ind i "grundlæggende tilstand", så vil det vises korrekt i WYSIWYG editor. Men når jeg forsøger at gemme det, det vender tilbage til at vise forkert igen. Det ser ud til, at den WYSIWYG editor ikke er parsing tingene korrekt, før du gemmer, når jeg bruger VBET på et fremmed sprog, eller når jeg bruger [lang =] tags. Men hvis jeg et udenlandsk sætning uden at bruge [lang = fr] tags, så vil det vise korrekt, når du gemmer. Så det lader til, at VBET ikke lade WYSIWYG-editor til at parse korrekt, før du gemmer ... hvis det giver nogen mening.
kamilkurczak
10-03-11, 23:41
du har dette problem, når du ønsker at skrive på oversatte side eller ej? Beskriv, hvad jeg skulle gøre for at få de samme resultater på min test-forum.
freddie3218
11-03-11, 07:19
du har dette problem, når du ønsker at skrive på oversatte side eller ej? Beskriv, hvad jeg skulle gøre for at få de samme resultater på min test forum.I ved ikke, om du kan gengive dette på dit forum eller ej. Men dette er hvad der sker:
VBulletin-version 4,08
Jeg har to sprog på min hjemmeside: engelsk og fransk. Jeg har deaktiveret alle andre sprog, og alle andre flag.
Alle engelsk og fransk er oversat hele webstedet korrekt, med den rette accent. Det eneste tidspunkt de accenter ikke vises korrekt, hvis nogen bruger det franske sprog og indlæg på fransk ... har den "franske sprog" er valgt i deres brugerprofil. I dette tilfælde vil VBET tildele den korrekte BBcode tags automatisk, når de sender. IE: "[lang = fr]" Men når de sender deres indlæg, vil accenter på deres indlæg ikke vises korrekt. Hvis de trykker på "edit post" knappen, vil de se deres indlæg i den avancerede WYSIWYG-editor vises forkert (jeg har alle konti sat op til at bruge WYSIWYG editor, selv i hurtige svar, som standard, så alle brugere kan vedhæfte billeder fra deres harddisk). Men hvis de slå "switch editor-mode" knappen frem og tilbage, vil de se deres indlæg vises korrekt. Men når de forsøger at gemme ændringer i deres indlæg, vil det endnu engang vise forkert, når de gemmer deres post.
Dette problem kun sker, når brugeren er ved hjælp af "fransk" i deres brugerprofil indstillinger og udstationering i det franske sprog ... og dermed gøre vbet tilføje [lang = fr] i en stilling automatisk.
Mit forum standardsprog er engelsk.
Hvis du har brug for at tage et kig rundt på mit forum ... pm mig, og jeg vil sende dig de nødvendige oplysninger til at tjekke min admin panel opsætning.
Jeg håber, denne information er nyttigt.
Thanks.
kamilkurczak
11-03-11, 10:06
ja. Jeg kan bekræfte det på min test-forum!
Dette er en vBET fejl, så jeg nødt til at flytte denne tråd ind i bug rapportering sektion.
Jeg har bemærket, at der er en kodning problem med breve med ASCII-kode under en
Jeg kan gengive det på min test-forum, så jeg kan ordne det uden adgang til dit forum:)
Jeg vil forsøge at finde den bedste løsning for dig.
freddie3218
12-03-11, 06:02
ja. Jeg kan bekræfte det på min test-forum!
Dette er en vBET fejl, så jeg nødt til at flytte denne tråd ind i bug rapportering sektion.
Jeg har bemærket, at der er en kodning problem med breve med ASCII-kode under en
Jeg kan gengive det på min test-forum, så jeg kan ordne det uden adgang til dit forum:)
Jeg vil forsøge at finde den bedste løsning for dig.
Tja den gode nyhed er, at jeg har løst problemet selv. Den dårlige nyhed er, at jeg ikke kan bekræfte, at denne løsning vil fungere som en erstatning funktion ... da det kun virker på min fora.
Uanset, her er den nye funktion:
function vbet_encodeToSafeUTF8(&$string) {
$string = utf8_decode($string);
return $string;
}
Denne funktion konverterer UTF-8 til ISO-8859-1
kamilkurczak
12-03-11, 13:31
tak for denne gode nyhed. Jeg vil prøve det og bekræft
kamilkurczak
13-03-11, 13:15
hej,
Din løsning er ikke god i almindelighed. Hvorfor? Dette er arbejder med bogstaver med ASCII-kode under 256 (konverteres og vises godt), men breve med ASCII-kode over 256 jeg har "?" tegn.
Så vi nødt til at kombinere vores to løsninger i én;)
Eksempel:
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;
}
denne linje:
[\304-\337] definere end breve med ASCII-kode under 256, vil ikke være afkodes af min funktion, men kun ved
utf8_decode
Jeg teste den still.I er ikke helt sikker på, at alt fungerer korrekt nu.
Du kan teste det også!
freddie3218
14-03-11, 05:10
For min, virker den løsning fint ... da jeg kun er oversætte i to backenden ... Engelsk og fransk. Begge er ISO-8859-1 (latin1) sprog. Derfor "utf_decode"-funktionen virker fint.
Men med en global rækkevidde i betragtning, vil utf_decode funktionen sandsynligvis ikke arbejde for andre sprog udenfor "latin1".
Jeg er ikke meget af en vBulletin programmør. Dog vil jeg tilbyder ét forslag:
Måske ved hjælp af en "hvis" Erklæringen kan passe dit formål bedre, hvis din løsning ikke virker. I nedenstående eksempel, ville "translated_language_var" være den destination, sprog at oversætte til.
IE:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
Måske ved hjælp af noget som dette ville være en sikker metode til at holde alt sikker ...??? Jeg er sikker på du kan sagtens bruge denne pseudo-kode og gøre det arbejde for vBulletin. :)
kamilkurczak
27-03-11, 22:30
løst - vil indgå i den næste Slip
Automatic Translations (Powered by Google, Microsoft®,
Yandex, SDL Language Cloud, IBM Watson and Apertium):
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.