PDA

Visa fullständig version: Löste Accenter som inte visas på rätt sätt ...



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

Jag använder vBulletin 4,08.

Jag använder vbet för främst två språk ... Engelska och franska. Jag har språket forumet standard inställd på engelska. Men när en fransk användarens inlägg visar översättningen korrekt på engelska. Men i franska accenter visas inte. Istället visar det så här:


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 ska visa så här:


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

Mitt forum är inställd för att visa båda språken som ISO-8859-1. Därför använder jag inte UTF-8

Dessutom följde jag installationsanvisningarna mycket noga.

Den enda ändringen jag gjorde till vBet är att jag ändrat standardinställningen flaggorna med hjälp av CSS-sprite. Däremot såg jag på koden, och ingenting jag gjorde skulle effekten på det sätt som saker och ting visas.

Måste jag konvertera mina db till UTF-8 för att lösa detta problem?

Några råd kommer att uppskattas. Tack. :)

freddie3218
08-03-11, 17:56
Well .... Jag handikappade varannan plugin, och jag har fortfarande samma problem. Ser ut som en bugg i vbet

kamilkurczak
08-03-11, 19:35
hej, använder ni UTF-8-forum och databas eller inte?
Om inte - jag skulle ha en lösning för dig. Jag wil förbereda det och skriva här.

Om du kan - var god klistra in här en URL till tråden med denna fråga.
Tack

freddie3218
09-03-11, 00:15
hej, använder ni UTF-8-forum och databas eller inte?
Om inte - jag skulle ha en lösning för dig. Jag wil förbereda det och skriva här.

Om du kan - var god klistra in här en URL till tråden med denna fråga.
ThanksNo, jag använder inte en UTF-8-forum eller databas. Jag använder ISO-8859-1.

Du kan se problemet lever genom att visa denna tråd:

$ 1 Detta är ett test (http://kokoku.ca/forums/showthread.php?t=418)

Tack. :)

freddie3218
10-03-11, 01:05
Alla nyheter om vad som orsakar det?

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

Jag testa den på mitt test forumet (i inte UTF) och jag kan inte reproducera det men du kan prova denna lösning.
Jag har något för dig:
1. öppna, gör en kopia och redigerar den här filen:
forum root / includes / vbenterprisetranslator_functions_utils.php
2. I denna funktion finns:

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. och kommentera alla linjer utan att återvända som den här:

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. spara och testa!

Detta bör fungerar bara för nya inlägg. alla befintliga tjänster ska du redigera för hand.
Jag shure inte att du har en ISO-forum men du kan testa den. Om inte bra - du skriva över dessa förändringar bu gamla filen

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

Det var ett bra försök. Däremot fungerar det inte.

Utgången visar nu: ".. Ceci est un testa S'il vous Plaa ® T ignorer CE-budskap"

Den korrekta utdata ska vara: "Ceci est un testa S'il vous fläta ignorer CE-meddelande.."

Därför återgick jag tillbaka.

Här är en sak jag märkt:

När du postar och redigering, visas den inte korrekt. Men om jag trycker på WYSIWYG editor för att gå in i "basic mode", så kommer det att visas korrekt i WYSIWYG editor. Men när jag försöker spara den, återgår det till att visa fel igen. Det verkar som om WYSIWYG editor inte tolka saker rätt innan du sparar när jag använder VBET på ett främmande språk, eller när jag använder [lang =] taggar. Men om jag till en främmande fras utan att använda [lang = fr] taggar, så kommer det att visas korrekt när du sparar. Så det verkar som VBET inte låta WYSIWYG editor för att tolka korrekt innan du sparar ... om det gör någon mening.

kamilkurczak
10-03-11, 23:41
du har det här problemet när du skulle vilja lägga ut på översatt sida eller inte? beskriv vad jag ska göra för att få samma resultat på mina tester forumet.

freddie3218
11-03-11, 07:19
du har det här problemet när du skulle vilja lägga ut på översatt sida eller inte? beskriv vad jag ska göra för att få samma resultat på mina tester forum.I vet inte om du kan återskapa detta på forumet eller inte. Detta är dock vad som händer:

VBulletin version 4,08
Jag har två språk på min webbplats: engelska och franska. Jag inaktiverat alla andra språk, och alla andra flaggor.
Alla engelska och franska är översatt hela sidan ordentligt med rätt accenter. Den enda gången de accenter som inte visas korrekt är om någon använder det franska språket och inlägg på franska ... ha det "franska språket" valts i sin användarprofil. I detta fall kommer VBET tilldela rätt BBCode taggar automatiskt när de publicerar. IE: "[lang = fr]" Men när de lämnar sin post, kommer accenter på sin post inte visas korrekt. Om de trycker på "Ändra meddelande" knappen, kommer de att se sin post i de avancerade WYSIWYG editor visas felaktigt (jag har alla konton som inrättats för att använda WYSIWYG editor, även i snabba svar, som standard så att alla användare kan bifoga bilder från sin hårddisk). Men om de växla "switch redaktören mode"-knappen och tillbaka, kommer de att se sin post visas korrekt. Men när de försöker spara ändringar i sina inlägg, kommer det återigen visa på fel sätt när de sparar sin post.

Detta problem inträffar bara när användaren använder den "franska språket" i deras inställningar användarprofil och lägga i det franska språket ... vilket gör vbet lägga till [lang = fr] för att ett inlägg automatiskt.

Mitt forum standardspråk är engelska.

Om du behöver ta en titt runt på mitt forum ... pm mig, och jag kommer att skicka dig den information som behövs för att kolla in min admin panel setup.

Jag hoppas att denna information är till hjälp.

Tack.

kamilkurczak
11-03-11, 10:06
Ja. Jag kan bekräfta det på mitt test forumet!
Detta är en vBET bugg så jag måste flytta denna tråd till felrapportering avsnitt.

Jag märkte att det finns en kodning problem med bokstäver med ASCII-kod under en

Jag kan återge den på mitt test forumet så jag kan fixa det utan tillgång till ditt forum:)

Jag ska försöka hitta den bästa lösningen för dig.

freddie3218
12-03-11, 06:02
Ja. Jag kan bekräfta det på mitt test forumet!
Detta är en vBET bugg så jag måste flytta denna tråd till felrapportering avsnitt.

Jag märkte att det finns en kodning problem med bokstäver med ASCII-kod under en

Jag kan återge den på mitt test forumet så jag kan fixa det utan tillgång till ditt forum:)

Jag ska försöka hitta den bästa lösningen för dig.
Väl den goda nyheten är att jag åtgärdat problemet själv. Den dåliga nyheten är att jag inte kan bekräfta att denna lösning kommer att fungera som ersättning funktion ... som det fungerar bara på mitt forum.

Oavsett, här är den nya funktionen:



function vbet_encodeToSafeUTF8(&$string) {

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


Denna funktion konverterar UTF-8 till ISO-8859-1

kamilkurczak
12-03-11, 13:31
tack för detta goda nyheter. Jag kommer att testa det och bekräfta

kamilkurczak
13-03-11, 13:15
hej,
Din lösning är inte bra i allmänhet. Varför? Detta är att arbeta med bokstäver med ASCII-kod under 256 (konverteras och visas bra) men bokstäver med ASCII-kod över 256 jag har "?" skyltar.

Så vi måste förena våra två lösningar i en;)

exempel:

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

denna rad:
[\304-\337] definiera än brev med ASCII-kod under 256 kommer inte att avkodas av min funktion utan endast genom
utf8_decode

Jag testa den still.I är inte helt säker på att allt fungerar korrekt nu.
Du kan testa det också!

freddie3218
14-03-11, 05:10
För mina syften, fungerar lösningen bra ... som jag bara översätter till två langauges ... Engelska och franska. Båda är ISO-8859-1 (latin1) språk. Därför "utf_decode" funktionen fungerar bra.

Men med en global räckvidd i sikte, kommer utf_decode fungerar antagligen inte fungerar för andra språk utanför "latin1".

Jag är inte mycket av en vBulletin programmerare. Jag kommer dock att erbjuda ett förslag:

Kanske med hjälp av en "Om" uttalande kan passa dina syften bättre om lösningen inte fungerar. I exemplet nedan skulle "translated_language_var" som destination språk att översätta till.

IE:


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

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Kanske med något sånt här skulle vara en säker metod för att hålla allting säkert ...??? Jag är säker på att du enkelt kan använda denna pseudokod och få det att fungera för vBulletin. :)

kamilkurczak
27-03-11, 22:30
lösta - kommer att ingå i nästa UTSÄTTNING

Automatic Translations (Powered by Google, Microsoft®, Yandex, SDL Language Cloud, IBM Watson and Apertium):
AfrikaansAlbanianArabicBelarusianBulgarianCatalanChineseCroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTaiwaneseThaiTurkishUkrainianVietnameseWelshYiddish
Translated to other languages supported by vB Enterprise Translator 4.10.1