• ベストアンサー

MySQLの多言語対応

多言語に対応したシステム(日本語と英語に対応)で疑問に思うことがあります。 マスタテーブルにname_jaとname_en という2つのカラムがありそれぞれ日本語と英語の レコードが格納されている場合、ロケールを判断してどちらのカラムにアクセスすべきか 判定してくれるような仕組みはDB(MySQL)にあるのでしょうか? 例えばプログラムでは select name from NAME_MASTER; というSQLを発行して ロケールに応じname_ja又はname_enのどちらかから取得されるというような仕組みが あるのかということです。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ロケールに応じて使用するカラムを変えればいだけで、そういった機能はDBにないと思います。

unko347
質問者

お礼

御回答ありがとうございます。 ロケールに応じて処理を分けようと思います。 ありがとうございました。

関連するQ&A

  • PHP+MySQL 内部結合(INNER_JOIN)がうまく行きません。

    以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか? <?php  // データベースサーバへの接続・データベースの選択  $db = mysql_connect('localhost','test','password');  $db_name = 'test';  mysql_select_db($db_name,$db);  // 処理対象テーブル  $tbl_name1 = "client_master";  $tbl_name2 = "jobmaster0717";    // 内部結合(INNER JOIN句)  $str_sql1 = "SELECT * FROM {$tbl_name1}"       . " INNER JOIN {$tbl_name2}"       . " ON {$tbl_name1}.company_ID"       . "  = {$tbl_name2}.client_ID;";  $rs1 = mysql_query($str_sql1,$db);  print "\"{$str_sql1}\"<br>\n";  // 結果セットの表示  show_rs($rs1,$db);  print "<br>\n";  // 結果セット(結果ID)の開放  mysql_free_result($rs1);    // データベースサーバの切断  mysql_close($db); ?>

  • CSSによる簡易な複数言語対応について

    現在日本語で公開されているHPを英語でも公開するにあたり、 HTMLとCSSのみで2言語対応したいと思っています。 対応するというのは、 ・同じHTMLファイル上で英語と日本語を併記 ・ユーザーのブラウザが日本語なら日本語表示(英語は表示しない) ・日本語以外なら英語表示 とします。 なお、FireFoxでは以下のやり方でできましたが、 IEはlang属性が未対応とのことで、うまくいきません。 htmlファイル <html> <head> <link rel="stylesheet" href="global.css" type="text/css"> <link rel="stylesheet" href="local.css" type="text/css"> </head> <body> <div class="ja" lang="ja"> <p>日本語のテキスト</p> </div> <div class="en" lang="en"> <p>English text</p> </div> </body> </html> global.css *[lang='en'] { display: block; } *[lang='ja'] { display: none; } local.css.ja *[lang='ja'] { display: block; } *[lang='en'] { display: none; } また、divタグでの判定であれば htmlを以下のようにして <div class="ja" ・・・ cssファイルの *[lang='ja'] を div.ja などに 置き換えることで、 IEも含めうまくいくのはわかっているのですが すでに日本語で作成済みのため、これからclass名を 日本語と英語で別にしていくのはさけたいと思っています。 シンプルに対応できないものでしょうか。 JAVAスクリプトは使用しないようにしたいと考えています。 また、まったく違う簡単な方法があれば教えていただけないでしょうか よろしくお願いします。 (注:上記コードはコンテント・ネゴシエーション可能なサーバー上でのみ稼働とのこと。)

    • ベストアンサー
    • HTML
  • MySQL TIMESTAMP型は、UTCですか?

    MySQL5で、 TIMESTAMP型のカラムに格納されるのは、UTCでしょうか。 それともローカルタイムゾーンなのでしょうか? あるいは、設定による、のでしょうか? >TIMESTAMP カラムの値は、ストレージでは現在のタイム ゾーンから UTC へ、読み出しでは UTC からカレントのタイム ゾーンに変換します。 http://dev.mysql.com/doc/refman/5.1/ja/time-zone-support.html と書いてあったのを見て、TIMESTAMP型のカラムに格納されるのは、UTC(日本時間-9)だ、と思ったのですが、 実際にカラムの中を確認してみると、その時点の日本時間が格納されています。 >TIMESTAMP 値は、現在のタイムゾーンから変換されて格納され、また検索された時に現在のタイムゾーンに再変換されながら、UTCに格納されます。 http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html こちらでも、「UTCに格納されます」って書かれているのですが、 これは、「現在のタイムゾーンをそれぞれの接続ごとに設定した場合」に限っての話なのでしょうか? それとも、ストレージでは、って書かれているので、 ストレージのことが絡んでいるのでしょうか?(ストレージって何のことですか)

    • ベストアンサー
    • MySQL
  • MYSQLでgroup by を教えてください。

    まだ初心者なんです。よろしくお願いいたします。 テーブル$tbl_nameに日付date コラムに (2009-11-3 14:25:06).(2009-11-3 11:25:06). (2009-11-5 12:25:06).(... ....と年齢 ageコラムに (18)(19)(20)... 性別コラムage に (danshi)(jyoshi) が入っています。 これを日付別 に内容が存在するだけ出力したいのです。 出力内容は(18)→25、(19)→13、(20)→7、の数だけ、 同様に(danshi)→20、(jyoshi)→25、というように 〇月〇日18才は25人、19才は13人、20才は7人、 男子は20人、女子は25人と出したいのです。 $sql = "SELECT 'age',count(age) FROM $tbl_name group by 'date'"; $result = mysql_query($sql, $db) or die("クエリの送信に失敗しました。<br />SQL:".$sql); while ($row = mysql_fetch_assoc($result)){ $age .=$row;} 等記入しているのですが、何とも動きませんのです。 どうしたらよろしいものでしょう。よろしくお願いいたします。

  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • MySQLで日本語カラム名を使いたいのですが

    当方の質問に興味をもっていただいてありがとうございますm(__)m 当方未熟ながらJAVAプログラマーを職業にさせていただいておりまが、この度MySQLを使用した日記WEBサイトを構築することになりました。しかし、日本語カラム名を使用したく困っております。 環境はTomcat5.5、MySQL5.1(ベータ)、JDBCは5.1、Eclipseは3.2です。 カラム名を英数字にすれば至らぬ私の技量でも問題ない案件なのですが、オラクルしか使用したことのない私には未知の領域です。 日本MySQL協会の「徹底入門」、DBの「現場で使えるMySQL]等の書籍は網羅したつもりですが、どうにも問題解決策を見つけることができませんでした。 もし解決策をご存知の方がいらっしゃりましたらば、お手数ではありますがその方法を教えていただけないでしょうか? 私が悩んでいるのは「WEBアプリからDBにSQLを投げた際、SELECT 日本語 From テーブル とし、JAVA側で「getString(”日本語”)」が使えないことです。 JDBCそのものの問題なのでしょうか?? よろしくお願いいたします。

  • Mysqlで文字化けします

    はじめまして、Mysql初心者です。 Mysqlをインストールして簡単なsql命令を実行したのですが、画面に表示される日本語が文字化けします。MyODBCでACSESSからDBを参照したらやはりテーブル内の日本語が化けていました、この程度の情報しかないのですがどなたか教えて下さい、ヒントでも結構です

    • ベストアンサー
    • MySQL
  • MySQLで検索されたフィールド

    いつもお世話になっております。 MySQLで以下のようなSQL文を発行しています。 select * from table where (INSTR(`table`.`name`,'キーワード')<>0 OR INSTR(`table`.`keyword`,'キーワード')<>0) nameカラムとkeywordカラムのどちらのカラムから検索されたのか知りたいのですが どのようにしたらよろしいでしょうか。 (「キーワード」文字列がどちらのカラムに入っているのか知りたいです。) [環境]  MySQL:5.5.16 よろしくご教示お願いいたします。

    • ベストアンサー
    • MySQL
  • PHPでMySQLのデータを検索したい

    お世話になります。 PHPでMySQLのデータを検索したいと思い、 以下のようにしてみたのですがうまく表示されません。 -- $name = $_POST["name"]; $link = mysql_connect('localhost', '', ''); $db_selected = mysql_select_db('', $link); mysql_set_charset('utf8'); $sql = "SELECT * FROM search WHERE". $name; $result = mysql_query($sql); while($row = mysql_fetch_array($name)) { print $row['name']; } $close_flag = mysql_close($link); -- どう改善すればいいのでしょうか? 初心者の為、少々お見苦しい点があるかと思いますが どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • MYSQLのレコードを上書きしたいのですが…

    phpからMYSQL5に接続して以下のようなデータベースを作りました。 no name comment ←カラム名 1  山田 起きる 2  山田 叫ぶ 3  山田 寝る これを上書きして、 no name comment 1  山田 食べる 2  山田 遊ぶ 3  山田 寝る というようにレコードを更新したいのです。 しかし、どうやっても1、2、3の後に4、5、6と続いてしまいます。 「no」カラムにはauto_increment+primary keyを設定しています。 phpで構文を送る前に mysql_query("alter table db1 auto_increment=0"); を設定してみたり、 mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); や mysql_query("replace into db1 (name,comment) value ('山田','$comment')"); を試してみましたが、上手く行きませんでした。 現在は、 mysql_query("delete from db1"); mysql_query("alter table db1 auto_increment=0"); ---php処理--- mysql_query("insert into db1 (name,comment) value ('山田','$comment')"); というように、二度目の書き込みを行う前に一旦テーブル内のレコードを すべて削除して書きなおすという方法を取っています。 しかし、数が多くなると一旦削除する作業を行うと処理が遅くなってしまうと思いますので、上書きしてデータベースを更新したいと思っているのですが、どのようにすればよいでしょうか?

    • ベストアンサー
    • MySQL