今、多言語対応の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()
を繰り返すことになり、あまり効率的といえない気がするのですが、何か良い手があるのでしょうか?
ご存じの方がありましたらコメントを頂けると嬉しいです。