Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
0d7fe0bd
Commit
0d7fe0bd
authored
Jan 08, 2015
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/tutorial-i18n.md - WIP [ci skip]
parent
a6646fec
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
47 deletions
+58
-47
tutorial-i18n.md
docs/guide-ja/tutorial-i18n.md
+58
-47
No files found.
docs/guide-ja/tutorial-i18n.md
View file @
0d7fe0bd
...
@@ -100,7 +100,7 @@ Yii は `i18n` [アプリケーションコンポーネント](structure-applica
...
@@ -100,7 +100,7 @@ Yii は `i18n` [アプリケーションコンポーネント](structure-applica
-
[
[yii\i18n\DbMessageSource
]
] - データベースを使用
-
[
[yii\i18n\DbMessageSource
]
] - データベースを使用
>
Info|情報: 以下においては、メッセージ書式の理解を助けるために、原文にはない日本語へのメッセージの翻訳例 (と出力結果) を追加している個所があり
ます。
>
Note|訳注: 以下においては、メッセージ書式の理解を助けるために、コード例に原文にはない日本語への翻訳例 (とその出力結果) を追加してい
ます。
### 名前付きプレースホルダ
### 名前付きプレースホルダ
...
@@ -113,7 +113,7 @@ echo \Yii::t('app', 'Hello, {username}!', [
...
@@ -113,7 +113,7 @@ echo \Yii::t('app', 'Hello, {username}!', [
'username'
=>
$username
,
'username'
=>
$username
,
]);
]);
// 翻訳
例
: '{username} さん、こんにちは!'
// 翻訳: '{username} さん、こんにちは!'
```
```
パラメータへの代入には波括弧を使わないことに注意してください。
パラメータへの代入には波括弧を使わないことに注意してください。
...
@@ -124,7 +124,7 @@ echo \Yii::t('app', 'Hello, {username}!', [
...
@@ -124,7 +124,7 @@ echo \Yii::t('app', 'Hello, {username}!', [
$sum
=
42
;
$sum
=
42
;
echo
\Yii
::
t
(
'app'
,
'Balance: {0}'
,
$sum
);
echo
\Yii
::
t
(
'app'
,
'Balance: {0}'
,
$sum
);
// 翻訳
例
: '差引残高: {0}'
// 翻訳: '差引残高: {0}'
```
```
> **Tip**|ヒント: メッセージ文字列の意味が分らなくならないように努めて、あまりに多くの序数プレースホルダを使うことは避けてください。
> **Tip**|ヒント: メッセージ文字列の意味が分らなくならないように努めて、あまりに多くの序数プレースホルダを使うことは避けてください。
...
@@ -134,7 +134,7 @@ echo \Yii::t('app', 'Balance: {0}', $sum);
...
@@ -134,7 +134,7 @@ echo \Yii::t('app', 'Balance: {0}', $sum);
高度な機能を使うためには、
[
intl PHP 拡張
](
http://www.php.net/manual/ja/intro.intl.php
)
をインストールして有効にする必要があります。
高度な機能を使うためには、
[
intl PHP 拡張
](
http://www.php.net/manual/ja/intro.intl.php
)
をインストールして有効にする必要があります。
それをインストールして有効にして初めて、プレースホルダのための拡張構文を使うことが出来るようになります。
それをインストールして有効にして初めて、プレースホルダのための拡張構文を使うことが出来るようになります。
すなわち、デフォルトの書式を意味する短い形式
`{
placeholderName, argumentType}`
、あるいは、書式のスタイルを指定できる完全な形式
`{placeholderName, argumentType, argumentStyle
}`
を使うことが出来るようになります。
すなわち、デフォルトの書式を意味する短い形式
`{
プレースホルダ名, タイプ}`
、あるいは、書式のスタイルを指定できる完全な形式
`{プレースホルダ名, タイプ, スタイル
}`
を使うことが出来るようになります。
完全なリファレンスは
[
ICU ウェブサイト
](
http://icu-project.org/apiref/icu4c/classMessageFormat.html
)
で入手可能ですが、以下においてはいくつかの例を示します。
完全なリファレンスは
[
ICU ウェブサイト
](
http://icu-project.org/apiref/icu4c/classMessageFormat.html
)
で入手可能ですが、以下においてはいくつかの例を示します。
...
@@ -144,8 +144,8 @@ echo \Yii::t('app', 'Balance: {0}', $sum);
...
@@ -144,8 +144,8 @@ echo \Yii::t('app', 'Balance: {0}', $sum);
$sum
=
42
;
$sum
=
42
;
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number}'
,
$sum
);
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number}'
,
$sum
);
// 翻訳
例
: '差引残高: {0, number}'
// 翻訳: '差引残高: {0, number}'
// 出力
例
: '差引残高: 12,345'
// 出力: '差引残高: 12,345'
```
```
内蔵のスタイル (
`integer`
、
`currency`
、
`percent`
) の一つを指定することが出来ます。
内蔵のスタイル (
`integer`
、
`currency`
、
`percent`
) の一つを指定することが出来ます。
...
@@ -154,8 +154,8 @@ echo \Yii::t('app', 'Balance: {0, number}', $sum);
...
@@ -154,8 +154,8 @@ echo \Yii::t('app', 'Balance: {0, number}', $sum);
$sum
=
42
;
$sum
=
42
;
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number, currency}'
,
$sum
);
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number, currency}'
,
$sum
);
// 翻訳
例
: '差引残高: {0, number, currency}'
// 翻訳: '差引残高: {0, number, currency}'
// 出力
例
: '差引残高: ¥ 12,345'
// 出力: '差引残高: ¥ 12,345'
```
```
または、カスタムパターンを指定することも出来ます。
または、カスタムパターンを指定することも出来ます。
...
@@ -164,8 +164,8 @@ echo \Yii::t('app', 'Balance: {0, number, currency}', $sum);
...
@@ -164,8 +164,8 @@ echo \Yii::t('app', 'Balance: {0, number, currency}', $sum);
$sum
=
42
;
$sum
=
42
;
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number, ,000,000000}'
,
$sum
);
echo
\Yii
::
t
(
'app'
,
'Balance: {0, number, ,000,000000}'
,
$sum
);
// 翻訳
例
: '差引残高: {0, number, ,000,000000}'
// 翻訳: '差引残高: {0, number, ,000,000000}'
// 出力
例
: '差引残高: 000,012345'
// 出力: '差引残高: 000,012345'
```
```
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1DecimalFormat.html
)
.
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1DecimalFormat.html
)
.
...
@@ -175,8 +175,8 @@ echo \Yii::t('app', 'Balance: {0, number, ,000,000000}', $sum);
...
@@ -175,8 +175,8 @@ echo \Yii::t('app', 'Balance: {0, number, ,000,000000}', $sum);
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'Today is {0, date}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'Today is {0, date}'
,
time
());
// 翻訳
例
: '今日は {0, date} です。'
// 翻訳: '今日は {0, date} です。'
// 出力
例
: '今日は 2015/01/07 です。'
// 出力: '今日は 2015/01/07 です。'
```
```
内蔵の書式は、
`short`
、
`medium`
、
`long`
、そして
`full`
です。
内蔵の書式は、
`short`
、
`medium`
、
`long`
、そして
`full`
です。
...
@@ -184,8 +184,8 @@ echo \Yii::t('app', 'Today is {0, date}', time());
...
@@ -184,8 +184,8 @@ echo \Yii::t('app', 'Today is {0, date}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'Today is {0, date, short}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'Today is {0, date, short}'
,
time
());
// 翻訳
例
: '今日は {0, date, short} です。'
// 翻訳: '今日は {0, date, short} です。'
// 出力
例
: '今日は 2015/01/07 です。'
// 出力: '今日は 2015/01/07 です。'
```
```
カスタムパターンを指定することも出来ます。
カスタムパターンを指定することも出来ます。
...
@@ -193,8 +193,8 @@ echo \Yii::t('app', 'Today is {0, date, short}', time());
...
@@ -193,8 +193,8 @@ echo \Yii::t('app', 'Today is {0, date, short}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'Today is {0, date, yyyy-MM-dd}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'Today is {0, date, yyyy-MM-dd}'
,
time
());
// 翻訳
例
: '今日は {0, date, yyyy-MM-dd} です。'
// 翻訳: '今日は {0, date, yyyy-MM-dd} です。'
// 出力
例
: '今日は 2015-01-07 です。'
// 出力: '今日は 2015-01-07 です。'
```
```
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1SimpleDateFormat.html
)
.
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1SimpleDateFormat.html
)
.
...
@@ -204,8 +204,8 @@ echo \Yii::t('app', 'Today is {0, date, yyyy-MM-dd}', time());
...
@@ -204,8 +204,8 @@ echo \Yii::t('app', 'Today is {0, date, yyyy-MM-dd}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'It is {0, time}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'It is {0, time}'
,
time
());
// 翻訳
例
: '現在 {0, time} です。'
// 翻訳: '現在 {0, time} です。'
// 出力
例
: '現在 22:37:47 です。'
// 出力: '現在 22:37:47 です。'
```
```
内蔵の書式は、
`short`
、
`medium`
、
`long`
、そして
`full`
です。
内蔵の書式は、
`short`
、
`medium`
、
`long`
、そして
`full`
です。
...
@@ -213,8 +213,8 @@ echo \Yii::t('app', 'It is {0, time}', time());
...
@@ -213,8 +213,8 @@ echo \Yii::t('app', 'It is {0, time}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'It is {0, time, short}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'It is {0, time, short}'
,
time
());
// 翻訳
例
: '現在 {0, time, short} です。'
// 翻訳: '現在 {0, time, short} です。'
// 出力
例
: '現在 22:37 です。'
// 出力: '現在 22:37 です。'
```
```
カスタムパターンを指定することも出来ます。
カスタムパターンを指定することも出来ます。
...
@@ -222,8 +222,8 @@ echo \Yii::t('app', 'It is {0, time, short}', time());
...
@@ -222,8 +222,8 @@ echo \Yii::t('app', 'It is {0, time, short}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'It is {0, date, HH:mm}'
,
time
());
echo
\Yii
::
t
(
'app'
,
'It is {0, date, HH:mm}'
,
time
());
// 翻訳
例
: '現在 {0, time, HH:mm} です。'
// 翻訳: '現在 {0, time, HH:mm} です。'
// 出力
例
: '現在 22:37 です。'
// 出力: '現在 22:37 です。'
```
```
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1SimpleDateFormat.html
)
.
[
書式のリファレンス
](
http://icu-project.org/apiref/icu4c/classicu_1_1SimpleDateFormat.html
)
.
...
@@ -234,8 +234,8 @@ echo \Yii::t('app', 'It is {0, date, HH:mm}', time());
...
@@ -234,8 +234,8 @@ echo \Yii::t('app', 'It is {0, date, HH:mm}', time());
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'{n, number} is spelled as {n, spellout}'
,
[
'n'
=>
12345
]);
echo
\Yii
::
t
(
'app'
,
'{n, number} is spelled as {n, spellout}'
,
[
'n'
=>
12345
]);
// 翻訳
例
: '{n, number} は、文字で綴ると {n, spellout} です。'
// 翻訳: '{n, number} は、文字で綴ると {n, spellout} です。'
// 出力
例
: '12,345 は、文字で綴ると 一万二千三百四十五 です。'
// 出力: '12,345 は、文字で綴ると 一万二千三百四十五 です。'
```
```
#### 序数
#### 序数
...
@@ -246,9 +246,12 @@ echo \Yii::t('app', 'You are the {n, ordinal} visitor here!', ['n' => 42]);
...
@@ -246,9 +246,12 @@ echo \Yii::t('app', 'You are the {n, ordinal} visitor here!', ['n' => 42]);
これは、"You are the 42nd visitor here!" というメッセージになります。
これは、"You are the 42nd visitor here!" というメッセージになります。
> Tip|ヒント: 上記のソースメッセージを、プレースホルダの書式指定を守って日本語に翻訳すると、'あなたはこのサイトの {n, ordinal} の訪問者です。' となります。
> Note|訳注: 上記のソースメッセージを、プレースホルダの書式指定を守って日本語に翻訳すると、'あなたはこのサイトの {n, ordinal} の訪問者です' となります。
> しかし、その出力結果は、'あなたはこのサイトの 第42 の訪問者です。' となり、意味は通じますが、日本語としては若干不自然なものになります。
> しかし、その出力結果は、'あなたはこのサイトの 第42 の訪問者です' となり、意味は通じますが、日本語としては若干不自然なものになります。
> この場合は、'あなたはこのサイトの {n} 番目の訪問者です。' のように、プレースホルダの書式も含めて全体を翻訳する方が良いでしょう。
>
> プレースホルダの書式指定は、翻訳時に変更することが可能であるだけでなく、進んで変更すべき場合すらあります。
>
> この場合も、'あなたはこのサイトの {n} 番目の訪問者です' のように、プレースホルダの書式も含めて全体を翻訳する方が良いでしょう。
#### 継続時間
#### 継続時間
...
@@ -258,43 +261,51 @@ echo \Yii::t('app', 'You are here for {n, duration} already!', ['n' => 47]);
...
@@ -258,43 +261,51 @@ echo \Yii::t('app', 'You are here for {n, duration} already!', ['n' => 47]);
これは、"You are here for 47 sec. already!" というメッセージになります。
これは、"You are here for 47 sec. already!" というメッセージになります。
>
Tip|ヒント: このソースメッセージを 'あなたはこのサイトに既に {n, duration} 滞在しています。' と翻訳した場合の出力結果は、'あなたはこのサイトに既に 47 滞在しています。
' となります。
>
Note|訳注: このソースメッセージを 'あなたはこのサイトに既に {n, duration} の間滞在しています' と翻訳した場合の出力結果は、'あなたはこのサイトに既に 47 の間滞在しています
' となります。
> これも、プレースホルダの書式も含めて全体を翻訳し直す方が良いようです。
>
ICU ライブラリのバグでしょうか。
これも、プレースホルダの書式も含めて全体を翻訳し直す方が良いようです。
####
Plurals
####
複数形
Different languages have different ways to inflect plurals. Yii provides a convenient way for translating messages in
言語によって、複数形の語形変化はさまざまに異なります。
different plural forms that works well even for very complex rules. Instead of dealing with the inflection rules directly
Yii は、さまざまな形式の複数形語形変化に対応したメッセージ翻訳のための便利な方法を提供しています。
it is sufficient to provide the translation of inflected words in certain situations only.
それは、非常に複雑な規則に対しても、十分に機能するものです。
語形変化の規則を直接に処理する代りに、特定の状況における語形変化した言葉の翻訳を提供するだけで十分です。
```
php
```
php
echo
\Yii
::
t
(
'app'
,
'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!'
,
[
'n'
=>
$n
]);
echo
\Yii
::
t
(
'app'
,
'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!'
,
[
'n'
=>
$n
]);
```
```
Will give us
結果は以下のようになります。
-
"There are no cats!" for
`$n = 0`
,
-
`$n = 0`
の場合は "There are no cats!"
-
"There is one cat!" for
`$n = 1`
,
-
`$n = 1`
の場合は "There is one cat!"
-
and "There are 42 cats!" for
`$n = 42`
.
-
そして
`$n = 42`
の場合は "There are 42 cats!"
In the plural rule arguments above
`=0`
means exactly zero,
`=1`
stands for exactly one, and
`other`
is for any other number.
上記の複数形規則の引数において、
`=0`
はぴったりゼロ、
`=1`
はぴったり 1、そして
`other`
はそれ以外の数を表します。
`#`
is replaced with the value of
`n`
. It's not that simple for languages other than English. Here's an example
`#`
は
`n`
の値によって置き換えられます。
for Russian:
英語以外の言語では、これほど単純ではありません。
例えば、次はロシア語の例です。
```
```
Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
```
```
In the above it's worth mentioning that
`=1`
matches exactly
`n = 1`
while
`one`
matches
`21`
or
`101`
.
上の例について言及する価値があると思われるのは、
`=1`
が
`n = 1`
にぴったりと一致するのに対して、
`one`
が
`21`
や
`101`
などに一致する、ということです。
Note, that you can not use the Russian example in
`Yii::t()`
directly if your
注意して欲しいのは、あなたの
[
[yii\base\Application::$sourceLanguage|ソース言語
]
] を
`ru_RU`
に設定しなければ、このロシア語のメッセージを
`Yii::t()`
の中に直接に書くことは出来ない、ということです。
[
[yii\base\Application::$sourceLanguage|source language
]
] isn't set to
`ru_RU`
. This however is not recommended, instead such
ただし、ソース言語を
`ru_RU`
に設定することは推奨されません。
strings should go into message files or message database (in case DB source is used). Yii uses plural rules of the
むしろ、このような文字列はメッセージファイルまたは (DB ソースが使われている場合は) メッセージデータベースに入れるべきです。
translated language strings and is falling back to plural rules of source language if translation isn't available.
Yii は翻訳された言語の文字列の複数形規則を使い、翻訳が入手できない場合にはソース言語の複数形規則に後退します。
To learn which inflection forms you should specify for your language you can referrer to the
あなたの言語について、どのような語形変化を指定すべきかを学習するためには、
[
unicode.org にある規則のリファレンス
](
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
)
を参照してください。
[
rules reference at unicode.org
](
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
)
.
> Note|訳注: 最初のソースメッセージの日本語翻訳は以下のようなものになります。
>
> '猫は{n, plural, =0{いません} other{#匹います}}。'
>
> 日本語では単数形と複数形を区別しませんので、たいていの場合、`=0` と `other` を指定するだけで事足ります。
> 横着をして、`{n, plural, ...}` を `{n, number}` に置き換えても、多分、大きな問題は生じないでしょう。
#### Selections
#### Selections
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment