Transfluent - Version 1.5.0

Version Notes

Improve source and target store selection in all translation forms

Download this release

Release Info

Developer Transfluent Ltd
Extension Transfluent
Version 1.5.0
Comparing to
See all releases


Code changes from version 1.4.8 to 1.5.0

app/code/community/Transfluent/Translate/Helper/Languages.php CHANGED
@@ -77,36 +77,80 @@ EOFJSON;
77
  }
78
 
79
  public function getSourceLanguageSelectHtmlForStores($stores) {
 
 
80
  $default_source_language_id = Mage::getStoreConfig('transfluenttranslate/transfluenttranslate_settings/transfluent_default_language');
81
  $html = '<select id="translateto" class="translateto_select">';
 
82
  foreach ($stores AS $store) {
83
  /** @var Mage_Core_Model_Store $store */
84
- $store_language = $this->GetStoreLocale($store->getCode());
85
- $language_id = $this->getLangByCode($store_language, true);
86
- if (is_null($language_id)) {
87
- // Language is unsupported
88
- continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
- $is_selected = ($default_source_language_id == $language_id);
91
- $html .= '<option value="' . $store->getId() . '"' . ($is_selected ? ' selected="SELECTED"' : '') . '>' . $this->getLanguageNameByCode($store_language, true) . ' (' . $store->getName() . ')</option>';
92
  }
93
  $html .= '</select>';
94
  return $html;
95
  }
96
 
97
  public function getSourceLanguageSelectHtml($stores) {
 
 
98
  $default_source_language_id = Mage::getStoreConfig('transfluenttranslate/transfluenttranslate_settings/transfluent_default_language');
99
  $html = '<select id="store_language" class="translateto_select">';
 
100
  foreach ($stores AS $store_id) {
101
  $store = Mage::app()->getStore($store_id);
102
- $language_code = $this->GetStoreLocale($store_id);
103
- $language_id = $this->getLangByCode($language_code, true);
104
- if (is_null($language_id)) {
105
- // Language is unsupported
106
- continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
- $is_selected = ($default_source_language_id == $language_id);
109
- $html .= '<option value="' . $store_id . '"' . ($is_selected ? ' selected="SELECTED"' : '') . '>' . $store->getName() . ' (' . $this->getLanguageNameByCode($language_code, true) . ')</option>';
110
  }
111
  $html .= '</select>';
112
  return $html;
@@ -162,28 +206,40 @@ EOFJSON;
162
  }
163
 
164
  public function getSourceLanguageArray($store_ids, $default_source_language_id = null) {
 
 
165
  $languages = array();
166
  $selected_language = null;
167
  $selected_language_store_id = null;
168
- foreach ($store_ids as $store_id) {
 
169
  $store = Mage::app()->getStore($store_id);
170
- $language_code = $this->GetStoreLocale($store_id);
171
- $language_id = $this->getLangByCode($language_code, true);
172
- if (is_null($language_id)) {
173
- // Language is unsupported
174
- continue;
175
- }
176
- if (!$selected_language && $language_id == $default_source_language_id) {
177
- $selected_language = $store->getName() . ' (' . $this->getLanguageNameByCode($language_code, true) . ')';
178
- $selected_language_store_id = $store->getId();
179
- continue;
180
  }
181
- $languages[(string)$store->getId()] = $store->getName() . ' (' . $this->getLanguageNameByCode($language_code, true) . ')';
182
  }
183
- if ($selected_language) {
184
- $languages = array_reverse($languages, true);
185
- $languages[(string)$selected_language_store_id] = $selected_language;
186
- $languages = array_reverse($languages, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
  return $languages;
189
  }
77
  }
78
 
79
  public function getSourceLanguageSelectHtmlForStores($stores) {
80
+ $helper = Mage::helper('transfluenttranslate/languages');
81
+ /** @var Transfluent_Translate_Helper_Languages $helper */
82
  $default_source_language_id = Mage::getStoreConfig('transfluenttranslate/transfluenttranslate_settings/transfluent_default_language');
83
  $html = '<select id="translateto" class="translateto_select">';
84
+ $stores_by_websites = array();
85
  foreach ($stores AS $store) {
86
  /** @var Mage_Core_Model_Store $store */
87
+ if (!isset($stores_by_websites[$store->getWebsiteId()])) {
88
+ $stores_by_websites[$store->getWebsiteId()] = array();
89
+ }
90
+ $stores_by_websites[$store->getWebsiteId()][] = $store;
91
+ }
92
+ $current_website = null;
93
+ $current_store_frontend_name = null;
94
+ foreach ($stores_by_websites AS $website_id => $website_stores) {
95
+ foreach ($website_stores AS $store) {
96
+ /** @var Mage_Core_Model_Store $store */
97
+ $store_language = $this->GetStoreLocale($store->getCode());
98
+ $language_id = $this->getLangByCode($store_language, true);
99
+ if (is_null($language_id)) {
100
+ // Language is unsupported
101
+ continue;
102
+ }
103
+ if (!$current_website || $current_website != $website_id) {
104
+ $current_website = $website_id;
105
+ $html .= '<optgroup label="' . $store->getWebsite()->getName() . '"></optgroup>';
106
+ }
107
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
108
+ $html .= '<optgroup label="&nbsp;&nbsp;' . $store->getFrontendName() . '"></optgroup>';
109
+ $current_store_frontend_name = $store->getFrontendName();
110
+ }
111
+ $is_selected = ($default_source_language_id == $language_id);
112
+ $html .= '<option value="' . $store->getId() . '"' . ($is_selected ? ' selected="SELECTED"' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;' . $store->getName() . ' (' . Mage::getStoreConfig('general/locale/code', $store->getId()) . '; ' . $helper->getLanguageNameByCode(Mage::getStoreConfig('general/locale/code', $store->getId()), true) . ')</option>';
113
  }
 
 
114
  }
115
  $html .= '</select>';
116
  return $html;
117
  }
118
 
119
  public function getSourceLanguageSelectHtml($stores) {
120
+ $helper = Mage::helper('transfluenttranslate/languages');
121
+ /** @var Transfluent_Translate_Helper_Languages $helper */
122
  $default_source_language_id = Mage::getStoreConfig('transfluenttranslate/transfluenttranslate_settings/transfluent_default_language');
123
  $html = '<select id="store_language" class="translateto_select">';
124
+ $stores_by_websites = array();
125
  foreach ($stores AS $store_id) {
126
  $store = Mage::app()->getStore($store_id);
127
+ /** @var Mage_Core_Model_Store $store */
128
+ if (!isset($stores_by_websites[$store->getWebsiteId()])) {
129
+ $stores_by_websites[$store->getWebsiteId()] = array();
130
+ }
131
+ $stores_by_websites[$store->getWebsiteId()][] = $store;
132
+ }
133
+ $current_website = null;
134
+ $current_store_frontend_name = null;
135
+ foreach ($stores_by_websites AS $website_id => $website_stores) {
136
+ foreach ($website_stores AS $store) {
137
+ $language_code = $this->GetStoreLocale($store->getId());
138
+ $language_id = $this->getLangByCode($language_code, true);
139
+ if (is_null($language_id)) {
140
+ // Language is unsupported
141
+ continue;
142
+ }
143
+ if (!$current_website || $current_website != $website_id) {
144
+ $current_website = $website_id;
145
+ $html .= '<optgroup label="' . $store->getWebsite()->getName() . '"></optgroup>';
146
+ }
147
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
148
+ $html .= '<optgroup label="&nbsp;&nbsp;' . $store->getFrontendName() . '"></optgroup>';
149
+ $current_store_frontend_name = $store->getFrontendName();
150
+ }
151
+ $is_selected = ($default_source_language_id == $language_id);
152
+ $html .= '<option value="' . $store->getId() . '"' . ($is_selected ? ' selected="SELECTED"' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;' . $store->getName() . ' (' . Mage::getStoreConfig('general/locale/code', $store->getId()) . '; ' . $helper->getLanguageNameByCode(Mage::getStoreConfig('general/locale/code', $store->getId()), true) . ')</option>';
153
  }
 
 
154
  }
155
  $html .= '</select>';
156
  return $html;
206
  }
207
 
208
  public function getSourceLanguageArray($store_ids, $default_source_language_id = null) {
209
+ $helper = Mage::helper('transfluenttranslate/languages');
210
+ /** @var Transfluent_Translate_Helper_Languages $helper */
211
  $languages = array();
212
  $selected_language = null;
213
  $selected_language_store_id = null;
214
+ $stores_by_websites = array();
215
+ foreach ($store_ids AS $store_id) {
216
  $store = Mage::app()->getStore($store_id);
217
+ /** @var Mage_Core_Model_Store $store */
218
+ if (!isset($stores_by_websites[$store->getWebsiteId()])) {
219
+ $stores_by_websites[$store->getWebsiteId()] = array();
 
 
 
 
 
 
 
220
  }
221
+ $stores_by_websites[$store->getWebsiteId()][] = $store;
222
  }
223
+ $current_website = null;
224
+ $current_store_frontend_name = null;
225
+ foreach ($stores_by_websites AS $website_id => $website_stores) {
226
+ foreach ($website_stores AS $store) {
227
+ $language_code = $this->GetStoreLocale($store->getId());
228
+ $language_id = $this->getLangByCode($language_code, true);
229
+ if (is_null($language_id)) {
230
+ // Language is unsupported
231
+ continue;
232
+ }
233
+ if (!$current_website || $current_website != $website_id) {
234
+ $current_website = $website_id;
235
+ $languages['website-' . $store->getWebsite()->getId()] = '' . $store->getWebsite()->getName() . '';
236
+ }
237
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
238
+ $languages['front-' . $store->getId()] = '  ' . $store->getFrontendName() . '';
239
+ $current_store_frontend_name = $store->getFrontendName();
240
+ }
241
+ $languages[(string)$store->getId()] = '    ' . $store->getName() . ' (' . Mage::getStoreConfig('general/locale/code', $store->getId()) . '; ' . $helper->getLanguageNameByCode(Mage::getStoreConfig('general/locale/code', $store->getId()), true) . ')';
242
+ }
243
  }
244
  return $languages;
245
  }
app/code/community/Transfluent/Translate/controllers/TranslationController.php CHANGED
@@ -385,6 +385,7 @@ class Transfluent_Translate_TranslationController extends Mage_Core_Controller_F
385
  'base_url' => $store->getBaseUrl(),
386
  'name' => $store->getFrontendName(),
387
  'active' => $store->getIsActive() ? 'yes' : 'no',
 
388
  );
389
  }
390
  }
385
  'base_url' => $store->getBaseUrl(),
386
  'name' => $store->getFrontendName(),
387
  'active' => $store->getIsActive() ? 'yes' : 'no',
388
+ 'locale' => Mage::getStoreConfig('general/locale/code', $store->getId()),
389
  );
390
  }
391
  }
app/code/community/Transfluent/Translate/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Transfluent_Translate>
5
- <version>1.4.8</version>
6
  </Transfluent_Translate>
7
  </modules>
8
 
2
  <config>
3
  <modules>
4
  <Transfluent_Translate>
5
+ <version>1.5.0</version>
6
  </Transfluent_Translate>
7
  </modules>
8
 
app/code/community/Transfluent/Translate/etc/system.xml CHANGED
@@ -112,7 +112,7 @@
112
  or visit <a href="https://www.transfluent.com/my-account/#/creditcard" target="_blank">your Transfluent account page</a> to setup a credit card.
113
  </p>
114
  <strong>Support:</strong> <a href="mailto:support@transfluent.com">support@transfluent.com</a><br>
115
- <strong>Extension version:</strong> 1.4.8<br>
116
  <strong>Extension homepage:</strong> <a href="http://www.transfluent.com/products/magento/">transfluent.com/products/magento</a>
117
  ]]></comment>
118
  <fields>
112
  or visit <a href="https://www.transfluent.com/my-account/#/creditcard" target="_blank">your Transfluent account page</a> to setup a credit card.
113
  </p>
114
  <strong>Support:</strong> <a href="mailto:support@transfluent.com">support@transfluent.com</a><br>
115
+ <strong>Extension version:</strong> 1.5.0<br>
116
  <strong>Extension homepage:</strong> <a href="http://www.transfluent.com/products/magento/">transfluent.com/products/magento</a>
117
  ]]></comment>
118
  <fields>
app/design/adminhtml/default/default/template/transfluent/order/category_step1.phtml CHANGED
@@ -47,12 +47,17 @@ $collision_strategy = $this->getRequest()->getParam('collision');
47
  $website_default_store_id = $website_default_store->getId();
48
  unset($website_default_store);
49
  $stores = $website->getStores();
 
50
  foreach ($stores AS $store) {
51
  /** @var Mage_Core_Model_Store $store */
 
 
 
 
52
  $store_locale_code = $languageHelper->GetStoreLocale($store->getCode());
53
  $selected_source = (!$source && $store->getId() == $website_default_store_id || $source == $store->getId());
54
  $selected_target = ($target && $store->getId() == $target);
55
- $website_dropdown_options .= '<option value="' . $store->getId() . '" ' . ($selected_source ? 'SOURCE-SELECTED' : '') . ($selected_target ? 'TARGET-SELECTED' : '') . '>&nbsp;&nbsp;' . htmlspecialchars($store->getName()) . ' (' . $languageHelper->getLanguageNameByCode($store_locale_code, true) . ', ' . $store_locale_code . ')</option>';
56
  }
57
  }
58
  ?>
@@ -92,7 +97,7 @@ $collision_strategy = $this->getRequest()->getParam('collision');
92
  </tbody>
93
  </table>
94
  <p>
95
- <!-- <i class="link-store-scope"></i> TBD: Some kind of protip goes here! -->
96
  </p>
97
  </div>
98
  </div>
47
  $website_default_store_id = $website_default_store->getId();
48
  unset($website_default_store);
49
  $stores = $website->getStores();
50
+ $current_store_frontend_name = null;
51
  foreach ($stores AS $store) {
52
  /** @var Mage_Core_Model_Store $store */
53
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
54
+ $website_dropdown_options .= '<optgroup label="&nbsp;&nbsp;' . $store->getFrontendName() . '"></optgroup>';
55
+ $current_store_frontend_name = $store->getFrontendName();
56
+ }
57
  $store_locale_code = $languageHelper->GetStoreLocale($store->getCode());
58
  $selected_source = (!$source && $store->getId() == $website_default_store_id || $source == $store->getId());
59
  $selected_target = ($target && $store->getId() == $target);
60
+ $website_dropdown_options .= '<option value="' . $store->getId() . '" ' . ($selected_source ? 'SOURCE-SELECTED' : '') . ($selected_target ? 'TARGET-SELECTED' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;' . htmlspecialchars($store->getName()) . ' (' . $languageHelper->getLanguageNameByCode($store_locale_code, true) . ', ' . $store_locale_code . ')</option>';
61
  }
62
  }
63
  ?>
97
  </tbody>
98
  </table>
99
  <p>
100
+ <i class="link-store-scope"></i> This tool allows you to translate all products in selected categories. In last step you may change which product fields to translate. Category information is not included, you need to order translation for those from &quot;Manage Categories&quot; view. Please note that this tool does not utilize advanced translation memory by default. If you would like to get a quote with translation memory enabled, contact <a href="mailto:support@transfluent.com">support@transfluent.com</a>.
101
  </p>
102
  </div>
103
  </div>
app/design/adminhtml/default/default/template/transfluent/order/cms_step1.phtml CHANGED
@@ -47,12 +47,17 @@ $collision_strategy = $this->getRequest()->getParam('collision');
47
  $website_default_store_id = $website_default_store->getId();
48
  unset($website_default_store);
49
  $stores = $website->getStores();
 
50
  foreach ($stores AS $store) {
51
  /** @var Mage_Core_Model_Store $store */
 
 
 
 
52
  $store_locale_code = $languageHelper->GetStoreLocale($store->getCode());
53
  $selected_source = (!$source && $store->getId() == $website_default_store_id || $source == $store->getId());
54
  $selected_target = ($target && $store->getId() == $target);
55
- $website_dropdown_options .= '<option value="' . $store->getId() . '" ' . ($selected_source ? 'SOURCE-SELECTED' : '') . ($selected_target ? 'TARGET-SELECTED' : '') . '>&nbsp;&nbsp;' . htmlspecialchars($store->getName()) . ' (' . $languageHelper->getLanguageNameByCode($store_locale_code, true) . ', ' . $store_locale_code . ')</option>';
56
  }
57
  }
58
  ?>
@@ -92,7 +97,7 @@ $collision_strategy = $this->getRequest()->getParam('collision');
92
  </tbody>
93
  </table>
94
  <p>
95
- <i class="link-store-scope"></i> CMS pages and blocks will be saved with the same identifier as the original content but it will be associated to the target store view only. Please note that in most cases for the first round of translations, you need to choose "Translate" -option for the existing content handling because usually the main language (e.g. English) version is shown on all store views until translations are in place.<br><br><strong>Important:</strong> This tool will always send the content to be (re-)translated unless there is an <strong>exact match</strong> of previous translation. Read more: <a href="https://transfluent.zendesk.com/hc/en-us/articles/206545945-Does-Transfluent-have-translation-memory-" target="_blank">Does Transfluent have translation memory?</a>
96
  </p>
97
  </div>
98
  </div>
47
  $website_default_store_id = $website_default_store->getId();
48
  unset($website_default_store);
49
  $stores = $website->getStores();
50
+ $current_store_frontend_name = null;
51
  foreach ($stores AS $store) {
52
  /** @var Mage_Core_Model_Store $store */
53
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
54
+ $website_dropdown_options .= '<optgroup label="&nbsp;&nbsp;' . $store->getFrontendName() . '"></optgroup>';
55
+ $current_store_frontend_name = $store->getFrontendName();
56
+ }
57
  $store_locale_code = $languageHelper->GetStoreLocale($store->getCode());
58
  $selected_source = (!$source && $store->getId() == $website_default_store_id || $source == $store->getId());
59
  $selected_target = ($target && $store->getId() == $target);
60
+ $website_dropdown_options .= '<option value="' . $store->getId() . '" ' . ($selected_source ? 'SOURCE-SELECTED' : '') . ($selected_target ? 'TARGET-SELECTED' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;' . htmlspecialchars($store->getName()) . ' (' . $languageHelper->getLanguageNameByCode($store_locale_code, true) . ', ' . $store_locale_code . ')</option>';
61
  }
62
  }
63
  ?>
97
  </tbody>
98
  </table>
99
  <p>
100
+ <i class="link-store-scope"></i> CMS pages and blocks will be saved with the same identifier as the original content but it will be associated to the target store view only. Please note that in most cases for the first round of translations, you need to choose "Translate" -option for the existing content handling because usually the main language (e.g. English) version is shown on all store views until translations are in place.<br><br><strong>Important:</strong> This tool will always send the content to be (re-)translated unless there is an <strong>exact match</strong> of previous translation as this tool does not utilize a translation memory by default. If you would like to get a quote with translation memory enabled, contact <a href="mailto:support@transfluent.com">support@transfluent.com</a>.
101
  </p>
102
  </div>
103
  </div>
app/design/adminhtml/default/default/template/transfluent/product/attributes/edit.phtml CHANGED
@@ -39,19 +39,44 @@ if (empty($possible_languages)) {
39
  return;
40
  }
41
  $store_id = $this->getRequest()->getParam('store');
42
- print '<div style="margin-bottom: 20px;" id="translate_attribute_form">';
43
  print '<strong>Translate</strong><br>';
44
  print '<label><input type="checkbox" name="translate_name" id="translate_name" value="1" checked="checked"> attribute name (e.g. Color -&gt; Farbe)</label><br>';
45
  print '<label><input type="checkbox" name="translate_values" id="translate_values" value="1" checked="checked"> attribute options (e.g. Black -&gt; Schwarz etc.)</label><br>';
46
  print '<strong>into</strong> ';
 
47
  foreach ($stores AS $store) {
48
  /** @var Mage_Core_Model_Store $store */
49
- $store_language = $helper->GetStoreLocale($store->getCode());
50
- print '<label><input type="checkbox" name="translate_to[]" value="' . $store->getId() . '"> ' . $helper->getLanguageNameByCode($store_language, true) . ' (' . $store->getName() . ')</label> ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
  print '<br> <strong>from</strong> ' . $helper->getSourceLanguageSelectHtmlForStores($stores) . ' <strong>using</strong> ' . $helper->getQualityHtml($store_id) . ' <button id="tf_translate_quote" title="Quote" type="button" class="scalable btn-translate" onclick="QuoteTranslation(this); return false;"><span><span><span>Get quote</span></span></span></button><br>';
53
  print '<div id="tf_translate_form" style="padding: 10px;"></div>';
54
  print '</div>';
 
55
  ?>
56
  <script type="text/javascript">
57
  function OrderTranslation(order_btn) {
39
  return;
40
  }
41
  $store_id = $this->getRequest()->getParam('store');
42
+ print '<div style="margin-bottom: 20px; display: none;" id="translate_attribute_form">';
43
  print '<strong>Translate</strong><br>';
44
  print '<label><input type="checkbox" name="translate_name" id="translate_name" value="1" checked="checked"> attribute name (e.g. Color -&gt; Farbe)</label><br>';
45
  print '<label><input type="checkbox" name="translate_values" id="translate_values" value="1" checked="checked"> attribute options (e.g. Black -&gt; Schwarz etc.)</label><br>';
46
  print '<strong>into</strong> ';
47
+ $stores_by_websites = array();
48
  foreach ($stores AS $store) {
49
  /** @var Mage_Core_Model_Store $store */
50
+ if (!isset($stores_by_websites[$store->getWebsiteId()])) {
51
+ $stores_by_websites[$store->getWebsiteId()] = array();
52
+ }
53
+ $stores_by_websites[$store->getWebsiteId()][] = $store;
54
+ }
55
+ $current_website = null;
56
+ $current_store_frontend_name = null;
57
+ foreach ($stores_by_websites AS $website_id => $website_stores) {
58
+ foreach ($website_stores AS $store) {
59
+ /** @var Mage_Core_Model_Store $store */
60
+ if (!$current_website || $current_website != $website_id) {
61
+ $current_website = $website_id;
62
+ print '<div style="margin-left: 1rem; padding-left: 1rem;">';
63
+ print '<strong style="margin-left: -1rem;">' . $store->getWebsite()->getName() . ':</strong>';
64
+ }
65
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
66
+ print '<br><strong style="margin-left: -0.5rem;"><em>' . $store->getFrontendName() . ':</em></strong><br>';
67
+ $current_store_frontend_name = $store->getFrontendName();
68
+ }
69
+ $store_language = $helper->GetStoreLocale($store->getCode());
70
+ print '<label><input type="checkbox" name="translate_to[]" value="' . $store->getId() . '"> ' . $store->getName() . ' (' . Mage::getStoreConfig('general/locale/code', $store->getId()) . '; ' . $helper->getLanguageNameByCode(Mage::getStoreConfig('general/locale/code', $store->getId()), true) . ')</label> ';
71
+ }
72
+ if (count($website_stores)) {
73
+ print '</div>';
74
+ }
75
  }
76
  print '<br> <strong>from</strong> ' . $helper->getSourceLanguageSelectHtmlForStores($stores) . ' <strong>using</strong> ' . $helper->getQualityHtml($store_id) . ' <button id="tf_translate_quote" title="Quote" type="button" class="scalable btn-translate" onclick="QuoteTranslation(this); return false;"><span><span><span>Get quote</span></span></span></button><br>';
77
  print '<div id="tf_translate_form" style="padding: 10px;"></div>';
78
  print '</div>';
79
+ print '<button id="translate_attribute_form_toggler" title="Show translation form" type="button" class="scalable btn-translate" onclick="$(this).hide(); $(\'translate_attribute_form\').show(); return false;" style="margin-bottom: 2rem;"><span><span><span>Show translation form</span></span></span></button>';
80
  ?>
81
  <script type="text/javascript">
82
  function OrderTranslation(order_btn) {
app/design/adminhtml/default/default/template/transfluent/product/category/edit.phtml CHANGED
@@ -25,23 +25,59 @@ if (empty($possible_languages)) {
25
  }
26
  $request = Mage::app()->getRequest();
27
  $store_id = $this->getRequest()->getParam('store');
28
- print '<div style="margin-bottom: 20px;" id="translate_attribute_form">';
29
  print '<strong>Translate</strong><br>';
30
  print '<label><input type="checkbox" name="translate_name" id="translate_name" value="1" checked="checked"> category name</label><br>';
31
  print '<label><input type="checkbox" name="translate_desc" id="translate_desc" value="1" checked="checked"> category description</label><br>';
32
  print '<label><input type="checkbox" name="translate_meta" id="translate_meta" value="1" checked="checked"> category meta title, keywords and description</label><br>';
33
  print '<label><input type="checkbox" name="translate_subcat" id="translate_subcat" value="1" checked="checked"> translate same properties for all subcategories</label><br>';
34
  print '<strong>into</strong> ';
 
35
  foreach ($stores AS $store) {
36
  /** @var Mage_Core_Model_Store $store */
37
- $store_language = $helper->GetStoreLocale($store->getCode());
38
- print '<label><input type="checkbox" name="translate_to[]" value="' . $store->getId() . '"> ' . $helper->getLanguageNameByCode($store_language, true) . ' (' . $store->getName() . ')</label> ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
40
  print '<br> <strong>from</strong> ' . $helper->getSourceLanguageSelectHtmlForStores($stores) . ' <strong>using</strong> ' . $helper->getQualityHtml($store_id) . ' <button id="tf_translate_quote" title="Quote" type="button" class="scalable btn-translate" onclick="QuoteTranslation(this); return false;"><span><span><span>Get quote</span></span></span></button><br>';
41
  print '<div id="tf_translate_form" style="padding: 10px;"></div>';
42
  print '</div>';
 
43
  ?>
44
  <script type="text/javascript">
 
 
 
 
 
 
 
 
 
 
 
45
  function OrderTranslation(order_btn) {
46
  if (!categoryForm) {
47
  categoryForm = new varienForm('category_edit_form');
25
  }
26
  $request = Mage::app()->getRequest();
27
  $store_id = $this->getRequest()->getParam('store');
28
+ print '<div style="margin-bottom: 20px; display: none;" id="translate_attribute_form">';
29
  print '<strong>Translate</strong><br>';
30
  print '<label><input type="checkbox" name="translate_name" id="translate_name" value="1" checked="checked"> category name</label><br>';
31
  print '<label><input type="checkbox" name="translate_desc" id="translate_desc" value="1" checked="checked"> category description</label><br>';
32
  print '<label><input type="checkbox" name="translate_meta" id="translate_meta" value="1" checked="checked"> category meta title, keywords and description</label><br>';
33
  print '<label><input type="checkbox" name="translate_subcat" id="translate_subcat" value="1" checked="checked"> translate same properties for all subcategories</label><br>';
34
  print '<strong>into</strong> ';
35
+ $stores_by_websites = array();
36
  foreach ($stores AS $store) {
37
  /** @var Mage_Core_Model_Store $store */
38
+ if (!isset($stores_by_websites[$store->getWebsiteId()])) {
39
+ $stores_by_websites[$store->getWebsiteId()] = array();
40
+ }
41
+ $stores_by_websites[$store->getWebsiteId()][] = $store;
42
+ }
43
+ $current_website = null;
44
+ $current_store_frontend_name = null;
45
+ foreach ($stores_by_websites AS $website_id => $website_stores) {
46
+ foreach ($website_stores AS $store) {
47
+ /** @var Mage_Core_Model_Store $store */
48
+ if (!$current_website || $current_website != $website_id) {
49
+ $current_website = $website_id;
50
+ print '<div style="margin-left: 1rem; padding-left: 1rem;">';
51
+ print '<strong style="margin-left: -1rem;">' . $store->getWebsite()->getName() . ':</strong>';
52
+ }
53
+ if (!$current_store_frontend_name || $current_store_frontend_name != $store->getFrontendName()) {
54
+ print '<br><strong style="margin-left: -0.5rem;"><em>' . $store->getFrontendName() . ':</em></strong><br>';
55
+ $current_store_frontend_name = $store->getFrontendName();
56
+ }
57
+ $store_language = $helper->GetStoreLocale($store->getCode());
58
+ print '<label><input type="checkbox" name="translate_to[]" value="' . $store->getId() . '"> ' . $store->getName() . ' (' . Mage::getStoreConfig('general/locale/code', $store->getId()) . '; ' . $helper->getLanguageNameByCode(Mage::getStoreConfig('general/locale/code', $store->getId()), true) . ')</label> ';
59
+ }
60
+ if (count($website_stores)) {
61
+ print '</div>';
62
+ }
63
  }
64
  print '<br> <strong>from</strong> ' . $helper->getSourceLanguageSelectHtmlForStores($stores) . ' <strong>using</strong> ' . $helper->getQualityHtml($store_id) . ' <button id="tf_translate_quote" title="Quote" type="button" class="scalable btn-translate" onclick="QuoteTranslation(this); return false;"><span><span><span>Get quote</span></span></span></button><br>';
65
  print '<div id="tf_translate_form" style="padding: 10px;"></div>';
66
  print '</div>';
67
+ print '<button id="translate_attribute_form_toggler" title="Show translation form" type="button" class="scalable btn-translate" onclick="ShowCategoryTranslationForm(this); return false;" style="margin-bottom: 2rem;"><span><span><span>Show translation form</span></span></span></button>';
68
  ?>
69
  <script type="text/javascript">
70
+ function ShowCategoryTranslationForm(obj) {
71
+ if (!categoryForm) {
72
+ categoryForm = new varienForm('category_edit_form');
73
+ }
74
+ if (!categoryForm.getCategoryId()) {
75
+ alert('Please choose an existing category or save the new category first!');
76
+ return;
77
+ }
78
+ $(obj).hide();
79
+ $('translate_attribute_form').toggle();
80
+ }
81
  function OrderTranslation(order_btn) {
82
  if (!categoryForm) {
83
  categoryForm = new varienForm('category_edit_form');
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Transfluent</name>
4
- <version>1.4.8</version>
5
  <stability>stable</stability>
6
  <license>MIT</license>
7
  <channel>community</channel>
@@ -18,11 +18,11 @@
18
  <description>&lt;p&gt;The Transfluent plugin automates the process of translating product and category information using human translators. Magento admins need only to select what to translate and click order.&lt;/p&gt;&#xD;
19
  &#xD;
20
  &lt;p&gt;Translating content is handled in our backend using a vast network of professional translators.&lt;/p&gt;</description>
21
- <notes>Restore PHP 5.3 compatibility</notes>
22
  <authors><author><name>Transfluent Ltd</name><user>Transfluent</user><email>coders@transfluent.com</email></author></authors>
23
- <date>2016-10-07</date>
24
- <time>09:14:50</time>
25
- <contents><target name="magecommunity"><dir name="Transfluent"><dir name="Translate"><dir name="Block"><file name="Account.php" hash="64995360d00bb063736be0f12065452c"/><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><file name="Grid.php" hash="d2827c5587a2bb7c8664ff92c3dcf5d7"/><dir name="Renderer"><file name="Language.php" hash="cfc3a15752ecc6f7aab870ea6834c1df"/><file name="LanguagePair.php" hash="8d1c1959b44b487570d135eb5758a63b"/><file name="Level.php" hash="4a8f278da146ce9c8108758924bea667"/><file name="SourceText.php" hash="23c33835a99e64d575b101491774ed89"/><file name="Store.php" hash="4639d9f82bb498e57842a83110573e0c"/></dir></dir></dir><dir name="Tag"><dir name="Tag"><file name="Grid.php" hash="24647d2a73089769f664f7ae8f686597"/></dir></dir><dir name="Transfluentorder"><dir name="Edit"><file name="Form.php" hash="17fc3866562d4820c251ed17cc154b4d"/><dir name="Tab"><file name="Form.php" hash="3d45b7754d0044de84f6d40cb4cca9bf"/></dir><file name="Tabs.php" hash="5654a57d38cb31fb7159ffea72380adb"/></dir><file name="Edit.php" hash="e4a7206b94ec73e6573e62d22efc61ba"/></dir><file name="Transfluentorder.php" hash="d7b1b9286ce4bc825aba90869f556f57"/><dir name="Transfluenttranslate"><dir name="Edit"><file name="Form.php" hash="9e9d2152d4dd8fe936558a88afd1c554"/><dir name="Tab"><file name="Form.php" hash="d6bb7a75b800f0dfb9a85d6b8547d3d2"/></dir><file name="Tabs.php" hash="1e4e31e2e4be31918e4db4d677092759"/></dir><file name="Edit.php" hash="596dc94ba740e312ad1ea8a3a86bdc43"/><file name="Grid.php" hash="275f7dd4f8abb376a51bab8ee815f8f9"/></dir><file name="Transfluenttranslate.php" hash="c9a69e2dc7bb9ded6a61db0988b4842f"/></dir><file name="Estimate.php" hash="bc70c44df7c0522dc56d2039ce73dc64"/><file name="Help.php" hash="1c6779b04425381242c053baf54cac1f"/><file name="Loginform.php" hash="0662a26391b83f075e0b3ddf6a50e854"/><file name="Regform.php" hash="1a21630f4971b98b456464566f037018"/><file name="Translblock.php" hash="2171980ac113e56bbff73745f3c03e95"/></dir><dir name="Exception"><file name="Base.php" hash="e0ab547033d95d94820a5cbd58dea6f5"/><file name="EBackendCustomerHasNoBillingAgreement.php" hash="87f798c9e376b2392f33005181028e6b"/><file name="EFailedToUpdateOrder.php" hash="4261e774331f5e68864409c687e87e84"/><file name="EInvalidInput.php" hash="9e68fc972d84da619bc0f59a0309c673"/><file name="EInvalidJob.php" hash="be82fd6fe0c1dbc88be57fa4fd923196"/><file name="EInvalidTagFormat.php" hash="c8ac44aaec31e4ab77655ab85434724b"/><file name="ELanguagePairNotSupported.php" hash="696af3edef69e5ef009bbbd766db97ae"/><file name="ETagNotFound.php" hash="6bc8d1f2a8a5cbdfa9e83be92532e159"/><file name="ETransfluentAuthenticationExpired.php" hash="31d78696b92490440689d517ce3961ad"/><file name="ETransfluentAuthenticationExpiredBase.php" hash="5f31f311c1242c956dbe03ed56b89e8e"/><file name="ETransfluentInvalidInputTags.php" hash="d7e056e164a93a6fd9f9cffbc31664f8"/><file name="ETransfluentNothingToTranslate.php" hash="6b9aef0ccc8848dbbe33e4d55742a789"/><file name="ETransfluentOrderFail.php" hash="019f6eea7ea672217a6297ad1028ed02"/><file name="ETransfluentProductHasNoFieldsToTranslate.php" hash="324c6a7f92a4b2367ad9253aae319aa2"/><file name="ETransfluentProductNotFound.php" hash="d1ae6d72c99ba0061c3972e56f7508c1"/><file name="ETransfluentSomeSelectedProductsNotFound.php" hash="aaa71cede2f1136e8f6700f35bb3c541"/><file name="ETransfluentTagsNothingToTranslate.php" hash="aaec4494fcfa5f5801cc41d2488063b2"/><file name="ETransfluentUnknownBackendResponse.php" hash="8b88d91c6069383091b46416236fb516"/><file name="ETransfluentUnknownError.php" hash="f27e0198db51ae862cc69d969238acff"/><file name="ETransfluentUnknownErrorNoEstimate.php" hash="714d3ad48595f0a7f271ff4d6e41d5b7"/><file name="ETransfluentUnknownErrorTags.php" hash="6b56cfb2b97bed42edaff02e409ded3e"/><file name="EUnauthorized.php" hash="eb1ca081eebdc497cde30cd85337bc6e"/></dir><dir name="Helper"><file name="Category.php" hash="29dc91d14b3b60702f389dcd7ab45bc1"/><file name="Constant.php" hash="76af7760107c984a86a8522d08f33529"/><file name="Data.php" hash="a9604a97b35ccd8e28db12ad4e6877f2"/><file name="Languages.php" hash="50691b2f45b7a6591edd6a84ea41ab79"/><file name="Product.php" hash="ee04f0c62cdeef260c677cd1fc363041"/><file name="Tag.php" hash="aba096e9a6207e7f2055db4733c1b839"/><file name="Text.php" hash="4e5c084ac4e849d6fe2614dfef77c932"/><file name="Util.php" hash="2db7fdba0b945821e12746c45fb6bf9b"/></dir><dir name="Model"><file name="AttributeName.php" hash="97619966fb9c04b031d2cae5147fdb21"/><file name="AttributeOption.php" hash="39007a2e2821e5853b6cfefe0e1a1c17"/><dir name="Base"><file name="Backendclient.php" hash="caf6a742113422d353ba7068c13cb296"/></dir><file name="CategoryDetail.php" hash="3a0ce226c17ef8280ca9001c77e0d275"/><dir name="Config"><dir name="Source"><file name="Fromlang.php" hash="600bdc90cb5a08d36003ea651ee398c2"/><file name="Language.php" hash="dcbd7cc51695c71fa0da6da25e0d52d8"/><file name="Quality.php" hash="73987e05216bb54d3b483d751888e602"/></dir></dir><file name="Debugutil.php" hash="3542cff301f9fc0d69072068c384acb3"/><dir name="Mysql4"><dir name="Transfluenttranslate"><file name="Collection.php" hash="80ebe484ed7a4dee8980b4d6c03d1425"/></dir><file name="Transfluenttranslate.php" hash="bef2f82a3c2d2fd25031c654026bdc34"/></dir><file name="Observer.php" hash="96ca21eaefbf03ea6a84cfa1179d4c93"/><file name="ProductDetail.php" hash="5b9a5ce790576fe19e33fbbc63554a24"/><file name="TagName.php" hash="8d59f540cc0f1290b419f95f7dabe7c6"/><file name="Transfluentorder.php" hash="12f0833461b032cdf21da5de28a3406a"/><file name="Transfluenttranslate.php" hash="d973756d579d415cd11033acb7669555"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="TransfluentAccountController.php" hash="8873df11e15efb11b90eeaf41f497b14"/><file name="TransfluentorderController.php" hash="6ec029cc1ab74adf1b7544f868cbcd45"/><file name="TransfluenttranslateController.php" hash="5de5c5717bfc3243cc62d4aaecd87c63"/></dir><file name="TranslationController.php" hash="b08d89ca67b5221d71de1c3905763b9c"/></dir><dir name="etc"><file name="config.xml" hash="059ba5fa320417ea049241d5c651b5e2"/><file name="system.xml" hash="6e82e8e100953b93a226356d4bb4b469"/></dir><dir name="sql"><dir name="transfluenttranslate_setup"><file name="mysql4-install-1.1.0.php" hash="1691b91c29d66284b51583bf47e5c9ec"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="transfluent.xml" hash="92accb97ee4a7c710ef46e01d1307f83"/></dir><dir name="template"><dir name="transfluent"><dir name="account"><file name="action.phtml" hash="15f0fb05be28c13df4e6656cf9569b06"/><file name="create.phtml" hash="5b51d4a6f3f444494fe3b053c6f96463"/><file name="logged.phtml" hash="6f024c314550b3f378e5d8399984b082"/><file name="login.phtml" hash="06acb7c890315c53937a1dd5f90275a6"/></dir><file name="estimate.phtml" hash="f2b85bb6943c7ff335d45e2401e0b541"/><file name="estimate_section.phtml" hash="02db1adf41e46f86e4cca94e554db08f"/><dir name="order"><file name="category_step1.phtml" hash="5c1513dfc83b6dc592c21ed901821350"/><file name="category_step2.phtml" hash="48ded6d187b52ba82b8902a0e2631206"/><file name="category_step3.phtml" hash="f32f4d22467c2f2f5a6b03c3bdb273a6"/><file name="category_step5.phtml" hash="c1121856016fa4dbf0bc0dbcd157ff20"/><file name="cms_step1.phtml" hash="dd0533d93a7c36dbdac7a48e45aa4cbd"/><file name="cms_step2.phtml" hash="9ef31cc3bf8444c4f37fa927d8d1f694"/><file name="cms_step3.phtml" hash="58c18eb79aaaab70577c7163684c3898"/><file name="cms_step5.phtml" hash="2831358f2ff6153c8550816163c98ee9"/><file name="listing.phtml" hash="51403a39ad9e396656b9768e597af93d"/></dir><dir name="product"><dir name="attributes"><file name="edit.phtml" hash="e6df3e737f50037938a1b87b78dff58b"/></dir><dir name="category"><file name="edit.phtml" hash="286657bea15ad09522d4293cd012da61"/></dir><file name="edit.phtml" hash="4aa71b35c0ae578a67c3b6c8d0abf906"/><file name="index.phtml" hash="6701bfad68cceffaa4cd5b8775642849"/></dir><dir name="tag"><dir name="tag"><file name="index.phtml" hash="30dd38c745aec12f13a084be7753566d"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Transfluent_Translate.xml" hash="21fbc30a1cba6c2b86b262439eee8ed3"/></dir></target><target name="mageweb"><dir name="js"><dir name="transfluent"><file name="actions.js" hash="471135bf9f5941d0e22d11aa726bfc3b"/><file name="lib.js" hash="0f1029e5a4a1c1e88ca2bb8304bc34e8"/></dir></dir></target></contents>
26
  <compatible/>
27
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php><extension><name>Core</name><min></min><max></max></extension><extension><name>curl</name><min></min><max></max></extension><extension><name>json</name><min></min><max></max></extension><extension><name>mbstring</name><min></min><max></max></extension></required></dependencies>
28
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Transfluent</name>
4
+ <version>1.5.0</version>
5
  <stability>stable</stability>
6
  <license>MIT</license>
7
  <channel>community</channel>
18
  <description>&lt;p&gt;The Transfluent plugin automates the process of translating product and category information using human translators. Magento admins need only to select what to translate and click order.&lt;/p&gt;&#xD;
19
  &#xD;
20
  &lt;p&gt;Translating content is handled in our backend using a vast network of professional translators.&lt;/p&gt;</description>
21
+ <notes>Improve source and target store selection in all translation forms</notes>
22
  <authors><author><name>Transfluent Ltd</name><user>Transfluent</user><email>coders@transfluent.com</email></author></authors>
23
+ <date>2016-10-20</date>
24
+ <time>11:48:13</time>
25
+ <contents><target name="magecommunity"><dir name="Transfluent"><dir name="Translate"><dir name="Block"><file name="Account.php" hash="64995360d00bb063736be0f12065452c"/><dir name="Adminhtml"><dir name="Catalog"><dir name="Product"><file name="Grid.php" hash="d2827c5587a2bb7c8664ff92c3dcf5d7"/><dir name="Renderer"><file name="Language.php" hash="cfc3a15752ecc6f7aab870ea6834c1df"/><file name="LanguagePair.php" hash="8d1c1959b44b487570d135eb5758a63b"/><file name="Level.php" hash="4a8f278da146ce9c8108758924bea667"/><file name="SourceText.php" hash="23c33835a99e64d575b101491774ed89"/><file name="Store.php" hash="4639d9f82bb498e57842a83110573e0c"/></dir></dir></dir><dir name="Tag"><dir name="Tag"><file name="Grid.php" hash="24647d2a73089769f664f7ae8f686597"/></dir></dir><dir name="Transfluentorder"><dir name="Edit"><file name="Form.php" hash="17fc3866562d4820c251ed17cc154b4d"/><dir name="Tab"><file name="Form.php" hash="3d45b7754d0044de84f6d40cb4cca9bf"/></dir><file name="Tabs.php" hash="5654a57d38cb31fb7159ffea72380adb"/></dir><file name="Edit.php" hash="e4a7206b94ec73e6573e62d22efc61ba"/></dir><file name="Transfluentorder.php" hash="d7b1b9286ce4bc825aba90869f556f57"/><dir name="Transfluenttranslate"><dir name="Edit"><file name="Form.php" hash="9e9d2152d4dd8fe936558a88afd1c554"/><dir name="Tab"><file name="Form.php" hash="d6bb7a75b800f0dfb9a85d6b8547d3d2"/></dir><file name="Tabs.php" hash="1e4e31e2e4be31918e4db4d677092759"/></dir><file name="Edit.php" hash="596dc94ba740e312ad1ea8a3a86bdc43"/><file name="Grid.php" hash="275f7dd4f8abb376a51bab8ee815f8f9"/></dir><file name="Transfluenttranslate.php" hash="c9a69e2dc7bb9ded6a61db0988b4842f"/></dir><file name="Estimate.php" hash="bc70c44df7c0522dc56d2039ce73dc64"/><file name="Help.php" hash="1c6779b04425381242c053baf54cac1f"/><file name="Loginform.php" hash="0662a26391b83f075e0b3ddf6a50e854"/><file name="Regform.php" hash="1a21630f4971b98b456464566f037018"/><file name="Translblock.php" hash="2171980ac113e56bbff73745f3c03e95"/></dir><dir name="Exception"><file name="Base.php" hash="e0ab547033d95d94820a5cbd58dea6f5"/><file name="EBackendCustomerHasNoBillingAgreement.php" hash="87f798c9e376b2392f33005181028e6b"/><file name="EFailedToUpdateOrder.php" hash="4261e774331f5e68864409c687e87e84"/><file name="EInvalidInput.php" hash="9e68fc972d84da619bc0f59a0309c673"/><file name="EInvalidJob.php" hash="be82fd6fe0c1dbc88be57fa4fd923196"/><file name="EInvalidTagFormat.php" hash="c8ac44aaec31e4ab77655ab85434724b"/><file name="ELanguagePairNotSupported.php" hash="696af3edef69e5ef009bbbd766db97ae"/><file name="ETagNotFound.php" hash="6bc8d1f2a8a5cbdfa9e83be92532e159"/><file name="ETransfluentAuthenticationExpired.php" hash="31d78696b92490440689d517ce3961ad"/><file name="ETransfluentAuthenticationExpiredBase.php" hash="5f31f311c1242c956dbe03ed56b89e8e"/><file name="ETransfluentInvalidInputTags.php" hash="d7e056e164a93a6fd9f9cffbc31664f8"/><file name="ETransfluentNothingToTranslate.php" hash="6b9aef0ccc8848dbbe33e4d55742a789"/><file name="ETransfluentOrderFail.php" hash="019f6eea7ea672217a6297ad1028ed02"/><file name="ETransfluentProductHasNoFieldsToTranslate.php" hash="324c6a7f92a4b2367ad9253aae319aa2"/><file name="ETransfluentProductNotFound.php" hash="d1ae6d72c99ba0061c3972e56f7508c1"/><file name="ETransfluentSomeSelectedProductsNotFound.php" hash="aaa71cede2f1136e8f6700f35bb3c541"/><file name="ETransfluentTagsNothingToTranslate.php" hash="aaec4494fcfa5f5801cc41d2488063b2"/><file name="ETransfluentUnknownBackendResponse.php" hash="8b88d91c6069383091b46416236fb516"/><file name="ETransfluentUnknownError.php" hash="f27e0198db51ae862cc69d969238acff"/><file name="ETransfluentUnknownErrorNoEstimate.php" hash="714d3ad48595f0a7f271ff4d6e41d5b7"/><file name="ETransfluentUnknownErrorTags.php" hash="6b56cfb2b97bed42edaff02e409ded3e"/><file name="EUnauthorized.php" hash="eb1ca081eebdc497cde30cd85337bc6e"/></dir><dir name="Helper"><file name="Category.php" hash="29dc91d14b3b60702f389dcd7ab45bc1"/><file name="Constant.php" hash="76af7760107c984a86a8522d08f33529"/><file name="Data.php" hash="a9604a97b35ccd8e28db12ad4e6877f2"/><file name="Languages.php" hash="65bbfa5a583cfdbee8b74babcfad349c"/><file name="Product.php" hash="ee04f0c62cdeef260c677cd1fc363041"/><file name="Tag.php" hash="aba096e9a6207e7f2055db4733c1b839"/><file name="Text.php" hash="4e5c084ac4e849d6fe2614dfef77c932"/><file name="Util.php" hash="2db7fdba0b945821e12746c45fb6bf9b"/></dir><dir name="Model"><file name="AttributeName.php" hash="97619966fb9c04b031d2cae5147fdb21"/><file name="AttributeOption.php" hash="39007a2e2821e5853b6cfefe0e1a1c17"/><dir name="Base"><file name="Backendclient.php" hash="caf6a742113422d353ba7068c13cb296"/></dir><file name="CategoryDetail.php" hash="3a0ce226c17ef8280ca9001c77e0d275"/><dir name="Config"><dir name="Source"><file name="Fromlang.php" hash="600bdc90cb5a08d36003ea651ee398c2"/><file name="Language.php" hash="dcbd7cc51695c71fa0da6da25e0d52d8"/><file name="Quality.php" hash="73987e05216bb54d3b483d751888e602"/></dir></dir><file name="Debugutil.php" hash="3542cff301f9fc0d69072068c384acb3"/><dir name="Mysql4"><dir name="Transfluenttranslate"><file name="Collection.php" hash="80ebe484ed7a4dee8980b4d6c03d1425"/></dir><file name="Transfluenttranslate.php" hash="bef2f82a3c2d2fd25031c654026bdc34"/></dir><file name="Observer.php" hash="96ca21eaefbf03ea6a84cfa1179d4c93"/><file name="ProductDetail.php" hash="5b9a5ce790576fe19e33fbbc63554a24"/><file name="TagName.php" hash="8d59f540cc0f1290b419f95f7dabe7c6"/><file name="Transfluentorder.php" hash="12f0833461b032cdf21da5de28a3406a"/><file name="Transfluenttranslate.php" hash="d973756d579d415cd11033acb7669555"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="TransfluentAccountController.php" hash="8873df11e15efb11b90eeaf41f497b14"/><file name="TransfluentorderController.php" hash="6ec029cc1ab74adf1b7544f868cbcd45"/><file name="TransfluenttranslateController.php" hash="5de5c5717bfc3243cc62d4aaecd87c63"/></dir><file name="TranslationController.php" hash="fb177c1cfe8c7dccbcd6393dd4609f15"/></dir><dir name="etc"><file name="config.xml" hash="411a3a0dc37a0f9838d9d9e5991b25d6"/><file name="system.xml" hash="50cd649525ba4fa3d1e6b038a87c890c"/></dir><dir name="sql"><dir name="transfluenttranslate_setup"><file name="mysql4-install-1.1.0.php" hash="1691b91c29d66284b51583bf47e5c9ec"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="transfluent.xml" hash="92accb97ee4a7c710ef46e01d1307f83"/></dir><dir name="template"><dir name="transfluent"><dir name="account"><file name="action.phtml" hash="15f0fb05be28c13df4e6656cf9569b06"/><file name="create.phtml" hash="5b51d4a6f3f444494fe3b053c6f96463"/><file name="logged.phtml" hash="6f024c314550b3f378e5d8399984b082"/><file name="login.phtml" hash="06acb7c890315c53937a1dd5f90275a6"/></dir><file name="estimate.phtml" hash="f2b85bb6943c7ff335d45e2401e0b541"/><file name="estimate_section.phtml" hash="02db1adf41e46f86e4cca94e554db08f"/><dir name="order"><file name="category_step1.phtml" hash="44bcf9b7605e523f4d42dc3f15b1b994"/><file name="category_step2.phtml" hash="48ded6d187b52ba82b8902a0e2631206"/><file name="category_step3.phtml" hash="f32f4d22467c2f2f5a6b03c3bdb273a6"/><file name="category_step5.phtml" hash="c1121856016fa4dbf0bc0dbcd157ff20"/><file name="cms_step1.phtml" hash="a5bfb00d35d4f2d67bb355f106b8ab52"/><file name="cms_step2.phtml" hash="9ef31cc3bf8444c4f37fa927d8d1f694"/><file name="cms_step3.phtml" hash="58c18eb79aaaab70577c7163684c3898"/><file name="cms_step5.phtml" hash="2831358f2ff6153c8550816163c98ee9"/><file name="listing.phtml" hash="51403a39ad9e396656b9768e597af93d"/></dir><dir name="product"><dir name="attributes"><file name="edit.phtml" hash="e8bf33b266171a8f5a7e41a4c80efe6b"/></dir><dir name="category"><file name="edit.phtml" hash="dea02d77c12d1b9ec95d07f22677a3cc"/></dir><file name="edit.phtml" hash="4aa71b35c0ae578a67c3b6c8d0abf906"/><file name="index.phtml" hash="6701bfad68cceffaa4cd5b8775642849"/></dir><dir name="tag"><dir name="tag"><file name="index.phtml" hash="30dd38c745aec12f13a084be7753566d"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Transfluent_Translate.xml" hash="21fbc30a1cba6c2b86b262439eee8ed3"/></dir></target><target name="mageweb"><dir name="js"><dir name="transfluent"><file name="actions.js" hash="471135bf9f5941d0e22d11aa726bfc3b"/><file name="lib.js" hash="0f1029e5a4a1c1e88ca2bb8304bc34e8"/></dir></dir></target></contents>
26
  <compatible/>
27
  <dependencies><required><php><min>5.3.0</min><max>7.1.0</max></php><extension><name>Core</name><min></min><max></max></extension><extension><name>curl</name><min></min><max></max></extension><extension><name>json</name><min></min><max></max></extension><extension><name>mbstring</name><min></min><max></max></extension></required></dependencies>
28
  </package>