tr8n 3.1.8 → 3.2.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.
- data/.gitignore +2 -1
- data/.rspec +1 -0
- data/.rvmrc +1 -1
- data/.watchr +18 -0
- data/Gemfile.lock +16 -10
- data/app/assets/images/tr8n/minus_node.png +0 -0
- data/app/assets/images/tr8n/pixel.gif +0 -0
- data/app/assets/images/tr8n/plus_node.png +0 -0
- data/app/assets/javascripts/tr8n/tr8n.js +1 -0
- data/app/assets/javascripts/tr8n/tr8n_client_sdk.js +581 -425
- data/app/assets/stylesheets/tr8n/layout.css.scss +1 -1
- data/app/assets/stylesheets/tr8n/tr8n.css.scss +20 -0
- data/app/controllers/tr8n/admin/base_controller.rb +4 -1
- data/app/controllers/tr8n/admin/clientsdk_controller.rb +1 -1
- data/app/controllers/tr8n/admin/metrics_controller.rb +30 -0
- data/app/controllers/tr8n/api/v1/base_controller.rb +12 -0
- data/app/controllers/tr8n/api/v1/language_controller.rb +7 -5
- data/app/controllers/tr8n/awards_controller.rb +1 -1
- data/app/controllers/tr8n/base_controller.rb +12 -6
- data/app/controllers/tr8n/dashboard_controller.rb +1 -1
- data/app/controllers/tr8n/forum_controller.rb +1 -1
- data/app/controllers/tr8n/glossary_controller.rb +1 -1
- data/app/controllers/tr8n/help_controller.rb +1 -1
- data/app/controllers/tr8n/phrases_controller.rb +1 -1
- data/app/controllers/tr8n/translator_controller.rb +8 -0
- data/app/helpers/tr8n/admin/base_helper.rb +1 -1
- data/app/helpers/tr8n/base_helper.rb +1 -1
- data/app/helpers/tr8n/dashboard_helper.rb +1 -1
- data/app/models/tr8n/base_filter.rb +1 -1
- data/app/models/tr8n/daily_language_metric.rb +1 -1
- data/app/models/tr8n/date_rule.rb +1 -1
- data/app/models/tr8n/gender_list_rule.rb +1 -1
- data/app/models/tr8n/gender_rule.rb +1 -1
- data/app/models/tr8n/glossary.rb +1 -1
- data/app/models/tr8n/glossary_filter.rb +1 -1
- data/app/models/tr8n/integration/ru/russian_gender_list_rule.rb +1 -1
- data/app/models/tr8n/integration/ru/russian_numeric_rule.rb +1 -1
- data/app/models/tr8n/ip_location.rb +1 -1
- data/app/models/tr8n/ip_location_filter.rb +1 -1
- data/app/models/tr8n/language.rb +19 -7
- data/app/models/tr8n/language_case.rb +1 -1
- data/app/models/tr8n/language_case_filter.rb +1 -1
- data/app/models/tr8n/language_case_rule.rb +1 -1
- data/app/models/tr8n/language_case_rule_filter.rb +1 -1
- data/app/models/tr8n/language_case_value_map.rb +1 -1
- data/app/models/tr8n/language_case_value_map_filter.rb +1 -1
- data/app/models/tr8n/language_filter.rb +1 -1
- data/app/models/tr8n/language_forum_abuse_report.rb +1 -1
- data/app/models/tr8n/language_forum_abuse_report_filter.rb +1 -1
- data/app/models/tr8n/language_forum_message.rb +1 -1
- data/app/models/tr8n/language_forum_message_filter.rb +1 -1
- data/app/models/tr8n/language_forum_topic.rb +1 -1
- data/app/models/tr8n/language_forum_topic_filter.rb +1 -1
- data/app/models/tr8n/language_metric.rb +1 -1
- data/app/models/tr8n/language_metric_filter.rb +1 -1
- data/app/models/tr8n/language_rule.rb +1 -1
- data/app/models/tr8n/language_rule_filter.rb +1 -1
- data/app/models/tr8n/language_user.rb +1 -1
- data/app/models/tr8n/language_user_filter.rb +1 -1
- data/app/models/tr8n/list_rule.rb +1 -1
- data/app/models/tr8n/monthly_language_metric.rb +1 -1
- data/app/models/tr8n/numeric_rule.rb +35 -28
- data/app/models/tr8n/sync_log.rb +1 -1
- data/app/models/tr8n/sync_log_filter.rb +1 -1
- data/app/models/tr8n/total_language_metric.rb +1 -1
- data/app/models/tr8n/translation.rb +4 -3
- data/app/models/tr8n/translation_domain.rb +11 -3
- data/app/models/tr8n/translation_domain_filter.rb +1 -1
- data/app/models/tr8n/translation_filter.rb +1 -1
- data/app/models/tr8n/translation_key.rb +73 -36
- data/app/models/tr8n/translation_key_comment.rb +1 -1
- data/app/models/tr8n/translation_key_comment_filter.rb +1 -1
- data/app/models/tr8n/translation_key_filter.rb +1 -1
- data/app/models/tr8n/translation_key_lock.rb +1 -1
- data/app/models/tr8n/translation_key_lock_filter.rb +1 -1
- data/app/models/tr8n/translation_key_source.rb +16 -5
- data/app/models/tr8n/translation_key_source_filter.rb +1 -1
- data/app/models/tr8n/translation_source.rb +12 -4
- data/app/models/tr8n/translation_source_filter.rb +1 -1
- data/app/models/tr8n/translation_source_language.rb +1 -1
- data/app/models/tr8n/translation_vote.rb +1 -1
- data/app/models/tr8n/translation_vote_filter.rb +1 -1
- data/app/models/tr8n/translator.rb +21 -5
- data/app/models/tr8n/translator_filter.rb +1 -1
- data/app/models/tr8n/translator_following.rb +1 -1
- data/app/models/tr8n/translator_following_filter.rb +1 -1
- data/app/models/tr8n/translator_log.rb +3 -3
- data/app/models/tr8n/translator_log_filter.rb +1 -1
- data/app/models/tr8n/translator_metric.rb +1 -1
- data/app/models/tr8n/translator_metric_filter.rb +1 -1
- data/app/models/tr8n/translator_report.rb +1 -1
- data/app/models/tr8n/translator_report_filter.rb +1 -1
- data/app/models/tr8n/value_rule.rb +1 -1
- data/app/views/tr8n/admin/clientsdk/index.html.erb +29 -29
- data/app/views/tr8n/admin/clientsdk/lb_samples.html.erb +1 -1
- data/app/views/tr8n/admin/metrics/_tabs.html.erb +22 -0
- data/app/views/tr8n/admin/metrics/index.html.erb +60 -0
- data/app/views/tr8n/common/_header.html.erb +3 -1
- data/app/views/tr8n/common/_language_selector.html.erb +4 -2
- data/app/views/tr8n/common/_scripts.html.erb +5 -0
- data/app/views/tr8n/common/_terms_of_service.html.erb +53 -0
- data/app/views/tr8n/help/credits.html.erb +4 -0
- data/app/views/tr8n/language/_select.html.erb +5 -1
- data/app/views/tr8n/translator/registration.html.erb +21 -0
- data/config/routes.rb +3 -1
- data/doc/classes.graffle +356 -7194
- data/lib/generators/tr8n/templates/config/tr8n/config.yml +9 -1
- data/lib/generators/tr8n/templates/config/tr8n/site/shortcuts.yml +1 -1
- data/lib/generators/tr8n/templates/config/tr8n/tokens/decorations.yml +4 -1
- data/lib/generators/tr8n/tr8n_generator.rb +1 -1
- data/lib/tasks/tr8n.rake +1 -1
- data/lib/tr8n.rb +23 -0
- data/lib/tr8n/active_dumper.rb +1 -1
- data/lib/tr8n/cache.rb +1 -8
- data/lib/tr8n/cache_adapters/memcached.rb +1 -1
- data/lib/tr8n/config.rb +37 -1
- data/lib/tr8n/dictionary.rb +1 -1
- data/lib/tr8n/engine.rb +4 -1
- data/lib/tr8n/exception.rb +1 -1
- data/lib/tr8n/extender.rb +1 -1
- data/lib/tr8n/extensions/action_controller_extension.rb +5 -4
- data/lib/tr8n/extensions/action_view_extension.rb +71 -20
- data/lib/tr8n/extensions/array_extension.rb +14 -1
- data/lib/tr8n/extensions/date_extension.rb +1 -1
- data/lib/tr8n/extensions/fixnum_extension.rb +1 -1
- data/lib/tr8n/extensions/hash_extension.rb +1 -1
- data/lib/tr8n/extensions/string_extension.rb +1 -1
- data/lib/tr8n/extensions/time_extension.rb +1 -1
- data/lib/tr8n/ip_address.rb +1 -1
- data/lib/tr8n/key_registration_exception.rb +1 -1
- data/lib/tr8n/keyboard_mapping.rb +1 -1
- data/lib/tr8n/logger.rb +1 -1
- data/lib/tr8n/railtie.rb +1 -1
- data/lib/tr8n/site_map.rb +1 -1
- data/lib/tr8n/site_map_section.rb +1 -1
- data/lib/tr8n/token.rb +1 -1
- data/lib/tr8n/token_exception.rb +1 -1
- data/lib/tr8n/tokenized_label.rb +2 -12
- data/lib/tr8n/tokens/data_token.rb +1 -1
- data/lib/tr8n/tokens/decoration_token.rb +1 -1
- data/lib/tr8n/tokens/hidden_token.rb +1 -1
- data/lib/tr8n/tokens/method_token.rb +1 -1
- data/lib/tr8n/tokens/transform_token.rb +1 -1
- data/lib/tr8n/version.rb +25 -1
- data/local/tr8n_server/app/models/user.rb +1 -0
- data/local/tr8n_server/config/environments/test.rb +1 -1
- data/local/tr8n_server/config/tr8n/config.yml +45 -39
- data/local/tr8n_server/config/tr8n/site/shortcuts.yml +1 -1
- data/local/tr8n_server/db/schema.rb +2 -0
- data/spec/controllers/awards_controller_spec.rb +22 -0
- data/spec/controllers/base_controller_spec.rb +6 -0
- data/spec/controllers/dashboard_controller_spec.rb +23 -0
- data/spec/controllers/forum_controller_spec.rb +23 -0
- data/spec/controllers/glossary_controller_spec.rb +22 -0
- data/spec/controllers/help_controller_spec.rb +22 -0
- data/spec/controllers/language_cases_controller_spec.rb +13 -0
- data/spec/controllers/language_controller_spec.rb +10 -0
- data/spec/controllers/phrases_controller_spec.rb +22 -0
- data/spec/controllers/translations_controller_spec.rb +23 -0
- data/spec/controllers/translator_controller_spec.rb +22 -0
- data/spec/lib/tokenized_label_spec.rb +42 -0
- data/spec/lib/tokens/data_token_spec.rb +49 -0
- data/spec/lib/tokens/decoration_token_spec.rb +49 -0
- data/spec/lib/tokens/hidden_token_spec.rb +53 -0
- data/spec/lib/tokens/method_token_spec.rb +61 -0
- data/spec/lib/tokens/transform_token_spec.rb +51 -0
- data/spec/models/tr8n/daily_language_metric_spec.rb +5 -0
- data/spec/models/tr8n/date_rule_spec.rb +5 -0
- data/spec/models/tr8n/gender_list_rule_spec.rb +5 -0
- data/spec/models/tr8n/gender_rule_spec.rb +141 -0
- data/spec/models/tr8n/glossary_spec.rb +5 -0
- data/spec/models/tr8n/ip_location_spec.rb +5 -0
- data/spec/models/tr8n/language_case_rule_spec.rb +5 -0
- data/spec/models/tr8n/language_case_spec.rb +5 -0
- data/spec/models/tr8n/language_case_value_map_spec.rb +5 -0
- data/spec/models/tr8n/language_forum_abuse_report_spec.rb +5 -0
- data/spec/models/tr8n/language_forum_message_spec.rb +5 -0
- data/spec/models/tr8n/language_forum_topic_spec.rb +5 -0
- data/spec/models/tr8n/language_metric_spec.rb +5 -0
- data/spec/models/tr8n/language_rule_spec.rb +5 -0
- data/spec/models/tr8n/language_spec.rb +79 -0
- data/spec/models/tr8n/language_user_spec.rb +5 -0
- data/spec/models/tr8n/list_rule_spec.rb +5 -0
- data/spec/models/tr8n/monthly_language_metric_spec.rb +5 -0
- data/spec/models/tr8n/numeric_rule_spec.rb +162 -0
- data/spec/models/tr8n/sync_log_spec.rb +5 -0
- data/spec/models/tr8n/total_language_metric_spec.rb +5 -0
- data/spec/models/tr8n/translation_domain_spec.rb +5 -0
- data/spec/models/tr8n/translation_key_comment_spec.rb +5 -0
- data/spec/models/tr8n/translation_key_lock_spec.rb +5 -0
- data/spec/models/tr8n/translation_key_source_spec.rb +5 -0
- data/spec/models/tr8n/translation_key_spec.rb +118 -0
- data/spec/models/tr8n/translation_source_language_spec.rb +5 -0
- data/spec/models/tr8n/translation_source_spec.rb +5 -0
- data/spec/models/tr8n/translation_spec.rb +5 -0
- data/spec/models/tr8n/translation_vote_spec.rb +5 -0
- data/spec/models/tr8n/translator_following_spec.rb +5 -0
- data/spec/models/tr8n/translator_log_spec.rb +5 -0
- data/spec/models/tr8n/translator_metric_spec.rb +5 -0
- data/spec/models/tr8n/translator_report_spec.rb +5 -0
- data/spec/models/tr8n/translator_spec.rb +140 -0
- data/spec/spec_helper.rb +26 -27
- data/tr8n.gemspec +3 -1
- metadata +173 -50
- data/local/tr8n_server/db/migrate/20110930041150_create_tr8n_tables.rb +0 -372
- data/spec/fake_app.rb +0 -50
- data/spec/lib/data_token_spec.rb +0 -26
- data/spec/lib/transform_token_spec.rb +0 -22
- data/spec/models/translation_key_spec.rb +0 -63
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
.page_body .main_col {overflow:hidden;_overflow:visible;_zoom:1;}
|
|
50
50
|
.page_body .left_col {float:left; width:250px;_margin-right:-3px;}
|
|
51
51
|
.page_body .right_col {float:right; width: 300px;_margin-left:-3px;}
|
|
52
|
-
|
|
52
|
+
.content_inner {padding:10px}
|
|
53
53
|
|
|
54
54
|
/* Header */
|
|
55
55
|
|
|
@@ -442,3 +442,23 @@ body.tr8n_grey_disabled_button {background-position: left -300p
|
|
|
442
442
|
body.tr8n_grey_disabled_button span {background-position: right -626px; }
|
|
443
443
|
|
|
444
444
|
.tr8n_cancel_link {font-size:12px;font-family:arial;}
|
|
445
|
+
|
|
446
|
+
/****************************************/
|
|
447
|
+
/*** Logger Objects
|
|
448
|
+
/****************************************/
|
|
449
|
+
.tr8n_logger_obj_key {
|
|
450
|
+
padding-right: 10px;
|
|
451
|
+
color: #444;
|
|
452
|
+
}
|
|
453
|
+
.tr8n_logger_obj_value_string {
|
|
454
|
+
color: green;
|
|
455
|
+
}
|
|
456
|
+
.tr8n_logger_obj_value_string {
|
|
457
|
+
color: green;
|
|
458
|
+
}
|
|
459
|
+
.tr8n_logger_obj_value_boolean {
|
|
460
|
+
color: blue;
|
|
461
|
+
}
|
|
462
|
+
.tr8n_logger_obj_value_number {
|
|
463
|
+
color: red;
|
|
464
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright (c) 2010-
|
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -50,12 +50,15 @@ private
|
|
|
50
50
|
{"title" => "Translators", "description" => "Admin tab", "controller" => "translator"},
|
|
51
51
|
{"title" => "Glossary", "description" => "Admin tab", "controller" => "glossary"},
|
|
52
52
|
{"title" => "Forum", "description" => "Admin tab", "controller" => "forum"},
|
|
53
|
+
{"title" => "Metrics", "description" => "Metrics tab", "controller" => "metrics"},
|
|
53
54
|
{"title" => "Client SDK", "description" => "Admin tab", "controller" => "clientsdk"}
|
|
54
55
|
]
|
|
55
56
|
end
|
|
56
57
|
helper_method :tr8n_admin_tabs
|
|
57
58
|
|
|
58
59
|
def validate_admin
|
|
60
|
+
return if Tr8n::Config.env == 'development'
|
|
61
|
+
|
|
59
62
|
unless tr8n_current_user_is_admin?
|
|
60
63
|
trfe("You must be an admin in order to view this section of the site")
|
|
61
64
|
redirect_to_site_default_url
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
#++
|
|
23
|
+
|
|
24
|
+
class Tr8n::Admin::MetricsController < Tr8n::Admin::BaseController
|
|
25
|
+
|
|
26
|
+
def index
|
|
27
|
+
@languages = Tr8n::Language.enabled_languages
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
@@ -23,6 +23,18 @@
|
|
|
23
23
|
|
|
24
24
|
class Tr8n::Api::V1::BaseController < ApplicationController
|
|
25
25
|
|
|
26
|
+
if Tr8n::Config.api_skip_before_filters.any?
|
|
27
|
+
skip_before_filter *Tr8n::Config.api_skip_before_filters
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
if Tr8n::Config.api_before_filters.any?
|
|
31
|
+
before_filter *Tr8n::Config.api_before_filters
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
if Tr8n::Config.api_after_filters.any?
|
|
35
|
+
after_filter *Tr8n::Config.api_after_filters
|
|
36
|
+
end
|
|
37
|
+
|
|
26
38
|
private
|
|
27
39
|
|
|
28
40
|
def tr8n_current_user
|
|
@@ -40,10 +40,8 @@ class Tr8n::Api::V1::LanguageController < Tr8n::Api::V1::BaseController
|
|
|
40
40
|
def translate
|
|
41
41
|
return sanitize_api_response({"error" => "Api is disabled"}) unless Tr8n::Config.enable_api?
|
|
42
42
|
|
|
43
|
-
# return sanitize_api_response({"error" => "You must be logged in to use the api"}) if tr8n_current_user_is_guest?
|
|
44
|
-
|
|
45
43
|
language = Tr8n::Language.for(params[:language]) || tr8n_current_language
|
|
46
|
-
source = CGI.unescape(params[:source]
|
|
44
|
+
source = CGI.unescape(params[:source] || "API")
|
|
47
45
|
|
|
48
46
|
return sanitize_api_response(translate_phrase(language, params, {:source => source})) if params[:label]
|
|
49
47
|
|
|
@@ -51,7 +49,7 @@ class Tr8n::Api::V1::LanguageController < Tr8n::Api::V1::BaseController
|
|
|
51
49
|
# {:source => "", :language => "", :phrases => [{:label => ""}]}
|
|
52
50
|
|
|
53
51
|
# get all phrases for the specified source
|
|
54
|
-
if params[:batch] == "true"
|
|
52
|
+
if params[:batch] == "true" or params[:cache] == "true"
|
|
55
53
|
if params[:sources].blank? and params[:source].blank?
|
|
56
54
|
return sanitize_api_response({"error" => "No source/sources have been provided for the batch request."})
|
|
57
55
|
end
|
|
@@ -73,6 +71,10 @@ class Tr8n::Api::V1::LanguageController < Tr8n::Api::V1::BaseController
|
|
|
73
71
|
translations << trn
|
|
74
72
|
end
|
|
75
73
|
|
|
74
|
+
if params[:sdk_jsvar]
|
|
75
|
+
return render(:text => "#{params[:sdk_jsvar]}.updateTranslations(#{translations.to_json});", :content_type => "text/javascript")
|
|
76
|
+
end
|
|
77
|
+
|
|
76
78
|
return sanitize_api_response({:phrases => translations})
|
|
77
79
|
elsif params[:phrases]
|
|
78
80
|
|
|
@@ -92,7 +94,7 @@ class Tr8n::Api::V1::LanguageController < Tr8n::Api::V1::BaseController
|
|
|
92
94
|
return sanitize_api_response({:phrases => translations})
|
|
93
95
|
end
|
|
94
96
|
|
|
95
|
-
sanitize_api_response(
|
|
97
|
+
sanitize_api_response(:phrases => {})
|
|
96
98
|
rescue Tr8n::KeyRegistrationException => ex
|
|
97
99
|
sanitize_api_response({"error" => ex.message})
|
|
98
100
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright (c) 2010-
|
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -43,8 +43,8 @@ module Tr8n
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
before_filter :validate_tr8n_enabled, :except => [:translate]
|
|
46
|
-
before_filter :validate_guest_user, :except => [:select, :switch, :translate, :table]
|
|
47
|
-
before_filter :validate_current_user, :except => [:translate]
|
|
46
|
+
before_filter :validate_guest_user, :except => [:select, :switch, :translate, :table, :registration]
|
|
47
|
+
before_filter :validate_current_user, :except => [:select, :switch, :translate, :table, :registration]
|
|
48
48
|
|
|
49
49
|
layout Tr8n::Config.site_info[:tr8n_layout]
|
|
50
50
|
|
|
@@ -149,10 +149,16 @@ module Tr8n
|
|
|
149
149
|
|
|
150
150
|
# make sure users have the rights to access this section
|
|
151
151
|
def validate_current_user
|
|
152
|
-
|
|
152
|
+
return if Tr8n::Config.current_user_is_translator?
|
|
153
|
+
|
|
154
|
+
unless Tr8n::Config.open_registration_mode?
|
|
153
155
|
trfe("You don't have rights to access that section.")
|
|
154
156
|
return redirect_to(Tr8n::Config.default_url)
|
|
155
157
|
end
|
|
158
|
+
|
|
159
|
+
if Tr8n::Config.enable_registration_disclaimer?
|
|
160
|
+
redirect_to("/tr8n/translator/registration")
|
|
161
|
+
end
|
|
156
162
|
end
|
|
157
163
|
|
|
158
164
|
# make sure that the current user is a translator
|
|
@@ -170,12 +176,12 @@ module Tr8n
|
|
|
170
176
|
|
|
171
177
|
if tr8n_current_language.default?
|
|
172
178
|
trfe("Only administrators can modify this language")
|
|
173
|
-
return redirect_to(
|
|
179
|
+
return redirect_to(tr8n_features_tabs.first[:link])
|
|
174
180
|
end
|
|
175
181
|
|
|
176
182
|
unless tr8n_current_user_is_translator? and tr8n_current_translator.manager?
|
|
177
183
|
trfe("In order to manage a language you first must request to become a manager of that language. Please send your request to Geni support.")
|
|
178
|
-
return redirect_to(
|
|
184
|
+
return redirect_to(tr8n_features_tabs.first[:link])
|
|
179
185
|
end
|
|
180
186
|
end
|
|
181
187
|
|
|
@@ -41,7 +41,7 @@ class Tr8n::PhrasesController < Tr8n::BaseController
|
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
@translation_keys = @translation_keys.order("
|
|
44
|
+
@translation_keys = @translation_keys.order("created_at desc").page(page).per(per_page)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def view
|
|
@@ -23,6 +23,14 @@
|
|
|
23
23
|
|
|
24
24
|
class Tr8n::TranslatorController < Tr8n::BaseController
|
|
25
25
|
|
|
26
|
+
def registration
|
|
27
|
+
if params[:agree] == "yes"
|
|
28
|
+
Tr8n::Config.current_translator # this will register a translator
|
|
29
|
+
trfn("Thank you! You have been register as a translator")
|
|
30
|
+
return redirect_to("/tr8n/phrases")
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
26
34
|
def index
|
|
27
35
|
@fallback_language = (tr8n_current_translator.fallback_language || tr8n_default_language)
|
|
28
36
|
end
|
data/app/models/tr8n/glossary.rb
CHANGED
data/app/models/tr8n/language.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright (c) 2010-
|
|
2
|
+
# Copyright (c) 2010-2012 Michael Berkovich, tr8n.net
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -36,25 +36,33 @@ class Tr8n::Language < ActiveRecord::Base
|
|
|
36
36
|
has_many :translation_key_locks, :class_name => 'Tr8n::TranslationKeyLock', :dependent => :destroy
|
|
37
37
|
has_many :language_metrics, :class_name => 'Tr8n::LanguageMetric'
|
|
38
38
|
|
|
39
|
-
def self.
|
|
40
|
-
|
|
39
|
+
def self.cache_key(locale)
|
|
40
|
+
"language_#{locale}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def cache_key
|
|
44
|
+
self.class.cache_key(locale)
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
def self.for(locale)
|
|
44
48
|
return nil if locale.nil?
|
|
45
|
-
Tr8n::Cache.fetch(
|
|
49
|
+
Tr8n::Cache.fetch(cache_key(locale)) do
|
|
46
50
|
find_by_locale(locale)
|
|
47
51
|
end
|
|
48
52
|
end
|
|
49
53
|
|
|
54
|
+
def self.find_or_create(lcl, english_name)
|
|
55
|
+
find_by_locale(lcl) || create(:locale => lcl, :english_name => english_name)
|
|
56
|
+
end
|
|
57
|
+
|
|
50
58
|
def rules
|
|
51
|
-
Tr8n::Cache.fetch("language_rules_#{
|
|
59
|
+
Tr8n::Cache.fetch("language_rules_#{locale}") do
|
|
52
60
|
language_rules
|
|
53
61
|
end
|
|
54
62
|
end
|
|
55
63
|
|
|
56
64
|
def cases
|
|
57
|
-
Tr8n::Cache.fetch("language_cases_#{
|
|
65
|
+
Tr8n::Cache.fetch("language_cases_#{locale}") do
|
|
58
66
|
language_cases
|
|
59
67
|
end
|
|
60
68
|
end
|
|
@@ -64,6 +72,7 @@ class Tr8n::Language < ActiveRecord::Base
|
|
|
64
72
|
reset_language_cases!
|
|
65
73
|
end
|
|
66
74
|
|
|
75
|
+
# reloads rules for the language from the yml file
|
|
67
76
|
def reset_language_rules!
|
|
68
77
|
rules.delete_all
|
|
69
78
|
Tr8n::Config.language_rule_classes.each do |rule_class|
|
|
@@ -73,6 +82,7 @@ class Tr8n::Language < ActiveRecord::Base
|
|
|
73
82
|
end
|
|
74
83
|
end
|
|
75
84
|
|
|
85
|
+
# reloads language cases for the language from the yml file
|
|
76
86
|
def reset_language_cases!
|
|
77
87
|
cases.delete_all
|
|
78
88
|
Tr8n::Config.default_language_cases_for(locale).each do |lcase|
|
|
@@ -308,7 +318,9 @@ class Tr8n::Language < ActiveRecord::Base
|
|
|
308
318
|
end
|
|
309
319
|
|
|
310
320
|
def update_cache
|
|
311
|
-
Tr8n::Cache.delete(
|
|
321
|
+
Tr8n::Cache.delete(cache_key)
|
|
322
|
+
Tr8n::Cache.delete("language_rules_#{locale}")
|
|
323
|
+
Tr8n::Cache.delete("language_cases_#{locale}")
|
|
312
324
|
Tr8n::Cache.delete("featured_languages")
|
|
313
325
|
Tr8n::Cache.delete("enabled_languages")
|
|
314
326
|
end
|