olelo 0.9.8 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +44 -10
- data/config.ru +4 -1
- data/lib/olelo/application.rb +1 -54
- data/lib/olelo/helper.rb +12 -7
- data/lib/olelo/initializer.rb +10 -13
- data/lib/olelo/locale.rb +7 -12
- data/lib/olelo/locale.yml +1 -36
- data/lib/olelo/plugin.rb +0 -12
- data/lib/olelo/routing.rb +1 -1
- data/lib/olelo/templates.rb +2 -3
- data/lib/olelo/util.rb +1 -1
- data/lib/olelo/version.rb +1 -1
- data/{views → lib/olelo/views}/delete.slim +0 -0
- data/{views → lib/olelo/views}/deleted.slim +0 -0
- data/{views → lib/olelo/views}/edit.slim +3 -3
- data/{views → lib/olelo/views}/error.slim +0 -0
- data/{views → lib/olelo/views}/layout.slim +1 -1
- data/{views → lib/olelo/views}/login.slim +1 -1
- data/{views → lib/olelo/views}/move.slim +0 -0
- data/{views → lib/olelo/views}/not_found.slim +0 -0
- data/{views → lib/olelo/views}/profile.slim +0 -0
- data/lib/olelo/views/show.slim +8 -0
- data/lib/olelo/virtualfs.rb +5 -29
- data/plugins/aspects/changelog.rb +3 -5
- data/plugins/aspects/documentbrowser.rb +24 -2
- data/plugins/aspects/download.rb +12 -0
- data/plugins/aspects/gallery/main.rb +9 -0
- data/plugins/aspects/highlight.rb +11 -0
- data/plugins/aspects/image.rb +12 -0
- data/plugins/aspects/imageinfo.rb +36 -2
- data/plugins/aspects/main.rb +16 -1
- data/plugins/aspects/pageinfo.rb +20 -2
- data/plugins/aspects/source.rb +12 -0
- data/plugins/aspects/subpages.rb +17 -1
- data/plugins/aspects/text.rb +12 -0
- data/plugins/blog/main.rb +4 -4
- data/plugins/editor/preview.rb +16 -0
- data/plugins/editor/recaptcha.rb +19 -0
- data/plugins/filters/editsection.rb +19 -0
- data/plugins/filters/locale.yml +11 -16
- data/plugins/filters/toc.rb +12 -0
- data/{views → plugins/history}/changes.slim +0 -0
- data/{views → plugins/history}/compare.slim +2 -2
- data/{views → plugins/history}/history.slim +1 -1
- data/plugins/history/locale.yml +40 -0
- data/plugins/history/main.rb +67 -0
- data/plugins/history/script.js +2 -0
- data/{static/script/12-olelo.historytable.js → plugins/history/script/00-historytable.js} +0 -0
- data/plugins/history/script/init.js +7 -0
- data/plugins/login/persistent.rb +11 -0
- data/plugins/repositories/git_grep.rb +19 -2
- data/plugins/repositories/gitrb_repository.rb +8 -0
- data/plugins/repositories/rugged_repository.rb +10 -0
- data/plugins/security/acl.rb +23 -0
- data/plugins/security/private_wiki.rb +11 -0
- data/plugins/utils/assets.rb +15 -21
- data/plugins/utils/store.rb +40 -19
- data/static/{images/favicon.png → favicon.png} +0 -0
- data/static/script.js +3 -5
- data/static/script/init.js +0 -1
- data/static/themes/atlantis/screen.scss +3 -3
- data/static/themes/atlantis/style.css +1 -1
- data/test/templates_test.rb +3 -11
- metadata +47 -49
- data/plugins/aspects/locale.yml +0 -87
- data/plugins/editor/locale.yml +0 -20
- data/plugins/login/locale.yml +0 -8
- data/plugins/repositories/locale.yml +0 -16
- data/plugins/security/locale.yml +0 -24
- data/views/show.slim +0 -8
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -33,10 +33,11 @@ file('static/script.js' => Dir.glob('static/script/*.js')) { |t| shrink_js(t) }
|
|
33
33
|
file('plugins/treeview/script.js' => Dir.glob('plugins/treeview/script/*.js')) {|t| shrink_js(t) }
|
34
34
|
file('plugins/misc/fancybox/script.js' => Dir.glob('plugins/misc/fancybox/script/*.js')) {|t| shrink_js(t) }
|
35
35
|
file('plugins/editor/markup/script.js' => Dir.glob('plugins/editor/markup/script/*.js')) {|t| shrink_js(t) }
|
36
|
+
file('plugins/history/script.js' => Dir.glob('plugins/history/script/*.js')) {|t| shrink_js(t) }
|
36
37
|
|
37
38
|
namespace :gen do
|
38
39
|
desc('Shrink JS files')
|
39
|
-
task js: %w(static/script.js plugins/treeview/script.js plugins/misc/fancybox/script.js plugins/editor/markup/script.js)
|
40
|
+
task js: %w(static/script.js plugins/treeview/script.js plugins/misc/fancybox/script.js plugins/editor/markup/script.js plugins/history/script.js)
|
40
41
|
|
41
42
|
desc('Compile CSS files')
|
42
43
|
task css: %w(static/themes/atlantis/style.css
|
@@ -74,26 +75,59 @@ end
|
|
74
75
|
namespace :locale do
|
75
76
|
desc 'Sort locale yaml files'
|
76
77
|
task :sort do
|
77
|
-
|
78
|
+
require File.join(File.dirname(__FILE__), 'lib/olelo/virtualfs')
|
79
|
+
require 'i18n_yaml_sorter'
|
80
|
+
|
81
|
+
Dir['**/*.rb'].each do |file|
|
82
|
+
begin
|
83
|
+
locale = Olelo::VirtualFS::Embedded.new(file).read('locale.yml')
|
84
|
+
rescue
|
85
|
+
next
|
86
|
+
end
|
87
|
+
puts "Sorting #{file}"
|
88
|
+
result = I18nYamlSorter::Sorter.new(StringIO.new(locale)).sort
|
89
|
+
if result != locale
|
90
|
+
puts "Sorted #{file}:\n#{result}\n"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
78
94
|
Dir['**/locale.yml'].each do |file|
|
79
95
|
puts "Sorting #{file}"
|
80
|
-
system("sort_yaml < #{file} > #{file}.sorted
|
96
|
+
system("sort_yaml < #{file} > #{file}.sorted && mv #{file}.sorted #{file}")
|
81
97
|
end
|
82
98
|
end
|
83
99
|
|
84
100
|
desc 'Check locales for missing keys'
|
85
101
|
task :check do
|
102
|
+
require File.join(File.dirname(__FILE__), 'lib/olelo/virtualfs')
|
86
103
|
require 'yaml'
|
104
|
+
files = {}
|
105
|
+
Dir['**/*.rb'].each do |file|
|
106
|
+
begin
|
107
|
+
files[file] = Olelo::VirtualFS::Embedded.new(file).read('locale.yml')
|
108
|
+
rescue
|
109
|
+
end
|
110
|
+
end
|
87
111
|
Dir['**/locale.yml'].each do |file|
|
112
|
+
files[file] = File.read(file)
|
113
|
+
end
|
114
|
+
|
115
|
+
files.each do |file, content|
|
88
116
|
puts "Checking #{file}"
|
89
|
-
translations = YAML.
|
90
|
-
|
91
|
-
|
117
|
+
translations = YAML.load(content)
|
118
|
+
en = translations['en']
|
119
|
+
raise 'en locale missing' unless en
|
120
|
+
en_keys = en.keys
|
92
121
|
translations.each do |locale,hash|
|
93
|
-
delta = hash.keys -
|
94
|
-
puts "\
|
95
|
-
delta =
|
96
|
-
puts "\
|
122
|
+
delta = hash.keys - en_keys
|
123
|
+
puts "\t#{locale} has additional keys #{delta.join(' ')}" unless delta.empty?
|
124
|
+
delta = en_keys - hash.keys
|
125
|
+
puts "\t#{locale} is missing the keys #{delta.join(' ')}" unless delta.empty?
|
126
|
+
(en_keys & hash.keys).each do |key|
|
127
|
+
if hash[key].count('%{') != en[key].count('%{')
|
128
|
+
puts "\t#{locale}:#{key} has invalid number of arguments"
|
129
|
+
end
|
130
|
+
end
|
97
131
|
end
|
98
132
|
end
|
99
133
|
end
|
data/config.ru
CHANGED
@@ -16,7 +16,6 @@ Olelo::Config.instance['app_path'] = app_path
|
|
16
16
|
Olelo::Config.instance['config_path'] = ::File.join(app_path, 'config')
|
17
17
|
Olelo::Config.instance['initializers_path'] = ::File.join(app_path, 'config', 'initializers')
|
18
18
|
Olelo::Config.instance['plugins_path'] = ::File.join(app_path, 'plugins')
|
19
|
-
Olelo::Config.instance['views_path'] = ::File.join(app_path, 'views')
|
20
19
|
Olelo::Config.instance['themes_path'] = ::File.join(app_path, 'static', 'themes')
|
21
20
|
Olelo::Config.instance['rack.session_secret'] = SecureRandom.hex
|
22
21
|
Olelo::Config.instance.load!(::File.join(app_path, 'config', 'config.yml.default'))
|
@@ -84,6 +83,10 @@ end
|
|
84
83
|
|
85
84
|
use Rack::StaticCache, urls: ['/static'], root: app_path
|
86
85
|
use Rack::Session::Cookie, key: 'olelo.session', secret: Olelo::Config['rack.session_secret']
|
86
|
+
|
87
|
+
#require 'rack/perftools_profiler'
|
88
|
+
#use Rack::PerftoolsProfiler
|
89
|
+
|
87
90
|
use Olelo::Middleware::DegradeMimeType
|
88
91
|
use Olelo::Middleware::UAHeader
|
89
92
|
|
data/lib/olelo/application.rb
CHANGED
@@ -11,7 +11,7 @@ module Olelo
|
|
11
11
|
attr_reader :page
|
12
12
|
attr_setter :on_error
|
13
13
|
|
14
|
-
has_around_hooks :
|
14
|
+
has_around_hooks :routing, :action, :login_buttons,
|
15
15
|
:edit_buttons, :attributes_buttons, :upload_buttons
|
16
16
|
has_hooks :auto_login, :render, :menu, :head
|
17
17
|
|
@@ -59,18 +59,6 @@ module Olelo
|
|
59
59
|
edit_menu.item(:move, href: build_path(page, action: :move), rel: 'nofollow')
|
60
60
|
edit_menu.item(:delete, href: build_path(page, action: :delete), rel: 'nofollow')
|
61
61
|
end
|
62
|
-
history_menu = menu.item(:history, href: build_path(page, action: :history), accesskey: 'h')
|
63
|
-
|
64
|
-
if @menu_versions
|
65
|
-
head = !page.head? && (Olelo::Page.find(page.path) rescue nil)
|
66
|
-
if page.previous_version || head || page.next_version
|
67
|
-
history_menu.item(:older, href: build_path(page, original_params.merge(version: page.previous_version)),
|
68
|
-
accesskey: 'o') if page.previous_version
|
69
|
-
history_menu.item(:head, href: build_path(page.path, original_params), accesskey: 'c') if head
|
70
|
-
history_menu.item(:newer, href: build_path(page, original_params.merge(version: page.next_version)),
|
71
|
-
accesskey: 'n') if page.next_version
|
72
|
-
end
|
73
|
-
end
|
74
62
|
end
|
75
63
|
end
|
76
64
|
|
@@ -139,29 +127,6 @@ module Olelo
|
|
139
127
|
render :profile
|
140
128
|
end
|
141
129
|
|
142
|
-
get '/changes/:version(/:path)' do
|
143
|
-
@page = Page.find!(params[:path])
|
144
|
-
begin
|
145
|
-
@diff = page.diff(nil, params[:version])
|
146
|
-
rescue => ex
|
147
|
-
Olelo.logger.debug ex
|
148
|
-
raise NotFound
|
149
|
-
end
|
150
|
-
@version = @diff.to
|
151
|
-
cache_control etag: @version.to_s
|
152
|
-
render :changes
|
153
|
-
end
|
154
|
-
|
155
|
-
get '/history(/:path)' do
|
156
|
-
per_page = 30
|
157
|
-
@page = Page.find!(params[:path])
|
158
|
-
@page_nr = [params[:page].to_i, 1].max
|
159
|
-
@history = page.history((@page_nr - 1) * per_page, per_page)
|
160
|
-
@page_count = @page_nr + @history.length / per_page
|
161
|
-
cache_control etag: page.etag
|
162
|
-
render :history
|
163
|
-
end
|
164
|
-
|
165
130
|
get '/move/:path' do
|
166
131
|
@page = Page.find!(params[:path])
|
167
132
|
render :move
|
@@ -184,23 +149,6 @@ module Olelo
|
|
184
149
|
end
|
185
150
|
end
|
186
151
|
|
187
|
-
get '/compare/:versions(/:path)', versions: '(?:\w+)\.{2,3}(?:\w+)' do
|
188
|
-
@page = Page.find!(params[:path])
|
189
|
-
versions = params[:versions].split(/\.{2,3}/)
|
190
|
-
begin
|
191
|
-
@diff = page.diff(versions.first, versions.last)
|
192
|
-
rescue => ex
|
193
|
-
Olelo.logger.debug ex
|
194
|
-
raise NotFound
|
195
|
-
end
|
196
|
-
render :compare
|
197
|
-
end
|
198
|
-
|
199
|
-
get '/compare(/:path)' do
|
200
|
-
versions = params[:versions] || []
|
201
|
-
redirect build_path(params[:path], action: versions.size < 2 ? :history : "compare/#{versions.first}...#{versions.last}")
|
202
|
-
end
|
203
|
-
|
204
152
|
get '/edit(/:path)' do
|
205
153
|
@page = Page.find!(params[:path])
|
206
154
|
flash.info!(:info_binary.t(page: page.title, type: "#{page.mime.comment} (#{page.mime})")) unless page.editable?
|
@@ -261,7 +209,6 @@ module Olelo
|
|
261
209
|
end
|
262
210
|
|
263
211
|
def show_page
|
264
|
-
@menu_versions = true
|
265
212
|
render(:show, locals: {content: page.try(:content)})
|
266
213
|
end
|
267
214
|
|
data/lib/olelo/helper.rb
CHANGED
@@ -2,19 +2,24 @@
|
|
2
2
|
module Olelo
|
3
3
|
module BlockHelper
|
4
4
|
def blocks
|
5
|
-
@blocks ||= Hash.
|
5
|
+
@blocks ||= Hash.new('')
|
6
6
|
end
|
7
7
|
|
8
|
-
def define_block(name, content = nil)
|
9
|
-
blocks[name] =
|
8
|
+
def define_block(name, content = nil, &block)
|
9
|
+
blocks[name] = block ? block : escape_html(content)
|
10
10
|
''
|
11
11
|
end
|
12
12
|
|
13
|
+
def render_block(name)
|
14
|
+
block = blocks[name]
|
15
|
+
block.respond_to?(:call) ? block.call : block
|
16
|
+
end
|
17
|
+
|
13
18
|
def include_block(name)
|
14
|
-
|
19
|
+
wrap_block(name) { render_block(name) }
|
15
20
|
end
|
16
21
|
|
17
|
-
def
|
22
|
+
def wrap_block(name)
|
18
23
|
with_hooks(name) { yield }.join.html_safe
|
19
24
|
end
|
20
25
|
end
|
@@ -299,7 +304,7 @@ module Olelo
|
|
299
304
|
if block_given? || content
|
300
305
|
define_block(:footer, content, &block)
|
301
306
|
else
|
302
|
-
|
307
|
+
render_block(:footer)
|
303
308
|
end
|
304
309
|
end
|
305
310
|
|
@@ -307,7 +312,7 @@ module Olelo
|
|
307
312
|
if block_given? || content
|
308
313
|
define_block(:title, content, &block)
|
309
314
|
else
|
310
|
-
|
315
|
+
render_block(:title)
|
311
316
|
end
|
312
317
|
end
|
313
318
|
|
data/lib/olelo/initializer.rb
CHANGED
@@ -23,26 +23,23 @@ module Olelo
|
|
23
23
|
|
24
24
|
def init_locale
|
25
25
|
Locale.locale = Config['locale']
|
26
|
-
Locale.
|
26
|
+
Locale.add(YAML.load_file(File.join(File.dirname(__FILE__), 'locale.yml')))
|
27
27
|
end
|
28
28
|
|
29
29
|
def init_templates
|
30
30
|
Templates.enable_caching if Config['production']
|
31
|
-
Templates.loader =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
def load(name)
|
37
|
-
VirtualFS::Union.new(Plugin.caller.first.try(:virtual_fs),
|
38
|
-
VirtualFS::Native.new(Config['views_path'])).read(name)
|
39
|
-
end
|
40
|
-
end.new
|
31
|
+
Templates.loader = proc do |name|
|
32
|
+
VirtualFS::Union.new(VirtualFS::Native.new(File.join(File.dirname(__FILE__), 'views')),
|
33
|
+
*Plugin.loaded.map(&:virtual_fs)).read(name)
|
34
|
+
end
|
41
35
|
end
|
42
36
|
|
43
37
|
def init_plugins
|
44
|
-
# Load
|
45
|
-
Plugin.after(:load)
|
38
|
+
# Load locale provided by plugin
|
39
|
+
Plugin.after(:load) do
|
40
|
+
locale = virtual_fs.read('locale.yml') rescue nil
|
41
|
+
Locale.add(YAML.load(locale)) if locale
|
42
|
+
end
|
46
43
|
|
47
44
|
# Configure plugin system
|
48
45
|
Plugin.disabled = Config['disabled_plugins'].to_a
|
data/lib/olelo/locale.rb
CHANGED
@@ -3,27 +3,22 @@ module Olelo
|
|
3
3
|
module Locale
|
4
4
|
@locale = nil
|
5
5
|
@translations = Hash.with_indifferent_access
|
6
|
-
@loaded = []
|
7
6
|
|
8
7
|
class << self
|
9
8
|
attr_accessor :locale
|
10
9
|
|
11
|
-
#
|
10
|
+
# Add locale hash
|
12
11
|
#
|
13
|
-
# A locale is a
|
12
|
+
# A locale is a hash which maps
|
14
13
|
# keys to strings.
|
15
14
|
#
|
16
|
-
# @param [
|
15
|
+
# @param [Hash] Locale hash
|
17
16
|
# @return [void]
|
18
17
|
#
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
@translations.update(locale[@locale] || {})
|
24
|
-
@translations.each_value(&:freeze)
|
25
|
-
@loaded << file
|
26
|
-
end
|
18
|
+
def add(locale)
|
19
|
+
@translations.update(locale[$1] || {}) if @locale =~ /^(\w+)(_|-)/
|
20
|
+
@translations.update(locale[@locale] || {})
|
21
|
+
@translations.each_value(&:freeze)
|
27
22
|
end
|
28
23
|
|
29
24
|
# Return translated string for key
|
data/lib/olelo/locale.yml
CHANGED
@@ -7,19 +7,14 @@ cs_CZ:
|
|
7
7
|
attribute_title: 'Titulek'
|
8
8
|
attributes: 'Atributy'
|
9
9
|
attributes_edited: 'Atributy stránky %{page} editovány'
|
10
|
-
author: 'Autor'
|
11
10
|
binary_file: 'Binární soubor'
|
12
11
|
cancel: 'Zrušit'
|
13
12
|
change_password: 'Změnit heslo'
|
14
|
-
changes: 'Změny'
|
15
|
-
changes_of: 'Změny stránky %{page}'
|
16
13
|
changes_saved: 'Změny uloženy'
|
17
14
|
comment: 'Komentář'
|
18
|
-
compare: 'Porovnat %{name}'
|
19
15
|
confirm_password: 'Potvrdit heslo'
|
20
16
|
create_page: 'Vytvořit stránku %{page}'
|
21
17
|
create_redirect: 'Vytvořit přesměrování'
|
22
|
-
date: 'Datum'
|
23
18
|
delete: 'Smazat'
|
24
19
|
delete_page: 'Smazat stránku %{page}'
|
25
20
|
deleted: 'Smazáno'
|
@@ -35,7 +30,6 @@ cs_CZ:
|
|
35
30
|
groups: 'Skupiny'
|
36
31
|
head: 'Nejnovější'
|
37
32
|
history: 'Historie'
|
38
|
-
history_of: 'Historie stránky %{page}'
|
39
33
|
info_binary: 'Stránka %{page} je binární typ %{type} a nemůže být editována jako textový soubor.'
|
40
34
|
invalid_email: 'e-mail je neplatný'
|
41
35
|
invalid_mime_type: 'mime-type je neplatný'
|
@@ -48,10 +42,6 @@ cs_CZ:
|
|
48
42
|
menu_actions_edit_delete: 'Smazat'
|
49
43
|
menu_actions_edit_move: 'Přesunout'
|
50
44
|
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
45
|
menu_actions_view: 'Zobrazit'
|
56
46
|
move: 'Přesunout'
|
57
47
|
move_page: 'Přesunout stránku %{page}'
|
@@ -66,10 +56,10 @@ cs_CZ:
|
|
66
56
|
not_found_title: '404 Not found'
|
67
57
|
page_moved: 'Stránka %{page} přesunuta do %{destination}.'
|
68
58
|
page_uploaded: 'Stránka %{page} nahrána'
|
69
|
-
parents: 'Rodiče'
|
70
59
|
password: 'Heslo'
|
71
60
|
passwords_do_not_match: 'Hesla se neshodují'
|
72
61
|
path: 'Cesta'
|
62
|
+
powered_by: 'Powered by <a href="https://github.com/minad/olelo">Ōlelo</a>'
|
73
63
|
profile_title: 'Profil uživatele %{user}'
|
74
64
|
really_delete: 'Opravdu smazat?'
|
75
65
|
reserved_path: 'Cesta je rezervována'
|
@@ -104,19 +94,14 @@ de:
|
|
104
94
|
attribute_title: 'Titel'
|
105
95
|
attributes: 'Attribute'
|
106
96
|
attributes_edited: 'Attribute von %{page} bearbeitet'
|
107
|
-
author: 'Autor'
|
108
97
|
binary_file: 'Binärdatei'
|
109
98
|
cancel: 'Abbrechen'
|
110
99
|
change_password: 'Passwort ändern'
|
111
|
-
changes: 'Änderungen'
|
112
|
-
changes_of: 'Änderungen von %{page}'
|
113
100
|
changes_saved: 'Änderungen gespeichert'
|
114
101
|
comment: 'Kommentar'
|
115
|
-
compare: 'Vergleiche %{name}'
|
116
102
|
confirm_password: 'Bestätige Passwort'
|
117
103
|
create_page: 'Neue %{page}'
|
118
104
|
create_redirect: 'Weiterleitung'
|
119
|
-
date: 'Datum'
|
120
105
|
delete: 'Löschen'
|
121
106
|
delete_page: 'Lösche %{page}'
|
122
107
|
deleted: 'Gelöscht'
|
@@ -132,7 +117,6 @@ de:
|
|
132
117
|
groups: 'Gruppen'
|
133
118
|
head: 'Kopf'
|
134
119
|
history: 'Historie'
|
135
|
-
history_of: 'Historie von %{page}'
|
136
120
|
info_binary: '%{page} ist eine Datei mit dem Typ %{type} und kann nicht wie eine Textdatei bearbeitet werden.'
|
137
121
|
invalid_email: 'E-Mail ist ungültig'
|
138
122
|
invalid_mime_type: 'Mime-Typ ist ungültig'
|
@@ -145,9 +129,6 @@ de:
|
|
145
129
|
menu_actions_edit_delete: 'Löschen'
|
146
130
|
menu_actions_edit_move: 'Verschieben'
|
147
131
|
menu_actions_edit_new: 'Neue Seite'
|
148
|
-
menu_actions_history: 'Historie'
|
149
|
-
menu_actions_history_newer: 'Neuer'
|
150
|
-
menu_actions_history_older: 'Älter'
|
151
132
|
menu_actions_view: 'Ansicht'
|
152
133
|
move: 'Verschieben'
|
153
134
|
move_page: 'Verschiebe %{page}'
|
@@ -162,7 +143,6 @@ de:
|
|
162
143
|
page_edited: '%{page} bearbeitet'
|
163
144
|
page_moved: '%{page} verschoben nach %{destination}.'
|
164
145
|
page_uploaded: 'Seite %{page} hochgeladen'
|
165
|
-
parents: 'Eltern'
|
166
146
|
password: 'Passwort'
|
167
147
|
passwords_do_not_match: 'Passwörter stimmen nicht überein'
|
168
148
|
path: 'Pfad'
|
@@ -201,19 +181,14 @@ en:
|
|
201
181
|
attribute_title: 'Title'
|
202
182
|
attributes: 'Attributes'
|
203
183
|
attributes_edited: 'Attributes of %{page} edited'
|
204
|
-
author: 'Author'
|
205
184
|
binary_file: 'Binary file'
|
206
185
|
cancel: 'Cancel'
|
207
186
|
change_password: 'Change password'
|
208
|
-
changes: 'Changes'
|
209
|
-
changes_of: 'Changes of %{page}'
|
210
187
|
changes_saved: 'Changes saved'
|
211
188
|
comment: 'Comment'
|
212
|
-
compare: 'Compare %{name}: %{from} → %{to}'
|
213
189
|
confirm_password: 'Confirm password'
|
214
190
|
create_page: 'Create %{page}'
|
215
191
|
create_redirect: 'Create redirect'
|
216
|
-
date: 'Date'
|
217
192
|
delete: 'Delete'
|
218
193
|
delete_page: 'Delete %{page}'
|
219
194
|
deleted: 'Deleted'
|
@@ -229,7 +204,6 @@ en:
|
|
229
204
|
groups: 'Groups'
|
230
205
|
head: 'Head'
|
231
206
|
history: 'History'
|
232
|
-
history_of: 'History of %{page}'
|
233
207
|
info_binary: '%{page} is a binary %{type} and cannot be edited like a text file.'
|
234
208
|
invalid_email: 'E-Mail is invalid'
|
235
209
|
invalid_mime_type: 'Invalid mime type'
|
@@ -252,7 +226,6 @@ en:
|
|
252
226
|
page_edited: '%{page} edited'
|
253
227
|
page_moved: '%{page} moved to %{destination}.'
|
254
228
|
page_uploaded: 'Page %{page} uploaded'
|
255
|
-
parents: 'Parents'
|
256
229
|
password: 'Password'
|
257
230
|
passwords_do_not_match: 'Passwords do not match'
|
258
231
|
path: 'Path'
|
@@ -291,19 +264,14 @@ fr:
|
|
291
264
|
attribute_title: "Titre"
|
292
265
|
attributes: "Attributs"
|
293
266
|
attributes_edited: "Attributs de %{page} modifiés"
|
294
|
-
author: "Auteur"
|
295
267
|
binary_file: "Fichier binaire"
|
296
268
|
cancel: "Cancel"
|
297
269
|
change_password: "Changer de mot de passe"
|
298
|
-
changes: "Changement"
|
299
|
-
changes_of: "Chamgements de %{page}"
|
300
270
|
changes_saved: "Changement enregistrés"
|
301
271
|
comment: "Commentaire"
|
302
|
-
compare: "Comparer %{name}"
|
303
272
|
confirm_password: "Confirmer le mot de passe"
|
304
273
|
create_page: "Créer %{page}"
|
305
274
|
create_redirect: "Créer une redirection"
|
306
|
-
date: "Date"
|
307
275
|
delete: "Effacer"
|
308
276
|
delete_page: "Effacer %{page}"
|
309
277
|
deleted: "Supprimé"
|
@@ -319,7 +287,6 @@ fr:
|
|
319
287
|
groups: "Groupes"
|
320
288
|
head: "Tête"
|
321
289
|
history: "Historique"
|
322
|
-
history_of: "Historique de %{page}"
|
323
290
|
info_binary: "%{page} est un binaire %{type} et ne peut pas être édité comme un fichier texte."
|
324
291
|
invalid_email: "Courriel invalide"
|
325
292
|
invalid_mime_type: "Type MIME invalide"
|
@@ -333,7 +300,6 @@ fr:
|
|
333
300
|
move_page: "Déplacer %{page}"
|
334
301
|
name: "Nom"
|
335
302
|
new_page: "Nouvelle page"
|
336
|
-
newer: "Plus récent"
|
337
303
|
no_changes: "Aucun changement"
|
338
304
|
not_found_text: "Désolé, la page que vous recherchez n'a pas été trouvée."
|
339
305
|
not_found_title: '404 Non trouvé'
|
@@ -343,7 +309,6 @@ fr:
|
|
343
309
|
page_edited: "%{page} éditée"
|
344
310
|
page_moved: "%{page} déplacer vers %{destination}."
|
345
311
|
page_uploaded: "Page %{page} téléversé"
|
346
|
-
parents: "Parents"
|
347
312
|
password: "Mot de passe"
|
348
313
|
passwords_do_not_match: "Les mots de passe ne correspondent pas"
|
349
314
|
path: "Chemin"
|