עזרה בפונקציית תרגום בPHP
-
שלום, מצורף פונקציה קטנה שכתבתי בPHP שמחזירה תרגום אוטומטי בעברית מגוגל למחרוזת טקסט, עם זיהוי שפה אוטומטי.
זה עובד נהדר, הבעייה היא שאם במחרוזת טקסט יש מילים בעברית, זה מחזיר איקסים.השאלה אם זה בעייה בקידוד, או שאין מה לעשות
אשמח לעזרה
תודה רבה<?php function translate($text) { global $mwa; $API_translate = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=he&dt=t&q='; $return = ''; $text = substr(urlencode($text), 0, 3000); $translate = url_get_contents($API_translate . $text); $text = json_decode($translate); foreach($text[0] AS $t) { $return .= $t[0]; } return $return; } function url_get_contents ($Url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $Url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); curl_close($ch); return $output; } header('Content-Type: text/html; charset=utf-8'); echo translate('how are you הכל בסדר'); פורסם במקור בפורום CODE613 ב07/12/2017 23:54 (+02:00)
-
תוודא שהקידוד של הקובץ PHP הוא UTF8 בלי BOM.
פורסם במקור בפורום CODE613 ב08/12/2017 01:12 (+02:00)
-
תודה
אכן זה בלי BOM, וכשאני עושה UTF8 DECODE זה עוד יותר גרועפורסם במקור בפורום CODE613 ב08/12/2017 10:05 (+02:00)
-
תנסה את זה
https://stackoverflow.com/a/18864883/1271037פורסם במקור בפורום CODE613 ב08/12/2017 10:23 (+02:00)
-
תודה
זה גם לא עובדפורסם במקור בפורום CODE613 ב08/12/2017 10:27 (+02:00)
-
Warning: iconv(): Charset parameter exceeds the maximum allowed length of 64 characters in /var/www/yoops/a.php on line 22 Warning: Invalid argument supplied for foreach() in /var/www/yoops/a.php on line 10 פורסם במקור בפורום CODE613 ב08/12/2017 10:38 (+02:00)
-
תעתיק לפה את מה שיוצא לך.
פורסם במקור בפורום CODE613 ב08/12/2017 11:51 (+02:00)
-
זה מה שעשיתי.. הנ"ל הוא מה שהשרת מחזיר לי
פורסם במקור בפורום CODE613 ב08/12/2017 11:52 (+02:00)
-
תעתיק לפה את מה שיוצא לך.
@JosephA
זה מה שעשיתי.. הנ"ל הוא מה שהשרת מחזיר לי
הוא מתכוון כנראה על האיקסים.
זה עובד נהדר, הבעייה היא שאם במחרוזת טקסט יש מילים בעברית, זה מחזיר איקסים.
פורסם במקור בפורום CODE613 ב08/12/2017 11:58 (+02:00)
-
איך אתה × × × × × × '× × × ×
פורסם במקור בפורום CODE613 ב08/12/2017 12:00 (+02:00)
-
זה קידוד UTF8 שהדפדפן מציג אותו כ ASCII.
כנראה שהוא לא מקבל את המסר מה header אין לי מושג למה.פורסם במקור בפורום CODE613 ב08/12/2017 12:05 (+02:00)
-
"איך אתה" זה גם חלק ממה שחוזר?
אם כן אז זה בעיה בשליחה שלך לגוגל.תעשה את זה
echo urlencode('how are you הכל בסדר');
תעדכן מה יוצא.
פורסם במקור בפורום CODE613 ב08/12/2017 12:35 (+02:00)
-
ככה אמור לצאת
http://sandbox.onlinephpfunctions.com/code/149ecc357f24297c7b4fbe94630162f7e9b3d975פורסם במקור בפורום CODE613 ב08/12/2017 12:39 (+02:00)
-
שום דבר לא עוזר.
הURLENCODE כבר כתוב בקוד, לא צריך לעשות אותו שוב
זה כל כך מוזר כי כשאני כותב בדפדפן ישירות את הURL זה כן מחזיר תשובה תקינה, אבל הפונקציה לא עובדתכתבתי שוב את הפונקציה, יותר קצר וברור
<?php function translate($text) { $API_translate = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=he&dt=t&q='; $url = $API_translate . urlencode($text); $translate = file_get_contents($url); $text = json_decode($translate); foreach($text[0] AS $t) { $return .= $t[0]; } return $return; } header('Content-Type: text/html; charset=utf-8'); echo translate(('how are you הכל בסדר')); פורסם במקור בפורום CODE613 ב10/12/2017 12:07 (+02:00)
-
כנראה שזה באמת בעייה בגוגל, גם בתוסף שלהם לכרום יש את הבעייה הזו, הוא לא מסוגל "לתרגם" עברית לעברית. אם מבקשים ממנו לתרגם טקסט שמורכב מעברית ואנגלית, למשל "how are you אני עייף", הוא לא מתרגם כלום. כנראה בגלל הבעייה הזו.
פורסם במקור בפורום CODE613 ב10/12/2017 12:33 (+02:00)
-
אין שום בעיה בגוגל. אצלי זה מחזיר:
[[["how are you אני עייף","how are you אני עייף",null,null,0]],null,"iw",null,null,null,1,null,[["iw"],null,[1],["iw"]]]
אכן לא מתרגם, אבל לא מחזיר איקסים.בקשו ממך לנסות את הפלט של הurlencode. מה היה קורה אם היית מנסה?
שים לפני הגישה פשוט
echo $url
ונראה את כל התשובות האם הבעיה בגוגל או בקידוד.פורסם במקור בפורום CODE613 ב10/12/2017 12:53 (+02:00)
-
תודה על העזרה הבלתי נילאת!!
הecho url מחזיר את זהזה תקין לגמרי
משום מה, בשלב מסוים של הPHP זה הופך לאיקסים..
פורסם במקור בפורום CODE613 ב10/12/2017 13:03 (+02:00)
13/31