tr8n 3.1.1 → 3.1.2

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.
Files changed (265) hide show
  1. data/.gitignore +6 -3
  2. data/.rspec +2 -0
  3. data/Gemfile +3 -6
  4. data/Gemfile.lock +21 -6
  5. data/README.rdoc +61 -33
  6. data/Rakefile +1 -11
  7. data/app/assets/images/tr8n/photo_system.gif +0 -0
  8. data/app/assets/stylesheets/tr8n/application.css +42 -1
  9. data/{test/dummy/app/assets/stylesheets/components.css.scss → app/assets/stylesheets/tr8n/component.css.scss} +0 -0
  10. data/{test/dummy/app/assets/stylesheets → app/assets/stylesheets/tr8n}/layout.css.scss +0 -0
  11. data/app/assets/stylesheets/tr8n/tr8n.css.scss +16 -8
  12. data/app/controllers/tr8n/admin/base_controller.rb +1 -1
  13. data/app/controllers/tr8n/admin/clientsdk_controller.rb +1 -1
  14. data/app/controllers/tr8n/admin/domain_controller.rb +1 -1
  15. data/app/controllers/tr8n/admin/forum_controller.rb +1 -1
  16. data/app/controllers/tr8n/admin/glossary_controller.rb +1 -1
  17. data/app/controllers/tr8n/admin/language_controller.rb +1 -1
  18. data/app/controllers/tr8n/admin/translation_controller.rb +1 -1
  19. data/app/controllers/tr8n/admin/translation_key_controller.rb +5 -1
  20. data/app/controllers/tr8n/admin/translator_controller.rb +1 -1
  21. data/app/{helpers/tr8n/application_helper.rb → controllers/tr8n/api/v1/sync_controller.rb} +6 -3
  22. data/app/controllers/tr8n/awards_controller.rb +12 -12
  23. data/app/controllers/tr8n/base_controller.rb +140 -137
  24. data/app/controllers/tr8n/dashboard_controller.rb +2 -1
  25. data/app/controllers/tr8n/forum_controller.rb +1 -1
  26. data/app/controllers/tr8n/glossary_controller.rb +1 -1
  27. data/app/controllers/tr8n/help_controller.rb +1 -1
  28. data/app/controllers/tr8n/language_cases_controller.rb +43 -45
  29. data/app/controllers/tr8n/language_controller.rb +1 -1
  30. data/app/controllers/tr8n/phrases_controller.rb +1 -1
  31. data/app/controllers/tr8n/translations_controller.rb +1 -1
  32. data/app/controllers/tr8n/translator_controller.rb +1 -1
  33. data/app/helpers/tr8n/base_helper.rb +0 -4
  34. data/app/models/tr8n/base_filter.rb +1 -1
  35. data/app/models/tr8n/daily_language_metric.rb +1 -1
  36. data/app/models/tr8n/date_rule.rb +1 -1
  37. data/app/models/tr8n/gender_list_rule.rb +1 -1
  38. data/app/models/tr8n/gender_rule.rb +1 -1
  39. data/app/models/tr8n/glossary.rb +1 -1
  40. data/app/models/tr8n/glossary_filter.rb +1 -1
  41. data/app/models/tr8n/integration/ru/russian_gender_list_rule.rb +1 -1
  42. data/app/models/tr8n/integration/ru/russian_numeric_rule.rb +1 -1
  43. data/app/models/tr8n/ip_location.rb +1 -1
  44. data/app/models/tr8n/ip_location_filter.rb +1 -1
  45. data/app/models/tr8n/language.rb +17 -8
  46. data/app/models/tr8n/language_case.rb +1 -1
  47. data/app/models/tr8n/language_case_filter.rb +1 -1
  48. data/app/models/tr8n/language_case_rule.rb +1 -1
  49. data/app/models/tr8n/language_case_rule_filter.rb +1 -1
  50. data/app/models/tr8n/language_case_value_map.rb +1 -1
  51. data/app/models/tr8n/language_case_value_map_filter.rb +1 -1
  52. data/app/models/tr8n/language_filter.rb +1 -1
  53. data/app/models/tr8n/language_forum_abuse_report.rb +1 -1
  54. data/app/models/tr8n/language_forum_abuse_report_filter.rb +1 -1
  55. data/app/models/tr8n/language_forum_message.rb +2 -2
  56. data/app/models/tr8n/language_forum_message_filter.rb +1 -1
  57. data/app/models/tr8n/language_forum_topic.rb +3 -3
  58. data/app/models/tr8n/language_forum_topic_filter.rb +1 -1
  59. data/app/models/tr8n/language_metric.rb +2 -2
  60. data/app/models/tr8n/language_metric_filter.rb +1 -1
  61. data/app/models/tr8n/language_rule.rb +37 -2
  62. data/app/models/tr8n/language_rule_filter.rb +1 -1
  63. data/app/models/tr8n/language_user.rb +3 -3
  64. data/app/models/tr8n/language_user_filter.rb +1 -1
  65. data/app/models/tr8n/list_rule.rb +1 -1
  66. data/app/models/tr8n/monthly_language_metric.rb +2 -2
  67. data/app/models/tr8n/numeric_rule.rb +1 -1
  68. data/app/models/tr8n/sync_log.rb +76 -0
  69. data/app/{controllers/tr8n/application_controller.rb → models/tr8n/sync_log_filter.rb} +4 -3
  70. data/app/models/tr8n/total_language_metric.rb +5 -4
  71. data/app/models/tr8n/translation.rb +61 -13
  72. data/app/models/tr8n/translation_domain.rb +1 -1
  73. data/app/models/tr8n/translation_domain_filter.rb +1 -1
  74. data/app/models/tr8n/translation_filter.rb +1 -1
  75. data/app/models/tr8n/translation_key.rb +33 -5
  76. data/app/models/tr8n/translation_key_comment.rb +1 -1
  77. data/app/models/tr8n/translation_key_comment_filter.rb +1 -1
  78. data/app/models/tr8n/translation_key_filter.rb +1 -1
  79. data/app/models/tr8n/translation_key_lock.rb +2 -2
  80. data/app/models/tr8n/translation_key_lock_filter.rb +1 -1
  81. data/app/models/tr8n/translation_key_source.rb +2 -2
  82. data/app/models/tr8n/translation_key_source_filter.rb +1 -1
  83. data/app/models/tr8n/translation_source.rb +2 -2
  84. data/app/models/tr8n/translation_source_filter.rb +1 -1
  85. data/app/models/tr8n/translation_vote.rb +3 -4
  86. data/app/models/tr8n/translation_vote_filter.rb +1 -1
  87. data/app/models/tr8n/translator.rb +19 -5
  88. data/app/models/tr8n/translator_filter.rb +1 -1
  89. data/app/models/tr8n/translator_following.rb +2 -2
  90. data/app/models/tr8n/translator_following_filter.rb +1 -1
  91. data/app/models/tr8n/translator_log.rb +1 -1
  92. data/app/models/tr8n/translator_log_filter.rb +1 -1
  93. data/app/models/tr8n/translator_metric.rb +15 -21
  94. data/app/models/tr8n/translator_metric_filter.rb +1 -1
  95. data/app/models/tr8n/translator_report.rb +2 -2
  96. data/app/models/tr8n/translator_report_filter.rb +1 -1
  97. data/app/models/tr8n/value_rule.rb +1 -1
  98. data/app/views/tr8n/admin/common/_paginator.html.erb +29 -17
  99. data/app/views/tr8n/admin/translation_key/_tabs.html.erb +3 -1
  100. data/app/views/tr8n/admin/translation_key/sync_logs.html.erb +5 -0
  101. data/app/views/tr8n/awards/index.html.erb +0 -2
  102. data/app/views/tr8n/common/_paginator.html.erb +24 -6
  103. data/app/views/tr8n/common/_tabs.html.erb +9 -5
  104. data/app/views/tr8n/forum/_messages.html.erb +1 -1
  105. data/app/views/tr8n/forum/index.html.erb +1 -1
  106. data/app/views/tr8n/glossary/index.html.erb +2 -2
  107. data/app/views/tr8n/{home → help}/credits.html.erb +0 -0
  108. data/app/views/tr8n/{home → help}/license.html.erb +0 -0
  109. data/app/views/tr8n/language_cases/index.html.erb +2 -2
  110. data/app/views/tr8n/phrases/_comments_module.html.erb +1 -1
  111. data/app/views/tr8n/phrases/index.html.erb +2 -6
  112. data/app/views/tr8n/translations/_list.html.erb +2 -6
  113. data/config/routes.rb +2 -2
  114. data/config/tr8n/config.yml +48 -13
  115. data/config/tr8n/rules/default_language_cases.yml +272 -0
  116. data/config/tr8n/tokens/data.yml +3 -1
  117. data/db/migrate/20111003194443_create_tr8n_sync_tables.rb +22 -0
  118. data/db/migrate/20111011013640_add_remote_id_to_tr8n_translators.rb +5 -0
  119. data/doc/classes.graffle +7049 -5152
  120. data/doc/classes.pdf +0 -0
  121. data/lib/generators/tr8n/templates/{create_tr8n_tables.rb → db/create_tr8n_tables.rb} +0 -0
  122. data/lib/generators/tr8n/templates/layouts/tr8n.html.erb +49 -0
  123. data/lib/generators/tr8n/templates/layouts/tr8n_admin.html.erb +61 -0
  124. data/lib/generators/tr8n/tr8n_generator.rb +11 -4
  125. data/lib/tasks/{tr8n_tasks.rake → tr8n.rake} +4 -0
  126. data/{app/controllers/tr8n/home_controller.rb → lib/tr8n/cache_adapters/memcached.rb} +12 -15
  127. data/lib/tr8n/config.rb +96 -53
  128. data/lib/tr8n/extensions/action_controller_extension.rb +1 -1
  129. data/lib/tr8n/extensions/action_view_extension.rb +4 -28
  130. data/lib/tr8n/tokens/data_token.rb +1 -1
  131. data/lib/tr8n/tokens/method_token.rb +1 -1
  132. data/lib/tr8n/tokens/transform_token.rb +1 -1
  133. data/lib/tr8n/version.rb +1 -1
  134. data/{test/dummy → local/tr8n_server}/Rakefile +1 -1
  135. data/{test/dummy → local/tr8n_server}/app/assets/javascripts/application.js +0 -0
  136. data/{test/dummy → local/tr8n_server}/app/assets/stylesheets/admin.css +0 -0
  137. data/{test/dummy → local/tr8n_server}/app/assets/stylesheets/application.css +0 -0
  138. data/local/tr8n_server/app/assets/stylesheets/components.css.scss +211 -0
  139. data/local/tr8n_server/app/assets/stylesheets/layout.css.scss +143 -0
  140. data/{test/dummy → local/tr8n_server}/app/controllers/admin/admins_controller.rb +0 -0
  141. data/{test/dummy → local/tr8n_server}/app/controllers/admin/base_controller.rb +0 -0
  142. data/{test/dummy → local/tr8n_server}/app/controllers/admin/users_controller.rb +0 -0
  143. data/{test/dummy → local/tr8n_server}/app/controllers/application_controller.rb +5 -0
  144. data/{test/dummy → local/tr8n_server}/app/controllers/demo_controller.rb +0 -0
  145. data/local/tr8n_server/app/controllers/home_controller.rb +4 -0
  146. data/{test/dummy → local/tr8n_server}/app/controllers/login_controller.rb +1 -1
  147. data/{test/dummy → local/tr8n_server}/app/helpers/application_helper.rb +0 -0
  148. data/{test/dummy → local/tr8n_server}/app/helpers/home_helper.rb +0 -0
  149. data/{test/dummy → local/tr8n_server}/app/mailers/.gitkeep +0 -0
  150. data/{test/dummy → local/tr8n_server}/app/models/.gitkeep +0 -0
  151. data/{test/dummy → local/tr8n_server}/app/models/admin.rb +0 -0
  152. data/{test/dummy → local/tr8n_server}/app/models/admin_filter.rb +0 -0
  153. data/{test/dummy → local/tr8n_server}/app/models/user.rb +0 -0
  154. data/{test/dummy → local/tr8n_server}/app/views/admin/admins/index.html.erb +0 -0
  155. data/{test/dummy → local/tr8n_server}/app/views/admin/users/index.html.erb +0 -0
  156. data/{test/dummy → local/tr8n_server}/app/views/demo/index.rhtml +0 -0
  157. data/{test/dummy → local/tr8n_server}/app/views/demo/tokens.rhtml +0 -0
  158. data/{app/views/tr8n → local/tr8n_server/app/views}/home/index.html.erb +1 -2
  159. data/local/tr8n_server/app/views/kaminari/_first_page.html.erb +11 -0
  160. data/local/tr8n_server/app/views/kaminari/_gap.html.erb +8 -0
  161. data/local/tr8n_server/app/views/kaminari/_last_page.html.erb +11 -0
  162. data/local/tr8n_server/app/views/kaminari/_next_page.html.erb +11 -0
  163. data/local/tr8n_server/app/views/kaminari/_page.html.erb +12 -0
  164. data/local/tr8n_server/app/views/kaminari/_paginator.html.erb +23 -0
  165. data/local/tr8n_server/app/views/kaminari/_prev_page.html.erb +11 -0
  166. data/{test/dummy → local/tr8n_server}/app/views/layouts/_flashes.html.erb +0 -0
  167. data/{test/dummy → local/tr8n_server}/app/views/layouts/_footer.html.erb +3 -3
  168. data/{test/dummy → local/tr8n_server}/app/views/layouts/_header.html.erb +1 -1
  169. data/{test/dummy → local/tr8n_server}/app/views/layouts/admin.html.erb +0 -0
  170. data/{test/dummy → local/tr8n_server}/app/views/layouts/application.html.erb +0 -0
  171. data/local/tr8n_server/app/views/layouts/tr8n.html.erb +51 -0
  172. data/local/tr8n_server/app/views/layouts/tr8n_admin.html.erb +61 -0
  173. data/{test/dummy → local/tr8n_server}/app/views/login/index.html.erb +0 -0
  174. data/{test/dummy → local/tr8n_server}/app/views/login/register.html.erb +8 -13
  175. data/{test/dummy → local/tr8n_server}/config.ru +1 -1
  176. data/{test/dummy → local/tr8n_server}/config/application.rb +2 -1
  177. data/{test/dummy → local/tr8n_server}/config/boot.rb +0 -0
  178. data/{test/dummy → local/tr8n_server}/config/database.yml +0 -0
  179. data/{test/dummy → local/tr8n_server}/config/environment.rb +1 -1
  180. data/{test/dummy → local/tr8n_server}/config/environments/development.rb +3 -1
  181. data/{test/dummy → local/tr8n_server}/config/environments/production.rb +1 -1
  182. data/{test/dummy → local/tr8n_server}/config/environments/test.rb +1 -1
  183. data/{test/dummy → local/tr8n_server}/config/initializers/backtrace_silencers.rb +0 -0
  184. data/{test/dummy → local/tr8n_server}/config/initializers/inflections.rb +0 -0
  185. data/{test/dummy → local/tr8n_server}/config/initializers/mime_types.rb +0 -0
  186. data/{test/dummy → local/tr8n_server}/config/initializers/secret_token.rb +1 -1
  187. data/{test/dummy → local/tr8n_server}/config/initializers/session_store.rb +2 -2
  188. data/{test/dummy → local/tr8n_server}/config/initializers/wrap_parameters.rb +0 -0
  189. data/{test/dummy → local/tr8n_server}/config/locales/en.yml +0 -0
  190. data/{test/dummy → local/tr8n_server}/config/routes.rb +2 -2
  191. data/{test/dummy → local/tr8n_server}/config/tr8n/config.yml +40 -11
  192. data/{test/dummy → local/tr8n_server}/config/tr8n/data/ip_locations.csv +0 -0
  193. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_date_rules.yml +0 -0
  194. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_gender_list_rules.yml +0 -0
  195. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_gender_rules.yml +0 -0
  196. data/local/tr8n_server/config/tr8n/rules/default_language_cases.yml +272 -0
  197. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_list_rules.yml +0 -0
  198. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_numeric_rules.yml +0 -0
  199. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_value_rules.yml +0 -0
  200. data/{test/dummy → local/tr8n_server}/config/tr8n/site/default_glossary.yml +0 -0
  201. data/{test/dummy → local/tr8n_server}/config/tr8n/site/default_languages.yml +0 -0
  202. data/{test/dummy → local/tr8n_server}/config/tr8n/site/features.yml +0 -0
  203. data/{test/dummy → local/tr8n_server}/config/tr8n/site/shortcuts.yml +0 -0
  204. data/{test/dummy → local/tr8n_server}/config/tr8n/site/sitemap.json +0 -0
  205. data/{test/dummy → local/tr8n_server}/config/tr8n/tokens/data.yml +2 -0
  206. data/{test/dummy → local/tr8n_server}/config/tr8n/tokens/decorations.yml +0 -0
  207. data/{test/dummy → local/tr8n_server}/config/will_filter/config.yml +0 -0
  208. data/{test/dummy → local/tr8n_server}/db/migrate/20101207014543_create_users.rb +0 -0
  209. data/{test/dummy → local/tr8n_server}/db/migrate/20110113223509_create_admins.rb +0 -0
  210. data/{test/dummy → local/tr8n_server}/db/migrate/20110930041143_create_will_filter_filters.rb +0 -0
  211. data/{test/dummy → local/tr8n_server}/db/migrate/20110930041150_create_tr8n_tables.rb +0 -0
  212. data/local/tr8n_server/db/migrate/20111003194443_create_tr8n_sync_tables.rb +22 -0
  213. data/local/tr8n_server/db/migrate/20111011013640_add_remote_id_to_tr8n_translators.rb +5 -0
  214. data/{test/dummy → local/tr8n_server}/db/schema.rb +15 -1
  215. data/{test/dummy → local/tr8n_server}/lib/assets/.gitkeep +0 -0
  216. data/{test/dummy → local/tr8n_server}/public/404.html +0 -0
  217. data/{test/dummy → local/tr8n_server}/public/422.html +0 -0
  218. data/{test/dummy → local/tr8n_server}/public/500.html +0 -0
  219. data/{test/dummy → local/tr8n_server}/public/favicon.ico +0 -0
  220. data/{test/dummy → local/tr8n_server}/script/rails +0 -0
  221. data/script/rails +1 -1
  222. data/spec/config/config_spec.rb +10 -0
  223. data/spec/fake_app.rb +50 -0
  224. data/spec/lib/data_token_spec.rb +26 -0
  225. data/spec/lib/transform_token_spec.rb +22 -0
  226. data/spec/models/translation_key_spec.rb +63 -0
  227. data/spec/spec_helper.rb +29 -0
  228. data/tr8n.gemspec +3 -1
  229. metadata +264 -245
  230. data/app/assets/images/tr8n/tr8n_logo.png +0 -0
  231. data/app/assets/images/tr8n/tr8n_logo2.gif +0 -0
  232. data/app/controllers/tr8n/login_controller.rb +0 -86
  233. data/app/views/layouts/_footer.html.erb +0 -15
  234. data/app/views/layouts/_header.html.erb +0 -12
  235. data/app/views/layouts/_html_head.html.erb +0 -5
  236. data/app/views/layouts/tr8n.html.erb +0 -21
  237. data/app/views/layouts/tr8n/application.html.erb +0 -14
  238. data/app/views/layouts/tr8n_admin.html.erb +0 -33
  239. data/app/views/tr8n/home/languages.html.erb +0 -7
  240. data/app/views/tr8n/login/index.html.erb +0 -33
  241. data/app/views/tr8n/login/register.html.erb +0 -57
  242. data/config/tr8n/rules/default_cases.yml +0 -141
  243. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/actions.css.scssc +0 -0
  244. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/buttons.css.scssc +0 -0
  245. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/calendar.css.scssc +0 -0
  246. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/exporter.css.scssc +0 -0
  247. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/filter.css.scssc +0 -0
  248. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/results.css.scssc +0 -0
  249. data/test/dummy/.sass-cache/3d45bab40fcae805deb2750a9342f5b355a9f2bf/components.css.scssc +0 -0
  250. data/test/dummy/.sass-cache/3d45bab40fcae805deb2750a9342f5b355a9f2bf/layout.css.scssc +0 -0
  251. data/test/dummy/.sass-cache/50f723c1dd802042d0091035528d53e6d5bc5b50/tr8n.css.scssc +0 -0
  252. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/actions.css.scssc +0 -0
  253. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/buttons.css.scssc +0 -0
  254. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/calendar.css.scssc +0 -0
  255. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/exporter.css.scssc +0 -0
  256. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/filter.css.scssc +0 -0
  257. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/results.css.scssc +0 -0
  258. data/test/dummy/app/assets/stylesheets/keyboard.css +0 -147
  259. data/test/dummy/config/tr8n/rules/default_cases.yml +0 -141
  260. data/test/dummy/log/.gitkeep +0 -0
  261. data/test/dummy/test/functional/home_controller_test.rb +0 -9
  262. data/test/dummy/test/unit/helpers/home_helper_test.rb +0 -4
  263. data/test/integration/navigation_test.rb +0 -10
  264. data/test/test_helper.rb +0 -10
  265. data/test/tr8n_test.rb +0 -7
@@ -0,0 +1,272 @@
1
+ #############################################################################
2
+ #
3
+ # Tr8n Default Language Cases
4
+ #
5
+ #############################################################################
6
+
7
+ en-US:
8
+ nom:
9
+ keyword: "nom"
10
+ latin_name: "Nominative"
11
+ native_name: "Nominative"
12
+ description: "Used for any noun or pronoun that is the subject of a verb"
13
+ application: "phrase"
14
+ obj:
15
+ keyword: "obj"
16
+ latin_name: "Objective"
17
+ native_name: "Objective"
18
+ description: "Used in the direct object, indirect object, object of preposition, object complement, and subject of an infinitive"
19
+ application: "phrase"
20
+ pos:
21
+ keyword: "pos"
22
+ latin_name: "Possessive"
23
+ native_name: "Possessive"
24
+ description: "Used to indicate possession (i.e., ownership). It is usually created by adding 's to the word"
25
+ application: "phrase"
26
+ rules:
27
+ 1:
28
+ multipart: false
29
+ gender: none
30
+ part1: ends_in
31
+ value1: "s"
32
+ operation: append
33
+ operation_value: "'"
34
+ 2:
35
+ multipart: false
36
+ gender: none
37
+ part1: does_not_end_in
38
+ value1: "s"
39
+ operation: append
40
+ operation_value: "'s"
41
+ ord:
42
+ keyword: "ord"
43
+ latin_name: "Ordinal"
44
+ native_name: "Ordinal"
45
+ description: "The adjective form of the cardinal numbers"
46
+ application: "phrase"
47
+ rules:
48
+ 1:
49
+ multipart: true
50
+ gender: none
51
+ part1: ends_in
52
+ value1: "1"
53
+ operator: and
54
+ part2: does_not_end_in
55
+ value2: "11"
56
+ operation: append
57
+ operation_value: "st"
58
+ 2:
59
+ multipart: true
60
+ gender: none
61
+ part1: ends_in
62
+ value1: "2"
63
+ operator: and
64
+ part2: does_not_end_in
65
+ value2: "12"
66
+ operation: append
67
+ operation_value: "nd"
68
+ 3:
69
+ multipart: true
70
+ gender: none
71
+ part1: ends_in
72
+ value1: "3"
73
+ operator: and
74
+ part2: does_not_end_in
75
+ value2: "13"
76
+ operation: append
77
+ operation_value: "rd"
78
+ 4:
79
+ multipart: false
80
+ gender: none
81
+ part1: ends_in
82
+ value1: "0,4,5,6,7,8,9,11,12,13"
83
+ operation: append
84
+ operation_value: "th"
85
+ times:
86
+ keyword: "times"
87
+ latin_name: "Iteration"
88
+ native_name: "Iteration"
89
+ description: "The iteration form of the cardinal numbers"
90
+ application: "phrase"
91
+ rules:
92
+ 1:
93
+ multipart: true
94
+ gender: none
95
+ part1: is
96
+ value1: "1"
97
+ operation: replace
98
+ operation_value: "once"
99
+ 2:
100
+ multipart: true
101
+ gender: none
102
+ part1: is
103
+ value1: "2"
104
+ operation: replace
105
+ operation_value: "twice"
106
+ 3:
107
+ multipart: true
108
+ gender: none
109
+ part1: is
110
+ value1: "3"
111
+ operation: replace
112
+ operation_value: "thrice"
113
+ 3:
114
+ multipart: false
115
+ gender: none
116
+ part1: is_not
117
+ value1: "1,2,3"
118
+ operation: append
119
+ operation_value: " times"
120
+ ordinal:
121
+ keyword: "ordinal"
122
+ latin_name: "Ordinal"
123
+ native_name: "Ordinal"
124
+ description: "The adjective form of the cardinal numbers"
125
+ application: "phrase"
126
+ rules:
127
+ 1:
128
+ multipart: true
129
+ gender: none
130
+ part1: is
131
+ value1: "1"
132
+ operation: replace
133
+ operation_value: "first"
134
+ 2:
135
+ multipart: true
136
+ gender: none
137
+ part1: is
138
+ value1: "2"
139
+ operation: replace
140
+ operation_value: "second"
141
+ 3:
142
+ multipart: true
143
+ gender: none
144
+ part1: is
145
+ value1: "3"
146
+ operation: replace
147
+ operation_value: "third"
148
+ 4:
149
+ multipart: true
150
+ gender: none
151
+ part1: ends_in
152
+ value1: "1"
153
+ operator: and
154
+ part2: does_not_end_in
155
+ value2: "11"
156
+ operation: append
157
+ operation_value: "st"
158
+ 5:
159
+ multipart: true
160
+ gender: none
161
+ part1: ends_in
162
+ value1: "2"
163
+ operator: and
164
+ part2: does_not_end_in
165
+ value2: "12"
166
+ operation: append
167
+ operation_value: "nd"
168
+ 6:
169
+ multipart: true
170
+ gender: none
171
+ part1: ends_in
172
+ value1: "3"
173
+ operator: and
174
+ part2: does_not_end_in
175
+ value2: "13"
176
+ operation: append
177
+ operation_value: "rd"
178
+ 7:
179
+ multipart: false
180
+ gender: none
181
+ part1: ends_in
182
+ value1: "0,4,5,6,7,8,9,11,12,13"
183
+ operation: append
184
+ operation_value: "th"
185
+
186
+ ru:
187
+ case1:
188
+ keyword: "nom"
189
+ latin_name: "Nominativus"
190
+ native_name: "Именительный падеж"
191
+ description: "Есть - Кто? Что?"
192
+ application: "words"
193
+ case2:
194
+ keyword: "gen"
195
+ latin_name: "Genitivus"
196
+ native_name: "Родительный падеж"
197
+ description: "Нет - Кого? Чего?"
198
+ application: "words"
199
+ rules:
200
+ 1:
201
+ multipart: false
202
+ gender: male
203
+ part1: ends_in
204
+ value1: "б, в, г, д, ж, з, к, л, м, н, п, р, с, т, ф, х, ц, ч, ш, щ"
205
+ operation: append
206
+ operation_value: "a"
207
+ 2:
208
+ multipart: false
209
+ gender: male
210
+ part1: ends_in
211
+ value1: "й"
212
+ operation: replace
213
+ operation_value: "я"
214
+ 3:
215
+ multipart: false
216
+ gender: female
217
+ part1: ends_in
218
+ value1: "а"
219
+ operation: replace
220
+ operation_value: "ы"
221
+ 4:
222
+ multipart: false
223
+ gender: female
224
+ part1: ends_in
225
+ value1: "я"
226
+ operation: replace
227
+ operation_value: "и"
228
+ case3:
229
+ keyword: "dat"
230
+ latin_name: "Dativus"
231
+ native_name: "Дательный падеж"
232
+ description: "Рад - Кому? Чему?"
233
+ application: "words"
234
+ case4:
235
+ keyword: "acc"
236
+ latin_name: "Accusativus"
237
+ native_name: "Винительный падеж"
238
+ description: "Вижу - Кого? Что?"
239
+ application: "words"
240
+ case5:
241
+ keyword: "ins"
242
+ latin_name: "Instrumentalis"
243
+ native_name: "Творительный падеж"
244
+ description: "Доволен - Кем? Чем?"
245
+ application: "words"
246
+ case6:
247
+ keyword: "pre"
248
+ latin_name: "Prepositivus"
249
+ native_name: "Предложный падеж"
250
+ description: "Думаю - О ком? О чём?"
251
+ application: "words"
252
+ case7:
253
+ keyword: "pos"
254
+ latin_name: "Possessive"
255
+ native_name: "Притяжательный падеж"
256
+ description: "Чей?"
257
+ application: "words"
258
+ rules:
259
+ 1:
260
+ multipart: false
261
+ gender: female
262
+ part1: ends_in
263
+ value1: "ва"
264
+ operation: replace
265
+ operation_value: "вой"
266
+ 2:
267
+ multipart: false
268
+ gender: male
269
+ part1: ends_in
270
+ value1: "б, в, г, д, ж, з, к, л, м, н, п, р, с, т, ф, х, ц, ч, ш, щ"
271
+ operation: append
272
+ operation_value: "a"
@@ -16,4 +16,6 @@ rsquo: "’" # ’
16
16
  laquo: "«" # «
17
17
  raquo: "»" # »
18
18
  nbsp: " " # space
19
+ lsaquo: "‹" # ‹
20
+ rsaquo: "›" # ›
19
21
  br: "<br/>" # line break
@@ -0,0 +1,22 @@
1
+ class CreateTr8nSyncTables < ActiveRecord::Migration
2
+ def up
3
+ create_table :tr8n_sync_logs do |t|
4
+ t.timestamp :started_at
5
+ t.timestamp :finished_at
6
+ t.integer :keys_sent
7
+ t.integer :translations_sent
8
+ t.integer :keys_received
9
+ t.integer :translations_received
10
+ t.timestamps
11
+ end
12
+
13
+ add_column :tr8n_translation_keys, :synced_at, :timestamp
14
+ add_column :tr8n_translations, :synced_at, :timestamp
15
+ end
16
+
17
+ def down
18
+ drop_table :tr8n_sync_logs
19
+ remove_column :tr8n_translation_keys, :synced_at
20
+ remove_column :tr8n_translations, :synced_at
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ class AddRemoteIdToTr8nTranslators < ActiveRecord::Migration
2
+ def change
3
+ add_column :tr8n_translators, :remote_id, :integer
4
+ end
5
+ end
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20110930041150) do
14
+ ActiveRecord::Schema.define(:version => 20111011013640) do
15
15
 
16
16
  create_table "admins", :force => true do |t|
17
17
  t.integer "user_id"
@@ -188,6 +188,17 @@ ActiveRecord::Schema.define(:version => 20110930041150) do
188
188
 
189
189
  add_index "tr8n_languages", ["locale"], :name => "index_tr8n_languages_on_locale"
190
190
 
191
+ create_table "tr8n_sync_logs", :force => true do |t|
192
+ t.datetime "started_at"
193
+ t.datetime "finished_at"
194
+ t.integer "keys_sent"
195
+ t.integer "translations_sent"
196
+ t.integer "keys_received"
197
+ t.integer "translations_received"
198
+ t.datetime "created_at"
199
+ t.datetime "updated_at"
200
+ end
201
+
191
202
  create_table "tr8n_translation_domains", :force => true do |t|
192
203
  t.string "name"
193
204
  t.string "description"
@@ -245,6 +256,7 @@ ActiveRecord::Schema.define(:version => 20110930041150) do
245
256
  t.integer "level", :default => 0
246
257
  t.datetime "created_at"
247
258
  t.datetime "updated_at"
259
+ t.datetime "synced_at"
248
260
  end
249
261
 
250
262
  add_index "tr8n_translation_keys", ["key"], :name => "index_tr8n_translation_keys_on_key", :unique => true
@@ -279,6 +291,7 @@ ActiveRecord::Schema.define(:version => 20110930041150) do
279
291
  t.text "rules"
280
292
  t.datetime "created_at"
281
293
  t.datetime "updated_at"
294
+ t.datetime "synced_at"
282
295
  end
283
296
 
284
297
  add_index "tr8n_translations", ["created_at"], :name => "tr8n_trans_created_at"
@@ -360,6 +373,7 @@ ActiveRecord::Schema.define(:version => 20110930041150) do
360
373
  t.string "country_code"
361
374
  t.datetime "created_at"
362
375
  t.datetime "updated_at"
376
+ t.integer "remote_id"
363
377
  end
364
378
 
365
379
  add_index "tr8n_translators", ["created_at"], :name => "index_tr8n_translators_on_created_at"
@@ -3,4 +3,4 @@
3
3
  # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
4
4
 
5
5
  ENGINE_PATH = File.expand_path('../..', __FILE__)
6
- load File.expand_path('../../test/dummy/script/rails', __FILE__)
6
+ load File.expand_path('../../local/tr8n_server/script/rails', __FILE__)
@@ -0,0 +1,10 @@
1
+ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
+
3
+ describe Tr8n::Config do
4
+ subject { Tr8n::Config }
5
+ describe 'operator_order' do
6
+ context 'by default' do
7
+ its(:config) {should_not == nil}
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,50 @@
1
+ require 'active_record'
2
+ require 'action_controller/railtie'
3
+ require 'action_view/railtie'
4
+
5
+ # database
6
+ ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}}
7
+ ActiveRecord::Base.establish_connection('test')
8
+
9
+ # config
10
+ app = Class.new(Rails::Application)
11
+ app.config.secret_token = "3b7cd727ee24e8444053437c36cc66c4"
12
+ app.config.session_store :cookie_store, :key => "_myapp_session"
13
+ app.config.active_support.deprecation = :log
14
+ app.initialize!
15
+
16
+ # routes
17
+ app.routes.draw do
18
+ resources :users
19
+ end
20
+
21
+ # models
22
+ Dir["#{File.dirname(__FILE__)}/../local/tr8n_server/app/models/*.rb"].each do |f|
23
+ if [:user, :admin].include?(f.split("/").last.gsub('.rb', '').to_sym)
24
+ require f
25
+ end
26
+ end
27
+
28
+ # controllers
29
+ class ApplicationController < ActionController::Base; end
30
+ class UsersController < ApplicationController
31
+ def index
32
+ @users = User.filter(:params => params)
33
+ render :inline => <<-ERB
34
+ <%= will_filter_tag(@users) %>
35
+ ERB
36
+ end
37
+ end
38
+
39
+ # helpers
40
+ Object.const_set(:ApplicationHelper, Module.new)
41
+
42
+ #migrations
43
+ class CreateAllTables < ActiveRecord::Migration
44
+ def self.up
45
+ Dir["#{File.dirname(__FILE__)}/../local/tr8n_server/db/migrate/*.rb"].each do |f|
46
+ require f
47
+ f.split("/").last.gsub('.rb', '').split('_')[1..-1].join('_').camelcase.constantize.up
48
+ end
49
+ end
50
+ end