PHP

相談)多言語webアプリの仕様について

今、多言語対応のwebアプリケーションを作っています。趣味とか勉強みたいなもんなので、特に切羽詰まっているわけではないですが、多言語対応で悩んでいるので相談に乗って頂けると嬉しいです

前提

  • PHPのみで、フレームワークやライブラリは使っていない

現状

英語と日本語で単語の順番が入れ替わることがあるため、$user_name.'は'.$enemy.’の首をはねた!'みたいな単純な文字列結合では対応しきれないと考えています。

そこで、サイト上に表示する文言はすべてtb_languageに保管することにしました。

id en ja
1 \$username has decapitated $enemy. \$username は $enemy の首をはねた!

格納する文字列は、後で置き換えるべきところを$usernameのように残しておき、データベースから取り出した後で、str_replace()を使って書き換えています。

$result = str_replace('$username',$username,Dao->select('SELECT ja from `tb_language` where id = 1;'))

疑問

  • 「db内の文字列を展開する」方法がないか探したのですが、見つかりませんでした(リテラル内からの展開はありますが)。何か、スマートな手法があるのでしょうか?
  • 上記の方法では、変数の数だけstr_replace()を繰り返すことになり、あまり効率的といえない気がするのですが、何か良い手があるのでしょうか?

ご存じの方がありましたらコメントを頂けると嬉しいです。