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= "とまと";
?>
---------

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:
  • 終了:2006/07/14 16:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:inokuni No.1

回答回数1343ベストアンサー獲得回数21

ポイント27pt

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

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

id:disca

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

2006/07/07 16:59:12
id:bonlife No.2

回答回数421ベストアンサー獲得回数75

ポイント27pt

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

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

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

参考になれば幸いです。

id:disca

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

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

2006/07/07 17:52:20
id:vector_xenon No.3

回答回数113ベストアンサー獲得回数4

ポイント26pt

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

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

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

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

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

id:disca

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

2006/07/07 17:27:09
id:elf No.4

回答回数76ベストアンサー獲得回数8

ポイント10pt

gettextをお勧めします

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

手前味噌ですが

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

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

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

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

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

  • id:bonlife
    id:elfさんの回答を開けさせていただきました。
    PEARでもあるのですね。
    勉強になりました。
    ありがとうございます。
  • id:elf
    id:bonlifeさんありがとうございます.
    gettextを含め,PHPでのメッセージカタログの国際化はそれなりの数の実装例を見ているので分からないことがあったらblogにでもコメントしてみてください

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません