PDA

View Full Version: Giải quyết Dấu không hiển thị chính xác ...



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

Tôi đang sử dụng vbulletin 4,08.

Tôi sử dụng các vbet chủ yếu là hai ngôn ngữ ... Tiếng Anh và tiếng Pháp. Tôi có ngôn ngữ mặc định diễn đàn tiếng Anh. Tuy nhiên, bất cứ khi nào một bài viết Pháp, bản dịch sẽ hiển thị một cách chính xác bằng tiếng Anh. Tuy nhiên, bằng tiếng Pháp giọng không hiển thị. Thay vào đó, nó sẽ hiển thị như thế này:


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.

Nó sẽ hiển thị như thế này:


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

Diễn đàn của tôi là thiết lập để hiển thị cả hai ngôn ngữ là ISO-8859-1. Vì vậy, tôi không sử dụng UTF-8

Ngoài ra, tôi theo các hướng dẫn cài đặt rất chặt chẽ.

Sự thay đổi duy nhất tôi thực hiện để vBet là tôi đã thay đổi những lá cờ mặc định sử dụng CSS-Sprite. Tuy nhiên, tôi nhìn vào mã, và không có gì tôi đã làm nên thực hiện cách mà mọi thứ đang được hiển thị.

Tôi có để chuyển đổi db của tôi để UTF-8 để giải quyết vấn đề này?

Tư vấn bất kỳ sẽ được đánh giá cao. Thanks. :)

freddie3218
08-03-11, 17:56
Vâng .... Tôi bị vô hiệu hóa tất cả các plugin khác, và tôi vẫn còn có cùng một vấn đề. Có vẻ như một lỗi trong vbet

kamilkurczak
08-03-11, 19:35
hello, bạn sử dụng UTF-8 diễn đàn và cơ sở dữ liệu hay không?
Nếu không - tôi cần phải có một giải pháp cho bạn. Tôi wil chuẩn bị và viết ở đây.

Nếu bạn có thể hãy dán ở đây một địa chỉ các chủ đề với vấn đề này.
Thanks

freddie3218
09-03-11, 00:15
hello, bạn sử dụng UTF-8 diễn đàn và cơ sở dữ liệu hay không?
Nếu không - tôi cần phải có một giải pháp cho bạn. Tôi wil chuẩn bị và viết ở đây.

Nếu bạn có thể hãy dán ở đây một địa chỉ các chủ đề với vấn đề này.
ThanksNo, tôi không sử dụng UTF-8 diễn đàn hoặc cơ sở dữ liệu. Tôi sử dụng ISO-8859-1.

Bạn có thể thấy vấn đề sống bằng cách xem chủ đề này:

1 này là một thử nghiệm (http://kokoku.ca/forums/showthread.php?t=418)

Thanks. :)

freddie3218
10-03-11, 01:05
Mọi tin tức về những gì gây ra nó?

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

Tôi đang thử nghiệm nó trên diễn đàn thử nghiệm của tôi (không UTF) và tôi có thể không sao chép nó nhưng bạn có thể thử giải pháp này.
Tôi có một cái gì đó cho bạn:
1. mở, tạo một bản sao và chỉnh sửa tập tin này:
forum root / / vbenterprisetranslator_functions_utils.php
2. trong chức năng này tìm thấy:

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. và bình luận tất cả các dòng mà không có trở lại như thế này:

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. lưu và thử nghiệm!

nên làm việc này chỉ có những bài viết mới. tất cả các bài viết hiện tại, bạn nên chỉnh sửa bằng tay.
Tôi không shure rằng bạn có một diễn đàn về ISO nhưng bạn có thể thử nghiệm nó. Nếu không tốt - xin vui lòng ghi đè lên những thay đổi bu tập tin cũ

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

Đó là một cố gắng tốt. Tuy nhiên, nó không làm việc.

Đầu ra hiện nay cho thấy: "CECI est un kiểm tra S'il vous plaà ® t ignorer ce tin nhắn"

Sản lượng chính xác nên được: "CECI est un kiểm tra S'il vous xếp lại ignorer ce tin nhắn."

Vì vậy, tôi hoàn nguyên lại.

Dưới đây là một trong những điều tôi nhận thấy:

Khi gửi bài và chỉnh sửa, nó không hiển thị một cách chính xác. Tuy nhiên, nếu tôi nhấn nút trình soạn thảo WYSIWYG để đi vào "chế độ cơ bản", sau đó nó sẽ hiển thị một cách chính xác trong trình soạn thảo WYSIWYG. Tuy nhiên, khi tôi cố gắng để lưu nó, nó lại cho thấy không chính xác một lần nữa. Có vẻ như là trình soạn thảo WYSIWYG không phải là phân tích mọi thứ một cách chính xác trước khi tiết kiệm khi tôi đang sử dụng VBET bằng tiếng nước ngoài, hoặc khi tôi đang sử dụng [lang =]. Tuy nhiên, nếu tôi có một cụm từ nước ngoài mà không cần sử dụng lang = fr], sau đó nó sẽ hiển thị một cách chính xác khi lưu. Vì vậy, có vẻ như rằng VBET không cho phép trình soạn thảo WYSIWYG để phân tích một cách chính xác trước khi lưu ... nếu mà làm cho bất kỳ ý nghĩa.

kamilkurczak
10-03-11, 23:41
bạn có vấn đề này khi bạn muốn đăng bài trên trang dịch hay không? xin vui lòng mô tả những gì tôi nên làm gì để có kết quả tương tự trên diễn đàn thử nghiệm của tôi.

freddie3218
11-03-11, 07:19
bạn có vấn đề này khi bạn muốn đăng bài trên trang dịch hay không? xin vui lòng mô tả những gì tôi nên làm gì để có kết quả tương tự trên các forum.I thử nghiệm của tôi không biết nếu bạn có thể tái sản xuất này trên diễn đàn của bạn hay không. Tuy nhiên, đây là những gì sẽ xảy ra:

VBulletin phiên bản 4,08
Tôi có hai ngôn ngữ trên trang web của tôi: tiếng Anh và tiếng Pháp. Tôi bị vô hiệu hóa tất cả các ngôn ngữ khác, và tất cả các lá cờ khác.
Tất cả tiếng Anh và tiếng Pháp được dịch toàn bộ trang web đúng cách, với điểm nhấn thích hợp. Thời gian chỉ có các điểm nhấn không hiển thị đúng là nếu một người nào đó sử dụng tiếng Pháp và các bài viết bằng tiếng Pháp ... có "tiếng Pháp" được lựa chọn trong hồ sơ người dùng của họ. Trong trường hợp này, VBET sẽ gán thẻ BBcode tự động khi họ đăng. IE: "lang = fr]" Tuy nhiên, một khi họ gửi bài viết của họ, các điểm nhấn trên bài viết của họ sẽ không xuất hiện đúng cách. Nếu họ bấm nút "chỉnh sửa bài", họ sẽ thấy bài viết của họ trong trình soạn thảo WYSIWYG tiên tiến hiển thị không đúng (tôi có tất cả các tài khoản thiết lập để sử dụng trình soạn thảo WYSIWYG, ngay cả trả lời nhanh chóng, theo mặc định để tất cả người dùng có thể đính kèm hình ảnh từ ổ cứng). Tuy nhiên, nếu chuyển đổi "chuyển đổi chế độ biên tập viên" nút trở lại và ra, họ sẽ thấy bài viết của họ xuất hiện đúng cách. Tuy nhiên, khi họ cố gắng để lưu các thay đổi để bài viết của họ, một lần nữa sẽ hiển thị không đúng khi họ tiết kiệm bài viết của họ.

Vấn đề này chỉ xảy ra khi người dùng đang sử dụng "NGÔN NGỮ PHÁP" trong thiết lập hồ sơ người dùng của họ và gửi bài bằng tiếng Pháp ... do đó làm cho vbet thêm lang = fr] để gửi tự động.

Diễn đàn về ngôn ngữ mặc định của tôi là tiếng Anh.

Nếu bạn cần dạo quanh một vòng trên diễn đàn của tôi ... pm tôi, và tôi sẽ gửi cho bạn các thông tin cần thiết để kiểm tra thiết lập bảng quản trị của tôi.

Tôi hy vọng thông tin này là hữu ích.

Thanks.

kamilkurczak
11-03-11, 10:06
Vâng. Tôi có thể xác nhận nó trên diễn đàn thử nghiệm của tôi!
Đây là một lỗi vBET vì vậy tôi cần di chuyển chủ đề này vào phần báo cáo lỗi.

Tôi nhận thấy rằng có một vấn đề mã hóa với các chữ cái với mã ASCII theo một

Tôi có thể tái tạo nó trên diễn đàn thử nghiệm của tôi vì vậy tôi có thể sửa chữa nó mà không cần truy cập vào diễn đàn của bạn:)

Tôi sẽ cố gắng tìm ra giải pháp tốt nhất cho bạn.

freddie3218
12-03-11, 06:02
Vâng. Tôi có thể xác nhận nó trên diễn đàn thử nghiệm của tôi!
Đây là một lỗi vBET vì vậy tôi cần di chuyển chủ đề này vào phần báo cáo lỗi.

Tôi nhận thấy rằng có một vấn đề mã hóa với các chữ cái với mã ASCII theo một

Tôi có thể tái tạo nó trên diễn đàn thử nghiệm của tôi vì vậy tôi có thể sửa chữa nó mà không cần truy cập vào diễn đàn của bạn:)

Tôi sẽ cố gắng tìm ra giải pháp tốt nhất cho bạn.
Vâng tin tốt là tôi cố định các vấn đề bản thân mình. Tin xấu là tôi không thể xác nhận rằng giải pháp này sẽ làm việc như một chức năng thay thế ... vì nó chỉ hoạt động trên các diễn đàn của tôi.

Bất kể, đây là chức năng mới:



function vbet_encodeToSafeUTF8(&$string) {

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


Chức năng này chuyển đổi UTF-8 ISO-8859-1

kamilkurczak
12-03-11, 13:31
nhờ tin tốt này. Tôi sẽ kiểm tra và xác nhận

kamilkurczak
13-03-11, 13:15
hello,
Giải pháp của bạn là không tốt nói chung. Tại sao? Điều này đang làm việc với các chữ cái với mã ASCII dưới 256 (chuyển đổi và hiển thị tốt) nhưng thư với mã ASCII hơn 256 tôi có "?" dấu hiệu.

Vì vậy, Chúng ta cần kết hợp hai giải pháp của chúng tôi trong một;)

Ví dụ:

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

dòng này:
[\304-\337] xác định hơn so với các chữ cái với mã ASCII dưới 256 sẽ không được giải mã bởi chức năng của tôi nhưng chỉ bằng cách
utf8_decode

Tôi đang thử nghiệm nó still.I không hoàn toàn chắc chắn rằng tất cả mọi thứ hoạt động chính xác.
Bạn có thể kiểm tra nó quá!

freddie3218
14-03-11, 05:10
Đối với mục đích của tôi, giải pháp hoạt động tốt ... như tôi là chỉ dịch hai langauges ... Tiếng Anh và tiếng Pháp. Cả hai đều là ISO-8859-1 (latin1) ngôn ngữ. Do đó, chức năng "utf_decode" hoạt động tốt.

Tuy nhiên, với một phạm vi toàn cầu trong, chức năng utf_decode có thể sẽ không làm việc cho các ngôn ngữ khác ngoài "latin1".

Tôi không có nhiều của một lập trình vbulletin. Tuy nhiên, tôi sẽ cung cấp một gợi ý:

Có lẽ bằng cách sử dụng một "Nếu" tuyên bố có thể phù hợp với mục đích của bạn tốt hơn nếu giải pháp của bạn không làm việc. Trong ví dụ dưới đây, "translated_language_var" sẽ là ngôn ngữ đích để dịch vào.

IE:


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

if (in_array(translated_language_var,$latin1)){

$string = utf_decode($string);

}else{

original solution;
}

return $string;

Có lẽ bằng cách sử dụng một cái gì đó như thế này sẽ là một phương pháp chắc chắn để giữ tất cả mọi thứ an toàn ...??? Tôi chắc chắn rằng bạn có thể dễ dàng sử dụng mã giả và làm cho nó làm việc cho vbulletin. :)

kamilkurczak
27-03-11, 22:30
giải quyết - sẽ được bao gồm trong relase tiếp theo

Automatic Translations (Powered by Google, Microsoft®, Yandex, SDL Language Cloud, IBM Watson and Apertium):
AfrikaansAlbanianArabicBelarusianBulgarianCatalanChineseCroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTaiwaneseThaiTurkishUkrainianVietnameseWelshYiddish
Translations made by vBET Translator 4.9.99