2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-20

今、多言語対応の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()を繰り返すことになり、あまり効率的といえない気がするのですが、何か良い手があるのでしょうか?

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

2
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?