cama_language_editor 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +37 -0
- data/app/assets/javascripts/plugins/cama_language_editor/admin.js +43 -0
- data/app/assets/stylesheets/plugins/cama_language_editor/admin.css.scss +80 -0
- data/app/controllers/plugins/cama_language_editor/admin_controller.rb +7 -0
- data/app/helpers/plugins/cama_language_editor/main_helper.rb +74 -0
- data/app/views/plugins/cama_language_editor/admin/index.html.erb +53 -0
- data/config/camaleon_plugin.json +18 -0
- data/config/initializers/custom_models.rb +3 -0
- data/config/locales/en.yml +192 -0
- data/config/locales/es.yml +175 -0
- data/config/routes.rb +18 -0
- data/lib/cama_language_editor/engine.rb +4 -0
- data/lib/cama_language_editor/version.rb +3 -0
- data/lib/cama_language_editor.rb +4 -0
- data/lib/tasks/cama_language_editor_tasks.rake +4 -0
- data/test/cama_language_editor_test.rb +7 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config/application.rb +26 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +8 -0
- data/test/test_helper.rb +20 -0
- metadata +165 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1d6f38af1223fbad9a63c215a146054fe2e65752
|
4
|
+
data.tar.gz: a4e41d95f7bef0f0aa542d6d8d2c2eea01712e44
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 19e5a62f192ad6c507493a3fbebd8f0269f0ab81d36f426711f7e3cd54cc3fcdb81641d68fb05573b2de7bf605ff31f42bbdea5dc7488925e2ea4ee1272303ab
|
7
|
+
data.tar.gz: 82505819b8cc7ef261b120137f0300d3a28cfa7e763901b78e19bb1b9bc63ea989f29162ffe0866f8b0b98514d282ae5029f8583c7f196e529e12e7f4a3e05b8
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2016 Owen Peredo
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'CamaLanguageEditor'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
load 'rails/tasks/statistics.rake'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Bundler::GemHelper.install_tasks
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task default: :test
|
@@ -0,0 +1,43 @@
|
|
1
|
+
jQuery(function(){
|
2
|
+
$.fn.extend({
|
3
|
+
treed: function (openedClass, closedClass, onChange) {
|
4
|
+
var openedClass = openedClass || 'glyphicon-minus-sign';
|
5
|
+
var closedClass = closedClass || 'glyphicon-plus-sign';
|
6
|
+
|
7
|
+
//initialize each of the top levels
|
8
|
+
var tree = $(this);
|
9
|
+
tree.addClass("tree");
|
10
|
+
tree.on('click', 'li.branch', function (e, skip_recursive) {
|
11
|
+
if (this == e.target) {
|
12
|
+
var icon = $(this).children('i:first');
|
13
|
+
icon.toggleClass(openedClass + " " + closedClass);
|
14
|
+
$(this).children().children().toggle();
|
15
|
+
if(onChange && !skip_recursive) onChange($(this))
|
16
|
+
}
|
17
|
+
e.stopPropagation();
|
18
|
+
});
|
19
|
+
|
20
|
+
tree.on('click', '.branch .indicator', function(){ $(this).closest('li').click(); });
|
21
|
+
}
|
22
|
+
});
|
23
|
+
|
24
|
+
var panel = $('#translations_editor_table')
|
25
|
+
$('#translations_editor_form .mode_copy').click(function(){
|
26
|
+
var btn = $(this);
|
27
|
+
var edit_mode = btn.hasClass('is_edit_mode');
|
28
|
+
if(edit_mode) btn.removeClass('is_edit_mode');
|
29
|
+
else btn.addClass('is_edit_mode');
|
30
|
+
panel.find('input').each(function(){
|
31
|
+
if(edit_mode){
|
32
|
+
$(this).show().next().remove();
|
33
|
+
}else{
|
34
|
+
$(this).hide().after("<span class='input-group-addon copy_mode_label'>\""+$(this).val().replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\\\"')+"\"</span>");
|
35
|
+
}
|
36
|
+
});
|
37
|
+
});
|
38
|
+
|
39
|
+
$('#translations_editor_table .translation_column').treed(null, null, function(li, e){
|
40
|
+
$('#translations_editor_table li.'+li.attr('data-class')).not(li).trigger('click', [true]);
|
41
|
+
});
|
42
|
+
|
43
|
+
});
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#translations_editor_table{
|
2
|
+
.tree, .tree ul {
|
3
|
+
margin:0;
|
4
|
+
padding:0;
|
5
|
+
list-style:none
|
6
|
+
}
|
7
|
+
.tree ul {
|
8
|
+
margin-left:1em;
|
9
|
+
position:relative
|
10
|
+
}
|
11
|
+
.tree ul ul {
|
12
|
+
margin-left:.5em
|
13
|
+
}
|
14
|
+
.tree ul:before {
|
15
|
+
content:"";
|
16
|
+
display:block;
|
17
|
+
width:0;
|
18
|
+
position:absolute;
|
19
|
+
top:0;
|
20
|
+
bottom:0;
|
21
|
+
left:0;
|
22
|
+
border-left:1px solid
|
23
|
+
}
|
24
|
+
.tree li {
|
25
|
+
margin:0;
|
26
|
+
padding:0 1em;
|
27
|
+
line-height:2em;
|
28
|
+
color:#369;
|
29
|
+
font-weight:700;
|
30
|
+
position:relative;
|
31
|
+
padding-right: 0;
|
32
|
+
}
|
33
|
+
.tree ul li:before {
|
34
|
+
content:"";
|
35
|
+
display:block;
|
36
|
+
width:10px;
|
37
|
+
height:0;
|
38
|
+
border-top:1px solid;
|
39
|
+
margin-top:-1px;
|
40
|
+
position:absolute;
|
41
|
+
top:1em;
|
42
|
+
left:0
|
43
|
+
}
|
44
|
+
.tree ul li:last-child:before {
|
45
|
+
background:#fff;
|
46
|
+
height:auto;
|
47
|
+
top:1em;
|
48
|
+
bottom:0
|
49
|
+
}
|
50
|
+
.indicator {
|
51
|
+
margin-right:5px;
|
52
|
+
}
|
53
|
+
.tree li a {
|
54
|
+
text-decoration: none;
|
55
|
+
color:#369;
|
56
|
+
}
|
57
|
+
.tree li button, .tree li button:active, .tree li button:focus {
|
58
|
+
text-decoration: none;
|
59
|
+
color:#369;
|
60
|
+
border:none;
|
61
|
+
background:transparent;
|
62
|
+
margin:0px 0px 0px 0px;
|
63
|
+
padding:0px 0px 0px 0px;
|
64
|
+
outline: 0;
|
65
|
+
}
|
66
|
+
div.form-control{
|
67
|
+
padding: 0;
|
68
|
+
border: none;
|
69
|
+
}
|
70
|
+
.input-group-addon{
|
71
|
+
font-size: 10px;
|
72
|
+
min-width: 150px;
|
73
|
+
}
|
74
|
+
input{
|
75
|
+
font-weight: normal;
|
76
|
+
}
|
77
|
+
.copy_mode_label{
|
78
|
+
text-align: left !important;
|
79
|
+
}
|
80
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Plugins::CamaLanguageEditor::MainHelper
|
2
|
+
def self.included(klass)
|
3
|
+
# klass.helper_method [:my_helper_method] rescue "" # here your methods accessible from views
|
4
|
+
end
|
5
|
+
|
6
|
+
# here all actions on going to active
|
7
|
+
# you can run sql commands like this:
|
8
|
+
# results = ActiveRecord::Base.connection.execute(query);
|
9
|
+
# plugin: plugin model
|
10
|
+
def cama_language_editor_on_active(plugin)
|
11
|
+
end
|
12
|
+
|
13
|
+
# here all actions on going to inactive
|
14
|
+
# plugin: plugin model
|
15
|
+
def cama_language_editor_on_inactive(plugin)
|
16
|
+
end
|
17
|
+
|
18
|
+
# here all actions to upgrade for a new version
|
19
|
+
# plugin: plugin model
|
20
|
+
def cama_language_editor_on_upgrade(plugin)
|
21
|
+
end
|
22
|
+
|
23
|
+
def cama_language_plugin_options(args)
|
24
|
+
args[:links] << link_to('Access to Editor', admin_plugins_cama_language_editor_index_url)
|
25
|
+
end
|
26
|
+
|
27
|
+
def cama_language_render_item_translations(groups, base_key = nil, res = [], p_keys = [])
|
28
|
+
res_html = groups.map{|g| "" }
|
29
|
+
all_attrs = PluginRoutes.static_system_info['available_languages'].map{|_l| cama_language_get_hash_value(I18n.backend.send(:translations)[_l.to_sym], base_key.split(':') + p_keys) }
|
30
|
+
all_attrs.map{|g| g.keys || [] }.flatten.uniq.sort_by{|k| groups.map{|_g| _g[k].is_a?(Hash) ? 1 : 0 }.reduce(&:+) }.each do |key|
|
31
|
+
key_ori = key; key = 'no' if key === false; key = 'yes' if key === true
|
32
|
+
key = key.to_s
|
33
|
+
has_children = false
|
34
|
+
_groups = []
|
35
|
+
groups.each_with_index do |g, index|
|
36
|
+
res[index] = {} if res[index].nil?
|
37
|
+
_g = p_keys.present? ? cama_language_get_hash_value(res[index], p_keys.dup) : res[index]
|
38
|
+
_g[key] = g[key.to_sym] || g[key_ori] || {}
|
39
|
+
_groups[index] = _g[key]
|
40
|
+
end
|
41
|
+
|
42
|
+
all_attrs.each{|_g| has_children = true if _g[key.to_sym].is_a?(Hash) } # check if there exist any key with sub items
|
43
|
+
|
44
|
+
if has_children
|
45
|
+
cama_language_render_item_translations(_groups, base_key, res, p_keys + [key]).each_with_index do |html_g, index|
|
46
|
+
res_html[index] << "<li data-class='#{(p_keys+[key]).join('_')}' class='branch #{(p_keys+[key]).join('_')}'> <i class='indicator glyphicon glyphicon-minus-sign'></i>
|
47
|
+
<label>#{' ' * (((p_keys.size+1)*2)-1)}#{key}: </label>
|
48
|
+
<ul class='list-group'> #{html_g} </ul>
|
49
|
+
</li>"
|
50
|
+
end
|
51
|
+
else
|
52
|
+
_groups.each_with_index do |g_val, index|
|
53
|
+
res_html[index] << "<li><div class='input-group form-control'><span class='input-group-addon' style='text-align: left !important;'><b>#{' ' * ((p_keys.size+1)*2)}#{key}: </b></span><input type='text' class='form-control' value='#{(g_val.is_a?(Hash) ? '' : g_val).gsub("'", "\\\'") }'></div></li>"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
# res
|
58
|
+
res_html
|
59
|
+
end
|
60
|
+
|
61
|
+
# return the value of a hash with a recursive keys
|
62
|
+
# keys: (Array of keys) [:a, :b, :c]
|
63
|
+
# g: Hash with all values from where get the value
|
64
|
+
def cama_language_get_hash_value(g, keys)
|
65
|
+
k = keys.shift
|
66
|
+
g = g[k.to_sym]
|
67
|
+
(keys.any? ? cama_language_get_hash_value(g || {}, keys) : g) || {}
|
68
|
+
end
|
69
|
+
|
70
|
+
def cama_language_get_hash_value2(g, keys)
|
71
|
+
k = keys.shift
|
72
|
+
(keys.any? ? cama_language_get_hash_value(g[k] || {}, keys) : g[keys]) || {}
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<% params[:prefix] = 'camaleon_cms' unless params[:prefix].present? %>
|
2
|
+
<% params[:left_column] ||= 'en' %>
|
3
|
+
<% params[:right_column] ||= 'es' %>
|
4
|
+
<%= stylesheet_link_tag(plugin_asset_path('admin')) %>
|
5
|
+
<%= javascript_include_tag(plugin_asset_path('admin')) %>
|
6
|
+
<% languages = [params[:left_column], params[:right_column]] %>
|
7
|
+
|
8
|
+
<% r = cama_language_render_item_translations(languages.map{|_l| cama_language_get_hash_value(I18n.backend.send(:translations)[_l.to_sym], params[:prefix].split(":")) || {} }, params[:prefix]) %>
|
9
|
+
<%= form_tag url_for(action: :index), id: 'translations_editor_form', method: :get, class: 'row' do %>
|
10
|
+
<div class="col-md-6">
|
11
|
+
<div class="row">
|
12
|
+
<div class="col-md-6">
|
13
|
+
<label>Left Column</label><br>
|
14
|
+
<%= select_tag :left_column, options_for_select(PluginRoutes.static_system_info['available_languages'], params[:left_column]), class: 'form-control' %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="col-md-6">
|
18
|
+
<label>Right Column</label><br>
|
19
|
+
<%= select_tag :right_column, options_for_select(PluginRoutes.static_system_info['available_languages'], params[:right_column]), class: 'form-control' %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
</div>
|
24
|
+
<div class="col-md-6">
|
25
|
+
<small>Enter your prefix to filter specific translations, sample: plugins:ecommerce | camaleon_cms:admin</small>
|
26
|
+
<br>
|
27
|
+
<div class="input-group">
|
28
|
+
<span class="input-group-addon">Prefix</span>
|
29
|
+
<%= text_field_tag 'prefix', params[:prefix], class: 'form-control' %>
|
30
|
+
<span class="input-group-btn">
|
31
|
+
<button class="btn btn-secondary" type="submit">Load Translations</button>
|
32
|
+
<button type="button" class="btn btn-primary mode_copy">Copy Mode</button>
|
33
|
+
</span>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
<hr>
|
38
|
+
|
39
|
+
<div class="clearfix"></div>
|
40
|
+
<div id="translations_editor_table" class="row">
|
41
|
+
<% r.each_with_index do |g, index| %>
|
42
|
+
<div class="col-md-6">
|
43
|
+
<div class="panel panel-default">
|
44
|
+
<div class="panel-heading"><h4><%= languages[index] %>:<%= params[:prefix] %>:</h4></div>
|
45
|
+
<div class="panel-body translation_column tree">
|
46
|
+
<ul>
|
47
|
+
<%= raw g %>
|
48
|
+
</ul>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"title": "Cama Language Editor",
|
3
|
+
"descr": "",
|
4
|
+
"key": "cama_language_editor",
|
5
|
+
"helpers": [
|
6
|
+
"Plugins::CamaLanguageEditor::MainHelper"
|
7
|
+
],
|
8
|
+
"hooks": {
|
9
|
+
"on_active": [
|
10
|
+
"cama_language_editor_on_active"
|
11
|
+
],
|
12
|
+
"on_inactive": [
|
13
|
+
"cama_language_editor_on_inactive"
|
14
|
+
],
|
15
|
+
"plugin_options": ["cama_language_plugin_options"]
|
16
|
+
//here you can add all your hooks (read documentation)
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,192 @@
|
|
1
|
+
en:
|
2
|
+
plugin:
|
3
|
+
ecommerce:
|
4
|
+
active: 'Active'
|
5
|
+
add_shipping_methods: 'Add Shipping Method'
|
6
|
+
not_active: 'Not Active'
|
7
|
+
accepted: 'Accepted'
|
8
|
+
coupons: 'Coupons'
|
9
|
+
e_commerce: 'E-Commerce'
|
10
|
+
e_commerce_settings: 'E-commerce Settings'
|
11
|
+
e_mail_address: 'E-Mail Address'
|
12
|
+
edit_tax_rate: 'Edit Tax Rate'
|
13
|
+
edit_shipping_methods: 'Edit Shipping Method'
|
14
|
+
edit_price: 'Edit Price'
|
15
|
+
edit_payment_methods: 'Edit Payment Methods'
|
16
|
+
edit_coupon: 'Edit Coupon'
|
17
|
+
edit_order: 'Edit Order'
|
18
|
+
all_products: 'All Products'
|
19
|
+
add_new: 'Add New'
|
20
|
+
add_tax_rate: 'Add Tax Rate'
|
21
|
+
add_shipping_methods: 'Add Shipping Method'
|
22
|
+
add_price: 'Add Price'
|
23
|
+
add_coupons: 'Add Coupons'
|
24
|
+
add_payment_method: 'Add Payment Method'
|
25
|
+
billing_address: 'Billing Address'
|
26
|
+
by_bank_transfer: 'By bank transfer'
|
27
|
+
by_paypal: 'By Paypal'
|
28
|
+
by_credit_card: 'By credit card (with paypal)'
|
29
|
+
by_authorize_net: 'By credit card (Authorize.net)'
|
30
|
+
details_shipping_methods: 'Shipping Method Details'
|
31
|
+
details_payment_methods: 'Payment Methods Details'
|
32
|
+
details_order: 'Details Order'
|
33
|
+
details_user: 'User Details'
|
34
|
+
form_tax_rate: 'Tax Rate Form'
|
35
|
+
form_shipping_methods: 'Shipping Method Form'
|
36
|
+
form_price: 'Price Form'
|
37
|
+
form_payment_methods: 'Payment Methods Form'
|
38
|
+
form_coupon: 'Coupon Form'
|
39
|
+
form_settings: 'Settings Form'
|
40
|
+
orders: 'Orders'
|
41
|
+
order_received: 'Order Received'
|
42
|
+
order_accepted: 'Order Accepted'
|
43
|
+
order_shipped: 'Order Shipped'
|
44
|
+
payment_methods: 'Payment Methods'
|
45
|
+
info: 'Information'
|
46
|
+
list_orders: 'List Orders'
|
47
|
+
list_tax_rate: 'Tax Rate List'
|
48
|
+
list_shipping_methods: 'Shipping Method List'
|
49
|
+
shipping_methods: 'Shipping Methods'
|
50
|
+
shipping_prices: 'Shipping Prices'
|
51
|
+
list_price: 'Price List'
|
52
|
+
list_payment_methods: 'Payment Methods List'
|
53
|
+
list_coupons: 'Coupons List'
|
54
|
+
mark_shipped: 'Mark as Shipped'
|
55
|
+
message:
|
56
|
+
consignment_number: 'Use {{consignment_number}} to insert the consignment number.'
|
57
|
+
error_paypal_values: 'Error Paypal Values'
|
58
|
+
not_shipped: 'Not Shipped'
|
59
|
+
not_shipped_assigned: 'Not Shipped Assigned'
|
60
|
+
order: 'Order %{status}'
|
61
|
+
accepted: 'Accepted'
|
62
|
+
shipped: 'Shipped'
|
63
|
+
updated: 'Updated'
|
64
|
+
method_paypal: 'Method by Paypal'
|
65
|
+
method_credit_card: 'Method by Credit Card'
|
66
|
+
method_bank_transfer: 'Method Bank Transfer'
|
67
|
+
method_shipped: 'Method Shipped'
|
68
|
+
method_authorize_net: 'Method by Authorize.net'
|
69
|
+
new: 'New'
|
70
|
+
new_tax_rate: 'New Tax Rate'
|
71
|
+
new_shipping_methods: 'New Shipping Method'
|
72
|
+
new_payment_methods: 'New Payment Methods'
|
73
|
+
new_coupon: 'New Coupon'
|
74
|
+
options_payment_methods: 'Payment Options'
|
75
|
+
payments: 'Payments'
|
76
|
+
phone_number: 'Phone Number'
|
77
|
+
product:
|
78
|
+
featured: 'Featured'
|
79
|
+
item: 'Item'
|
80
|
+
photo: "Photos of product"
|
81
|
+
box: "What's in the box"
|
82
|
+
sku: "SKU"
|
83
|
+
attrs: "Attributes"
|
84
|
+
photos: "Photos"
|
85
|
+
price: "Price"
|
86
|
+
cost: "Cost"
|
87
|
+
tax: "Tax rate"
|
88
|
+
weight: "Weight"
|
89
|
+
stock_status: 'Stock Status'
|
90
|
+
stock: "Stock control?"
|
91
|
+
qty: "Quantity"
|
92
|
+
in_stock: 'In Stock'
|
93
|
+
not_in_tock: 'Not In Stock'
|
94
|
+
total_excluding_tax: 'Total (excluding Tax)'
|
95
|
+
current_unit: 'Current unit: %{unit}'
|
96
|
+
current_weight: 'Current weight: %{weight}'
|
97
|
+
products: 'Products'
|
98
|
+
shipping_address: 'Shipping Address'
|
99
|
+
shipping_methods: 'Shipping Methods'
|
100
|
+
shipped_date: 'Shipped Date'
|
101
|
+
search_order_number: 'Search for order number'
|
102
|
+
select:
|
103
|
+
received: 'Received'
|
104
|
+
unpaid: 'Unpaid'
|
105
|
+
accepted: 'Accepted'
|
106
|
+
shipped: 'Shipped'
|
107
|
+
closed: 'Closed'
|
108
|
+
canceled: 'Canceled'
|
109
|
+
kilogram: 'kilogram'
|
110
|
+
pound: 'pound'
|
111
|
+
dram: 'dram'
|
112
|
+
grain: 'grain'
|
113
|
+
gram: 'gram'
|
114
|
+
hundredweight: 'hundredweight'
|
115
|
+
milligram: 'milligram'
|
116
|
+
ounce: 'ounce'
|
117
|
+
tonne: 'tonne'
|
118
|
+
table:
|
119
|
+
address: 'Address'
|
120
|
+
actions: 'Actions'
|
121
|
+
amount: 'Amount'
|
122
|
+
allowed_applications: 'Allowed applications'
|
123
|
+
city: 'City'
|
124
|
+
code: 'Code'
|
125
|
+
country: 'Country'
|
126
|
+
currency_unit: 'Currency Unit'
|
127
|
+
currency_weight: 'Currency Weight'
|
128
|
+
customer: 'Customer'
|
129
|
+
customer_info: 'Customer Info'
|
130
|
+
description: 'Description'
|
131
|
+
details: 'Details'
|
132
|
+
discount: 'Discount'
|
133
|
+
discount_type: 'Discount type'
|
134
|
+
email: 'Email'
|
135
|
+
expiration_date: 'Expiration date'
|
136
|
+
expired: 'Expired'
|
137
|
+
firstname: 'Firstname'
|
138
|
+
id: 'ID'
|
139
|
+
lastname: 'Lastname'
|
140
|
+
login: 'Login'
|
141
|
+
login_id: 'Login Id'
|
142
|
+
max_weight: 'Max Weight'
|
143
|
+
min_weight: 'Min Weight'
|
144
|
+
min_cart_total: 'Min cart total'
|
145
|
+
name: 'Name'
|
146
|
+
not_paid: 'Not Paid'
|
147
|
+
method: 'Method'
|
148
|
+
number_account_bank: 'Number Account Bank'
|
149
|
+
phone: 'Phone'
|
150
|
+
paid: 'Paid?'
|
151
|
+
password: 'Password'
|
152
|
+
payment_method: 'Payment Method'
|
153
|
+
percent: 'Percent'
|
154
|
+
money: 'Money'
|
155
|
+
free_shipping: 'Free Shipping'
|
156
|
+
products: 'Products'
|
157
|
+
rate: 'Rate'
|
158
|
+
received_time: 'Received Time'
|
159
|
+
sandbox: 'Sandbox'
|
160
|
+
shipping: 'Shipping'
|
161
|
+
signature: 'Signature'
|
162
|
+
status: 'Status'
|
163
|
+
slug: 'Slug'
|
164
|
+
sub_total: 'Subtotal'
|
165
|
+
state: 'State'
|
166
|
+
total: 'Total'
|
167
|
+
url_tracking: 'URL Tracking'
|
168
|
+
username_login: 'Username / Login'
|
169
|
+
used_applications: 'Used applications'
|
170
|
+
code_zip: 'Code Zip'
|
171
|
+
method_type: 'Method type'
|
172
|
+
transaction_key: 'Transaction key'
|
173
|
+
tax_rates: 'Tax Rates'
|
174
|
+
add_to_cart: 'Add to cart'
|
175
|
+
msg:
|
176
|
+
added_product_in_cart: 'Added product successfully in Cart.'
|
177
|
+
mail:
|
178
|
+
order_received:
|
179
|
+
welcome: "Hi"
|
180
|
+
thanks: "Thank you for your purchase."
|
181
|
+
reference: "For your reference, your order number is:"
|
182
|
+
recovery_cart:
|
183
|
+
body: "We noticed that you might be stuck."
|
184
|
+
reference: "For your reference, your order number is:"
|
185
|
+
email:
|
186
|
+
order_received:
|
187
|
+
subject: "Thank you for purchasing"
|
188
|
+
recovery_cart:
|
189
|
+
subject: "We noticed that you might be stuck"
|
190
|
+
order_received_admin:
|
191
|
+
subject: "New purchase"
|
192
|
+
|