PDA

Zobacz pełną wersję: Rozwiązany Akcenty nie wyświetlają się prawidłowo ...



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

Używam vBulletin 4,08.

Używam vBET głównie do dwóch językach ... Angielskim i francuskim. Mam domyślny język forum ustawiony na angielski. Jednak, gdy francuski posty użytkownika, tłumaczenie wyświetlane poprawnie w języku angielskim. Jednak w języku francuskim akcenty nie są wyświetlane. Zamiast tego wyświetla tak:


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.

Powinno wyświetlić tak:


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

Moje forum jest skonfigurowana do wyświetlania obu językach, jak ISO-8859-1. Dlatego nie używam UTF-8

Również, po instrukcje instalacji bardzo blisko.

Jedyną modyfikacją zrobiłem do vBET jest to, że zmieniłem domyślne flagi za pomocą CSS-Sprite. Jednak patrzyłem na kod, i nic nie powinien mieć wpływu na sposób rzeczy są wyświetlane.

Czy muszę zmienić moją db na UTF-8, aby rozwiązać ten problem?

Wszelkie porady będą mile widziane. Dzięki. :)

freddie3218
08-03-11, 17:56
No cóż .... I wyłączone wszystkie inne wtyczki, i nadal mam ten sam problem. Wygląda na błąd w vBET

kamilkurczak
08-03-11, 19:35
witam, czy UTF-8 forum i bazy danych czy nie?
Jeśli nie - powinny Mam dla Ciebie rozwiązanie. Wil się przygotować to i tu napisać.

Jeśli możesz - proszę wklej tutaj adres url do wątku z tym problemem.
Dzięki

freddie3218
09-03-11, 00:15
witam, czy UTF-8 forum i bazy danych czy nie?
Jeśli nie - powinny Mam dla Ciebie rozwiązanie. Wil się przygotować to i tu napisać.

Jeśli możesz - proszę wklej tutaj adres url do wątku z tym problemem.
ThanksNo, nie używam UTF-8 forum lub bazy danych. Używam ISO-8859-1.

Widać problem żyć oglądania tego wątku:

1 dolar To jest test (http://kokoku.ca/forums/showthread.php?t=418)

Dzięki. :)

freddie3218
10-03-11, 01:05
Wszelkie wiadomości na temat tego, co jest przyczyną?

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

Jestem testowania go na moim forum testowym (w nie UTF) i nie mogę odtworzyć, ale możesz spróbować tego rozwiązania.
Mam coś dla ciebie:
1. otwarta, kopiowania i edycji tego pliku:
forum / root includes / vbenterprisetranslator_functions_utils.php
2. w tej funkcji znaleźć:

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. i komentarz wszystkie linie bez powrotu takie jak ten:

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. zapisać i sprawdzić!

to powinno działać tylko dla nowych postów. wszystkie posty istniejących należy edytować ręcznie.
I nie shure, że masz forum ISO, ale można go przetestować. Jeśli nie jest dobre - proszę zastąpić tych zmian bu stary plik

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

To był dobry spróbować. Jednak to nie działa.

Wyjście pokazuje teraz: ".. Ceci est un S'il testu vous plaà ® t ignorer wiadomość ce"

Poprawny wynik powinien być: "Ceci est un testu S'il vous plait ignorer wiadomość ce.."

Dlatego też wróciły.

Oto jedno zauważyłem:

Podczas wysyłania i edycji, to nie wyświetla się poprawnie. Jednak, jeśli naciśnij przycisk edytora WYSIWYG, aby przejść do "trybie podstawowym", to będzie ona poprawnie wyświetlane w edytorze WYSIWYG. Jednak, gdy próbuję go zapisać, to powróci do wyświetlania niepoprawnie ponownie. Wydaje się, że edytor WYSIWYG nie jest analizowanie rzeczy poprawnie przed zapisaniem jeśli używam vBET w języku obcym, lub gdy używam [lang =] tagi. Jednak, jeśli po zagranicznych wyrażenie bez użycia [lang = fr] tagi, to będzie wyświetlane poprawnie podczas zapisywania. Wydaje się więc, że vBET nie pozwala edytora WYSIWYG analizować poprawnie przed zapisaniem ... jeśli ma sensu.

kamilkurczak
10-03-11, 23:41
masz ten problem, gdy chcesz post przetłumaczone na stronę, czy nie? proszę opisać, co należy czynić, aby otrzymać takie same wyniki na moim forum.

freddie3218
11-03-11, 07:19
masz ten problem, gdy chcesz post przetłumaczone na stronę, czy nie? proszę opisać, co należy czynić, aby otrzymać takie same wyniki na moim forum.I testu nie wiem, czy można odtworzyć to na forum czy nie. Jednak to co się dzieje:

VBulletin w wersji 4.08
Mam dwóch językach na mojej stronie: angielskim i francuskim. I wyłączone wszystkie inne języki, i wszystkich innych flag.
Wszystkie angielskim i francuskim są tłumaczone na całym terenie poprawnie, z odpowiednim akcentem. Jedyny raz akcenty nie są wyświetlane poprawnie, jeśli ktoś korzysta z języka francuskiego i posty w języku francuskim ... o "języka francuskiego" wybrane w profilu użytkownika. W tym przypadku vBET będzie przypisać odpowiednie BBcode automatycznie po post. IE: "[lang = fr]" Jednakże, jak tylko przedstawić swoje stanowiska, akcenty swoje stanowisko nie pojawi się prawidłowo. Jeśli naciśnij "post Edytuj", będzie to ich stanowisko w zaawansowany edytor WYSIWYG wyświetlane nieprawidłowo (mam wszystkie rachunki skonfigurowany do korzystania z edytora WYSIWYG, nawet w szybkiej odpowiedzi, domyślnie tak, że wszyscy użytkownicy mogą dołączać zdjęcia z ich na dysku twardym). Jeśli jednak przełączyć "redaktor przełącznik mode" tam iz powrotem, będzie to ich po wyświetlane prawidłowo. Jednak, gdy próbują zapisać zmiany w stanowisku, będzie po raz kolejny wyświetlacz nieprawidłowo podczas zapisywania ich post.

Ten problem dzieje się tylko wtedy, gdy użytkownik korzysta z "języka francuskiego" w swoich ustawieniach profilu użytkownika i umieszczanie w języku francuskim ... dzięki czemu vBET dodać [lang = fr] do postu automatycznie.

Mój język domyślny forum jest język angielski.

Jeśli chcesz się rozejrzeć na moim forum ... pm do mnie, a ja prześle niezbędne informacje do sprawdzenia mojej konfiguracji panelu administratora.

Mam nadzieję, że te informacje są pomocne.

Dzięki.

kamilkurczak
11-03-11, 10:06
Tak. Mogę potwierdzić, że na moim forum test!
Jest to vBET błąd, więc muszę przenieść tego wątku w sekcji raportowania błędów.

Zauważyłem, że nie jest to kwestia kodowania z listów z kodem ASCII pod

Mogę go odtworzyć na moim forum badania, tak mogę to naprawić bez dostępu do forum:)

Postaram się znaleźć najlepsze rozwiązanie dla Ciebie.

freddie3218
12-03-11, 06:02
Tak. Mogę potwierdzić, że na moim forum test!
Jest to vBET błąd, więc muszę przenieść tego wątku w sekcji raportowania błędów.

Zauważyłem, że nie jest to kwestia kodowania z listów z kodem ASCII pod

Mogę go odtworzyć na moim forum badania, tak mogę to naprawić bez dostępu do forum:)

Postaram się znaleźć najlepsze rozwiązanie dla Ciebie.
No dobra wiadomość jest taka, że problem został rozwiązany siebie. Złą wiadomością jest to, że nie mogę potwierdzić, że rozwiązanie to będzie działać w funkcji wymiany ... jak to działa tylko na moim forum.

Niezależnie od tego, tutaj jest nowa funkcja:



function vbet_encodeToSafeUTF8(&$string) {

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


Funkcja ta zamienia UTF-8 do ISO-8859-1

kamilkurczak
12-03-11, 13:31
dziękuję za tę dobrą nowinę. Będę go przetestować i potwierdzić

kamilkurczak
13-03-11, 13:15
hello,
Twoje rozwiązanie nie jest dobre w ogóle. Dlaczego? Jest to praca z listów z kodem ASCII pod 256 (przeliczane i wystawiane dobre), ale listów z kodem ASCII powyżej 256 mam "?" znaków.

Tak więc musimy połączyć nasze dwa rozwiązania w jednym;)

przykład:

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

tej linii:
[\304-\337] zdefiniować niż litery z kodu ASCII pod 256 nie będą dekodowane przez mojej funkcji, ale tylko przez
utf8_decode

Jestem testowania go still.I nie jestem całkowicie pewien, że wszystko działa poprawnie teraz.
Można go przetestować też!

freddie3218
14-03-11, 05:10
Dla moich celów, rozwiązanie działa dobrze ... jak mam tylko tłumaczenia na dwie langauges ... Angielskim i francuskim. Oba są ISO-8859-1 (latin1) językach. Dlatego "utf_decode" funkcja działa poprawnie.

Jednak w zasięg globalny w widoku, funkcja utf_decode prawdopodobnie nie będzie pracy dla innych języków poza "latin1".

Nie jestem dużo programista vbulletin. Jednak ja będę oferują jedną sugestię:

Być może za pomocą "if" może własnych celów lepiej, jeśli rozwiązanie nie działa. W poniższym przykładzie, "translated_language_var" będzie język docelowy tłumaczenia na.

IE:


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

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Być może za pomocą czegoś takiego byłaby pewna metoda, aby wszystko bezpieczne ...??? Jestem pewien, że można łatwo korzystać z tego pseudo kodu i uczynić go pracy w vbulletin. :)

kamilkurczak
27-03-11, 22:30
rozwiązany - będzie w następnej dopuszczeniu

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