Localized ドキュメント
このプラグインには、国ごとにローカライズされたバリデーションクラス、コアのクライアント向け文字列 (cake ドメイン) の翻訳、POSIX の LC_TIME ファイルが含まれています。
- インストール
- バリデーションクラス
- モデルのバリデーション
- Validation でローカライズされたバリデーションを使う
- バリデーションの動的な振り分け
- PO ファイル
- LC_TIME ファイル
- 移行ガイド
- Localized への貢献
インストール
Composer でプラグインをインストールします。
composer require pieceofcake2/localizedこのプラグインのタイプは cakephp-plugin なので、composer/installers によってプラグインディレクトリに (Localized として) インストールされます。正しい場所にインストールされるように、アプリケーションの composer.json で installer-paths を設定してください。
| レイアウト | installer-paths |
|---|---|
モダン (config/、src/、templates/、plugins/) | "plugins/{$name}/": ["type:cakephp-plugin"] |
レガシー (app/Config/、app/Plugin/) | "app/Plugin/{$name}/": ["type:cakephp-plugin"] |
次に、config/bootstrap.php (レガシーレイアウトでは app/Config/bootstrap.php) でプラグインを 読み込みます。
CakePlugin::load('Localized');バリデーションクラス
すべてのクラスは phone()、postal()、personId() を実装しています (バリデーションメソッド をご覧ください)。追加のメソッドを持つクラスもあります。
| 国コード | 国 | クラス | 追加のメソッド |
|---|---|---|---|
at | オーストリア | AtValidation | |
au | オーストラリア | AuValidation | |
bd | バングラデシュ | BdValidation | |
be | ベルギー | BeValidation | |
br | ブラジル | BrValidation | cpf()、cnpj() |
ca | カナダ | CaValidation | |
ch | スイス | ChValidation | |
cn | 中国 (本土) | CnValidation | |
cz | チェコ | CzValidation | |
de | ドイツ | DeValidation | address1()、dob() |
dk | デンマーク | DkValidation | |
es | スペイン | EsValidation | |
fr | フランス | FrValidation | |
gb | イギリス | GbValidation | |
hr | クロアチア | HrValidation | |
id | インドネシア | IdValidation | mobile() |
in | インド | InValidation | |
ir | イラン | IrValidation | alphaNumeric()、numeric()、cc()、mobile() |
it | イタリア | ItValidation | cf() |
jp | 日本 | JpValidation | hiragana()、katakana()、zenkaku() |
lt | リトアニア | LtValidation | |
mx | メキシコ | MxValidation | |
nl | オランダ | NlValidation | |
no | ノルウェー | NoValidation | dob() |
pl | ポーランド | PlValidation | pesel()、regon() |
pt | ポルトガル | PtValidation | |
ro | ルーマニア | RoValidation | |
rs | セルビア | RsValidation | addressCode()、jmbg() |
ru | ロシア | RuValidation | address1()、passport()、vatin()、snils() |
sk | スロバキア | SkValidation | |
tr | トルコ | TrValidation | trIdentityNumber() |
tw | 台湾 | TwValidation | ubn()、nicn() |
uk | イギリス (非推奨。gb を使ってください) | UkValidation | |
us | アメリカ合衆国 | UsValidation |
モデルのバリデーション
ローカライズされたバリデーションクラスは、モデルのフィールドのバリデーションに使えます。
App::uses('MxValidation', 'Localized.Validation');
class Post extends AppModel
{
public $validate = [
'postal' => [
'valid' => [
'rule' => ['postal', null, 'mx'],
'message' => 'Must be valid mexico postal code',
],
],
];
}バリデーションルールについて詳しくは、クックブックの データバリデーション をご覧ください。
Validation でローカライズされたバリデーションを使う
バリデーションクラスをインポートすれば、Validation のメソッドを呼ぶところならどこでも、ローカライズ されたバリデーターを使えます。
App::uses('CzValidation', 'Localized.Validation');
if (Validation::postal($value, null, 'cz')) {
// Do something with valid postal code
}バリデーションの動的な振り分け
複数のローカライズを使う場合は、次のようなコードで、クラスを手動で読み込んで準備する手間を減らせます。
// Inside your custom validation rule validatePostal()
// $country (de, at, ...) and $value (12345, 1234, ...) given
$className = ucfirst($country) . 'Validation';
App::uses($className, 'Localized.Validation');
// Skip if we don't have that country, then only check for existence
if (!class_exists($className) || !method_exists($className, 'postal')) {
return !empty($value);
}
try {
$result = Validation::postal($value, null, $country);
} catch (NotImplementedException $e) {
$result = !empty($value);
}
return $result;PO ファイル
このプラグインには、コアのクライアント向けの翻訳文字列 (cake ドメイン) の翻訳も含まれています。 これらのファイルを使うには、想定された場所 resources/locales/<locale>/LC_MESSAGES/cake.po (レガシーレイアウトでは app/Locale/<locale>/LC_MESSAGES/cake.po) にリンクするかコピーしてください。
LC_TIME ファイル
このプラグインには、LC_TIME ドメインの時刻に関する文字列の翻訳に使われる、POSIX 準拠の LC_TIME ファイルも含まれています。これらのファイルを使うには、想定された場所 resources/locales/<locale>/LC_TIME (レガシーレイアウトでは app/Locale/<locale>/LC_TIME) にリンクするかコピーしてください。
移行ガイド
Localized.Validation
バリデーションファイルの lib パスが変わりました。APP/Validation/ か APP/PluginName/Validation/ の どちらかに置く必要があります。
それに合わせて App::uses() 文も変更する必要があります。 App::uses('MxValidation', 'Localized.Lib'); は App::uses('MxValidation', 'Localized.Validation'); になります。
Localized への貢献
自分の国が Localized プラグインにない場合は、GitHub でプロジェクトをフォークし、バリデーターのクラス (とそのテストケース) をコミットして、プルリクエストを送ってください。 コントリビューションガイドライン をご覧ください。
バリデーションメソッド
すべてのクラスに共通のメソッドがいくつかあり、インターフェース ValidationInterface で定義されています。
phone(): 電話番号をチェックしますpostal(): 郵便番号をチェックしますpersonId()(後方互換性のためのssn()も): 国ごとの個人識別番号をチェックします
バリデーションルールは、できるだけこの命名規則に合わせてください。もちろん、それとは別に、実装クラスに さらにバリデーションメソッドを定義することもできます。
由来
このパッケージは cakephp/localized (Packagist では cakephp/localized、アップストリームの最終バージョンは 2.7.0) のメンテナンスされたフォークで、元は CakePHP コミュニティ (Cake Software Foundation, Inc.) によって作られました。 pieceofcake2 が、モダンな PHP 上の CakePHP 2 向けにメンテナンスしています。 オリジナルからの変更点は フォーク以降のコミット履歴 にあります。
