Explorar el Código

update to version136

severoiuliano@gmail.com hace 5 años
padre
commit
b4f2cc9950

+ 28 - 2
system/Controllers/SetupController.php

@@ -52,9 +52,32 @@ class SetupController extends Controller
 		$setuperrors = empty($systemcheck) ? false : 'Some system requirements for Typemill are missing.';
 		$systemcheck = empty($systemcheck) ? false : $systemcheck;
 
-		return $this->render($response, 'auth/setup.twig', array( 'messages' => $setuperrors, 'systemcheck' => $systemcheck ));
+    # Get the translated strings
+    $labels = $this->getSetupLabels();
+
+		return $this->render($response, 'auth/setup.twig', array( 'messages' => $setuperrors, 'systemcheck' => $systemcheck, 'labels' => $labels ));
 	}
 
+  public function getSetupLabels()
+  {
+    # 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';
+
+    # At least in the setup phase noon there should be no plugins and the theme should be typemill
+    $labels = \Typemill\Settings::getLanguageLabels($lang,'typemill',[]);
+
+    return $labels;
+  }
+
+
 	public function create($request, $response, $args)
 	{
 		if($request->isPost())
@@ -98,7 +121,10 @@ class SetupController extends Controller
 	{
 		/* store updated settings */
 		\Typemill\Settings::updateSettings(array('welcome' => false));
+
+    # Get the translated strings
+    $labels = $this->getSetupLabels();
 		
-		return $this->render($response, 'auth/welcome.twig', array());		
+		return $this->render($response, 'auth/welcome.twig', array( 'labels' => $labels ));		
 	}
 }

+ 47 - 3
system/Extensions/TwigLanguageExtension.php

@@ -16,22 +16,66 @@ class TwigLanguageExtension extends \Twig_Extension
   public function getFilters()
   {
     return [
-      new \Twig_SimpleFilter('__', [$this,'translate'] )
+      new \Twig_SimpleFilter('__', [$this,'translate'] ),
+      new \Twig_SimpleFilter('ta', [$this,'translate_array'] )
     ];
   }
 
 	public function getFunctions()
 	{
 		return [
-			new \Twig_SimpleFunction('__', array($this, 'translate' ))
+			new \Twig_SimpleFunction('__', array($this, 'translate' )),
+      new \Twig_SimpleFunction('ta', [$this,'translate_array'] )
 		];
 	}
 
+
+  public function translate_array( $label )
+  {
+    /* In reality the function does not Translate an Array but a string, temporarily transformed into an array.
+     * I saw a filter/function with this name in Grav.
+     * Example:
+      
+       $label -> placeholder="Add Label for Start-Button" value="Start"
+      
+       after explode:
+       {
+        [0]=> string(13) " placeholder="
+        [1]=> string(26) "Add Label for Start-Button"
+        [2]=> string(7) " value="
+        [3]=> string(5) "Start"
+        [4]=> string(0) ""
+      }
+      
+     */
+    $translated_label = '';
+    $items = explode('"',$label);
+    foreach($items as $item){
+      // skip empty string
+      if(!empty($item)){
+        $pos = strpos($item, '=');
+        //skip string containing equal sign
+        if ($pos === false) {
+          // translate with previous function in this class
+          $translated = $this->translate($item);
+          // add the translated string
+          $translated_label .= '"'.$translated.'"';
+        } else {
+          // adds the string containing the equal sign
+          $translated_label .= $item;
+        }
+      }
+    }
+    return $translated_label;
+  }
+
+  
   public function translate( $label )
 	{
-    // replaces spaces, dots and dash with underscores 
+    // replaces spaces, dots, comma and dash with underscores 
     $string = str_replace(" ", "_", $label);
     $string = str_replace(".", "_", $string);
+    $string = str_replace(",", "_", $string);
     $string = str_replace("-", "_", $string);
 
     // transforms to uppercase

+ 54 - 18
system/Settings.php

@@ -41,7 +41,12 @@ class Settings
 	    # i18n
 	    # load the strings of the set language
 	    $language = $settings['language'];
-	    $settings['labels'] = self::getLanguageLabels($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'];
@@ -98,7 +103,7 @@ class Settings
 
 
     # i18n
- 	public static function getLanguageLabels($language)
+ 	public static function getLanguageLabels($language, $theme, $plugins)
 	{
     	# if not present, set the English language
     	if( empty($language) )
@@ -106,23 +111,36 @@ class Settings
       		$language = 'en';
     	}
 
-    	# load the strings of the set language
+    	# loads the system strings of the set language
 		$yaml = new Models\WriteYaml();
-		$labels = $yaml->getYaml('settings/languages', $language.'.yaml');
-		
-		return $labels;
-	}
+    $system_labels = $yaml->getYaml('system/author/languages', $language.'.yaml');
 
-  public static function getVuejsLabels($language)
-	{
-    if( empty($language) ){
-      $language = 'en';
+    # 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');
     }
-    
-    // load the strings of the set language
-		$yaml = new Models\WriteYaml();
-    $labels = $yaml->getYaml('settings/languages', 'vuejs-'.$language.'.yaml');
-		
+
+    # 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);
+      }
+    }
+
+    # Combines arrays of system languages, themes and plugins
+    $labels = array_merge($system_labels, $theme_labels, $plugins_labels);
+
 		return $labels;
 	}
 
@@ -138,12 +156,30 @@ 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();
+    
 		# create initial settings file with only setup false
-		if($yaml->updateYaml('settings', 'settings.yaml', array('setup' => false)))
+		if($yaml->updateYaml('settings', 'settings.yaml', array('setup' => false, 'language' => $language)))
 		{
 			return true; 
 		}

+ 5 - 5
system/author/auth/setup.twig

@@ -1,5 +1,5 @@
 {% extends 'layouts/layoutAuth.twig' %}
-{% block title %}Setup{% endblock %}
+{% block title %}{{ labels['SETUP'] ? labels['SETUP'] : 'Setup' }}{% endblock %}
 
 {% block content %}
 
@@ -19,21 +19,21 @@
 
 				<fieldset class="auth">
 					<div class="formElement{{ errors.username ? ' errors' : '' }}">
-						<label for="username">Username <abbr title="required">*</abbr></label>
+						<label for="username">{{ labels['USERNAME'] ? labels['USERNAME'] : 'Username' }} <abbr title="{{ labels['REQUIRED'] ? labels['REQUIRED'] : 'required' }}">*</abbr></label>
 						<input type="text" name="username" value="{{ old.username }}" required>
 						{% if errors.username %}
 							<span class="error">{{ errors.username | first }}</span>
 						{% endif %}
 					</div>
 					<div class="formElement{{ errors.email ? ' errors' : '' }}">
-						<label for="email">E-Mail <abbr title="required">*</abbr></label>
+						<label for="email">{{ labels['E_MAIL'] ? labels['E_MAIL'] : 'E-Mail' }} <abbr title="{{ labels['REQUIRED'] ? labels['REQUIRED'] : 'required' }}">*</abbr></label>
 						<input type="text" name="email" value="{{ old.email }}" required>
 						{% if errors.email %}
 							<span class="error">{{ errors.email | first }}</span>
 						{% endif %}
 					</div>
 					<div class="formElement{{ errors.password ? ' errors' : '' }}">
-						<label for="password">Password <abbr title="required">*</abbr></label>
+						<label for="password">{{ labels['PASSWORD'] ? labels['PASSWORD'] : 'Password' }} <abbr title="{{ labels['REQUIRED'] ? labels['REQUIRED'] : 'required' }}">*</abbr></label>
 						<input type="password" name="password" required autocomplete="off">
 						{% if errors.password %}
 							<span class="error">{{ errors.password | first }}</span>
@@ -41,7 +41,7 @@
 					</div>
 				</fieldset>
 
-				<input type="submit" value="Create User" />
+				<input type="submit" value="{{ labels['CREATE_USER'] ? labels['CREATE_USER'] : 'Create User' }}" />
 				{{ csrf_field() | raw }}
 						
 			</form>

+ 13 - 13
system/author/auth/welcome.twig

@@ -1,6 +1,6 @@
 {% extends 'layouts/layoutAuth.twig' %}
 
-{% block title %}Setup Welcome{% endblock %}
+{% block title %}{{ labels['SW_SETUP_WELCOME'] ? labels['SW_SETUP_WELCOME'] : 'Setup Welcome' }}{% endblock %}
 
 {% block content %}
 		
@@ -8,37 +8,37 @@
 	
 		<div class="medium">
 			<div class="welcomeIntro">
-				<h1>Hurra!</h1>
-				<p>Your account has been created and you are logged in now.</p>
-				<p><strong>Next step:</strong> Visit the author panel and setup your new website. You can configure the system, choose themes and add plugins.</p>
-				<p><strong>Get help:</strong> If you have any questions, please read the <a target="_blank" href="https://typemill.net/typemill"><i class="icon-link-ext"></i> docs</a> or open a new issue on <a target="_blank" href="https://github.com/typemill/typemill"><i class="icon-link-ext"></i> github</a>.</p>
-				<p>Coded with <span style="font-size: 1.4em;color:#e0474c; margin:0px 3px">&#9829;</span> by the <a target="_blank" href="https://github.com/typemill/typemill">community</a> & <a target="_blank" href="https://trendschau.net/typemill-development"><i class="icon-link-ext"></i> Trendschau Digital</a>.</p>
+				<h1>{{ labels['SW_HURRA'] ? labels['SW_HURRA'] : 'Hurra' }}!</h1>
+				<p>{{ labels['SW_YOUR_ACCOUNT'] ? labels['SW_YOUR_ACCOUNT'] : 'Your account has been created and you are logged in now.'}}</p>
+				<p><strong>{{ labels['SW_NEXT_STOP'] ? labels['SW_NEXT_STOP'] : 'Next step:' }}</strong> {{ labels['SW_VISIT'] ? labels['SW_VISIT'] : 'Visit the author panel and setup your new website. You can configure the system, choose themes and add plugins.' }}</p>
+				<p><strong>{{ labels['SW_GET_HELP'] ? labels['SW_GET_HELP'] : 'Get help:' }}</strong> {{ labels['SW_IF_YOU_HAVE'] ? labels['SW_IF_YOU_HAVE'] : 'If you have any questions, please read the' }} <a target="_blank" href="https://typemill.net/typemill"><i class="icon-link-ext"></i> {{ labels['SW_DOCS'] ? labels['SW_DOCS'] : 'docs' }}</a> {{ labels['SW_OR_OPEN'] ? labels['SW_OR_OPEN'] : 'or open a new issue on' }} <a target="_blank" href="https://github.com/typemill/typemill"><i class="icon-link-ext"></i> {{ labels['GITHUB'] ? labels['GITHUB'] : 'github' }}</a>.</p>
+				<p>{{ labels['SW_CODED'] ? labels['SW_CODED'] : 'Coded with' }} <span style="font-size: 1.4em;color:#e0474c; margin:0px 3px">&#9829;</span> {{ labels['SW_BY'] ? labels['SW_BY'] : 'by the' }} <a target="_blank" href="https://github.com/typemill/typemill">{{ labels['SW_COMMUNITY'] ? labels['SW_COMMUNITY'] : 'community' }}</a> & <a target="_blank" href="https://trendschau.net/typemill-development"><i class="icon-link-ext"></i> {{ labels['SW_TRENDSCHAU'] ? labels['SW_TRENDSCHAU'] : 'Trendschau Digital' }}</a>.</p>
 			</div>
-			<a class="button" href="{{ path_for('settings.show') }}">Configure your website</a>
+			<a class="button" href="{{ path_for('settings.show') }}">{{ labels['SW_CONFIGURE'] ? labels['SW_CONFIGURE'] : 'Configure your website' }}</a>
  		</div>
 		
 		<div class="small">
 			<div class="welcomeCard">
 				<a href="{{ path_for('settings.show') }}">
 					<div class="welcomeInner">
-						<h3>System</h3>
-						<p>Give your new website a name, add the author and choose a copyright.</p>				
+						<h3>{{ labels['SYSTEM'] ? labels['SYSTEM'] : 'System' }}</h3>
+						<p>{{ labels['SW_GIVE_YOUR_NEW'] ? labels['SW_GIVE_YOUR_NEW'] : 'Give your new website a name, add the author and choose a copyright.' }}</p>				
 					</div>
 				</a>				
 			</div>
 			<div class="welcomeCard">
 				<a href="{{ path_for('themes.show') }}">
 					<div class="welcomeInner">
-						<h3>Themes</h3>
-						<p>Choose a theme for your website and configure the theme details.</p>
+						<h3>{{ labels['THEMES'] ? labels['THEMES'] : 'Themes' }}</h3>
+						<p>{{ labels['SW_CHOOSE_A_THEME'] ? labels['SW_CHOOSE_A_THEME'] : 'Choose a theme for your website and configure the theme details.' }}</p>
 					</div>
 				</a>
 			</div>
 			<div class="welcomeCard">
 				<a href="{{ path_for('plugins.show') }}">
 					<div class="welcomeInner">
-						<h3>Plugins</h3>
-						<p>Add new features to your website with plugins and configure them.</p>
+						<h3>{{ labels['PLUGINS'] ? labels['PLUGINS'] : 'Plugins' }}</h3>
+						<p>{{ labels['SW_ADD_NEW_FEATURE'] ? labels['SW_ADD_NEW_FEATURE'] : 'Add new features to your website with plugins and configure them.' }}</p>
 					</div>
 				</a>
 			</div>

+ 6 - 6
system/author/js/vue-blox.js

@@ -949,14 +949,14 @@ const tableComponent = Vue.component('table-component', {
 								 '<div class="actionline" @click="addbelowrow(value)">{{ \'add row below\'|translate }}</div>' +
 								 '<div class="actionline" @click="deleterow(value)">{{ \'delete row\'|translate }}</div>' +						
 							  '</div>' + 
-							'{{ value }}</th>' +
+							'{{ value|translate }}</th>' +
 							'<td v-if="rowindex > 1" v-for="(value,colindex) in row" :contenteditable="colindex !== 0 ? true : false" @click="switchrowbar(value)" @blur="updatedata($event,colindex,rowindex)" :class="colindex !== 0 ? editable : noteditable">' + 
 							 '<div v-if="colindex === 0 && rowbar === value" class="rowaction">' + 
   								 '<div class="actionline" @click="addaboverow(value)">{{ \'add row above\'|translate }}</div>' +
 								 '<div class="actionline" @click="addbelowrow(value)">{{ \'add row below\'|translate }}</div>' +
 								 '<div class="actionline" @click="deleterow(value)">{{ \'delete row\'|translate }}</div>' +
 							  '</div>' +
-							'{{ value }}</td>' +
+							'{{ value|translate }}</td>' +
 						'</tr>' +
 					'</tbody>' +
 				'</table>' +
@@ -1244,7 +1244,7 @@ const imageComponent = Vue.component('image-component', {
 					'<input type="file" name="image" accept="image/*" class="input-file" @change="onFileChange( $event )" /> ' +
 					'<p><svg class="icon icon-upload baseline"><use xlink:href="#icon-upload"></use></svg> {{ \'drag a picture or click to select\'|translate }}</p>' +
 				'</div>' +
-				'<button class="imageselect" @click.prevent="openmedialib()"><svg class="icon icon-image baseline"><use xlink:href="#icon-image"></use></svg> select from medialib</button>' +
+				'<button class="imageselect" @click.prevent="openmedialib()"><svg class="icon icon-image baseline"><use xlink:href="#icon-image"></use></svg> {{ \'select from medialib\'|translate }}</button>' +
 				'<transition name="fade-editor">' +
 					'<div v-if="showmedialib" class="modalWindow">' +
 						'<medialib parentcomponent="images"></medialib>' + 
@@ -1536,7 +1536,7 @@ const fileComponent = Vue.component('file-component', {
 					'<input type="file" accept="*" name="file" class="input-file" @change="onFileChange( $event )" /> ' +
 					'<p><svg class="icon icon-upload baseline"><use xlink:href="#icon-upload"></use></svg> {{ \'upload file\'|translate }}</p>' +
 				'</div>' +
-				'<button class="imageselect" @click.prevent="openmedialib()"><svg class="icon icon-paperclip baseline"><use xlink:href="#icon-paperclip"></use></svg> select from medialib</button>' +
+				'<button class="imageselect" @click.prevent="openmedialib()"><svg class="icon icon-paperclip baseline"><use xlink:href="#icon-paperclip"></use></svg> {{ \'select from medialib\'|translate }}</button>' +
 				'<transition name="fade-editor">' +
 					'<div v-if="showmedialib" class="modalWindow">' +
 						'<medialib parentcomponent="files"></medialib>' + 
@@ -1729,8 +1729,8 @@ const medialib = Vue.component('medialib', {
 	                    '<div class="w-100 relative">' + 
 	                    	'<div><input v-model="search" class="w-100 border-box pa2 mb3 br0 ba b--light-silver"><svg class="icon icon-search absolute top-1 right-1 pa1 gray"><use xlink:href="#icon-search"></use></svg></div>' +
 	                    '</div>' + 
-						'<button @click.prevent="showImages()" class="link br0 ba ph3 pv2 mv2 mr1" :class="isImagesActive()">Images</button>' +
-						'<button @click.prevent="showFiles()" class="link br0 ba ph3 pv2 mv2 ml1" :class="isFilesActive()">Files</button>' +
+						'<button @click.prevent="showImages()" class="link br0 ba ph3 pv2 mv2 mr1" :class="isImagesActive()">{{ \'Images\'|translate }}</button>' +
+						'<button @click.prevent="showFiles()" class="link br0 ba ph3 pv2 mv2 ml1" :class="isFilesActive()">{{ \'Files\'|translate }}</button>' +
 					'</div>' +
 					'<div class="w-70 dib v-top center">' +
 						'<div v-if="errors" class="w-95 mv3 white bg-tm-red tc f5 lh-copy pa3">{{errors}}</div>' +

+ 1 - 1
system/author/js/vue-meta.js

@@ -2,7 +2,7 @@ const FormBus = new Vue();
 
 Vue.filter('translate', function (value) {
   if (!value) return ''
-  transvalue = value.replace(/[ ]/g,"_").replace(/[.]/g, "_").replace(/[-]/g, "_").replace(/[,]/g,"_").replace(/[(]/g,"_").replace(/[)]/g,"_").toUpperCase()
+  transvalue = value.replace(/[ ]/g,"_").replace(/[.]/g, "_").replace(/[,]/g, "_").replace(/[-]/g, "_").replace(/[,]/g,"_").replace(/[(]/g,"_").replace(/[)]/g,"_").toUpperCase()
   translated_string = labels[transvalue]
   if(!translated_string || translated_string.length === 0){
     return value

+ 0 - 0
settings/languages/de.yaml → system/author/languages/de.yaml


+ 37 - 28
settings/languages/en.yaml → system/author/languages/en.yaml

@@ -1,6 +1,5 @@
 # English
 ACCOUNT: Account
-ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Activate Special Startpage-Design
 ACTIVE: Active
 ACTUAL_PASSWORD: Actual Password
 ADD: add
@@ -17,7 +16,6 @@ ADD_ROW_BELOW: add row below
 ALL_USERS: All users
 ALT_TEXT: Alt-Text
 AUTHOR: Author
-AUTHOR_INTRO: Author Intro
 BACK_TO_STARTPAGE: back to startpage
 BOLD: bold
 BOTTOM: Bottom
@@ -37,7 +35,6 @@ COG: cog
 CONTENT: Content
 CONTENT: Content
 COPYRIGHT: Copyright
-COUNT_CHAPTERS_IN_NAVIGATION?: Count chapters in navigation?
 CREATED_AT__READ_ONLY_: Created at (readonly)
 CREATED_AT__READONLY_: Created at (read only)
 CREATE_NEW_USER: Create New User
@@ -54,7 +51,6 @@ DELETE_PAGE: Delete page
 DELETE_ROW: delete row
 DELETE_USER: Delete User
 DESCRIPTION: description
-DIFFERENT_DESIGN_FOR_STARTPAGE: Different Design for Startpage
 DISCARD_CHANGES: Discard Changes
 DISCARD: Discard
 DO_YOU_REALLY_WANT_TO_DELETE_THE_USER: Do you really want to delete the user
@@ -62,19 +58,25 @@ DO_YOU_REALLY_WANT_TO_DELETE_THIS_PAGE: Do you really want to delete this page?
 DO_YOU_WANT_TO_DISCARD_YOUR_CHANGES_AND_SET_THE_CONTENT_BACK_TO_THE_LIVE_VERSION: Do you want to discard your changes and set the content back to the live version?
 DRAFT: Draft
 DRAG_A_PICTURE_OR_CLICK_TO_SELECT: upload an image
+DUTCH__FLEMISH: Dutch, Flemish
 EDIT: edit
 EDIT_USER: Edit User
 E_G_: e.g.
 E_MAIL: E-Mail
+ENGLISH: English
 EXTERNAL_LINK: external-link
-FACEBOOK: Facebook
+FAVICON: Favicon
 FILE: File
+FILES: Files
 FIRST_NAME: First Name
 FOLDER: folder
 FORGOT_PASSWORD: Forgot password
 FORMAT: Format
-GITHUB: GitHub
+GENERAL_PRESENTATION: General Presentation
+GERMAN: German
+GOOGLE_SITEMAP: Google Sitemap
 HEAD: Head
+HEADLINE_ANCHORS: Headline Anchors
 HEADLINE: Headline
 HIDE: Hide
 HIDE_PAGE_FROM_NAVIGATION: Hide page from navigation
@@ -84,25 +86,19 @@ HORIZONTAL_LINE: Horizontal Line
 HR: hr
 IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: If not filled, the description is extracted from content.
 IMAGE: Image
+IMAGES: Images
+ITALIAN: Italian
 ITALIC: italic
-LABEL_FOR_CHAPTER: Label for Chapter
-LABEL_FOR_START_BUTTON: Label for Start Button
 LANGUAGE: Language
-LAST_MODIFIED_FORMAT: Last Modified Format
-LAST_MODIFIED: Last Modified
 LAST_MODIFIED_LIVE__READONLY_: Last modified live (readonly)
-LAST_MODIFIED_TEXT: Last Modified Text
 LAST_NAME: Last Name
 LEFT: Left
 LICENCE: Licence
-LINKEDIN: Linkedin
 LINK: Link
-LINK_TO_GIT_REPOSITORY: Link to git repository
 LINK_TO_VIDEO: Link to video
 LOGIN: Login
-LOGO_ON_STARTPAGE: Logo on startpage
+LOGO: Logo
 LOGOUT: Logout
-MAIL: Mail
 MANUAL_DATE: Manual date
 MARKDOWN: markdown
 MENU: Menu
@@ -114,11 +110,13 @@ MOVE_VERTICAL: move vertical
 NAVIGATION_TITLE: Navigation Title
 NEW_PASSWORD: New Password
 NO_DESCRIPTION: No description
+NONE: None
 NO_PREVIEW: No Preview
 NO_SETTINGS: No Settings
 NOT_EDITABLE: not editable
 NUMBERED_LIST: Numbered List
 OLIST: olist
+ONLINE: online
 ONLY_THE_FOLLOWING_SPECIAL_CHARACTERS_ARE_ALLOWED: Only the following special characters are allowed:
 PARAGRAPH: Paragraph
 PASSWORD: Password
@@ -126,10 +124,6 @@ PLEASE_CONFIRM: Please confirm
 PLEASE_CORRECT_THE_ERRORS_ABOVE: Please correct the errors above
 PLUGINS: Plugins
 PLUGIN_STORE: Plugin Store
-POSITION_OF_AUTHOR: Position of Author
-POSITION_OF_GIT_EDIT_LINK: Position of Git Edit Link
-POSITION_OF_MODIFIED_TEXT: Position of Modified Text
-POSITION_OF_SHARE_BUTTONS: Position of Share-Buttons
 POWER_OFF: power-off
 PUBLISH: Publish
 QUOTE: Quote
@@ -143,17 +137,16 @@ REMEMBER_TO_BOOKMARK_THIS_PAGE: Remember to bookmark this page
 REQUIRED: Required
 RIGHT: Right
 ROLE: Role
+RUSSIAN: Russian
 SAVE_ALL_SETTINGS: Save All Settings
 SAVED_SUCCESSFULLY: Saved successfully
 SAVE: Save
 SAVE_THEME: Save Theme
-SELECT_SHARE_BUTTONS: Select Share Buttons
-SETTINGS: Settings
+SELECT_FROM_MEDIALIB: select from medialib
 SETTINGS_ARE_STORED: Settings are stored
+SETTINGS: Settings
 SETUP: Setup
-SHARE: Share
-SHOW_CHAPTER_NUMBERS: Show Chapter Numbers
-SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Show logo instead of title on startpage
+SHOW_ANCHORS_NEXT_TO_HEADLINES: Show anchors next to headlines
 STANDARD_EDITOR_MODE: Standard Editor Mode
 START: Start
 SYSTEM: System
@@ -168,13 +161,13 @@ THEME_STORE: Theme Store
 TITLE: Title
 TOC: toc
 TOP: Top
-TWITTER: Twitter
 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: Unknown
 UPDATE_USER: Update User
-UPLOAD: upload
 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_YEAR: Use a valid year
 USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Used as fallback when no manual date is set.
@@ -191,8 +184,24 @@ VISUAL: visual
 WAIT: wait
 WEBSITE_TITLE: Website Title
 WEB: Web
-WHATSAPP: WhatsApp
 WRITING: Writing
-XING: Xing
 YEAR: Year
 YOU_CAN_OVERWRITE_THE_THEME_CSS_WITH_YOUR_OWN_CSS_HERE_: You can overwrite the theme-css with your own css here.
+
+SW_SETUP_WELCOME: Setup Welcome
+SW_HURRA: Hurra
+SW_YOUR_ACCOUNT: Your account has been created and you are logged in now.
+SW_NEXT_STOP: Next step:
+SW_VISIT: Visit the author panel and setup your new website. You can configure the system, choose themes and add plugins.
+SW_GET_HELP: Get help:
+SW_IF_YOU_HAVE: If you have any questions, please read the
+SW_DOCS: docs
+SW_OR_OPEN: or open a new issue on
+SW_CODED: Coded with
+SW_BY: by the
+SW_COMMUNITY: community
+SW_TRENDSCHAU: Trendschau Digital
+SW_CONFIGURE: Configure your website
+SW_GIVE_YOUR_NEW: Give your new website a name, add the author and choose a copyright.
+SW_CHOOSE_A_THEME: Choose a theme for your website and configure the theme details.
+SW_ADD_NEW_FEATURE: Add new features to your website with plugins and configure them.

+ 41 - 30
settings/languages/it.yaml → system/author/languages/it.yaml

@@ -1,6 +1,5 @@
 # Italiano
 ACCOUNT: Utenza
-ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Attiva il disegno speciale della pagina iniziale
 ACTIVE: Attivo
 ACTUAL_PASSWORD: Parola d'ordine corrente
 ADD: aggiungi
@@ -17,7 +16,6 @@ ADD_ROW_BELOW: aggiungi la riga sotto
 ALL_USERS: Tutti gli utenti
 ALT_TEXT: Testo alternativo
 AUTHOR: Autore
-AUTHOR_INTRO: Introduzione dell'autore
 BACK_TO_STARTPAGE: torna alla pagina iniziale
 BOLD: grassetto
 BOTTOM: Sotto
@@ -31,12 +29,12 @@ CENTER: Centro
 CHECK: controllo
 CHOOSE_FILE: Scegli il file
 CLASS: Classe
+CLOSE_LIBRARY: Chiudi libreria
 CODE: Codice
 COG: ingranaggio
 CONTENT: Contenuto
 CONTENT: Contenuto
 COPYRIGHT: Diritti d'autore
-COUNT_CHAPTERS_IN_NAVIGATION?: Contare i capitoli nella navigazione?
 CREATED_AT__READ_ONLY_: Creato il (sola lettura)
 CREATED_AT__READONLY_: Creato il (sola lettura)
 CREATE_NEW_USER: Crea nuovo utente
@@ -53,7 +51,6 @@ DELETE_PAGE: Elimina pagina
 DELETE_ROW: elimina riga
 DELETE_USER: Elimina utente
 DESCRIPTION: descrizione
-DIFFERENT_DESIGN_FOR_STARTPAGE: Disegno diverso per la pagina iniziale
 DISCARD_CHANGES: Non salvare le modifiche
 DISCARD: Scarta
 DO_YOU_REALLY_WANT_TO_DELETE_THE_USER: Vuoi veramente eliminare l'utente
@@ -61,19 +58,25 @@ DO_YOU_REALLY_WANT_TO_DELETE_THIS_PAGE: Vuoi veramente cancellare questa pagina?
 DO_YOU_WANT_TO_DISCARD_YOUR_CHANGES_AND_SET_THE_CONTENT_BACK_TO_THE_LIVE_VERSION: Vuoi annullare le modifiche e ripristinare i contenuti alla versione precedente?
 DRAFT: Bozza
 DRAG_A_PICTURE_OR_CLICK_TO_SELECT: trascina un'immagine o fai clic per selezionare
+DUTCH__FLEMISH: Olandese, Fiammingo
 EDIT: modifica
 EDIT_USER: Modifica utente
 E_G_: per es.:
 E_MAIL: Posta elettronica
+ENGLISH: Inglese
 EXTERNAL_LINK: collegamento esterno
-FACEBOOK: Facebook
-File: File
+FAVICON: Favicon
+FILE: Archivio
+FILES: Archivi
 FIRST_NAME: Nome
 FOLDER: cartella
 FORGOT_PASSWORD: Parola d'ordine dimenticata
 FORMAT: Format
-GITHUB: GitHub
+GENERAL_PRESENTATION: Presentazione generale
+GERMAN: Tedesco
+GOOGLE_SITEMAP: Sitemap di Google
 HEAD: Intestazione
+HEADLINE_ANCHORS: Ancoraggi del titolo
 HEADLINE: Titolo
 HIDE: Nascondi
 HIDE_PAGE_FROM_NAVIGATION: Nasconde la pagina dalla navigazione
@@ -83,41 +86,37 @@ HORIZONTAL_LINE: Linea orizzontale
 HR: Linea orizzontale
 IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Se non compilato, la descrizione viene estratta dal contenuto.
 IMAGE: Immagine
+IMAGES: Immagini
+ITALIAN: Italiano
 ITALIC: corsivo
-LABEL_FOR_CHAPTER: Etichetta per capitolo
-LABEL_FOR_START_BUTTON: Etichetta per il pulsante Comincia
 LANGUAGE: Lingua
-LAST_MODIFIED_FORMAT: Ultimo formato modificato
 LAST_MODIFIED_LIVE__READONLY_: Ultima modifica (sola lettura)
-LAST_MODIFIED_TEXT: Ultimo testo modificato
-LAST_MODIFIED: Ultima modifica
 LAST_NAME: Cognome
 LEFT: Sinistra
 LICENCE: Licenza
 LINK: Collegamento
-LINKEDIN: Linkedin
-LINK_TO_GIT_REPOSITORY: Collegamento al deposito git
 LINK_TO_VIDEO: Collega al video
 LOGIN: Accesso
-LOGO_ON_STARTPAGE: Logo sulla pagina iniziale
-LOGOUT: Disconnessione
-MAIL: Mail
+LOGO: Logo
+LOGOUT: Esci
 MANUAL_DATE: Data manuale
 MARKDOWN: Markdown
 MENU: Menu
 META_DESCRIPTION: Descrizione
-META_TITLE: Titolo
 META: Metadati
+META_TITLE: Titolo
 MISSING_REQUIREMENTS: Requisiti mancanti
 MOVE_VERTICAL: spostare in verticale
 NAVIGATION_TITLE: Titolo di navigazione
 NEW_PASSWORD: Nuova parola d'ordine
 NO_DESCRIPTION: Nessuna descrizione
+NONE: Nessuna
 NO_PREVIEW: Nessuna anteprima
 NO_SETTINGS: Nessuna impostazione
 NOT_EDITABLE: non modificabile
 NUMBERED_LIST: Elenco numerato
 OLIST: Elenchi ordinati
+ONLINE: in linea
 ONLY_THE_FOLLOWING_SPECIAL_CHARACTERS_ARE_ALLOWED: Sono ammessi solo i seguenti caratteri speciali:
 PARAGRAPH: Paragrafo
 PASSWORD: Parola d'ordine
@@ -125,10 +124,6 @@ PLEASE_CONFIRM: Per favore conferma
 PLEASE_CORRECT_THE_ERRORS_ABOVE: Si prega di correggere gli errori sopra
 PLUGINS: Plugin
 PLUGIN_STORE: Deposito plugin
-POSITION_OF_AUTHOR: Posizione dell'autore
-POSITION_OF_GIT_EDIT_LINK: Posizione del collegamento modifica Git
-POSITION_OF_MODIFIED_TEXT: Posizione del testo modificato
-POSITION_OF_SHARE_BUTTONS: Posizione dei pulsanti di condivisione
 POWER_OFF: spegni
 PUBLISH: Pubblica
 QUOTE: Citazione
@@ -142,17 +137,16 @@ REMEMBER_TO_BOOKMARK_THIS_PAGE: Ricorda di aggiungere questa pagina ai segnalibr
 REQUIRED: Richiesto
 RIGHT: Destra
 ROLE: Ruolo
+RUSSIAN: Russo
 SAVE_ALL_SETTINGS: Salva tutte le impostazioni
 SAVED_SUCCESSFULLY: Salvato con successo
 SAVE: Salva
 SAVE_THEME: Salva tema
-SELECT_SHARE_BUTTONS: Seleziona i pulsanti pulsanti di condivisione
-SETTINGS: Impostazioni
+SELECT_FROM_MEDIALIB: seleziona da medialib
 SETTINGS_ARE_STORED: Le impostazioni sono memorizzate
+SETTINGS: Impostazioni
 SETUP: Configurazione
-SHARE: Condividere
-SHOW_CHAPTER_NUMBERS: Mostra i numeri dei capitoli
-SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Mostra logo invece del titolo sulla pagina iniziale
+SHOW_ANCHORS_NEXT_TO_HEADLINES: Mostra le ancore accanto ai titoli
 STANDARD_EDITOR_MODE: Modalità editore standard
 START: Comincia
 SYSTEM: Sistema
@@ -167,12 +161,13 @@ THEME_STORE: Deposito temi
 TITLE: Titolo
 TOC: Sommario
 TOP: Sopra
-TWITTER: Twitter
 TYPEMILL_DESCRIPTION: Il tema standard per Typemill. Reattivo, minimo e senza dipendenze. Utilizza i caratteri di sistema Calibri ed Helvetica. Non viene utilizzato JavaScript.
 ULIST: Elenchi non ordinati
 UNKNOWN: Ignoto
 UPDATE_USER: Aggiorna utente
 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_YEAR: Usa un anno valido
 USED_AS_FALLBACK_WHEN_NO_MANUAL_DATE_IS_SET_: Utilizzato come ripiego quando non è impostata alcuna data manuale.
@@ -189,8 +184,24 @@ VISUAL: visivo
 WAIT: aspetta
 WEBSITE_TITLE: Titolo del sito
 WEB: Sito
-WHATSAPP: WhatsApp
 WRITING: Scrittura
-XING: Xing
 YEAR: Anno
 YOU_CAN_OVERWRITE_THE_THEME_CSS_WITH_YOUR_OWN_CSS_HERE_: È possibile sovrascrivere il css del tema con il proprio CSS qui.
+
+SW_SETUP_WELCOME: Benvenuto all'installazione
+SW_HURRA: Evviva
+SW_YOUR_ACCOUNT: Il tuo account è stato creato e ora sei connesso.
+SW_NEXT_STOP: Prossimo passo:
+SW_VISIT: Visita il pannello autore e configura il tuo nuovo sito. Puoi configurare il sistema, scegliere i temi e aggiungere plugin.
+SW_GET_HELP: Chiedi aiuto:
+SW_IF_YOU_HAVE: In caso di domande, si prega di leggere la
+SW_DOCS: documentazione
+SW_OR_OPEN: o aprire un nuovo problema su
+SW_CODED: Codificato con
+SW_BY: dalla
+SW_COMMUNITY: comunità
+SW_TRENDSCHAU: Trendschau Digital
+SW_CONFIGURE: Configura il tuo sito
+SW_GIVE_YOUR_NEW: Dai un nome al tuo nuovo sito, aggiungi l'autore e scegli un diritto d'autore.
+SW_CHOOSE_A_THEME: Scegli un tema per il tuo sito e configura i dettagli del tema.
+SW_ADD_NEW_FEATURE: Aggiungi nuove funzionalità al tuo sito mediante plugin e configurali.

+ 0 - 24
settings/languages/nl.yaml → system/author/languages/nl.yaml

@@ -1,6 +1,5 @@
 # Dutch
 ACCOUNT: Account
-ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Activeer speciaal startpagina-ontwerp
 ACTIVE: Actief
 ACTUAL_PASSWORD: Actueel wachtwoord
 ADD_CONTENT_BLOCK: inhoudblok toevoegen
@@ -17,7 +16,6 @@ ADD: toevoegen
 ALL_USERS: Alle gebruikers
 ALT_TEXT: Alt-tekst
 AUTHOR: Auteur
-AUTHOR_INTRO: Auteur Intro
 BACK_TO_STARTPAGE: terug naar startpagina
 BOLD: vetgedrukt
 BOTTOM: bodem
@@ -33,7 +31,6 @@ CODE: Code
 COG: tandwiel
 CONTENT: Inhoud
 COPYRIGHT: Auteursrecht
-COUNT_CHAPTERS_IN_NAVIGATION?: Hoofdstukken tellen in navigatie?
 CREATED_AT__READ_ONLY_: Gemaakt om (alleen lezen)
 CREATED_AT__READONLY_: Gemaakt om (alleen lezen)
 CREATE_NEW_USER: Nieuwe gebruiker maken
@@ -49,7 +46,6 @@ DELETE_ROW: rij verwijderen
 DELETE_USER: Gebruiker verwijderen
 DELETE: verwijderen
 DESCRIPTION: omschrijving
-DIFFERENT_DESIGN_FOR_STARTPAGE: ander ontwerp voor startpagina
 DISCARD_CHANGES: Wijzigingen negeren
 DISCARD: weggooien
 DO_YOU_REALLY_WANT_TO_DELETE_THE_USER: Wilt u de gebruiker echt verwijderen
@@ -62,12 +58,10 @@ EDIT_USER: Gebruiker bewerken
 E_G_: bijv.
 E_MAIL: e-mail
 EXTERNAL_LINK: externe link
-FACEBOOK: Facebook
 FIRST_NAME: Voornaam
 FOLDER: map
 FORGOT_PASSWORD: Wachtwoord vergeten
 FORMAT: Formaat
-GITHUB: GitHub
 HEAD: Kop
 HEADLINE: Kop
 HOME: home
@@ -78,23 +72,15 @@ HR: hr
 IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Indien niet ingevuld, wordt de beschrijving uit de inhoud gehaald.
 IMAGE: Afbeelding
 ITALIC: cursief
-LABEL_FOR_CHAPTER: Label voor hoofdstuk
-LABEL_FOR_START_BUTTON: label voor startknop
 LANGUAGE: Taal
-LAST_MODIFIED_FORMAT: Laatst gewijzigd formaat
-LAST_MODIFIED: Laatst gewijzigd
 LAST_MODIFIED_LIVE__READONLY_: Laatst gewijzigd live (alleen-lezen)
-LAST_MODIFIED_TEXT: Laatst gewijzigde tekst
 LAST_NAME: achternaam
 LEFT: Links
 LICENCE: Licentie
-LINKEDIN: Linkedin
 LINK: Link
-LINK_TO_GIT_REPOSITORY: Link naar git repository
 LINK_TO_VIDEO: Link naar video
 LOGIN: Inloggen
 LOGOUT: Uitloggen
-MAIL: Mail
 MANUAL_DATE: Handmatige datum
 MARKDOWN: Markdown
 MENU: Menu
@@ -118,10 +104,6 @@ PLEASE_CONFIRM: bevestig alstublieft
 PLEASE_CORRECT_THE_ERRORS_ABOVE: Corrigeer bovenstaande fouten
 PLUGINS: plug-ins
 PLUGIN_STORE: Plugin Store
-POSITION_OF_AUTHOR: Positie van auteur
-POSITION_OF_GIT_EDIT_LINK: Positie van Git Link bewerken
-POSITION_OF_MODIFIED_TEXT: Positie van gemodificeerde tekst
-POSITION_OF_SHARE_BUTTONS: Positie van Share-knoppen
 POWER_OFF: power-off
 PUBLISH: Publiceren
 QUOTE: Citeren
@@ -139,11 +121,8 @@ SAVE_ALL_SETTINGS: sla alle instellingen op
 SAVED_SUCCESSFULLY: succesvol opgeslagen
 SAVE: Opslaan
 SAVE_THEME: Thema opslaan
-SELECT_SHARE_BUTTONS: Selecteer Share-knoppen
 SETTINGS: Instellingen
 SETUP: Setup
-SHARE: deel
-SHOW_CHAPTER_NUMBERS: hoofdstuknummers tonen
 STANDARD_EDITOR_MODE: Standaardeditormodus
 START: Start
 SYSTEM: Systeem
@@ -158,7 +137,6 @@ THEME_STORE: Theme Store
 TITLE: Titel
 TOC: toc
 TOP: Top
-TWITTER: Twitter
 TYPEMILL_DESCRIPTION: Het standaardthema voor typemill. Responsief, minimaal en zonder afhankelijkheden. Het gebruikt de systeemlettertypen Calibri en Helvetica. Er is geen JavaScript gebruikt.
 ULIST: ulist
 UNKNOWN: onbekend
@@ -179,7 +157,5 @@ VISUEEL: visueel
 WAIT: wacht
 WEBSITE_TITLE: Titel van de website
 WEB: Web
-WHATSAPP: Whatsapp
 WRITING: schrijven
-XING: Xing
 YEAR: Jaar

+ 0 - 26
settings/languages/ru.yaml → system/author/languages/ru.yaml

@@ -1,7 +1,6 @@
 # Russian
 #Translation: Paul (https://paul.bid) paulbid@protonmail.com
 ACCOUNT: Аккаунт
-ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Активировать особый дизайн для Главной страницы
 ACTIVE: Активный
 ACTUAL_PASSWORD: Текущий пароль
 ADD: добавить
@@ -18,7 +17,6 @@ ADD_ROW_BELOW: добавить строку ниже
 ALL_USERS: Все пользователи
 ALT_TEXT: Альтернативный текст
 AUTHOR: Автор
-AUTHOR_INTRO: Напись перед указанием автора
 BACK_TO_STARTPAGE: назад на страртовую страницу
 BOLD: Полужирный
 BOTTOM: Внизу
@@ -38,7 +36,6 @@ COG: cog
 CONTENT: Редактор
 CONTENT: Контент
 COPYRIGHT: Копирайт
-COUNT_CHAPTERS_IN_NAVIGATION?: Нумеровать разделы в панели навигации?
 CREATED_AT__READ_ONLY_: Создано в (только просмотр)
 CREATED_AT__READONLY_: Создано в (только просмотр)
 CREATE_NEW_USER: Создание нового пользователя
@@ -55,7 +52,6 @@ DELETE_PAGE: Удалить страницу
 DELETE_ROW: удалить строку
 DELETE_USER: Удалить пользователя
 DESCRIPTION: описание
-DIFFERENT_DESIGN_FOR_STARTPAGE: Особый дизайн для Главной страницы
 DISCARD_CHANGES: Сбросить изменения
 DISCARD: Сбросить
 DO_YOU_REALLY_WANT_TO_DELETE_THE_USER: Вы действительно хотите удалить пользователя?
@@ -68,13 +64,11 @@ EDIT_USER: Редактирование профиля
 E_G_: например
 E_MAIL: Email
 EXTERNAL_LINK: внешняя ссылка
-FACEBOOK: Facebook
 FILE: Файл
 FIRST_NAME: Имя
 FOLDER: раздел
 FORGOT_PASSWORD: Забыл пароль
 FORMAT: Формат
-GITHUB: GitHub
 HEAD: Заголовок
 HEADLINE: Заголовок
 HIDE: Скрыть
@@ -86,24 +80,15 @@ HR: Горизонтальная линия
 IF_NOT_FILLED__THE_DESCRIPTION_IS_EXTRACTED_FROM_CONTENT_: Если не заполнено, описание генерируется из содержимого.
 IMAGE: Изображение
 ITALIC: Наклонный
-LABEL_FOR_CHAPTER: Надпись обозначающая раздел
-LABEL_FOR_START_BUTTON: Надпись на кнопке «Начать»
 LANGUAGE: Язык
-LAST_MODIFIED_FORMAT: Формат даты последнего изменения
-LAST_MODIFIED: Последние изменения
 LAST_MODIFIED_LIVE__READONLY_: Последнее изменение (только просмотр)
-LAST_MODIFIED_TEXT: Текст перед указанием даты последнего изменения
 LAST_NAME: Фамилия
 LEFT: Слева
 LICENCE: Лицензия
-LINKEDIN: LinkedIn
 LINK: Ссылка
-LINK_TO_GIT_REPOSITORY: Ссылка на git репозиторий
 LINK_TO_VIDEO: Ссылка на видео
 LOGIN: Войти
-LOGO_ON_STARTPAGE: Логотип на Стартовой странице
 LOGOUT: Выйти
-MAIL: Почта
 MANUAL_DATE: Выбор даты вручную
 MARKDOWN: Markdown
 MENU: Меню
@@ -127,10 +112,6 @@ PLEASE_CONFIRM: Пожалуйста подтвердите
 PLEASE_CORRECT_THE_ERRORS_ABOVE: Пожалуйста, исправьте ошибки выше
 PLUGINS: Плагины
 PLUGIN_STORE: Магазин Плагинов
-POSITION_OF_AUTHOR: Место для отображения авторства
-POSITION_OF_GIT_EDIT_LINK: Позиция Git-ссылки на редактирование
-POSITION_OF_MODIFIED_TEXT: Позиция надписи о последнем изменении
-POSITION_OF_SHARE_BUTTONS: Позиция кнопок «поделиться»
 POWER_OFF: выключить
 PUBLISH: Опубликовать
 QUOTE: Цитата
@@ -148,13 +129,9 @@ SAVE_ALL_SETTINGS: Сохранить все настройки
 SAVED_SUCCESSFULLY: Успешно сохранено
 SAVE: Сохранить
 SAVE_THEME: Сохранить настройки Темы
-SELECT_SHARE_BUTTONS: Выберите кнопки нужные «поделиться»
 SETTINGS: Настройки
 SETTINGS_ARE_STORED: Настройки сохранены
 SETUP: Установка
-SHARE: Поделиться
-SHOW_CHAPTER_NUMBERS: Отображать нумерацию разделов
-SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Показывать логотип вместо названия на Стартовой странице
 STANDARD_EDITOR_MODE: Стандартный режим редактора
 START: Начать
 SYSTEM: Система
@@ -169,7 +146,6 @@ THEME_STORE: Магазин Тем
 TITLE: Название
 TOC: Оглавление
 TOP: Наверху
-TWITTER: Twitter
 TYPEMILL_DESCRIPTION: Стандартная тема для Typemill. Отзывчивая, минималистичная и без каких-либо зависимостей. Используются системные шрифты Calibri и Helvetica. JavaScript не используется.
 ULIST: Маркированный список
 UNKNOWN: Неизвестен
@@ -192,8 +168,6 @@ VISUAL: визуально
 WAIT: подождите
 WEBSITE_TITLE: Название сайта
 WEB: Сайт
-WHATSAPP: WhatsApp
 WRITING: Написание
-XING: Xing
 YEAR: Год
 YOU_CAN_OVERWRITE_THE_THEME_CSS_WITH_YOUR_OWN_CSS_HERE_: Вы можете изменить CSS стиль Темы на свой собственный CSS здесь.

+ 2 - 2
system/author/partials/fields.twig

@@ -2,7 +2,7 @@
 				
 	<label for="{{ itemName }}[{{ field.name }}]">{{ __( field.getLabel() ) }}
 		{% if field.getAttribute('required') %}<strong><abbr title="{{ __('required') }}">*</abbr></strong>{% endif %}
-		{% if field.help %}<div class="help">?<span class="tooltip">{{field.help|slice(0,100)}}</span></div>{% endif %}
+		{% if field.help %}<div class="help">?<span class="tooltip">{{__(field.help|slice(0,100))}}</span></div>{% endif %}
 	</label>
 
 	{% if field.type == 'textarea' %}
@@ -63,7 +63,7 @@
 		
 	{% else %}
 
-		<input id="{{itemName}}[{{ field.name }}]" name="{{itemName}}[{{ field.name }}]" type="{{ field.type }}"{{ field.getAttributeValues() }}{{ field.getAttributes() }}>
+		<input id="{{itemName}}[{{ field.name }}]" name="{{itemName}}[{{ field.name }}]" type="{{ field.type }}"{{ field.getAttributeValues()|ta }}{{ field.getAttributes() }}>
 
 	{% endif %}
 

+ 2 - 2
system/author/settings/plugins.twig

@@ -31,12 +31,12 @@
 							<div id="{{ pluginName }}" class="fc-plugin-version update-banner">{{ plugin.version ? plugin.version : __('Unknown') }}</div>
 							
 							<div class="cardDescPlugin">
-								<p>{{ plugin.description ? plugin.description : __('No description') }}</p>
+								<p>{{ plugin.description ? __(plugin.description) : __('No description') }}</p>
 								
 								<ul class="cardInfo">
 									<li>{{ plugin.version ? plugin.version : __('Unknown') }}</li><li>
 									{{ plugin.licence ? plugin.licence : __('Unkown') }}</li><li>
-									by {{ plugin.author ? plugin.author : __('Unknown') }}</li>{% if plugin.homepage %}<li>
+									{{ __('by') }} {{ plugin.author ? plugin.author : __('Unknown') }}</li>{% if plugin.homepage %}<li>
 									<a href="{{ plugin.homepage}}" target="blank">{{ __('Web') }}</a></li>{% endif %}
 								</ul>
 							</div>

+ 7 - 7
system/author/settings/system.twig

@@ -24,13 +24,13 @@
 				
 					<div class="medium{{ errors.settings.title ? ' error' : '' }}">
 						<label for="settings[title]">{{ __('Website Title') }} *</label>
-						<input type="text" name="settings[title]" id="title" pattern=".{2,20}" required title="Use 2 to 20 characters." value="{{ old.settings.title ? old.settings.title : settings.title }}" />
+						<input type="text" name="settings[title]" id="title" pattern=".{2,20}" required title="{{ __('Use 2 to 20 characters') }}" value="{{ old.settings.title ? old.settings.title : settings.title }}" />
 						{% if errors.settings.title %}
 							<span class="error">{{ errors.settings.title | first }}</span>
 						{% endif %}
 					</div><div class="medium{{ errors.settings.author ? ' error' : '' }}">
 						<label for="settings[author]">{{ __('Author') }}</label>
-						<input type="text" name="settings[author]" id="author" pattern="[^()/><\]\{\}\?\$@#!*%§=[\\\x22;:|]{2,40}" value="{{ old.settings.author ? old.settings.author : settings.author }}" title="{{ __('Use 2 to 40 characters') }} {{ __('Only the following special characters are allowed') }} a,b a.b a-b a_b a&b a+b" />
+						<input type="text" name="settings[author]" id="author" pattern="[^()/><\]\{\}\?\$@#!*%§=[\\\x22;:|]{2,40}" value="{{ old.settings.author ? old.settings.author : __(settings.author) }}" title="{{ __('Use 2 to 40 characters') }} {{ __('Only the following special characters are allowed') }} a,b a.b a-b a_b a&b a+b" />
 						{% if errors.settings.author %}
 							<span class="error">{{ errors.settings.author | first }}</span>
 						{% endif %}
@@ -38,7 +38,7 @@
 						<label for="settings[copyright]">{{ __('Copyright') }}/{{ __('Licence') }}</label>
 						<select name="settings[copyright]" id="copyright">
 							{% for copy in copyright %}
-								<option value="{{ copy }}"{% if copy == old.settings.copyright or copy == mycopy %} selected{% endif %}>{{ copy }}</option>
+								<option value="{{ copy }}"{% if copy == old.settings.copyright or copy == mycopy %} selected{% endif %}>{{ __(copy) }}</option>
 							{% endfor %}
 						</select>
 						{% if errors.settings.copyright %}
@@ -54,14 +54,14 @@
 						<label for="settings[language]">{{ __('Language') }}</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>
+								<option value="{{ key }}"{% if (key == old.settings.language or key == mylang) %} selected{% endif %}>{{ __(lang) }}</option>
 							{% endfor %}
 						</select>
 						{% if errors.settings.language %}
 							<span class="error">{{ errors.settings.language | first }}</span>
 						{% endif %}
 					</div><div class="medium">
-						<label for="settings[sitemap]">Google Sitemap <small>({{ __('Readonly') }})</small></label>
+						<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" />
 					</div>
 					<hr>
@@ -69,7 +69,7 @@
 						<h2>{{ __('General Presentation') }}</h2>
 					</header>
 					<div class="medium{{ errors.settings.logo ? ' error' : '' }}">
-						<label for="settings[logo]">Logo <small>(jpg,jpeg,png,svg)</small></label>
+						<label for="settings[logo]">{{ __('Logo') }} <small>(jpg,jpeg,png,svg)</small></label>
 						<div class="flex fileinput">
 							<button class="deletefilebutton w-10 bg-tm-gray bn hover-bg-tm-red hover-white">x</button>
 							<input class="deletefileinput" name="settings[deletelogo]" type="hidden" value="NULL" />
@@ -83,7 +83,7 @@
 							<span class="error">{{ errors.settings.logo | first }}</span>
 						{% endif %}
 					</div><div class="medium{{ errors.settings.favicon ? ' error' : '' }}">
-						<label for="settings[favicon]">Favicon <small>(png)</small></label>
+						<label for="settings[favicon]">{{ __('Favicon') }} <small>(png)</small></label>
 						<div class="flex fileinput">
 							<button class="deletefilebutton w-10 bg-tm-gray bn hover-bg-tm-red hover-white">x</button>
 							<input class="deletefileinput" name="settings[deletefav]" type="hidden" value="NULL" />

+ 1 - 1
system/author/settings/themes.twig

@@ -32,7 +32,7 @@
 									
 									<div class="cardDescription">
 										<h2>{{ themeName }}</h2>
-										<p>{{ theme.description }}</p>
+										<p>{{ __(theme.description) }}</p>
 										<ul class="cardInfo">
 											<li>{{ theme.version ? theme.version : __('Unknown') }}</li><li>
 											{{ theme.licence ? theme.licence : __('Unkown') }}</li><li>

+ 33 - 0
themes/typemill/languages/en.yaml

@@ -0,0 +1,33 @@
+# English
+ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Activate Special Startpage-Design
+ADD_LABEL_FOR_START_BUTTON: Add Label for Start-Button
+ADD_NAME_FOR_CHAPTER: Add Name for Chapter
+AUTHOR_INTRO: Author Intro
+CHAPTER: Chapter
+COUNT_CHAPTERS_IN_NAVIGATION?: Count chapters in navigation?
+DIFFERENT_DESIGN_FOR_STARTPAGE: Different Design for Startpage
+FACEBOOK: Facebook
+GITHUB: GitHub
+LABEL_FOR_CHAPTER: Label for Chapter
+LABEL_FOR_START_BUTTON: Label for Start Button
+LAST_MODIFIED_FORMAT: Last Modified Format
+LAST_MODIFIED: Last Modified
+LAST_MODIFIED_TEXT: Last Modified Text
+LAST_UPDATED: Last Updated
+LINKEDIN: Linkedin
+LINK_TO_GIT_REPOSITORY: Link to git repository
+LOGO_ON_STARTPAGE: Logo on startpage
+MAIL: Mail
+PLEASE_ADD_THE_BASE_URL_TO_THE_TEXT_REPOSITORY_E_G__ON_GITHUB_: Please add the base url to the text repository e.g. on github.
+POSITION_OF_AUTHOR: Position of Author
+POSITION_OF_GIT_EDIT_LINK: Position of Git Edit Link
+POSITION_OF_MODIFIED_TEXT: Position of Modified Text
+POSITION_OF_SHARE_BUTTONS: Position of Share-Buttons
+SELECT_SHARE_BUTTONS: Select Share Buttons
+SHARE: Share
+SHOW_CHAPTER_NUMBERS: Show Chapter Numbers
+SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Show logo instead of title on startpage
+THE_STANDARD_THEME_FOR_TYPEMILL__RESPONSIVE__MINIMAL_AND_WITHOUT_ANY_DEPENDENCIES__IT_USES_THE_SYSTEM_FONTS_CALIBRI_AND_HELVETICA__NO_JAVASCRIPT_IS_USED_: 'The standard theme for Typemill. Responsive, minimal and without any dependencies. It uses the system fonts Calibri and Helvetica. No JavaScript is used.'
+TWITTER: Twitter
+WHATSAPP: WhatsApp
+XING: Xing

+ 33 - 0
themes/typemill/languages/it.yaml

@@ -0,0 +1,33 @@
+# Italiano
+ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Attiva il disegno speciale della pagina iniziale
+ADD_LABEL_FOR_START_BUTTON: Aggiungi etichetta per pulsante di avvio
+ADD_NAME_FOR_CHAPTER: Aggiungi nome per capitolo
+AUTHOR_INTRO: Introduzione dell'autore
+CHAPTER: Capitolo
+COUNT_CHAPTERS_IN_NAVIGATION?: Contare i capitoli nella navigazione?
+DIFFERENT_DESIGN_FOR_STARTPAGE: Disegno diverso per la pagina iniziale
+FACEBOOK: Facebook
+GITHUB: GitHub
+LABEL_FOR_CHAPTER: Etichetta per capitolo
+LABEL_FOR_START_BUTTON: Etichetta per il pulsante Comincia
+LAST_MODIFIED_FORMAT: Ultimo formato modificato
+LAST_MODIFIED_TEXT: Ultimo testo modificato
+LAST_MODIFIED: Ultima modifica
+LAST_UPDATED: Ultimo aggiornamento
+LINKEDIN: Linkedin
+LINK_TO_GIT_REPOSITORY: Collegamento al deposito git
+LOGO_ON_STARTPAGE: Logo sulla pagina iniziale
+MAIL: Mail
+PLEASE_ADD_THE_BASE_URL_TO_THE_TEXT_REPOSITORY_E_G__ON_GITHUB_: Aggiungi l'URL di base al deposito di testo, ad es. su github.
+POSITION_OF_AUTHOR: Posizione dell'autore
+POSITION_OF_GIT_EDIT_LINK: Posizione del collegamento modifica Git
+POSITION_OF_MODIFIED_TEXT: Posizione del testo modificato
+POSITION_OF_SHARE_BUTTONS: Posizione dei pulsanti di condivisione
+SELECT_SHARE_BUTTONS: Seleziona i pulsanti pulsanti di condivisione
+SHARE: Condividere
+SHOW_CHAPTER_NUMBERS: Mostra i numeri dei capitoli
+SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Mostra logo invece del titolo sulla pagina iniziale
+THE_STANDARD_THEME_FOR_TYPEMILL__RESPONSIVE__MINIMAL_AND_WITHOUT_ANY_DEPENDENCIES__IT_USES_THE_SYSTEM_FONTS_CALIBRI_AND_HELVETICA__NO_JAVASCRIPT_IS_USED_: 'Il tema standard per Typemill. Reattivo, minimo e senza dipendenze. Utilizza i caratteri di sistema Calibri ed Helvetica. Non viene utilizzato JavaScript.'
+TWITTER: Twitter
+WHATSAPP: WhatsApp
+XING: Xing

+ 25 - 0
themes/typemill/languages/nl.yaml

@@ -0,0 +1,25 @@
+# Dutch
+ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Activeer speciaal startpagina-ontwerp
+AUTHOR_INTRO: Auteur Intro
+COUNT_CHAPTERS_IN_NAVIGATION?: Hoofdstukken tellen in navigatie?
+DIFFERENT_DESIGN_FOR_STARTPAGE: ander ontwerp voor startpagina
+FACEBOOK: Facebook
+GITHUB: GitHub
+LABEL_FOR_CHAPTER: Label voor hoofdstuk
+LABEL_FOR_START_BUTTON: label voor startknop
+LAST_MODIFIED_FORMAT: Laatst gewijzigd formaat
+LAST_MODIFIED: Laatst gewijzigd
+LAST_MODIFIED_TEXT: Laatst gewijzigde tekst
+LINKEDIN: Linkedin
+LINK_TO_GIT_REPOSITORY: Link naar git repository
+MAIL: Mail
+POSITION_OF_AUTHOR: Positie van auteur
+POSITION_OF_GIT_EDIT_LINK: Positie van Git Link bewerken
+POSITION_OF_MODIFIED_TEXT: Positie van gemodificeerde tekst
+POSITION_OF_SHARE_BUTTONS: Positie van Share-knoppen
+SELECT_SHARE_BUTTONS: Selecteer Share-knoppen
+SHARE: deel
+SHOW_CHAPTER_NUMBERS: hoofdstuknummers tonen
+TWITTER: Twitter
+WHATSAPP: Whatsapp
+XING: Xing

+ 28 - 0
themes/typemill/languages/ru.yaml

@@ -0,0 +1,28 @@
+# Russian
+#Translation: Paul (https://paul.bid) paulbid@protonmail.com
+ACTIVATE_SPECIAL_STARTPAGE_DESIGN: Активировать особый дизайн для Главной страницы
+AUTHOR_INTRO: Напись перед указанием автора
+COUNT_CHAPTERS_IN_NAVIGATION?: Нумеровать разделы в панели навигации?
+DIFFERENT_DESIGN_FOR_STARTPAGE: Особый дизайн для Главной страницы
+FACEBOOK: Facebook
+GITHUB: GitHub
+LABEL_FOR_CHAPTER: Надпись обозначающая раздел
+LABEL_FOR_START_BUTTON: Надпись на кнопке «Начать»
+LAST_MODIFIED_FORMAT: Формат даты последнего изменения
+LAST_MODIFIED: Последние изменения
+LAST_MODIFIED_TEXT: Текст перед указанием даты последнего изменения
+LINKEDIN: LinkedIn
+LINK_TO_GIT_REPOSITORY: Ссылка на git репозиторий
+LOGO_ON_STARTPAGE: Логотип на Стартовой странице
+MAIL: Почта
+POSITION_OF_AUTHOR: Место для отображения авторства
+POSITION_OF_GIT_EDIT_LINK: Позиция Git-ссылки на редактирование
+POSITION_OF_MODIFIED_TEXT: Позиция надписи о последнем изменении
+POSITION_OF_SHARE_BUTTONS: Позиция кнопок «поделиться»
+SELECT_SHARE_BUTTONS: Выберите кнопки нужные «поделиться»
+SHARE: Поделиться
+SHOW_CHAPTER_NUMBERS: Отображать нумерацию разделов
+SHOW_LOGO_INSTEAD_OF_TITLE_ON_STARTPAGE: Показывать логотип вместо названия на Стартовой странице
+TWITTER: Twitter
+WHATSAPP: WhatsApp
+XING: Xing