1
0
mirror of https://github.com/typemill/typemill.git synced 2025-04-21 04:21:56 +02:00

translations integrated, hero images, image classes

This commit is contained in:
trendschau 2020-05-01 19:54:55 +02:00
parent df61395649
commit d273c5ea88
27 changed files with 326 additions and 106 deletions

BIN
media/live/altdruck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
media/live/knowledge.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
media/original/altdruck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
media/thumbs/altdruck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
media/thumbs/knowledge.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -86,6 +86,7 @@ class PageController extends Controller
{
$home = true;
$item = Folder::getItemForUrl($navigation, $uri->getBasePath(), $uri->getBasePath());
$urlRel = $uri->getBasePath();
}
else
{

View File

@ -26,7 +26,7 @@ class SettingsController extends Controller
$locale = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2) : 'en';
$users = $user->getUsers();
$route = $request->getAttribute('route');
return $this->render($response, 'settings/system.twig', array('settings' => $settings, 'copyright' => $copyright, 'languages' => $languages, 'locale' => $locale, 'formats' => $defaultSettings['formats'] ,'users' => $users, 'route' => $route->getName() ));
}
@ -62,6 +62,7 @@ class SettingsController extends Controller
'copyright' => $newSettings['copyright'],
'year' => $newSettings['year'],
'language' => $newSettings['language'],
'langattr' => $newSettings['langattr'],
'editor' => $newSettings['editor'],
'formats' => $newSettings['formats'],
'headlineanchors' => isset($newSettings['headlineanchors']) ? $newSettings['headlineanchors'] : null,

View File

@ -321,6 +321,28 @@ class ParsedownExtension extends \ParsedownExtra
return $Element;
}
protected function paragraph($Line)
{
$paragraph = array(
'type' => 'Paragraph',
'element' => array(
'name' => 'p',
'handler' => array(
'function' => 'lineElements',
'argument' => $Line['text'],
'destination' => 'elements',
),
),
);
if(isset($Line['text'][1]) && $Line['text'][0] == '!' && $Line['text'][1] == '[')
{
$paragraph['element']['attributes']['class'] = 'p-image';
}
return $paragraph;
}
# Inline Math
# check https://github.com/BenjaminHoegh/ParsedownMath

View File

@ -205,6 +205,7 @@ class Validation
$v->rule('regex', 'author', '/^[\pL_ \-]*$/u');
$v->rule('integer', 'year');
$v->rule('length', 'year', 4);
$v->rule('length', 'langattr', 2);
$v->rule('in', 'editor', ['raw', 'visual']);
$v->rule('values_allowed', 'formats', $formats);
$v->rule('in', 'copyright', $copyright);

View File

@ -38,15 +38,21 @@ class Settings
}
}
# i18n
# load the strings of the set language
$language = $settings['language'];
$theme = $settings['theme'];
$plugins = [];
if(isset($settings['plugins'])){
$plugins = $settings['plugins'];
}
$settings['labels'] = self::getLanguageLabels($language, $theme, $plugins);
# let us load translations only for admin area to improve performance for frontend
$uri = $_SERVER[REQUEST_URI];
if(isset($uri) && (strpos($uri,'/tm/') !== false OR strpos($uri,'/setup') !== false))
{
# i18n
# load the strings of the set language
$language = $settings['language'];
$theme = $settings['theme'];
$plugins = [];
if(isset($settings['plugins']))
{
$plugins = $settings['plugins'];
}
$settings['labels'] = self::getLanguageLabels($language, $theme, $plugins);
}
# We know the used theme now so create the theme path
$settings['themePath'] = $settings['rootPath'] . $settings['themeFolder'] . DIRECTORY_SEPARATOR . $settings['theme'];
@ -72,6 +78,7 @@ class Settings
'author' => 'Unknown',
'copyright' => 'Copyright',
'language' => 'en',
'langattr' => 'en',
'startpage' => true,
'rootPath' => $rootPath,
'themeFolder' => 'themes',
@ -85,7 +92,7 @@ class Settings
'contentFolder' => 'content',
'cache' => true,
'cachePath' => $rootPath . 'cache',
'version' => '1.3.5',
'version' => '1.3.6',
'setup' => true,
'welcome' => true,
'images' => ['live' => ['width' => 820], 'thumbs' => ['width' => 250, 'height' => 150]],
@ -113,37 +120,61 @@ class Settings
# loads the system strings of the set language
$yaml = new Models\WriteYaml();
$system_labels = $yaml->getYaml('system/author/languages', $language.'.yaml');
$system_labels = $yaml->getYaml('system' . DIRECTORY_SEPARATOR . 'author' . DIRECTORY_SEPARATOR . 'languages', $language . '.yaml');
# loads the theme strings of the set language
$theme_labels = [];
$theme_language_folder = 'themes/'.$theme.'/languages';
if (file_exists($theme_language_folder)) {
$theme_labels = $yaml->getYaml($theme_language_folder, $language.'.yaml');
}
# loads the theme strings of the set language
$theme_labels = [];
$theme_language_folder = 'themes' . DIRECTORY_SEPARATOR . $theme . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR;
$theme_language_file = $language . '.yaml';
if (file_exists($theme_language_folder . $theme_language_file))
{
$theme_labels = $yaml->getYaml($theme_language_folder, $theme_language_file);
}
# loads the plugins strings of the set language
$plugins_labels = [];
if(!empty($plugins)){
$plugin_labels = [];
foreach($plugins as $name => $value){
$plugin_language_folder = 'plugins/'.$name.'/languages';
if (file_exists($theme_language_folder)) {
$plugin_labels[$name] = $yaml->getYaml($plugin_language_folder, $language.'.yaml');
}
}
$plugins_labels = [];
foreach($plugin_labels as $key => $value){
$plugins_labels = array_merge($plugins_labels, $value);
}
}
# loads the plugins strings of the set language
$plugins_labels = [];
if(!empty($plugins))
{
$plugin_labels = [];
foreach($plugins as $name => $value)
{
$plugin_language_folder = 'plugins' . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR;
$plugin_language_file = $language . '.yaml';
# Combines arrays of system languages, themes and plugins
$labels = array_merge($system_labels, $theme_labels, $plugins_labels);
if (file_exists($plugin_language_folder . $plugin_language_file))
{
$plugin_labels[$name] = $yaml->getYaml($plugin_language_folder, $plugin_language_file);
}
}
foreach($plugin_labels as $key => $value)
{
$plugins_labels = array_merge($plugins_labels, $value);
}
}
# Combines arrays of system languages, themes and plugins
$labels = array_merge($system_labels, $theme_labels, $plugins_labels);
return $labels;
}
public function whichLanguage()
{
# Check which languages are available
$langs = [];
$path = __DIR__ . '/author/languages/*.yaml';
foreach (glob($path) as $filename)
{
$langs[] = basename($filename,'.yaml');
}
# Detect browser language
$accept_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$lang = in_array($accept_lang, $langs) ? $accept_lang : 'en';
return $lang;
}
public static function getObjectSettings($objectType, $objectName)
{
@ -155,28 +186,12 @@ class Settings
return $objectSettings;
}
public function whichLanguage()
{
# Check which languages are available
$langs = [];
$path = __DIR__ . '/author/languages/*.yaml';
foreach (glob($path) as $filename) {
$langs[] = basename($filename,'.yaml');
}
# Detect browser language
$accept_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$lang = in_array($accept_lang, $langs) ? $accept_lang : 'en';
return $lang;
}
public static function createSettings()
{
$yaml = new Models\WriteYaml();
$language = self::whichLanguage();
$language = self::whichLanguage();
# create initial settings file with only setup false
if($yaml->updateYaml('settings', 'settings.yaml', array('setup' => false, 'language' => $language)))
@ -198,6 +213,7 @@ class Settings
'title' => true,
'copyright' => true,
'language' => true,
'langattr' => true,
'startpage' => true,
'author' => true,
'year' => true,

View File

@ -1,101 +1,209 @@
# Deutsch
# English
ACCOUNT: Account
ACTIVE: Aktiv
ACTUAL_PASSWORD: Actuelles Passwort
ADD_FILE: + Datei
ACTUAL_PASSWORD: Aktuelles Passwort
ADD: hinzufügen
ADD_CONTENT_BLOCK: + Inhalts-Block
ADD_DEFINITION: + Definition
ADD_FILE: + Seite
ADD_FOLDER: + Ordner
ADD_FOLDER_TO_BASE_LEVEL: add folder to base level
ADD_ITEM: add item
ADD_FOLDER_TO_BASE_LEVEL: + Ordner in Basis-Ebene
ADD_ITEM: + Element
ADD_LEFT_COLUMN: + Linke Spalte
ADD_RIGHT_COLUMN: + Rechte Spalte
ADD_ROW_ABOVE: + Reihe oberhalb
ADD_ROW_BELOW: + Reihe unterhalb
ALL_USERS: Alle Nutzer
ALT_TEXT: Alt-Text
AUTHOR: Autor
BACK_TO_STARTPAGE: Zur Startseite
BY: Von
CODE: code
CONTENT: Inhalte
BACK_TO_STARTPAGE: Zurück zur Startseite
BOLD: fett
BOTTOM: Unten
BROWSE: WÄHLEN
BULLET_LIST: Auflistung
BY: von
CANCEL: abbrechen
CAPTION: Bild-Unterschrift
CELL: Zelle
CENTER: Mitte
CHECK: prüfen
CHOOSE_FILE: Datei wählen
CLASS: Class
CLOSE_LIBRARY: Medialib schließen
CODE: Code
COG: Einstellungen
CONTENT: Inhalt
COPYRIGHT: Copyright
CREATE_NEW_USER: Neuen Nutzer erstellen
CREATE_USER: Nutzer erstellen
DEFINITION: Definition
DELETE: Löschen
CREATED_AT__READ_ONLY_: Erstellt am (nur lesen)
CREATED_AT__READONLY_: Erstellt am (nur lesen)
CREATE_NEW_USER: + Neuen Nutzer
CREATE_USER: + Nutzer
CROSS: Kreuz
CUSTOM_CSS: Eigenes CSS
DEFINITION: Definitions-Liste
DEFINITION_LIST: Definitions-Liste
DELETE_CLOSE: löschen
DELETE_COLUMN: Spalte löschen
DELETE_CONTENT_BLOCK: Inhaltsblock löschen
DELETE: löschen
DELETE_PAGE: Seite löschen
DELETE_ROW: Reihe löschen
DELETE_USER: Nutzer löschen
DESCRIPTION: Beschreibung
DISCARD_CHANGES: Änderungen verwerfen
DISCARD: Verwerfen
DO_YOU_REALLY_WANT_TO_DELETE_THE_USER: Soll der Nutzer wirklich gelöscht werden?
DO_YOU_REALLY_WANT_TO_DELETE_THIS_PAGE: Soll die Seite wirklich gelöscht werden?
DO_YOU_WANT_TO_DISCARD_YOUR_CHANGES_AND_SET_THE_CONTENT_BACK_TO_THE_LIVE_VERSION: Sollen die Änderungen verworfen und der Inhalt zurück auf die Live-Version gesetzt werden?
DO_YOU_WANT_TO_DISCARD_YOUR_CHANGES_AND_SET_THE_CONTENT_BACK_TO_THE_LIVE_VERSION: Sollen die Änderungen wirklich verworfen und der Inhalt auf den Live-Zustand zurückgesetzt werden?
DRAFT: Entwurf
EDIT: bearbeiten
DRAG_A_PICTURE_OR_CLICK_TO_SELECT: Bild hochladen
DUTCH__FLEMISH: Dänisch, Flämisch
EDIT: editieren
EDIT_USER: Nutzer bearbeiten
E_G_: z.B.
E_MAIL: E-Mail
ENGLISH: Englisch
EXTERNAL_LINK: externer Link
FAVICON: Favicon
FILE: Datei
FILES: Dateien
FIRST_NAME: Vorname
FOLDER: Ordner
FORGOT_PASSWORD: Passwort vergessen
FORMAT: Format
GENERAL_PRESENTATION: Generelle Darstellung
GERMAN: Deutsch
GOOGLE_SITEMAP: Google Sitemap
HEAD: Kopf
HEADLINE_ANCHORS: Überschriften-Anker
HEADLINE: Überschrift
HIDE: Verbergen
HIDE_PAGE_FROM_NAVIGATION: Seite in Navigation verbergen
HOME: Home
HOMEPAGE: Homepage
HR: hr
HORIZONTAL_LINE: Horizontale Linie
HR: Horizontale Linie
IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Wenn leer wird die Beschreibung vom Inhalt extrahiert.
IMAGE: Bild
LANGUAGE: Sprache
LAST_NAME: Nachname
IMAGES: Bilder
ITALIAN: Italienisch
ITALIC: kursiv
LANGUAGE: Language
LANGUAGE_ADMIN: Sprache (Admin-UI)
LANGUAGE_ATTR: Sprach-Attribut (website)
LAST_MODIFIED_LIVE__READONLY_: Live zuletzt geändert (nur lesen)
LAST_NAME: Zuname
LEFT: Links
LICENCE: Lizenz
LINK: Link
LINK_TO_VIDEO: Link zum Video
LOGIN: Anmelden
LOGO: Logo
LOGOUT: Abmelden
MANUAL_DATE: Manuelles Datum
MARKDOWN: Markdown
MENU: Übersicht
META_TITLE: Meta Titel
MENU: Menü
META_DESCRIPTION: Meta description
META: Meta
META_TITLE: Meta title
MISSING_REQUIREMENTS: Fehlende Anforderungen
MOVE_VERTICAL: vertikal verschieben
NAVIGATION_TITLE: Navigationstitel
NEW_PASSWORD: Neues Passwort
NO_DESCRIPTION: Keine Beschreibung
NONE: Keine
NO_PREVIEW: Keine Vorschau
NO_SETTINGS: Keine Einstellungen
NOT_EDITABLE: Nicht editierbar
OLIST: Aufzählung
NUMBERED_LIST: Aufzählung
OLIST: olist
ONLINE: online
ONLY_THE_FOLLOWING_SPECIAL_CHARACTERS_ARE_ALLOWED: Nur die folgenden Sonderzeichen sind erlaubt:
PARAGRAPH: Absatz
PASSWORD: Passwort
PLEASE_CONFIRM: Bitte bestätigen
PLEASE_CORRECT_THE_ERRORS_ABOVE: Bitte korrigiere die Fehler oben
PLUGINS: Plugins
PLUGIN_STORE: Plugin Seite
PUBLISH: Veröffentlichen
PLUGIN_STORE: Plugin Store
POWER_OFF: Energie aus
PUBLISH: Publizieren
QUOTE: Zitat
RAW_CONTENT_EDITOR: Purer Inhalts-Editor
RAW_MARKDOWN_EDITOR: Purer Markdown-Editor
RAW_MODE: Pur-Modus
RAW: pur
QUOTES: Zitate
RAW_CONTENT_EDITOR: Raw Content Editor
RAW_MARKDOWN_EDITOR: Raw Markdown Editor
RAW_MODE: Raw Modus
RAW: raw
READONLY: Nur lesend
REMEMBER_TO_BOOKMARK_THIS_PAGE: Denk daran die Seite zu bookmarken
REQUIRED: Erforderlich
REMEMBER_TO_BOOKMARK_THIS_PAGE: Bookmark nicht vergessen
REQUIRED: erforderlich
RIGHT: Recht
ROLE: Rolle
RUSSIAN: Russisch
SAVE_ALL_SETTINGS: Alle Einstellungen speichern
SAVE: Speichern
SAVED_SUCCESSFULLY: Erfolgreich gespeichert
SAVE: speichern
SAVE_THEME: Theme speichern
SELECT_FROM_MEDIALIB: Aus Medialib wählen
SETTINGS_ARE_STORED: Einstellungen sind gespeichert
SETTINGS: Einstellungen
SETUP: Einrichtung
STANDARD_EDITOR_MODE: Standard-Editor Modus
SETUP: Setup
SHOW_ANCHORS_NEXT_TO_HEADLINES: Anker neben Überschrift anzeigen
STANDARD_EDITOR_MODE: Standard Editor-Modus
START: Start
SYSTEM: System
TABLE_OF_CONTENTS: Inhaltsverzeichnis
TABLE: Tabelle
TAKEN_FROM_YOUR_USER_ACCOUNT_IF_SET_: Vom Nutzer-Account genommen falls vorhanden.
TERM: Bedingung
TEXT_FILE: Text-Datei
THE_FORMAT_BUTTONS: Die Formatierungs-Buttons
THEMES: Themes
THEME_STORE: Theme Seite
THEME_STORE: Theme Store
TITLE: Titel
TOC: Inhaltsverzeichnis
ULIST: Auflistung
TOC: IHV
TOP: Oben
TYPEMILL_DESCRIPTION: The standard theme for Typemill. Responsive, minimal and without any dependencies. It uses the system fonts Calibri and Helvetica. No JavaScript is used.
ULIST: ulist
UNKNOWN: Unbekannt
UPDATE_USER: Nutzer aktualisieren
USE_2_TO_40_CHARACTERS: Verwende 2 bis 40 Anschläge.
USE_A_VALID_YEAR: Verwende ein gültiges Jahr
UPLOAD_FILE: Datei hochladen
UPLOAD: hochladen
USE_2_TO_20_CHARACTERS: 2 bis 20 Anschläge erlaubt.
USE_2_TO_40_CHARACTERS: 2 to 40 Anschläge erlaubt.
USE_A_VALID_LANGUAGE_ATTRIBUTE: Gültiges Language Attribut erforderlich.
USE_A_VALID_YEAR: Gültiges Jahr erforderlich.
USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Wird alternativ zum manuellen Datum genutzt.
USERNAME: Nutzername
USERS: Nutzer
USER: Nutzer
VIDEO: Video
VIEW_SITE: Seite ansehen
VIEW_SITE: Zur Webseite
VISUAL_CONTENT_EDITOR: Visueller Inhalts-Editor
VISUAL_EDITOR: Visueller Editor
VISUAL_MARKDOWN_EDITOR: Visueller Markdown Editor
VISUAL_MODE: visueller Modus
VISUAL: visuell
WAIT: warte
WEBSITE_TITLE: Webseiten-Titel
WEBSITE_TITLE: WebseitenTitel
WEB: Web
WRITING: Schreiben
YEAR: Jahr
YEAR: Jahr
YOU_CAN_OVERWRITE_THE_THEME_CSS_WITH_YOUR_OWN_CSS_HERE_: Du kannst das CSS des Themes hier überschreiben.
SW_SETUP_WELCOME: Setup Willkommen
SW_HURRA: Hurra
SW_YOUR_ACCOUNT: Dein Account wurde erstellt und du bist jetzt angemeldet.
SW_NEXT_STOP: Nächster Schritt:
SW_VISIT: Besuche die Autorenoberfläche und richte die Seite ein. Du kannst das System konfigurieren, Themes auswählen and Plugins hinzufügen.
SW_GET_HELP: Hilfe erhalten:
SW_IF_YOU_HAVE: Wenn du Fragen hast, lies bitte die
SW_DOCS: Dokumentation
SW_OR_OPEN: oder öffne ein neues Issue
SW_CODED: Entwickelt mit
SW_BY: von der
SW_COMMUNITY: Community
SW_TRENDSCHAU: Trendschau Digital
SW_CONFIGURE: Richte deine Seite ein.
SW_GIVE_YOUR_NEW: Gib deiner neuen Seite einen Namen, füge Autoren hinzu und wähle ein Copyright.
SW_CHOOSE_A_THEME: Richte ein Theme für deine Webseite ein.
SW_ADD_NEW_FEATURE: Füge mit Plugins neue Funktionen hinzu.

View File

@ -90,6 +90,8 @@ IMAGES: Images
ITALIAN: Italian
ITALIC: italic
LANGUAGE: Language
LANGUAGE_ADMIN: Language (admin-ui)
LANGUAGE_ATTR: Language Attribute (website)
LAST_MODIFIED_LIVE__READONLY_: Last modified live (readonly)
LAST_NAME: Last Name
LEFT: Left
@ -169,6 +171,7 @@ UPLOAD_FILE: Upload a file
UPLOAD: upload
USE_2_TO_20_CHARACTERS: Use 2 to 20 characters.
USE_2_TO_40_CHARACTERS: Use 2 to 40 characters.
USE_A_VALID_LANGUAGE_ATTRIBUTE: Use a valid language attribute
USE_A_VALID_YEAR: Use a valid year
USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Used as fallback when no manual date is set.
USERNAME: Username

View File

@ -90,6 +90,8 @@ IMAGES: Immagini
ITALIAN: Italiano
ITALIC: corsivo
LANGUAGE: Lingua
LANGUAGE_ADMIN: Lingua (admin-ui)
LANGUAGE_ATTR: Language Attribute (website)
LAST_MODIFIED_LIVE__READONLY_: Ultima modifica (sola lettura)
LAST_NAME: Cognome
LEFT: Sinistra
@ -169,6 +171,7 @@ UPLOAD: carica
UPLOAD_FILE: Carica un file
USE_2_TO_20_CHARACTERS: Usa da 2 a 20 caratteri.
USE_2_TO_40_CHARACTERS: Usa da 2 a 40 caratteri.
USE_A_VALID_LANGUAGE_ATTRIBUTE: Use a valid language attribute
USE_A_VALID_YEAR: Usa un anno valido
USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Utilizzato come ripiego quando non è impostata alcuna data manuale.
USERNAME: Nome utente

View File

@ -73,6 +73,8 @@ IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Indien niet ingevuld,
IMAGE: Afbeelding
ITALIC: cursief
LANGUAGE: Taal
LANGUAGE_ADMIN: Taal (admin-ui)
LANGUAGE_ATTR: Language Attribute (website)
LAST_MODIFIED_LIVE__READONLY_: Laatst gewijzigd live (alleen-lezen)
LAST_NAME: achternaam
LEFT: Links
@ -142,6 +144,7 @@ ULIST: ulist
UNKNOWN: onbekend
UPDATE_USER: Gebruiker bijwerken
USE_2_TO_40_CHARACTERS: gebruik 2 tot 40 tekens.
USE_A_VALID_LANGUAGE_ATTRIBUTE: Use a valid language attribute
USE_A_VALID_YEAR: Gebruik een geldig jaar
USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Gebruikt als fallback als er geen handmatige datum is ingesteld.
USER: Gebruiker

View File

@ -81,6 +81,8 @@ IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Если не зап
IMAGE: Изображение
ITALIC: Наклонный
LANGUAGE: Язык
LANGUAGE_ADMIN: Язык (admin-ui)
LANGUAGE_ATTR: Language Attribute (website)
LAST_MODIFIED_LIVE__READONLY_: Последнее изменение (только просмотр)
LAST_NAME: Фамилия
LEFT: Слева
@ -153,6 +155,7 @@ UPDATE_USER: Обновить данные профиля
UPLOAD: загрузить
UPLOAD_FILE: Загрузить файл
USE_2_TO_40_CHARACTERS: Используйте от 2 до 40 символов.
USE_A_VALID_LANGUAGE_ATTRIBUTE: Use a valid language attribute
USE_A_VALID_YEAR: Используйте правильный формат для указания года
USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Используется как запасной вариант, когда дата не установлена в ручную.
USERNAME: Имя пользователя

View File

@ -9,11 +9,6 @@
<textarea id="{{ itemName }}[{{ field.name }}]" name="{{ itemName }}[{{ field.name }}]"{{field.getAttributeValues() }}{{ field.getAttributes() }}>{{ field.getContent() }}</textarea>
{% elseif field.type == 'image' %}
<div class="imageupload dropbox">
<input id="{{itemName}}[{{ field.name }}]" class="input-file" name="{{itemName}}[{{ field.name }}]" type="file" accept="image/*"{{ field.getAttributeValues() }}{{ field.getAttributes() }}>
<p><svg class="icon icon-upload baseline"><use xlink:href="#icon-upload"></use></svg> upload an image</p>
</div>
{% elseif field.type == 'paragraph' %}
{{ markdown(field.getContent()) }}

View File

@ -51,7 +51,7 @@
<span class="error">{{ errors.settings.year | first }}</span>
{% endif %}
</div><div class="medium{{ errors.settings.language ? ' error' : '' }}">
<label for="settings[language]">{{ __('Language') }}</label>
<label for="settings[language]">{{ __('Language_admin') }}</label>
<select name="settings[language]" id="language">
{% for key,lang in languages %}
<option value="{{ key }}"{% if (key == old.settings.language or key == mylang) %} selected{% endif %}>{{ __(lang) }}</option>
@ -60,6 +60,12 @@
{% if errors.settings.language %}
<span class="error">{{ errors.settings.language | first }}</span>
{% endif %}
</div><div class="medium{{ errors.settings.langattr ? ' error' : '' }}">
<label for="langattr">{{ __('Language_attr') }}</label>
<input type="text" name="settings[langattr]" id="langattr" value="{{ old.settings.langattr ? old.settings.langattr : settings.langattr }}" pattern="[a-z]{2}" title="{{ __('Use a valid language attribute') }}, {{ __('e.g.') }} en" />
{% if errors.settings.langattr %}
<span class="error">{{ errors.settings.langattr | first }}</span>
{% endif %}
</div><div class="medium">
<label for="settings[sitemap]">{{ __('Google Sitemap') }} <small>({{ __('Readonly') }})</small></label>
<input type="text" name="settings[sitemap]" id="sitemap" readonly value="{{ base_url }}/cache/sitemap.xml" />

View File

@ -387,6 +387,21 @@ button.play-video::after {
article .gitlink{
float: right;
}
.herocontainer{
position: relative;
margin: -30px -90px 0px;
height: 300px;
overflow: hidden;
}
.heroimage{
width: 100%;
}
.herocontainer .breadcrumb{
position: absolute;
top: 30px;
left: 10%;
width: 80%;
}
/************************
* PAGING / BREADCRUMB *

View File

@ -4,7 +4,21 @@
{% block content %}
{% include '/partials/breadcrumb.twig' %}
{% if metatabs.meta.heroimage %}
<div class="herocontainer">
<img class="heroimage" src="{{ metatabs.meta.heroimage }}" alt="{{ metatabs.meta.heroimagealt }}"/>
{% include '/partials/breadcrumb.twig' %}
</div>
{% else %}
{% include '/partials/breadcrumb.twig' %}
{% endif %}
{% if item.elementType == 'file' %}

View File

@ -0,0 +1,33 @@
# English
ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Spezielles Start-Design aktivieren
ADD_LABEL_FOR_START_BUTTON: Label für Start-Button
ADD_NAME_FOR_CHAPTER: Name für Kapitel
AUTHOR_INTRO: Präfix für Autorenname
CHAPTER: Kapitel
COUNT_CHAPTERS_IN_NAVIGATION?: Kapitel in Navigation nummerieren?
DIFFERENT_DESIGN_FOR_STARTPAGE: Alternatives Design für Startseite
FACEBOOK: Facebook
GITHUB: GitHub
LABEL_FOR_CHAPTER: Label für Kapitel
LABEL_FOR_START_BUTTON: Label für Start-Button
LAST_MODIFIED_FORMAT: Format für zuletzt geändert
LAST_MODIFIED: Zuletzt geändert
LAST_MODIFIED_TEXT: Text für zuletzt geändert
LAST_UPDATED: Zuletzt geändert
LINKEDIN: Linkedin
LINK_TO_GIT_REPOSITORY: Link zum Git-Repository
LOGO_ON_STARTPAGE: Logo auf Startseite anzeigen?
MAIL: E-Mail
PLEASE_ADD_THE_BASE_URL_TO_THE_TEXT_REPOSITORY_E_G__ON_GITHUB_: Bitte füge die Basis-URL zum Git-Repository ein, zum Beispiel von github.
POSITION_OF_AUTHOR: Position des Autorennamens
POSITION_OF_GIT_EDIT_LINK: Position des Git Editier-Links
POSITION_OF_MODIFIED_TEXT: Position des Texts für zuletzt geändert
POSITION_OF_SHARE_BUTTONS: Position der Share-Buttons
SELECT_SHARE_BUTTONS: Wähle Share-Buttons aus
SHARE: Teilen
SHOW_CHAPTER_NUMBERS: Kapitel nummerieren
SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Logo anstelle des Titels anzeigen.
THE_STANDARD_THEME_FOR_TYPEMILL__RESPONSIVE__MINIMAL_AND_WITHOUT_ANY_DEPENDENCIES__IT_USES_THE_SYSTEM_FONTS_CALIBRI_AND_HELVETICA__NO_JAVASCRIPT_IS_USED_: 'Das Standard-Theme für Typemill. Minimal, responsiv und ohne Abhängigkeiten. kein JavaScript erforderlich. Gut für Dokumentationen und text-fokussierte Webseiten.'
TWITTER: Twitter
WHATSAPP: WhatsApp
XING: Xing

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="{{ settings.language }}">
<html lang="{{ settings.langattr|default('en') }}">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="{{ settings.language }}">
<html lang="{{ settings.langattr|default('en') }}">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>

View File

@ -1,5 +1,5 @@
name: Typemill Theme
version: 1.2.4
version: 1.2.5
description: The standard theme for Typemill. Responsive, minimal and without any dependencies. It uses the system fonts Calibri and Helvetica. No JavaScript is used.
author: Sebastian Schürmanns
homepage: https://typemill.net
@ -27,10 +27,6 @@ forms:
label: Different Design for Startpage
checkboxlabel: Activate Special Startpage-Design
test:
type: image
label: Image test
coverlogo:
type: checkbox
label: Logo on startpage