IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

[fuelPHP] valid_stringのエラーメッセージのparam部分を日本語にする

以前、validationのエラーメッセージを日本語化にする方法を書きました。
[fuelPHP]validationのエラーメッセージを日本語にする

しかしながら、これだけではvalid_stringのエラーのとき、
「◯◯は numeric, dashes で入力してください。」となり、一部英語が残ってしまいます。
ちなみに、ここで「valid_string(numeric, dashes)」と表現されるようだったら、言語ファイルの記述が「:rule(:param:1)」となっていると思うので「:param:1」だけにしておいた方が後で楽です。

というわけで、valid_stringのparam部分も日本語にしたいと思います。

手順

  1. コアを拡張
  2. 言語ファイルを準備
  3. bootstrapで読み込む

コアを拡張

fuel/app/classes/validation/error.php
(ファイルが存在しなければ追加する)

class Validation_Error extends Fuel\Core\Validation_Error
{
	protected function _replace_tags($msg)
	{
		$msg = parent::_replace_tags($msg);
		$find = __('validation.valid_string_params');

		if( $find ){

			$msg = str_replace('valid_string(', '', $msg);
			$msg = str_replace(')', '', $msg);

			foreach( $find as $param => $str ){
				$msg = str_replace($param, $str, $msg);
			}
		}

		return $msg;
	}
}

言語ファイルを準備

fuel/app/lang/ja/validation.php

return array(
	'valid_string_params' => array(
		','            => '、',
		'alpha'        => 'アルファベット',
		'numeric'      => '整数',
		'spaces'       => 'スペース', 
		'newlines'     => '改行', 
		'tabs'         => 'タブ', 
		'dots'         => 'ピリオド',
		'punctuation'  => '区切り文字', 
		'dashes'       => 'ハイフン', 
	),
);

bootstrapで読み込む

fuel/app/bootstrap.php

Autoloader::add_classes(array(
	'Validation_Error' => APPPATH . 'classes/validation/error.php',
));

これで、さっきのエラーメッセージが「◯◯は 整数、ハイフン で入力してください。」に変わるけども、なんだかなー。
応急措置感がハンパない。個別メッセージ対応にした方がいい???

参考