タグ: WORDPRESS
WORDPRESSで制作したサイトを多言語対応にする-その1-
マルチリンガルのやり方は、大きく分けて2通り。
日本語で書いたエントリーを自動翻訳させるパターンが、その1つ。
でも、これだと、変な翻訳になってもノーサポート。なので、コーポレートサイトなどには適さない。
もうひとつが、エントリー、それぞれが、多言語で記述できるというもの。
この場合は、翻訳自体は、自分でやらないといけないけど、エントリーごとに、対応言語の有無を選べたり、まとめられる。こっちのほうが、使い勝手があるかな?
とりあえず、実験。
今回は、「qTranslate」というプラグインを使用して、管理画面のエントリーフォームをタブで切り替えて、それぞれの言語のエントリーを記述し、フロントページからは、言語切り替えリンクボタンで、表示を切り替えられるようにしようと思う。
まずは、WORDPRESSのプラグインディレクトリから、qTranslateをダウンロードして(http://wordpress.org/extend/plugins/qtranslate/)FTPでアップロードするか、WPの管理画面のプラグインメニューから検索して、ブログに取り入れる。
qTranslateプラグインを有効にしたら、プラグインの管理メニューから設定を行う。
設定→言語設定が、qTranslateの設定項目になる。先にプラグインを有効化した時点で、WPの管理画面は、一旦英語表記になると思うので、Setting→Language、ですね。
Language Code: ja
Flag: jp.png
Name: Japanese
Locale: ja_JP
Date Format: ※特にフォーマットを指定する場合はここも入力
Time Format:※特にフォーマットを指定する場合はここも入力
Not Available Message: Sorry, this entry is only available in %LANG:, : and %.
Default LanguageをJapaneseにする。
その他利用する言語を「enable」、使用しない言語は、「disable」に。
qTranslateは、そのままだと、日本語のエンコードをeuc-jpに解釈してしまい、設定によっては文字化けなどが起こる可能性があるため、言語ファイルを用意する。
/wp-content/languagesの中の、「ja.mo」ファイルをコピーして、「ja_JP.mo」という名称で保存。(「ja.mo」は、そのまま残す。)
これで、だいたいOK。
今度は、フロントページで、ユーザーが閲覧する表示言語を選択できるようにする。
ヘッダーやindex.phpテンプレートの、言語選択リンクボタンを表示させる適当な場所に下記のコードを埋め込む。ヘッダーのglobal_navi取得コードの前に入れるとよい。
<?php echo qtrans_generateLanguageSelectCode(‘both’); ?>
国旗のマークアイコンを表示させる場合は(‘image’)、テキストで「日本語」「ENGLISH」などと表示させる場合は(‘text’)、両方表示は(‘both’)を使用する。
以上。
もし、文字化けなどのエラーが出たり、詳しい設定で躓いた場合は、下記サイトが参考になりマスヨ。
http://formula1.gimlet301515.com/WordPress/?p=407
http://saqoosha.net/2009/01/06/1672/
そのほか、自動翻訳などを使いたい場合は、こういうプラグインもあり。
使えるWORDPRESSのテーマ&プラグイン
DESIGN WORKERさんで、よさげな記事を発見したので、あげあげ♪
- WordPressで使えるプラグインを9つ
http://www.designwalker.com/2007/07/wordpress-plugin.html - WordPress便利なプラグイン30選
http://www.designwalker.com/2009/01/wp-plugins.html - 無料のWordpressテーマ100選
http://www.designwalker.com/2008/12/wordpress100.html
WORDPRESSで登録メール等が届かない・・・対応
WORDPRESSでは、新しいユーザーが登録された場合やお問い合わせフォームプラグインなどの設置で、自動的にメールが届く仕組みがある。
・・・はずなのだが、このメールが一向に届かない。
原因は、inetd。
およそのサーバにですね、inetd(※inetd は、FTP、POP3、telnet といったインターネットサービスが使うポート番号を(指定されて)監視する。監視対象のポートにTCPパケットあるいはUDPパケットが届くと、inetd は対応するサーバプログラムを起動し、コネクションを制御させる。by wikipedia)というのが、走っているわけなんですが、このinetdが、メール送信の時に、from情報もしているようで、WORDPRESSのデフォルトのまま設定ではこの監視に引っかかってしまうので、メールを受け取れない。
どういうことかというと。
WORDPRESSは、通知メールの送信に、wordpress@あなたのサイト名のアドレスでメールを送信します。このメールアドレスが、サーバ内に実在していれば、問題がないのだが、実在していないメールアドレスからの送信は、inetdの監視に引っかかってしまう。
て、おいおい。。。
最初からwordpress@domainなんてメアド誰がつくっとるねん;
とかツッコんでしまう。
よって、主な対応方法は、2つかと。。。
- 上記、wordpress@domainというメアドを実際に作ってWPの管理アドレスに設定する。
- または、このメアドをサーバに実在している実際の運用アドレスに変更する。
ま、たいてい、2ですな。
やり方。
/wp-includes/pluggable.php を開いて、L354あたりの、
$from_email = ‘wordpress@’ . $sitename;
を、(1)
$from_email = ‘あなたのめあど@domain‘;
か(2)
$from_email = ‘あなたのめあど@‘. $sitename;
に変更。
ただし、(2)の方法で変更する場合、wordpressで送信されるメールアドレスは、wwwのサブドメインは削除されることに留意すること。(→つまり、ドメインが、www.domain.comでも@から後ろは、domain.comにしかなりませんよ、でも、sub.domain.comだったら、そのままですよ、ということです。まあ、これは普通メアド作るときにも同じようなルールになるので、問題ないかと思うのですが・・・)
こういうところって結構悩みますね。
ちなみに、メアドチェックは、サーバー内で掛かりますよ。他のサービスで持ってるメアドで運用しようとしている場合は、要注意です。
J. BTON ‘s Recent Posts mu-plugin for WordPress MU ver.2
[JAPANESE]
Download the code, and FTP-upload the file to /wp-ontent/mu-plugin/. It will work as soon as file uploaded.
**FEATURE**
Parameter explanations
$how_many: how many recent posts are being displayed
$how_long: time frame to choose recent posts from (in days)
$cate: category ID to be selected
$limit: how many posts should be displayed from each category
$titleOnly: true (only title of post is displayed) OR false (title of post and name of blog are displayed)
$begin_wrap: customise the start html code to adapt to different themes
$optmask: bitmask for various display options (default: 255)
DISPLAY OPTIONS BITMASK
1; // gravatar
2; // date
4; // author name
8; // comment count
16; // blog name
32; // post name
64; // post excerpt
128; // excerpt capitalization
$exc_size: size of excerpt in words (default: 30)
$end_wrap: customise the end html code to adapt to different themesSample call:
1)You can edit the palameter in this plugin code L76,
function ahp_recent_posts($how_many=9, $how_long=30, $cate=5, $limit=3, $titleOnly=false, $optmask=255, $exc_size=30, $begin_wrap='<li class=”pageposts_list”>’, $end_wrap='</li>’) {
and call the function in your template file like this…
<ul><?php bton_recent_posts(); ?></ul>
2)If you want to call the parameter in your each code of the template,
change L75 –> delate ‘//’ from this code.
function ahp_recent_posts($how_many, $how_long, $cate, $limit, $titleOnly, $optmask, $exc_size, $begin_wrap, $end_wrap) {
and coment out L76.
//function ahp_recent_posts($how_many=9, $how_long=30, $cate=5, $limit=3, $titleOnly=false, $optmask=255, $exc_size=30, $begin_wrap='<li class=”pageposts_list”>’, $end_wrap='</li>’) {
So, you can set each parameter in your template
bton_recent_posts(9, 30, 5, 3, true, 255, 30, ‘<li class=”pageposts_list”>’, ‘</li>’); >> total 9 most recent entries over the past 30 days, from cateID 5, 3 entries from each blog, displaying titles only
write code in template like this…
<ul><?php bton_recent_posts(9, 30, 5, 3, true, 255, 30, ‘<li class=”pageposts_list”>’, ‘</li>’); ?></ul>
And you can also add style in your css files like this.
li.pageposts_list {list-mark-style:none;}
span.pageposts_cont{font-size:small; color:#333;}
span.pageposts_date {font-size:x-small; color:#ccc;}
span.pageposts_author {font-size:x-small; color:#ccc;}
span.pageposts_comment {font-size:x-small; color:#ccc;}
span.pageposts_blog {font-size:x-small; color:#ccc;}
span.pageposts_title {font-size:small; color:#333;}
->>[DOWNLOAD](bton_recent_posts_2.0.zip:4KB)