フルバージョンを見る: 解決する アクセントが正しく表示されない...
freddie3218
07-03-11, 16:09
こんにちは。
私はvbulletin 4.08を使用しています。
私は主に二つの言語のためvbetを使用して...英語とフランス語。私は英語に設定されてフォーラムのデフォルトの言語を持っている。しかし、いつでもフランスのユーザの投稿、翻訳は、英語で正しく表示されます。しかし、フランス語のアクサンなどは表示されません。その代わりに、それは次のように表示されます。
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.
それは次のように表示されるはずです。
Dans quelle langue vous allez écrire vos messages. Forum traduira automatiquement vos messages à d'autres utilisateurs langues.
私のフォーラムは、ISO - 8859 - 1として両方の言語を表示するように設定されています。したがって、私はUTF - 8を使用していません
また、私は非常に密接にインストール手順に従った。
私がvBetに加えた唯一の変更は、私はCSSスプライトを使用して既定のフラグを変更したことです。しかし、私はコードを見て、と私は何も物事が表示されていること方法には影響ありません。
私はこの問題を解決するためにUTF - 8に私のDBを変換する必要がありますか?
何かアドバイスが高く評価されます。おかげ。 :)
freddie3218
08-03-11, 17:56
よく....私は他のすべてのプラグインを無効にし、私はまだ同じ問題を抱えている。 vbetのバグのようになります。
kamilkurczak
08-03-11, 19:35
こんにちは、あなたはUTF - 8のフォーラムとデータベースを使用したりしない?
されていない場合は - 私はあなたのためのソリューションが必要です。私はそれを準備し、ここに書き込みウィル。
可能であれば - この問題でスレッドにここのURLを貼り付けてください。
感謝
freddie3218
09-03-11, 00:15
こんにちは、あなたはUTF - 8のフォーラムとデータベースを使用したりしない?
されていない場合は - 私はあなたのためのソリューションが必要です。私はそれを準備し、ここに書き込みウィル。
可能であれば - この問題でスレッドにここのURLを貼り付けてください。
ThanksNoは、私はUTF - 8のフォーラムまたはデータベースを使用しないでください。私はISO - 8859 - 1を使用してください。
あなたは問題がこのスレッドを表示することによって生きて見ることができます。
1ドルこれは、テスト(http://kokoku.ca/forums/showthread.php?t=418)です。
おかげ。 :)
freddie3218
10-03-11, 01:05
それを引き起こしているものに何かニュース?
kamilkurczak
10-03-11, 10:04
こんにちは、
私は私のテストのフォーラムでそれをテストしています(UTFしないで)と私はそれを再現することはできませんが、この解決策を試すことができます。
私はあなたのために何かを持っている。
1。コピーを作成し、このファイルを編集し、開きます。
フォーラムのルートは、/ / vbenterprisetranslator_functions_utils.php含まれています
2。この関数で見つける:
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。とこのようなリターンなしですべての行をコメントアウトします。
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。保存し、テスト!
これは、新しい記事のためにのみ動作するはずです。すべての既存の投稿には、手動で編集する必要があります。
私は、ISOのフォーラムを持っていることをshureのではないが、それをテストすることができます。良いではない場合 - これらの変更部の古いファイルを上書きしてください
freddie3218
10-03-11, 15:30
こんにちは、
それは良い試みだった。しかし、それは動作しません。
出力は現在を示しています。"CECI EST UNテストS'ilランデブーplaà ® T ignorer CEのメッセージを。。"
正しい出力は次のようになります。"CECI EST UNテストS'ilランデブー三つ編みignorer CEのメッセージ。。"
したがって、私は戻りました。
ここに私が気づいたことが一つです。
投稿や編集の際には、正しく表示されません。しかし、私は"ベーシックモード"に入るためにWYSIWYGエディタのボタンを押せば、それはWYSIWYGエディタに正しく表示されます。しかし、私はそれを保存しようとすると、それは間違って再び表示に戻ります。それは、WYSIWYGエディタは、私が外国語でVBETを使用するときに保存、または私は[LANG =]タグを使用するときに前に正しく物事を解析していないようです。私は[LANG = FR]タグを使用せずに外国の語句を投稿した場合保存するときしかし、、それが正しく表示されます。だから、VBETはWYSIWYGエディタを保存する前に正しく解析できるようにされていないようです...どんな意味があれば。
kamilkurczak
10-03-11, 23:41
あなたが翻訳されたページかどうかに掲示を希望されるときには、この問題がありますか?私は私のテストのフォーラムで同じ結果を持っている何をすべきかを記述してください。
freddie3218
11-03-11, 07:19
あなたが翻訳されたページかどうかに掲示を希望されるときには、この問題がありますか?私はあなたのフォーラムかどうかでこれを再現できるかどうかわからない私のテストのforum.I上で同じ結果を持っている何をすべきかを記述してください。しかし、これは何が起こるかです:
Vbulletinバージョン4.08
英語とフランス語:私は自分のサイトで二つの言語を持っている。私は他のすべての言語、および他のすべてのフラグを無効にする。
すべて英語とフランス語は、適切なアクセントで、適切にサイト全体で変換されます。誰かがフランス語とフランス語でポストを使用している場合、アクセントが正しく表示されないだけです...自分のユーザープロファイルで選択した"フランス語"を有する。彼らが投稿するときこの場合、VBETは自動的に適切なBBCodeのタグが割り当てられます。 IE:"[LANG = FR]"しかし、かつて彼らが記事を投稿、その投稿のアクセントが正しく表示されません。彼らは"編集後"ボタンを押すと、彼らは(私はすべてのユーザーがから画像を添付できるように、デフォルトでは、さらに迅速な応答では、WYSIWYGエディタを使用するように設定されているすべてのアカウントを持って正しく表示高度なWYSIWYGエディタでその記事が表示されます。彼らのハードドライブ)。彼らは前後に"スイッチ編集モード"ボタンを切り替える場合は、、彼らは彼らのポストが適切に表示されますが表示されます。まだ、彼らはポストへの変更を保存しようとすると、それは再び彼らの投稿を保存するときに不適切に表示されます。
ユーザーが自分のユーザープロファイルの設定で"フランス語を"使用し、フランス語の言語で投稿されている場合、この問題にのみ発生します...こうしてvbetが自動的にポストする[LANG = FR]を追加作成。
私のフォーラムのデフォルト言語は英語です。
あなたは私のフォーラムの周りに見ていく必要がある場合...午後私、そして私は私のadminのパネルのセットアップをチェックアウトするためにあなたに必要な情報をお送りします。
私は、この情報はお役に立ちましたか願っています。
おかげ。
kamilkurczak
11-03-11, 10:06
はい。私は私のテストのフォーラムでそれを確認することができます!
これは、私はバグ報告のセクションにこのスレッドを移動する必要があるので、vBETバグです。
私はAの下でASCIIコードを持つ文字とエンコーディングの問題があることに気づいた
私はあなたのフォーラムにアクセスせずに、それを修正できるように私は私のテストのフォーラムでそれを再現することができます。)
私はあなたのために最善の解決方法を見つけようとします。
freddie3218
12-03-11, 06:02
はい。私は私のテストのフォーラムでそれを確認することができます!
これは、私はバグ報告のセクションにこのスレッドを移動する必要があるので、vBETバグです。
私はAの下でASCIIコードを持つ文字とエンコーディングの問題があることに気づいた
私はあなたのフォーラムにアクセスせずに、それを修正できるように私は私のテストのフォーラムでそれを再現することができます。)
私はあなたのために最善の解決方法を見つけようとします。
よく良いニュースは、私が問題を自分で修正されたということです。悪いニュースは、私はこのソリューションは、交換用の関数として動作することを確認できないことです...それだけで私のフォーラムで動作として。
関係なく、ここで新しい関数は次のとおりです。
function vbet_encodeToSafeUTF8(&$string) {
$string = utf8_decode($string);
return $string;
}
この関数は、ISO - 8859 - 1にUTF - 8に変換
kamilkurczak
12-03-11, 13:31
この朗報に感謝。私はそれをテストして確認される
kamilkurczak
13-03-11, 13:15
こんにちは、
ソリューションは、一般的に良くありません。なぜ?これは、256(変換され、良好な表示)でASCIIコードを持つ文字で動作していますが、ASCIIコードを持つ文字は、256以上の私が持っている"?"兆し。
だから我々は1つで私たちの2つのソリューションを組み合わせる必要がある。)
例:
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;
}
この行:
[\304-\337] 256でASCIIコードを持つ文字も定義は私の関数でだけではデコードされる
utf8_decode
私はそれがstill.Iすべてが正しく動作することを全くわからないテストしています。
あなたもそれをテストすることができます!
freddie3218
14-03-11, 05:10
私の目的のために、ソリューションが正常に動作します...私は2つだけlangaugesに翻訳していますように...英語とフランス語。両方とも、ISO - 8859 - 1(latin1の)言語です。したがって、"utf_decode"機能が正常に動作します。
しかし、ビュー内のグローバルスコープで、utf_decodeの機能は、おそらく"latin1"の外の他の言語では動作しません。
私はvbulletinのプログラマの多くではない。しかし、私は1つの提案を提供します。
あなたのソリューションが動作しない場合は、おそらく使用して、"if"ステートメントは、よりよい目的に合わない場合があります。以下の例では、"translated_language_varは"に変換する先の言語になります。
IE:
$latin1 = array(English,French,Spanish,Italian....etc);
if (in_array(translated_language_var,$latin1)){
$string = utf_decode($string);
}else{
original solution;
}
return $string;
おそらく、このようなものを使用すると、すべての安全を守るために確実な方法だろう...???私はあなたが簡単にこの擬似コードを使用して、vbulletinのために動作させることができるはずだ。 :)
kamilkurczak
27-03-11, 22:30
解決 - 次relaseに含まれます。
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.