4


5

Kohana 3のi18nおよびエラーメッセージ

私はKohana 3を使用して管理アプリケーションを開発しており、明らかに多くのフォームで作業しています。

アプリケーションは多言語対応である必要があり、メッセージファイルの管理方法、特にそれらへのアクセス方法について非常に混乱しています。

i18nは、言語フォルダー内のさまざまなフォルダーとファイルをサポートしていますか?

E.g:

  • i18n

  • en

  • form

  • fr

  • form

または、言語ファイルの配列をサポートしていますか?

i18n/fr.php

 array(
                     'error_type' => 'Error message in French.',
                     'error_type_2' => 'Other error message.',
                    )


)

それができるなら、メッセージを翻訳しているときにこれらのフィールド/ファイルにどのようにアクセスしますか?

私が理解していないもう一つのことは、どうすれば翻訳を `messages`フォルダにあるエラーメッセージにリンクできるのかということです。

これは本当に混乱しています。 また、フィールドを持たないエラー( `Validate`クラスによってチェックされないエラー)をどのように処理しますか?

ありがとうございました。

3 Answer


5


messages / validate.php:

return array
(
'upload::not_empty' => __('validate.upload_empty'),
);

i18n / en.php:

return array
(
'validate.upload_empty' => 'Upload must not be empty',
);

i18n / ba.php:

return array
(
'validate.upload_empty' => 'Upload ne moze biti prazan',
);

etc. (必要な数のルールを定義します)。

少なくともこれは私の練習で、初めてi18nを使用するとうまくいきます。


0


メッセージの翻訳方法に関する適切なドキュメントはありません。 Messageクラスは、I18nクラスで完全な文字列を探します。

システム検証をドイツ語のメッセージに変換する方法の例を次に示します。 /i18n/de.phpファイル内に以下を追加します。

':field must contain only letters' => ':field darf nur Buchstaben verwenden',
':field must contain only numbers, letters and dashes' => ':field darf nur Zahlen, Buchstaben und Schrägstriche verwenden',
':field must contain only letters and numbers' => ':field darf nur Zahlen und Buchstaben verwenden',
':field must be a color' => ':field muss eine Farbe sein',
':field must be a credit card number' => ':field muss eine Kreditkartennummer sein',
':field must be a date' => ':field muss ein Datum sein',
':field must be a decimal with :param2 places' => ':field muss eine Dezimalzahl mit :param2 Nachkommastellen',
':field must be a digit' => ':field muss eine Zahl sein',
':field must be an email address' => ':field muss eine Email-Adresse sein',
':field must contain a valid email domain' => ':field muss eine korrekte Email Domain beinhalten',
':field must equal :param2' => ':field muss :param2 sein',
':field must be exactly :param2 characters long' => ':field muss genau :param2 Zeichen lang sein',
':field must be one of the available options' => ':field muss eine der verfügbaren Optionen sein',
':field must be an ip address' => ':field muss eine IP-Addresse sein',
':field must be the same as :param3' => ':field muss das gleiche wie :param3 sein',
':field must be at least :param2 characters long' => ':field muss mindestens :param2 Zeichen lang sein',
':field must not exceed :param2 characters long' => ':field darf nicht länger als :param2 Zeichen lang sein',
':field must not be empty' => ':field darf nicht leer sein',
':field must be numeric' => ':field muss eine Zahl sein',
':field must be a phone number' => ':field muss eine Telefonnummer sein',
':field must be within the range of :param2 to :param3' => ':field muss zwischen :param2 und :param3 sein',
':field does not match the required format' => ':field passt nicht zum geforderten Format',
':field must be a url' => ':field muss eine URL sein',

これにより、キャッシュが許可されていないため、メッセージファイル内で__()関数を使用できなくなります。


0


http://kohanaframework.org/3.3/guide/kohana/files/messages [メッセージファイル]でのみ、アプリケーションが記述されている言語で記述してください。

  • 開発者は、メッセージファイルと 後で翻訳を心配する。

  • I18nファイルには、左側に翻訳するテキストがあり、 単一のファイル内の右側の翻訳。

  • I18nファイルは、バックエンドなどのモジュールによって解析および編集できます 翻訳者。

  • messages / forms.php *

 array(
        'label' => 'Email',
        'title' => 'Enter your email address.',
    ),
    'pass' => array(
        'label' => 'Password',
        'title' => '8 characters or more',
    ),
    'login' => array(
        'label' => 'Log On',
),
    'submit' => array(
        'label' => 'Submit',
    ),
);

すべてのメッセージを設定したら、http://kohanaframework.org/3.3/guide/kohana/files/i18n [translations]を追加します。

  • i18n / es.php *

 'Email',
    'Password' => 'Contraseña',
    'Log On' => 'Acceder',
 );
http://kohanaframework.org/3.3/guide/kohana/files/messages#getting-a-message [`Kohana

message()]を呼び出すときは、http://kohanaframework.org/3.3/guide/でラップします。 kohana / files / i18n#[`__()]。言語が設定されている場合、翻訳されたメッセージを使用しようとします。

  • APPPATH / views / Auth / login.php *


言語を設定するには、http://kohanaframework.org/3.3/guide-api/I18n#lang [`I18n

lang()`]を使用します。

I18n::lang('es');

もちろん、言語を手動で設定することはあまり役に立ちません。 以下を使用して設定できます。

  • ドロップダウンボックス

  • ブラウザ言語