[メモ]多言語化[覚書]

メモです。
多言語化するときに必要なこととか・・・

hoge,php

<?php
$lang = "ja_JP.UTF-8";
$domain = "hoge";

//setlocale(LC_ALL,$lang);
setlocale(LC_MESSAGES,$lang);
bindtextdomain($domain, __DIR__."/../locale/");
textdomain($domain);
echo _("greeting")."\n"; 
echo gettext("greeting")."\n"; 
echo dgettext("hoge","error")."\n";

poファイルを作成
xgettext hoge.php
message.poが作られる
※xgettext hoge.php -o hoge.poとすると-oで指定した名前のファイルが出来上がります。

phpファイル全てを対象に_()などを抽出する場合
find . -type f -name “*.php” -exec xgettext {} +
とかするといい感じ。

作成されたpoファイル内の文字列を置換します。
sed -e ‘s/charset=CHARSET/charset=UTF-8/’ hoge.po > tmp_hoge.po

所定のディレクトリを作る※日本語と英語
mkdir -p locale/ja_JP/LC_MESSAGES/
mkdir -p locale/en_US/LC_MESSAGES/
poファイルを所定の位置へコピー
cp tmp_hoge.po locale/ja_JP/LC_MESSAGES/hoge.po
cp tmp_hoge.po locale/en_US/LC_MESSAGES/hoge.po

locale/ja_JP/LC_MESSAGES/hoge.po

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-30 15:12+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: hoge.php:9 hoge.php:10
msgid "greeting"
msgstr "こんにちは世界"

#: hoge.php:11
msgid "error"
msgstr "エラー"

poファイルをコンパイルしmoファイルを作成
cd ./locale/【ロケール】/LC_MESSAGES/
msgfmt hoge.po
hoge.moが出来上がります。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です