人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで作成したウェブシステムの質問です。
出力する文字列を日本語、中国語、英語に切り替えが可能にすることで
多言語化を行いたいのですが、具体的にはどうすればよいでしょうか。
また、下記のうち、どちらが有用でしょうか?

1. 配列に格納する
$apple[0]= "りんご";
$apple[1]= "apple";
$apple[2]= "林檎";

2. require を使って言語を切り替える
if ($lang == 0) require("jp.php");
if ($lang == 1) require("eg.php");
if ($lang == 2) require("ch.php");
--jp.php--
<?php
$apple= "りんご";
$orange= "みかん";
$tomato= "とまと";
?>
---------

●質問者: disca
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Apple JP Orange PHP require
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● いのくに
●27ポイント

メンテナンスすることを考えると 2 の方がしやすいと思います。

http://jp.opera.com/download/languagefiles/

◎質問者からの返答

ありがとうございます。引き続きおねがいします。


2 ●
●27ポイント

ThinkITの「PHPコードを利用してWebアプリケーションを国際化する」という連載が参考になると思います。

3回目からgettext関数を使った多言語対応について説明されています。

1、2でどちらが良いか、と言われたら2の方が管理がしやすそうですね。

参考になれば幸いです。

◎質問者からの返答

ありがとうございます。gettext という関数があるのですね、驚きました。

ただ、開発環境が未決定であるのと、レンタルサーバなので、上記関数は使えるものなのでしょうか?


3 ● vector
●26ポイント

私がやるとしても2の方法でやります。

2を少し改良して、$langの値をそのままファイル名というのもありですね。

if (file_exists("{$lang}.php")) {
 include ("{$lang}.php");
} else {
 // エラー
}

phpMyAdminなどもその方法で言語を切り替えていますよ。

http://www.phpmyadmin.net/home_page/index.php

◎質問者からの返答

ありがとうございます、PHPMyAdminは2の方法なのですね。


4 ● えるふん
●10ポイント

gettextをお勧めします

もしgettext拡張モジュールが使用できない場合でもPEARのFile::Gettextで相当のことができます.

手前味噌ですが

http://blog.poyo.jp/archives.php/categ-1/year-2006/month-4/id-11...

が参考になるかもしれません.

ファイルの読み込みは件のサイトのload_po()を

メッセージの取り扱いは同サイトの_()を参考にしてください.

#gettext拡張モジュールがPHPに組み込まれていた場合,関数_()は定義済みになるのでmsg()などに変更する方がいいかもしれません

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ