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