From 277451a42c8fac9c4dfc8f4d4c54e0e7a19e0dc1 Mon Sep 17 00:00:00 2001 From: Rick Ellis Date: Sat, 20 Sep 2008 03:42:20 +0000 Subject: Added the ability to set translatable field names --- system/libraries/Form_validation.php | 34 ++++++++++++++++++++++++++----- user_guide/libraries/form_validation.html | 25 ++++++++++++++++++++++- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php index c2749a0cf..1ba98bef4 100644 --- a/system/libraries/Form_validation.php +++ b/system/libraries/Form_validation.php @@ -504,11 +504,11 @@ class CI_Form_validation { } else { - $line = $this->_error_messages['isset']; + $line = $this->_translate_fieldname('isset'); } // Build the error message - $message = sprintf($line, $row['label']); + $message = sprintf($line, $this->_translate_fieldname($row['label'])); // Save the error message $this->_field_data[$row['field']]['error'] = $message; @@ -646,11 +646,11 @@ class CI_Form_validation { } else { - $line = $this->_error_messages[$rule]; + $line = $this->_translate_fieldname($rule); } // Build the error message - $message = sprintf($line, $row['label'], $param); + $message = sprintf($line, $this->_translate_fieldname($row['label']), $param); // Save the error message $this->_field_data[$row['field']]['error'] = $message; @@ -663,7 +663,31 @@ class CI_Form_validation { return; } } - } + } + + // -------------------------------------------------------------------- + + /** + * Translate a field name + * + * @access private + * @param string the field name + * @return string + */ + function _translate_fieldname($fieldname) + { + // Do we need to translate the field name? + // We look for the prefix lang: to determine this + if (substr($fieldname, 0, 5) == 'lang:') + { + $label = $this->CI->lang->line(substr($fieldname, 5)); + + // Were we able to translate the field name? + $fieldname = ($label === FALSE) ? substr($fieldname, 5) : $label; + } + + return $fieldname; + } // -------------------------------------------------------------------- diff --git a/user_guide/libraries/form_validation.html b/user_guide/libraries/form_validation.html index cd5bc2a81..f7fede674 100644 --- a/user_guide/libraries/form_validation.html +++ b/user_guide/libraries/form_validation.html @@ -77,6 +77,7 @@ have left the old class in the library so applications currently using it will n
  • Callbacks
  • Setting Error Messages
  • Changing the Error Delimiters
  • +
  • Translating Field Names
  • Showing Errors Individually
  • Saving Sets of Validation Rules to a Config File
  • Using Arrays as Field Names
  • @@ -296,7 +297,7 @@ at the same time. To set validation rules you will use the set_rules()
  • The field name - the exact name you've given the form field.
  • -
  • A "human" name for this field, which will be inserted into the error message. For example, if your field is named "user" you might give it a human name of "Username".
  • +
  • A "human" name for this field, which will be inserted into the error message. For example, if your field is named "user" you might give it a human name of "Username". Note: If you would like the field name to be stored in a language file, please see Translating Field Names.
  • The validation rules for this form field.
  • @@ -590,6 +591,28 @@ it is assumed that the data is your newly processed form data.

    + +

    Translating Field Names

    + +

    If you would like to store the "human" name you passed to the set_rules() function in a language file, and therefore make the name able to be translated, here's how:

    + +

    First, prefix your "human" name with lang:, as in this example:

    + + +$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');
    +
    + +

    Then, store the name in one of your language file arrays (without the prefix):

    + +$lang['first_name'] = 'First Name'; + +

    Note: If you store your array item in a language file that is not loaded automatically by CI, you'll need to remember to load it in your controller using:

    + +$this->lang->load('file_name'); + +

    See the Language Class page for more info regarding language files.

    + +

    Changing the Error Delimiters

    -- cgit v1.2.3-24-g4f1b