couch_i18n 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -126,7 +126,7 @@ The following helpers are assumed:
126
126
  t('Create')
127
127
  end
128
128
  def boolean_text(truefalse)
129
- truefalse ? t('boolean true') : t('boolean false')
129
+ truefalse ? t('general.boolean true') : t('general.boolean false')
130
130
  end
131
131
  def are_you_sure(obj = nil)
132
132
  t('Are you sure')
@@ -159,4 +159,7 @@ the planning of being made.
159
159
  * Add grouped search/replaces to move one group of translations to another section. Same comment as above
160
160
  * Search through values. If anyone has a better idea than searching by ruby through all the translations or adding lucene please feel free.
161
161
  * A lot of testing
162
+ * Add referencing to other translations (big miss in I18n)
162
163
  * Add error_messages partial to manual
164
+ * Only show translations of exact given offset (no children)
165
+ * Show translation matching exact the given offset (beware of caching or automatically adding structures)
@@ -34,7 +34,7 @@ module CouchI18n
34
34
  @translation.value = JSON.parse(@translation.value)
35
35
  end
36
36
  if @translation.save
37
- redirect_to({:action => :index, :offset => @translation.key.to_s.sub(/\.[\w\s-]+$/, '')}, :notice => I18n.t('action.create.successful', :model => CouchI18n::Translation.model_name.human))
37
+ redirect_to({:action => :index, :offset => @translation.key.to_s.sub(/\.[\w\s-]+$/, '')}, :notice => I18n.t('couch_i18n.action.create.successful', :model => CouchI18n::Translation.model_name.human))
38
38
  else
39
39
  render :action => :new
40
40
  end
@@ -53,7 +53,7 @@ module CouchI18n
53
53
  params[:translation]["value"] = JSON.parse(params[:translation]["value"])
54
54
  end
55
55
  if @translation.update_attributes(params[:translation])
56
- redirect_to({:action => :index, :offset => @translation.key.to_s.sub(/\.[\w\s-]+$/, '')}, :notice => I18n.t('action.update.successful', :model => CouchI18n::Translation.model_name.human))
56
+ redirect_to({:action => :index, :offset => @translation.key.to_s.sub(/\.[\w\s-]+$/, '')}, :notice => I18n.t('couch_i18n.action.update.successful', :model => CouchI18n::Translation.model_name.human))
57
57
  else
58
58
  render :action => :edit
59
59
  end
@@ -62,7 +62,7 @@ module CouchI18n
62
62
  def destroy
63
63
  @translation = CouchI18n::Translation.find(params[:id])
64
64
  if @translation.destroy
65
- flash[:notice] = I18n.t('action.destroy.successful', :model => CouchI18n::Translation.model_name.human)
65
+ flash[:notice] = I18n.t('couch_i18n.action.destroy.successful', :model => CouchI18n::Translation.model_name.human)
66
66
  end
67
67
  redirect_to({:action => :index, :offset => @translation.key.to_s.sub(/\.\w+$/, '')})
68
68
  end
@@ -7,31 +7,31 @@ module CouchI18n
7
7
  end
8
8
 
9
9
  def link_to_new_content(obj)
10
- t('New')
10
+ t('couch_i18n.action.new.label')
11
11
  end
12
12
  def link_to_edit_content(obj = nil)
13
- t('Edit')
13
+ t('couch_i18n.action.edit.label')
14
14
  end
15
15
  def link_to_show_content(obj = nil)
16
- t('Show')
16
+ t('couch_i18n.action.show.label')
17
17
  end
18
18
  def link_to_index_content(singular_name)
19
- t('Back')
19
+ t('couch_i18n.action.index.label')
20
20
  end
21
21
  def link_to_destroy_content(obj = nil)
22
- t('Delete')
22
+ t('couch_i18n.action.destroy.label')
23
23
  end
24
24
  def update_button_text(obj = nil)
25
- t('Save')
25
+ t('couch_i18n.action.update.button_text')
26
26
  end
27
27
  def create_button_text(obj = nil)
28
- t('Create')
28
+ t('couch_i18n.action.create.button_text')
29
29
  end
30
30
  def boolean_show(truefalse)
31
- truefalse ? t('boolean true') : t('boolean false')
31
+ truefalse ? t('couch_i18n.general.boolean_true') : t('couch_i18n.general.boolean_false')
32
32
  end
33
33
  def are_you_sure(obj = nil)
34
- t('Are you sure')
34
+ t('couch_i18n.general.are_you_sure')
35
35
  end
36
36
  end
37
37
  end
@@ -1,6 +1,6 @@
1
1
  -if target.errors.any?
2
2
  #errorExplanation
3
- %h2= t('Errors title', :count => target.errors.count)
3
+ %h2= t('couch_i18n.errors.title', :count => target.errors.count)
4
4
  %ul
5
5
  - target.errors.full_messages.each do |msg|
6
6
  %li= msg
@@ -1,4 +1,4 @@
1
- - title t("couch_i18n.translation.edit title")
1
+ - title t("couch_i18n.action..edit.title")
2
2
  = render 'form'
3
3
  - content_for :page_links do
4
4
  = link_to link_to_index_content(:translations), couch_i18n.translations_path(:offset => params[:offset] || @translation.key.to_s.sub(/\.[\w\s-]+$/, ''))
@@ -1,20 +1,20 @@
1
1
  - if params[:offset].present?
2
2
  - title params[:offset]
3
3
  - else
4
- - title t("couch_i18n.translation.index title")
4
+ - title t("couch_i18n.action.index.title")
5
5
  .destroy-link
6
- = link_to t('couch_i18n.translation.destroy offset link'), couch_i18n.destroy_offset_translations_path(:offset => params[:offset]), :method => :delete, :confirm => (defined?(:are_you_sure) ? are_you_sure : t('couch_i18n.translation.are you sure'))
6
+ = link_to t('couch_i18n.action.destroy.offset_link'), couch_i18n.destroy_offset_translations_path(:offset => params[:offset]), :method => :delete, :confirm => (defined?(:are_you_sure) ? are_you_sure : t('couch_i18n.general.are_you_sure'))
7
7
  .import-form
8
8
  = form_tag({:action => :import}, :multipart => true) do
9
9
  = file_field_tag :importfile
10
- = submit_tag I18n.t('couch_i18n.translation.import')
10
+ = submit_tag I18n.t('couch_i18n.import.button')
11
11
  .export-form
12
12
  = form_tag :action => :export do
13
13
  = hidden_field_tag :offset, params[:offset]
14
14
  = select_tag :exportformat, options_for_select(%w[yml csv json], params[:exportformat])
15
15
  = check_box_tag :untranslated
16
- = label_tag :untranslated, t('couch_i18n.translation.export.untranslated')
17
- = submit_tag I18n.t('couch_i18n.translation.export.execute')
16
+ = label_tag :untranslated, t('couch_i18n.export.untranslated')
17
+ = submit_tag I18n.t('couch_i18n.export.execute')
18
18
  .offset-navigation-block.block
19
19
  .offset-navigation-higher
20
20
  - for offset in @available_higher_offsets
@@ -22,10 +22,10 @@
22
22
  .offset-navigation-form
23
23
  = form_tag({}, :method => :get )do
24
24
  - if params[:offset].present?
25
- = link_to I18n.t('couch_i18n.translation.go to zero offset'), :offset => nil
25
+ = link_to I18n.t('couch_i18n.general.go_to_zero_offset'), :offset => nil
26
26
  = text_field_tag :offset, params[:offset], :size => 60
27
27
  = "(#{@translations.total_entries})"
28
- = submit_tag I18n.t('couch_i18n.translation.go to offset')
28
+ = submit_tag I18n.t('couch_i18n.general.go_to_offset')
29
29
  .offset-navigation-deeper
30
30
  - for offset in @available_deeper_offsets
31
31
  = link_to offset[:name], :offset => offset[:offset]
@@ -48,7 +48,7 @@
48
48
  %td.action.edit= link_to link_to_edit_content(translation), couch_i18n.edit_translation_path(translation)
49
49
  %td.action.destroy= link_to link_to_destroy_content(translation),couch_i18n.translation_path(translation), :confirm => are_you_sure, :method => :delete
50
50
  - else
51
- %h3= t("translation.none found")
51
+ %h3= t("couch_i18n.general.none_found")
52
52
 
53
53
  - content_for :page_links do
54
54
  = link_to link_to_new_content(:translation), couch_i18n.new_translation_path(:offset => params[:offset])
@@ -1,4 +1,4 @@
1
- - title t("couch_i18n.translation.new title")
1
+ - title t("couch_i18n.action.new.title")
2
2
  = render 'form'
3
3
  - content_for :page_links do
4
4
  = link_to link_to_index_content(:couch_i18n_translations), couch_i18n.translations_path(:offset => params[:offset])
@@ -1,7 +1,7 @@
1
1
  !!!
2
2
  %html
3
3
  %head
4
- %title= defined?(site_title) ? site_title : I18n.t('couch_i18n.translation.site_title')
4
+ %title= defined?(site_title) ? site_title : I18n.t('couch_i18n.general.site_title')
5
5
  = csrf_meta_tag
6
6
  = stylesheet_link_tag 'couch_i18n/application'
7
7
  = javascript_include_tag 'couch_i18n/application'
@@ -0,0 +1,44 @@
1
+ # This file overwrites the default activemode error message lookup behaviour.
2
+
3
+ module ActiveModel
4
+ class Errors
5
+
6
+ # The code for this method is base on rails revision: f3531a8fc9f661f96759f0a851540745876e5d6c
7
+ # The error lookup now consists of:
8
+ # namespace.errors.messages
9
+ def generate_message(attribute, type = :invalid, options = {})
10
+ type = options.delete(:message) if options[:message].is_a?(Symbol)
11
+
12
+ value = (attribute != :base ? @base.send(:read_attribute_for_validation, attribute) : nil)
13
+
14
+ # Create key. Remove class in model name and add errors.messages
15
+ key = (@base.class.model_name.underscore.sub(/\w+$/, '').scan(/\w+/) + ['errors.messages', type]).join('.')
16
+
17
+ options = {
18
+ :model => @base.class.model_name.human,
19
+ :attribute => @base.class.human_attribute_name(attribute),
20
+ :value => value
21
+ }.merge(options)
22
+
23
+ I18n.translate(key, options)
24
+ end
25
+
26
+ def full_messages
27
+ map { |attribute, message| full_message(attribute, message) }
28
+ end
29
+
30
+ def full_message(attribute, message)
31
+ return message if attribute == :base
32
+ attr_name = attribute.to_s.gsub('.', '_').humanize
33
+ attr_name = @base.class.human_attribute_name(attribute, :default => attr_name)
34
+
35
+ # Create key. Remove class in model name and add errors.messages
36
+ key = (@base.class.model_name.underscore.sub(/\w+$/, '').scan(/\w+/) + ['errors.conjunction.attribute_message']).join('.')
37
+ I18n.t(key, {
38
+ :default => "%{attribute} %{message}",
39
+ :attribute => attr_name,
40
+ :message => message
41
+ })
42
+ end
43
+ end
44
+ end
@@ -15,14 +15,14 @@ module CouchI18n
15
15
  end
16
16
 
17
17
  # alias for read
18
- def [](key, options=nil)
18
+ def [](key, options = {})
19
19
  key = key.to_s.gsub('/', '.')
20
20
  Rails.cache.fetch(key) do
21
21
  old_database_name = get_couchrest_name
22
22
  begin
23
23
  set_couchrest_name CouchPotato::Config.database_name # Set database to original configured name
24
24
  translation = CouchI18n::Translation.find_by_key(key.to_s)
25
- translation ||= CouchI18n::Translation.create(:key => key, :value => key.to_s.split('.').last, :translated => false)
25
+ translation ||= CouchI18n::Translation.create(:key => key, :value => options[:default].presence || key.to_s.split('.').last, :translated => false)
26
26
  ensure
27
27
  set_couchrest_name old_database_name
28
28
  end
data/lib/couch_i18n.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "couch_i18n/engine"
2
2
  require 'couch_i18n/store'
3
3
  require 'couch_i18n/backend'
4
+ require 'couch_i18n/active_model_errors'
4
5
  module CouchI18n
5
6
  # This method imports yaml translations to the couchdb version. When run again new ones will
6
7
  # be added. Translations already stored in the couchdb database are not overwritten
metadata CHANGED
@@ -1,82 +1,96 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: couch_i18n
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
4
5
  prerelease:
5
- version: 0.0.7
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Benjamin ter Kuile
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-08-20 00:00:00 +02:00
14
- default_executable:
15
- dependencies: []
16
-
17
- description: couch_i18n is an in database storage for I18n translations, tested for rails, with online management views
12
+ date: 2011-12-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activemodel
16
+ requirement: &70285132887140 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '3'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70285132887140
25
+ - !ruby/object:Gem::Dependency
26
+ name: simply_stored
27
+ requirement: &70285132886720 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70285132886720
36
+ description: couch_i18n is an in database storage for I18n translations, tested for
37
+ rails, with online management views
18
38
  email: bterkuile@gmail.com
19
39
  executables: []
20
-
21
40
  extensions: []
22
-
23
41
  extra_rdoc_files: []
24
-
25
- files:
26
- - lib/couch_i18n/engine.rb
42
+ files:
43
+ - lib/couch_i18n/active_model_errors.rb
27
44
  - lib/couch_i18n/backend.rb
45
+ - lib/couch_i18n/engine.rb
28
46
  - lib/couch_i18n/store.rb
29
47
  - lib/couch_i18n.rb
30
48
  - lib/tasks/couch_i18n_tasks.rake
31
- - app/models/couch_i18n/translation.rb
32
- - app/controllers/couch_i18n/application_controller.rb
33
- - app/controllers/couch_i18n/translations_controller.rb
34
- - app/assets/javascripts/couch_i18n/structure.js
35
- - app/assets/javascripts/couch_i18n/application.js
36
49
  - app/assets/images/couch_i18n/alert.png
37
50
  - app/assets/images/couch_i18n/notice.png
51
+ - app/assets/javascripts/couch_i18n/application.js
52
+ - app/assets/javascripts/couch_i18n/structure.js
38
53
  - app/assets/stylesheets/couch_i18n/alerts.css.scss
39
- - app/assets/stylesheets/couch_i18n/structure.css.scss
40
54
  - app/assets/stylesheets/couch_i18n/application.css
55
+ - app/assets/stylesheets/couch_i18n/structure.css.scss
56
+ - app/controllers/couch_i18n/application_controller.rb
57
+ - app/controllers/couch_i18n/translations_controller.rb
41
58
  - app/helpers/couch_i18n/application_helper.rb
59
+ - app/models/couch_i18n/translation.rb
42
60
  - app/views/couch_i18n/application/_alerts.html.haml
43
61
  - app/views/couch_i18n/application/_error_messages.html.haml
44
62
  - app/views/couch_i18n/translations/_form.html.haml
45
- - app/views/couch_i18n/translations/index.html.haml
46
63
  - app/views/couch_i18n/translations/edit.html.haml
64
+ - app/views/couch_i18n/translations/index.html.haml
47
65
  - app/views/couch_i18n/translations/new.html.haml
48
66
  - app/views/layouts/couch_i18n/application.html.haml
49
67
  - config/routes.rb
50
68
  - MIT-LICENSE
51
69
  - Rakefile
52
70
  - README.rdoc
53
- has_rdoc: true
54
71
  homepage: http://github.com/bterkuile/couch_i18n
55
72
  licenses: []
56
-
57
73
  post_install_message:
58
74
  rdoc_options: []
59
-
60
- require_paths:
75
+ require_paths:
61
76
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
77
+ required_ruby_version: !ruby/object:Gem::Requirement
63
78
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
84
  none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
74
89
  requirements: []
75
-
76
90
  rubyforge_project: couch_i18n
77
- rubygems_version: 1.6.2
91
+ rubygems_version: 1.8.11
78
92
  signing_key:
79
93
  specification_version: 3
80
- summary: couch_i18n is an in database storage for I18n translations, tested for rails, with online management views
94
+ summary: couch_i18n is an in database storage for I18n translations, tested for rails,
95
+ with online management views
81
96
  test_files: []
82
-