AbanteCart Community

AbanteCart Development => Customization help => Topic started by: renato.aloi on March 08, 2017, 03:31:13 PM

Title: Adding language definition entry through extension installation
Post by: renato.aloi on March 08, 2017, 03:31:13 PM
Hi there!

I am experiencing a cruel doubt on how add new language definition item...

What I am trying to do is insert new field in account create form.

Sor far I followed these steps bellow:

1) Hook up my code to create a new field into fields array then calling batchAssign, as follows:

public function onControllerPagesAccountCreate_UpdateData()
{
      $that = $this->baseObject;
      $form = new AForm();
      $form->setForm(array ('form_name' => 'AccountFrm'));
      $that->data['form']['fields']['general']['teste'] = $form->getFieldHtml(
               array (
                     'type'     => 'input',
                     'name'     => 'teste',
                     'value'    => $that->request->post['teste'],
                     'required' => true)
                  );
      $that->view->batchAssign($that->data);
      $that->processTemplate('pages/account/create.tpl');
   }

2) So far, so good. When I reloaded the create account page, the 'teste' field showed up... But for my surprise with no caption text!
>>> See image attached

3) Ok, I learned that I need to insert new language definition under System > Localization menu at Admin page, but there is a catch...

The question is: I am developing a new extension and how do I provide that new language definition at my extension's installation?

I tried to create a new xml file under extensions/myextensionname/language/english/account/create.xml as follows, but it did not work.

<?xml version="1.0"?>
<definitions>
  <definition>
    <key>entry_teste</key>
    <value><![CDATA[Teste Field:]]></value>
  </definition>
  <definition>
    <key>error_teste</key>
    <value><![CDATA[O campo Teste é obrigatório!]]></value>
  </definition>
</definitions>


Any ideas?

Thanks,
Renato
Title: Re: Adding language definition entry through extension installation
Post by: abantecart on March 08, 2017, 04:07:19 PM
You are correct with creating XML language file.

Make sure this XML file is included in main.php of your extension.
Example:
Code: [Select]
$languages = array(
    'storefront' => array(
    'account/create'),

Filed text should be named entry_[field_name]
See this code use in the template:
Code: [Select]
<label class="control-label col-sm-4"><?php echo ${'entry_'.$field_name}; ?></label>
Title: Re: Adding language definition entry through extension installation
Post by: abantecart on March 08, 2017, 04:08:27 PM
Remember that if you change text in XML, you need to delete entire section translation from database (or admin) to have it reloaded again.
Title: Re: Adding language definition entry through extension installation
Post by: renato.aloi on March 08, 2017, 05:33:03 PM
Thank you for your help!

You are right when saying about deleting entire section to force reload from XML language file, provided by my extension.

That is a issue... Because it will only load XML language file for 'account_create' section if (and only if) I delete it before extension installation.

I am thinking a workaround by deleting the language definition section from install.sql file from my extension.

Any thoughts?

Thanks again!

Title: Re: Adding language definition entry through extension installation
Post by: renato.aloi on March 09, 2017, 01:18:57 PM
Hi!

Ok, I've got it! The solution was adding following SQL query install.php extension script:

$this->db->query(
   sprintf("DELETE FROM `%s` WHERE block = '%s' OR block = '%s'",
               $this->db->table('language_definitions'),
               'account_create',
               'account_edit')
);

The command above delete entire sections where my extension wish to add new entries.

Then recreate XML files for that sections, including the new entries, as follows:

Example for: myextension\storefront\language\english\account\create.xml

<?xml version="1.0"?>
<definitions>

<!-- NEW ENTRIES -->

  <definition>
    <key>entry_cpf</key>
    <value><![CDATA[CPF:]]></value>
  </definition>
  <definition>
    <key>error_cpf</key>
    <value><![CDATA[CPF field is mandatory, must be numeric and contains 11 digits!]]></value>
  </definition>
  <definition>
    <key>entry_number</key>
    <value><![CDATA[Number:]]></value>
  </definition>
  <definition>
    <key>error_number</key>
    <value><![CDATA[Residence number field is mandatory and must be between 1 and 6 characters!]]></value>
  </definition>
  <definition>
    <key>entry_complement</key>
    <value><![CDATA[Complement:]]></value>
  </definition>
  <definition>
    <key>error_complement</key>
    <value><![CDATA[Complement field must have less than 128 characters!]]></value>
  </definition>
  <definition>
    <key>entry_district</key>
    <value><![CDATA[District:]]></value>
  </definition>
  <definition>
    <key>error_district</key>
    <value><![CDATA[District field is mandatory and must be between 1 and 128 characters!]]></value>
  </definition>

<!-- /NEW ENTRIES -->

   <definition>
      <key>heading_title</key>
      <value><![CDATA[Create Account]]></value>
   </definition>
   <definition>
      <key>text_account</key>
      <value><![CDATA[Account]]></value>
   </definition>
   <definition>
      <key>text_create</key>
      <value><![CDATA[Register]]></value>
   </definition>
   <definition>
      <key>text_account_already</key>
      <value>
         <![CDATA[If you already have an account with us, please login at the <a style="text-decoration: underline" href="%s">login page</a>.]]></value>
   </definition>
   <definition>
      <key>text_your_details</key>
      <value><![CDATA[Your Personal Details]]></value>
   </definition>
   <definition>
      <key>text_your_address</key>
      <value><![CDATA[Your Address]]></value>
   </definition>
   <definition>
      <key>text_newsletter</key>
      <value><![CDATA[Newsletter]]></value>
   </definition>
   <definition>
      <key>text_your_password</key>
      <value><![CDATA[Your Password]]></value>
   </definition>
   <definition>
      <key>text_agree</key>
      <value><![CDATA[I have read and agree to the ]]></value>
   </definition>
   <definition>
      <key>entry_loginname</key>
      <value><![CDATA[Login name:]]></value>
   </definition>
   <definition>
      <key>entry_firstname</key>
      <value><![CDATA[First Name:]]></value>
   </definition>
   <definition>
      <key>entry_lastname</key>
      <value><![CDATA[Last Name:]]></value>
   </definition>
   <definition>
      <key>entry_email</key>
      <value><![CDATA[E-Mail:]]></value>
   </definition>
   <definition>
      <key>entry_telephone</key>
      <value><![CDATA[Telephone:]]></value>
   </definition>
   <definition>
      <key>entry_fax</key>
      <value><![CDATA[Fax:]]></value>
   </definition>
   <definition>
      <key>entry_company</key>
      <value><![CDATA[Company:]]></value>
   </definition>
   <definition>
      <key>entry_address_1</key>
      <value><![CDATA[Address 1:]]></value>
   </definition>
   <definition>
      <key>entry_address_2</key>
      <value><![CDATA[Address 2:]]></value>
   </definition>
   <definition>
      <key>entry_postcode</key>
      <value><![CDATA[ZIP Code:]]></value>
   </definition>
   <definition>
      <key>entry_city</key>
      <value><![CDATA[City:]]></value>
   </definition>
   <definition>
      <key>entry_country</key>
      <value><![CDATA[Country:]]></value>
   </definition>
   <definition>
      <key>entry_zone</key>
      <value><![CDATA[Region / State:]]></value>
   </definition>
   <definition>
      <key>entry_newsletter</key>
      <value><![CDATA[Subscribe:]]></value>
   </definition>
   <definition>
      <key>entry_password</key>
      <value><![CDATA[Password:]]></value>
   </definition>
   <definition>
      <key>entry_confirm</key>
      <value><![CDATA[Password Confirm:]]></value>
   </definition>
   <definition>
      <key>error_exists</key>
      <value><![CDATA[Error: E-Mail Address is already registered!]]></value>
   </definition>
   <definition>
      <key>error_loginname</key>
      <value><![CDATA[Login name must be alphanumeric only and between 5 and 64 characters!]]></value>
   </definition>
   <definition>
      <key>error_loginname_notunique</key>
      <value><![CDATA[This login name is not available. Try different login name!]]></value>
   </definition>
   <definition>
      <key>error_firstname</key>
      <value><![CDATA[First Name must be between 1 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_lastname</key>
      <value><![CDATA[Last Name must be between 1 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_email</key>
      <value><![CDATA[E-Mail Address does not appear to be valid!]]></value>
   </definition>
   <definition>
      <key>error_email_exists</key>
      <value><![CDATA[EMail Address is Already Exists!]]></value>
   </definition>
   <definition>
      <key>error_password</key>
      <value><![CDATA[Password must be between 4 and 20 characters!]]></value>
   </definition>
   <definition>
      <key>error_confirm</key>
      <value><![CDATA[Password confirmation does not match password!]]></value>
   </definition>
   <definition>
      <key>error_address_1</key>
      <value><![CDATA[Address 1 must be between 3 and 128 characters!]]></value>
   </definition>
   <definition>
      <key>error_city</key>
      <value><![CDATA[City must be between 3 and 128 characters!]]></value>
   </definition>
   <definition>
      <key>error_postcode</key>
      <value><![CDATA[Zip/postal code must be between 3 and 10 characters!]]></value>
   </definition>
   <definition>
      <key>error_country</key>
      <value><![CDATA[Please select a country!]]></value>
   </definition>
   <definition>
      <key>error_zone</key>
      <value><![CDATA[Please select a region / state!]]></value>
   </definition>
   <definition>
      <key>error_telephone</key>
      <value><![CDATA[Telephone must be between 3 and 32 characters!]]></value>
   </definition>
   <definition>
      <key>error_agree</key>
      <value><![CDATA[Error: You must agree to the %s!]]></value>
   </definition>
   <definition>
      <key>text_full_register</key>
      <value><![CDATA[Become a customer and register with your details]]></value>
   </definition>
   <definition>
      <key>text_subscribe_register</key>
      <value><![CDATA[Become a newsletter subscriber]]></value>
   </definition>
   <definition>
      <key>text_success_subscribe_heading</key>
      <value><![CDATA[You have subscribed successfully!]]></value>
   </definition>
   <definition>
      <key>text_success_subscribe</key>
      <value><![CDATA[Success: Your newsletter subscription has been successfully created!]]></value>
   </definition>
   <definition>
      <key>error_subscriber_exists</key>
      <value><![CDATA[Our records indicate that you have an account with us. Please login to your account to manage your newsletter subscription.]]></value>
   </definition>
   <definition>
      <key>text_new_customer</key>
      <value><![CDATA[New customer registration approval is pending]]></value>
   </definition>
   <definition>
      <key>text_pending_customer_approval</key>
      <value><![CDATA[Customer %s has registered with new account. Action of approval is required! Click to view #admin#rt=sale/customer/update&customer_id=%s]]></value>
   </definition>
   <definition>
      <key>text_pending_subscriber_approval</key>
      <value><![CDATA[Subscriber %s has registered with new account. Action of approval is required! Click to view #admin#rt=sale/customer/update&customer_id=%s]]></value>
   </definition>
</definitions>