1

Google Translation という Alfred のワークフローを利用して、いくつかのスクリプトを編集および追加しました。しかし、ポルトガル語またはフランス語から英語に翻訳すると、奇妙な文字が表示されました: pão --> paÌo.

PHPファイルを編集しました。ここ StackOverFlow で、すべての言語 (ラテン語、キリル文字など) の追加の特別な言語 (UTF8) のサポートを追加することについて、多くの検索を行いました。あらゆる方法を試しましたが、うまくいきません。

<?php
header('Content-Type: text/html; charset=utf-8');

function googleTranslate($request, $sourceLanguage, $targetLanguage)
{
    $url = 'http://translate.google.com.br/translate_a/t?client=p&text='.urlencode($request).'&hl=pt-BR&lr=lang_pt'.$sourceLanguage.'&tl='.$targetLanguage.'&multires=1&ssel=0&tsel=0&sc=1';

    $defaults = array(                                  CURLOPT_RETURNTRANSFER => true,                 CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => true
    );

    $ch  = curl_init();
    curl_setopt_array($ch, $defaults);
    $out = curl_exec($ch);
    $err = curl_error($ch);
    curl_close($ch);

    $result = '<?xml version="1.0"?><items>';

    $json = json_decode(utf8_encode($out));
    if (isset($json->dict)) {
        $googleResults = $json->dict[0]->entry;
        if (is_array($googleResults)) {
            foreach ($googleResults as $translatedData) {
                $result .= '<item uid="mtranslate" arg="'.$translatedData->word.'">';
                $result .= '<title>'.$translatedData->word.'</title>';
                $result .= '<subtitle>'.implode(', ', $translatedData->reverse_translation).'</subtitle>';
                $result .= '<icon>'.$targetLanguage.'.png</icon>';
                $result .= '</item>';
            }
        }
    } elseif (isset($json->sentences)) {
        foreach ($json->sentences as $sentence) {
            $result .= '<item uid="mtranslate" arg="'.$sentence->trans.'">';
            $result .= '<title>'.$sentence->trans.'</title>';
            $result .= '<subtitle>'.$sentence->orig.'</subtitle>';
            $result .= '<icon>'.$targetLanguage.'.png</icon>';
            $result .= '</item>';
        }
    } else {
        $result .= '<item uid="mtranslate">';
        $result .= '<title>No results found</title>';
        $result .= '</item>';
    }

    $result .= '</items>';
    echo $result;
}

// googleTranslate('Wohnmobil', 'de', 'en’, ‘pt’, ‘fr’);

?>

また、Alfred アプリのスクリプト エディター (Mac アプリ) に "echo" PHP スクリプトを追加しようとしました。

4

1 に答える 1

2

json_decode

PHP 5.4.0json_decode($array, JSON_UNESCAPED_UNICODE)で使用できます

PHP 5.3ユーザーの場合、この関数をUTF-8に使用できます。

function my_json_encode($arr)
{
    //convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding
   array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (0x80, 0xffff, 0, 0xffff), 'UTF-8'); });
   return mb_decode_numericentity(json_encode($arr), array (0x80, 0xffff, 0, 0xffff), 'UTF-8');

 }

元:

my_json_encode($newArray

于 2013-09-25T10:58:04.370 に答える