locomotivecms_builder 1.0.0.alpha1

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 (137) hide show
  1. data/.gitignore +31 -0
  2. data/Gemfile +8 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +68 -0
  5. data/Rakefile +47 -0
  6. data/TODO +57 -0
  7. data/bin/builder +9 -0
  8. data/generators/blank/Gemfile.tt +20 -0
  9. data/generators/blank/app/content_types/.empty_directory +1 -0
  10. data/generators/blank/app/views/pages/404.liquid +11 -0
  11. data/generators/blank/app/views/pages/index.liquid +19 -0
  12. data/generators/blank/app/views/snippets/.empty_directory +1 -0
  13. data/generators/blank/config/deploy.yml +12 -0
  14. data/generators/blank/config/site.yml.tt +16 -0
  15. data/generators/blank/config/translations.yml +8 -0
  16. data/generators/blank/config.ru +3 -0
  17. data/generators/blank/data/.empty_directory +1 -0
  18. data/generators/blank/public/fonts/.empty_directory +1 -0
  19. data/generators/blank/public/images/.empty_directory +1 -0
  20. data/generators/blank/public/javascripts/.empty_directory +1 -0
  21. data/generators/blank/public/samples/.empty_directory +1 -0
  22. data/generators/blank/public/stylesheets/.empty_directory +1 -0
  23. data/generators/bootstrap/Gemfile.tt +20 -0
  24. data/generators/bootstrap/app/content_types/.empty_directory +1 -0
  25. data/generators/bootstrap/app/views/pages/404.liquid +13 -0
  26. data/generators/bootstrap/app/views/pages/404.liquid.haml +10 -0
  27. data/generators/bootstrap/app/views/pages/index.liquid +85 -0
  28. data/generators/bootstrap/app/views/pages/index.liquid.haml +72 -0
  29. data/generators/bootstrap/app/views/snippets/footer.liquid +3 -0
  30. data/generators/bootstrap/app/views/snippets/footer.liquid.haml +2 -0
  31. data/generators/bootstrap/config/deploy.yml +12 -0
  32. data/generators/bootstrap/config/site.yml.tt +16 -0
  33. data/generators/bootstrap/config/translations.yml +8 -0
  34. data/generators/bootstrap/config.ru +3 -0
  35. data/generators/bootstrap/data/.empty_directory +1 -0
  36. data/generators/bootstrap/public/fonts/FontAwesome.otf +0 -0
  37. data/generators/bootstrap/public/fonts/font-awesome-ie7.min.css +23 -0
  38. data/generators/bootstrap/public/fonts/font-awesome.css +469 -0
  39. data/generators/bootstrap/public/fonts/font-awesome.min.css +34 -0
  40. data/generators/bootstrap/public/fonts/fontawesome-webfont.eot +0 -0
  41. data/generators/bootstrap/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/generators/bootstrap/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/generators/bootstrap/public/javascripts/bootstrap.js +2159 -0
  44. data/generators/bootstrap/public/javascripts/bootstrap.min.js +6 -0
  45. data/generators/bootstrap/public/samples/.empty_directory +1 -0
  46. data/generators/bootstrap/public/stylesheets/application.css.scss +39 -0
  47. data/generators/bootstrap/public/stylesheets/bootstrap-responsive.css +1092 -0
  48. data/generators/bootstrap/public/stylesheets/bootstrap-responsive.min.css +9 -0
  49. data/generators/bootstrap/public/stylesheets/bootstrap.css +5652 -0
  50. data/generators/bootstrap/public/stylesheets/bootstrap.min.css +726 -0
  51. data/generators/content_type/app/content_types/%name%.yml.tt +58 -0
  52. data/generators/content_type/data/%name%.yml.tt +24 -0
  53. data/generators/page/template.liquid.haml.tt +35 -0
  54. data/generators/page/template.liquid.tt +1 -0
  55. data/generators/snippet/template.liquid.haml.tt +4 -0
  56. data/generators/snippet/template.liquid.tt +4 -0
  57. data/lib/locomotive/builder/cli.rb +225 -0
  58. data/lib/locomotive/builder/exceptions.rb +17 -0
  59. data/lib/locomotive/builder/generators/content_type.rb +47 -0
  60. data/lib/locomotive/builder/generators/page.rb +57 -0
  61. data/lib/locomotive/builder/generators/site/base.rb +30 -0
  62. data/lib/locomotive/builder/generators/site/blank.rb +23 -0
  63. data/lib/locomotive/builder/generators/site/bootstrap.rb +35 -0
  64. data/lib/locomotive/builder/generators/site.rb +97 -0
  65. data/lib/locomotive/builder/generators/snippet.rb +54 -0
  66. data/lib/locomotive/builder/liquid/drops/base.rb +44 -0
  67. data/lib/locomotive/builder/liquid/drops/content_entry.rb +48 -0
  68. data/lib/locomotive/builder/liquid/drops/content_types.rb +121 -0
  69. data/lib/locomotive/builder/liquid/drops/page.rb +36 -0
  70. data/lib/locomotive/builder/liquid/drops/site.rb +21 -0
  71. data/lib/locomotive/builder/liquid/errors.rb +7 -0
  72. data/lib/locomotive/builder/liquid/filters/date.rb +98 -0
  73. data/lib/locomotive/builder/liquid/filters/html.rb +154 -0
  74. data/lib/locomotive/builder/liquid/filters/misc.rb +28 -0
  75. data/lib/locomotive/builder/liquid/filters/resize.rb +18 -0
  76. data/lib/locomotive/builder/liquid/filters/text.rb +50 -0
  77. data/lib/locomotive/builder/liquid/filters/translate.rb +24 -0
  78. data/lib/locomotive/builder/liquid/patches.rb +47 -0
  79. data/lib/locomotive/builder/liquid/tags/consume.rb +58 -0
  80. data/lib/locomotive/builder/liquid/tags/csrf.rb +34 -0
  81. data/lib/locomotive/builder/liquid/tags/editable/base.rb +46 -0
  82. data/lib/locomotive/builder/liquid/tags/editable/control.rb +19 -0
  83. data/lib/locomotive/builder/liquid/tags/editable/file.rb +15 -0
  84. data/lib/locomotive/builder/liquid/tags/editable/long_text.rb +15 -0
  85. data/lib/locomotive/builder/liquid/tags/editable/short_text.rb +15 -0
  86. data/lib/locomotive/builder/liquid/tags/editable.rb +5 -0
  87. data/lib/locomotive/builder/liquid/tags/extends.rb +25 -0
  88. data/lib/locomotive/builder/liquid/tags/google_analytics.rb +28 -0
  89. data/lib/locomotive/builder/liquid/tags/inline_editor.rb +16 -0
  90. data/lib/locomotive/builder/liquid/tags/locale_switcher.rb +180 -0
  91. data/lib/locomotive/builder/liquid/tags/nav.rb +167 -0
  92. data/lib/locomotive/builder/liquid/tags/paginate.rb +105 -0
  93. data/lib/locomotive/builder/liquid/tags/seo.rb +74 -0
  94. data/lib/locomotive/builder/liquid/tags/snippet.rb +42 -0
  95. data/lib/locomotive/builder/liquid/tags/with_scope.rb +43 -0
  96. data/lib/locomotive/builder/liquid.rb +19 -0
  97. data/lib/locomotive/builder/listen.rb +48 -0
  98. data/lib/locomotive/builder/misc/core_ext.rb +29 -0
  99. data/lib/locomotive/builder/misc/dragonfly.rb +82 -0
  100. data/lib/locomotive/builder/misc/httparty.rb +47 -0
  101. data/lib/locomotive/builder/misc/i18n.rb +2 -0
  102. data/lib/locomotive/builder/misc/will_paginate.rb +16 -0
  103. data/lib/locomotive/builder/misc.rb +5 -0
  104. data/lib/locomotive/builder/server/dynamic_assets.rb +31 -0
  105. data/lib/locomotive/builder/server/entry_submission.rb +116 -0
  106. data/lib/locomotive/builder/server/favicon.rb +17 -0
  107. data/lib/locomotive/builder/server/locale.rb +42 -0
  108. data/lib/locomotive/builder/server/middleware.rb +54 -0
  109. data/lib/locomotive/builder/server/not_found.rb +18 -0
  110. data/lib/locomotive/builder/server/page.rb +59 -0
  111. data/lib/locomotive/builder/server/path.rb +34 -0
  112. data/lib/locomotive/builder/server/renderer.rb +105 -0
  113. data/lib/locomotive/builder/server/templatized_page.rb +32 -0
  114. data/lib/locomotive/builder/server.rb +78 -0
  115. data/lib/locomotive/builder/standalone_server.rb +33 -0
  116. data/lib/locomotive/builder/version.rb +5 -0
  117. data/lib/locomotive/builder.rb +167 -0
  118. data/locales/de.yml +143 -0
  119. data/locales/en.yml +164 -0
  120. data/locales/es.yml +119 -0
  121. data/locales/et.yml +140 -0
  122. data/locales/fr.yml +133 -0
  123. data/locales/it.yml +141 -0
  124. data/locales/nb.yml +177 -0
  125. data/locales/nl.yml +148 -0
  126. data/locales/pl.yml +189 -0
  127. data/locales/pt-BR.yml +125 -0
  128. data/locales/ru.yml +210 -0
  129. data/locomotivecms_builder.gemspec +42 -0
  130. data/spec/integration/cassettes/pull.yml +590 -0
  131. data/spec/integration/cassettes/push.yml +775 -0
  132. data/spec/integration/integration_helper.rb +15 -0
  133. data/spec/integration/server_spec.rb +37 -0
  134. data/spec/integration/sites_spec.rb +27 -0
  135. data/spec/spec_helper.rb +12 -0
  136. data/spec/support/helpers.rb +13 -0
  137. metadata +468 -0
@@ -0,0 +1,167 @@
1
+ require 'locomotive/builder/version'
2
+ require 'locomotive/builder/exceptions'
3
+
4
+ module Locomotive
5
+ module Builder
6
+
7
+ # Create a site from a site generator.
8
+ #
9
+ # @param [ String ] name The name of the site (underscored)
10
+ # @param [ String ] path The destination path of the site
11
+ # @param [ Object ] generator The wrapping class of the generator itself
12
+ #
13
+ def self.init(name, path, generator)
14
+ generator.klass.start [name, path]
15
+ end
16
+
17
+ # Start the thin server which serves the LocomotiveCMS site from the system.
18
+ #
19
+ # @param [ String ] path The path of the site
20
+ # @param [ Hash ] options The options for the thin server (host, port)
21
+ #
22
+ def self.serve(path, options)
23
+ if reader = self.require_mounter(path, true)
24
+ Bundler.require 'misc'
25
+
26
+ require 'thin'
27
+ require 'locomotive/builder/server'
28
+
29
+ server = Thin::Server.new(options[:host], options[:port], Locomotive::Builder::Server.new(reader))
30
+ server.threaded = true # TODO: make it an option ?
31
+ server.start
32
+ end
33
+ end
34
+
35
+ # Generate components for the LocomotiveCMS site such as content types, snippets, pages.
36
+ #
37
+ # @param [ Symbol ] name The name of the generator
38
+ # @param [ Array ] *args The arguments for the generator
39
+ #
40
+ def self.generate(name, *args)
41
+ Bundler.require 'misc'
42
+
43
+ lib = "locomotive/builder/generators/#{name}"
44
+ require lib
45
+
46
+ generator = lib.camelize.constantize.new(args, {}, {})
47
+ generator.invoke_all
48
+ end
49
+
50
+ # Push a site to a remote LocomotiveCMS engine described
51
+ # by the config/deploy.yml file of the site and for a specific environment.
52
+ #
53
+ # @param [ String ] path The path of the site
54
+ # @param [ Hash ] connection_info The information to get connected to the remote site
55
+ # @param [ Hash ] options The options passed to the push process
56
+ #
57
+ def self.push(path, connection_info, options = {})
58
+ if reader = self.require_mounter(path, true)
59
+ Bundler.require 'misc'
60
+
61
+ writer = Locomotive::Mounter::Writer::Api.instance
62
+
63
+ connection_info['uri'] = "#{connection_info.delete('host')}/locomotive/api"
64
+
65
+ _options = { mounting_point: reader.mounting_point, console: true }.merge(options).symbolize_keys
66
+ _options[:only] = _options.delete(:resources)
67
+
68
+ writer.run!(_options.merge(connection_info))
69
+ end
70
+ end
71
+
72
+ # Pull a site from a remote LocomotiveCMS engine described
73
+ # by the config/deploy.yml file of the site and for a specific environment.
74
+ #
75
+ # @param [ String ] path The path of the site
76
+ # @param [ Hash ] connection_info The information to get connected to the remote site
77
+ # @param [ Hash ] options The options passed to the pull process
78
+ #
79
+ def self.pull(path, connection_info, options = {})
80
+ self.require_mounter(path)
81
+
82
+ Bundler.require 'misc'
83
+
84
+ connection_info['uri'] = "#{connection_info.delete('host')}/locomotive/api"
85
+
86
+ _options = { console: true }.merge(options)
87
+ _options[:only] = _options.delete(:resources)
88
+
89
+ reader = Locomotive::Mounter::Reader::Api.instance
90
+ reader.run!(_options.merge(connection_info))
91
+
92
+ # writer = Locomotive::Mounter::Writer::FileSystem.instance
93
+ # writer.run!(mounting_point: reader.mounting_point, target_path: path)
94
+ rescue Exception => e
95
+ puts e.backtrace
96
+ end
97
+
98
+ def self.clone(path, connection_info, options = {})
99
+ if File.exists?(path)
100
+ puts "Path already exists. If it's an existing site, you might want to pull instead of clone."
101
+ return false
102
+ end
103
+ require 'locomotive/mounter'
104
+
105
+ connection_info['uri'] = "#{connection_info.delete('host')}/locomotive/api"
106
+
107
+ _options = options.dup
108
+ _options[:only] = _options.delete(:resources)
109
+
110
+ reader = Locomotive::Mounter::Reader::Api.instance
111
+ reader.run!(_options.merge(connection_info))
112
+
113
+ writer = Locomotive::Mounter::Writer::FileSystem.instance
114
+ writer.run!(mounting_point: reader.mounting_point, target_path: path)
115
+ # rescue Exception => e
116
+ # puts e.backtrace
117
+ end
118
+
119
+ # Destroy a remote site
120
+ #
121
+ # @param [ String ] path The path of the site
122
+ # @param [ Hash ] connection_info The information to get connected to the remote site
123
+ # @param [ Hash ] options The options passed to the push process
124
+ #
125
+ def self.destroy(path, connection_info, options = {})
126
+ self.require_mounter(path)
127
+
128
+ connection_info['uri'] = "#{connection_info.delete('host')}/locomotive/api"
129
+
130
+ Locomotive::Mounter::EngineApi.set_token connection_info.symbolize_keys
131
+ Locomotive::Mounter::EngineApi.delete('/current_site.json')
132
+ end
133
+
134
+ # Load the Locomotive::Mounter lib and set it up (logger, ...etc).
135
+ # If the second parameter is set to true, then the method builds
136
+ # an instance of the reader from the path passed in first parameter.
137
+ #
138
+ # @param [ String ] path The path to the local site
139
+ # @param [ Boolean ] get_reader Tell if it builds an instance of the reader.
140
+ #
141
+ # @param [ Object ] An instance of the reader is the get_reader parameter has been set.
142
+ #
143
+ def self.require_mounter(path, get_reader = false)
144
+ require 'locomotive/mounter'
145
+
146
+ logfile = File.join(path, 'log', 'mounter.log')
147
+ FileUtils.mkdir_p(File.dirname(logfile))
148
+
149
+ Locomotive::Mounter.logger = ::Logger.new(logfile).tap do |log|
150
+ log.level = Logger::DEBUG
151
+ end
152
+
153
+ # begin
154
+ if get_reader
155
+ reader = Locomotive::Mounter::Reader::FileSystem.instance
156
+ reader.run!(path: path)
157
+ reader
158
+ end
159
+ # rescue Exception => e
160
+ # Locomotive::Mounter.logger.error e.backtrace
161
+ # raise Locomotive::Builder::MounterException.new "Unable to read the local LocomotiveCMS site: #{e.message}\nPlease check the logs file (#{path}/log/mounter.log)"
162
+ # end if get_reader
163
+ end
164
+
165
+
166
+ end
167
+ end
data/locales/de.yml ADDED
@@ -0,0 +1,143 @@
1
+ de:
2
+ errors:
3
+ messages:
4
+ blank: "leer"
5
+
6
+ pagination:
7
+ previous: "« Zurück"
8
+ next: "Vor »"
9
+
10
+ date:
11
+ formats:
12
+ default: "%d.%m.%Y"
13
+ short: "%e %b"
14
+ long: "%e %B %Y"
15
+ long_ordinal: "%e %B %Y"
16
+ only_day: "%e"
17
+
18
+ day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
19
+ abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
20
+ month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember]
21
+ abbr_month_names: [~, Jan., Feb., Mär., Apr., Mai, Juni, Juli, Aug., Sept., Okt., Nov., Dez.]
22
+ order: [ day, month, year ]
23
+
24
+ pagination:
25
+ previous: "« Zurück"
26
+ next: "Vor »"
27
+
28
+ time:
29
+ formats:
30
+ default: "%d %B %Y %H:%M"
31
+ time: "%H:%M"
32
+ short: "%d %b %H:%M"
33
+ long: "%A %d %B %Y %H:%M:%S %Z"
34
+ long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
35
+ only_second: "%S"
36
+ am: 'vormittags'
37
+ pm: 'nachmittags'
38
+
39
+ datetime:
40
+ distance_in_words:
41
+ half_a_minute: 'eine halbe Minute'
42
+ less_than_x_seconds:
43
+ one: 'weniger als eine Sekunde'
44
+ other: 'weniger als %{count} Sekunden'
45
+ x_seconds:
46
+ one: 'eine Sekunde'
47
+ other: '%{count} Sekunden'
48
+ less_than_x_minutes:
49
+ one: 'weniger als eine Minute'
50
+ other: 'weniger als %{count} Minuten'
51
+ x_minutes:
52
+ one: 'eine Minute'
53
+ other: '%{count} Minuten'
54
+ about_x_hours:
55
+ one: 'etwa eine Stunde'
56
+ other: 'etwa %{count} Stunden'
57
+ x_days:
58
+ one: 'ein Tag'
59
+ other: '%{count} Tage'
60
+ about_x_months:
61
+ one: 'etwa ein Monat'
62
+ other: 'etwa %{count} Monate'
63
+ x_months:
64
+ one: 'ein Monat'
65
+ other: '%{count} Monate'
66
+ almost_x_years:
67
+ one: 'fast ein Jahr'
68
+ other: 'fast %{count} Jahre'
69
+ about_x_years:
70
+ one: 'etwa ein Jahr'
71
+ other: 'etwa %{count} Jahre'
72
+ over_x_years:
73
+ one: 'mehr als ein Jahr'
74
+ other: 'mehr als %{count} Jahre'
75
+ prompts:
76
+ second: "Sekunden"
77
+ minute: "Minuten"
78
+ hour: "Stunden"
79
+ day: "Tag"
80
+ month: "Monat"
81
+ year: "Jahr"
82
+
83
+ number:
84
+ format:
85
+ precision: 2
86
+ separator: ','
87
+ delimiter: '.'
88
+ significant: false
89
+ strip_insignificant_zeros: false
90
+ currency:
91
+ format:
92
+ unit: '€'
93
+ format: '%n%u'
94
+ separator: ","
95
+ delimiter: ""
96
+ precision: 2
97
+ significant: false
98
+ strip_insignificant_zeros: false
99
+ percentage:
100
+ format:
101
+ delimiter: ""
102
+ precision:
103
+ format:
104
+ delimiter: ""
105
+ human:
106
+ format:
107
+ delimiter: ""
108
+ precision: 1
109
+ significant: true
110
+ strip_insignificant_zeros: true
111
+ storage_units:
112
+ # Storage units output formatting.
113
+ # %u is the storage unit, %n is the number (default: 2 MB)
114
+ format: "%n %u"
115
+ units:
116
+ byte:
117
+ one: "Byte"
118
+ other: "Bytes"
119
+ kb: "KB"
120
+ mb: "MB"
121
+ gb: "GB"
122
+ tb: "TB"
123
+ decimal_units:
124
+ format: "%n %u"
125
+ units:
126
+ unit: ""
127
+ thousand: Tausend
128
+ million: Millionen
129
+ billion:
130
+ one: Milliarde
131
+ others: Milliarden
132
+ trillion: Billionen
133
+ quadrillion:
134
+ one: Billiarde
135
+ others: Billiarden
136
+
137
+ support:
138
+ array:
139
+ sentence_connector: 'und'
140
+ skip_last_comma: true
141
+ words_connector: ", "
142
+ two_words_connector: " und "
143
+ last_word_connector: " und "
data/locales/en.yml ADDED
@@ -0,0 +1,164 @@
1
+ en:
2
+ errors:
3
+ messages:
4
+ blank: "can't not blank"
5
+
6
+ pagination:
7
+ previous: "« Previous"
8
+ next: "Next »"
9
+
10
+ date:
11
+ abbr_day_names:
12
+ - Sun
13
+ - Mon
14
+ - Tue
15
+ - Wed
16
+ - Thu
17
+ - Fri
18
+ - Sat
19
+ abbr_month_names:
20
+ -
21
+ - Jan
22
+ - Feb
23
+ - Mar
24
+ - Apr
25
+ - May
26
+ - Jun
27
+ - Jul
28
+ - Aug
29
+ - Sep
30
+ - Oct
31
+ - Nov
32
+ - Dec
33
+ day_names:
34
+ - Sunday
35
+ - Monday
36
+ - Tuesday
37
+ - Wednesday
38
+ - Thursday
39
+ - Friday
40
+ - Saturday
41
+ formats:
42
+ default: ! '%Y-%m-%d'
43
+ long: ! '%B %d, %Y'
44
+ short: ! '%b %d'
45
+ month_names:
46
+ -
47
+ - January
48
+ - February
49
+ - March
50
+ - April
51
+ - May
52
+ - June
53
+ - July
54
+ - August
55
+ - September
56
+ - October
57
+ - November
58
+ - December
59
+ order:
60
+ - :year
61
+ - :month
62
+ - :day
63
+ datetime:
64
+ distance_in_words:
65
+ about_x_hours:
66
+ one: about 1 hour
67
+ other: about %{count} hours
68
+ about_x_months:
69
+ one: about 1 month
70
+ other: about %{count} months
71
+ about_x_years:
72
+ one: about 1 year
73
+ other: about %{count} years
74
+ almost_x_years:
75
+ one: almost 1 year
76
+ other: almost %{count} years
77
+ half_a_minute: half a minute
78
+ less_than_x_minutes:
79
+ one: less than a minute
80
+ other: less than %{count} minutes
81
+ less_than_x_seconds:
82
+ one: less than 1 second
83
+ other: less than %{count} seconds
84
+ over_x_years:
85
+ one: over 1 year
86
+ other: over %{count} years
87
+ x_days:
88
+ one: 1 day
89
+ other: ! '%{count} days'
90
+ x_minutes:
91
+ one: 1 minute
92
+ other: ! '%{count} minutes'
93
+ x_months:
94
+ one: 1 month
95
+ other: ! '%{count} months'
96
+ x_seconds:
97
+ one: 1 second
98
+ other: ! '%{count} seconds'
99
+ prompts:
100
+ day: Day
101
+ hour: Hour
102
+ minute: Minute
103
+ month: Month
104
+ second: Seconds
105
+ year: Year
106
+ number:
107
+ currency:
108
+ format:
109
+ delimiter: ! ','
110
+ format: ! '%u%n'
111
+ precision: 2
112
+ separator: .
113
+ significant: false
114
+ strip_insignificant_zeros: false
115
+ unit: $
116
+ format:
117
+ delimiter: ! ','
118
+ precision: 3
119
+ separator: .
120
+ significant: false
121
+ strip_insignificant_zeros: false
122
+ human:
123
+ decimal_units:
124
+ format: ! '%n %u'
125
+ units:
126
+ billion: Billion
127
+ million: Million
128
+ quadrillion: Quadrillion
129
+ thousand: Thousand
130
+ trillion: Trillion
131
+ unit: ''
132
+ format:
133
+ delimiter: ''
134
+ precision: 3
135
+ significant: true
136
+ strip_insignificant_zeros: true
137
+ storage_units:
138
+ format: ! '%n %u'
139
+ units:
140
+ byte:
141
+ one: Byte
142
+ other: Bytes
143
+ gb: GB
144
+ kb: KB
145
+ mb: MB
146
+ tb: TB
147
+ percentage:
148
+ format:
149
+ delimiter: ''
150
+ precision:
151
+ format:
152
+ delimiter: ''
153
+ support:
154
+ array:
155
+ last_word_connector: ! ', and '
156
+ two_words_connector: ! ' and '
157
+ words_connector: ! ', '
158
+ time:
159
+ am: am
160
+ formats:
161
+ default: ! '%a, %d %b %Y %H:%M:%S %z'
162
+ long: ! '%B %d, %Y %H:%M'
163
+ short: ! '%d %b %H:%M'
164
+ pm: pm
data/locales/es.yml ADDED
@@ -0,0 +1,119 @@
1
+ es:
2
+ errors:
3
+ messages:
4
+ blank: "no puede estar en blanco"
5
+
6
+ pagination:
7
+ previous: "« Anterior"
8
+ next: "Siguiente »"
9
+
10
+ date:
11
+ formats:
12
+ default: "%d/%m/%Y"
13
+ short: "%e-%b"
14
+ long: "%e-%B-%Y"
15
+ long_ordinal: "%e de %B de %Y"
16
+ only_day: "%e"
17
+
18
+ day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado]
19
+ abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab]
20
+ month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre]
21
+ abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic]
22
+ order: [ year, month, day ]
23
+
24
+ time:
25
+ formats:
26
+ default: "%A, %d de %B de %Y %H:%M:%S %z"
27
+ time: "%H:%M"
28
+ short: "%d de %b %H:%M"
29
+ long: "%d de %B de %Y %H:%M"
30
+ long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
31
+ only_second: "%S"
32
+ am: "am"
33
+ pm: "pm"
34
+
35
+
36
+ datetime:
37
+ distance_in_words:
38
+ half_a_minute: "medio minuto"
39
+ less_than_x_seconds:
40
+ one: "menos de 1 segundo"
41
+ other: "menos de %{count} segundos"
42
+ x_seconds:
43
+ one: "1 segundo"
44
+ other: "%{count} segundos"
45
+ less_than_x_minutes:
46
+ one: "menos de 1 minuto"
47
+ other: "menos de %{count} minutos"
48
+ x_minutes:
49
+ one: "1 minuto"
50
+ other: "%{count} minutos"
51
+ about_x_hours:
52
+ one: "alrededor de 1 hora"
53
+ other: "alrededor de %{count} horas"
54
+ x_days:
55
+ one: "1 día"
56
+ other: "%{count} días"
57
+ about_x_months:
58
+ one: "alrededor de 1 mes"
59
+ other: "alrededor de %{count} meses"
60
+ x_months:
61
+ one: "1 mes"
62
+ other: "%{count} meses"
63
+ about_x_years:
64
+ one: "alrededor de 1 año"
65
+ other: "alrededor de %{count} años"
66
+ over_x_years:
67
+ one: "más de 1 año"
68
+ other: "más de %{count} años"
69
+ almost_x_years:
70
+ one: "casi 1 año"
71
+ other: "casi %{count} años"
72
+ prompts:
73
+ year: "Año"
74
+ month: "Mes"
75
+ day: "Día"
76
+ hour: "Hora"
77
+ minute: "Minuto"
78
+ second: "Segundo"
79
+
80
+ number:
81
+ format:
82
+ separator: ","
83
+ delimiter: "."
84
+ precision: 3
85
+ currency:
86
+ format:
87
+ format: "%n %u"
88
+ unit: "€"
89
+ separator: ","
90
+ delimiter: "."
91
+ precision: 2
92
+ percentage:
93
+ format:
94
+ delimiter: ""
95
+ precision:
96
+ format:
97
+ delimiter: ""
98
+ human:
99
+ format:
100
+ delimiter: ""
101
+ precision: 1
102
+ storage_units:
103
+ format: "%n %u"
104
+ units:
105
+ byte:
106
+ one: "Byte"
107
+ other: "Bytes"
108
+ kb: "KB"
109
+ mb: "MB"
110
+ gb: "GB"
111
+ tb: "TB"
112
+
113
+ support:
114
+ array:
115
+ sentence_connector: 'y'
116
+ skip_last_comma: true
117
+ words_connector: ", "
118
+ two_words_connector: " y "
119
+ last_word_connector: " y "