Author Topic: Adding language definition entry through extension installation  (Read 4408 times)

Offline renato.aloi

  • Newbie
  • *
  • Posts: 11
  • Karma: +4/-0
    • View Profile
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
« Last Edit: March 08, 2017, 03:36:21 PM by renato.aloi »

Offline abantecart

  • Administrator
  • Hero Member
  • *****
  • Posts: 4358
  • Karma: +298/-10
    • View Profile
    • Ideal Open Source Ecommerce Solution
Re: Adding language definition entry through extension installation
« Reply #1 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>
Please  rate your experience or leave your review
We need your help to build better free open source ecommerce platform for everyone. See how you can help

Offline abantecart

  • Administrator
  • Hero Member
  • *****
  • Posts: 4358
  • Karma: +298/-10
    • View Profile
    • Ideal Open Source Ecommerce Solution
Re: Adding language definition entry through extension installation
« Reply #2 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.
Please  rate your experience or leave your review
We need your help to build better free open source ecommerce platform for everyone. See how you can help

Offline renato.aloi

  • Newbie
  • *
  • Posts: 11
  • Karma: +4/-0
    • View Profile
Re: Adding language definition entry through extension installation
« Reply #3 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!


Offline renato.aloi

  • Newbie
  • *
  • Posts: 11
  • Karma: +4/-0
    • View Profile
Re: Adding language definition entry through extension installation
« Reply #4 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>
« Last Edit: March 09, 2017, 01:22:03 PM by renato.aloi »

 

Powered by SMFPacks Social Login Mod