diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-25 15:39:17 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-25 15:39:17 +0200 |
| commit | b7dee77cd1dd6f70e3bfa55df8b61681e9db321e (patch) | |
| tree | c621c76a1e4bc96f16473d26ca239fbf83a0caff | |
| parent | 78cd4957c4ca5bd05d93af6061487db095d04ee5 (diff) | |
Extract admin strings to i18n: dashboard, layout chrome, and the JS bridge
| -rw-r--r-- | app/views/admin/_drafts.html.erb | 16 | ||||
| -rw-r--r-- | app/views/admin/_menu.html.erb | 6 | ||||
| -rw-r--r-- | app/views/admin/conventions.html.erb | 4 | ||||
| -rw-r--r-- | app/views/admin/index.html.erb | 36 | ||||
| -rw-r--r-- | app/views/admin/search_results.html.erb | 2 | ||||
| -rw-r--r-- | app/views/layouts/_flash.html.erb | 17 | ||||
| -rw-r--r-- | app/views/layouts/admin.html.erb | 9 | ||||
| -rw-r--r-- | config/locales/de.yml | 111 | ||||
| -rw-r--r-- | config/locales/en.yml | 109 | ||||
| -rw-r--r-- | public/javascripts/admin_interface.js | 10 |
10 files changed, 208 insertions, 112 deletions
diff --git a/app/views/admin/_drafts.html.erb b/app/views/admin/_drafts.html.erb index 4ef568f8..bfdc00a4 100644 --- a/app/views/admin/_drafts.html.erb +++ b/app/views/admin/_drafts.html.erb | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | <h2>Drafts (<%= @drafts.size %>)</h2> | 1 | <h2><%= t(".title", :size => @drafts.size) %></h2> |
| 2 | <div id="draft_list"> | 2 | <div id="draft_list"> |
| 3 | <table> | 3 | <table> |
| 4 | <tr class="header"> | 4 | <tr class="header"> |
| 5 | <th>ID</th> | 5 | <th><%= t("admin.columns.id") %></th> |
| 6 | <th>Title</th> | 6 | <th><%= t("admin.columns.title") %></th> |
| 7 | <th>Path</th> | 7 | <th><%= t("admin.columns.path") %></th> |
| 8 | <th>author</th> | 8 | <th><%= t("admin.columns.author") %></th> |
| 9 | <th></th> | 9 | <th></th> |
| 10 | </tr> | 10 | </tr> |
| 11 | <% @drafts.each do |draft| %> | 11 | <% @drafts.each do |draft| %> |
| @@ -15,9 +15,9 @@ | |||
| 15 | <td><%= draft.node.unique_name %></td> | 15 | <td><%= draft.node.unique_name %></td> |
| 16 | <td><%= draft.user.login rescue "" %></td> | 16 | <td><%= draft.user.login rescue "" %></td> |
| 17 | <td class="actions"> | 17 | <td class="actions"> |
| 18 | <%= link_to 'Show', node_path(draft.node) %> | 18 | <%= link_to t("admin.common.show"), node_path(draft.node) %> |
| 19 | <%= link_to "Revisions", revision_path(draft.node.id) %> | 19 | <%= link_to t(".revisions"), revision_path(draft.node.id) %> |
| 20 | <%= button_to "Publish", publish_node_path(draft.node), method: :put, form: { data: { confirm: "Do you really want to publish?" }, class: 'button_to state_changing' } %> | 20 | <%= button_to t("nodes.show.publish"), publish_node_path(draft.node), method: :put, form: { data: { confirm: t("nodes.show.confirm_publish") }, class: 'button_to state_changing' } %> |
| 21 | </td> | 21 | </td> |
| 22 | </tr> | 22 | </tr> |
| 23 | <% end %> | 23 | <% end %> |
diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb index 7270df49..b0e310e9 100644 --- a/app/views/admin/_menu.html.erb +++ b/app/views/admin/_menu.html.erb | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | <%= link_to icon("home", library: "tabler", "aria-hidden": true), admin_path, "aria-label": "Dashboard", title: "Dashboard" %> | 1 | <%= link_to icon("home", library: "tabler", "aria-hidden": true), admin_path, "aria-label": t(".dashboard"), title: t(".dashboard") %> |
| 2 | <a href="#" onclick="admin_search.display_toggle(); return false;" aria-label="Search" title="Search"><%= icon("search", library: "tabler", "aria-hidden": true) %></a> | 2 | <a href="#" onclick="admin_search.display_toggle(); return false;" aria-label="<%= t(".search") %>" title="<%= t(".search") %>"><%= icon("search", library: "tabler", "aria-hidden": true) %></a> |
| 3 | <%= button_to logout_path, method: :delete, aria: { label: "Log out" }, title: "Log out" do %> | 3 | <%= button_to logout_path, method: :delete, aria: { label: t(".log_out") }, title: t(".log_out") do %> |
| 4 | <%= icon("logout", library: "tabler", "aria-hidden": true) %> | 4 | <%= icon("logout", library: "tabler", "aria-hidden": true) %> |
| 5 | <% end %> | 5 | <% end %> |
diff --git a/app/views/admin/conventions.html.erb b/app/views/admin/conventions.html.erb index 72f6214a..434c2e9c 100644 --- a/app/views/admin/conventions.html.erb +++ b/app/views/admin/conventions.html.erb | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | <h1>Node creation conventions</h1> | 1 | <h1><%= t(".title") %></h1> |
| 2 | 2 | ||
| 3 | <table id="conventions"> | 3 | <table id="conventions"> |
| 4 | <tr><th>Kind</th><th>What happens</th></tr> | 4 | <tr><th><%= t(".kind") %></th><th><%= t(".what_happens") %></th></tr> |
| 5 | <% @node_kinds.each do |kind, config| %> | 5 | <% @node_kinds.each do |kind, config| %> |
| 6 | <tr> | 6 | <tr> |
| 7 | <td><%= kind %></td> | 7 | <td><%= kind %></td> |
diff --git a/app/views/admin/index.html.erb b/app/views/admin/index.html.erb index 4d67dd77..25bdbdc6 100644 --- a/app/views/admin/index.html.erb +++ b/app/views/admin/index.html.erb | |||
| @@ -1,29 +1,29 @@ | |||
| 1 | <h1>cccms dashboard</h1> | 1 | <h1><%= t(".title") %></h1> |
| 2 | <div id="dashboard_search"> | 2 | <div id="dashboard_search"> |
| 3 | <%= form_tag admin_search_path, method: :get do %> | 3 | <%= form_tag admin_search_path, method: :get do %> |
| 4 | <%= text_field_tag :search_term, nil, id: "dashboard_search_term", placeholder: "Search nodes and tags…", autocomplete: "off" %> | 4 | <%= text_field_tag :search_term, nil, id: "dashboard_search_term", placeholder: t(".search_placeholder"), autocomplete: "off" %> |
| 5 | <% end %> | 5 | <% end %> |
| 6 | <div id="dashboard_search_results" class="search_results"></div> | 6 | <div id="dashboard_search_results" class="search_results"></div> |
| 7 | </div> | 7 | </div> |
| 8 | 8 | ||
| 9 | <div id="dashboard_signposts" class="button_row"> | 9 | <div id="dashboard_signposts" class="button_row"> |
| 10 | <%= link_to new_node_path, class: "action_button" do %> | 10 | <%= link_to new_node_path, class: "action_button" do %> |
| 11 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> Create post | 11 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> <%= t(".create_post") %> |
| 12 | <% end %> | 12 | <% end %> |
| 13 | <%= link_to chapters_nodes_path, class: "action_button" do %> | 13 | <%= link_to chapters_nodes_path, class: "action_button" do %> |
| 14 | <%= icon("map-pin", library: "tabler", "aria-hidden": true) %> Find a chapter | 14 | <%= icon("map-pin", library: "tabler", "aria-hidden": true) %> <%= t(".find_chapter") %> |
| 15 | <% end %> | 15 | <% end %> |
| 16 | <%= link_to new_asset_path, class: "action_button" do %> | 16 | <%= link_to new_asset_path, class: "action_button" do %> |
| 17 | <%= icon("upload", library: "tabler", "aria-hidden": true) %> Upload asset | 17 | <%= icon("upload", library: "tabler", "aria-hidden": true) %> <%= t(".upload_asset") %> |
| 18 | <% end %> | 18 | <% end %> |
| 19 | <%= link_to sitemap_nodes_path, class: "action_button" do %> | 19 | <%= link_to sitemap_nodes_path, class: "action_button" do %> |
| 20 | <%= icon("list-tree", library: "tabler", "aria-hidden": true) %> Add a page in the page tree | 20 | <%= icon("list-tree", library: "tabler", "aria-hidden": true) %> <%= t(".add_in_tree") %> |
| 21 | <% end %> | 21 | <% end %> |
| 22 | </div> | 22 | </div> |
| 23 | 23 | ||
| 24 | <div id="dashboard_widgets"> | 24 | <div id="dashboard_widgets"> |
| 25 | <div class="dashboard_widget"> | 25 | <div class="dashboard_widget"> |
| 26 | <h3>Drafts and autosaves</h3> | 26 | <h3><%= t(".drafts_widget") %></h3> |
| 27 | <ul> | 27 | <ul> |
| 28 | <% @drafts.each do |node| %> | 28 | <% @drafts.each do |node| %> |
| 29 | <li> | 29 | <li> |
| @@ -37,43 +37,43 @@ | |||
| 37 | </li> | 37 | </li> |
| 38 | <% end %> | 38 | <% end %> |
| 39 | </ul> | 39 | </ul> |
| 40 | <%= link_to "See all drafts →", drafts_nodes_path %> | 40 | <%= link_to t(".see_all_drafts"), drafts_nodes_path %> |
| 41 | </div> | 41 | </div> |
| 42 | 42 | ||
| 43 | <div class="dashboard_widget"> | 43 | <div class="dashboard_widget"> |
| 44 | <h3>Recent changes</h3> | 44 | <h3><%= t("node_actions.heading") %></h3> |
| 45 | <table id="node_action_list"> | 45 | <table id="node_action_list"> |
| 46 | <%= render partial: "node_actions/action_row", collection: @actions, as: :action %> | 46 | <%= render partial: "node_actions/action_row", collection: @actions, as: :action %> |
| 47 | </table> | 47 | </table> |
| 48 | <%= link_to "See all recent changes →", admin_log_path %> | 48 | <%= link_to t(".see_all_changes"), admin_log_path %> |
| 49 | </div> | 49 | </div> |
| 50 | 50 | ||
| 51 | </div> | 51 | </div> |
| 52 | 52 | ||
| 53 | <div id="dashboard_housekeeping"> | 53 | <div id="dashboard_housekeeping"> |
| 54 | <h3>Housekeeping</h3> | 54 | <h3><%= t(".housekeeping") %></h3> |
| 55 | <div class="button_row"> | 55 | <div class="button_row"> |
| 56 | <%= link_to edit_user_path(current_user), class: "action_button" do %> | 56 | <%= link_to edit_user_path(current_user), class: "action_button" do %> |
| 57 | <%= icon("user-cog", library: "tabler", "aria-hidden": true) %> My account | 57 | <%= icon("user-cog", library: "tabler", "aria-hidden": true) %> <%= t(".my_account") %> |
| 58 | <% end %> | 58 | <% end %> |
| 59 | <%= link_to nodes_path, class: "action_button" do %> | 59 | <%= link_to nodes_path, class: "action_button" do %> |
| 60 | <%= icon("list", library: "tabler", "aria-hidden": true) %> Nodes | 60 | <%= icon("list", library: "tabler", "aria-hidden": true) %> <%= t("nodes.index.title") %> |
| 61 | <% end %> | 61 | <% end %> |
| 62 | <%= link_to events_path, class: "action_button" do %> | 62 | <%= link_to events_path, class: "action_button" do %> |
| 63 | <%= icon("calendar", library: "tabler", "aria-hidden": true) %> Events | 63 | <%= icon("calendar", library: "tabler", "aria-hidden": true) %> <%= t("events.index.title") %> |
| 64 | <% end %> | 64 | <% end %> |
| 65 | <%= link_to assets_path, class: "action_button" do %> | 65 | <%= link_to assets_path, class: "action_button" do %> |
| 66 | <%= icon("folder", library: "tabler", "aria-hidden": true) %> Assets | 66 | <%= icon("folder", library: "tabler", "aria-hidden": true) %> <%= t("assets.index.title") %> |
| 67 | <% end %> | 67 | <% end %> |
| 68 | <%= link_to users_path, class: "action_button" do %> | 68 | <%= link_to users_path, class: "action_button" do %> |
| 69 | <%= icon("users", library: "tabler", "aria-hidden": true) %> Users | 69 | <%= icon("users", library: "tabler", "aria-hidden": true) %> <%= t("users.index.users") %> |
| 70 | <% end %> | 70 | <% end %> |
| 71 | <%= link_to menu_items_path, class: "action_button" do %> | 71 | <%= link_to menu_items_path, class: "action_button" do %> |
| 72 | <%= icon("menu-2", library: "tabler", "aria-hidden": true) %> Navigation | 72 | <%= icon("menu-2", library: "tabler", "aria-hidden": true) %> <%= t(".navigation") %> |
| 73 | <% end %> | 73 | <% end %> |
| 74 | <% trash_count = Node.trash.children.count %> | 74 | <% trash_count = Node.trash.children.count %> |
| 75 | <%= link_to trashed_nodes_path, class: "action_button" do %> | 75 | <%= link_to trashed_nodes_path, class: "action_button" do %> |
| 76 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> Trash<%= " (#{trash_count})" if trash_count > 0 %> | 76 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> <%= t("nodes.trashed.title") %><%= " (#{trash_count})" if trash_count > 0 %> |
| 77 | <% end %> | 77 | <% end %> |
| 78 | </div> | 78 | </div> |
| 79 | </div> | 79 | </div> |
diff --git a/app/views/admin/search_results.html.erb b/app/views/admin/search_results.html.erb index a7571977..e3802a03 100644 --- a/app/views/admin/search_results.html.erb +++ b/app/views/admin/search_results.html.erb | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | <h1>Search Results</h1> | 1 | <h1><%= t(".title") %></h1> |
| 2 | 2 | ||
| 3 | <ul class="search_results_list"> | 3 | <ul class="search_results_list"> |
| 4 | <% @results.each do |result| %> | 4 | <% @results.each do |result| %> |
diff --git a/app/views/layouts/_flash.html.erb b/app/views/layouts/_flash.html.erb index a67fc866..b72c377f 100644 --- a/app/views/layouts/_flash.html.erb +++ b/app/views/layouts/_flash.html.erb | |||
| @@ -2,20 +2,21 @@ | |||
| 2 | <div id="flash"> | 2 | <div id="flash"> |
| 3 | <%= flash[:notice] %> | 3 | <%= flash[:notice] %> |
| 4 | <% if flash[:status_path] %> | 4 | <% if flash[:status_path] %> |
| 5 | <%= link_to 'Go to Status', flash[:status_path] %> | 5 | <%= link_to t(".go_to_status"), flash[:status_path] %> |
| 6 | <% end %> | 6 | <% end %> |
| 7 | <% if flash[:stale_locale_path] %> | 7 | <% if flash[:stale_locale_path] %> |
| 8 | The <%= flash[:stale_locale] %> translation may be out of date — | 8 | <%= t(".stale_prefix", :lang => flash[:stale_locale]) %> |
| 9 | <%= link_to 'review it', flash[:stale_locale_path] %> too. | 9 | <%= link_to t(".stale_link"), flash[:stale_locale_path] %><%= t(".stale_suffix") %> |
| 10 | <% end %> | 10 | <% end %> |
| 11 | <% if flash[:locked_node_path] %> | 11 | <% if flash[:locked_node_path] %> |
| 12 | <span class="warning">The page is locked by <%= flash[:locked_by] %> — | 12 | <span class="warning"><%= t(".locked_prefix", :login => flash[:locked_by]) %> |
| 13 | <%= link_to 'unlock it there', flash[:locked_node_path] %> first, | 13 | <%= link_to t(".locked_link"), flash[:locked_node_path] %><%= t(".locked_suffix") %> |
| 14 | then attach from this asset's page.</span> | 14 | </span> |
| 15 | <% end %> | 15 | <% end %> |
| 16 | <% if flash[:headline_kept_path] %> | 16 | <% if flash[:headline_kept_path] %> |
| 17 | <span class="warning">The page's existing headline was kept — | 17 | <span class="warning"><%= t(".headline_prefix") %> |
| 18 | <%= link_to 'change it there', flash[:headline_kept_path] %> if needed.</span> | 18 | <%= link_to t(".headline_link"), flash[:headline_kept_path] %><%= t(".headline_suffix") %> |
| 19 | </span> | ||
| 19 | <% end %> | 20 | <% end %> |
| 20 | <% if flash[:error] %> | 21 | <% if flash[:error] %> |
| 21 | <span id="flash_error"><%= flash[:error] %></span> | 22 | <span id="flash_error"><%= flash[:error] %></span> |
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index 89c9b550..e056489f 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb | |||
| @@ -10,15 +10,16 @@ | |||
| 10 | <%= javascript_include_tag 'admin_bundle' %> | 10 | <%= javascript_include_tag 'admin_bundle' %> |
| 11 | <%= tinymce_assets %> | 11 | <%= tinymce_assets %> |
| 12 | <link rel="stylesheet" href="<%= mtime_busted_path('/stylesheets/admin.css') %>"> | 12 | <link rel="stylesheet" href="<%= mtime_busted_path('/stylesheets/admin.css') %>"> |
| 13 | <script src="<%= mtime_busted_path('/javascripts/admin_search.js') %>"></script> | ||
| 14 | <script src="<%= mtime_busted_path('/javascripts/admin_interface.js') %>"></script> | ||
| 15 | <script src="<%= mtime_busted_path('/javascripts/related_assets.js') %>"></script> | ||
| 16 | <%= javascript_tag nonce: true do %> | 13 | <%= javascript_tag nonce: true do %> |
| 17 | var ADMIN_SEARCH_URL = "<%= admin_search_path %>"; | 14 | var ADMIN_SEARCH_URL = "<%= admin_search_path %>"; |
| 18 | var ADMIN_MENU_SEARCH_URL = "<%= admin_menu_search_path %>"; | 15 | var ADMIN_MENU_SEARCH_URL = "<%= admin_menu_search_path %>"; |
| 16 | var ADMIN_STRINGS = <%= raw({ :lock_lost_prefix => t(".lock_lost_prefix"), :lock_lost_link => t(".lock_lost_link"), :insert_image => t(".insert_image"), :insert_image_tooltip => t(".insert_image_tooltip") }.to_json) %>; | ||
| 19 | var PARAMETERIZE_PREVIEW_URL = "<%= parameterize_preview_nodes_path %>"; | 17 | var PARAMETERIZE_PREVIEW_URL = "<%= parameterize_preview_nodes_path %>"; |
| 20 | var DASHBOARD_SEARCH_URL = "<%= admin_dashboard_search_path %>"; | 18 | var DASHBOARD_SEARCH_URL = "<%= admin_dashboard_search_path %>"; |
| 21 | <% end %> | 19 | <% end %> |
| 20 | <script src="<%= mtime_busted_path('/javascripts/admin_search.js') %>"></script> | ||
| 21 | <script src="<%= mtime_busted_path('/javascripts/admin_interface.js') %>"></script> | ||
| 22 | <script src="<%= mtime_busted_path('/javascripts/related_assets.js') %>"></script> | ||
| 22 | </head> | 23 | </head> |
| 23 | 24 | ||
| 24 | <body> | 25 | <body> |
| @@ -30,7 +31,7 @@ | |||
| 30 | <div id="search_widget" style="display: none;"> | 31 | <div id="search_widget" style="display: none;"> |
| 31 | <div> | 32 | <div> |
| 32 | <%= form_tag admin_search_path, method: :get do %> | 33 | <%= form_tag admin_search_path, method: :get do %> |
| 33 | <%= text_field_tag :search_term, nil, placeholder: "Search nodes…", autocomplete: "off" %> | 34 | <%= text_field_tag :search_term, nil, placeholder: t(".search_placeholder"), autocomplete: "off" %> |
| 34 | <% end %> | 35 | <% end %> |
| 35 | </div> | 36 | </div> |
| 36 | <div id="menu_search_results" class="search_results" style="display: none"></div> | 37 | <div id="menu_search_results" class="search_results" style="display: none"></div> |
diff --git a/config/locales/de.yml b/config/locales/de.yml index e2b393ee..8a8a9a40 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml | |||
| @@ -247,7 +247,35 @@ de: | |||
| 247 | path: "Pfad" | 247 | path: "Pfad" |
| 248 | preview: "Vorschau" | 248 | preview: "Vorschau" |
| 249 | name: "Name" | 249 | name: "Name" |
| 250 | author: "Autor" | ||
| 250 | type: "Typ" | 251 | type: "Typ" |
| 252 | menu: | ||
| 253 | dashboard: "Dashboard" | ||
| 254 | search: "Suche" | ||
| 255 | log_out: "Abmelden" | ||
| 256 | index: | ||
| 257 | title: "cccms Dashboard" | ||
| 258 | search_placeholder: "Nodes und Tags durchsuchen…" | ||
| 259 | create_post: "Beitrag anlegen" | ||
| 260 | find_chapter: "Chapter finden" | ||
| 261 | upload_asset: "Asset hochladen" | ||
| 262 | add_in_tree: "Seite im Seitenbaum anlegen" | ||
| 263 | drafts_widget: "Entwürfe und Autosaves" | ||
| 264 | see_all_drafts: "Alle Entwürfe →" | ||
| 265 | see_all_changes: "Alle Änderungen →" | ||
| 266 | housekeeping: "Verwaltung" | ||
| 267 | my_account: "Mein Konto" | ||
| 268 | navigation: "Navigation" | ||
| 269 | drafts: | ||
| 270 | title: "Entwürfe (%{size})" | ||
| 271 | revisions: "Revisionen" | ||
| 272 | conventions: | ||
| 273 | title: "Konventionen beim Anlegen von Nodes" | ||
| 274 | kind: "Art" | ||
| 275 | what_happens: "Was passiert" | ||
| 276 | search_results: | ||
| 277 | title: "Suchergebnisse" | ||
| 278 | |||
| 251 | nodes: | 279 | nodes: |
| 252 | index: | 280 | index: |
| 253 | title: "Nodes" | 281 | title: "Nodes" |
| @@ -504,34 +532,55 @@ de: | |||
| 504 | none_to_remove: "Es existiert keine %{lang}-Übersetzung zum Entfernen." | 532 | none_to_remove: "Es existiert keine %{lang}-Übersetzung zum Entfernen." |
| 505 | last_translation: "Die einzige verbliebene Übersetzung kann nicht entfernt werden." | 533 | last_translation: "Die einzige verbliebene Übersetzung kann nicht entfernt werden." |
| 506 | removed: "%{lang}-Übersetzung aus dem Entwurf entfernt. Veröffentlichen, um das dauerhaft zu machen." | 534 | removed: "%{lang}-Übersetzung aus dem Entwurf entfernt. Veröffentlichen, um das dauerhaft zu machen." |
| 507 | assets: | 535 | |
| 508 | index: | 536 | assets: |
| 509 | title: "Assets" | 537 | index: |
| 510 | create_asset: "Asset anlegen" | 538 | title: "Assets" |
| 511 | show: | 539 | create_asset: "Asset anlegen" |
| 512 | thumbnail: "Vorschaubild" | 540 | show: |
| 513 | attached_to: "Angehängt an" | 541 | thumbnail: "Vorschaubild" |
| 514 | pending_only: "nur in ausstehenden Versionen" | 542 | attached_to: "Angehängt an" |
| 515 | not_attached: "— an keine Seite angehängt —" | 543 | pending_only: "nur in ausstehenden Versionen" |
| 516 | new_page_with_attachment: "Neue Seite mit diesem Anhang" | 544 | not_attached: "— an keine Seite angehängt —" |
| 517 | public_path: "Öffentlicher Pfad" | 545 | new_page_with_attachment: "Neue Seite mit diesem Anhang" |
| 518 | copy_url: "URL kopieren" | 546 | public_path: "Öffentlicher Pfad" |
| 519 | creator: "Urheber" | 547 | copy_url: "URL kopieren" |
| 520 | source: "Quelle" | 548 | creator: "Urheber" |
| 521 | license: "Lizenz" | 549 | source: "Quelle" |
| 522 | content_type: "Content-Type" | 550 | license: "Lizenz" |
| 523 | size: "Größe" | 551 | content_type: "Content-Type" |
| 524 | new: | 552 | size: "Größe" |
| 525 | title: "Neues Asset" | 553 | new: |
| 526 | edit: | 554 | title: "Neues Asset" |
| 527 | title: "Asset bearbeiten" | 555 | edit: |
| 528 | current_file: "Aktuelle Datei" | 556 | title: "Asset bearbeiten" |
| 529 | replace_file: "Datei ersetzen" | 557 | current_file: "Aktuelle Datei" |
| 530 | form: | 558 | replace_file: "Datei ersetzen" |
| 531 | drop_hint: "…oder Datei hier ablegen." | 559 | form: |
| 532 | none_option: "— keine —" | 560 | drop_hint: "…oder Datei hier ablegen." |
| 533 | attach_to_page: "an Seite anhängen" | 561 | none_option: "— keine —" |
| 534 | attach_search_placeholder: "Seite suchen…" | 562 | attach_to_page: "an Seite anhängen" |
| 535 | attach_hint: "Optional — hängt dieses Asset an die Seite an, alle ausstehenden Versionen eingeschlossen." | 563 | attach_search_placeholder: "Seite suchen…" |
| 536 | as_headline: "als Aufmacher der Seite anhängen" | 564 | attach_hint: "Optional — hängt dieses Asset an die Seite an, alle ausstehenden Versionen eingeschlossen." |
| 537 | headline_hint: "Gilt nur, wenn die Seite noch keinen Aufmacher hat." | 565 | as_headline: "als Aufmacher der Seite anhängen" |
| 566 | headline_hint: "Gilt nur, wenn die Seite noch keinen Aufmacher hat." | ||
| 567 | |||
| 568 | layouts: | ||
| 569 | flash: | ||
| 570 | go_to_status: "Zum Status" | ||
| 571 | stale_prefix: "Die %{lang}-Übersetzung ist womöglich veraltet —" | ||
| 572 | stale_link: "auch prüfen" | ||
| 573 | stale_suffix: "." | ||
| 574 | locked_prefix: "Die Seite ist von %{login} gesperrt —" | ||
| 575 | locked_link: "dort entsperren" | ||
| 576 | locked_suffix: ", dann von der Asset-Seite aus erneut anhängen." | ||
| 577 | headline_prefix: "Der bestehende Aufmacher der Seite wurde behalten —" | ||
| 578 | headline_link: "dort ändern" | ||
| 579 | headline_suffix: ", falls gewünscht." | ||
| 580 | admin: | ||
| 581 | search_placeholder: "Nodes durchsuchen…" | ||
| 582 | lock_lost_prefix: "Diese Seite ist jetzt von jemand anderem gesperrt — deine Änderungen hier können nicht mehr gespeichert werden. Kopiere, was du brauchst, dann " | ||
| 583 | lock_lost_link: "zurück zur veröffentlichten Seite" | ||
| 584 | insert_image: "Bild einfügen" | ||
| 585 | insert_image_tooltip: "Eines der angehängten Bilder dieser Seite einfügen" | ||
| 586 | |||
diff --git a/config/locales/en.yml b/config/locales/en.yml index 83ceadda..44b1615b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml | |||
| @@ -199,7 +199,34 @@ en: | |||
| 199 | path: "Path" | 199 | path: "Path" |
| 200 | preview: "Preview" | 200 | preview: "Preview" |
| 201 | name: "Name" | 201 | name: "Name" |
| 202 | author: "Author" | ||
| 202 | type: "Type" | 203 | type: "Type" |
| 204 | menu: | ||
| 205 | dashboard: "Dashboard" | ||
| 206 | search: "Search" | ||
| 207 | log_out: "Log out" | ||
| 208 | index: | ||
| 209 | title: "cccms dashboard" | ||
| 210 | search_placeholder: "Search nodes and tags…" | ||
| 211 | create_post: "Create post" | ||
| 212 | find_chapter: "Find a chapter" | ||
| 213 | upload_asset: "Upload asset" | ||
| 214 | add_in_tree: "Add a page in the page tree" | ||
| 215 | drafts_widget: "Drafts and autosaves" | ||
| 216 | see_all_drafts: "See all drafts →" | ||
| 217 | see_all_changes: "See all recent changes →" | ||
| 218 | housekeeping: "Housekeeping" | ||
| 219 | my_account: "My account" | ||
| 220 | navigation: "Navigation" | ||
| 221 | drafts: | ||
| 222 | title: "Drafts (%{size})" | ||
| 223 | revisions: "Revisions" | ||
| 224 | conventions: | ||
| 225 | title: "Node creation conventions" | ||
| 226 | kind: "Kind" | ||
| 227 | what_happens: "What happens" | ||
| 228 | search_results: | ||
| 229 | title: "Search Results" | ||
| 203 | nodes: | 230 | nodes: |
| 204 | index: | 231 | index: |
| 205 | title: "Nodes" | 232 | title: "Nodes" |
| @@ -456,34 +483,54 @@ en: | |||
| 456 | none_to_remove: "No %{lang} translation exists to remove." | 483 | none_to_remove: "No %{lang} translation exists to remove." |
| 457 | last_translation: "Can't remove the only remaining translation." | 484 | last_translation: "Can't remove the only remaining translation." |
| 458 | removed: "%{lang} translation removed from the draft. Publish to make this permanent." | 485 | removed: "%{lang} translation removed from the draft. Publish to make this permanent." |
| 459 | assets: | 486 | |
| 460 | index: | 487 | assets: |
| 461 | title: "Assets" | 488 | index: |
| 462 | create_asset: "Create asset" | 489 | title: "Assets" |
| 463 | show: | 490 | create_asset: "Create asset" |
| 464 | thumbnail: "Thumbnail" | 491 | show: |
| 465 | attached_to: "Attached to" | 492 | thumbnail: "Thumbnail" |
| 466 | pending_only: "pending versions only" | 493 | attached_to: "Attached to" |
| 467 | not_attached: "— not attached to any page —" | 494 | pending_only: "pending versions only" |
| 468 | new_page_with_attachment: "New page with this attachment" | 495 | not_attached: "— not attached to any page —" |
| 469 | public_path: "Public Path" | 496 | new_page_with_attachment: "New page with this attachment" |
| 470 | copy_url: "Copy URL" | 497 | public_path: "Public Path" |
| 471 | creator: "Creator" | 498 | copy_url: "Copy URL" |
| 472 | source: "Source" | 499 | creator: "Creator" |
| 473 | license: "License" | 500 | source: "Source" |
| 474 | content_type: "Content Type" | 501 | license: "License" |
| 475 | size: "Size" | 502 | content_type: "Content Type" |
| 476 | new: | 503 | size: "Size" |
| 477 | title: "New asset" | 504 | new: |
| 478 | edit: | 505 | title: "New asset" |
| 479 | title: "Editing asset" | 506 | edit: |
| 480 | current_file: "Current File" | 507 | title: "Editing asset" |
| 481 | replace_file: "Replace file" | 508 | current_file: "Current File" |
| 482 | form: | 509 | replace_file: "Replace file" |
| 483 | drop_hint: "…or drop a file here." | 510 | form: |
| 484 | none_option: "— none —" | 511 | drop_hint: "…or drop a file here." |
| 485 | attach_to_page: "attach to page" | 512 | none_option: "— none —" |
| 486 | attach_search_placeholder: "Search for a page…" | 513 | attach_to_page: "attach to page" |
| 487 | attach_hint: "Optional — attaches this asset to that page, all pending versions included." | 514 | attach_search_placeholder: "Search for a page…" |
| 488 | as_headline: "attach as the page's headline" | 515 | attach_hint: "Optional — attaches this asset to that page, all pending versions included." |
| 489 | headline_hint: "Applies only if the page has no headline yet." | 516 | as_headline: "attach as the page's headline" |
| 517 | headline_hint: "Applies only if the page has no headline yet." | ||
| 518 | |||
| 519 | layouts: | ||
| 520 | flash: | ||
| 521 | go_to_status: "Go to Status" | ||
| 522 | stale_prefix: "The %{lang} translation may be out of date —" | ||
| 523 | stale_link: "review it" | ||
| 524 | stale_suffix: " too." | ||
| 525 | locked_prefix: "The page is locked by %{login} —" | ||
| 526 | locked_link: "unlock it there" | ||
| 527 | locked_suffix: " first, then attach from this asset's page." | ||
| 528 | headline_prefix: "The page's existing headline was kept —" | ||
| 529 | headline_link: "change it there" | ||
| 530 | headline_suffix: " if needed." | ||
| 531 | admin: | ||
| 532 | search_placeholder: "Search nodes…" | ||
| 533 | lock_lost_prefix: "This page is now locked by someone else — your changes here can no longer be saved. Copy anything you need, then " | ||
| 534 | lock_lost_link: "return to the published page" | ||
| 535 | insert_image: "Insert image" | ||
| 536 | insert_image_tooltip: "Insert one of this page's attached images" | ||
diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 984eec05..ee0b34cd 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js | |||
| @@ -24,8 +24,8 @@ $(document).ready(function () { | |||
| 24 | 24 | ||
| 25 | editor.ui.registry.addButton('insertpageimage', { | 25 | editor.ui.registry.addButton('insertpageimage', { |
| 26 | icon: 'image', | 26 | icon: 'image', |
| 27 | text: 'Insert image', | 27 | text: ADMIN_STRINGS.insert_image, |
| 28 | tooltip: "Insert one of this page's attached images", | 28 | tooltip: ADMIN_STRINGS.insert_image_tooltip, |
| 29 | onAction: function() { | 29 | onAction: function() { |
| 30 | cccms.inline_images.open(editor); | 30 | cccms.inline_images.open(editor); |
| 31 | } | 31 | } |
| @@ -231,10 +231,8 @@ cccms = { | |||
| 231 | $flash = $("<div>", { id: "flash" }).insertAfter(".admin_content_spacer"); | 231 | $flash = $("<div>", { id: "flash" }).insertAfter(".admin_content_spacer"); |
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | var $banner = $("<span>", { "class": "warning" }).text( | 234 | var $banner = $("<span>", { "class": "warning" }).text(ADMIN_STRINGS.lock_lost_prefix); |
| 235 | "This page is now locked by someone else — your changes here can no longer be saved. Copy anything you need, then " | 235 | $banner.append($("<a>", { href: show_url }).text(ADMIN_STRINGS.lock_lost_link)); |
| 236 | ); | ||
| 237 | $banner.append($("<a>", { href: show_url }).text("return to the published page")); | ||
| 238 | $banner.append("."); | 236 | $banner.append("."); |
| 239 | 237 | ||
| 240 | $flash.html($banner); | 238 | $flash.html($banner); |
