Zobrazit plnou verzi: Vyřešeno Akcenty nezobrazuje správně ...
freddie3218
07-03-11, 16:09
Dobrý den.
Já používám 4,08 vBulletin.
Používám vbet hlavně pro dva jazyky ... Angličtina a francouzština. Mám forum výchozí jazyk nastavena angličtina. Nicméně, když francouzský uživatele, překlad se zobrazí správně v angličtině. Nicméně, ve francouzštině přízvuk se nezobrazují. Místo toho se zobrazí takto:
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.
Měl by se vypsat takto:
Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.
My fórum je nastaven na zobrazení obou jazyků jako ISO-8859-1. Proto jsem se v UTF-8
Také jsem se podle pokynů k instalaci velmi blízko.
Jediná změna jsem dal vBet je, že jsem změnil výchozí příznaky pomocí CSS Sprite. Nicméně, jsem se podíval na kód, a nic jsem měl účinek tak, že věci se zobrazí.
Musím změnit mé db na UTF-8, aby tento problém vyřešit?
Nějakou radu ocení. Díky. :)
freddie3218
08-03-11, 17:56
No .... Jsem vypnul všechny ostatní plugin, a stále mám stejný problém. Vypadá to na chybu v vbet
kamilkurczak
08-03-11, 19:35
Dobrý den, používáte UTF-8 fóra a databáze, nebo ne?
Pokud ne - Měl jsem pro Vás řešení. I Wil připravit a napsat zde.
Pokud můžete - zde vložte adresu URL do vlákna s tímto problémem.
Díky
freddie3218
09-03-11, 00:15
Dobrý den, používáte UTF-8 fóra a databáze, nebo ne?
Pokud ne - Měl jsem pro Vás řešení. I Wil připravit a napsat zde.
Pokud můžete - zde vložte adresu URL do vlákna s tímto problémem.
ThanksNo, nemám používat UTF-8 fóra nebo databáze. I používat ISO-8859-1.
Můžete vidět problém žít zobrazení tomto tématu:
1 dolar Toto je test (http://kokoku.ca/forums/showthread.php?t=418)
Díky. :)
freddie3218
10-03-11, 01:05
Veškeré zprávy o tom, co je příčinou, že?
kamilkurczak
10-03-11, 10:04
Dobrý den,
Já jsem to na mém testování Testovací fórum (není v UTF) a nemůžu kopírovat, ale můžete zkusit toto řešení.
Něco pro vás:
1. otevřít, vytvořit kopii a upravte tento soubor:
forum root / includes / vbenterprisetranslator_functions_utils.php
2. v této funkci najdete:
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. a vyjádřit všechny řádky bez návratu, jako je tento:
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. uložit a test!
To by mělo fungovat pouze na nové příspěvky. všechny stávající příspěvky budete muset upravit ručně.
Nejsem Shure, že jste fóra ISO, ale můžete vyzkoušet. Pokud tomu tak není dobré - prosím přepsat starý soubor změn bu
freddie3218
10-03-11, 15:30
Dobrý den,
To byl dobrý pokus. Nicméně, to nefunguje.
Výstup nyní ukazuje: ".. Ceci est un testu S'il Nacházíte plaà ® T ignorer CE zpráva"
Správný výstup by měl být: "Ceci est un testu S'il Nacházíte cop ignorer CE zpráva.."
Proto jsem se vrátil zpátky.
Tady je jedna věc, kterou jsem si všiml:
Když přidáte a editace, se nezobrazuje správně. Nicméně, když jsem narazila na WYSIWYG editor tlačítko pro přechod do "základního režimu", pak se zobrazí správně ve WYSIWYG editoru. Nicméně, když se snažím zachránit to, že se vrátí k zobrazování nesprávně znovu. Zdá se, že editor WYSIWYG není parsování věci správně, ještě před uložením, když jsem pomocí VBET v cizím jazyce, nebo když jsem pomocí [lang =] značek. Nicméně, když jsem po cizí slova bez použití [lang = fr] značky, pak to bude zobrazovat správně při ukládání. Takže se zdá, že VBET není WYSIWYG editor umožňuje analyzovat správně před uložením ... V případě, že nedává smysl.
kamilkurczak
10-03-11, 23:41
máte tento problém, když chcete příspěvek na přeložené stránce, nebo ne? Popište prosím, co mám dělat, aby stejné výsledky testu na mém fóru.
freddie3218
11-03-11, 07:19
máte tento problém, když chcete příspěvek na přeložené stránce, nebo ne? Popište prosím, co mám dělat, aby stejné výsledky na své zkušební forum.I nevím, jestli je možné reprodukovat na forum, nebo ne. Nicméně, toto je to, co se stane:
VBulletin verze 4.08
Mám dva jazyky, na mých stránkách: angličtina a francouzština. Jsem vypnul všechny ostatní jazyky, a všechny ostatní příznaky.
Všechny anglicky a francouzsky, je přeložen na celém webu správně, se správným přízvukem. Jediný čas akcenty nezobrazují správně, je-li někdo používá francouzský jazyk a pracovních míst ve francouzském ... mít "francouzský jazyk" zvolený ve svém uživatelském profilu. V tomto případě bude VBET přiřadit vlastní BBcode tagy automaticky po post. IE: "[lang = fr]" Nicméně, poté, co předloží své místo, bude akcenty na příspěvek se nezobrazí správně. Pokud se tlačítko "Upravit příspěvek" tlačítko, uvidí své místo ve vyspělých WYSIWYG editor zobrazena nesprávně (mám všechny účty nastaveno použití WYSIWYG editoru, a to iv rychlou odpověď, ve výchozím nastavení tak, aby všichni uživatelé mohli připojit fotografie z jejich hard-disk). Nicméně, pokud se přepínat "switch editor MODE" tam a zpět, uvidí jejich příspěvek objeví správně. Přesto, když se snaží zachránit změny v jejich místo, bude to opět zobrazí špatně, když se zachránit jejich příspěvek.
Tento problém pouze se stane, když uživatel používá "francouzského jazyka" v nastavení uživatelského profilu a vysílání ve francouzštině ... čímž vbet přidat [lang = fr] k poště automaticky.
My forum výchozím jazykem je angličtina.
Potřebujete-li se podívat na mé forum kolem ... pm mi a já Vám zašleme potřebné informace, aby Podívej se na můj admin panel nastavení.
Doufám, že tato informace je užitečná.
Díky.
kamilkurczak
11-03-11, 10:06
Ano. Mohu potvrdit, že na své zkušební forum!
Jedná se o bug, tak jsem vBET muset přesunout toto téma do sekce hlášení chyb.
Všiml jsem si, že tam je problém s kódováním dopisy s ASCII kódu pod
Mohu reprodukovat na své zkušební forum, tak jsem si opravit bez přístupu k forum:)
Pokusím se najít nejlepší řešení pro vás.
freddie3218
12-03-11, 06:02
Ano. Mohu potvrdit, že na své zkušební forum!
Jedná se o bug, tak jsem vBET muset přesunout toto téma do sekce hlášení chyb.
Všiml jsem si, že tam je problém s kódováním dopisy s ASCII kódu pod
Mohu reprodukovat na své zkušební forum, tak jsem si opravit bez přístupu k forum:)
Pokusím se najít nejlepší řešení pro vás.
Dobrou zprávou je, že jsem na to přišel sám. Špatnou zprávou je, že nemohu potvrdit, že toto řešení bude fungovat jako náhrada funkce ... jak to funguje pouze na mém fóru.
Bez ohledu na to, zde je nová funkce:
function vbet_encodeToSafeUTF8(&$string) {
$string = utf8_decode($string);
return $string;
}
Tato funkce převádí UTF-8 do ISO-8859-1
kamilkurczak
12-03-11, 13:31
Díky za dobrou zprávu. Budu testovat a potvrdit
kamilkurczak
13-03-11, 13:15
Dobrý den,
Vaše řešení není dobré v obecně. Proč? To je práce s dopisy s ASCII kód, pod 256 (převést a zobrazit dobře), ale dopisy s ASCII kódu přes 256 jsem se "?" znamení.
Takže musíme spojit naše dvě řešení v jednom;)
Příklad:
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;
}
tento řádek:
[\304-\337] definovat, než dopisy s ASCII kód, pod 256 nebude dekódovat moje funkce, ale pouze
utf8_decode
Jsem otestování still.I si není zcela jist, že vše funguje správně nyní.
Můžete vyzkoušet také!
freddie3218
14-03-11, 05:10
Pro mé účely, řešení funguje ... jak jsem jen překládat do dvou langauges ... Angličtina a francouzština. Oba jsou ISO-8859-1 (latin1) jazyky. Proto "utf_decode" funkce funguje dobře.
Nicméně, s globálním rozsahem z hlediska bude utf_decode funkce pravděpodobně nebude fungovat v jiných jazycích, mimo "latin1".
Nejsem moc vBulletin programátora. Nicméně, nabízím jeden návrh:
Možná, že pomocí "IF" může vyhovovat vašim účelům lépe, pokud vaše řešení nefunguje. V níže uvedeném příkladu by "translated_language_var" za cílový jazyk, přeložit do.
IE:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
Možná, že používáte něco podobného by se určitě způsobem, aby vše bezpečné ...??? Jsem si jistý, mohl snadno použít pseudo kód, a aby to fungovalo na vBulletin. :)
kamilkurczak
27-03-11, 22:30
vyřešen - budou zahrnuty do příští UVOLŇOVÁNÍ
Automatic Translations (Powered by Google, Microsoft®,
Yandex, SDL Language Cloud, IBM Watson and Apertium):
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.