olelo 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/.travis.yml +8 -0
- data/README.creole +31 -11
- data/Rakefile +46 -21
- data/config/aspects.rb +19 -15
- data/lib/olelo/application.rb +2 -3
- data/lib/olelo/extensions.rb +3 -0
- data/lib/olelo/helper.rb +7 -5
- data/lib/olelo/locale.rb +1 -1
- data/lib/olelo/locale.yml +298 -204
- data/lib/olelo/page.rb +9 -1
- data/lib/olelo/plugin.rb +1 -1
- data/lib/olelo/repository.rb +1 -1
- data/lib/olelo/util.rb +3 -0
- data/lib/olelo/version.rb +1 -1
- data/olelo.gemspec +1 -1
- data/plugins/aspects/changelog.rb +7 -4
- data/plugins/aspects/locale.yml +69 -47
- data/plugins/blog/locale.yml +13 -9
- data/plugins/editor/locale.yml +16 -11
- data/plugins/filters/creole.rb +3 -6
- data/plugins/filters/fix_image_links.rb +20 -0
- data/plugins/filters/locale.yml +18 -13
- data/plugins/filters/s5/main.rb +2 -0
- data/plugins/login/locale.yml +6 -4
- data/plugins/repositories/gitrb_repository.rb +1 -1
- data/plugins/repositories/locale.yml +14 -10
- data/plugins/repositories/rugged_repository.rb +2 -3
- data/plugins/security/locale.yml +19 -13
- data/plugins/tags/math.rb +2 -1
- data/plugins/treeview/script.js +2 -2
- data/plugins/treeview/script/init.js +4 -0
- data/plugins/utils/xml.rb +14 -0
- data/static/script.js +296 -256
- data/static/script/02-history.js +1943 -0
- data/static/script/03-history.adapter.jquery.js +77 -0
- data/static/script/{03-jquery.ui.core.js → 04-jquery.ui.core.js} +0 -0
- data/static/script/{04-jquery.ui.widget.js → 05-jquery.ui.widget.js} +0 -0
- data/static/script/{05-jquery.ui.position.js → 06-jquery.ui.position.js} +0 -0
- data/static/script/{06-jquery.ui.menu.js → 07-jquery.ui.menu.js} +0 -0
- data/static/script/{07-jquery.ui.autocomplete.js → 08-jquery.ui.autocomplete.js} +0 -0
- data/static/script/{02-olelo.storage.js → 09-olelo.storage.js} +0 -0
- data/static/script/{08-olelo.i18n.js → 10-olelo.i18n.js} +0 -0
- data/static/script/{09-olelo.unsaved.js → 11-olelo.unsaved.js} +6 -2
- data/static/script/{10-olelo.historytable.js → 12-olelo.historytable.js} +0 -0
- data/static/script/13-olelo.pagination.js +30 -0
- data/static/script/{13-olelo.tabwidget.js → 14-olelo.tabwidget.js} +0 -0
- data/static/script/{14-olelo.timeago.js → 15-olelo.timeago.js} +14 -1
- data/static/script/{15-olelo.underliner.js → 16-olelo.underliner.js} +0 -0
- data/static/script/{16-olelo.ui.combobox.js → 17-olelo.ui.combobox.js} +0 -0
- data/static/script/init.js +10 -10
- data/static/themes/atlantis/screen.scss +11 -10
- data/static/themes/atlantis/style.css +1 -1
- data/test/config_test.rb +9 -0
- data/test/factory_test.rb +1 -1
- data/test/hash_extensions_test.rb +1 -1
- data/test/helper.rb +0 -1
- data/test/hooks_test.rb +1 -2
- data/test/object_extensions_test.rb +1 -2
- data/test/run.rb +12 -0
- data/test/string_extensions_test.rb +1 -1
- data/test/templates_test.rb +1 -3
- data/test/util_test.rb +1 -6
- data/views/compare.slim +4 -5
- data/views/edit.slim +2 -2
- data/views/history.slim +1 -1
- data/views/layout.slim +1 -2
- data/views/not_found.slim +2 -2
- data/views/show.slim +3 -4
- metadata +47 -44
- data/plugins/filters/fix_img_tag.rb +0 -16
- data/static/script/11-olelo.pagination.js +0 -18
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
rvm:
|
2
|
+
- 1.9.2
|
2
3
|
- 1.9.3
|
3
4
|
- ruby-head
|
4
5
|
- rbx-19mode
|
6
|
+
matrix:
|
7
|
+
allow_failures:
|
8
|
+
- rvm: rbx-19mode
|
9
|
+
# HACK: Fix problems with native libraries on ruby-head
|
10
|
+
before_install:
|
11
|
+
- gem install rugged -v 0.17.0.b7 -- --with-cflags='--std=gnu99'
|
12
|
+
- gem install nokogiri redcarpet -- --with-cflags='--std=gnu99'
|
data/README.creole
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= Ōlelo Wiki
|
2
2
|
|
3
|
+
[[https://travis-ci.org/minad/olelo|{{https://secure.travis-ci.org/minad/olelo.png?branch=master|Build Status}}]]
|
4
|
+
[[https://gemnasium.com/minad/olelo|{{https://gemnasium.com/minad/olelo.png?travis|Dependency Status}}]]
|
5
|
+
[[https://codeclimate.com/github/minad/olelo|{{https://codeclimate.com/badge.png|Code Climate}}]]
|
6
|
+
|
3
7
|
Ōlelo is a wiki that stores pages in a [[http://git-scm.org/|Git]] repository, supports many markup styles and has an extensible, hackable architecture!
|
4
8
|
If you want to see a demo installation go to http://www.gitwiki.org/.
|
5
9
|
|
@@ -13,6 +17,7 @@ Core features:
|
|
13
17
|
* Support for hierarchical wikis (directory structure)
|
14
18
|
* File upload
|
15
19
|
* History, commit and diff view
|
20
|
+
* Locales, currently supported languages Czech, English, French, German
|
16
21
|
|
17
22
|
Features, implemented by plugins:
|
18
23
|
* Support for many markup languages (Creole, Markdown, Textile, ...)
|
@@ -22,7 +27,7 @@ Features, implemented by plugins:
|
|
22
27
|
* Syntax highlighted embedded code blocks
|
23
28
|
* Image resizing, SVG to PNG/JPEG conversion
|
24
29
|
* Auto-generated table of contents
|
25
|
-
* Wiki syntax can be extended with tags
|
30
|
+
* Wiki syntax can be extended with tags (gist, math, footnotes, ...)
|
26
31
|
* Editor preview
|
27
32
|
* View pages as S5 presentation
|
28
33
|
* Privacy features: Access control lists, Private wiki which needs login, readonly wiki
|
@@ -41,7 +46,7 @@ Go to a git repository via command line and start the Ōlelo webserver.
|
|
41
46
|
$ olelo
|
42
47
|
}}}
|
43
48
|
|
44
|
-
Point your web browser at http://localhost:8080/.
|
49
|
+
Point your web browser at http://localhost:8080/. This is all you have to do, now you are good to go to use your wiki!
|
45
50
|
|
46
51
|
== Installation from source
|
47
52
|
|
@@ -74,25 +79,22 @@ For production purposes, I recommend that you deploy the wiki with [[http://unic
|
|
74
79
|
$ unicorn path-to/config.ru
|
75
80
|
}}}
|
76
81
|
|
77
|
-
Unicorn is a very flexible ruby application server and Ōlelo runs very well on it. You can adapt the number of Unicorn workers depending on the load you expect. It is
|
78
|
-
a good idea to observe the Unicorn workers as described in https://github.com/blog/519-unicorn-god and kill missbehaving workers if necessary.
|
82
|
+
Unicorn is a very flexible ruby application server and Ōlelo runs very well on it. You can adapt the number of Unicorn workers depending on the load you expect. It is a good idea to observe the Unicorn workers as described in https://github.com/blog/519-unicorn-god and kill missbehaving workers if necessary.
|
79
83
|
|
80
84
|
== Configuration
|
81
85
|
|
82
|
-
For deployment you might want to tweak some settings. Ōlelo reads the files config/config.yml.default and config/config.yml in that order.
|
83
|
-
So just copy the default configuration config/config.yml.default to config/config.yml and make your modifications. If you installed Ōlelo
|
84
|
-
as gem this is not a good idea since you don't want to fiddle in the gem directory. For this purpose exists the environment variable OLELO_CONFIG which
|
86
|
+
For deployment you might want to tweak some settings. Ōlelo reads the files 'config/config.yml.default' and 'config/config.yml' in that order. So just copy the default configuration 'config/config.yml.default' to 'config/config.yml' and make your modifications. If you installed Ōlelo as gem this is not a good idea since you don't want to fiddle in the gem directory. For this purpose the environment variable '$OLELO_CONFIG' exists which
|
85
87
|
can point to the configuration file that you want to use.
|
86
88
|
|
87
89
|
{{{
|
88
90
|
export OLELO_CONFIG=/home/olelo/olelo_config.yml
|
89
91
|
}}}
|
90
92
|
|
91
|
-
You can also use the OLELO_CONFIG environment variable if you want to run multiple Ōlelo instances with different configurations.
|
93
|
+
You can also use the '$OLELO_CONFIG' environment variable if you want to run multiple Ōlelo instances with different configurations, for example to serve different pages from different repositories.
|
92
94
|
|
93
95
|
== Dependencies
|
94
96
|
|
95
|
-
If you
|
97
|
+
If you installed Ōlelo as gem or used Bundler you don't really have to care about the dependencies. The standard installation provides the core dependencies and a good selection of optional dependencies.
|
96
98
|
|
97
99
|
Core dependencies:
|
98
100
|
* [[http://www.git-scm.com|Git]]
|
@@ -109,15 +111,33 @@ Some dependencies are optional, for example depending on the markup you want to
|
|
109
111
|
* [[http://nokogiri.org/|Nokogiri for auto-generated table of contents]]
|
110
112
|
* [[http://pygments.org/|Pygments for syntax highlighting of code blocks]]
|
111
113
|
|
114
|
+
== Development
|
115
|
+
|
116
|
+
=== Important concepts
|
117
|
+
|
118
|
+
* Plugin architecture
|
119
|
+
* Aspects under 'plugins/aspects' which provide different 'views' for a page
|
120
|
+
* Filters under 'plugins/filters' which make it possible to build up aspects from a filter chain.
|
121
|
+
These aspects are configured under 'config/aspects.rb'
|
122
|
+
* Tags are provided by the 'plugins/tags/main.rb' plugin and can be integrated in a filter chain.
|
123
|
+
They look like html tags and can be used to extend the wiki syntax.
|
124
|
+
|
125
|
+
=== Tipps
|
126
|
+
|
127
|
+
* Execute 'rake --tasks' to see the available development tasks
|
128
|
+
* Activate development mode by setting the option 'production: false' in 'config/config.yml'
|
129
|
+
* Increase the log verbosity by setting 'log.level: DEBUG' in 'config/config.yml'
|
130
|
+
* Do not hesitate to create an issue at the [[https://github.com/minad/olelo/issues|issue tracker]]
|
131
|
+
|
112
132
|
== Authors
|
113
133
|
|
114
|
-
Git-Wiki was originally developed by Simon Rozet. The development of Ōlelo to its current state was done by Daniel Mendler and contributors.
|
115
|
-
The current code base doesn't have much in common with the original Git-Wiki proof-of-concept.
|
134
|
+
Git-Wiki was originally developed by Simon Rozet. The development of Ōlelo to its current state was done by Daniel Mendler and contributors. The current code base doesn't have much in common with the original Git-Wiki proof-of-concept.
|
116
135
|
|
117
136
|
Contributors:
|
118
137
|
* Alex Eagle
|
119
138
|
* Alex Wall
|
120
139
|
* Hrvoje
|
140
|
+
* Korthaerd
|
121
141
|
* Luca Greco
|
122
142
|
* Pavel Suchmann
|
123
143
|
* Raffael Schmid
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
task default:
|
1
|
+
task default: :test
|
2
2
|
|
3
3
|
def shrink_js(t)
|
4
4
|
#sh "cat #{t.prerequisites.sort.join(' ')} > #{t.name}"
|
@@ -42,21 +42,14 @@ namespace :gen do
|
|
42
42
|
task css: %w(static/themes/atlantis/style.css
|
43
43
|
plugins/treeview/treeview.css
|
44
44
|
plugins/utils/pygments.css
|
45
|
-
plugins/gallery/gallery.css
|
45
|
+
plugins/aspects/gallery/gallery.css
|
46
46
|
plugins/misc/fancybox/jquery.fancybox.css
|
47
47
|
plugins/blog/blog.css)
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
sh "bacon -q -Ilib:test #{t.prerequisites.join(' ')}"
|
54
|
-
end
|
55
|
-
|
56
|
-
desc 'Generate test coverage report'
|
57
|
-
task rcov: FileList['test/*_test.rb'] do |t|
|
58
|
-
sh "rcov -Ilib:test #{t.prerequisites.join(' ')}"
|
59
|
-
end
|
50
|
+
desc 'Run tests with bacon'
|
51
|
+
task test: FileList['test/*_test.rb'] do |t|
|
52
|
+
sh "bacon -q -Ilib:test test/run.rb"
|
60
53
|
end
|
61
54
|
|
62
55
|
desc 'Cleanup'
|
@@ -67,19 +60,51 @@ task :clean do |t|
|
|
67
60
|
FileUtils.rm_rf '.wiki/log'
|
68
61
|
end
|
69
62
|
|
70
|
-
desc 'Generate documentation'
|
71
63
|
namespace :doc do
|
72
|
-
|
73
|
-
task :
|
74
|
-
|
64
|
+
desc 'Generate documentation'
|
65
|
+
task :gen do; sh "yard doc -o doc/api 'lib/**/*.rb' 'plugins/**/*.rb'"; end
|
66
|
+
|
67
|
+
desc 'Start YARD documentation server'
|
68
|
+
task :server do; sh 'yard server --reload'; end
|
69
|
+
|
70
|
+
desc 'Check YARD documentation'
|
71
|
+
task :check do; sh "yardcheck 'lib/**/*.rb' 'plugins/**/*.rb'"; end
|
72
|
+
end
|
73
|
+
|
74
|
+
namespace :locale do
|
75
|
+
desc 'Sort locale yaml files'
|
76
|
+
task :sort do
|
77
|
+
# You need the i18n_yaml_sorter gem
|
78
|
+
Dir['**/locale.yml'].each do |file|
|
79
|
+
puts "Sorting #{file}"
|
80
|
+
system("sort_yaml < #{file} > #{file}.sorted; mv #{file}.sorted #{file}")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
desc 'Check locales for missing keys'
|
85
|
+
task :check do
|
86
|
+
require 'yaml'
|
87
|
+
Dir['**/locale.yml'].each do |file|
|
88
|
+
puts "Checking #{file}"
|
89
|
+
translations = YAML.load_file(file)
|
90
|
+
puts 'en locale missing' unless translations['en']
|
91
|
+
keys = translations['en'].keys
|
92
|
+
translations.each do |locale,hash|
|
93
|
+
delta = hash.keys - keys
|
94
|
+
puts "\tLocale #{locale} has additional keys #{delta.join(' ')}" unless delta.empty?
|
95
|
+
delta = keys - hash.keys
|
96
|
+
puts "\tLocale #{locale} has missing keys #{delta.join(' ')}" unless delta.empty?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
75
100
|
end
|
76
101
|
|
77
102
|
namespace :notes do
|
78
|
-
task :todo do;
|
79
|
-
task :fixme do;
|
80
|
-
task :hack do;
|
81
|
-
task :warning do;
|
82
|
-
task :important do;
|
103
|
+
task :todo do; sh('ack T''ODO'); end
|
104
|
+
task :fixme do; sh('ack F''IXME'); end
|
105
|
+
task :hack do; sh('ack H''ACK'); end
|
106
|
+
task :warning do; sh('ack W''ARNING'); end
|
107
|
+
task :important do; sh('ack I''MPORTANT'); end
|
83
108
|
end
|
84
109
|
|
85
110
|
desc 'Show annotations'
|
data/config/aspects.rb
CHANGED
@@ -67,7 +67,8 @@ aspect :page do
|
|
67
67
|
remove_comments.tag_shortcuts
|
68
68
|
creole_nowiki.tag { creole!.rubypants }
|
69
69
|
end
|
70
|
-
toc
|
70
|
+
fix_image_links.toc
|
71
|
+
interwiki(map: interwiki_map).link_classifier
|
71
72
|
end
|
72
73
|
end
|
73
74
|
|
@@ -78,7 +79,8 @@ aspect :s5 do
|
|
78
79
|
filter do
|
79
80
|
remove_comments.tag_shortcuts
|
80
81
|
creole_nowiki.tag { creole!.rubypants }
|
81
|
-
toc
|
82
|
+
fix_image_links.toc
|
83
|
+
interwiki(map: interwiki_map).link_classifier
|
82
84
|
html_wrapper!.s5!
|
83
85
|
end
|
84
86
|
end
|
@@ -90,7 +92,7 @@ aspect :latex do
|
|
90
92
|
filter do
|
91
93
|
remove_comments.tag_shortcuts.creole_nowiki
|
92
94
|
tag(static: true) { creole!.rubypants }
|
93
|
-
|
95
|
+
interwiki(map: interwiki_map)
|
94
96
|
html_wrapper!.xslt!(stylesheet: 'xhtml2latex.xsl')
|
95
97
|
end
|
96
98
|
end
|
@@ -107,7 +109,8 @@ aspect :page do
|
|
107
109
|
remove_comments.tag_shortcuts
|
108
110
|
mediawiki_nowiki.tag { mediawiki!.rubypants }
|
109
111
|
end
|
110
|
-
toc
|
112
|
+
fix_image_links.toc
|
113
|
+
interwiki(map: interwiki_map).link_classifier
|
111
114
|
end
|
112
115
|
end
|
113
116
|
|
@@ -118,7 +121,8 @@ aspect :s5 do
|
|
118
121
|
filter do
|
119
122
|
remove_comments.tag_shortcuts
|
120
123
|
mediawiki_nowiki.tag { mediawiki!.rubypants }
|
121
|
-
toc
|
124
|
+
fix_image_links.toc
|
125
|
+
interwiki(map: interwiki_map).link_classifier
|
122
126
|
html_wrapper!.s5!
|
123
127
|
end
|
124
128
|
end
|
@@ -130,7 +134,7 @@ aspect :latex do
|
|
130
134
|
filter do
|
131
135
|
remove_comments.tag_shortcuts.mediawiki_nowiki
|
132
136
|
tag(static: true) { mediawiki!.rubypants }
|
133
|
-
|
137
|
+
interwiki(map: interwiki_map)
|
134
138
|
html_wrapper!.xslt!(stylesheet: 'xhtml2latex.xsl')
|
135
139
|
end
|
136
140
|
end
|
@@ -145,7 +149,7 @@ aspect :page do
|
|
145
149
|
filter do
|
146
150
|
remove_comments.tag_shortcuts.textile_nowiki
|
147
151
|
tag(disable: 'html:*') { textile!.rubypants }
|
148
|
-
|
152
|
+
fix_image_links.toc
|
149
153
|
interwiki(map: interwiki_map).link_classifier
|
150
154
|
end
|
151
155
|
end
|
@@ -157,7 +161,7 @@ aspect :s5 do
|
|
157
161
|
filter do
|
158
162
|
remove_comments.tag_shortcuts.textile_nowiki
|
159
163
|
tag(disable: 'html:*') { textile!.rubypants }
|
160
|
-
|
164
|
+
fix_image_links.toc
|
161
165
|
interwiki(map: interwiki_map).link_classifier
|
162
166
|
html_wrapper!.s5!
|
163
167
|
end
|
@@ -170,7 +174,7 @@ aspect :latex do
|
|
170
174
|
filter do
|
171
175
|
remove_comments.tag_shortcuts.textile_nowiki
|
172
176
|
tag(static: true, disable: 'html:*') { textile!.rubypants }
|
173
|
-
|
177
|
+
interwiki(map: interwiki_map)
|
174
178
|
html_wrapper!.xslt!(stylesheet: 'xhtml2latex.xsl')
|
175
179
|
end
|
176
180
|
end
|
@@ -187,7 +191,7 @@ aspect :page do
|
|
187
191
|
remove_comments.tag_shortcuts.markdown_nowiki
|
188
192
|
tag(disable: 'html:*') { markdown! }
|
189
193
|
end
|
190
|
-
|
194
|
+
fix_image_links.toc
|
191
195
|
interwiki(map: interwiki_map).link_classifier
|
192
196
|
end
|
193
197
|
end
|
@@ -199,7 +203,7 @@ aspect :s5 do
|
|
199
203
|
filter do
|
200
204
|
remove_comments.tag_shortcuts.markdown_nowiki
|
201
205
|
tag(disable: 'html:*') { markdown! }
|
202
|
-
|
206
|
+
fix_image_links.toc
|
203
207
|
interwiki(map: interwiki_map).link_classifier
|
204
208
|
html_wrapper!.s5!
|
205
209
|
end
|
@@ -212,7 +216,7 @@ aspect :latex do
|
|
212
216
|
filter do
|
213
217
|
remove_comments.tag_shortcuts.markdown_nowiki
|
214
218
|
tag(static: true, disable: 'html:*') { markdown! }
|
215
|
-
|
219
|
+
interwiki(map: interwiki_map)
|
216
220
|
html_wrapper!.xslt!(stylesheet: 'xhtml2latex.xsl')
|
217
221
|
end
|
218
222
|
end
|
@@ -227,7 +231,7 @@ aspect :page do
|
|
227
231
|
filter do
|
228
232
|
remove_comments.tag_shortcuts
|
229
233
|
tag { orgmode!.rubypants }
|
230
|
-
|
234
|
+
fix_image_links.toc
|
231
235
|
interwiki(map: interwiki_map).link_classifier
|
232
236
|
end
|
233
237
|
end
|
@@ -239,7 +243,7 @@ aspect :s5 do
|
|
239
243
|
filter do
|
240
244
|
remove_comments.tag_shortcuts
|
241
245
|
tag { orgmode!.rubypants }
|
242
|
-
|
246
|
+
fix_image_links.toc
|
243
247
|
interwiki(map: interwiki_map).link_classifier
|
244
248
|
html_wrapper!.s5!
|
245
249
|
end
|
@@ -252,7 +256,7 @@ aspect :latex do
|
|
252
256
|
filter do
|
253
257
|
remove_comments.tag_shortcuts
|
254
258
|
tag(static: true) { orgmode!.rubypants }
|
255
|
-
|
259
|
+
interwiki(map: interwiki_map)
|
256
260
|
html_wrapper!.xslt!(stylesheet: 'xhtml2latex.xsl')
|
257
261
|
end
|
258
262
|
end
|
data/lib/olelo/application.rb
CHANGED
@@ -154,10 +154,9 @@ module Olelo
|
|
154
154
|
|
155
155
|
get '/history(/:path)' do
|
156
156
|
per_page = 30
|
157
|
-
limit = 90
|
158
157
|
@page = Page.find!(params[:path])
|
159
158
|
@page_nr = [params[:page].to_i, 1].max
|
160
|
-
@history = page.history((@page_nr - 1) * per_page,
|
159
|
+
@history = page.history((@page_nr - 1) * per_page, per_page)
|
161
160
|
@page_count = @page_nr + @history.length / per_page
|
162
161
|
@history = @history[0...per_page]
|
163
162
|
cache_control version: page.version
|
@@ -205,7 +204,7 @@ module Olelo
|
|
205
204
|
|
206
205
|
get '/edit(/:path)' do
|
207
206
|
@page = Page.find!(params[:path])
|
208
|
-
flash.info!(:info_binary.t(page: page.title, type: "#{page.mime.comment} (#{page.mime})")) unless page.
|
207
|
+
flash.info!(:info_binary.t(page: page.title, type: "#{page.mime.comment} (#{page.mime})")) unless page.editable?
|
209
208
|
render :edit
|
210
209
|
end
|
211
210
|
|
data/lib/olelo/extensions.rb
CHANGED
data/lib/olelo/helper.rb
CHANGED
@@ -58,6 +58,7 @@ module Olelo
|
|
58
58
|
|
59
59
|
def pagination(path, page_count, page_nr, options = {})
|
60
60
|
return if page_count <= 1
|
61
|
+
unlimited = options.delete(:unlimited)
|
61
62
|
li = []
|
62
63
|
li << if page_nr > 1
|
63
64
|
%{<a href="#{escape_html build_path(path, options.merge(page: page_nr - 1))}">◂</a>}
|
@@ -86,11 +87,12 @@ module Olelo
|
|
86
87
|
if max != page_count
|
87
88
|
li << %{<span class="ellipsis"/>} << %{<a href="#{escape_html build_path(path, options.merge(page: page_count))}">#{page_count}</a>}
|
88
89
|
end
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
if page_nr < page_count
|
91
|
+
li << %{<span class="ellipsis"/>} if unlimited
|
92
|
+
li << %{<a href="#{escape_html build_path(path, options.merge(page: page_nr + 1))}">▸</a>}
|
93
|
+
else
|
94
|
+
li << %{<span class="disabled">▸</span>}
|
95
|
+
end
|
94
96
|
('<ul class="pagination">' + li.map {|x| "<li>#{x}</li>"}.join + '</ul>').html_safe
|
95
97
|
end
|
96
98
|
|
data/lib/olelo/locale.rb
CHANGED
@@ -41,7 +41,7 @@ module Olelo
|
|
41
41
|
if !key.to_s.ends_with?('_plural') && args[:count] && args[:count] != 1
|
42
42
|
translate("#{key}_plural", args)
|
43
43
|
elsif @translations[key]
|
44
|
-
|
44
|
+
@translations[key] % args
|
45
45
|
else
|
46
46
|
args[:fallback] || "##{key}"
|
47
47
|
end
|
data/lib/olelo/locale.yml
CHANGED
@@ -1,132 +1,139 @@
|
|
1
|
-
|
2
|
-
access_denied: '
|
3
|
-
actions: '
|
4
|
-
already_exists: '
|
1
|
+
cs_CZ:
|
2
|
+
access_denied: 'Přístup odepřen'
|
3
|
+
actions: 'Akce'
|
4
|
+
already_exists: 'Stránka %{page} již existuje'
|
5
5
|
attribute_mime: 'Mime-Type'
|
6
|
-
attribute_no_title: '
|
7
|
-
attribute_title: '
|
8
|
-
attributes: '
|
9
|
-
attributes_edited: '
|
10
|
-
author: '
|
11
|
-
binary_file: '
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
6
|
+
attribute_no_title: 'Skrýt titulek'
|
7
|
+
attribute_title: 'Titulek'
|
8
|
+
attributes: 'Atributy'
|
9
|
+
attributes_edited: 'Atributy stránky %{page} editovány'
|
10
|
+
author: 'Autor'
|
11
|
+
binary_file: 'Binární soubor'
|
12
|
+
cancel: 'Zrušit'
|
13
|
+
change_password: 'Změnit heslo'
|
14
|
+
changes: 'Změny'
|
15
|
+
changes_of: 'Změny stránky %{page}'
|
16
|
+
changes_saved: 'Změny uloženy'
|
17
|
+
comment: 'Komentář'
|
18
|
+
compare: 'Porovnat %{name}'
|
19
|
+
confirm_password: 'Potvrdit heslo'
|
20
|
+
create_page: 'Vytvořit stránku %{page}'
|
21
|
+
create_redirect: 'Vytvořit přesměrování'
|
22
|
+
date: 'Datum'
|
23
|
+
delete: 'Smazat'
|
24
|
+
delete_page: 'Smazat stránku %{page}'
|
25
|
+
deleted: 'Smazáno'
|
26
|
+
description: 'Popis'
|
27
|
+
destination: 'Cíl'
|
28
|
+
edit: 'Editovat'
|
29
|
+
edit_page: 'Editace stránky %{page}'
|
30
|
+
edit_page_section: 'Editovat %{page} (Sekci)'
|
31
|
+
email: 'e-mail'
|
32
|
+
empty_password: 'Prázdné heslo'
|
33
|
+
error_occurred: 'Ouvej! Vyskytla se chyba.'
|
34
|
+
file: 'Soubor'
|
35
|
+
groups: 'Skupiny'
|
36
|
+
head: 'Nejnovější'
|
37
|
+
history: 'Historie'
|
38
|
+
history_of: 'Historie stránky %{page}'
|
39
|
+
info_binary: 'Stránka %{page} je binární typ %{type} a nemůže být editována jako textový soubor.'
|
40
|
+
invalid_email: 'e-mail je neplatný'
|
41
|
+
invalid_mime_type: 'mime-type je neplatný'
|
42
|
+
invalid_name: 'Jméno je neplatné'
|
43
|
+
invalid_path: 'Neplatná cesta'
|
44
|
+
last_modified: 'Poslední modifikace'
|
45
|
+
login: 'Přihlášení'
|
46
|
+
logout: 'Odhlášení'
|
47
|
+
menu_actions_edit: 'Editovat'
|
48
|
+
menu_actions_edit_delete: 'Smazat'
|
49
|
+
menu_actions_edit_move: 'Přesunout'
|
50
|
+
menu_actions_edit_new: 'Nová stránka'
|
51
|
+
menu_actions_history: 'Historie'
|
52
|
+
menu_actions_history_head: 'Aktuální'
|
53
|
+
menu_actions_history_newer: 'Novější'
|
54
|
+
menu_actions_history_older: 'Starší'
|
55
|
+
menu_actions_view: 'Zobrazit'
|
56
|
+
move: 'Přesunout'
|
57
|
+
move_page: 'Přesunout stránku %{page}'
|
58
|
+
name: 'Jméno'
|
59
|
+
new_page: 'Nová stránka'
|
60
|
+
no_changes: 'Žádné změny'
|
61
|
+
not_found_text: 'Pardon, stránka, kterou hledáte, nebyla nalezena.'
|
62
|
+
old_password: 'Staré heslo'
|
63
|
+
page: 'Stránka'
|
64
|
+
page_deleted: 'Stránka %{page} smazána.'
|
65
|
+
page_edited: 'Stránka %{page} editována'#
|
66
|
+
not_found_title: '404 Not found'
|
67
|
+
page_moved: 'Stránka %{page} přesunuta do %{destination}.'
|
68
|
+
page_uploaded: 'Stránka %{page} nahrána'
|
69
|
+
parents: 'Rodiče'
|
70
|
+
password: 'Heslo'
|
71
|
+
passwords_do_not_match: 'Hesla se neshodují'
|
72
|
+
path: 'Cesta'
|
73
|
+
profile_title: 'Profil uživatele %{user}'
|
74
|
+
really_delete: 'Opravdu smazat?'
|
75
|
+
reserved_path: 'Cesta je rezervována'
|
67
76
|
reset: 'Reset'
|
68
|
-
root: '
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
signup: 'Sign up'
|
76
|
-
summary: 'Summary'
|
77
|
+
root: 'Hlavní strana'
|
78
|
+
save: 'Uložit'
|
79
|
+
save_and_close: 'Uložit a zavřít'
|
80
|
+
search: 'Hledat'
|
81
|
+
settings: 'Nastavení'
|
82
|
+
signup: 'Registrovat se'
|
83
|
+
summary: 'Souhrn'
|
77
84
|
text: 'Text'
|
78
|
-
title: '
|
79
|
-
tree: '
|
80
|
-
type_select: '
|
81
|
-
type_stringlist: '
|
82
|
-
|
83
|
-
|
84
|
-
user: '
|
85
|
-
user_already_exists: '
|
86
|
-
version: '
|
87
|
-
|
88
|
-
|
89
|
-
wrong_password: '
|
85
|
+
title: 'Titulek'
|
86
|
+
tree: 'Strom'
|
87
|
+
type_select: 'Vybrat hodnotu'
|
88
|
+
type_stringlist: 'Řetězce oddělené čárkou'
|
89
|
+
upload: 'Nahrát'
|
90
|
+
upload_file: 'Nahrát soubor'
|
91
|
+
user: 'Uživatel'
|
92
|
+
user_already_exists: 'Uživatel %{name} již existuje'
|
93
|
+
version: 'Verze'
|
94
|
+
version_by: 'Verze %{version} od %{author}, %{date}'
|
95
|
+
version_conflict: 'Detekován konflikt verzí'
|
96
|
+
wrong_password: 'Chybné heslo'
|
97
|
+
wrong_user_or_pw: 'Chybné jméno uživatele nebo heslo'
|
90
98
|
de:
|
91
99
|
access_denied: 'Zugriff verweigert'
|
92
100
|
actions: 'Aktionen'
|
93
|
-
already_exists: '
|
101
|
+
already_exists: '%{page} existiert bereits'
|
94
102
|
attribute_mime: 'Mime-Typ'
|
95
103
|
attribute_no_title: 'Titel deaktivieren'
|
96
104
|
attribute_title: 'Titel'
|
97
105
|
attributes: 'Attribute'
|
98
|
-
attributes_edited: 'Attribute von
|
106
|
+
attributes_edited: 'Attribute von %{page} bearbeitet'
|
99
107
|
author: 'Autor'
|
100
108
|
binary_file: 'Binärdatei'
|
101
|
-
by: 'von'
|
102
109
|
cancel: 'Abbrechen'
|
103
110
|
change_password: 'Passwort ändern'
|
104
111
|
changes: 'Änderungen'
|
105
|
-
changes_of: 'Änderungen von
|
112
|
+
changes_of: 'Änderungen von %{page}'
|
106
113
|
changes_saved: 'Änderungen gespeichert'
|
107
114
|
comment: 'Kommentar'
|
108
|
-
compare: 'Vergleiche
|
115
|
+
compare: 'Vergleiche %{name}'
|
109
116
|
confirm_password: 'Bestätige Passwort'
|
110
|
-
|
111
|
-
create_page: 'Neue #{page}'
|
117
|
+
create_page: 'Neue %{page}'
|
112
118
|
create_redirect: 'Weiterleitung'
|
113
119
|
date: 'Datum'
|
114
120
|
delete: 'Löschen'
|
121
|
+
delete_page: 'Lösche %{page}'
|
115
122
|
deleted: 'Gelöscht'
|
116
|
-
delete_page: 'Lösche #{page}'
|
117
123
|
description: 'Beschreibung'
|
118
124
|
destination: 'Ziel'
|
119
125
|
edit: 'Bearbeiten'
|
120
|
-
edit_page: 'Bearbeite
|
121
|
-
edit_page_section: 'Bearbeite
|
126
|
+
edit_page: 'Bearbeite %{page}'
|
127
|
+
edit_page_section: 'Bearbeite %{page} (Bereich)'
|
122
128
|
email: 'E-Mail'
|
123
129
|
empty_password: 'Leeres Passwort'
|
124
|
-
info_binary: '#{page} ist eine Datei mit dem Typ #{type} und kann nicht wie eine Textdatei bearbeitet werden.'
|
125
130
|
error_occurred: 'Hoppla! Es ist ein Fehler aufgetreten.'
|
126
131
|
file: 'Datei'
|
127
132
|
groups: 'Gruppen'
|
133
|
+
head: 'Kopf'
|
128
134
|
history: 'Historie'
|
129
|
-
history_of: 'Historie von
|
135
|
+
history_of: 'Historie von %{page}'
|
136
|
+
info_binary: '%{page} ist eine Datei mit dem Typ %{type} und kann nicht wie eine Textdatei bearbeitet werden.'
|
130
137
|
invalid_email: 'E-Mail ist ungültig'
|
131
138
|
invalid_mime_type: 'Mime-Typ ist ungültig'
|
132
139
|
invalid_name: 'Name ist ungültig'
|
@@ -143,26 +150,28 @@ de:
|
|
143
150
|
menu_actions_history_older: 'Älter'
|
144
151
|
menu_actions_view: 'Ansicht'
|
145
152
|
move: 'Verschieben'
|
146
|
-
move_page: 'Verschiebe
|
153
|
+
move_page: 'Verschiebe %{page}'
|
147
154
|
name: 'Name'
|
148
155
|
new_page: 'Neue Seite'
|
149
156
|
no_changes: 'Keine Änderungen'
|
157
|
+
not_found_text: 'Die Seite wurde leider nicht gefunden.'
|
158
|
+
not_found_title: '404 Nicht gefunden'
|
150
159
|
old_password: 'Altes Passwort'
|
151
160
|
page: 'Seite'
|
152
|
-
|
153
|
-
|
154
|
-
|
161
|
+
page_deleted: '%{page} gelöscht.'
|
162
|
+
page_edited: '%{page} bearbeitet'
|
163
|
+
page_moved: '%{page} verschoben nach %{destination}.'
|
164
|
+
page_uploaded: 'Seite %{page} hochgeladen'
|
165
|
+
parents: 'Eltern'
|
155
166
|
password: 'Passwort'
|
156
167
|
passwords_do_not_match: 'Passwörter stimmen nicht überein'
|
157
|
-
parents: 'Eltern'
|
158
168
|
path: 'Pfad'
|
159
|
-
|
169
|
+
powered_by: 'Powered by <a href="https://github.com/minad/olelo">Ōlelo</a>'
|
170
|
+
profile_title: 'Profil von %{user}'
|
160
171
|
really_delete: 'Wirklich löschen?'
|
161
172
|
reserved_path: 'Pfad ist reserviert'
|
162
173
|
reset: 'Zurücksetzen'
|
163
174
|
root: 'Root'
|
164
|
-
page_deleted: '#{page} gelöscht.'
|
165
|
-
page_moved: '#{page} verschoben nach #{destination}.'
|
166
175
|
save: 'Speichern'
|
167
176
|
save_and_close: 'Speichern & Schließen'
|
168
177
|
search: 'Suche'
|
@@ -171,111 +180,196 @@ de:
|
|
171
180
|
summary: 'Zusammenfassung'
|
172
181
|
text: 'Text'
|
173
182
|
title: 'Titel'
|
183
|
+
tree: 'Baum'
|
174
184
|
type_select: 'Wert auswählen'
|
175
185
|
type_stringlist: 'Durch Komma getrennte Strings'
|
176
|
-
tree: 'Baum'
|
177
|
-
upload_file: 'Datei hochladen'
|
178
186
|
upload: 'Hochladen'
|
187
|
+
upload_file: 'Datei hochladen'
|
179
188
|
user: 'Benutzer'
|
180
|
-
user_already_exists: 'Benutzer
|
189
|
+
user_already_exists: 'Benutzer %{name} existiert bereits'
|
181
190
|
version: 'Version'
|
191
|
+
version_by: 'Version %{version} von %{author}, %{date}'
|
182
192
|
version_conflict: 'Versionskonflikt aufgetreten'
|
183
|
-
wrong_user_or_pw: 'Falscher Benutzername oder falsches Passwort'
|
184
193
|
wrong_password: 'Falsches Passwort'
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
194
|
+
wrong_user_or_pw: 'Falscher Benutzername oder falsches Passwort'
|
195
|
+
en:
|
196
|
+
access_denied: 'Access denied'
|
197
|
+
actions: 'Actions'
|
198
|
+
already_exists: '%{page} exists already'
|
189
199
|
attribute_mime: 'Mime-Type'
|
190
|
-
attribute_no_title: '
|
191
|
-
attribute_title: '
|
192
|
-
attributes: '
|
193
|
-
attributes_edited: '
|
194
|
-
author: '
|
195
|
-
binary_file: '
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
passwords_do_not_match: 'Hesla se neshodují'
|
254
|
-
parents: 'Rodiče'
|
255
|
-
path: 'Cesta'
|
256
|
-
profile_title: 'Profil uživatele #{user}'
|
257
|
-
really_delete: 'Opravdu smazat?'
|
258
|
-
reserved_path: 'Cesta je rezervována'
|
200
|
+
attribute_no_title: 'Disable title'
|
201
|
+
attribute_title: 'Title'
|
202
|
+
attributes: 'Attributes'
|
203
|
+
attributes_edited: 'Attributes of %{page} edited'
|
204
|
+
author: 'Author'
|
205
|
+
binary_file: 'Binary file'
|
206
|
+
cancel: 'Cancel'
|
207
|
+
change_password: 'Change password'
|
208
|
+
changes: 'Changes'
|
209
|
+
changes_of: 'Changes of %{page}'
|
210
|
+
changes_saved: 'Changes saved'
|
211
|
+
comment: 'Comment'
|
212
|
+
compare: 'Compare %{name}: %{from} → %{to}'
|
213
|
+
confirm_password: 'Confirm password'
|
214
|
+
create_page: 'Create %{page}'
|
215
|
+
create_redirect: 'Create redirect'
|
216
|
+
date: 'Date'
|
217
|
+
delete: 'Delete'
|
218
|
+
delete_page: 'Delete %{page}'
|
219
|
+
deleted: 'Deleted'
|
220
|
+
description: 'Description'
|
221
|
+
destination: 'Destination'
|
222
|
+
edit: 'Edit'
|
223
|
+
edit_page: 'Editing %{page}'
|
224
|
+
edit_page_section: 'Editing %{page} (Section)'
|
225
|
+
email: 'E-Mail'
|
226
|
+
empty_password: 'Empty password'
|
227
|
+
error_occurred: 'Oh snap! An error occurred.'
|
228
|
+
file: 'File'
|
229
|
+
groups: 'Groups'
|
230
|
+
head: 'Head'
|
231
|
+
history: 'History'
|
232
|
+
history_of: 'History of %{page}'
|
233
|
+
info_binary: '%{page} is a binary %{type} and cannot be edited like a text file.'
|
234
|
+
invalid_email: 'E-Mail is invalid'
|
235
|
+
invalid_mime_type: 'Invalid mime type'
|
236
|
+
invalid_name: 'Name is invalid'
|
237
|
+
invalid_path: 'Invalid path'
|
238
|
+
last_modified: 'Last modified'
|
239
|
+
login: 'Login'
|
240
|
+
logout: 'Logout'
|
241
|
+
menu_actions_edit_new: 'New Page'
|
242
|
+
move: 'Move'
|
243
|
+
move_page: 'Move %{page}'
|
244
|
+
name: 'Name'
|
245
|
+
new_page: 'New Page'
|
246
|
+
no_changes: 'No changes'
|
247
|
+
not_found_text: 'Sorry, the page you were looking for was not found.'
|
248
|
+
not_found_title: '404 Not found'
|
249
|
+
old_password: 'Old password'
|
250
|
+
page: 'Page'
|
251
|
+
page_deleted: '%{page} deleted.'
|
252
|
+
page_edited: '%{page} edited'
|
253
|
+
page_moved: '%{page} moved to %{destination}.'
|
254
|
+
page_uploaded: 'Page %{page} uploaded'
|
255
|
+
parents: 'Parents'
|
256
|
+
password: 'Password'
|
257
|
+
passwords_do_not_match: 'Passwords do not match'
|
258
|
+
path: 'Path'
|
259
|
+
powered_by: 'Powered by <a href="https://github.com/minad/olelo">Ōlelo</a>'
|
260
|
+
profile_title: 'Profile of %{user}'
|
261
|
+
really_delete: 'Really delete?'
|
262
|
+
reserved_path: 'Path is reserved'
|
259
263
|
reset: 'Reset'
|
260
|
-
root: '
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
signup: 'Registrovat se'
|
268
|
-
summary: 'Souhrn'
|
264
|
+
root: 'Root'
|
265
|
+
save: 'Save'
|
266
|
+
save_and_close: 'Save & Close'
|
267
|
+
search: 'Search'
|
268
|
+
settings: 'Settings'
|
269
|
+
signup: 'Sign up'
|
270
|
+
summary: 'Summary'
|
269
271
|
text: 'Text'
|
270
|
-
title: '
|
271
|
-
tree: '
|
272
|
-
type_select: '
|
273
|
-
type_stringlist: '
|
274
|
-
|
275
|
-
|
276
|
-
user: '
|
277
|
-
user_already_exists: '
|
278
|
-
version: '
|
279
|
-
|
280
|
-
|
281
|
-
wrong_password: '
|
272
|
+
title: 'Title'
|
273
|
+
tree: 'Tree'
|
274
|
+
type_select: 'Select value'
|
275
|
+
type_stringlist: 'Comma-separated strings'
|
276
|
+
upload: 'Upload'
|
277
|
+
upload_file: 'Upload file'
|
278
|
+
user: 'User'
|
279
|
+
user_already_exists: 'User %{name} already exists'
|
280
|
+
version: 'Version'
|
281
|
+
version_by: 'Version %{version} by %{author}, %{date}'
|
282
|
+
version_conflict: 'Version conflict detected'
|
283
|
+
wrong_password: 'Wrong password'
|
284
|
+
wrong_user_or_pw: 'Wrong username or password'
|
285
|
+
fr:
|
286
|
+
access_denied: "Accès refusé"
|
287
|
+
actions: "Actions"
|
288
|
+
already_exists: "%{page} existe déjà"
|
289
|
+
attribute_mime: "Type MIME"
|
290
|
+
attribute_no_title: "Désactiver le titre"
|
291
|
+
attribute_title: "Titre"
|
292
|
+
attributes: "Attributs"
|
293
|
+
attributes_edited: "Attributs de %{page} modifiés"
|
294
|
+
author: "Auteur"
|
295
|
+
binary_file: "Fichier binaire"
|
296
|
+
cancel: "Cancel"
|
297
|
+
change_password: "Changer de mot de passe"
|
298
|
+
changes: "Changement"
|
299
|
+
changes_of: "Chamgements de %{page}"
|
300
|
+
changes_saved: "Changement enregistrés"
|
301
|
+
comment: "Commentaire"
|
302
|
+
compare: "Comparer %{name}"
|
303
|
+
confirm_password: "Confirmer le mot de passe"
|
304
|
+
create_page: "Créer %{page}"
|
305
|
+
create_redirect: "Créer une redirection"
|
306
|
+
date: "Date"
|
307
|
+
delete: "Effacer"
|
308
|
+
delete_page: "Effacer %{page}"
|
309
|
+
deleted: "Supprimé"
|
310
|
+
description: "Description"
|
311
|
+
destination: "Destination"
|
312
|
+
edit: "Éditer"
|
313
|
+
edit_page: "Modifier %{page}"
|
314
|
+
edit_page_section: "Modifier %{page} (Section)"
|
315
|
+
email: "Courriel"
|
316
|
+
empty_password: "Mot de passe vide"
|
317
|
+
error_occurred: "Oops ! Une erreur est survenue."
|
318
|
+
file: "Fichier"
|
319
|
+
groups: "Groupes"
|
320
|
+
head: "Tête"
|
321
|
+
history: "Historique"
|
322
|
+
history_of: "Historique de %{page}"
|
323
|
+
info_binary: "%{page} est un binaire %{type} et ne peut pas être édité comme un fichier texte."
|
324
|
+
invalid_email: "Courriel invalide"
|
325
|
+
invalid_mime_type: "Type MIME invalide"
|
326
|
+
invalid_name: "Nom invalide"
|
327
|
+
invalid_path: "Chemin invalide"
|
328
|
+
last_modified: "Dernière modification"
|
329
|
+
login: "Connexion"
|
330
|
+
logout: "Déconnexion"
|
331
|
+
menu_actions_edit_new: "Nouvelle page"
|
332
|
+
move: "Déplacer"
|
333
|
+
move_page: "Déplacer %{page}"
|
334
|
+
name: "Nom"
|
335
|
+
new_page: "Nouvelle page"
|
336
|
+
newer: "Plus récent"
|
337
|
+
no_changes: "Aucun changement"
|
338
|
+
not_found_text: "Désolé, la page que vous recherchez n'a pas été trouvée."
|
339
|
+
not_found_title: '404 Non trouvé'
|
340
|
+
old_password: "Ancien mot de passe"
|
341
|
+
page: "Page"
|
342
|
+
page_deleted: "%{page} supprimé."
|
343
|
+
page_edited: "%{page} éditée"
|
344
|
+
page_moved: "%{page} déplacer vers %{destination}."
|
345
|
+
page_uploaded: "Page %{page} téléversé"
|
346
|
+
parents: "Parents"
|
347
|
+
password: "Mot de passe"
|
348
|
+
passwords_do_not_match: "Les mots de passe ne correspondent pas"
|
349
|
+
path: "Chemin"
|
350
|
+
powered_by: 'Powered by <a href="https://github.com/minad/olelo">Ōlelo</a>'
|
351
|
+
profile_title: "Profil de %{user}"
|
352
|
+
really_delete: "Effacer réellement ?"
|
353
|
+
reserved_path: "Chemin réservé"
|
354
|
+
reset: "Réinitialiser"
|
355
|
+
root: "Racine"
|
356
|
+
save: "Enregistrer"
|
357
|
+
save_and_close: "Enregistrer et fermer"
|
358
|
+
search: "Rechercher"
|
359
|
+
settings: "Paramètres"
|
360
|
+
signup: "S'enregistrer"
|
361
|
+
summary: "Sommaire"
|
362
|
+
text: "Texte"
|
363
|
+
title: "Titre"
|
364
|
+
tree: "Arbre"
|
365
|
+
type_select: "Sélectionnez une valeur"
|
366
|
+
type_stringlist: "Chaînes séparées par des virgules"
|
367
|
+
upload: "Téléverser"
|
368
|
+
upload_file: "Téléverser un fichier"
|
369
|
+
user: "Utilisateur"
|
370
|
+
user_already_exists: "L'utilisateur %{name} existe déjà"
|
371
|
+
version: "Version"
|
372
|
+
version_by: 'Version %{version} par %{author}, %{date}'
|
373
|
+
version_conflict: "Conflit de version détecté"
|
374
|
+
wrong_password: "Mot de passe incorect"
|
375
|
+
wrong_user_or_pw: "Nom d'utilisateur ou mot de passe incorect"
|