gettext使ってみた

More than 5 years have passed since last update.

gettext使ってみた

こちらの記事

海外でも通用するエンジニアになる: i18nしてますか?(gettext+PHPその1)

http://el.jibun.atmarkit.co.jp/kaigaiengineer/2010/08/i18ngettextphp-.html

を参考にget textをさくらVPSで使ってみました。

その過程で躓いたところをメモ

まずは記事の通りに翻訳元となるphpファイルを作成


hello.php

<?php

printf(_(こんにちは));

?>


んで持って

下記コマンドを実行

$xgettext -k"_" --from-code=UTF-8 -o hello.pot hello.php

このあたりはサクサク行きたいところ。これでhello.potが作成されているはずなので

$ls

で確認



できてない/(^o^)\

なんでだろ?と思ってちょっとググってみる

すると以下の記事を発見

PHPでGettext拡張を使ってみた - 趣味プログラマの外部記憶

http://d.hatena.ne.jp/ao3/20080328/1206673266

なるほど、インストールが必要なのね

さらにググると公式サイト?を発見

http://www.gnu.org/software/gettext/

と、いうことで早速インストール

以下のディレクトリに移動して

$cd /usr/local/src

wget
$wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.3.1.tar.gz

からの解凍

$tar zxvf gettext-0.18.3.1 tar.gz

解凍したディレクトリに移動して…

$cd gettext-0.18.3.1

$./configure

makeしてmake install

$make

$make install

これでインストールは完了!

行けるはず!再度以下を実行

$ xgettext -k"_" --from-code=UTF-8 -o hello.pot hello.php

$ls





できてない\(^o^)/なぜだああああ

2,3時間ほど色々と調べた挙句何もわからず疲れ果てました

そこでふと思いついて先ほど作ったphpファイル自体を実行してみることに

$php hello.php

すると以下のようなエラーが。

PHP Notice:  Use of undefined constant こんにちは - assumed 'こんにちは' in <ベースディレクトリ>/test_repo/hello.php on line 3

…ん?

回ってない頭でとりあえずファイルの三行目を見てみる

printf(_(こんにちは));





文字列囲んでねえ/(^o^)\

他人を疑う前にまず自分を疑え

プログラミングの鉄則を今一度心に刻んだ瞬間。でもこれ、中々できないんですよね未だに(--;)

今回は自分の休みの時間の内のほんの3時間(泣)を失っただけだ!

…と無理矢理切り替えていきましょう!

といいたいところですがこうなってくるとそもそもgettextのインストール自体必要だったのかどうかも正直怪しい(-
-;)スイマセン

とりあえず""で文字列を囲んで再度の実行

$ xgettext -k"_" --from-code=UTF-8 -o hello.pot hello.php

$ls

で確認すると…

あった\(^o^)/

ありました。hello.pot

これを新たに作成した

<ベースディレクトリ>/en_US/LC_MESSAGES/

にコピー

$ mkdir -p <ベースディレクトリ>/en_US/LC_MESSAGES

$ cp hello.pot <ベースディレクトリ>/en_US/LC_MESSAGES/hello.po

そっから

hello.pot内の以下を変更

msgid "こんにちは" → msgid "hello"

長くなりそうなので参考にさせていただいたブログにならってここまでで一旦区切ります