summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorxue <>2006-02-27 02:45:59 +0000
committerxue <>2006-02-27 02:45:59 +0000
commit7956ad5e7ed68e4d35ee021986830fe06a7b071e (patch)
tree27708da400de367685a9e57e1335614bf491fbce /framework
parentf6a0691f3cd3ae16dee61b86d0fcfea27a3f751b (diff)
Changed the way of passing parameters to exception messages.
Diffstat (limited to 'framework')
-rw-r--r--framework/Exceptions/TException.php27
-rw-r--r--framework/Exceptions/messages.txt210
2 files changed, 126 insertions, 111 deletions
diff --git a/framework/Exceptions/TException.php b/framework/Exceptions/TException.php
index 60b47193..8ace1535 100644
--- a/framework/Exceptions/TException.php
+++ b/framework/Exceptions/TException.php
@@ -38,13 +38,24 @@ class TException extends Exception
{
private $_errorCode='';
+ /**
+ * Constructor.
+ * @param string error message. This can be a string that is listed
+ * in the message file. If so, the message in the preferred language
+ * will be used as the error message. Any rest parameters will be used
+ * to replace placeholders ({0}, {1}, {2}, etc.) in the message.
+ */
public function __construct($errorMessage)
{
$this->_errorCode=$errorMessage;
+ $errorMessage=$this->translateErrorMessage($errorMessage);
$args=func_get_args();
- $args[0]=$this->translateErrorMessage($errorMessage);
- $str=call_user_func_array('sprintf',$args);
- parent::__construct($str);
+ array_shift($args);
+ $n=count($args);
+ $tokens=array();
+ for($i=0;$i<$n;++$i)
+ $tokens['{'.$i.'}']=TPropertyValue::ensureString($args[$i]);
+ parent::__construct(strtr($errorMessage,$tokens));
}
protected function translateErrorMessage($key)
@@ -164,11 +175,15 @@ class THttpException extends TSystemException
{
$this->_statusCode=$statusCode;
$this->setErrorCode($errorMessage);
+ $errorMessage=$this->translateErrorMessage($errorMessage);
$args=func_get_args();
array_shift($args);
- $args[0]=$this->translateErrorMessage($errorMessage);
- $str=call_user_func_array('sprintf',$args);
- $this->setErrorMessage($str);
+ array_shift($args);
+ $n=count($args);
+ $tokens=array();
+ for($i=0;$i<$n;++$i)
+ $tokens['{'.$i.'}']=TPropertyValue::ensureString($args[$i]);
+ parent::__construct(strtr($errorMessage,$tokens));
}
public function getStatusCode()
diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt
index b9b1ffb0..c9b9af7a 100644
--- a/framework/Exceptions/messages.txt
+++ b/framework/Exceptions/messages.txt
@@ -1,56 +1,56 @@
prado_application_singleton_required = Prado.Application must only be set once.
-prado_component_unknown = Unknown component type '%s'.
-prado_using_invalid = '%s' is not a valid namespace to be used. Make sure '.*' is appended if you want to use a namespace referring to a directory.
-prado_alias_redefined = Alias '%s' cannot be redefined.
-prado_alias_invalid = Alias '%s' refers to an invalid path '%s'. Only existing directories can be aliased.
-prado_aliasname_invalid = Alias '%s' contains invalid character '.'.
-
-component_property_undefined = Component property '%s.%s' is not defined.
-component_property_readonly = Component property '%s.%s' is read-only.
-component_event_undefined = Component event '%s.%s' is not defined.
-component_eventhandler_invalid = Component event '%s.%s' is attached with an invalid event handler.
-component_expression_invalid = Component '%s' is evaluating an invalid expression '%s' : %s.
-component_statements_invalid = Component '%s' is evaluating invalid PHP statements '%s' : %s.
-
-propertyvalue_enumvalue_invalid = Value '%s' is a not valid enumeration value (%s).
-
-list_index_invalid = Index '%d' is out of range.
+prado_component_unknown = Unknown component type '{0}'.
+prado_using_invalid = '{0}' is not a valid namespace to be used. Make sure '.*' is appended if you want to use a namespace referring to a directory.
+prado_alias_redefined = Alias '{0}' cannot be redefined.
+prado_alias_invalid = Alias '{0}' refers to an invalid path '{1}'. Only existing directories can be aliased.
+prado_aliasname_invalid = Alias '{0}' contains invalid character '.'.
+
+component_property_undefined = Component property '{0}.{1}' is not defined.
+component_property_readonly = Component property '{0}.{1}' is read-only.
+component_event_undefined = Component event '{0}.{1}' is not defined.
+component_eventhandler_invalid = Component event '{0}.{1}' is attached with an invalid event handler.
+component_expression_invalid = Component '{0}' is evaluating an invalid expression '{1}' : {2}.
+component_statements_invalid = Component '{0}' is evaluating invalid PHP statements '{1}' : {2}.
+
+propertyvalue_enumvalue_invalid = Value '{0}' is a not valid enumeration value ({1}).
+
+list_index_invalid = Index '{0}' is out of range.
list_item_inexistent = The item cannot be found in the list.
list_data_not_iterable = Data must be either an array or an object implementing Traversable interface.
-list_readonly = %s is read-only.
+list_readonly = {0} is read-only.
map_addition_disallowed = The new item cannot be added to the map.
map_item_unremovable = The item cannot be removed from the map.
map_data_not_iterable = Data must be either an array or an object implementing Traversable interface.
-map_readonly = %s is read-only.
+map_readonly = {0} is read-only.
-application_basepath_invalid = Application base path '%s' does not exist or is not a directory.
-application_runtimepath_invalid = Application runtime path '%s' does not exist or is not writable by Web server process.
-application_service_invalid = Service '%s' must implement IService interface.
-application_service_unknown = Requested service '%s' is not defined.
+application_basepath_invalid = Application base path '{0}' does not exist or is not a directory.
+application_runtimepath_invalid = Application runtime path '{0}' does not exist or is not writable by Web server process.
+application_service_invalid = Service '{0}' must implement IService interface.
+application_service_unknown = Requested service '{0}' is not defined.
application_service_unavailable = Service Unavailable.
-application_moduleid_duplicated = Application module ID '%s' is not unique.
+application_moduleid_duplicated = Application module ID '{0}' is not unique.
-appconfig_aliaspath_invalid = Application configuration <alias id="%s"> uses an invalid file path "%s".
+appconfig_aliaspath_invalid = Application configuration <alias id="{0}"> uses an invalid file path "{1}".
appconfig_alias_invalid = Application configuration <alias> element must have an "id" attribute and a "path" attribute.
-appconfig_alias_redefined = Application configuration <alias id="%s"> cannot be redefined.
+appconfig_alias_redefined = Application configuration <alias id="{0}"> cannot be redefined.
appconfig_using_invalid = Application configuration <using> element must have a "namespace" attribute.
appconfig_moduleid_required = Application configuration <module> element must have an "id" attribute.
-appconfig_moduletype_required = Application configuration <module id="%s"> must have a "class" attribute.
+appconfig_moduletype_required = Application configuration <module id="{0}"> must have a "class" attribute.
appconfig_serviceid_required = Application configuration <service> element must have an "id" attribute.
-appconfig_servicetype_required = Application configuration <service id="%s"> must have a "class" attribute.
+appconfig_servicetype_required = Application configuration <service id="{0}"> must have a "class" attribute.
appconfig_parameterid_required = Application configuration <parameter> element must have an "id" attribute.
-uri_format_invalid = '%s' is not a valid URI.
+uri_format_invalid = '{0}' is not a valid URI.
httpresponse_bufferoutput_unchangeable = THttpResponse.BufferOutput cannot be modified after THttpResponse is initialized.
-httpresponse_file_inexistent = THttpResponse cannot send file '%s'. The file does not exist.
+httpresponse_file_inexistent = THttpResponse cannot send file '{0}'. The file does not exist.
httpsession_sessionid_unchangeable = THttpSession.SessionID cannot be modified after the session is started.
httpsession_sessionname_unchangeable = THttpSession.SessionName cannot be modified after the session is started.
httpsession_sessionname_invalid = THttpSession.SessionName must contain alphanumeric characters only.
httpsession_savepath_unchangeable = THttpSession.SavePath cannot be modified after the session is started.
-httpsession_savepath_invalid = THttpSession.SavePath '%s' is invalid.
+httpsession_savepath_invalid = THttpSession.SavePath '{0}' is invalid.
httpsession_storage_unchangeable = THttpSession.Storage cannot be modified after the session is started.
httpsession_cookiemode_unchangeable = THttpSession.CookieMode cannot be modified after the session is started.
httpsession_autostart_unchangeable = THttpSession.AutoStart cannot be modified after the session module is initialized.
@@ -59,22 +59,22 @@ httpsession_gcprobability_invalid = THttpSession.GCProbability must be an integ
httpsession_transid_unchangeable = THttpSession.UseTransparentSessionID cannot be modified after the session is started.
httpsession_maxlifetime_unchangeable = THttpSession.Timeout cannot be modified after the session is started.
-assetmanager_basepath_invalid = TAssetManager.BasePath '%s' is invalid. Make sure it is in namespace form and points to a directory writable by the Web server process.
+assetmanager_basepath_invalid = TAssetManager.BasePath '{0}' is invalid. Make sure it is in namespace form and points to a directory writable by the Web server process.
assetmanager_basepath_unchangeable = TAssetManager.BasePath cannot be modified after the module is initialized.
assetmanager_baseurl_unchangeable = TAssetManager.BaseUrl cannot be modified after the module is initialized.
-assetmanager_filepath_invalid = TAssetManager is publishing an invalid file '%s'.
-assetmanager_tarchecksum_invalid = TAssetManager is publishing a tar file with invalid checksum '%s'.
-assetmanager_tarfile_invalid = TAssetManager is publishing an invalid tar file '%s'.
+assetmanager_filepath_invalid = TAssetManager is publishing an invalid file '{0}'.
+assetmanager_tarchecksum_invalid = TAssetManager is publishing a tar file with invalid checksum '{0}'.
+assetmanager_tarfile_invalid = TAssetManager is publishing an invalid tar file '{0}'.
sqlitecache_extension_required = TSqliteCache requires SQLite PHP extension.
sqlitecache_dbfile_required = TSqliteCache.DbFile is required.
-sqlitecache_connection_failed = TSqliteCache database connection failed. %s.
-sqlitecache_table_creation_failed = TSqliteCache failed to create cache database. %s.
+sqlitecache_connection_failed = TSqliteCache database connection failed. {0}.
+sqlitecache_table_creation_failed = TSqliteCache failed to create cache database. {0}.
sqlitecache_dbfile_unchangeable = TSqliteCache.DbFile cannot be modified after the module is initialized.
sqlitecache_dbfile_invalid = TSqliteCache.DbFile is invalid. Make sure it is in a proper namespace format.
memcache_extension_required = TMemCache requires memcache PHP extension.
-memcache_connection_failed = TMemCache failed to connect to memcache server %s:%d.
+memcache_connection_failed = TMemCache failed to connect to memcache server {0}:{1}.
memcache_host_unchangeable = TMemCache.Host cannot be modified after the module is initialized.
memcache_port_unchangeable = TMemCache.Port cannot be modified after the module is initialized.
@@ -82,42 +82,42 @@ apccache_extension_required = TAPCCache requires APC PHP extension.
apccache_add_unsupported = TAPCCache.add() is not supported.
apccache_replace_unsupported = TAPCCache.replace() is not supported.
-errorhandler_errortemplatepath_invalid = TErrorHandler.ErrorTemplatePath '%s' is invalid. Make sure it is in namespace form and points to a valid directory containing error template files.
+errorhandler_errortemplatepath_invalid = TErrorHandler.ErrorTemplatePath '{0}' is invalid. Make sure it is in namespace form and points to a valid directory containing error template files.
-pageservice_page_unknown = Page '%s' Not Found
-pageservice_pageclass_unknown = Page class '%s' is unknown.
-pageservice_basepath_invalid = TPageService.BasePath '%s' is not a valid directory.
+pageservice_page_unknown = Page '{0}' Not Found
+pageservice_pageclass_unknown = Page class '{0}' is unknown.
+pageservice_basepath_invalid = TPageService.BasePath '{0}' is not a valid directory.
pageservice_page_required = Page Name Required
pageservice_defaultpage_unchangeable = TPageService.DefaultPage cannot be modified after the service is initialized.
pageservice_basepath_unchangeable = TPageService.BasePath cannot be modified after the service is initialized.
-pageserviceconf_file_invalid = Unable to open page directory configuration file '%s'.
-pageserviceconf_aliaspath_invalid = <alias id="%s"> uses an invalid file path "%s" in page directory configuration file '%s'.
-pageserviceconf_alias_invalid = <alias> element must have an "id" attribute and a "path" attribute in page directory configuration file '%s'.
-pageserviceconf_using_invalid = <using> element must have a "namespace" attribute in page directory configuration file '%s'.
-pageserviceconf_module_invalid = <module> element must have an "id" attribute in page directory configuration file '%s'.
-pageserviceconf_moduletype_required = <module id="%s"> must have a "class" attribute in page directory configuration file '%s'.
-pageserviceconf_parameter_invalid = <parameter> element must have an "id" attribute in page directory configuration file '%s'.
-pageserviceconf_page_invalid = <page> element must have an "id" attribute in page directory configuration file '%s'.
-
-template_closingtag_unexpected = Unexpected closing tag '%s' is found.
-template_closingtag_expected = Closing tag '%s' is expected.
-template_directive_nonunique = Directive '<%%@ ... %%>' must appear at most once in a template.
+pageserviceconf_file_invalid = Unable to open page directory configuration file '{0}'.
+pageserviceconf_aliaspath_invalid = <alias id="{0}"> uses an invalid file path "{1}" in page directory configuration file '{2}'.
+pageserviceconf_alias_invalid = <alias> element must have an "id" attribute and a "path" attribute in page directory configuration file '{0}'.
+pageserviceconf_using_invalid = <using> element must have a "namespace" attribute in page directory configuration file '{0}'.
+pageserviceconf_module_invalid = <module> element must have an "id" attribute in page directory configuration file '{0}'.
+pageserviceconf_moduletype_required = <module id="{0}"> must have a "class" attribute in page directory configuration file '{1}'.
+pageserviceconf_parameter_invalid = <parameter> element must have an "id" attribute in page directory configuration file '{0}'.
+pageserviceconf_page_invalid = <page> element must have an "id" attribute in page directory configuration file '{0}'.
+
+template_closingtag_unexpected = Unexpected closing tag '{0}' is found.
+template_closingtag_expected = Closing tag '{0}' is expected.
+template_directive_nonunique = Directive '<%@ ... %>' must appear at most once in a template.
template_comments_forbidden = Template comments are not allowed within property tags.
template_matching_unexpected = Unexpected matching.
-template_property_unknown = %s has no property called '%s'.
-template_event_unknown = %s has no event called '%s'.
-template_property_readonly = %s has a read-only property '%s'.
-template_event_forbidden = %s is a non-control component. No handler can be attached to its event '%s' in a template.
-template_databind_forbidden = %s is a non-control component. No databinding expression can be set to its property '%s'.
-template_component_required = '%s' is not a component. Only components can appear in a template.
-template_format_invalid = Error in %s (line %d) : %s
-template_format_invalid2 = Error at line %d of the following template: %s %s
-template_eventhandler_invalid = An invalid event handler is attached to %s's event '%s'.
-template_property_duplicated = Property %s is configured twice or more.
-
-xmldocument_file_read_failed = TXmlDocument is unable to read file '%s'.
-xmldocument_file_write_failed = TXmlDocument is unable to write file '%s'.
+template_property_unknown = {0} has no property called '{1}'.
+template_event_unknown = {0} has no event called '{1}'.
+template_property_readonly = {0} has a read-only property '{1}'.
+template_event_forbidden = {0} is a non-control component. No handler can be attached to its event '{1}' in a template.
+template_databind_forbidden = {0} is a non-control component. No databinding expression can be set to its property '{1}'.
+template_component_required = '{0}' is not a component. Only components can appear in a template.
+template_format_invalid = Error in {0} (line {1}) : {2}
+template_format_invalid2 = Error at line {0} of the following template: {1} {2}
+template_eventhandler_invalid = An invalid event handler is attached to {0}'s event '{1}'.
+template_property_duplicated = Property {0} is configured twice or more.
+
+xmldocument_file_read_failed = TXmlDocument is unable to read file '{0}'.
+xmldocument_file_write_failed = TXmlDocument is unable to write file '{0}'.
xmlelementlist_xmlelement_required = TXmlElementList can only accept TXmlElement objects.
@@ -126,45 +126,45 @@ authorizationrule_verb_invalid = TAuthorizationRule.Verb can only take 'get' o
authorizationrulecollection_authorizationrule_required = TAuthorizationRuleCollection can only accept TAuthorizationRule objects.
-usermanager_userfile_invalid = TUserManager.UserFile '%s' is not a valid file.
+usermanager_userfile_invalid = TUserManager.UserFile '{0}' is not a valid file.
usermanager_userfile_unchangeable = TUserManager.UserFile cannot be modified. The user module has been initialized already.
authmanager_usermanager_required = TAuthManager.UserManager must be assigned a value.
-authmanager_usermanager_inexistent = TAuthManager.UserManager '%s' does not refer to an ID of application module.
-authmanager_usermanager_invalid = TAuthManager.UserManager '%s' does not refer to a valid TUserManager application module.
+authmanager_usermanager_inexistent = TAuthManager.UserManager '{0}' does not refer to an ID of application module.
+authmanager_usermanager_invalid = TAuthManager.UserManager '{0}' does not refer to a valid TUserManager application module.
authmanager_usermanager_unchangeable = TAuthManager.UserManager cannot be modified after the module is initialized.
authmanager_session_required = TAuthManager requires a session application module.
-thememanager_basepath_invalid = TThemeManager.BasePath '%s' is not a valid directory.
+thememanager_basepath_invalid = TThemeManager.BasePath '{0}' is not a valid directory.
thememanager_basepath_unchangeable = TThemeManager.BasePath cannot be modified after the module is initialized.
theme_baseurl_required = TThemeManager.BasePath is required. By default, a directory named 'themes' under the directory containing the application entry script is assumed.
-theme_path_inexistent = Theme path '%s' does not exist.
-theme_control_nested = Skin for control type '%s' in theme '%s' cannot be within another skin.
-theme_skinid_duplicated = SkinID '%s.%s' is duplicated in theme '%s'.
-theme_databind_forbidden = Databind cannot be used in theme '%s' for control skin '%s.%s' about property '%s'.
-theme_property_readonly = Skin is being applied to a read-only control property '%s.%s'.
-theme_property_undefined = Skin is being applied to an inexistent control property '%s.%s'.
-
-control_object_reregistered = Duplicated object ID '%s' found.
-control_id_invalid = %s.ID '%s' is invalid. Only alphanumeric and underline characters are allowed. The first character must be an alphabetic or underline character.
-control_skinid_unchangeable = %s.SkinID cannot be modified after a skin has been applied to the control or the child controls have been created.
-control_enabletheming_unchangeable = %s.EnableTheming cannot be modified after the child controls have been created.
-control_stylesheet_applied = StyleSheet skin has already been applied to %s.
-control_id_nonunique = %s.ID '%s' is not unique among all controls under the same naming container.
+theme_path_inexistent = Theme path '{0}' does not exist.
+theme_control_nested = Skin for control type '{0}' in theme '{1}' cannot be within another skin.
+theme_skinid_duplicated = SkinID '{0}.{1}' is duplicated in theme '{2}'.
+theme_databind_forbidden = Databind cannot be used in theme '{0}' for control skin '{1}.{2}' about property '{3}'.
+theme_property_readonly = Skin is being applied to a read-only control property '{0}.{1}'.
+theme_property_undefined = Skin is being applied to an inexistent control property '{0}.{1}'.
+
+control_object_reregistered = Duplicated object ID '{0}' found.
+control_id_invalid = {0}.ID '{1}' is invalid. Only alphanumeric and underline characters are allowed. The first character must be an alphabetic or underline character.
+control_skinid_unchangeable = {0}.SkinID cannot be modified after a skin has been applied to the control or the child controls have been created.
+control_enabletheming_unchangeable = {0}.EnableTheming cannot be modified after the child controls have been created.
+control_stylesheet_applied = StyleSheet skin has already been applied to {0}.
+control_id_nonunique = {0}.ID '{1}' is not unique among all controls under the same naming container.
templatecontrol_mastercontrol_invalid = Master control must be of type TTemplateControl or a child class.
-templatecontrol_contentid_duplicated = TContent ID '%s' is duplicated.
-templatecontrol_placeholderid_duplicated= TContentPlaceHolder ID '%s' is duplicated.
+templatecontrol_contentid_duplicated = TContent ID '{0}' is duplicated.
+templatecontrol_placeholderid_duplicated= TContentPlaceHolder ID '{0}' is duplicated.
page_form_duplicated = A page can contain at most one TForm. Use regular HTML form tags for the rest forms.
page_isvalid_unknown = TPage.IsValid has not been evaluated yet.
-page_postbackcontrol_invalid = Unable to determine postback control '%s'.
-page_control_outofform = Control '%s' must be enclosed within TForm.
+page_postbackcontrol_invalid = Unable to determine postback control '{0}'.
+page_control_outofform = Control '{0}' must be enclosed within TForm.
page_head_duplicated = A page can contain at most one THead.
page_statepersister_invalid = Page state persister must implement IPageStatePersister interface.
-csmanager_pradoscript_invalid = Unknown Prado script library name '%s'.
+csmanager_pradoscript_invalid = Unknown Prado script library name '{0}'.
contentplaceholder_id_required = TContentPlaceHolder must have an ID.
@@ -174,20 +174,20 @@ controllist_control_required = TControlList can only accept strings or TContro
emptycontrollist_addition_disallowed = Child controls are not allowed.
-webcontrol_accesskey_invalid = %s.AccessKey '%s' is invalid. It must be a single character only.
-webcontrol_style_invalid = %s.Style must take string value only.
+webcontrol_accesskey_invalid = {0}.AccessKey '{1}' is invalid. It must be a single character only.
+webcontrol_style_invalid = {0}.Style must take string value only.
-listcontrol_selection_invalid = %s has an invalid selection that is set before performing databinding.
-listcontrol_selectedindex_invalid = %s.SelectedIndex has an invalid value %d.
-listcontrol_selectedvalue_invalid = %s.SelectedValue has an invalid value '%s'.
+listcontrol_selection_invalid = {0} has an invalid selection that is set before performing databinding.
+listcontrol_selectedindex_invalid = {0}.SelectedIndex has an invalid value {1}.
+listcontrol_selectedvalue_invalid = {0}.SelectedValue has an invalid value '{1}'.
-label_associatedcontrol_invalid = TLabel.AssociatedControl '%s' cannot be found.
+label_associatedcontrol_invalid = TLabel.AssociatedControl '{0}' cannot be found.
hiddenfield_focus_unsupported = THiddenField does not support setting input focus.
hiddenfield_theming_unsupported = THiddenField does not support theming.
hiddenfield_skinid_unsupported = THiddenField does not support control skin.
-panel_defaultbutton_invalid = TPanel.DefaultButton '%s' does not refer to an existing button control.
+panel_defaultbutton_invalid = TPanel.DefaultButton '{0}' does not refer to an existing button control.
tablestyle_cellpadding_invalid = TTableStyle.CellPadding must take an integer equal to or greater than -1.
tablestyle_cellspacing_invalid = TTableStyle.CellSpacing must take an integer equal to or greater than -1.
@@ -206,11 +206,11 @@ bulletedlist_selectedvalue_unsupported = TBulletedList.SelectedValue is read-onl
radiobuttonlist_selectedindices_unsupported = TRadioButtonList.SelectedIndices is read-only.
-logrouter_configfile_invalid = TLogRouter.ConfigFile '%s' does not exist.
+logrouter_configfile_invalid = TLogRouter.ConfigFile '{0}' does not exist.
logrouter_routeclass_required = Class attribute is required in <route> configuration.
logrouter_routetype_required = Log route must be an instance of TLogRoute or its derived class.
-filelogroute_logpath_invalid = TFileLogRoute.LogPath '%s' must be a directory in namespace format and must be writable by the Web server process.
+filelogroute_logpath_invalid = TFileLogRoute.LogPath '{0}' must be a directory in namespace format and must be writable by the Web server process.
filelogroute_maxfilesize_invalid = TFileLogRoute.MaxFileSize must be greater than 0.
filelogroute_maxlogfiles_invalid = TFileLogRoute.MaxLogFiles must be greater than 0.
@@ -218,15 +218,15 @@ emaillogroute_sentfrom_required = TEmailLogRoute.SentFrom cannot be empty.
repeatinfo_repeatcolumns_invalid = TRepeatInfo.RepeatColumns must be no less than 0.
-basevalidator_controltovalidate_invalid = %s.ControlToValidate is empty or contains an invalid control ID path.
-basevalidator_validatable_required = %s.ControlToValidate must point to a control implementing IValidatable interface.
-basevalidator_forcontrol_unsupported = %s.ForControl is not supported.
+basevalidator_controltovalidate_invalid = {0}.ControlToValidate is empty or contains an invalid control ID path.
+basevalidator_validatable_required = {0}.ControlToValidate must point to a control implementing IValidatable interface.
+basevalidator_forcontrol_unsupported = {0}.ForControl is not supported.
comparevalidator_controltocompare_invalid = TCompareValidator.ControlToCompare contains an invalid control ID path.
-repeater_template_required = TRepeater.%s requires a template instance implementing ITemplate interface.
-datalist_template_required = TDataList.%s requires a template instance implementing ITemplate interface.
-templatecolumn_template_required = TTemplateColumn.%s requires a template instance implementing ITemplate interface.
+repeater_template_required = TRepeater.{0} requires a template instance implementing ITemplate interface.
+datalist_template_required = TDataList.{0} requires a template instance implementing ITemplate interface.
+templatecolumn_template_required = TTemplateColumn.{0} requires a template instance implementing ITemplate interface.
datagrid_currentpageindex_invalid = TDataGrid.CurrentPageIndex must be no less than 0.
datagrid_pagesize_invalid = TDataGrid.PageSize must be greater than 0.
@@ -234,8 +234,8 @@ datagrid_virtualitemcount_invalid = TDataGrid.VirtualItemCount must be no less
datagridpagerstyle_pagebuttoncount_invalid = TDataGridPagerStyle.PageButtonCount must be greater than 0.
-datafieldaccessor_data_invalid = TDataFieldAccessor is trying to evaluate a field value of an invalid data. Make sure the data is an array, TMap, TList, or object that contains the specified field '%s'.
-datafieldaccessor_datafield_invalid = TDataFieldAccessor is trying to evaluate data value of an unknown field '%s'.
+datafieldaccessor_data_invalid = TDataFieldAccessor is trying to evaluate a field value of an invalid data. Make sure the data is an array, TMap, TList, or object that contains the specified field '{0}'.
+datafieldaccessor_datafield_invalid = TDataFieldAccessor is trying to evaluate data value of an unknown field '{0}'.
repeateritemcollection_repeateritem_required = TRepeaterItemCollection can only accept TRepeaterItem objects.