LoginSignup
7
8

More than 5 years have passed since last update.

ついカッとなってFuelPHPのvalid_stringのparam部分のエラーメッセージを日本語化した

Last updated at Posted at 2014-08-28

仕事でvalid_stringのparam部分のエラーメッセージを日本語化しなければならなかったので、コードを書いた。
今後の参考に慣ればと思い、書き残しておく。

方針

  1. coreを拡張する
  2. langファイルを使う

コード

もういきなりコード紹介

拡張したcoreのコード

app/classes/core/validation/error.php
<?php

class Validation_Error extends Fuel\Core\Validation_Error
{
    public static function _init()
    {
        parent::_init();

        \Lang::load('validation_params', true);
    }

    protected function _replace_tags($msg)
    {
        // あとでもとに戻すためにコピーしておく
        $params = $this->params;

        if ($this->rule === 'valid_string')
        {
            foreach ($this->params as $key => $val)
            {
                foreach ($val as $k => $v)
                {
                    // ここで param:1 の部分を日本語化
                    $this->params[$key][$k] = \Lang::get('validation_params.' . $this->rule . '.' . $v) ?: $v;
                }
            }
        }

        $msg = parent::_replace_tags($msg);

        $this->params = $params;

        return $msg;
    }
}

作った言語ファイル

app/lang/ja/validation_params.php
<?php

return array(
    'valid_string' => array(
        'numeric' => '整数',
    ),
);

bootstrapで読み込む

app/bootstrap.php
<?php

// ...

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

おしまい

念のため最低限必要なときだけ翻訳して、あとは戻すことで影響を最小限にした。
そもそも別のruleとかにしておけばこんなにめんどくさい事はしなくていいんだけど...。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8