見出し画像

1. gettext

Polyglotの「gettext」(2020-08-18更新版)の私家版和訳を掲載します。 「翻訳者ハンドブック|プラグイン/テーマ作者ガイド」の続きのコンテンツです。
以下、本文です。

1. gettext

https://make.wordpress.org/polyglots/handbook/plugin-theme-authors-guide/gettext/

WordPressの開発者は、WordPressにローカリゼーションインフラストラクチャを提供するために、GNU gettextローカリゼーションフレームワークを使用することを選択しました。gettextは、ソフトウェアのモジュール翻訳のための成熟した、広く使われているフレームワークであり、オープンソース/フリーソフトウェア領域におけるローカリゼーションのデファクトスタンダードです。

gettextは、メッセージレベル翻訳を採用 – つまり、ユーザーに表示されるすべての“message”は、それが段落であろうと単語1つであろうと、個別に翻訳されます。WordPressでは、この様な“messages”は生成、翻訳され、2つのPHP関数を介してWordPressのPHPファイルで使用されます。__()は、メッセージが他の関数の引数として渡されるときに使用され、_e()は、ページに直接メッセージを書き込むときに使用されます。この2つの関数の詳細はこちら:

__(‘message’)

ローカライゼーションモジュールから‘message’の翻訳を探し、PHPのreturn文に渡します。‘message’の翻訳が見つからなかった場合は、単に‘message’を返します。

_e(‘message’)

ローカライゼーションモジュールから‘message’の翻訳を探し、PHPのecho文に渡します。‘message’の翻訳が見つからなかった場合は、単に‘message’をechoします。

[preserved_text 8be67cb84dc37240ff1c2893ece8582d /]

ローカライゼーションの為のPHP関数は他にもあり、_n()、_x()など、wp-includes/l10n.phpにあります。

gettextフレームワークは、WordPressの殆どの機能を担っています。しかし、WordPressのディストリビューションには、gettextが使えない場所がいくつかあります – これらの場所を翻訳する方法については、直接翻訳用のファイルを参照してください。

Getting Started

通常、ファイルを直接編集する必要はなく、GlotPressやpoeditの様なpoファイルエディタを使うことができます。ただし、ファイルをどの様に編集し、どの様に扱うべきかを知っておくことは良いことです。

或いは、以下の様にファイルを直接編集することもできます:

  1. 公式WordPress POTファイルをダウンロードします

  2. お気に入りのテキストエディターでファイルを開きます

  3. ヘッダー情報を更新します

  4. メッセージを翻訳します

  5. ファイルの拡張子を.poにして保存します

  6. msgfmt -o filename.mo filename.po を発行します

POファイルのヘッダー

POファイルの最初にヘッダーと呼ばれるものがあります。これは、その翻訳がどのパッケージでどのバージョンなのか、翻訳者は誰なのか、いつ作成されたのかという情報を提供します。このヘッダーの幾つかの部分は、すべてのWordPress翻訳で共通であるべきです:

# LANGUAGE (LOCALE) translation for WordPress.
# Copyright (C) YEAR WordPress contributors.
# This file is distributed under the same license as the WordPress package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: WordPress VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-02-27 17:11-0600\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=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

大文字で書かれたテキスト(訳者注:1行目のLANGUAGE (LOCALE) translation for WordPress.、2行目のYEAR WordPress contributors.、3行目のWordPress、9行目のWordPress VERSION)の残りの部分を、適切な値で埋めます。

メッセージ・フォーマット

ファイルの残りの部分は、以下の様なフォーマットになります:

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr ""

#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr ""

#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr ""

各メッセージの最初の行には、WordPressコード内のメッセージの場所が書かれています。これらのメッセージの場合、すべてwp-comments-post.phpの13行目、29行目、35行目にあります。時折、文脈を確認する必要があるメッセージに出くわすことがあります;WordPressコアの適切な行を見れば、いつ、どこにそのメッセージが表示されるかがわかり、ウェブブラウザーを使って自分で再現することもできるはずです。また、同じテキストが複数の場所に表示されるメッセージもあります;その場合、ファイルと行位置を示す行が複数あるかもしれません。

次の行(msgid)はソース・メッセージです。これはWordPressの__()関数や_e()関数に渡す文字列で、あなたが翻訳する必要があるメッセージです。

最後の行(msgstr)は空白の文字列で、ここに翻訳を記入します。

同じ数行が翻訳された後、どの様に見えるかを、French (France)ロケールを例にして示します:

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr "L'ajout de commentaire n'est pas ou plus possible pour cet article."

#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr "Vous devez être connecté pour rédiger un commentaire."

#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr "Erreur : veuillez remplir les champs obligatoires vides (nom, e-mail)."

Last updated: August 18, 2020

この記事が気に入ったらサポートをしてみませんか?