スポンサーサイト

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    PHPList日本語化の実践

  • このエントリーを含むはてなブックマーク
  • Yahoo!ブックマークに登録

    回り道していましたが、PHPListです。

    こちらを参考にUTF-8化してみました。

    ちなみに環境はCentOS4.6標準に準じています。
    PHP、Mysql、Apacheはそれぞれ、ディストリビューションで配布されているものを
    そのまま、使用しています。

    PHPListは、2.11.3の開発版です。

    1.日本語関連ファイルのUTF-8変換



     ○変換手段は、iconvを用いて、単純に変換しました。


    #!/bin/sh
    for file in "$@"
    do
    cp $file temp
    iconv -o $file -f EUC-JP -t UTF-8 temp
    rm -f temp
    done


      
    ※特にエラー処理なども行っていないので、参考程度にご覧ください。

     ・texts/japanese.inc
     ・admin/help/ja/以下のファイル全て
     ・admin/info/ja/以下のファイル全て
     ・admin/lan/ja/以下のファイル全て
     ・admin/phpmailer/language/phpmailer.lang-ja.php

    ※lists/admin/lan/ja/template.phpが壊れているようです。
     私は、enからコピーしてきて凌ぎましたが、日本語にしているので、
     一通り完了したら公開します。


    2.UTF-8でDB作成



    プロンプトからでも、phpMyAdminなどでも問題ないと思います。
    ただし、UTF-8に文字コードをセットしてください。
    また、UTF-8にすることで、Latin-1では、1文字1byteですむところが、3byteに
    なるために、MySQLの1000byte制限に引っかかり、
    インストールスクリプトに問題が発生します。

    これは、forumでも話題が挙がっていましたが、私は、とりあえず、
    「lists/structure.php」を


    line70

    "name" => array("varchar(100) not null","Name of Dataitem"),


    "name" => array("varchar(50) not null","Name of Dataitem"),



    としました。

    3.各種ソース改修



    下記ファイルに関しては、こちらが十二分に解説してくださっていますので、
    ここではふれません。
    管理画面のエンコード設定も確認しておく必要があります。

    texts/japanese.inc
    config/config.php
    admin/phpmailer/class.phpmailer.php
    admin/class.phplistmailer.php

    しかし、ここで困ったことに、本文がうまく、iso-2022-jpになってくれません。
    いろいろソースを追いなおして、私は、PHPmailerを通して、メールを
    送信しようとしていたので、
    admin/phpmailer/class.phpmailer.php
    内 で、
    function MailSend($header, $body)
    では処理できていなかったようです。
    もう少し前の本文処理にかませようと考え、

    admin/class.phplistmailer.php内にて、下記のような変更を加えました。


    line100

    function CreateBody() {
    $body = parent::CreateBody();
    if ($this->message_type != 'plain') {
    foreach ($GLOBALS['plugins'] as $plugin) {
    $plreturn = $plugin->mimeWrap($this->messageid,$body,$this->header,$this->ContentTypeHeader,$this->destinationemail);
    if (is_array($plreturn) && sizeof($plreturn) == 3) {
    $this->header = $plreturn[0];
    $body = $plreturn[1];
    $this->ContentTypeHeader = $plreturn[2];
    }
    }
    }
    $body = mb_convert_encoding($body, $this->CharSet);
    //上記一行を追記しました
    return $body;
    }



    おそらく、もっと適切な配置もあると思いますが、現時点ではこれで通っているので、
    よしとします。

    ここがおかしい、もっとスマートな方法があるなどのご指摘はご遠慮なく、
    コメントください。

    とりあえず、今回はここまでにします。
    次回以降、私が日本語化した、template.phpや、上記変更を加えた
    tarballをもう少し確認した上で公開しようかと思います。

    そろそろ本格的にlimesurveyを触りたい。
    2.0系がcakePHPで実装されている様なので、今後扱いやすそう。。。
    スポンサーサイト

    theme : Linux
    genre : コンピュータ

    comment

    Secret

    ご案内
    google検索
    カスタム検索
    カテゴリ
    最新記事
    Amazon
    カテゴリー&RSS
    RSS新着情報

    plugin by F.B

    検索フォーム
    最近のコメント(コンパクト)
    データ取得中...
    リンク
    フリーエリア
    RSSリンクの表示
    カレンダー
    03 | 2017/04 | 05
    - - - - - - 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 - - - - - -
    ブックマーク
    Yahoo!ブックマークに登録
  • | このエントリーを含むはてなブックマーク
  • 月別アーカイブ
    最新トラックバック
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。