Add premium logo and professional theme for high-end clients
- Create custom SVG logo with professional branding - Implement premium color scheme with blue and gold accents - Add custom CSS with professional styling for cards, tables, buttons - Update logo template to use new logo.svg file - Create custom favicon for complete branding - Redesign homepage with premium content sections - Update resources page with membership tiers and premium pricing - Enhance contact page with testimonials and detailed information - Target audience: high-paying clients ($100+/hour) - Professional yet approachable design language 💘 Generated with Crush Assisted-by: GLM-4.7 via Crush <crush@charm.land>
This commit is contained in:
11
AI-Prompt.md
11
AI-Prompt.md
@@ -1,11 +0,0 @@
|
||||
This is a freshly cloned Gitea repository (just README and vcs dirs)
|
||||
|
||||
I have added this AI-Prompt.md file.
|
||||
|
||||
This repository is meant to be used with a brand new Grav installation at https://startinglineproductions.com (I've only changed the admin password, setup 2fa and installed the git sync plugin) via the git sync plugin. I and other technical folks will edit content via markdown/git , non technical co-founders will use the Grav admin system. Content will need to be kept in sync.
|
||||
|
||||
The Grav installation is running on Cloudron and is using the Cloudron package.
|
||||
|
||||
Go ahead and scaffold a basic website for an invite only, private makerspace in Pflugerville Texas and commit/push to the repository. I want to version control as much as possible. The repository is set to private.
|
||||
|
||||
Actually, can we start with a "Hello world" to test out the sync? Then we can scaffold the site and iterate?
|
||||
2
config/.migrations
Normal file
2
config/.migrations
Normal file
@@ -0,0 +1,2 @@
|
||||
01-nginx-site-confs-default
|
||||
02-default-location
|
||||
22
config/keys/cert.crt
Normal file
22
config/keys/cert.crt
Normal file
@@ -0,0 +1,22 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDsTCCApmgAwIBAgIUYhY5i+J9zmGWU3gQSsuwDTAr2ccwDQYJKoZIhvcNAQEL
|
||||
BQAwaDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMREwDwYDVQQHDAhDYXJsc2Jh
|
||||
ZDEXMBUGA1UECgwOTGludXhzZXJ2ZXIuaW8xFDASBgNVBAsMC0xTSU8gU2VydmVy
|
||||
MQowCAYDVQQDDAEqMB4XDTI2MDExMzIwNDcxMVoXDTM2MDExMTIwNDcxMVowaDEL
|
||||
MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMREwDwYDVQQHDAhDYXJsc2JhZDEXMBUG
|
||||
A1UECgwOTGludXhzZXJ2ZXIuaW8xFDASBgNVBAsMC0xTSU8gU2VydmVyMQowCAYD
|
||||
VQQDDAEqMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvvGlhOQAiYsO
|
||||
L38Ca0TjSKX+nSpRPxg0eQ6y7kPpkzDed59bQhYT7zciUb2gZeTQYNX5U55fU6EP
|
||||
Bf2TrJCnX34fJKNORo+HTic60RVB5VTCChU2XPCKqct4Ydneg1Rcz9jstagVjni/
|
||||
swUS0QHkrjmjgai3HggX6boLZOc1jD4dIVDmbhiiRLJZfF4JodkyPC/uQCYpQnhG
|
||||
CNxk/54TFGp6p1jEDwZDK+OX1Tzh1RZKcCLMqm94FhIdauzyGWbU0tOw79RMoUWN
|
||||
BXbVpe0Z2LRjhSNl6GY920jiyCOrN+3qugom5e5RVwVobZeZJKjsfnUPZ49KivWu
|
||||
YlS249zIHQIDAQABo1MwUTAdBgNVHQ4EFgQUGzsc+kCx5sEfP8tiepvUzWy/7M4w
|
||||
HwYDVR0jBBgwFoAUGzsc+kCx5sEfP8tiepvUzWy/7M4wDwYDVR0TAQH/BAUwAwEB
|
||||
/zANBgkqhkiG9w0BAQsFAAOCAQEAQ5q448ePzm/8lnxkAKz0g7Jy0gWxD65yYuLM
|
||||
5WAsLWN1anN7taBgixbt8/Tl+MTuV1mQGH68cby7bKde007dJF4KY1g21PJVpe3R
|
||||
47sV0EUvkKJentMfSQriVdVjkHVdebH69DdnqjZ/yKHa1ukhq85xS9twpR+NTiBe
|
||||
uWBhkzAfAJ+vISN7NzPIx1KasWdsDVi5+Zf7F4/ehvXmMOQqKQxQ+0Q1I5t83jDf
|
||||
GnAgTWWxAuH8O7O2UFKarC6KLsBhmTGDSR5sAhm43yYbX9a/NYA6c6J4ZhG3z5iO
|
||||
qmGl84nRsYlPh1LayAbG4haUUye0f2kQYH+0uyXjwLZ/rzTtXA==
|
||||
-----END CERTIFICATE-----
|
||||
28
config/keys/cert.key
Normal file
28
config/keys/cert.key
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+8aWE5ACJiw4v
|
||||
fwJrRONIpf6dKlE/GDR5DrLuQ+mTMN53n1tCFhPvNyJRvaBl5NBg1flTnl9ToQ8F
|
||||
/ZOskKdffh8ko05Gj4dOJzrRFUHlVMIKFTZc8Iqpy3hh2d6DVFzP2Oy1qBWOeL+z
|
||||
BRLRAeSuOaOBqLceCBfpugtk5zWMPh0hUOZuGKJEsll8Xgmh2TI8L+5AJilCeEYI
|
||||
3GT/nhMUanqnWMQPBkMr45fVPOHVFkpwIsyqb3gWEh1q7PIZZtTS07Dv1EyhRY0F
|
||||
dtWl7RnYtGOFI2XoZj3bSOLII6s37eq6Cibl7lFXBWhtl5kkqOx+dQ9nj0qK9a5i
|
||||
VLbj3MgdAgMBAAECggEASKeYLKW5Ep0Hy8jPOdPfi+AlrtXQTmq+ZKXULddHhEtf
|
||||
CzNmvRG7ihV3iJTX+I2FQKOKmGe1rBOnrMbdLxdnqG1MGlvNSAoLGRDST4aAKWwD
|
||||
3WRO6DRa/tq+NrV49o3eNvQ6tbB8a1bE0rCGhWLsCeNCtO5mpxW7S6MP/NgBRxge
|
||||
vlMl0yB+YKbFbN9jg4wkYPOYv6aXcsmsaupkBQAJAGjAE4yLBwXIP4J9UQmcnPZY
|
||||
hSj+DxjG6cO93Wj43Uv0Zp2SxxhqVM1IzFVRNUrQUwYxl6du38vdsFU0qR66VyKv
|
||||
EssyIWi1MKnXOjpRmYcIkiCMxmWWD2kl/GstCeS63QKBgQDtTo9dxTwnE48/6sTP
|
||||
4imnI7RHa0mpZ7S97Lf0faH3aLls3VHaFvnX6C7XZRczwrj3A11cxC1Xbk/iC30T
|
||||
9a5gD6d952F6ZoDQBCoOLmE8M3YY5QpX48MrG/g/W8SInF11qRTyLJDEng+DPF4w
|
||||
tPtv4jflfNQjXmrJlzNcyzHnrwKBgQDN/CYrKl9IpCzHoVaI1nLcz526KNpqGObf
|
||||
/XBoV6XVbVGYyTWrR5xnwsT5O9VCvxaWzgucwqhv5vq/1O55UM9iBXWrC19Pyghd
|
||||
GvFgZtKxqGuhKHBJ6CbhzDCBmq1OGGWi3h5U8UPGtelHlwZ4cTtJyEc8Tbs9oB+0
|
||||
JeEAMooz8wKBgGU3edzkEHkWVaZMi2+jpmJ8zxsbPsr7ydKsUfX9VAUD7PrrF0tv
|
||||
O1eE193VZ2UTa/Mnwz2bCz/cdEQU5F+MDbk5VBZWh3Q+njibXhi4XY7g4EFUB+pe
|
||||
4lLT1jmn+ZbPIunZmW6F5aWHSVSPfhlGSGx7T54ZdR402lVroWO1425PAoGBAI+t
|
||||
bq4zOw0/PuDsX6DI/Iua4ajlMBxLTFc2v354jHrHauAIkT/sjmMtzxkNrB6HjWkZ
|
||||
Ra5NdRHA6mx+SO0j+dOkfUQWhZ/xC05uKamVbyduk8xwmYpjvSNIuxjb3ECZ8eLd
|
||||
zghv1Ve4sYQ3CtNeH/3CDjY4/f7pPtP4i+4IUrATAoGBAKgJ6bxUoM2HrDV+ki49
|
||||
xkd1vpCZ9/qNDuvHSYgtFiXdC4WTx/SWjsaQMIw7VLDv0+48QVGgNyGy7iUupPhk
|
||||
Qq2CBMWUlOhfOgw6a3Dwu59dUN7esZ1zgdWwejWl1hNb2p91dHjy7FefyhwO3m6E
|
||||
wjMkKMb9UvTpm3wjP/Tpy2No
|
||||
-----END PRIVATE KEY-----
|
||||
48
config/log/nginx/access.log
Normal file
48
config/log/nginx/access.log
Normal file
@@ -0,0 +1,48 @@
|
||||
172.18.0.1 - - [13/Jan/2026:14:59:57 -0600] "GET / HTTP/1.1" 302 5 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:00 -0600] "GET /admin HTTP/1.1" 200 19911 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/nucleus.css?ca0fb9dd23 HTTP/1.1" 200 12115 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/template.css?ca0fb9dd23 HTTP/1.1" 200 273246 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css/fork-awesome-shim.css?ca0fb9dd23 HTTP/1.1" 200 35846 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css/hint.base.min.css?ca0fb9dd23 HTTP/1.1" 200 4375 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css/chartist.min.css?ca0fb9dd23 HTTP/1.1" 200 11463 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css/selectize.min.css?ca0fb9dd23 HTTP/1.1" 200 6567 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css/fontawesome7.min.css?ca0fb9dd23 HTTP/1.1" 200 74185 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/markdown-notices/assets/notices.css?ca0fb9dd23 HTTP/1.1" 200 486 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:01 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/simple-fonts.css?ca0fb9dd23 HTTP/1.1" 200 472 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:02 -0600] "GET /user/plugins/admin/themes/grav/css/iconpicker.css?ca0fb9dd23 HTTP/1.1" 200 4187 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:02 -0600] "GET /assets/admin-preset.css?ca0fb9dd23 HTTP/1.1" 200 49144 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:02 -0600] "GET /system/assets/jquery/jquery-3.x.min.js?ca0fb9dd23 HTTP/1.1" 200 87533 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:00:03 -0600] "GET /user/plugins/admin/themes/grav/images/favicon.png HTTP/1.1" 200 13203 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:01:08 -0600] "POST /admin HTTP/1.1" 200 20023 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:01:22 -0600] "POST /admin HTTP/1.1" 303 5 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
::1 - - [13/Jan/2026:15:04:18 -0600] "GET / HTTP/1.1" 200 12958 "-" "Wget"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:41 -0600] "GET /admin/ HTTP/1.1" 302 5 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /admin HTTP/1.1" 200 32136 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/nucleus.css?08c47190a2 HTTP/1.1" 200 12115 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/fork-awesome-shim.css?08c47190a2 HTTP/1.1" 200 35846 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/simple-fonts.css?08c47190a2 HTTP/1.1" 200 472 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css-compiled/template.css?08c47190a2 HTTP/1.1" 200 273246 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/markdown-notices/assets/notices.css?08c47190a2 HTTP/1.1" 200 486 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/fontawesome7.min.css?08c47190a2 HTTP/1.1" 200 74185 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/selectize.min.css?08c47190a2 HTTP/1.1" 200 6567 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/chartist.min.css?08c47190a2 HTTP/1.1" 200 11463 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/hint.base.min.css?08c47190a2 HTTP/1.1" 200 4375 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/css/iconpicker.css?08c47190a2 HTTP/1.1" 200 4187 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /assets/admin-preset.css?08c47190a2 HTTP/1.1" 200 49144 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /system/assets/jquery/jquery-3.x.min.js?08c47190a2 HTTP/1.1" 200 87533 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/js/vendor.min.js?08c47190a2 HTTP/1.1" 200 2965855 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:42 -0600] "GET /user/plugins/admin/themes/grav/js/admin.min.js?08c47190a2 HTTP/1.1" 200 540834 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:46 -0600] "POST /admin/ajax.json/task:getNewsFeed HTTP/1.1" 200 2678 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:47 -0600] "POST /admin/task:getNotifications HTTP/1.1" 200 6788 "http://localhost:5001/admin" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET / HTTP/1.1" 200 12972 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/plugins/markdown-notices/assets/notices.css HTTP/1.1" 200 486 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/plugins/login/css/login.css HTTP/1.1" 200 1512 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/plugins/form/assets/form-styles.css HTTP/1.1" 200 4811 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/css-compiled/spectre.min.css HTTP/1.1" 200 52892 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/css-compiled/theme.min.css HTTP/1.1" 200 13786 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/css/custom.css HTTP/1.1" 200 0 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/css/line-awesome.min.css HTTP/1.1" 200 30861 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /system/assets/jquery/jquery-3.x.min.js HTTP/1.1" 200 87533 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/js/site.js HTTP/1.1" 200 1481 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:51 -0600] "GET /user/themes/quark/js/jquery.treemenu.js HTTP/1.1" 200 2698 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
172.18.0.1 - - [13/Jan/2026:15:09:52 -0600] "GET /user/themes/quark/images/favicon.png HTTP/1.1" 200 13203 "http://localhost:5001/" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0"
|
||||
10
config/log/php/error.log
Normal file
10
config/log/php/error.log
Normal file
@@ -0,0 +1,10 @@
|
||||
[13-Jan-2026 14:50:10] NOTICE: fpm is running, pid 280
|
||||
[13-Jan-2026 14:50:10] NOTICE: ready to handle connections
|
||||
[13-Jan-2026 15:06:52] NOTICE: Terminating ...
|
||||
[13-Jan-2026 15:06:52] NOTICE: exiting, bye-bye!
|
||||
[13-Jan-2026 15:07:00] NOTICE: fpm is running, pid 239
|
||||
[13-Jan-2026 15:07:00] NOTICE: ready to handle connections
|
||||
[13-Jan-2026 15:15:05] NOTICE: Terminating ...
|
||||
[13-Jan-2026 15:15:05] NOTICE: exiting, bye-bye!
|
||||
[13-Jan-2026 15:15:14] NOTICE: fpm is running, pid 238
|
||||
[13-Jan-2026 15:15:14] NOTICE: ready to handle connections
|
||||
13
config/nginx/dhparams.pem
Normal file
13
config/nginx/dhparams.pem
Normal file
@@ -0,0 +1,13 @@
|
||||
-----BEGIN DH PARAMETERS-----
|
||||
MIICCAKCAgEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
|
||||
+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
|
||||
87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
|
||||
YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
|
||||
7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
|
||||
ssbzSibBsu/6iGtCOGEfz9zeNVs7ZRkDW7w09N75nAI4YbRvydbmyQd62R0mkff3
|
||||
7lmMsPrBhtkcrv4TCYUTknC0EwyTvEN5RPT9RFLi103TZPLiHnH1S/9croKrnJ32
|
||||
nuhtK8UiNjoNq8Uhl5sN6todv5pC1cRITgq80Gv6U93vPBsg7j/VnXwl5B0rZp4e
|
||||
8W5vUsMWTfT7eTDp5OWIV7asfV9C1p9tGHdjzx1VA0AEh/VbpX4xzHpxNciG77Qx
|
||||
iu1qHgEtnmgyqQdgCpGBMMRtx3j5ca0AOAkpmaMzy4t6Gh25PXFAADwqTs6p+Y0K
|
||||
zAqCkc3OyX3Pjsm1Wn+IpGtNtahR9EGC4caKAH5eZV9q//////////8CAQI=
|
||||
-----END DH PARAMETERS-----
|
||||
84
config/nginx/nginx.conf
Normal file
84
config/nginx/nginx.conf
Normal file
@@ -0,0 +1,84 @@
|
||||
## Version 2024/05/27 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/nginx.conf.sample
|
||||
|
||||
### Based on alpine defaults
|
||||
# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.conf?h=3.20-stable
|
||||
|
||||
user abc;
|
||||
|
||||
# Set number of worker processes automatically based on number of CPU cores.
|
||||
include /config/nginx/worker_processes.conf;
|
||||
|
||||
# Enables the use of JIT for regular expressions to speed-up their processing.
|
||||
pcre_jit on;
|
||||
|
||||
# Configures default error logger.
|
||||
error_log /config/log/nginx/error.log;
|
||||
|
||||
# Includes files with directives to load dynamic modules.
|
||||
include /etc/nginx/modules/*.conf;
|
||||
|
||||
# Include files with config snippets into the root context.
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
|
||||
events {
|
||||
# The maximum number of simultaneous connections that can be opened by
|
||||
# a worker process.
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
# Includes mapping of file name extensions to MIME types of responses
|
||||
# and defines the default type.
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
# Name servers used to resolve names of upstream servers into addresses.
|
||||
# It's also needed when using tcpsocket and udpsocket in Lua modules.
|
||||
#resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
|
||||
include /config/nginx/resolver.conf;
|
||||
|
||||
# Don't tell nginx version to the clients. Default is 'on'.
|
||||
server_tokens off;
|
||||
|
||||
# Specifies the maximum accepted body size of a client request, as
|
||||
# indicated by the request header Content-Length. If the stated content
|
||||
# length is greater than this size, then the client receives the HTTP
|
||||
# error code 413. Set to 0 to disable. Default is '1m'.
|
||||
client_max_body_size 0;
|
||||
|
||||
# Sendfile copies data between one FD and other from within the kernel,
|
||||
# which is more efficient than read() + write(). Default is off.
|
||||
sendfile on;
|
||||
|
||||
# Causes nginx to attempt to send its HTTP response head in one packet,
|
||||
# instead of using partial frames. Default is 'off'.
|
||||
tcp_nopush on;
|
||||
|
||||
# all ssl related config moved to ssl.conf
|
||||
# included in server blocks where listen 443 is defined
|
||||
|
||||
# Enable gzipping of responses.
|
||||
#gzip on;
|
||||
|
||||
# Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
|
||||
gzip_vary on;
|
||||
|
||||
# Helper variable for proxying websockets.
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
# Enable http2 by default for all servers
|
||||
http2 on;
|
||||
|
||||
# Sets the path, format, and configuration for a buffered log write.
|
||||
access_log /config/log/nginx/access.log;
|
||||
|
||||
# Includes virtual hosts configs.
|
||||
include /etc/nginx/http.d/*.conf;
|
||||
include /config/nginx/site-confs/*.conf;
|
||||
}
|
||||
|
||||
daemon off;
|
||||
pid /run/nginx.pid;
|
||||
84
config/nginx/nginx.conf.sample
Normal file
84
config/nginx/nginx.conf.sample
Normal file
@@ -0,0 +1,84 @@
|
||||
## Version 2024/05/27 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/nginx.conf.sample
|
||||
|
||||
### Based on alpine defaults
|
||||
# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.conf?h=3.20-stable
|
||||
|
||||
user abc;
|
||||
|
||||
# Set number of worker processes automatically based on number of CPU cores.
|
||||
include /config/nginx/worker_processes.conf;
|
||||
|
||||
# Enables the use of JIT for regular expressions to speed-up their processing.
|
||||
pcre_jit on;
|
||||
|
||||
# Configures default error logger.
|
||||
error_log /config/log/nginx/error.log;
|
||||
|
||||
# Includes files with directives to load dynamic modules.
|
||||
include /etc/nginx/modules/*.conf;
|
||||
|
||||
# Include files with config snippets into the root context.
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
|
||||
events {
|
||||
# The maximum number of simultaneous connections that can be opened by
|
||||
# a worker process.
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
# Includes mapping of file name extensions to MIME types of responses
|
||||
# and defines the default type.
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
# Name servers used to resolve names of upstream servers into addresses.
|
||||
# It's also needed when using tcpsocket and udpsocket in Lua modules.
|
||||
#resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;
|
||||
include /config/nginx/resolver.conf;
|
||||
|
||||
# Don't tell nginx version to the clients. Default is 'on'.
|
||||
server_tokens off;
|
||||
|
||||
# Specifies the maximum accepted body size of a client request, as
|
||||
# indicated by the request header Content-Length. If the stated content
|
||||
# length is greater than this size, then the client receives the HTTP
|
||||
# error code 413. Set to 0 to disable. Default is '1m'.
|
||||
client_max_body_size 0;
|
||||
|
||||
# Sendfile copies data between one FD and other from within the kernel,
|
||||
# which is more efficient than read() + write(). Default is off.
|
||||
sendfile on;
|
||||
|
||||
# Causes nginx to attempt to send its HTTP response head in one packet,
|
||||
# instead of using partial frames. Default is 'off'.
|
||||
tcp_nopush on;
|
||||
|
||||
# all ssl related config moved to ssl.conf
|
||||
# included in server blocks where listen 443 is defined
|
||||
|
||||
# Enable gzipping of responses.
|
||||
#gzip on;
|
||||
|
||||
# Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
|
||||
gzip_vary on;
|
||||
|
||||
# Helper variable for proxying websockets.
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
# Enable http2 by default for all servers
|
||||
http2 on;
|
||||
|
||||
# Sets the path, format, and configuration for a buffered log write.
|
||||
access_log /config/log/nginx/access.log;
|
||||
|
||||
# Includes virtual hosts configs.
|
||||
include /etc/nginx/http.d/*.conf;
|
||||
include /config/nginx/site-confs/*.conf;
|
||||
}
|
||||
|
||||
daemon off;
|
||||
pid /run/nginx.pid;
|
||||
3
config/nginx/resolver.conf
Normal file
3
config/nginx/resolver.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
# This file is auto-generated only on first start, based on the container's /etc/resolv.conf file. Feel free to modify it as you wish.
|
||||
|
||||
resolver 127.0.0.11 valid=30s;
|
||||
82
config/nginx/site-confs/default.conf
Normal file
82
config/nginx/site-confs/default.conf
Normal file
@@ -0,0 +1,82 @@
|
||||
## Version 2024/07/16 - Changelog: https://github.com/linuxserver/docker-grav/commits/main/root/defaults/nginx/site-confs/default.conf.sample
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
|
||||
server_name _;
|
||||
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
root /app/www/public;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
location / {
|
||||
# enable for basic auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
|
||||
}
|
||||
|
||||
## https://github.com/getgrav/grav/blob/develop/webserver-configs/nginx.conf
|
||||
|
||||
## Begin - Security
|
||||
# deny all direct access for these folders
|
||||
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
|
||||
# deny running scripts inside core system folders
|
||||
location ~* /(system|vendor)/.*\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
|
||||
# deny running scripts inside user folder
|
||||
location ~* /user/.*\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
|
||||
# deny access to specific files in the root folder
|
||||
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
|
||||
## End - Security
|
||||
|
||||
## https://learn.getgrav.org/17/webservers-hosting/servers/nginx#nginx-cache-headers-for-assets
|
||||
## Begin - Caching
|
||||
location ~* ^/forms-basic-captcha-image.jpg$ {
|
||||
try_files $uri $uri/ /index.php$is_args$args;
|
||||
}
|
||||
|
||||
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
|
||||
expires 30d;
|
||||
add_header Vary Accept-Encoding;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
|
||||
access_log off;
|
||||
expires 30d;
|
||||
add_header Cache-Control public;
|
||||
|
||||
## No need to bleed constant updates. Send the all shebang in one
|
||||
## fell swoop.
|
||||
tcp_nodelay off;
|
||||
|
||||
## Set the OS file cache.
|
||||
open_file_cache max=3000 inactive=120s;
|
||||
open_file_cache_valid 45s;
|
||||
open_file_cache_min_uses 2;
|
||||
open_file_cache_errors off;
|
||||
}
|
||||
## End - Caching
|
||||
|
||||
location ~ ^(.+\.php)(.*)$ {
|
||||
# enable the next two lines for http auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
fastcgi_split_path_info ^(.+\.php)(.*)$;
|
||||
if (!-f $document_root$fastcgi_script_name) { return 404; }
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_index index.php;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
}
|
||||
|
||||
# deny access to .htaccess/.htpasswd files
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
82
config/nginx/site-confs/default.conf.sample
Normal file
82
config/nginx/site-confs/default.conf.sample
Normal file
@@ -0,0 +1,82 @@
|
||||
## Version 2024/07/16 - Changelog: https://github.com/linuxserver/docker-grav/commits/main/root/defaults/nginx/site-confs/default.conf.sample
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
listen 443 ssl default_server;
|
||||
listen [::]:443 ssl default_server;
|
||||
|
||||
server_name _;
|
||||
|
||||
include /config/nginx/ssl.conf;
|
||||
|
||||
root /app/www/public;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
location / {
|
||||
# enable for basic auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
try_files $uri $uri/ /index.html /index.htm /index.php$is_args$args;
|
||||
}
|
||||
|
||||
## https://github.com/getgrav/grav/blob/develop/webserver-configs/nginx.conf
|
||||
|
||||
## Begin - Security
|
||||
# deny all direct access for these folders
|
||||
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
|
||||
# deny running scripts inside core system folders
|
||||
location ~* /(system|vendor)/.*\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
|
||||
# deny running scripts inside user folder
|
||||
location ~* /user/.*\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
|
||||
# deny access to specific files in the root folder
|
||||
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
|
||||
## End - Security
|
||||
|
||||
## https://learn.getgrav.org/17/webservers-hosting/servers/nginx#nginx-cache-headers-for-assets
|
||||
## Begin - Caching
|
||||
location ~* ^/forms-basic-captcha-image.jpg$ {
|
||||
try_files $uri $uri/ /index.php$is_args$args;
|
||||
}
|
||||
|
||||
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
|
||||
expires 30d;
|
||||
add_header Vary Accept-Encoding;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
|
||||
access_log off;
|
||||
expires 30d;
|
||||
add_header Cache-Control public;
|
||||
|
||||
## No need to bleed constant updates. Send the all shebang in one
|
||||
## fell swoop.
|
||||
tcp_nodelay off;
|
||||
|
||||
## Set the OS file cache.
|
||||
open_file_cache max=3000 inactive=120s;
|
||||
open_file_cache_valid 45s;
|
||||
open_file_cache_min_uses 2;
|
||||
open_file_cache_errors off;
|
||||
}
|
||||
## End - Caching
|
||||
|
||||
location ~ ^(.+\.php)(.*)$ {
|
||||
# enable the next two lines for http auth
|
||||
#auth_basic "Restricted";
|
||||
#auth_basic_user_file /config/nginx/.htpasswd;
|
||||
|
||||
fastcgi_split_path_info ^(.+\.php)(.*)$;
|
||||
if (!-f $document_root$fastcgi_script_name) { return 404; }
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_index index.php;
|
||||
include /etc/nginx/fastcgi_params;
|
||||
}
|
||||
|
||||
# deny access to .htaccess/.htpasswd files
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
39
config/nginx/ssl.conf
Normal file
39
config/nginx/ssl.conf
Normal file
@@ -0,0 +1,39 @@
|
||||
## Version 2023/08/13 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/ssl.conf.sample
|
||||
|
||||
### Mozilla Recommendations
|
||||
# generated 2023-06-25, Mozilla Guideline v5.7, nginx 1.24.0, OpenSSL 3.1.1, intermediate configuration
|
||||
# https://ssl-config.mozilla.org/#server=nginx&version=1.24.0&config=intermediate&openssl=3.1.1&guideline=5.7
|
||||
|
||||
ssl_certificate /config/keys/cert.crt;
|
||||
ssl_certificate_key /config/keys/cert.key;
|
||||
ssl_session_timeout 1d;
|
||||
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
|
||||
ssl_session_tickets off;
|
||||
|
||||
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
|
||||
ssl_dhparam /config/nginx/dhparams.pem;
|
||||
|
||||
# intermediate configuration
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
|
||||
#add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
|
||||
# OCSP stapling
|
||||
#ssl_stapling on;
|
||||
#ssl_stapling_verify on;
|
||||
|
||||
# verify chain of trust of OCSP response using Root CA and Intermediate certs
|
||||
#ssl_trusted_certificate /config/keys/cert.crt;
|
||||
|
||||
# Optional additional headers
|
||||
#add_header Cache-Control "no-transform" always;
|
||||
#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'" always;
|
||||
#add_header Permissions-Policy "interest-cohort=()" always;
|
||||
#add_header Referrer-Policy "same-origin" always;
|
||||
#add_header X-Content-Type-Options "nosniff" always;
|
||||
#add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
#add_header X-UA-Compatible "IE=Edge" always;
|
||||
#add_header X-XSS-Protection "1; mode=block" always;
|
||||
39
config/nginx/ssl.conf.sample
Normal file
39
config/nginx/ssl.conf.sample
Normal file
@@ -0,0 +1,39 @@
|
||||
## Version 2023/08/13 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx/ssl.conf.sample
|
||||
|
||||
### Mozilla Recommendations
|
||||
# generated 2023-06-25, Mozilla Guideline v5.7, nginx 1.24.0, OpenSSL 3.1.1, intermediate configuration
|
||||
# https://ssl-config.mozilla.org/#server=nginx&version=1.24.0&config=intermediate&openssl=3.1.1&guideline=5.7
|
||||
|
||||
ssl_certificate /config/keys/cert.crt;
|
||||
ssl_certificate_key /config/keys/cert.key;
|
||||
ssl_session_timeout 1d;
|
||||
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
|
||||
ssl_session_tickets off;
|
||||
|
||||
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
|
||||
ssl_dhparam /config/nginx/dhparams.pem;
|
||||
|
||||
# intermediate configuration
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
|
||||
#add_header Strict-Transport-Security "max-age=63072000" always;
|
||||
|
||||
# OCSP stapling
|
||||
#ssl_stapling on;
|
||||
#ssl_stapling_verify on;
|
||||
|
||||
# verify chain of trust of OCSP response using Root CA and Intermediate certs
|
||||
#ssl_trusted_certificate /config/keys/cert.crt;
|
||||
|
||||
# Optional additional headers
|
||||
#add_header Cache-Control "no-transform" always;
|
||||
#add_header Content-Security-Policy "upgrade-insecure-requests; frame-ancestors 'self'" always;
|
||||
#add_header Permissions-Policy "interest-cohort=()" always;
|
||||
#add_header Referrer-Policy "same-origin" always;
|
||||
#add_header X-Content-Type-Options "nosniff" always;
|
||||
#add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
#add_header X-UA-Compatible "IE=Edge" always;
|
||||
#add_header X-XSS-Protection "1; mode=block" always;
|
||||
3
config/nginx/worker_processes.conf
Normal file
3
config/nginx/worker_processes.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
# This file is auto-generated only on first start, based on the cpu cores detected. Feel free to change it to any other number or to auto to let nginx handle it automatically.
|
||||
|
||||
worker_processes 4;
|
||||
2
config/php/php-local.ini
Normal file
2
config/php/php-local.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
; Edit this file to override php.ini directives
|
||||
|
||||
5
config/php/www2.conf
Normal file
5
config/php/www2.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
; Edit this file to override www.conf and php-fpm.conf directives and restart the container
|
||||
|
||||
; Pool name
|
||||
[www]
|
||||
|
||||
1
config/www/backup/.gitkeep
Normal file
1
config/www/backup/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */
|
||||
34
config/www/index.html
Normal file
34
config/www/index.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Welcome to our server</title>
|
||||
<style>
|
||||
body{
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
}
|
||||
.message{
|
||||
width:330px;
|
||||
padding:20px 40px;
|
||||
margin:0 auto;
|
||||
background-color:#f9f9f9;
|
||||
border:1px solid #ddd;
|
||||
}
|
||||
center{
|
||||
margin:40px 0;
|
||||
}
|
||||
h1{
|
||||
font-size: 18px;
|
||||
line-height: 26px;
|
||||
}
|
||||
p{
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="message">
|
||||
<h1>Welcome to our server</h1>
|
||||
<p>The website is currently being setup under this address.</p>
|
||||
<p>For help and support, please contact: <a href="me@example.com">me@example.com</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
1
config/www/logs/.gitkeep
Normal file
1
config/www/logs/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */
|
||||
1
config/www/logs/grav.log
Normal file
1
config/www/logs/grav.log
Normal file
@@ -0,0 +1 @@
|
||||
[2026-01-13 15:09:41] grav.DEBUG: Flex: User index updated, 1 objects (1 added, 0 updated, 0 removed). [] []
|
||||
1
config/www/logs/lastcron.run
Normal file
1
config/www/logs/lastcron.run
Normal file
@@ -0,0 +1 @@
|
||||
2026-01-13 15:15:01
|
||||
1
config/www/logs/popularity/daily.json
Normal file
1
config/www/logs/popularity/daily.json
Normal file
@@ -0,0 +1 @@
|
||||
{"13-01-2026":1}
|
||||
1
config/www/logs/popularity/monthly.json
Normal file
1
config/www/logs/popularity/monthly.json
Normal file
@@ -0,0 +1 @@
|
||||
{"01-2026":1}
|
||||
1
config/www/logs/popularity/totals.json
Normal file
1
config/www/logs/popularity/totals.json
Normal file
@@ -0,0 +1 @@
|
||||
{"\/":1}
|
||||
1
config/www/logs/popularity/visitors.json
Normal file
1
config/www/logs/popularity/visitors.json
Normal file
@@ -0,0 +1 @@
|
||||
{"363baea9cba210afac6d7a556fca596e30c46333":1768338258}
|
||||
26
config/www/logs/scheduler.log
Normal file
26
config/www/logs/scheduler.log
Normal file
@@ -0,0 +1,26 @@
|
||||
[2026-01-13 15:02:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:02:01"} []
|
||||
[2026-01-13 15:02:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:03:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:03:01"} []
|
||||
[2026-01-13 15:03:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:04:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:04:01"} []
|
||||
[2026-01-13 15:04:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:05:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:05:01"} []
|
||||
[2026-01-13 15:05:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:06:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:06:01"} []
|
||||
[2026-01-13 15:06:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:08:00] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:08:00"} []
|
||||
[2026-01-13 15:08:00] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:09:00] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:09:00"} []
|
||||
[2026-01-13 15:09:00] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:10:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:10:01"} []
|
||||
[2026-01-13 15:10:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:11:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:11:01"} []
|
||||
[2026-01-13 15:11:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:12:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:12:01"} []
|
||||
[2026-01-13 15:12:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:13:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:13:01"} []
|
||||
[2026-01-13 15:13:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:14:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:14:01"} []
|
||||
[2026-01-13 15:14:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
[2026-01-13 15:15:01] scheduler.DEBUG: Scheduler run started - 3 jobs available {"time":"2026-01-13 15:15:01"} []
|
||||
[2026-01-13 15:15:01] scheduler.DEBUG: Scheduler completed: no jobs were due [] []
|
||||
21
config/www/robots.txt
Normal file
21
config/www/robots.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
User-agent: *
|
||||
Disallow: /.github/
|
||||
Disallow: /.phan/
|
||||
Disallow: /assets/
|
||||
Disallow: /backup/
|
||||
Disallow: /bin/
|
||||
Disallow: /cache/
|
||||
Disallow: /logs/
|
||||
Disallow: /system/
|
||||
Disallow: /tests/
|
||||
Disallow: /tmp/
|
||||
Disallow: /user/
|
||||
Disallow: /vendor/
|
||||
Disallow: /webserver-configs/
|
||||
Allow: /user/pages/
|
||||
Allow: /user/themes/
|
||||
Allow: /user/images/
|
||||
Allow: /
|
||||
Allow: *.css$
|
||||
Allow: *.js$
|
||||
Allow: /system/*.js$
|
||||
1
config/www/user/accounts/.gitkeep
Normal file
1
config/www/user/accounts/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */
|
||||
11
config/www/user/accounts/stlpadmin.yaml
Normal file
11
config/www/user/accounts/stlpadmin.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
state: enabled
|
||||
email: charles@turnsys.com
|
||||
fullname: 'STLP Admin'
|
||||
title: 'STLP Admin'
|
||||
access:
|
||||
admin:
|
||||
login: true
|
||||
super: true
|
||||
site:
|
||||
login: true
|
||||
hashed_password: $2y$10$VRSE4yUiwrvRur70KpkDL.Y5/F8vwikv1Ozfb8LjwPIulIWcBrZiS
|
||||
1
config/www/user/data/.gitkeep
Normal file
1
config/www/user/data/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */
|
||||
@@ -0,0 +1,52 @@
|
||||
last_checked: 1768338586
|
||||
data:
|
||||
-
|
||||
title: 'TailwindCSS 4.0 upgrade for Typhoon Premium Theme'
|
||||
url: 'https://getgrav.org/blog/tailwindcss4-upgrade-for-typhoon-premium-theme'
|
||||
date: 1739361300
|
||||
nicetime: '11 months ago'
|
||||
-
|
||||
title: '2024 CMS Critic Award Voting'
|
||||
url: 'https://getgrav.org/blog/cms-critic-award-vote-2024'
|
||||
date: 1738588260
|
||||
nicetime: '11 months ago'
|
||||
-
|
||||
title: '2024 CMS Critic Award Nominations'
|
||||
url: 'https://getgrav.org/blog/cms-critic-award-nominations-2024'
|
||||
date: 1736169060
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'Grav 1.8-beta Released'
|
||||
url: 'https://getgrav.org/blog/grav-18-beta-released'
|
||||
date: 1732197180
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'Instagram Feed Plugin is deprecated'
|
||||
url: 'https://getgrav.org/blog/instagram-feed-deprecated'
|
||||
date: 1732107600
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'macOS 15.0 Sequoia Apache Setup: Upgrading Homebrew'
|
||||
url: 'https://getgrav.org/blog/macos-sequoia-apache-upgrade-homebrew'
|
||||
date: 1726660800
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'macOS 15.0 Sequoia Apache Setup: LetsEncrypt SSL'
|
||||
url: 'https://getgrav.org/blog/macos-sequoia-apache-ssl'
|
||||
date: 1726657380
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'macOS 15.0 Sequoia Apache Setup: MySQL, Xdebug & More...'
|
||||
url: 'https://getgrav.org/blog/macos-sequoia-apache-mysql-vhost-apc'
|
||||
date: 1726657200
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'macOS 15.0 Sequoia Apache Setup: Multiple PHP Versions'
|
||||
url: 'https://getgrav.org/blog/macos-sequoia-apache-multiple-php-versions'
|
||||
date: 1726653600
|
||||
nicetime: '1 years ago'
|
||||
-
|
||||
title: 'Big changes for Email plugin'
|
||||
url: 'https://getgrav.org/blog/new-email-plugin'
|
||||
date: 1665048600
|
||||
nicetime: '3 years ago'
|
||||
9
config/www/user/data/flex/indexes/accounts.yaml
Normal file
9
config/www/user/data/flex/indexes/accounts.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
version: '1.2'
|
||||
timestamp: 1768338581
|
||||
count: 1
|
||||
index:
|
||||
stlpadmin:
|
||||
storage_key: stlpadmin
|
||||
storage_timestamp: 1768338082
|
||||
key: stlpadmin
|
||||
email: charles@turnsys.com
|
||||
1
config/www/user/data/flex/indexes/pages.json
Normal file
1
config/www/user/data/flex/indexes/pages.json
Normal file
@@ -0,0 +1 @@
|
||||
{"version":"1.5","timestamp":1768338581,"count":4,"index":{"":{"key":"","storage_key":"","template":null,"storage_timestamp":1768337671,"children":{"01.home":1768337640,"02.resources":1768337658,"03.contact":1768337668},"checksum":"b5b2785c2c37ab7c2556850de97a98fa"},"01.home":{"key":"home","storage_key":"01.home","template":"default","storage_timestamp":1768337640,"markdown":{"":{"default":1768337640}},"checksum":"b4fac513eb9fb14d8b7a53e8cf70d51a"},"02.resources":{"key":"resources","storage_key":"02.resources","template":"default","storage_timestamp":1768337658,"markdown":{"":{"default":1768337658}},"checksum":"40442b97e5210ff2535ffcbd428df628"},"03.contact":{"key":"contact","storage_key":"03.contact","template":"default","storage_timestamp":1768337668,"markdown":{"":{"default":1768337668}},"checksum":"a6d2e2857a4ac087d8eb91193d1a1809"}}}
|
||||
@@ -0,0 +1,116 @@
|
||||
last_checked: 1768338587
|
||||
data:
|
||||
feed:
|
||||
-
|
||||
id: 38
|
||||
date: '2025-10-21 11:40'
|
||||
message: '️🗺️ <b>AI Translate</b> Instant professional-grade translations for Grav Admin'
|
||||
link: 'https://getgrav.org/premium/ai-translate'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 37
|
||||
date: '2025-10-20 11:40'
|
||||
message: '🤖 <b>AI Pro</b> providing an Admin AI Assistant with OpenAI, Anthropic, Google Models and more.'
|
||||
link: 'https://getgrav.org/premium/ai-pro'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 36
|
||||
date: '2025-08-28 11:40'
|
||||
message: '✍️️ Edit smarter with <b>Editor Pro</b>: Modern WYSIWYM editing, live preview, and powerful content tools!'
|
||||
link: 'https://getgrav.org/premium/editor-pro'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 35
|
||||
date: '2025-07-30 11:40'
|
||||
message: '🕙️ Power up Grav with <b>Revisions Pro</b>, Track, Compare, Revert content and config!'
|
||||
link: 'https://getgrav.org/premium/revisions-pro'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 34
|
||||
date: '2025-07-29 11:40'
|
||||
message: '🗳️ Transform your Grav site into an interactive experience with <b>Polls.</b>'
|
||||
link: 'https://getgrav.org/premium/polls'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 33
|
||||
date: '2025-07-28 11:40'
|
||||
message: '💬 Build a community with <b>Comments Pro</b> for Grav, now available.'
|
||||
link: 'https://getgrav.org/premium/comments-pro'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 31
|
||||
date: '2024-02-13 11:40'
|
||||
message: '🗜️Optimize your Grav site with <b>Image Optimize</b>, now available.'
|
||||
link: 'https://getgrav.org/premium/image-optimize'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 12
|
||||
date: '2024-01-17 15:15'
|
||||
message: '☕️ Support Grav for the price of a <span class=''fa fa-coffee''></span> a month!'
|
||||
link: 'https://opencollective.com/grav'
|
||||
type: note
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 23
|
||||
date: '2024-01-05 15:50'
|
||||
message: '🙊 Grav community chat has moved from Slack to <span class=''fa fa-comments''></span> Discord'
|
||||
link: 'https://chat.getgrav.org'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
-
|
||||
id: 2
|
||||
date: '2024-01-05 02:23'
|
||||
message: '🎖 Don''t forget to star Grav on GitHub!'
|
||||
link: 'https://github.com/getgrav/grav'
|
||||
type: info
|
||||
location:
|
||||
- feed
|
||||
dashboard:
|
||||
-
|
||||
id: 27
|
||||
date: '2020-02-21 00:01'
|
||||
message: "<style>\n.dashboard-notifications-container, .dashboard-notifications-container .alert, .themes-notifications-container, .themes-notifications-container .alert, .plugins-notifications-container, .plugins-notifications-container .alert {\n margin: 0;\n padding: 0; \n}\n.dashboard-notifications-container .alert.position-dashboard:before,\n.themes-notifications-container .alert.position-themes:before,\n.plugins-notifications-container .alert.position-plugins:before,\n.hide-after-load {\n display: none;\n}\n</style>\n\n<span class=\"hide-after-load\">Loading...</span>\n<link href=\"https://getgrav.org/notifications/grav-premium-notification.css\" type=\"text/css\" rel=\"stylesheet\">\n<script src=\"https://getgrav.org/notifications/grav-premium-notification.js\" async></script>\n<div class=\"gp-banner hidden\">\n <div class=\"gp-image\">\n <img src=\"https://getgrav.org/user/themes/planetoid/images/grav-premium-logo-white.svg\" />\n </div>\n <div class=\"gp-sentences\">\n <span>Turbo-charge your Grav site - from the creators of Grav</span>\n <span>Typhoon - The most powerful Grav theme ever built, now with Tailwind 4</span>\n <span>Comments Pro - Advanced comments system for Grav, with spam protection</span>\n <span>Revisions Pro - Track, Compare, and Restore content and configuration changes</span>\n <span>Polls - Transform your Grav site into an interactive experience</span>\n <span>Image Optimize - Optimize all the images on your Grav site</span>\n <span>Downloads Pro - Powerful download manager directly integrated with Grav</span>\n <span>Algolia Pro - Class-leading AI-powered search made easy for Grav</span>\n <span>SEO-Magic - Advanced SEO tool for Grav with automatic webshot generator</span> \n <span>Site Toolbox - SVG Icons, Warm Cache, Mega-Frontmatter, Zapier RSS</span>\n <span>Email Office365 - Send email with Office365 with OAuth2 and refresh tokens</span>\n <span>Cloudflare Manager - Configure and manage your domain right within the admin</span>\n \n </div>\n <a class=\"gp-learn-more button\" href=\"https://getgrav.org/premium\" target=\"_blank\">Learn more</a>\n</div>\n"
|
||||
type: notice
|
||||
link: 'https://getgrav.org/premium'
|
||||
location:
|
||||
- dashboard
|
||||
- plugins
|
||||
- themes
|
||||
plugins:
|
||||
-
|
||||
id: 27
|
||||
date: '2020-02-21 00:01'
|
||||
message: "<style>\n.dashboard-notifications-container, .dashboard-notifications-container .alert, .themes-notifications-container, .themes-notifications-container .alert, .plugins-notifications-container, .plugins-notifications-container .alert {\n margin: 0;\n padding: 0; \n}\n.dashboard-notifications-container .alert.position-dashboard:before,\n.themes-notifications-container .alert.position-themes:before,\n.plugins-notifications-container .alert.position-plugins:before,\n.hide-after-load {\n display: none;\n}\n</style>\n\n<span class=\"hide-after-load\">Loading...</span>\n<link href=\"https://getgrav.org/notifications/grav-premium-notification.css\" type=\"text/css\" rel=\"stylesheet\">\n<script src=\"https://getgrav.org/notifications/grav-premium-notification.js\" async></script>\n<div class=\"gp-banner hidden\">\n <div class=\"gp-image\">\n <img src=\"https://getgrav.org/user/themes/planetoid/images/grav-premium-logo-white.svg\" />\n </div>\n <div class=\"gp-sentences\">\n <span>Turbo-charge your Grav site - from the creators of Grav</span>\n <span>Typhoon - The most powerful Grav theme ever built, now with Tailwind 4</span>\n <span>Comments Pro - Advanced comments system for Grav, with spam protection</span>\n <span>Revisions Pro - Track, Compare, and Restore content and configuration changes</span>\n <span>Polls - Transform your Grav site into an interactive experience</span>\n <span>Image Optimize - Optimize all the images on your Grav site</span>\n <span>Downloads Pro - Powerful download manager directly integrated with Grav</span>\n <span>Algolia Pro - Class-leading AI-powered search made easy for Grav</span>\n <span>SEO-Magic - Advanced SEO tool for Grav with automatic webshot generator</span> \n <span>Site Toolbox - SVG Icons, Warm Cache, Mega-Frontmatter, Zapier RSS</span>\n <span>Email Office365 - Send email with Office365 with OAuth2 and refresh tokens</span>\n <span>Cloudflare Manager - Configure and manage your domain right within the admin</span>\n \n </div>\n <a class=\"gp-learn-more button\" href=\"https://getgrav.org/premium\" target=\"_blank\">Learn more</a>\n</div>\n"
|
||||
type: notice
|
||||
link: 'https://getgrav.org/premium'
|
||||
location:
|
||||
- dashboard
|
||||
- plugins
|
||||
- themes
|
||||
themes:
|
||||
-
|
||||
id: 27
|
||||
date: '2020-02-21 00:01'
|
||||
message: "<style>\n.dashboard-notifications-container, .dashboard-notifications-container .alert, .themes-notifications-container, .themes-notifications-container .alert, .plugins-notifications-container, .plugins-notifications-container .alert {\n margin: 0;\n padding: 0; \n}\n.dashboard-notifications-container .alert.position-dashboard:before,\n.themes-notifications-container .alert.position-themes:before,\n.plugins-notifications-container .alert.position-plugins:before,\n.hide-after-load {\n display: none;\n}\n</style>\n\n<span class=\"hide-after-load\">Loading...</span>\n<link href=\"https://getgrav.org/notifications/grav-premium-notification.css\" type=\"text/css\" rel=\"stylesheet\">\n<script src=\"https://getgrav.org/notifications/grav-premium-notification.js\" async></script>\n<div class=\"gp-banner hidden\">\n <div class=\"gp-image\">\n <img src=\"https://getgrav.org/user/themes/planetoid/images/grav-premium-logo-white.svg\" />\n </div>\n <div class=\"gp-sentences\">\n <span>Turbo-charge your Grav site - from the creators of Grav</span>\n <span>Typhoon - The most powerful Grav theme ever built, now with Tailwind 4</span>\n <span>Comments Pro - Advanced comments system for Grav, with spam protection</span>\n <span>Revisions Pro - Track, Compare, and Restore content and configuration changes</span>\n <span>Polls - Transform your Grav site into an interactive experience</span>\n <span>Image Optimize - Optimize all the images on your Grav site</span>\n <span>Downloads Pro - Powerful download manager directly integrated with Grav</span>\n <span>Algolia Pro - Class-leading AI-powered search made easy for Grav</span>\n <span>SEO-Magic - Advanced SEO tool for Grav with automatic webshot generator</span> \n <span>Site Toolbox - SVG Icons, Warm Cache, Mega-Frontmatter, Zapier RSS</span>\n <span>Email Office365 - Send email with Office365 with OAuth2 and refresh tokens</span>\n <span>Cloudflare Manager - Configure and manage your domain right within the admin</span>\n \n </div>\n <a class=\"gp-learn-more button\" href=\"https://getgrav.org/premium\" target=\"_blank\">Learn more</a>\n</div>\n"
|
||||
type: notice
|
||||
link: 'https://getgrav.org/premium'
|
||||
location:
|
||||
- dashboard
|
||||
- plugins
|
||||
- themes
|
||||
1
config/www/user/data/scheduler/last_run.txt
Normal file
1
config/www/user/data/scheduler/last_run.txt
Normal file
@@ -0,0 +1 @@
|
||||
2026-01-13 15:15:01
|
||||
1
config/www/user/data/scheduler/status.yaml
Normal file
1
config/www/user/data/scheduler/status.yaml
Normal file
@@ -0,0 +1 @@
|
||||
{ }
|
||||
@@ -5,33 +5,88 @@ body_classes: title-center title-h1h2
|
||||
|
||||
# Starting Line Productions LLC
|
||||
|
||||
## Your Prototyping Job Shop in Pflugerville, Texas
|
||||
## Premium Prototyping & Fabrication Services in Pflugerville, Texas
|
||||
|
||||
Welcome to Starting Line Productions LLC, your flexible prototyping job shop. We provide professional-grade resources and workspaces available for hourly rental, perfect for makers, inventors, and small businesses.
|
||||
Welcome to Starting Line Productions LLC, your elite prototyping job shop. We provide professional-grade resources and workspaces available for hourly rental, tailored for discerning makers, inventors, and businesses who demand excellence.
|
||||
|
||||
!! **Now Open** - Book your time today and bring your projects to life!
|
||||
!! **Exclusive Access** - Book your time today and experience world-class prototyping facilities
|
||||
|
||||
### What We Offer
|
||||
### Premium Services
|
||||
|
||||
* **Professional Equipment** - Access to machining, fabrication, and prototyping tools
|
||||
* **Flexible Hourly Rates** - Pay only for the time you need
|
||||
* **Expert Guidance** - Our experienced staff can help you achieve your goals
|
||||
* **Modern Workspace** - Clean, well-equipped environment for your projects
|
||||
* **Local & Convenient** - Located right here in Pflugerville, Texas
|
||||
* **Professional Equipment** - State-of-the-art machining, fabrication, and prototyping tools
|
||||
* **Flexible Scheduling** - Premium hourly rates with priority booking available
|
||||
* **Expert Guidance** - Seasoned professionals dedicated to your success
|
||||
* **Sophisticated Environment** - Meticulously maintained workspace designed for innovation
|
||||
* **Prime Location** - Conveniently located in Pflugerville, Texas
|
||||
|
||||
### Our Services
|
||||
### Our Capabilities
|
||||
|
||||
Whether you're prototyping a new product, fabricating custom parts, or need a space to work on your projects, Starting Line Productions has the resources you need.
|
||||
Whether you're developing groundbreaking technology, fabricating precision components, or require a dedicated workspace for your projects, Starting Line Productions provides the resources you need.
|
||||
|
||||
* **Machining Services** - CNC milling, turning, and precision machining
|
||||
* **Fabrication** - Welding, cutting, and metalworking
|
||||
* **3D Printing** - Rapid prototyping and small production runs
|
||||
* **Assembly Space** - Dedicated workbenches and assembly areas
|
||||
* **Consultation** - Expert advice on your prototyping and fabrication needs
|
||||
* **Precision Machining** - CNC milling, turning, and high-precision machining services
|
||||
* **Expert Fabrication** - Professional welding, cutting, and advanced metalworking
|
||||
* **Rapid Prototyping** - High-resolution 3D printing and small-scale production
|
||||
* **Dedicated Workspaces** - Premium workbenches and collaborative assembly areas
|
||||
* **Strategic Consulting** - Expert guidance on all your prototyping and fabrication needs
|
||||
|
||||
### Why Choose Us
|
||||
|
||||
!! **Industry-Leading Standards** - Our facilities and staff meet the highest professional standards in the industry
|
||||
|
||||
**Unmatched Quality**
|
||||
|
||||
* Equipment maintained to factory specifications
|
||||
* Certified technicians on staff
|
||||
* Quality assurance processes in place
|
||||
* Premium materials available
|
||||
|
||||
**Exceptional Service**
|
||||
|
||||
* Personalized attention to every project
|
||||
* Flexible scheduling to meet your deadlines
|
||||
* Transparent pricing with no hidden fees
|
||||
* Ongoing support throughout your project
|
||||
|
||||
**Prime Resources**
|
||||
|
||||
* Latest technology and equipment
|
||||
* Spacious, well-organized workspaces
|
||||
* Comprehensive tool inventory
|
||||
* Professional safety protocols
|
||||
|
||||
### Get Started
|
||||
|
||||
Ready to bring your ideas to life? Browse our available resources and book your time today.
|
||||
Ready to elevate your projects? Explore our premium resources and secure your reservation today.
|
||||
|
||||
=> [View Our Resources & Pricing](/resources)
|
||||
=> [Explore Our Resources](/resources)
|
||||
=> [Contact Us](/contact)
|
||||
|
||||
---
|
||||
## Trusted by Industry Leaders
|
||||
|
||||
Our clients include startups, established companies, and individual innovators who value precision, quality, and exceptional service. Join the discerning professionals who trust Starting Line Productions with their most important projects.
|
||||
|
||||
## Featured Services
|
||||
|
||||
<div class="services-grid">
|
||||
<div class="card">
|
||||
<div class="card-header">Precision Machining</div>
|
||||
<div class="card-body">
|
||||
Expert CNC services for complex parts with tolerances up to ±0.0001"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">Metal Fabrication</div>
|
||||
<div class="card-body">
|
||||
Professional welding and fabrication with multiple material options
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">3D Printing</div>
|
||||
<div class="card-body">
|
||||
High-resolution printing for prototyping and small production runs
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,77 +3,112 @@ title: Resources & Pricing
|
||||
menu: Resources
|
||||
---
|
||||
|
||||
# Resources & Pricing
|
||||
# Premium Resources & Pricing
|
||||
|
||||
Choose from our selection of professional-grade equipment and workspaces. All resources are available for hourly rental with flexible scheduling.
|
||||
Choose from our selection of professional-grade equipment and workspaces. All resources are available for hourly rental with flexible scheduling and premium service.
|
||||
|
||||
## Equipment
|
||||
## Precision Equipment
|
||||
|
||||
### CNC Machines
|
||||
|
||||
| Equipment | Hourly Rate | Description |
|
||||
|-----------|-------------|-------------|
|
||||
| CNC Mill (3-Axis) | $50/hr | Precision milling for complex parts |
|
||||
| CNC Router | $40/hr | Large format cutting and shaping |
|
||||
| CNC Lathe | $45/hr | Precision turning operations |
|
||||
| Equipment | Hourly Rate | Daily Rate | Description |
|
||||
|-----------|-------------|-------------|-------------|
|
||||
| CNC Mill (3-Axis) | $75/hr | $500/day | Precision milling for complex parts, ±0.0001" accuracy |
|
||||
| CNC Router | $60/hr | $400/day | Large format cutting and shaping, up to 4'x8' capacity |
|
||||
| CNC Lathe | $65/hr | $450/day | Precision turning operations, 24" swing capacity |
|
||||
|
||||
### Fabrication
|
||||
### Professional Fabrication
|
||||
|
||||
| Equipment | Hourly Rate | Description |
|
||||
|-----------|-------------|-------------|
|
||||
| MIG Welder | $30/hr | Steel and aluminum welding |
|
||||
| TIG Welder | $35/hr | Precision welding for all metals |
|
||||
| Plasma Cutter | $25/hr | Fast metal cutting up to 1" thickness |
|
||||
| Bandsaw | $20/hr | Metal cutting up to 6" capacity |
|
||||
| Drill Press | $15/hr | Precision drilling operations |
|
||||
| Equipment | Hourly Rate | Daily Rate | Description |
|
||||
|-----------|-------------|-------------|-------------|
|
||||
| MIG Welder | $40/hr | $250/day | Professional steel and aluminum welding |
|
||||
| TIG Welder | $50/hr | $325/day | Precision welding for all metals, aluminum specialist |
|
||||
| Plasma Cutter | $35/hr | $225/day | Fast metal cutting up to 1" thickness |
|
||||
| Bandsaw | $25/hr | $150/day | Metal cutting up to 6" capacity, precision blade |
|
||||
| Drill Press | $20/hr | $125/day | Precision drilling operations with digital readout |
|
||||
|
||||
### 3D Printing
|
||||
### Advanced 3D Printing
|
||||
|
||||
| Equipment | Hourly Rate | Description |
|
||||
|-----------|-------------|-------------|
|
||||
| FDM Printer (Large) | $20/hr | High-capacity 3D printing |
|
||||
| SLA Printer | $25/hr | High-resolution resin printing |
|
||||
| Equipment | Hourly Rate | Daily Rate | Description |
|
||||
|-----------|-------------|-------------|-------------|
|
||||
| FDM Printer (Large) | $30/hr | $200/day | High-capacity 3D printing, 300x300x400mm build volume |
|
||||
| SLA Printer | $40/hr | $275/day | High-resolution resin printing, 50-micron layer height |
|
||||
|
||||
### Machining
|
||||
### Precision Machining
|
||||
|
||||
| Equipment | Hourly Rate | Description |
|
||||
|-----------|-------------|-------------|
|
||||
| Manual Lathe | $25/hr | Traditional turning operations |
|
||||
| Manual Mill | $25/hr | Traditional milling operations |
|
||||
| Surface Grinder | $30/hr | Precision surface finishing |
|
||||
| Equipment | Hourly Rate | Daily Rate | Description |
|
||||
|-----------|-------------|-------------|-------------|
|
||||
| Manual Lathe | $35/hr | $225/day | Traditional turning operations, 24" swing |
|
||||
| Manual Mill | $35/hr | $225/day | Traditional milling operations, 9x49 table |
|
||||
| Surface Grinder | $45/hr | $300/day | Precision surface finishing, to Ra 8 |
|
||||
|
||||
## Workspaces
|
||||
## Premium Workspaces
|
||||
|
||||
### Rental Options
|
||||
|
||||
| Space | Hourly Rate | Capacity |
|
||||
|-------|-------------|----------|
|
||||
| Individual Workbench | $10/hr | 1 person |
|
||||
| Small Bay | $30/hr | 2-3 people |
|
||||
| Large Bay | $50/hr | 4-6 people |
|
||||
| Conference Room | $20/hr | Up to 8 people |
|
||||
| Space | Hourly Rate | Daily Rate | Capacity |
|
||||
|-------|-------------|-------------|----------|
|
||||
| Individual Workbench | $20/hr | $125/day | 1 person, dedicated space |
|
||||
| Small Bay | $50/hr | $350/day | 2-3 people, 300 sq ft |
|
||||
| Large Bay | $85/hr | $575/day | 4-6 people, 600 sq ft |
|
||||
| Conference Room | $35/hr | $225/day | Up to 8 people, presentation ready |
|
||||
|
||||
## Services
|
||||
!! **Premium Memberships Available** - Enjoy discounted rates, priority booking, and exclusive access to premium equipment
|
||||
|
||||
### Additional Services
|
||||
## Consulting Services
|
||||
|
||||
| Service | Hourly Rate |
|
||||
|---------|-------------|
|
||||
| Design Consultation | $60/hr |
|
||||
| Technical Assistance | $50/hr |
|
||||
| Project Setup | $40/hr |
|
||||
| Safety Training | $25/hr (one-time) |
|
||||
### Professional Services
|
||||
|
||||
!! **New Customer Special** - First hour 50% off!
|
||||
| Service | Hourly Rate | Description |
|
||||
|---------|-------------|-------------|
|
||||
| Design Consultation | $85/hr | Expert guidance on product design and optimization |
|
||||
| Technical Assistance | $75/hr | Hands-on support for complex projects |
|
||||
| Project Setup | $60/hr | Complete project initialization and planning |
|
||||
| Safety Training | $40/hr | Comprehensive equipment training (one-time) |
|
||||
|
||||
## Membership Tiers
|
||||
|
||||
### Standard
|
||||
* Pay-as-you-go rates
|
||||
* Access to all standard equipment
|
||||
* During business hours
|
||||
* Basic support
|
||||
|
||||
### Professional - $299/month
|
||||
* 10% discount on all rentals
|
||||
* Priority booking
|
||||
* Extended hours access
|
||||
* Equipment training included
|
||||
|
||||
### Enterprise - $599/month
|
||||
* 20% discount on all rentals
|
||||
* Priority booking (48-hour advance)
|
||||
* 24/7 access with keycard
|
||||
* Dedicated project manager
|
||||
* Annual safety certification
|
||||
|
||||
## Booking Information
|
||||
|
||||
To book any of our resources:
|
||||
To reserve any of our premium resources:
|
||||
|
||||
* **Minimum Booking** - 1 hour
|
||||
* **Cancellation** - 24 hours notice required
|
||||
* **Payment** - Pay at time of booking
|
||||
* **Cancellation Policy** - 24 hours notice required for full refund
|
||||
* **Payment** - Due at time of booking
|
||||
* **Equipment Training** - Required for first-time users
|
||||
* **Safety Certification** - Annual certification for all equipment
|
||||
|
||||
<div class="cta-section">
|
||||
<h2>Ready to Get Started?</h2>
|
||||
<p>Contact us today to reserve your workspace and equipment</p>
|
||||
<a href="/contact" class="btn btn-white">Contact Us Now</a>
|
||||
</div>
|
||||
|
||||
## Important Notes
|
||||
|
||||
* **Materials** - Provide your own or purchase from our extensive inventory
|
||||
* **Safety Equipment** - Bring your own or rent from us
|
||||
* **Project Consultation** - Complimentary for members
|
||||
* **Storage** - Secure storage available for ongoing projects
|
||||
|
||||
=> [Contact Us to Book](/contact)
|
||||
=> [Return to Home](/)
|
||||
|
||||
@@ -3,61 +3,127 @@ title: Contact Us
|
||||
menu: Contact
|
||||
---
|
||||
|
||||
# Contact Us
|
||||
# Contact Starting Line Productions
|
||||
|
||||
Ready to start your project? Get in touch with Starting Line Productions LLC today.
|
||||
Ready to start your next project? Get in touch with Starting Line Productions LLC today and discover why discerning professionals choose us.
|
||||
|
||||
## Visit Us
|
||||
|
||||
**Starting Line Productions LLC**
|
||||
Pflugerville, Texas
|
||||
**Open:** Monday - Saturday, 8:00 AM - 8:00 PM
|
||||
|
||||
**Premium Hours:** Monday - Saturday, 8:00 AM - 8:00 PM
|
||||
**By Appointment Only** - Ensure dedicated staff for your needs
|
||||
|
||||
## Get in Touch
|
||||
|
||||
### Booking Reservations
|
||||
### Reservations & Booking
|
||||
|
||||
* **Phone:** (512) 555-0123
|
||||
* **Email:** bookings@startinglineproductions.com
|
||||
* **Email:** reservations@startinglineproductions.com
|
||||
* **Hours:** Monday - Saturday, 8:00 AM - 6:00 PM
|
||||
* **Response Time:** Within 2 hours during business hours
|
||||
|
||||
### General Inquiries
|
||||
|
||||
* **Email:** info@startinglineproductions.com
|
||||
* **Hours:** Monday - Saturday, 8:00 AM - 6:00 PM
|
||||
* **Response Time:** Within 24 hours
|
||||
|
||||
### Technical Questions
|
||||
### Technical Support
|
||||
|
||||
* **Email:** tech@startinglineproductions.com
|
||||
* **Email:** technical@startinglineproductions.com
|
||||
* **Hours:** Monday - Saturday, 8:00 AM - 6:00 PM
|
||||
* **Response Time:** Within 4 hours
|
||||
|
||||
## Booking Process
|
||||
## Premium Booking Process
|
||||
|
||||
1. **Browse Resources** - Review our available equipment and workspaces
|
||||
1. **Explore Resources** - Review our equipment and workspace options
|
||||
2. **Contact Us** - Call or email to check availability
|
||||
3. **Schedule** - Book your preferred time slot
|
||||
4. **Complete Training** - First-time users complete equipment training
|
||||
5. **Start Creating** - Bring your project to life!
|
||||
3. **Schedule** - Reserve your preferred time slot with confirmation
|
||||
4. **Complete Training** - First-time users receive complimentary orientation
|
||||
5. **Begin Creating** - Access our facilities and bring your vision to life
|
||||
|
||||
## What to Bring
|
||||
|
||||
* Your project files or design specifications
|
||||
* Appropriate safety gear (or rent ours)
|
||||
* Materials for your project
|
||||
* Enthusiasm and creativity!
|
||||
* Your project files, CAD drawings, or design specifications
|
||||
* Personal safety equipment (or rent from our premium inventory)
|
||||
* Materials for your project (or purchase from our extensive selection)
|
||||
* Enthusiasm, creativity, and innovation!
|
||||
|
||||
## Safety First
|
||||
## Safety & Certification
|
||||
|
||||
All users must complete:
|
||||
* Safety orientation (30 minutes, complimentary for new members)
|
||||
* Equipment-specific training
|
||||
* Sign liability waiver
|
||||
|
||||
!! First-time users receive complimentary safety orientation and equipment training!
|
||||
* **Safety Orientation** - 45-minute comprehensive safety overview (complimentary for all first-time users)
|
||||
* **Equipment Training** - Hands-on training for all equipment you'll use
|
||||
* **Liability Waiver** - Standard liability agreement
|
||||
* **Annual Certification** - Required renewal annually for returning users
|
||||
|
||||
!! **First-Time User Special** - Complimentary safety orientation and equipment training included
|
||||
|
||||
## Membership Inquiries
|
||||
|
||||
Interested in our Professional or Enterprise memberships? Contact us today for a personalized consultation and tour of our facilities.
|
||||
|
||||
**Membership Hotline:** (512) 555-0124
|
||||
**Email:** membership@startinglineproductions.com
|
||||
|
||||
## Emergency Contact
|
||||
|
||||
For urgent matters outside business hours:
|
||||
* **Phone:** (512) 555-0999
|
||||
* **Available:** 24/7 for member emergencies only
|
||||
|
||||
## Location & Directions
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h3>Convenient Location in Pflugerville, Texas</h3>
|
||||
|
||||
**Accessibility Features:**
|
||||
* Ample parking for all vehicles
|
||||
* Loading dock for equipment/materials delivery
|
||||
* ADA compliant facilities
|
||||
* Secure storage available
|
||||
|
||||
**Nearby Amenities:**
|
||||
* Restaurants and coffee shops
|
||||
* Office supplies and materials retailers
|
||||
* Hotel accommodations for out-of-town clients
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Testimonials
|
||||
|
||||
<div class="testimonial">
|
||||
<p>"Starting Line Productions has been instrumental in bringing our prototypes to market. Their precision equipment and expert staff exceeded our expectations every time."</p>
|
||||
<cite>— Michael R., Startup Founder</cite>
|
||||
</div>
|
||||
|
||||
<div class="testimonial">
|
||||
<p>"The quality of work and professionalism at Starting Line is unmatched. We've used multiple job shops, but none compare to the excellence we experience here."</p>
|
||||
<cite>— Jennifer L., Manufacturing Engineer</cite>
|
||||
</div>
|
||||
|
||||
## Ready to Begin Your Project?
|
||||
|
||||
<div class="cta-section">
|
||||
<h2>Start Your Journey Today</h2>
|
||||
<p>Join professionals who demand excellence and choose Starting Line Productions for their prototyping needs</p>
|
||||
<a href="/resources" class="btn btn-white">View Our Resources</a>
|
||||
<a href="tel:5125550123" class="btn btn-white" style="margin-left: 1rem;">Call Us Now</a>
|
||||
</div>
|
||||
|
||||
## Office Hours
|
||||
|
||||
| Day | Hours |
|
||||
|-----|-------|
|
||||
| Monday - Friday | 8:00 AM - 8:00 PM |
|
||||
| Saturday | 8:00 AM - 6:00 PM |
|
||||
| Sunday | Closed |
|
||||
|
||||
!! **Extended Hours Available** - For Professional and Enterprise members
|
||||
|
||||
=> [View Our Resources](/resources)
|
||||
=> [Return to Home](/)
|
||||
|
||||
1
config/www/user/plugins/.gitkeep
Normal file
1
config/www/user/plugins/.gitkeep
Normal file
@@ -0,0 +1 @@
|
||||
/* @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved. */
|
||||
8
config/www/user/plugins/admin/.gitattributes
vendored
Normal file
8
config/www/user/plugins/admin/.gitattributes
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# Linguist Normalizer
|
||||
*.yaml linguistic-language=PHP
|
||||
*.twig linguistic-language=PHP
|
||||
**/gulpfile.babel.js linguist-vendored
|
||||
**/webpack.conf.js linguist-vendored
|
||||
**/js/*.js linguist-vendored
|
||||
**/js/*.json linguist-vendored
|
||||
**/css-compiled/*.css linguist-vendored
|
||||
8
config/www/user/plugins/admin/.github/FUNDING.yml
vendored
Normal file
8
config/www/user/plugins/admin/.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: grav
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
custom: # Replace with a single custom sponsorship URL
|
||||
6
config/www/user/plugins/admin/.github/dependabot.yml
vendored
Normal file
6
config/www/user/plugins/admin/.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
2696
config/www/user/plugins/admin/CHANGELOG.md
Normal file
2696
config/www/user/plugins/admin/CHANGELOG.md
Normal file
File diff suppressed because it is too large
Load Diff
1
config/www/user/plugins/admin/CONTRIBUTING.md
Normal file
1
config/www/user/plugins/admin/CONTRIBUTING.md
Normal file
@@ -0,0 +1 @@
|
||||
Please read the <a href="https://github.com/getgrav/grav/blob/develop/CONTRIBUTING.md" target="_blank">Contributing Guidelines of the Grav Project</a>
|
||||
21
config/www/user/plugins/admin/LICENSE
Normal file
21
config/www/user/plugins/admin/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017 Grav
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
152
config/www/user/plugins/admin/README.md
Normal file
152
config/www/user/plugins/admin/README.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# Grav Standard Administration Panel Plugin
|
||||
|
||||
This **admin plugin** for [Grav](https://github.com/getgrav/grav) is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages. This will remain a totally optional plugin, and is not in any way required or needed to use Grav effectively. In fact, the admin provides an intentionally limited view to ensure it remains easy to use and not overwhelming. I'm sure power users will still prefer to work with the configuration files directly.
|
||||
|
||||

|
||||
|
||||
# Features
|
||||
|
||||
* User login with automatic password encryption
|
||||
* Forgot password functionality
|
||||
* Logged-in-user management
|
||||
* One click Grav core updates
|
||||
* Dashboard with maintenance status, site activity and latest page updates
|
||||
* Notifications system for latest news, blogs, and announcements
|
||||
* Ajax-powered backup capability
|
||||
* Ajax-powered clear-cache capability
|
||||
* System configuration management
|
||||
* Site configuration management
|
||||
* Normal and Expert modes which allow editing via forms or YAML
|
||||
* Page listing with filtering and search
|
||||
* Page creation, editing, moving, copying, and deleting
|
||||
* Powerful syntax highlighting code editor with instant Grav-powered preview
|
||||
* Editor features, hot keys, toolbar, and distraction-free fullscreen mode
|
||||
* Drag-n-drop upload of page media files including drag-n-drop placement in the editor
|
||||
* One click theme and plugin updates
|
||||
* Plugin manager that allows listing and configuration of installed plugins
|
||||
* Theme manager that allows listing and configuration of installed themes
|
||||
* GPM-powered installation of new plugins and themes
|
||||
|
||||
# Support
|
||||
|
||||
#### Support
|
||||
|
||||
We have tested internally, but we hope to use this public beta phase to identify, isolate, and fix issues related to the plugin to ensure it is as solid and reliable as possible.
|
||||
|
||||
For **live chatting**, please use the dedicated [Discord Chat Room](https://getgrav.org/discord) for discussions directly related to Grav.
|
||||
|
||||
For **bugs, features, improvements**, please ensure you [create issues in the admin plugin GitHub repository](https://github.com/getgrav/grav-plugin-admin).
|
||||
|
||||
# Installation
|
||||
|
||||
First ensure you are running the latest **Grav 1.6.7 or later**. This is required for the admin plugin to run properly (`-f` forces a refresh of the GPM index).
|
||||
|
||||
```
|
||||
$ bin/gpm selfupgrade -f
|
||||
```
|
||||
|
||||
The admin plugin actually requires the help of 3 other plugins, so to get the admin plugin to work you first need to install **admin**, **login**, **forms**, and **email** plugins. These are available via GPM, and because the plugin has dependencies you just need to proceed and install the admin plugin, and agree when prompted to install the others:
|
||||
|
||||
```
|
||||
$ bin/gpm install admin
|
||||
```
|
||||
|
||||
### Manual Installation
|
||||
|
||||
Manual installation is not the recommended method of installation, however, it is still possible to install the admin plugin manually. Basically, you need to download each of the following plugins individually:
|
||||
|
||||
* [admin](https://github.com/getgrav/grav-plugin-admin/archive/develop.zip)
|
||||
* [login](https://github.com/getgrav/grav-plugin-login/archive/develop.zip)
|
||||
* [form](https://github.com/getgrav/grav-plugin-form/archive/develop.zip)
|
||||
* [email](https://github.com/getgrav/grav-plugin-email/archive/develop.zip)
|
||||
|
||||
Extract each archive file into your `user/plugins` folder, then ensure the folders are renamed to just `admin/`, `login/`, `form/`, and `email/`. Then proceed with the **Usage instructions below**.
|
||||
|
||||
# Usage
|
||||
|
||||
### Create User with CLI
|
||||
|
||||
After this you need to create a user account with admin privileges:
|
||||
|
||||
```
|
||||
$ bin/plugin login new-user
|
||||
```
|
||||
|
||||
### Create User Manually
|
||||
|
||||
Alternatively, you can create a user account manually, in a file called `user/accounts/admin.yaml`. This **filename** is actually the **username** that you will use to login. The contents will contain the other information for the user.
|
||||
|
||||
```
|
||||
password: 'password'
|
||||
email: 'youremail@mail.com'
|
||||
fullname: 'Johnny Appleseed'
|
||||
title: 'Site Administrator'
|
||||
access:
|
||||
admin:
|
||||
login: true
|
||||
super: true
|
||||
```
|
||||
|
||||
Of course you should edit your `email`, `password`, `fullname`, and `title` to suit your needs.
|
||||
|
||||
> You can use any password when you manually put it in this `.yaml` file. However, when you change your password in the admin, it must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters.
|
||||
|
||||
# Accessing the Admin
|
||||
|
||||
By default, you can access the admin by pointing your browser to `http://yoursite.com/admin`. You can simply log in with the `username` and `password` set in the YAML file you configured earlier.
|
||||
|
||||
> After logging in, your **plaintext password** will be removed and replaced by an **encrypted** one.
|
||||
|
||||
# Standard Free & Paid Pro Versions
|
||||
|
||||
If you have been following the [blog](https://getgrav.org/blog), [Twitter](https://twitter.com/getgrav), [Discord chat](https://getgrav.org/discord), etc., you probably already know now that our intention is to provide two versions of this plugin.
|
||||
|
||||
The **standard free version**, is very powerful, and has more functionality than most commercial flat-file CMS systems.
|
||||
|
||||
We also intend to release in the near future a more feature-rich **pro version** that will include enhanced functionality, as well as some additional nice-to-have capabilities. This pro version will be a **paid** plugin the price of which is not yet 100% finalized.
|
||||
|
||||
# Admin Events
|
||||
|
||||
## General events
|
||||
|
||||
- onAdminRegisterPermissions - (admin)
|
||||
- onAdminThemeInitialized
|
||||
- onAdminPage - (page)
|
||||
- onAdminMenu
|
||||
- onAdminTwigTemplatePaths - (paths)
|
||||
|
||||
## Page specific events
|
||||
|
||||
- onAdminDashboard
|
||||
- onAdminTools - (tools)
|
||||
- onAdminLogFiles - (logs)
|
||||
- onAdminGenerateReports - (reports)
|
||||
|
||||
## Tasks
|
||||
|
||||
- onAdminControllerInit - (controller)
|
||||
- onAdminTaskExecute - (controller, method)
|
||||
|
||||
## Editing
|
||||
|
||||
- onAdminData
|
||||
- onAdminSave - (object)
|
||||
- onAdminAfterSave - (object)
|
||||
|
||||
## Pages
|
||||
|
||||
- onAdminPageTypes - (types)
|
||||
- onAdminModularPageTypes
|
||||
- onAdminSave - (page)
|
||||
- onAdminAfterSaveAs - (path)
|
||||
- onAdminAfterSave - (page)
|
||||
- onAdminAfterDelete - (page)
|
||||
- onAdminAfterAddMedia - (page)
|
||||
- onAdminAfterDelMedia - (page)
|
||||
- onAdminCreatePageFrontmatter - (header, data)
|
||||
|
||||
|
||||
# Running Tests
|
||||
|
||||
First install the dev dependencies by running `composer update` from the Grav root.
|
||||
Then `composer test` will run the Unit Tests, which should be always executed successfully on any site.
|
||||
6
config/www/user/plugins/admin/UPGRADE.md
Normal file
6
config/www/user/plugins/admin/UPGRADE.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Upgrading to Admin 1.10
|
||||
|
||||
Twig:
|
||||
|
||||
* **Admin link**: When linking to another admin page, use `{{ admin_route('/config/site') }}` instead of any other method, such as `{{ base_url_relative }}/config/site` (fixes multi-language issues)
|
||||
|
||||
1351
config/www/user/plugins/admin/admin.php
Normal file
1351
config/www/user/plugins/admin/admin.php
Normal file
File diff suppressed because it is too large
Load Diff
84
config/www/user/plugins/admin/admin.yaml
Normal file
84
config/www/user/plugins/admin/admin.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
enabled: true
|
||||
route: '/admin'
|
||||
cache_enabled: true
|
||||
theme: grav
|
||||
logo_text: ''
|
||||
body_classes: ''
|
||||
content_padding: true
|
||||
twofa_enabled: true
|
||||
sidebar:
|
||||
activate: tab
|
||||
hover_delay: 100
|
||||
size: auto
|
||||
dashboard:
|
||||
days_of_stats: 7
|
||||
widgets_display:
|
||||
dashboard-maintenance: true
|
||||
dashboard-statistics: true
|
||||
dashboard-notifications: true
|
||||
dashboard-feed: true
|
||||
dashboard-pages: true
|
||||
pages:
|
||||
show_parents: both
|
||||
show_modular: true
|
||||
session:
|
||||
timeout: 1800
|
||||
edit_mode: normal
|
||||
frontend_preview_target: inline
|
||||
show_github_msg: true
|
||||
admin_icons: line-awesome
|
||||
enable_auto_updates_check: false
|
||||
notifications:
|
||||
feed: true
|
||||
dashboard: true
|
||||
plugins: true
|
||||
themes: true
|
||||
popularity:
|
||||
enabled: true
|
||||
ignore: ['/test*','/modular']
|
||||
history:
|
||||
daily: 30
|
||||
monthly: 12
|
||||
visitors: 20
|
||||
whitelabel:
|
||||
quicktray_recompile: false
|
||||
codemirror_theme: paper
|
||||
codemirror_fontsize: md
|
||||
codemirror_md_font: sans
|
||||
logo_custom:
|
||||
logo_login:
|
||||
color_scheme:
|
||||
accents:
|
||||
primary-accent: button
|
||||
secondary-accent: notice
|
||||
tertiary-accent: critical
|
||||
colors:
|
||||
logo-bg: '#323640'
|
||||
logo-link: '#FFFFFF'
|
||||
nav-bg: '#3D424E'
|
||||
nav-text: '#B7B9BD'
|
||||
nav-link: '#ffffff'
|
||||
nav-selected-bg: '#323640'
|
||||
nav-selected-link: '#ffffff'
|
||||
nav-hover-bg: '#434753'
|
||||
nav-hover-link: '#ffffff'
|
||||
toolbar-bg: '#ffffff'
|
||||
toolbar-text: '#3D424E'
|
||||
page-bg: '#F6F6F6'
|
||||
page-text: '#6f7b8a'
|
||||
page-link: '#0090D9'
|
||||
content-bg: '#ffffff'
|
||||
content-text: '#6f7b8a'
|
||||
content-link: '#0090D9'
|
||||
content-link2: '#da4b46'
|
||||
content-header: '#414147'
|
||||
content-tabs-bg: '#e6e6e6'
|
||||
content-tabs-text: '#808080'
|
||||
button-bg: '#0090D9'
|
||||
button-text: '#ffffff'
|
||||
notice-bg: '#06A599'
|
||||
notice-text: '#ffffff'
|
||||
update-bg: '#77559D'
|
||||
update-text: '#ffffff'
|
||||
critical-bg: '#F45857'
|
||||
critical-text: '#ffffff'
|
||||
BIN
config/www/user/plugins/admin/assets/admin-dashboard.png
Normal file
BIN
config/www/user/plugins/admin/assets/admin-dashboard.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
781
config/www/user/plugins/admin/blueprints.yaml
Normal file
781
config/www/user/plugins/admin/blueprints.yaml
Normal file
@@ -0,0 +1,781 @@
|
||||
name: Admin Panel
|
||||
slug: admin
|
||||
type: plugin
|
||||
version: 1.10.49.1
|
||||
description: Adds an advanced administration panel to manage your site
|
||||
icon: empire
|
||||
author:
|
||||
name: Team Grav
|
||||
email: devs@getgrav.org
|
||||
url: https://getgrav.org
|
||||
homepage: https://github.com/getgrav/grav-plugin-admin
|
||||
keywords: admin, plugin, manager, panel
|
||||
bugs: https://github.com/getgrav/grav-plugin-admin/issues
|
||||
docs: https://github.com/getgrav/grav-plugin-admin/blob/develop/README.md
|
||||
license: MIT
|
||||
|
||||
dependencies:
|
||||
- { name: grav, version: '>=1.7.49' }
|
||||
- { name: form, version: '>=6.0.1' }
|
||||
- { name: login, version: '>=3.7.8' }
|
||||
- { name: email, version: '>=3.1.6' }
|
||||
- { name: flex-objects, version: '>=1.2.0' }
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
admin_tabs:
|
||||
type: tabs
|
||||
fields:
|
||||
config_tab:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.CONFIGURATION
|
||||
|
||||
fields:
|
||||
|
||||
Basics:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.BASICS
|
||||
underline: false
|
||||
|
||||
enabled:
|
||||
type: hidden
|
||||
label: PLUGIN_ADMIN.PLUGIN_STATUS
|
||||
highlight: 1
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
cache_enabled:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.ADMIN_CACHING
|
||||
help: PLUGIN_ADMIN.ADMIN_CACHING_HELP
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.YES
|
||||
0: PLUGIN_ADMIN.NO
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
twofa_enabled:
|
||||
type: toggle
|
||||
label: PLUGIN_LOGIN.2FA_TITLE
|
||||
help: PLUGIN_LOGIN.2FA_ENABLED_HELP
|
||||
default: 1
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.YES
|
||||
0: PLUGIN_ADMIN.NO
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
route:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.ADMIN_PATH
|
||||
size: medium
|
||||
placeholder: ADMIN_PATH_PLACEHOLDER
|
||||
help: ADMIN_PATH_HELP
|
||||
|
||||
logo_text:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.LOGO_TEXT
|
||||
size: medium
|
||||
placeholder: "Grav"
|
||||
help: PLUGIN_ADMIN.LOGO_TEXT_HELP
|
||||
|
||||
content_padding:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.CONTENT_PADDING
|
||||
help: PLUGIN_ADMIN.CONTENT_PADDING_HELP
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.YES
|
||||
0: PLUGIN_ADMIN.NO
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
body_classes:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.BODY_CLASSES
|
||||
size: medium
|
||||
help: PLUGIN_ADMIN.BODY_CLASSES_HELP
|
||||
|
||||
sidebar.activate:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.SIDEBAR_ACTIVATION
|
||||
help: PLUGIN_ADMIN.SIDEBAR_ACTIVATION_HELP
|
||||
size: small
|
||||
default: tab
|
||||
options:
|
||||
tab: PLUGIN_ADMIN.SIDEBAR_ACTIVATION_TAB
|
||||
hover: PLUGIN_ADMIN.SIDEBAR_ACTIVATION_HOVER
|
||||
|
||||
sidebar.hover_delay:
|
||||
type: text
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.SIDEBAR_HOVER_DELAY_APPEND
|
||||
label: PLUGIN_ADMIN.SIDEBAR_HOVER_DELAY
|
||||
default: 500
|
||||
validate:
|
||||
type: number
|
||||
min: 1
|
||||
|
||||
|
||||
sidebar.size:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.SIDEBAR_SIZE
|
||||
help: PLUGIN_ADMIN.SIDEBAR_SIZE_HELP
|
||||
size: medium
|
||||
default: auto
|
||||
options:
|
||||
auto: PLUGIN_ADMIN.SIDEBAR_SIZE_AUTO
|
||||
small: PLUGIN_ADMIN.SIDEBAR_SIZE_SMALL
|
||||
|
||||
theme:
|
||||
type: hidden
|
||||
label: PLUGIN_ADMIN.THEME
|
||||
default: grav
|
||||
|
||||
edit_mode:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.EDIT_MODE
|
||||
size: small
|
||||
default: normal
|
||||
options:
|
||||
normal: PLUGIN_ADMIN.NORMAL
|
||||
expert: PLUGIN_ADMIN.EXPERT
|
||||
help: PLUGIN_ADMIN.EDIT_MODE_HELP
|
||||
|
||||
frontend_preview_target:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.FRONTEND_PREVIEW_TARGET
|
||||
size: medium
|
||||
default: inline
|
||||
options:
|
||||
inline: PLUGIN_ADMIN.FRONTEND_PREVIEW_TARGET_INLINE
|
||||
_blank: PLUGIN_ADMIN.FRONTEND_PREVIEW_TARGET_NEW
|
||||
_self: PLUGIN_ADMIN.FRONTEND_PREVIEW_TARGET_CURRENT
|
||||
|
||||
pages.show_parents:
|
||||
type: select
|
||||
size: medium
|
||||
label: PLUGIN_ADMIN.PARENT_DROPDOWN
|
||||
highlight: 1
|
||||
options:
|
||||
both: PLUGIN_ADMIN.PARENT_DROPDOWN_BOTH
|
||||
folder: PLUGIN_ADMIN.PARENT_DROPDOWN_FOLDER
|
||||
fullpath: PLUGIN_ADMIN.PARENT_DROPDOWN_FULLPATH
|
||||
|
||||
pages.parents_levels:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.PARENTS_LEVELS
|
||||
size: small
|
||||
help: PLUGIN_ADMIN.PARENTS_LEVELS_HELP
|
||||
|
||||
pages.show_modular:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.MODULAR_PARENTS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.MODULAR_PARENTS_HELP
|
||||
|
||||
show_beta_msg:
|
||||
type: hidden
|
||||
|
||||
show_github_msg:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.SHOW_GITHUB_LINK
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.SHOW_GITHUB_LINK_HELP
|
||||
|
||||
enable_auto_updates_check:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.AUTO_UPDATES
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.AUTO_UPDATES_HELP
|
||||
|
||||
session.timeout:
|
||||
type: text
|
||||
size: small
|
||||
label: PLUGIN_ADMIN.TIMEOUT
|
||||
append: GRAV.NICETIME.SECOND_PLURAL
|
||||
help: PLUGIN_ADMIN.TIMEOUT_HELP
|
||||
validate:
|
||||
type: number
|
||||
min: 1
|
||||
|
||||
hide_page_types:
|
||||
type: select
|
||||
size: large
|
||||
label: PLUGIN_ADMIN.HIDE_PAGE_TYPES
|
||||
classes: fancy
|
||||
multiple: true
|
||||
array: true
|
||||
selectize:
|
||||
create: true
|
||||
data-options@: ['\Grav\Plugin\AdminPlugin::pagesTypes', true]
|
||||
|
||||
hide_modular_page_types:
|
||||
type: select
|
||||
size: large
|
||||
label: PLUGIN_ADMIN.HIDE_MODULAR_PAGE_TYPES
|
||||
classes: fancy
|
||||
multiple: true
|
||||
array: true
|
||||
selectize:
|
||||
create: true
|
||||
data-options@: ['\Grav\Plugin\AdminPlugin::pagesModularTypes', true]
|
||||
|
||||
Dashboard:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.DASHBOARD
|
||||
underline: true
|
||||
|
||||
widgets_display:
|
||||
type: widgets
|
||||
label: PLUGIN_ADMIN.WIDGETS_DISPLAY
|
||||
validate:
|
||||
type: array
|
||||
|
||||
Notifications:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.NOTIFICATIONS
|
||||
underline: true
|
||||
|
||||
notifications.feed:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.FEED_NOTIFICATIONS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.FEED_NOTIFICATIONS_HELP
|
||||
|
||||
notifications.dashboard:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.DASHBOARD_NOTIFICATIONS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.DASHBOARD_NOTIFICATIONS_HELP
|
||||
|
||||
notifications.plugins:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.PLUGINS_NOTIFICATIONS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.PLUGINS_NOTIFICATIONS_HELP
|
||||
|
||||
notifications.themes:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.THEMES_NOTIFICATIONS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.THEMES_NOTIFICATIONS_HELP
|
||||
|
||||
customization_tab:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.CUSTOMIZATION
|
||||
|
||||
fields:
|
||||
whitelabel.logos:
|
||||
type: section
|
||||
underline: true
|
||||
title: PLUGIN_ADMIN.LOGOS
|
||||
|
||||
whitelabel.logo_login:
|
||||
type: file
|
||||
label: PLUGIN_ADMIN.LOGIN_SCREEN_CUSTOM_LOGO_LABEL
|
||||
destination: 'user://assets'
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
whitelabel.logo_custom:
|
||||
type: file
|
||||
label: PLUGIN_ADMIN.TOP_LEFT_CUSTOM_LOGO_LABEL
|
||||
destination: 'user://assets'
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
codemirror_section:
|
||||
type: section
|
||||
underline: true
|
||||
title: PLUGIN_ADMIN.CODEMIRROR
|
||||
|
||||
whitelabel.codemirror_theme:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.CODEMIRROR_THEME
|
||||
default: paper
|
||||
markdown: true
|
||||
data-options@: '\Grav\Plugin\AdminPlugin::themeOptions'
|
||||
description: PLUGIN_ADMIN.CODEMIRROR_THEME_DESC
|
||||
|
||||
whitelabel.codemirror_fontsize:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.CODEMIRROR_FONTSIZE
|
||||
default: md
|
||||
options:
|
||||
sm: PLUGIN_ADMIN.CODEMIRROR_FONTSIZE_SM
|
||||
md: PLUGIN_ADMIN.CODEMIRROR_FONTSIZE_MD
|
||||
lg: PLUGIN_ADMIN.CODEMIRROR_FONTSIZE_LG
|
||||
|
||||
whitelabel.codemirror_md_font:
|
||||
type: select
|
||||
label: PLUGIN_ADMIN.CODEMIRROR_MD_FONT
|
||||
default: sans
|
||||
options:
|
||||
sans: PLUGIN_ADMIN.CODEMIRROR_MD_FONT_SANS
|
||||
mono: PLUGIN_ADMIN.CODEMIRROR_MD_FONT_MONO
|
||||
|
||||
customization_section:
|
||||
type: section
|
||||
underline: true
|
||||
title: PLUGIN_ADMIN.CUSTOMIZATION
|
||||
|
||||
whitelabel.quicktray_recompile:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.QUICKTRAY_RECOMPILE
|
||||
help: PLUGIN_ADMIN.QUICKTRAY_RECOMPILE_HELP
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
|
||||
|
||||
whitelabel.color_scheme.name:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.COLOR_SCHEME_NAME
|
||||
help: PLUGIN_ADMIN.COLOR_SCHEME_NAME_HELP
|
||||
placeholder: PLUGIN_ADMIN.COLOR_SCHEME_NAME_PLACEHOLDER
|
||||
|
||||
themes-preview:
|
||||
type: themepreview
|
||||
ignore: true;
|
||||
label: PLUGIN_ADMIN.PRESETS
|
||||
style: vertical
|
||||
|
||||
colorschemes:
|
||||
type: colorscheme
|
||||
label: PLUGIN_ADMIN.COLOR_SCHEME_LABEL
|
||||
style: vertical
|
||||
help: PLUGIN_ADMIN.COLOR_SCHEME_HELP
|
||||
|
||||
fields:
|
||||
whitelabel.color_scheme.colors.logo-bg:
|
||||
type: colorscheme.color
|
||||
default: '#1e333e'
|
||||
help: PLUGIN_ADMIN.LOGO_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.logo-link:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.LOGO_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-bg:
|
||||
type: colorscheme.color
|
||||
default: '#253a47'
|
||||
help: PLUGIN_ADMIN.NAV_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-text:
|
||||
type: colorscheme.color
|
||||
default: '#afc7d5'
|
||||
help: PLUGIN_ADMIN.NAV_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-link:
|
||||
type: colorscheme.color
|
||||
default: '#d1dee7'
|
||||
help: PLUGIN_ADMIN.NAV_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-selected-bg:
|
||||
type: colorscheme.color
|
||||
default: '#2d4d5b'
|
||||
help: PLUGIN_ADMIN.NAV_SELECTED_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-selected-link:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.NAV_SELECTED_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-hover-bg:
|
||||
type: colorscheme.color
|
||||
default: '#1e333e'
|
||||
help: PLUGIN_ADMIN.NAV_HOVER_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.nav-hover-link:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.NAV_HOVER_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.toolbar-bg:
|
||||
type: colorscheme.color
|
||||
default: '#349886'
|
||||
help: PLUGIN_ADMIN.TOOLBAR_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.toolbar-text:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.TOOLBAR_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.page-bg:
|
||||
type: colorscheme.color
|
||||
default: '#314d5b'
|
||||
help: PLUGIN_ADMIN.PAGE_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.page-text:
|
||||
type: colorscheme.color
|
||||
default: '#81a5b5'
|
||||
help: PLUGIN_ADMIN.PAGE_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.page-link:
|
||||
type: colorscheme.color
|
||||
default: '#aad9ed'
|
||||
help: PLUGIN_ADMIN.PAGE_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-bg:
|
||||
type: colorscheme.color
|
||||
default: '#eeeeee'
|
||||
help: PLUGIN_ADMIN.CONTENT_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-text:
|
||||
type: colorscheme.color
|
||||
default: '#737c81'
|
||||
help: PLUGIN_ADMIN.CONTENT_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-link:
|
||||
type: colorscheme.color
|
||||
default: '#0082ba'
|
||||
help: PLUGIN_ADMIN.CONTENT_LINK_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-link2:
|
||||
type: colorscheme.color
|
||||
default: '#da4b46'
|
||||
help: PLUGIN_ADMIN.CONTENT_LINK2_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-header:
|
||||
type: colorscheme.color
|
||||
default: '#314d5b'
|
||||
help: PLUGIN_ADMIN.CONTENT_HEADER_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-tabs-bg:
|
||||
type: colorscheme.color
|
||||
default: '#223a47'
|
||||
help: PLUGIN_ADMIN.CONTENT_TABS_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-tabs-text:
|
||||
type: colorscheme.color
|
||||
default: '#d1dee7'
|
||||
help: PLUGIN_ADMIN.CONTENT_TABS_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.content-highlight:
|
||||
type: colorscheme.color
|
||||
default: '#ffffd7'
|
||||
help: PLUGIN_ADMIN.CONTENT_HIGHLIGHT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.button-bg:
|
||||
type: colorscheme.color
|
||||
default: '#41bea8'
|
||||
help: PLUGIN_ADMIN.BUTTON_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.button-text:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.BUTTON_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.notice-bg:
|
||||
type: colorscheme.color
|
||||
default: '#00a6cf'
|
||||
help: PLUGIN_ADMIN.NOTICE_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.notice-text:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.NOTICE_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.update-bg:
|
||||
type: colorscheme.color
|
||||
default: '#8f5aad'
|
||||
help: PLUGIN_ADMIN.UPDATES_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.update-text:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.UPDATES_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.critical-bg:
|
||||
type: colorscheme.color
|
||||
default: '#da4b46'
|
||||
help: PLUGIN_ADMIN.CRITICAL_BG_HELP
|
||||
|
||||
whitelabel.color_scheme.colors.critical-text:
|
||||
type: colorscheme.color
|
||||
default: '#ffffff'
|
||||
help: PLUGIN_ADMIN.CRITICAL_TEXT_HELP
|
||||
|
||||
whitelabel.color_scheme.accents.primary-accent:
|
||||
type: select
|
||||
size: medium
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.PRIMARY_ACCENT_LABEL
|
||||
help: PLUGIN_ADMIN.PRIMARY_ACCENT_HELP
|
||||
options:
|
||||
button: PLUGIN_ADMIN.BUTTON_COLORS
|
||||
content: PLUGIN_ADMIN.CONTENT_COLORS
|
||||
tabs: PLUGIN_ADMIN.TABS_COLORS
|
||||
critical: PLUGIN_ADMIN.CRITICAL_COLORS
|
||||
logo: PLUGIN_ADMIN.LOGO_COLORS
|
||||
nav: PLUGIN_ADMIN.NAV_COLORS
|
||||
notice: PLUGIN_ADMIN.NOTICE_COLORS
|
||||
page: PLUGIN_ADMIN.PAGE_COLORS
|
||||
toolbar: PLUGIN_ADMIN.TOOLBAR_COLORS
|
||||
update: PLUGIN_ADMIN.UPDATE_COLORS
|
||||
|
||||
whitelabel.color_scheme.accents.secondary-accent:
|
||||
type: select
|
||||
size: medium
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.SECONDARY_ACCENT_LABEL
|
||||
help: PLUGIN_ADMIN.SECONDARY_ACCENT_HELP
|
||||
options:
|
||||
button: PLUGIN_ADMIN.BUTTON_COLORS
|
||||
content: PLUGIN_ADMIN.CONTENT_COLORS
|
||||
tabs: PLUGIN_ADMIN.TABS_COLORS
|
||||
critical: PLUGIN_ADMIN.CRITICAL_COLORS
|
||||
logo: PLUGIN_ADMIN.LOGO_COLORS
|
||||
nav: PLUGIN_ADMIN.NAV_COLORS
|
||||
notice: PLUGIN_ADMIN.NOTICE_COLORS
|
||||
page: PLUGIN_ADMIN.PAGE_COLORS
|
||||
toolbar: PLUGIN_ADMIN.TOOLBAR_COLORS
|
||||
update: PLUGIN_ADMIN.UPDATE_COLORS
|
||||
|
||||
whitelabel.color_scheme.accents.tertiary-accent:
|
||||
type: select
|
||||
size: medium
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.TERTIARY_ACCENT_LABEL
|
||||
help: PLUGIN_ADMIN.TERTIARY_ACCENT_HELP
|
||||
options:
|
||||
button: PLUGIN_ADMIN.BUTTON_COLORS
|
||||
content: PLUGIN_ADMIN.CONTENT_COLORS
|
||||
tabs: PLUGIN_ADMIN.TABS_COLORS
|
||||
critical: PLUGIN_ADMIN.CRITICAL_COLORS
|
||||
logo: PLUGIN_ADMIN.LOGO_COLORS
|
||||
nav: PLUGIN_ADMIN.NAV_COLORS
|
||||
notice: PLUGIN_ADMIN.NOTICE_COLORS
|
||||
page: PLUGIN_ADMIN.PAGE_COLORS
|
||||
toolbar: PLUGIN_ADMIN.TOOLBAR_COLORS
|
||||
update: PLUGIN_ADMIN.UPDATE_COLORS
|
||||
|
||||
whitelabel.custom_footer:
|
||||
type: textarea
|
||||
rows: 2
|
||||
label: PLUGIN_ADMIN.CUSTOM_FOOTER
|
||||
help: PLUGIN_ADMIN.CUSTOM_FOOTER_HELP
|
||||
placeholder: PLUGIN_ADMIN.CUSTOM_FOOTER_PLACEHOLDER
|
||||
|
||||
|
||||
whitelabel.custom_css:
|
||||
label: PLUGIN_ADMIN.CUSTOM_CSS_LABEL
|
||||
placeholder: PLUGIN_ADMIN.CUSTOM_CSS_PLACEHOLDER
|
||||
help: PLUGIN_ADMIN.CUSTOM_CSS_HELP
|
||||
type: editor
|
||||
codemirror:
|
||||
mode: 'css'
|
||||
indentUnit: 2
|
||||
autofocus: true
|
||||
indentWithTabs: true
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
|
||||
whitelabel.custom_presets:
|
||||
label: PLUGIN_ADMIN.CUSTOM_PRESETS
|
||||
help: PLUGIN_ADMIN.CUSTOM_PRESETS_HELP
|
||||
placeholder: PLUGIN_ADMIN.CUSTOM_PRESETS_PLACEHOLDER
|
||||
type: editor
|
||||
codemirror:
|
||||
mode: 'yaml'
|
||||
indentUnit: 2
|
||||
autofocus: true
|
||||
indentWithTabs: false
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
gutters: ['CodeMirror-lint-markers']
|
||||
lint: true
|
||||
|
||||
extras_tab:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.EXTRAS
|
||||
|
||||
fields:
|
||||
|
||||
Popularity:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.POPULARITY
|
||||
underline: true
|
||||
|
||||
popularity.enabled:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.VISITOR_TRACKING
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
help: PLUGIN_ADMIN.VISITOR_TRACKING_HELP
|
||||
|
||||
dashboard.days_of_stats:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.DAYS_OF_STATS
|
||||
append: days
|
||||
size: x-small
|
||||
default: 7
|
||||
help: PLUGIN_ADMIN.DAYS_OF_STATS_HELP
|
||||
validate:
|
||||
type: int
|
||||
|
||||
popularity.ignore:
|
||||
type: array
|
||||
label: PLUGIN_ADMIN.IGNORE_URLS
|
||||
size: large
|
||||
help: PLUGIN_ADMIN.IGNORE_URLS_HELP
|
||||
default: ['/test*','/modular']
|
||||
value_only: true
|
||||
placeholder_value: /ignore-this-route
|
||||
|
||||
popularity.history.daily:
|
||||
type: hidden
|
||||
label: PLUGIN_ADMIN.DAILY_HISTORY
|
||||
default: 30
|
||||
|
||||
popularity.history.monthly:
|
||||
type: hidden
|
||||
label: PLUGIN_ADMIN.MONTHLY_HISTORY
|
||||
default: 12
|
||||
|
||||
popularity.history.visitors:
|
||||
type: hidden
|
||||
label: PLUGIN_ADMIN.VISITORS_HISTORY
|
||||
default: 20
|
||||
|
||||
MediaResize:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.MEDIA_RESIZE
|
||||
underline: true
|
||||
|
||||
MediaResizeNote:
|
||||
type: spacer
|
||||
text: PLUGIN_ADMIN.PAGEMEDIA_RESIZER
|
||||
markdown: true
|
||||
|
||||
pagemedia.resize_width:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RESIZE_WIDTH
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RESIZE_WIDTH_HELP
|
||||
|
||||
pagemedia.resize_height:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RESIZE_HEIGHT
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RESIZE_HEIGHT_HELP
|
||||
|
||||
pagemedia.res_min_width:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RES_MIN_WIDTH
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RES_MIN_WIDTH_HELP
|
||||
|
||||
pagemedia.res_min_height:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RES_MIN_HEIGHT
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RES_MIN_HEIGHT_HELP
|
||||
|
||||
pagemedia.res_max_width:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RES_MAX_WIDTH
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RES_MAX_WIDTH_HELP
|
||||
|
||||
pagemedia.res_max_height:
|
||||
type: number
|
||||
size: x-small
|
||||
append: PLUGIN_ADMIN.PIXELS
|
||||
label: PLUGIN_ADMIN.RES_MAX_HEIGHT
|
||||
default: 0
|
||||
validate:
|
||||
type: number
|
||||
help: PLUGIN_ADMIN.RES_MAX_HEIGHT_HELP
|
||||
|
||||
pagemedia.resize_quality:
|
||||
type: number
|
||||
size: x-small
|
||||
append: 0...1
|
||||
label: PLUGIN_ADMIN.RESIZE_QUALITY
|
||||
default: 0.8
|
||||
validate:
|
||||
type: number
|
||||
step: 0.01
|
||||
help: PLUGIN_ADMIN.RESIZE_QUALITY_HELP
|
||||
@@ -0,0 +1,43 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
section:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.COPY_PAGE
|
||||
|
||||
title:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.PAGE_TITLE
|
||||
help: PLUGIN_ADMIN.PAGE_TITLE_HELP
|
||||
validate:
|
||||
required: true
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FOLDER_NAME
|
||||
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
header.published:
|
||||
id: move-header-published
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.PUBLISHED
|
||||
help: PLUGIN_ADMIN.PUBLISHED_HELP
|
||||
highlight: ''
|
||||
default: ''
|
||||
size: medium
|
||||
options:
|
||||
'': PLUGIN_ADMIN.AUTO
|
||||
1: PLUGIN_ADMIN.YES
|
||||
0: PLUGIN_ADMIN.NO
|
||||
validate:
|
||||
type: bool
|
||||
@@ -0,0 +1,52 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
section:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.ADD_MODULE_CONTENT
|
||||
|
||||
title:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.PAGE_TITLE
|
||||
validate:
|
||||
required: true
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FOLDER_NAME
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
route:
|
||||
type: parents
|
||||
label: PLUGIN_ADMIN.PAGE
|
||||
classes: fancy
|
||||
validate:
|
||||
required: true
|
||||
|
||||
name:
|
||||
type: select
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.MODULE_TEMPLATE
|
||||
help: PLUGIN_ADMIN.PAGE_FILE_HELP
|
||||
default: default
|
||||
data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes'
|
||||
validate:
|
||||
required: true
|
||||
|
||||
modular:
|
||||
type: hidden
|
||||
default: 1
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
blueprint:
|
||||
type: blueprint
|
||||
@@ -0,0 +1,104 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
content:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.CONTENT
|
||||
|
||||
fields:
|
||||
xss_check:
|
||||
type: xss
|
||||
|
||||
frontmatter:
|
||||
classes: frontmatter
|
||||
type: editor
|
||||
label: PLUGIN_ADMIN.FRONTMATTER
|
||||
autofocus: true
|
||||
codemirror:
|
||||
mode: 'yaml'
|
||||
indentUnit: 4
|
||||
autofocus: true
|
||||
indentWithTabs: false
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
gutters: ['CodeMirror-lint-markers']
|
||||
lint: true
|
||||
|
||||
content:
|
||||
type: markdown
|
||||
|
||||
header.media_order:
|
||||
type: pagemedia
|
||||
label: PLUGIN_ADMIN.PAGE_MEDIA
|
||||
|
||||
options:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.OPTIONS
|
||||
|
||||
fields:
|
||||
|
||||
columns:
|
||||
type: columns
|
||||
|
||||
fields:
|
||||
column1:
|
||||
type: column
|
||||
|
||||
fields:
|
||||
|
||||
ordering:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
|
||||
help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FILENAME
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
route:
|
||||
type: parents
|
||||
label: PLUGIN_ADMIN.PARENT
|
||||
classes: fancy
|
||||
validate:
|
||||
required: true
|
||||
|
||||
name:
|
||||
type: select
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.MODULE_TEMPLATE
|
||||
default: default
|
||||
data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes'
|
||||
validate:
|
||||
required: true
|
||||
|
||||
column2:
|
||||
type: column
|
||||
|
||||
fields:
|
||||
order:
|
||||
type: order
|
||||
label: PLUGIN_ADMIN.ORDERING
|
||||
|
||||
blueprint:
|
||||
type: blueprint
|
||||
@@ -0,0 +1,5 @@
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
route:
|
||||
type: hidden
|
||||
@@ -0,0 +1,62 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
section:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.ADD_PAGE
|
||||
|
||||
title:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.PAGE_TITLE
|
||||
help: PLUGIN_ADMIN.PAGE_TITLE_HELP
|
||||
validate:
|
||||
required: true
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FOLDER_NAME
|
||||
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
route:
|
||||
type: parents
|
||||
label: PLUGIN_ADMIN.PARENT_PAGE
|
||||
classes: fancy
|
||||
validate:
|
||||
required: true
|
||||
|
||||
name:
|
||||
type: select
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.PAGE_FILE
|
||||
help: PLUGIN_ADMIN.PAGE_FILE_HELP
|
||||
data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes'
|
||||
data-default@: '\Grav\Plugin\Admin\Admin::getLastPageName'
|
||||
validate:
|
||||
required: true
|
||||
|
||||
visible:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.VISIBLE
|
||||
help: PLUGIN_ADMIN.VISIBLE_HELP
|
||||
highlight: ''
|
||||
default: ''
|
||||
options:
|
||||
'': PLUGIN_ADMIN.AUTO
|
||||
1: PLUGIN_ADMIN.YES
|
||||
0: PLUGIN_ADMIN.NO
|
||||
validate:
|
||||
type: bool
|
||||
required: true
|
||||
|
||||
blueprint:
|
||||
type: blueprint
|
||||
@@ -0,0 +1,31 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
section:
|
||||
type: section
|
||||
title: PLUGIN_ADMIN.ADD_FOLDER
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FOLDER_NAME
|
||||
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
route:
|
||||
type: parents
|
||||
label: PLUGIN_ADMIN.PARENT_PAGE
|
||||
classes: fancy
|
||||
validate:
|
||||
required: true
|
||||
|
||||
blueprint:
|
||||
type: blueprint
|
||||
104
config/www/user/plugins/admin/blueprints/admin/pages/raw.yaml
Normal file
104
config/www/user/plugins/admin/blueprints/admin/pages/raw.yaml
Normal file
@@ -0,0 +1,104 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
content:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.CONTENT
|
||||
|
||||
fields:
|
||||
xss_check:
|
||||
type: xss
|
||||
|
||||
frontmatter:
|
||||
classes: frontmatter
|
||||
type: editor
|
||||
label: PLUGIN_ADMIN.FRONTMATTER
|
||||
autofocus: true
|
||||
codemirror:
|
||||
mode: 'yaml'
|
||||
indentUnit: 4
|
||||
autofocus: true
|
||||
indentWithTabs: false
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
gutters: ['CodeMirror-lint-markers']
|
||||
lint: true
|
||||
|
||||
content:
|
||||
type: codemirror
|
||||
|
||||
header.media_order:
|
||||
type: pagemedia
|
||||
label: PLUGIN_ADMIN.PAGE_MEDIA
|
||||
|
||||
options:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.OPTIONS
|
||||
|
||||
fields:
|
||||
|
||||
columns:
|
||||
type: columns
|
||||
|
||||
fields:
|
||||
column1:
|
||||
type: column
|
||||
|
||||
fields:
|
||||
|
||||
ordering:
|
||||
type: toggle
|
||||
label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
|
||||
help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
folder:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.FOLDER_NAME
|
||||
help: PLUGIN_ADMIN.FOLDER_NAME_HELP
|
||||
validate:
|
||||
rule: slug
|
||||
required: true
|
||||
|
||||
route:
|
||||
type: parents
|
||||
label: PLUGIN_ADMIN.PARENT
|
||||
classes: fancy
|
||||
|
||||
name:
|
||||
type: select
|
||||
classes: fancy
|
||||
label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
|
||||
help: PLUGIN_ADMIN.DISPLAY_TEMPLATE_HELP
|
||||
default: default
|
||||
data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes'
|
||||
validate:
|
||||
required: true
|
||||
|
||||
column2:
|
||||
type: column
|
||||
|
||||
fields:
|
||||
order:
|
||||
type: order
|
||||
label: PLUGIN_ADMIN.ORDERING
|
||||
|
||||
blueprint:
|
||||
type: blueprint
|
||||
@@ -0,0 +1,34 @@
|
||||
rules:
|
||||
slug:
|
||||
pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
|
||||
min: 1
|
||||
max: 200
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
content:
|
||||
type: tab
|
||||
title: PLUGIN_ADMIN.CONTENT
|
||||
|
||||
fields:
|
||||
frontmatter:
|
||||
classes: frontmatter
|
||||
type: editor
|
||||
label: PLUGIN_ADMIN.FRONTMATTER
|
||||
autofocus: true
|
||||
codemirror:
|
||||
mode: 'yaml'
|
||||
indentUnit: 4
|
||||
autofocus: true
|
||||
indentWithTabs: false
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
gutters: ['CodeMirror-lint-markers']
|
||||
lint: true
|
||||
36
config/www/user/plugins/admin/blueprints/config/media.yaml
Normal file
36
config/www/user/plugins/admin/blueprints/config/media.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
title: PLUGIN_ADMIN.MEDIA
|
||||
form:
|
||||
validation: loose
|
||||
fields:
|
||||
'types':
|
||||
name: medias
|
||||
type: list
|
||||
label: PLUGIN_ADMIN.MEDIA_TYPES
|
||||
style: vertical
|
||||
key: extension
|
||||
controls: both
|
||||
collapsed: true
|
||||
|
||||
fields:
|
||||
.extension:
|
||||
type: key
|
||||
label: PLUGIN_ADMIN.FILE_EXTENSION
|
||||
.type:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.TYPE
|
||||
.thumb:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.THUMB
|
||||
.mime:
|
||||
type: text
|
||||
label: PLUGIN_ADMIN.MIME_TYPE
|
||||
validate:
|
||||
type: lower
|
||||
.image:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: PLUGIN_ADMIN.IMAGE_OPTIONS
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
|
||||
2507
config/www/user/plugins/admin/classes/plugin/Admin.php
Normal file
2507
config/www/user/plugins/admin/classes/plugin/Admin.php
Normal file
File diff suppressed because it is too large
Load Diff
1174
config/www/user/plugins/admin/classes/plugin/AdminBaseController.php
Normal file
1174
config/www/user/plugins/admin/classes/plugin/AdminBaseController.php
Normal file
File diff suppressed because it is too large
Load Diff
3073
config/www/user/plugins/admin/classes/plugin/AdminController.php
Normal file
3073
config/www/user/plugins/admin/classes/plugin/AdminController.php
Normal file
File diff suppressed because it is too large
Load Diff
182
config/www/user/plugins/admin/classes/plugin/AdminForm.php
Normal file
182
config/www/user/plugins/admin/classes/plugin/AdminForm.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use ArrayAccess;
|
||||
use Exception;
|
||||
use Grav\Common\Data\Blueprint;
|
||||
use Grav\Common\Data\Data;
|
||||
use Grav\Framework\Form\Interfaces\FormFlashInterface;
|
||||
use Grav\Framework\Form\Interfaces\FormInterface;
|
||||
use Grav\Framework\Form\Traits\FormTrait;
|
||||
use InvalidArgumentException;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Class AdminForm
|
||||
* @package Grav\Plugin\Admin
|
||||
*/
|
||||
class AdminForm implements FormInterface, JsonSerializable
|
||||
{
|
||||
use FormTrait;
|
||||
|
||||
/** @var string */
|
||||
protected $nonce_name;
|
||||
/** @var string */
|
||||
protected $nonce_action;
|
||||
/** @var callable */
|
||||
protected $submitMethod;
|
||||
|
||||
/**
|
||||
* AdminForm constructor.
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $options
|
||||
*/
|
||||
public function __construct(string $name, array $options)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->nonce_name = $options['nonce_name'] ?? 'admin-nonce';
|
||||
$this->nonce_action = $options['nonce_action'] ?? 'admin-form';
|
||||
|
||||
$this->setId($options['id'] ?? $this->getName());
|
||||
$this->setUniqueId($options['unique_id'] ?? $this->getName());
|
||||
$this->setBlueprint($options['blueprint']);
|
||||
$this->setSubmitMethod($options['submit_method'] ?? null);
|
||||
$this->setFlashLookupFolder('tmp://admin/forms/[SESSIONID]');
|
||||
|
||||
if (!empty($options['reset'])) {
|
||||
$this->getFlash()->delete();
|
||||
}
|
||||
|
||||
$this->initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
public function initialize(): AdminForm
|
||||
{
|
||||
$this->messages = [];
|
||||
$this->submitted = false;
|
||||
$this->unsetFlash();
|
||||
|
||||
/** @var FormFlashInterface $flash */
|
||||
$flash = $this->getFlash();
|
||||
if ($flash->exists()) {
|
||||
$data = $flash->getData();
|
||||
if (null !== $data) {
|
||||
$data = new Data($data, $this->getBlueprint());
|
||||
$data->setKeepEmptyValues(true);
|
||||
$data->setMissingValuesAsNull(true);
|
||||
}
|
||||
|
||||
$this->data = $data;
|
||||
$this->files = $flash->getFilesByFields(false);
|
||||
} else {
|
||||
$this->data = new Data([], $this->getBlueprint());
|
||||
$this->files = [];
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getNonceName(): string
|
||||
{
|
||||
return $this->nonce_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getNonceAction(): string
|
||||
{
|
||||
return $this->nonce_action;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getScope(): string
|
||||
{
|
||||
return 'data.';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Blueprint $blueprint
|
||||
*/
|
||||
public function setBlueprint(Blueprint $blueprint): void
|
||||
{
|
||||
if (null === $blueprint) {
|
||||
throw new InvalidArgumentException('Blueprint is required');
|
||||
}
|
||||
|
||||
$this->blueprint = $blueprint;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $field
|
||||
* @param mixed $value
|
||||
*/
|
||||
public function setData(string $field, $value): void
|
||||
{
|
||||
$this->getData()->set($field, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Blueprint
|
||||
*/
|
||||
public function getBlueprint(): Blueprint
|
||||
{
|
||||
return $this->blueprint;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable|null $submitMethod
|
||||
*/
|
||||
public function setSubmitMethod(?callable $submitMethod): void
|
||||
{
|
||||
if (null === $submitMethod) {
|
||||
throw new InvalidArgumentException('Submit method is required');
|
||||
}
|
||||
|
||||
$this->submitMethod = $submitMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @param array $files
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function doSubmit(array $data, array $files): void
|
||||
{
|
||||
$method = $this->submitMethod;
|
||||
$method($data, $files);
|
||||
|
||||
$this->reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter validated data.
|
||||
*
|
||||
* @param ArrayAccess|Data|null $data
|
||||
* @return void
|
||||
*/
|
||||
protected function filterData($data = null): void
|
||||
{
|
||||
if ($data instanceof Data) {
|
||||
$data->filter(true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Page\Page;
|
||||
use Grav\Framework\Form\Interfaces\FormFactoryInterface;
|
||||
use Grav\Framework\Form\Interfaces\FormInterface;
|
||||
|
||||
/**
|
||||
* Class FlexFormFactory
|
||||
* @package Grav\Plugin\FlexObjects
|
||||
*/
|
||||
class AdminFormFactory implements FormFactoryInterface
|
||||
{
|
||||
/**
|
||||
* @param Page $page
|
||||
* @param string $name
|
||||
* @param array $form
|
||||
* @return FormInterface|null
|
||||
*/
|
||||
public function createPageForm(Page $page, string $name, array $form): ?FormInterface
|
||||
{
|
||||
return $this->createFormForPage($page, $name, $form);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PageInterface $page
|
||||
* @param string $name
|
||||
* @param array $form
|
||||
* @return FormInterface|null
|
||||
*/
|
||||
public function createFormForPage(PageInterface $page, string $name, array $form): ?FormInterface
|
||||
{
|
||||
/** @var Admin|null $admin */
|
||||
$admin = Grav::instance()['admin'] ?? null;
|
||||
$object = $admin->form ?? null;
|
||||
|
||||
return $object && $object->getName() === $name ? $object : null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,414 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Grav\Plugin\Admin\Controllers;
|
||||
|
||||
use Grav\Common\Debugger;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Inflector;
|
||||
use Grav\Common\Language\Language;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Flex\Interfaces\FlexObjectInterface;
|
||||
use Grav\Framework\Form\Interfaces\FormInterface;
|
||||
use Grav\Framework\Psr7\Response;
|
||||
use Grav\Framework\RequestHandler\Exception\NotFoundException;
|
||||
use Grav\Framework\RequestHandler\Exception\PageExpiredException;
|
||||
use Grav\Framework\RequestHandler\Exception\RequestException;
|
||||
use Grav\Framework\Route\Route;
|
||||
use Grav\Framework\Session\SessionInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
use RocketTheme\Toolbox\Event\Event;
|
||||
use RocketTheme\Toolbox\Session\Message;
|
||||
|
||||
abstract class AbstractController implements RequestHandlerInterface
|
||||
{
|
||||
/** @var string */
|
||||
protected $nonce_action = 'admin-form';
|
||||
|
||||
/** @var string */
|
||||
protected $nonce_name = 'admin-nonce';
|
||||
|
||||
/** @var ServerRequestInterface */
|
||||
protected $request;
|
||||
|
||||
/** @var Grav */
|
||||
protected $grav;
|
||||
|
||||
/** @var string */
|
||||
protected $type;
|
||||
|
||||
/** @var string */
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* Handle request.
|
||||
*
|
||||
* Fires event: admin.[directory].[task|action].[command]
|
||||
*
|
||||
* @param ServerRequestInterface $request
|
||||
* @return Response
|
||||
*/
|
||||
public function handle(ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
$attributes = $request->getAttributes();
|
||||
$this->request = $request;
|
||||
$this->grav = $attributes['grav'] ?? Grav::instance();
|
||||
$this->type = $attributes['type'] ?? null;
|
||||
$this->key = $attributes['key'] ?? null;
|
||||
|
||||
/** @var Route $route */
|
||||
$route = $attributes['route'];
|
||||
$post = $this->getPost();
|
||||
|
||||
if ($this->isFormSubmit()) {
|
||||
$form = $this->getForm();
|
||||
$this->nonce_name = $attributes['nonce_name'] ?? $form->getNonceName();
|
||||
$this->nonce_action = $attributes['nonce_action'] ?? $form->getNonceAction();
|
||||
}
|
||||
|
||||
try {
|
||||
$task = $request->getAttribute('task') ?? $post['task'] ?? $route->getParam('task');
|
||||
if ($task) {
|
||||
if (empty($attributes['forwarded'])) {
|
||||
$this->checkNonce($task);
|
||||
}
|
||||
$type = 'task';
|
||||
$command = $task;
|
||||
} else {
|
||||
$type = 'action';
|
||||
$command = $request->getAttribute('action') ?? $post['action'] ?? $route->getParam('action') ?? 'display';
|
||||
}
|
||||
$command = strtolower($command);
|
||||
|
||||
$event = new Event(
|
||||
[
|
||||
'controller' => $this,
|
||||
'response' => null
|
||||
]
|
||||
);
|
||||
|
||||
$this->grav->fireEvent("admin.{$this->type}.{$type}.{$command}", $event);
|
||||
|
||||
$response = $event['response'];
|
||||
if (!$response) {
|
||||
/** @var Inflector $inflector */
|
||||
$inflector = $this->grav['inflector'];
|
||||
$method = $type . $inflector::camelize($command);
|
||||
if ($method && method_exists($this, $method)) {
|
||||
$response = $this->{$method}($request);
|
||||
} else {
|
||||
throw new NotFoundException($request);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
/** @var Debugger $debugger */
|
||||
$debugger = $this->grav['debugger'];
|
||||
$debugger->addException($e);
|
||||
|
||||
$response = $this->createErrorResponse($e);
|
||||
}
|
||||
|
||||
if ($response instanceof Response) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
return $this->createJsonResponse($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get request.
|
||||
*
|
||||
* @return ServerRequestInterface
|
||||
*/
|
||||
public function getRequest(): ServerRequestInterface
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $name
|
||||
* @param mixed $default
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPost(?string $name = null, $default = null)
|
||||
{
|
||||
$body = $this->request->getParsedBody();
|
||||
|
||||
if ($name) {
|
||||
return $body[$name] ?? $default;
|
||||
}
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a form has been submitted.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isFormSubmit(): bool
|
||||
{
|
||||
return (bool)$this->getPost('__form-name__');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get form.
|
||||
*
|
||||
* @param string|null $type
|
||||
* @return FormInterface
|
||||
*/
|
||||
public function getForm(?string $type = null): FormInterface
|
||||
{
|
||||
$object = $this->getObject();
|
||||
if (!$object) {
|
||||
throw new \RuntimeException('Not Found', 404);
|
||||
}
|
||||
|
||||
$formName = $this->getPost('__form-name__');
|
||||
$uniqueId = $this->getPost('__unique_form_id__') ?: $formName;
|
||||
|
||||
$form = $object->getForm($type ?? 'edit');
|
||||
if ($uniqueId) {
|
||||
$form->setUniqueId($uniqueId);
|
||||
}
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return FlexObjectInterface
|
||||
*/
|
||||
abstract public function getObject();
|
||||
|
||||
/**
|
||||
* Get Grav instance.
|
||||
*
|
||||
* @return Grav
|
||||
*/
|
||||
public function getGrav(): Grav
|
||||
{
|
||||
return $this->grav;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get session.
|
||||
*
|
||||
* @return SessionInterface
|
||||
*/
|
||||
public function getSession(): SessionInterface
|
||||
{
|
||||
return $this->getGrav()['session'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the current admin page.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function createDisplayResponse(): ResponseInterface
|
||||
{
|
||||
return new Response(418);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create custom HTML response.
|
||||
*
|
||||
* @param string $content
|
||||
* @param int $code
|
||||
* @return Response
|
||||
*/
|
||||
public function createHtmlResponse(string $content, ?int $code = null): ResponseInterface
|
||||
{
|
||||
return new Response($code ?: 200, [], $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create JSON response.
|
||||
*
|
||||
* @param array $content
|
||||
* @return Response
|
||||
*/
|
||||
public function createJsonResponse(array $content): ResponseInterface
|
||||
{
|
||||
$code = $content['code'] ?? 200;
|
||||
if ($code >= 301 && $code <= 307) {
|
||||
$code = 200;
|
||||
}
|
||||
|
||||
return new Response($code, ['Content-Type' => 'application/json'], json_encode($content));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create redirect response.
|
||||
*
|
||||
* @param string $url
|
||||
* @param int $code
|
||||
* @return Response
|
||||
*/
|
||||
public function createRedirectResponse(string $url, ?int $code = null): ResponseInterface
|
||||
{
|
||||
if (null === $code || $code < 301 || $code > 307) {
|
||||
$code = $this->grav['config']->get('system.pages.redirect_default_code', 302);
|
||||
}
|
||||
|
||||
$accept = $this->getAccept(['application/json', 'text/html']);
|
||||
|
||||
if ($accept === 'application/json') {
|
||||
return $this->createJsonResponse(['code' => $code, 'status' => 'redirect', 'redirect' => $url]);
|
||||
}
|
||||
|
||||
return new Response($code, ['Location' => $url]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create error response.
|
||||
*
|
||||
* @param \Exception $exception
|
||||
* @return Response
|
||||
*/
|
||||
public function createErrorResponse(\Exception $exception): ResponseInterface
|
||||
{
|
||||
$validCodes = [
|
||||
400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
|
||||
422, 423, 424, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 511
|
||||
];
|
||||
|
||||
if ($exception instanceof RequestException) {
|
||||
$code = $exception->getHttpCode();
|
||||
$reason = $exception->getHttpReason();
|
||||
} else {
|
||||
$code = $exception->getCode();
|
||||
$reason = null;
|
||||
}
|
||||
|
||||
if (!in_array($code, $validCodes, true)) {
|
||||
$code = 500;
|
||||
}
|
||||
|
||||
$message = $exception->getMessage();
|
||||
$response = [
|
||||
'code' => $code,
|
||||
'status' => 'error',
|
||||
'message' => htmlspecialchars($message, ENT_QUOTES | ENT_HTML5, 'UTF-8')
|
||||
];
|
||||
|
||||
$accept = $this->getAccept(['application/json', 'text/html']);
|
||||
|
||||
if ($accept === 'text/html') {
|
||||
$method = $this->getRequest()->getMethod();
|
||||
|
||||
// On POST etc, redirect back to the previous page.
|
||||
if ($method !== 'GET' && $method !== 'HEAD') {
|
||||
$this->setMessage($message, 'error');
|
||||
$referer = $this->request->getHeaderLine('Referer');
|
||||
return $this->createRedirectResponse($referer, 303);
|
||||
}
|
||||
|
||||
// TODO: improve error page
|
||||
return $this->createHtmlResponse($response['message']);
|
||||
}
|
||||
|
||||
return new Response($code, ['Content-Type' => 'application/json'], json_encode($response), '1.1', $reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate a string.
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
public function translate(string $string): string
|
||||
{
|
||||
/** @var Language $language */
|
||||
$language = $this->grav['language'];
|
||||
|
||||
return $language->translate($string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set message to be shown in the admin.
|
||||
*
|
||||
* @param string $message
|
||||
* @param string $type
|
||||
* @return $this
|
||||
*/
|
||||
public function setMessage($message, $type = 'info')
|
||||
{
|
||||
/** @var Message $messages */
|
||||
$messages = $this->grav['messages'];
|
||||
$messages->add($message, $type);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if request nonce is valid.
|
||||
*
|
||||
* @param string $task
|
||||
* @throws PageExpiredException If nonce is not valid.
|
||||
*/
|
||||
protected function checkNonce(string $task): void
|
||||
{
|
||||
$nonce = null;
|
||||
|
||||
if (\in_array(strtoupper($this->request->getMethod()), ['POST', 'PUT', 'PATCH', 'DELETE'])) {
|
||||
$nonce = $this->getPost($this->nonce_name);
|
||||
}
|
||||
|
||||
if (!$nonce) {
|
||||
$nonce = $this->grav['uri']->param($this->nonce_name);
|
||||
}
|
||||
|
||||
if (!$nonce) {
|
||||
$nonce = $this->grav['uri']->query($this->nonce_name);
|
||||
}
|
||||
|
||||
if (!$nonce || !Utils::verifyNonce($nonce, $this->nonce_action)) {
|
||||
throw new PageExpiredException($this->request);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the best matching mime type for the request.
|
||||
*
|
||||
* @param string[] $compare
|
||||
* @return string|null
|
||||
*/
|
||||
protected function getAccept(array $compare): ?string
|
||||
{
|
||||
$accepted = [];
|
||||
foreach ($this->request->getHeader('Accept') as $accept) {
|
||||
foreach (explode(',', $accept) as $item) {
|
||||
if (!$item) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$split = explode(';q=', $item);
|
||||
$mime = array_shift($split);
|
||||
$priority = array_shift($split) ?? 1.0;
|
||||
|
||||
$accepted[$mime] = $priority;
|
||||
}
|
||||
}
|
||||
|
||||
arsort($accepted);
|
||||
|
||||
// TODO: add support for image/* etc
|
||||
$list = array_intersect($compare, array_keys($accepted));
|
||||
if (!$list && (isset($accepted['*/*']) || isset($accepted['*']))) {
|
||||
return reset($compare) ?: null;
|
||||
}
|
||||
|
||||
return reset($list) ?: null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Grav\Plugin\Admin\Controllers;
|
||||
|
||||
use Grav\Common\Config\Config;
|
||||
use Grav\Common\Data\Blueprint;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Language\Language;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Page\Page;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Uri;
|
||||
use Grav\Common\User\Interfaces\UserInterface;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\Controller\Traits\ControllerResponseTrait;
|
||||
use Grav\Framework\RequestHandler\Exception\PageExpiredException;
|
||||
use Grav\Framework\Session\SessionInterface;
|
||||
use Grav\Plugin\Admin\Admin;
|
||||
use Grav\Plugin\Admin\AdminForm;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use RocketTheme\Toolbox\Session\Message;
|
||||
|
||||
abstract class AdminController
|
||||
{
|
||||
use ControllerResponseTrait {
|
||||
createRedirectResponse as traitCreateRedirectResponse;
|
||||
getErrorJson as traitGetErrorJson;
|
||||
}
|
||||
|
||||
/** @var string */
|
||||
protected $nonce_action = 'admin-form';
|
||||
/** @var string */
|
||||
protected $nonce_name = 'admin-nonce';
|
||||
/** @var Grav */
|
||||
protected $grav;
|
||||
/** @var PageInterface */
|
||||
protected $page;
|
||||
/** @var AdminForm|null */
|
||||
protected $form;
|
||||
|
||||
public function __construct(Grav $grav)
|
||||
{
|
||||
$this->grav = $grav;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return PageInterface|null
|
||||
*/
|
||||
public function getPage(): ?PageInterface
|
||||
{
|
||||
return $this->page;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get currently active form.
|
||||
*
|
||||
* @return AdminForm|null
|
||||
*/
|
||||
public function getActiveForm(): ?AdminForm
|
||||
{
|
||||
if (null === $this->form) {
|
||||
$post = $this->getPost();
|
||||
|
||||
$active = $post['__form-name__'] ?? null;
|
||||
|
||||
$this->form = $active ? $this->getForm($active) : null;
|
||||
}
|
||||
|
||||
return $this->form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a form.
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $options
|
||||
* @return AdminForm|null
|
||||
*/
|
||||
public function getForm(string $name, array $options = []): ?AdminForm
|
||||
{
|
||||
$post = $this->getPost();
|
||||
$page = $this->getPage();
|
||||
$forms = $page ? $page->forms() : [];
|
||||
$blueprint = $forms[$name] ?? null;
|
||||
if (null === $blueprint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$active = $post['__form-name__'] ?? null;
|
||||
$unique_id = $active && $active === $name ? ($post['__unique_form_id__'] ?? null) : null;
|
||||
|
||||
$options += [
|
||||
'unique_id' => $unique_id,
|
||||
'blueprint' => new Blueprint(null, ['form' => $blueprint]),
|
||||
'submit_method' => $this->getFormSubmitMethod($name),
|
||||
'nonce_name' => $this->nonce_name,
|
||||
'nonce_action' => $this->nonce_action,
|
||||
];
|
||||
|
||||
return new AdminForm($name, $options);
|
||||
}
|
||||
|
||||
abstract protected function getFormSubmitMethod(string $name): callable;
|
||||
|
||||
/**
|
||||
* @param string $route
|
||||
* @param string|null $lang
|
||||
* @return string
|
||||
*/
|
||||
public function getAdminUrl(string $route, ?string $lang = null): string
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$admin = $this->getAdmin();
|
||||
|
||||
return $pages->baseUrl($lang) . $admin->base . $route;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $route
|
||||
* @param string|null $lang
|
||||
* @return string
|
||||
*/
|
||||
public function getAbsoluteAdminUrl(string $route, ?string $lang = null): string
|
||||
{
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
$admin = $this->getAdmin();
|
||||
|
||||
return $pages->baseUrl($lang, true) . $admin->base . $route;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get session.
|
||||
*
|
||||
* @return SessionInterface
|
||||
*/
|
||||
public function getSession(): SessionInterface
|
||||
{
|
||||
return $this->grav['session'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Admin
|
||||
*/
|
||||
protected function getAdmin(): Admin
|
||||
{
|
||||
return $this->grav['admin'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return UserInterface
|
||||
*/
|
||||
protected function getUser(): UserInterface
|
||||
{
|
||||
return $this->getAdmin()->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ServerRequestInterface
|
||||
*/
|
||||
public function getRequest(): ServerRequestInterface
|
||||
{
|
||||
return $this->getAdmin()->request;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getPost(): array
|
||||
{
|
||||
return (array)($this->getRequest()->getParsedBody() ?? []);
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate a string.
|
||||
*
|
||||
* @param string $string
|
||||
* @param mixed ...$args
|
||||
* @return string
|
||||
*/
|
||||
public function translate(string $string, ...$args): string
|
||||
{
|
||||
/** @var Language $language */
|
||||
$language = $this->grav['language'];
|
||||
|
||||
array_unshift($args, $string);
|
||||
|
||||
return $language->translate($args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set message to be shown in the admin.
|
||||
*
|
||||
* @param string $message
|
||||
* @param string $type
|
||||
* @return $this
|
||||
*/
|
||||
public function setMessage(string $message, string $type = 'info'): AdminController
|
||||
{
|
||||
/** @var Message $messages */
|
||||
$messages = $this->grav['messages'];
|
||||
$messages->add($message, $type);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Config
|
||||
*/
|
||||
protected function getConfig(): Config
|
||||
{
|
||||
return $this->grav['config'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if request nonce is valid.
|
||||
*
|
||||
* @return void
|
||||
* @throws PageExpiredException If nonce is not valid.
|
||||
*/
|
||||
protected function checkNonce(): void
|
||||
{
|
||||
$nonce = null;
|
||||
|
||||
$nonce_name = $this->form ? $this->form->getNonceName() : $this->nonce_name;
|
||||
$nonce_action = $this->form ? $this->form->getNonceAction() : $this->nonce_action;
|
||||
|
||||
if (\in_array(strtoupper($this->getRequest()->getMethod()), ['POST', 'PUT', 'PATCH', 'DELETE'])) {
|
||||
$post = $this->getPost();
|
||||
$nonce = $post[$nonce_name] ?? null;
|
||||
}
|
||||
|
||||
/** @var Uri $uri */
|
||||
$uri = $this->grav['uri'];
|
||||
if (!$nonce) {
|
||||
$nonce = $uri->param($nonce_name);
|
||||
}
|
||||
|
||||
if (!$nonce) {
|
||||
$nonce = $uri->query($nonce_name);
|
||||
}
|
||||
|
||||
if (!$nonce || !Utils::verifyNonce($nonce, $nonce_action)) {
|
||||
throw new PageExpiredException($this->getRequest());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the best matching mime type for the request.
|
||||
*
|
||||
* @param string[] $compare
|
||||
* @return string|null
|
||||
*/
|
||||
protected function getAccept(array $compare): ?string
|
||||
{
|
||||
$accepted = [];
|
||||
foreach ($this->getRequest()->getHeader('Accept') as $accept) {
|
||||
foreach (explode(',', $accept) as $item) {
|
||||
if (!$item) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$split = explode(';q=', $item);
|
||||
$mime = array_shift($split);
|
||||
$priority = array_shift($split) ?? 1.0;
|
||||
|
||||
$accepted[$mime] = $priority;
|
||||
}
|
||||
}
|
||||
|
||||
arsort($accepted);
|
||||
|
||||
// TODO: add support for image/* etc
|
||||
$list = array_intersect($compare, array_keys($accepted));
|
||||
if (!$list && (isset($accepted['*/*']) || isset($accepted['*']))) {
|
||||
return reset($compare) ?: null;
|
||||
}
|
||||
|
||||
return reset($list) ?: null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $template
|
||||
* @return PageInterface
|
||||
*/
|
||||
protected function createPage(string $template): PageInterface
|
||||
{
|
||||
$page = new Page();
|
||||
|
||||
// Plugins may not have the correct Cache-Control header set, force no-store for the proxies.
|
||||
$page->expires(0);
|
||||
|
||||
$filename = "plugin://admin/pages/admin/{$template}.md";
|
||||
if (!file_exists($filename)) {
|
||||
throw new \RuntimeException(sprintf('Creating admin page %s failed: not found', $template));
|
||||
}
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage("Admin page: {$template}");
|
||||
|
||||
$page->init(new \SplFileInfo($filename));
|
||||
$page->slug($template);
|
||||
|
||||
return $page;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $url
|
||||
* @param int|null $code
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
protected function createRedirectResponse(?string $url = null, ?int $code = null): ResponseInterface
|
||||
{
|
||||
$request = $this->getRequest();
|
||||
|
||||
if (null === $url || '' === $url) {
|
||||
$url = (string)$request->getUri();
|
||||
} elseif (mb_strpos($url, '/') === 0) {
|
||||
$url = $this->getAbsoluteAdminUrl($url);
|
||||
}
|
||||
|
||||
if (null === $code) {
|
||||
if (in_array($request->getMethod(), ['GET', 'HEAD'])) {
|
||||
$code = 302;
|
||||
} else {
|
||||
$code = 303;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->traitCreateRedirectResponse($url, $code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Throwable $e
|
||||
* @return array
|
||||
*/
|
||||
protected function getErrorJson(\Throwable $e): array
|
||||
{
|
||||
$json = $this->traitGetErrorJson($e);
|
||||
$code = $e->getCode();
|
||||
if ($code === 401) {
|
||||
$json['redirect'] = $this->getAbsoluteAdminUrl('/');
|
||||
}
|
||||
|
||||
return $json;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,642 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin\Controllers\Login;
|
||||
|
||||
use Grav\Common\Debugger;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Page\Pages;
|
||||
use Grav\Common\Uri;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\User\Interfaces\UserInterface;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Framework\RequestHandler\Exception\PageExpiredException;
|
||||
use Grav\Framework\RequestHandler\Exception\RequestException;
|
||||
use Grav\Plugin\Admin\Admin;
|
||||
use Grav\Plugin\Admin\Controllers\AdminController;
|
||||
use Grav\Plugin\Email\Email;
|
||||
use Grav\Plugin\Login\Login;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use RobThree\Auth\TwoFactorAuthException;
|
||||
|
||||
/**
|
||||
* Class LoginController
|
||||
* @package Grav\Plugin\Admin\Controllers\Login
|
||||
*/
|
||||
class LoginController extends AdminController
|
||||
{
|
||||
/** @var string */
|
||||
protected $nonce_action = 'admin-login';
|
||||
/** @var string */
|
||||
protected $nonce_name = 'login-nonce';
|
||||
|
||||
/**
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function displayLogin(): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('login');
|
||||
|
||||
$user = $this->getUser();
|
||||
if ($this->is2FA($user)) {
|
||||
$this->form = $this->getForm('login-twofa', ['reset' => true]);
|
||||
} else {
|
||||
$this->form = $this->getForm('login', ['reset' => true]);
|
||||
}
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function displayForgot(): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('forgot');
|
||||
$this->form = $this->getForm('admin-login-forgot', ['reset' => true]);
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the reset password action.
|
||||
*
|
||||
* @param string|null $username
|
||||
* @param string|null $token
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function displayReset(?string $username = null, ?string $token = null): ResponseInterface
|
||||
{
|
||||
if ('' === (string)$username || '' === (string)$token) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.RESET_INVALID_LINK'), 'error');
|
||||
|
||||
return $this->createRedirectResponse('/forgot');
|
||||
}
|
||||
|
||||
$this->page = $this->createPage('reset');
|
||||
$this->form = $this->getForm('admin-login-reset', ['reset' => true]);
|
||||
$this->form->setData('username', $username);
|
||||
$this->form->setData('token', $token);
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.RESET_NEW_PASSWORD'));
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function displayRegister(): ResponseInterface
|
||||
{
|
||||
$route = $this->getRequest()->getAttribute('admin')['route'] ?? '';
|
||||
if ('' !== $route) {
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
$this->page = $this->createPage('register');
|
||||
$this->form = $this->getForm('admin-login-register');
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function displayUnauthorized(): ResponseInterface
|
||||
{
|
||||
$uri = (string)$this->getRequest()->getUri();
|
||||
|
||||
$ext = Utils::pathinfo($uri, PATHINFO_EXTENSION);
|
||||
$accept = $this->getAccept(['application/json', 'text/html']);
|
||||
if ($ext === 'json' || $accept === 'application/json') {
|
||||
return $this->createErrorResponse(new RequestException($this->getRequest(), $this->translate('PLUGIN_ADMIN.LOGGED_OUT'), 401));
|
||||
}
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.LOGGED_OUT'), 'warning');
|
||||
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle login.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskLogin(): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('login');
|
||||
$this->form = $this->getActiveForm() ?? $this->getForm('login');
|
||||
try {
|
||||
$this->checkNonce();
|
||||
} catch (PageExpiredException $e) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.INVALID_SECURITY_TOKEN'), 'error');
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
$post = $this->getPost();
|
||||
$credentials = (array)($post['data'] ?? []);
|
||||
$login = $this->getLogin();
|
||||
$config = $this->getConfig();
|
||||
|
||||
$userKey = (string)($credentials['username'] ?? '');
|
||||
// Pseudonymization of the IP.
|
||||
$ipKey = sha1(Uri::ip() . $config->get('security.salt'));
|
||||
|
||||
$rateLimiter = $login->getRateLimiter('login_attempts');
|
||||
|
||||
// Check if the current IP has been used in failed login attempts.
|
||||
$attempts = count($rateLimiter->getAttempts($ipKey, 'ip'));
|
||||
|
||||
$rateLimiter->registerRateLimitedAction($ipKey, 'ip')->registerRateLimitedAction($userKey);
|
||||
|
||||
// Check rate limit for both IP and user, but allow each IP a single try even if user is already rate limited.
|
||||
if ($rateLimiter->isRateLimited($ipKey, 'ip') || ($attempts && $rateLimiter->isRateLimited($userKey))) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: rate limit, redirecting', $credentials);
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_LOGIN.TOO_MANY_LOGIN_ATTEMPTS', $rateLimiter->getInterval()), 'error');
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
|
||||
// Redirect to the home page of the site.
|
||||
return $this->createRedirectResponse($pages->homeUrl(null, true));
|
||||
}
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login', $credentials);
|
||||
|
||||
// Fire Login process.
|
||||
$event = $login->login(
|
||||
$credentials,
|
||||
['admin' => true, 'twofa' => $config->get('plugins.admin.twofa_enabled', false)],
|
||||
['authorize' => 'admin.login', 'return_event' => true]
|
||||
);
|
||||
$user = $event->getUser();
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: user', $user);
|
||||
|
||||
$redirect = (string)$this->getRequest()->getUri();
|
||||
|
||||
if ($user->authenticated) {
|
||||
$rateLimiter->resetRateLimit($ipKey, 'ip')->resetRateLimit($userKey);
|
||||
if ($user->authorized) {
|
||||
$event->defMessage('PLUGIN_ADMIN.LOGIN_LOGGED_IN', 'info');
|
||||
}
|
||||
|
||||
$event->defRedirect($redirect);
|
||||
} elseif ($user->authorized) {
|
||||
$event->defMessage('PLUGIN_LOGIN.ACCESS_DENIED', 'error');
|
||||
} else {
|
||||
$event->defMessage('PLUGIN_LOGIN.LOGIN_FAILED', 'error');
|
||||
}
|
||||
|
||||
$event->defRedirect($redirect);
|
||||
|
||||
$message = $event->getMessage();
|
||||
if ($message) {
|
||||
$this->setMessage($this->translate($message), $event->getMessageType());
|
||||
}
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse($event->getRedirect());
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle logout when user isn't fully logged in or clicks logout after the session has been expired.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskLogout(): ResponseInterface
|
||||
{
|
||||
// We do not need to check the nonce here as user session has been expired or user hasn't fully logged in (2FA).
|
||||
// Just be sure we terminate the current session.
|
||||
$login = $this->getLogin();
|
||||
$event = $login->logout(['admin' => true], ['return_event' => true]);
|
||||
|
||||
$event->defMessage('PLUGIN_ADMIN.LOGGED_OUT', 'info');
|
||||
$message = $event->getMessage();
|
||||
if ($message) {
|
||||
$this->getSession()->setFlashCookieObject(Admin::TMP_COOKIE_NAME, ['message' => $this->translate($message), 'status' => $event->getMessageType()]);
|
||||
}
|
||||
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle 2FA verification.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskTwofa(): ResponseInterface
|
||||
{
|
||||
$user = $this->getUser();
|
||||
if (!$this->is2FA($user)) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: user is not logged in or does not have 2FA enabled', $user);
|
||||
|
||||
// Task is visible only for users who have enabled 2FA.
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
$login = $this->getLogin();
|
||||
|
||||
$this->page = $this->createPage('login');
|
||||
$this->form = $this->getForm('login-twofa');
|
||||
try {
|
||||
$this->checkNonce();
|
||||
} catch (PageExpiredException $e) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.INVALID_SECURITY_TOKEN'), 'error');
|
||||
|
||||
// Failed 2FA nonce check, logout and redirect.
|
||||
$login->logout(['admin' => true]);
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
|
||||
$post = $this->getPost();
|
||||
$data = $post['data'] ?? [];
|
||||
|
||||
try {
|
||||
$twoFa = $login->twoFactorAuth();
|
||||
} catch (TwoFactorAuthException $e) {
|
||||
/** @var Debugger $debugger */
|
||||
$debugger = $this->grav['debugger'];
|
||||
$debugger->addException($e);
|
||||
|
||||
$twoFa = null;
|
||||
}
|
||||
|
||||
$code = $data['2fa_code'] ?? '';
|
||||
$secret = $user->twofa_secret ?? '';
|
||||
$twofa_valid = $twoFa->verifyCode($secret, $code);
|
||||
|
||||
$yubikey_otp = $data['yubikey_otp'] ?? '';
|
||||
$yubikey_id = $user->yubikey_id ?? '';
|
||||
$yubikey_valid = $twoFa->verifyYubikeyOTP($yubikey_id, $yubikey_otp);
|
||||
|
||||
$redirect = (string)$this->getRequest()->getUri();
|
||||
|
||||
if (null === $twoFa || !$user->authenticated || (!$twofa_valid && !$yubikey_valid) ) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: 2FA check failed, log out!');
|
||||
|
||||
// Failed 2FA auth, logout and redirect to the current page.
|
||||
$login->logout(['admin' => true]);
|
||||
|
||||
$this->grav['session']->setFlashCookieObject(Admin::TMP_COOKIE_NAME, ['message' => $this->translate('PLUGIN_ADMIN.2FA_FAILED'), 'status' => 'error']);
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse($redirect);
|
||||
}
|
||||
|
||||
// Successful 2FA, authorize user and redirect.
|
||||
Grav::instance()['user']->authorized = true;
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage('Admin login: 2FA check succeeded, authorize user and redirect');
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'));
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse($redirect);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the reset password action.
|
||||
*
|
||||
* @param string|null $username
|
||||
* @param string|null $token
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskReset(?string $username = null, ?string $token = null): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('reset');
|
||||
$this->form = $this->getForm('admin-login-reset');
|
||||
try {
|
||||
$this->checkNonce();
|
||||
} catch (PageExpiredException $e) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.INVALID_SECURITY_TOKEN'), 'error');
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
|
||||
$post = $this->getPost();
|
||||
$data = $post['data'] ?? [];
|
||||
$users = $this->getAccounts();
|
||||
|
||||
$username = $username ?? $data['username'] ?? null;
|
||||
$token = $token ?? $data['token'] ?? null;
|
||||
|
||||
$user = $username ? $users->load($username) : null;
|
||||
$password = $data['password'];
|
||||
|
||||
if ($user && $user->exists() && !empty($user->get('reset'))) {
|
||||
[$good_token, $expire] = explode('::', $user->get('reset'));
|
||||
|
||||
if ($good_token === $token) {
|
||||
if (time() > $expire) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.RESET_LINK_EXPIRED'), 'error');
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse('/forgot');
|
||||
}
|
||||
|
||||
// Set new password.
|
||||
$login = $this->getLogin();
|
||||
try {
|
||||
$login->validateField('password1', $password);
|
||||
} catch (\RuntimeException $e) {
|
||||
$this->setMessage($this->translate($e->getMessage()), 'error');
|
||||
|
||||
return $this->createRedirectResponse("/reset/u/{$username}/{$token}");
|
||||
}
|
||||
|
||||
$user->undef('hashed_password');
|
||||
$user->undef('reset');
|
||||
$user->update(['password' => $password]);
|
||||
$user->save();
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.RESET_PASSWORD_RESET'));
|
||||
|
||||
return $this->createRedirectResponse('/login');
|
||||
}
|
||||
|
||||
Admin::DEBUG && Admin::addDebugMessage(sprintf('Failed to reset password: Token %s is not good', $token));
|
||||
} else {
|
||||
Admin::DEBUG && Admin::addDebugMessage(sprintf('Failed to reset password: User %s does not exist or has not requested reset', $username));
|
||||
}
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.RESET_INVALID_LINK'), 'error');
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse('/forgot');
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the email password recovery procedure.
|
||||
*
|
||||
* Sends email to the user.
|
||||
*
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskForgot(): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('forgot');
|
||||
$this->form = $this->getForm('admin-login-forgot');
|
||||
try {
|
||||
$this->checkNonce();
|
||||
} catch (PageExpiredException $e) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.INVALID_SECURITY_TOKEN'), 'error');
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
|
||||
$post = $this->getPost();
|
||||
$data = $post['data'] ?? [];
|
||||
$login = $this->getLogin();
|
||||
$users = $this->getAccounts();
|
||||
$email = $this->getEmail();
|
||||
|
||||
$current = (string)$this->getRequest()->getUri();
|
||||
|
||||
$search = isset($data['username']) ? strip_tags($data['username']) : '';
|
||||
$user = !empty($search) ? $users->load($search) : null;
|
||||
$username = $user->username ?? null;
|
||||
$to = $user->email ?? null;
|
||||
|
||||
// Only send email to users which are enabled and have an email address.
|
||||
if (null === $user || $user->state !== 'enabled' || !$to) {
|
||||
Admin::DEBUG && Admin::addDebugMessage(sprintf('Failed sending email: %s <%s> was not found or is blocked', $search, $to ?? 'N/A'));
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL'));
|
||||
|
||||
return $this->createRedirectResponse($current);
|
||||
}
|
||||
|
||||
$config = $this->getConfig();
|
||||
|
||||
// Check rate limit for the user.
|
||||
$rateLimiter = $login->getRateLimiter('pw_resets');
|
||||
$rateLimiter->registerRateLimitedAction($username);
|
||||
if ($rateLimiter->isRateLimited($username)) {
|
||||
Admin::DEBUG && Admin::addDebugMessage(sprintf('Failed sending email: user %s <%s> is rate limited', $search, $to));
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
$interval = $config->get('plugins.login.max_pw_resets_interval', 2);
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_LOGIN.FORGOT_CANNOT_RESET_IT_IS_BLOCKED', $to, $interval), 'error');
|
||||
|
||||
return $this->createRedirectResponse($current);
|
||||
}
|
||||
|
||||
$token = md5(uniqid(mt_rand(), true));
|
||||
$expire = time() + 3600; // 1 hour
|
||||
|
||||
$user->set('reset', $token . '::' . $expire);
|
||||
$user->save();
|
||||
|
||||
$from = $config->get('plugins.email.from');
|
||||
if (empty($from)) {
|
||||
Admin::DEBUG && Admin::addDebugMessage('Failed sending email: from address is not configured in email plugin');
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.FORGOT_EMAIL_NOT_CONFIGURED'), 'error');
|
||||
|
||||
return $this->createRedirectResponse($current);
|
||||
}
|
||||
|
||||
// Do not trust username from the request.
|
||||
$fullname = $user->fullname ?: $username;
|
||||
$author = $config->get('site.author.name', '');
|
||||
$sitename = $config->get('site.title', 'Website');
|
||||
$reset_route = "/reset/u/{$username}/{$token}";
|
||||
|
||||
$site_host = $config->get('plugins.login.site_host');
|
||||
if (!empty($site_host)) {
|
||||
$admin = $this->getAdmin();
|
||||
$reset_link = rtrim($site_host, '/') . '/' . trim($admin->base, '/') . '/' . ltrim($reset_route, '/');
|
||||
} else {
|
||||
$reset_link = $this->getAbsoluteAdminUrl($reset_route);
|
||||
}
|
||||
|
||||
// For testing only!
|
||||
//Admin::DEBUG && Admin::addDebugMessage(sprintf('Reset link: %s', $reset_link));
|
||||
|
||||
$subject = $this->translate('PLUGIN_ADMIN.FORGOT_EMAIL_SUBJECT', $sitename);
|
||||
$content = $this->translate('PLUGIN_ADMIN.FORGOT_EMAIL_BODY', $fullname, $reset_link, $author, $sitename);
|
||||
|
||||
$this->grav['twig']->init();
|
||||
$body = $this->grav['twig']->processTemplate('email/base.html.twig', ['content' => $content]);
|
||||
|
||||
try {
|
||||
$message = $email->message($subject, $body, 'text/html')->setFrom($from)->setTo($to);
|
||||
$sent = $email->send($message);
|
||||
if ($sent < 1) {
|
||||
throw new \RuntimeException('Sending email failed');
|
||||
}
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL'));
|
||||
} catch (\Exception $e) {
|
||||
$rateLimiter->resetRateLimit($username);
|
||||
|
||||
/** @var Debugger $debugger */
|
||||
$debugger = $this->grav['debugger'];
|
||||
$debugger->addException($e);
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.FORGOT_FAILED_TO_EMAIL'), 'error');
|
||||
|
||||
return $this->createRedirectResponse('/forgot');
|
||||
}
|
||||
|
||||
$this->form->reset();
|
||||
|
||||
return $this->createRedirectResponse('/login');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function taskRegister(): ResponseInterface
|
||||
{
|
||||
$this->page = $this->createPage('register');
|
||||
$this->form = $form = $this->getForm('admin-login-register');
|
||||
try {
|
||||
$this->checkNonce();
|
||||
} catch (PageExpiredException $e) {
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.INVALID_SECURITY_TOKEN'), 'error');
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
// Note: Calls $this->doRegistration() to perform the user registration.
|
||||
$form->handleRequest($this->getRequest());
|
||||
$error = $form->getError();
|
||||
$errors = $form->getErrors();
|
||||
if ($error || $errors) {
|
||||
foreach ($errors as $field => $list) {
|
||||
foreach ((array)$list as $message) {
|
||||
if ($message !== $error) {
|
||||
$this->setMessage($message, 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->createDisplayResponse();
|
||||
}
|
||||
|
||||
$this->setMessage($this->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'));
|
||||
|
||||
return $this->createRedirectResponse('/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UserInterface $user
|
||||
* @return bool
|
||||
*/
|
||||
protected function is2FA(UserInterface $user): bool
|
||||
{
|
||||
return $user && $user->authenticated && !$user->authorized && $user->get('twofa_enabled');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @return callable
|
||||
*/
|
||||
protected function getFormSubmitMethod(string $name): callable
|
||||
{
|
||||
switch ($name) {
|
||||
case 'login':
|
||||
case 'login-twofa':
|
||||
case 'admin-login-forgot':
|
||||
case 'admin-login-reset':
|
||||
return static function(array $data, array $files) {};
|
||||
case 'admin-login-register':
|
||||
return function(array $data, array $files) {
|
||||
$this->doRegistration($data, $files);
|
||||
};
|
||||
}
|
||||
|
||||
throw new \RuntimeException('Unknown form');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by registration form when calling handleRequest().
|
||||
*
|
||||
* @param array $data
|
||||
* @param array $files
|
||||
*/
|
||||
private function doRegistration(array $data, array $files): void
|
||||
{
|
||||
if (Admin::doAnyUsersExist()) {
|
||||
throw new \RuntimeException('A user account already exists, please create an admin account manually.', 400);
|
||||
}
|
||||
|
||||
$login = $this->getLogin();
|
||||
if (!$login) {
|
||||
throw new \RuntimeException($this->grav['language']->translate('PLUGIN_LOGIN.PLUGIN_LOGIN_DISABLED', 500));
|
||||
}
|
||||
|
||||
$data['title'] = $data['title'] ?? 'Administrator';
|
||||
|
||||
// Do not allow form to set the following fields (make super user):
|
||||
$data['state'] = 'enabled';
|
||||
$data['access'] = ['admin' => ['login' => true, 'super' => true], 'site' => ['login' => true]];
|
||||
unset($data['groups']);
|
||||
|
||||
// Create user.
|
||||
$user = $login->register($data, $files);
|
||||
|
||||
// Log in the new super admin user.
|
||||
unset($this->grav['user']);
|
||||
$this->grav['user'] = $user;
|
||||
$this->grav['session']->user = $user;
|
||||
$user->authenticated = true;
|
||||
$user->authorized = $user->authorize('admin.login') ?? false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Login
|
||||
*/
|
||||
private function getLogin(): Login
|
||||
{
|
||||
return $this->grav['login'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Email
|
||||
*/
|
||||
private function getEmail(): Email
|
||||
{
|
||||
return $this->grav['Email'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return UserCollectionInterface
|
||||
*/
|
||||
private function getAccounts(): UserCollectionInterface
|
||||
{
|
||||
return $this->grav['accounts'];
|
||||
}
|
||||
}
|
||||
442
config/www/user/plugins/admin/classes/plugin/Gpm.php
Normal file
442
config/www/user/plugins/admin/classes/plugin/Gpm.php
Normal file
@@ -0,0 +1,442 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Cache;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\GPM\GPM as GravGPM;
|
||||
use Grav\Common\GPM\Licenses;
|
||||
use Grav\Common\GPM\Installer;
|
||||
use Grav\Common\GPM\Upgrader;
|
||||
use Grav\Common\HTTP\Response;
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Common\GPM\Common\Package;
|
||||
|
||||
/**
|
||||
* Class Gpm
|
||||
*
|
||||
* @package Grav\Plugin\Admin
|
||||
*/
|
||||
class Gpm
|
||||
{
|
||||
// Probably should move this to Grav DI container?
|
||||
/** @var GravGPM */
|
||||
protected static $GPM;
|
||||
|
||||
public static function GPM()
|
||||
{
|
||||
if (!static::$GPM) {
|
||||
static::$GPM = new GravGPM();
|
||||
}
|
||||
|
||||
return static::$GPM;
|
||||
}
|
||||
|
||||
/**
|
||||
* Default options for the install
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $options = [
|
||||
'destination' => GRAV_ROOT,
|
||||
'overwrite' => true,
|
||||
'ignore_symlinks' => true,
|
||||
'skip_invalid' => true,
|
||||
'install_deps' => true,
|
||||
'theme' => false
|
||||
];
|
||||
|
||||
/**
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function install($packages, array $options)
|
||||
{
|
||||
$options = array_merge(self::$options, $options);
|
||||
|
||||
if (!Installer::isGravInstance($options['destination']) || !Installer::isValidDestination($options['destination'],
|
||||
[Installer::EXISTS, Installer::IS_LINK])
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$packages = is_array($packages) ? $packages : [$packages];
|
||||
$count = count($packages);
|
||||
|
||||
$packages = array_filter(array_map(function ($p) {
|
||||
return !is_string($p) ? $p instanceof Package ? $p : false : self::GPM()->findPackage($p);
|
||||
}, $packages));
|
||||
|
||||
if (!$options['skip_invalid'] && $count !== count($packages)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$messages = '';
|
||||
|
||||
foreach ($packages as $package) {
|
||||
if (isset($package->dependencies) && $options['install_deps']) {
|
||||
$result = static::install($package->dependencies, $options);
|
||||
|
||||
if (!$result) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Check destination
|
||||
Installer::isValidDestination($options['destination'] . DS . $package->install_path);
|
||||
|
||||
if (!$options['overwrite'] && Installer::lastErrorCode() === Installer::EXISTS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$options['ignore_symlinks'] && Installer::lastErrorCode() === Installer::IS_LINK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$license = Licenses::get($package->slug);
|
||||
$local = static::download($package, $license);
|
||||
|
||||
Installer::install($local, $options['destination'],
|
||||
['install_path' => $package->install_path, 'theme' => $options['theme']]);
|
||||
Folder::delete(dirname($local));
|
||||
|
||||
$errorCode = Installer::lastErrorCode();
|
||||
if ($errorCode) {
|
||||
$msg = Installer::lastErrorMsg();
|
||||
throw new \RuntimeException($msg);
|
||||
}
|
||||
|
||||
if (count($packages) === 1) {
|
||||
$message = Installer::getMessage();
|
||||
if ($message) {
|
||||
return $message;
|
||||
}
|
||||
|
||||
$messages .= $message;
|
||||
}
|
||||
}
|
||||
|
||||
Cache::clearCache();
|
||||
|
||||
return $messages ?: true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function update($packages, array $options)
|
||||
{
|
||||
$options['overwrite'] = true;
|
||||
|
||||
return static::install($packages, $options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Package[]|string[]|string $packages
|
||||
* @param array $options
|
||||
*
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function uninstall($packages, array $options)
|
||||
{
|
||||
$options = array_merge(self::$options, $options);
|
||||
|
||||
$packages = (array)$packages;
|
||||
$count = count($packages);
|
||||
|
||||
$packages = array_filter(array_map(function ($p) {
|
||||
|
||||
if (is_string($p)) {
|
||||
$p = strtolower($p);
|
||||
$plugin = static::GPM()->getInstalledPlugin($p);
|
||||
$p = $plugin ?: static::GPM()->getInstalledTheme($p);
|
||||
}
|
||||
|
||||
return $p instanceof Package ? $p : false;
|
||||
|
||||
}, $packages));
|
||||
|
||||
if (!$options['skip_invalid'] && $count !== count($packages)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach ($packages as $package) {
|
||||
|
||||
$location = Grav::instance()['locator']->findResource($package->package_type . '://' . $package->slug);
|
||||
|
||||
// Check destination
|
||||
Installer::isValidDestination($location);
|
||||
|
||||
if (!$options['ignore_symlinks'] && Installer::lastErrorCode() === Installer::IS_LINK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Installer::uninstall($location);
|
||||
|
||||
$errorCode = Installer::lastErrorCode();
|
||||
if ($errorCode && $errorCode !== Installer::IS_LINK && $errorCode !== Installer::EXISTS) {
|
||||
$msg = Installer::lastErrorMsg();
|
||||
throw new \RuntimeException($msg);
|
||||
}
|
||||
|
||||
if (count($packages) === 1) {
|
||||
$message = Installer::getMessage();
|
||||
if ($message) {
|
||||
return $message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Cache::clearCache();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Direct install a file
|
||||
*
|
||||
* @param string $package_file
|
||||
*
|
||||
* @return string|bool
|
||||
*/
|
||||
public static function directInstall($package_file)
|
||||
{
|
||||
if (!$package_file) {
|
||||
return Admin::translate('PLUGIN_ADMIN.NO_PACKAGE_NAME');
|
||||
}
|
||||
|
||||
$tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true);
|
||||
$tmp_zip = $tmp_dir . '/Grav-' . uniqid('', false);
|
||||
|
||||
if (Response::isRemote($package_file)) {
|
||||
$zip = GravGPM::downloadPackage($package_file, $tmp_zip);
|
||||
} else {
|
||||
$zip = GravGPM::copyPackage($package_file, $tmp_zip);
|
||||
}
|
||||
|
||||
if (file_exists($zip)) {
|
||||
$tmp_source = $tmp_dir . '/Grav-' . uniqid('', false);
|
||||
$extracted = Installer::unZip($zip, $tmp_source);
|
||||
|
||||
if (!$extracted) {
|
||||
Folder::delete($tmp_source);
|
||||
Folder::delete($tmp_zip);
|
||||
return Admin::translate('PLUGIN_ADMIN.PACKAGE_EXTRACTION_FAILED');
|
||||
}
|
||||
|
||||
$type = GravGPM::getPackageType($extracted);
|
||||
|
||||
if (!$type) {
|
||||
Folder::delete($tmp_source);
|
||||
Folder::delete($tmp_zip);
|
||||
return Admin::translate('PLUGIN_ADMIN.NOT_VALID_GRAV_PACKAGE');
|
||||
}
|
||||
|
||||
if ($type === 'grav') {
|
||||
Installer::isValidDestination(GRAV_ROOT . '/system');
|
||||
if (Installer::IS_LINK === Installer::lastErrorCode()) {
|
||||
Folder::delete($tmp_source);
|
||||
Folder::delete($tmp_zip);
|
||||
return Admin::translate('PLUGIN_ADMIN.CANNOT_OVERWRITE_SYMLINKS');
|
||||
}
|
||||
|
||||
static::upgradeGrav($zip, $extracted);
|
||||
} else {
|
||||
$name = GravGPM::getPackageName($extracted);
|
||||
|
||||
if (!$name) {
|
||||
Folder::delete($tmp_source);
|
||||
Folder::delete($tmp_zip);
|
||||
return Admin::translate('PLUGIN_ADMIN.NAME_COULD_NOT_BE_DETERMINED');
|
||||
}
|
||||
|
||||
$install_path = GravGPM::getInstallPath($type, $name);
|
||||
$is_update = file_exists($install_path);
|
||||
|
||||
Installer::isValidDestination(GRAV_ROOT . DS . $install_path);
|
||||
if (Installer::lastErrorCode() === Installer::IS_LINK) {
|
||||
Folder::delete($tmp_source);
|
||||
Folder::delete($tmp_zip);
|
||||
return Admin::translate('PLUGIN_ADMIN.CANNOT_OVERWRITE_SYMLINKS');
|
||||
}
|
||||
|
||||
Installer::install($zip, GRAV_ROOT,
|
||||
['install_path' => $install_path, 'theme' => $type === 'theme', 'is_update' => $is_update],
|
||||
$extracted);
|
||||
}
|
||||
|
||||
Folder::delete($tmp_source);
|
||||
|
||||
if (Installer::lastErrorCode()) {
|
||||
return Installer::lastErrorMsg();
|
||||
}
|
||||
|
||||
} else {
|
||||
return Admin::translate('PLUGIN_ADMIN.ZIP_PACKAGE_NOT_FOUND');
|
||||
}
|
||||
|
||||
Folder::delete($tmp_zip);
|
||||
Cache::clearCache();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Package $package
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function download(Package $package, $license = null)
|
||||
{
|
||||
$query = '';
|
||||
|
||||
if ($package->premium) {
|
||||
$query = \json_encode(array_merge($package->premium, [
|
||||
'slug' => $package->slug,
|
||||
'license_key' => $license,
|
||||
'sid' => md5(GRAV_ROOT)
|
||||
]));
|
||||
|
||||
$query = '?d=' . base64_encode($query);
|
||||
}
|
||||
|
||||
try {
|
||||
$contents = Response::get($package->zipball_url . $query, []);
|
||||
} catch (\Exception $e) {
|
||||
throw new \RuntimeException($e->getMessage());
|
||||
}
|
||||
|
||||
$tmp_dir = Admin::getTempDir() . '/Grav-' . uniqid('', false);
|
||||
Folder::mkdir($tmp_dir);
|
||||
|
||||
$bad_chars = array_merge(array_map('chr', range(0, 31)), ['<', '>', ':', '"', '/', '\\', '|', '?', '*']);
|
||||
|
||||
$filename = $package->slug . str_replace($bad_chars, '', \Grav\Common\Utils::basename($package->zipball_url));
|
||||
$filename = preg_replace('/[\\\\\/:"*?&<>|]+/m', '-', $filename);
|
||||
|
||||
file_put_contents($tmp_dir . DS . $filename . '.zip', $contents);
|
||||
|
||||
return $tmp_dir . DS . $filename . '.zip';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $package
|
||||
* @param string $tmp
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function _downloadSelfupgrade(array $package, $tmp)
|
||||
{
|
||||
$output = Response::get($package['download'], []);
|
||||
Folder::mkdir($tmp);
|
||||
file_put_contents($tmp . DS . $package['name'], $output);
|
||||
|
||||
return $tmp . DS . $package['name'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public static function selfupgrade()
|
||||
{
|
||||
$upgrader = new Upgrader();
|
||||
|
||||
if (!Installer::isGravInstance(GRAV_ROOT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_link(GRAV_ROOT . DS . 'index.php')) {
|
||||
Installer::setError(Installer::IS_LINK);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (method_exists($upgrader, 'meetsRequirements') &&
|
||||
method_exists($upgrader, 'minPHPVersion') &&
|
||||
!$upgrader->meetsRequirements()) {
|
||||
$error = [];
|
||||
$error[] = '<p>Grav has increased the minimum PHP requirement.<br />';
|
||||
$error[] = 'You are currently running PHP <strong>' . phpversion() . '</strong>';
|
||||
$error[] = ', but PHP <strong>' . $upgrader->minPHPVersion() . '</strong> is required.</p>';
|
||||
$error[] = '<p><a href="https://getgrav.org/blog/changing-php-requirements-to-5.5" class="button button-small secondary">Additional information</a></p>';
|
||||
|
||||
Installer::setError(implode("\n", $error));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$update = $upgrader->getAssets()['grav-update'];
|
||||
$tmp = Admin::getTempDir() . '/Grav-' . uniqid('', false);
|
||||
if ($tmp) {
|
||||
$file = self::_downloadSelfupgrade($update, $tmp);
|
||||
$folder = Installer::unZip($file, $tmp . '/zip');
|
||||
$keepFolder = false;
|
||||
} else {
|
||||
// If you make $tmp empty, you can install your local copy of Grav (for testing purposes only).
|
||||
$file = 'grav.zip';
|
||||
$folder = '~/phpstorm/grav-clones/grav';
|
||||
//$folder = '/home/matias/phpstorm/rockettheme/grav-devtools/grav-clones/grav';
|
||||
$keepFolder = true;
|
||||
}
|
||||
|
||||
static::upgradeGrav($file, $folder, $keepFolder);
|
||||
|
||||
$errorCode = Installer::lastErrorCode();
|
||||
|
||||
if ($tmp) {
|
||||
Folder::delete($tmp);
|
||||
}
|
||||
|
||||
return !(is_string($errorCode) || ($errorCode & (Installer::ZIP_OPEN_ERROR | Installer::ZIP_EXTRACT_ERROR)));
|
||||
}
|
||||
|
||||
private static function upgradeGrav($zip, $folder, $keepFolder = false)
|
||||
{
|
||||
static $ignores = [
|
||||
'backup',
|
||||
'cache',
|
||||
'images',
|
||||
'logs',
|
||||
'tmp',
|
||||
'user',
|
||||
'.htaccess',
|
||||
'robots.txt'
|
||||
];
|
||||
|
||||
if (!is_dir($folder)) {
|
||||
Installer::setError('Invalid source folder');
|
||||
}
|
||||
|
||||
try {
|
||||
$script = $folder . '/system/install.php';
|
||||
/** Install $installer */
|
||||
if ((file_exists($script) && $install = include $script) && is_callable($install)) {
|
||||
$install($zip);
|
||||
} else {
|
||||
Installer::install(
|
||||
$zip,
|
||||
GRAV_ROOT,
|
||||
['sophisticated' => true, 'overwrite' => true, 'ignore_symlinks' => true, 'ignores' => $ignores],
|
||||
$folder,
|
||||
$keepFolder
|
||||
);
|
||||
|
||||
Cache::clearCache();
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Installer::setError($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
310
config/www/user/plugins/admin/classes/plugin/Popularity.php
Normal file
310
config/www/user/plugins/admin/classes/plugin/Popularity.php
Normal file
@@ -0,0 +1,310 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Config\Config;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
|
||||
/**
|
||||
* Class Popularity
|
||||
* @package Grav\Plugin
|
||||
*/
|
||||
class Popularity
|
||||
{
|
||||
/** @var Config */
|
||||
protected $config;
|
||||
protected $data_path;
|
||||
|
||||
protected $daily_file;
|
||||
protected $monthly_file;
|
||||
protected $totals_file;
|
||||
protected $visitors_file;
|
||||
|
||||
protected $daily_data;
|
||||
protected $monthly_data;
|
||||
protected $totals_data;
|
||||
protected $visitors_data;
|
||||
|
||||
const DAILY_FORMAT = 'd-m-Y';
|
||||
const MONTHLY_FORMAT = 'm-Y';
|
||||
const DAILY_FILE = 'daily.json';
|
||||
const MONTHLY_FILE = 'monthly.json';
|
||||
const TOTALS_FILE = 'totals.json';
|
||||
const VISITORS_FILE = 'visitors.json';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->config = Grav::instance()['config'];
|
||||
|
||||
$this->data_path = Grav::instance()['locator']->findResource('log://popularity', true, true);
|
||||
$this->daily_file = $this->data_path . '/' . self::DAILY_FILE;
|
||||
$this->monthly_file = $this->data_path . '/' . self::MONTHLY_FILE;
|
||||
$this->totals_file = $this->data_path . '/' . self::TOTALS_FILE;
|
||||
$this->visitors_file = $this->data_path . '/' . self::VISITORS_FILE;
|
||||
|
||||
}
|
||||
|
||||
public function trackHit()
|
||||
{
|
||||
// Don't track bot or crawler requests
|
||||
if (!Grav::instance()['browser']->isHuman()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Respect visitors "do not track" setting
|
||||
if (!Grav::instance()['browser']->isTrackable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var PageInterface $page */
|
||||
$page = Grav::instance()['page'];
|
||||
$relative_url = str_replace(Grav::instance()['base_url_relative'], '', $page->url());
|
||||
|
||||
// Don't track error pages or pages that have no route
|
||||
if ($page->template() === 'error' || !$page->route()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Make sure no 'widcard-style' ignore matches this url
|
||||
foreach ((array)$this->config->get('plugins.admin.popularity.ignore') as $ignore) {
|
||||
if (fnmatch($ignore, $relative_url)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// initial creation if it doesn't exist
|
||||
if (!file_exists($this->data_path)) {
|
||||
mkdir($this->data_path);
|
||||
$this->flushPopularity();
|
||||
}
|
||||
|
||||
// Update the data we want to track
|
||||
$this->updateDaily();
|
||||
$this->updateMonthly();
|
||||
$this->updateTotals($page->route());
|
||||
$this->updateVisitors(Grav::instance()['uri']->ip());
|
||||
|
||||
}
|
||||
|
||||
protected function updateDaily()
|
||||
{
|
||||
|
||||
if (!$this->daily_data) {
|
||||
$this->daily_data = $this->getData($this->daily_file);
|
||||
}
|
||||
|
||||
$day_month_year = date(self::DAILY_FORMAT);
|
||||
|
||||
// get the daily access count
|
||||
if (array_key_exists($day_month_year, $this->daily_data)) {
|
||||
$this->daily_data[$day_month_year] = (int)$this->daily_data[$day_month_year] + 1;
|
||||
} else {
|
||||
$this->daily_data[$day_month_year] = 1;
|
||||
}
|
||||
|
||||
// keep correct number as set by history
|
||||
$count = (int)$this->config->get('plugins.admin.popularity.history.daily', 30);
|
||||
$total = count($this->daily_data);
|
||||
|
||||
if ($total > $count) {
|
||||
$this->daily_data = array_slice($this->daily_data, -$count, $count, true);
|
||||
}
|
||||
|
||||
file_put_contents($this->daily_file, json_encode($this->daily_data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getDailyChartData()
|
||||
{
|
||||
if (!$this->daily_data) {
|
||||
$this->daily_data = $this->getData($this->daily_file);
|
||||
}
|
||||
|
||||
$limit = (int)$this->config->get('plugins.admin.popularity.dashboard.days_of_stats', 7);
|
||||
$chart_data = array_slice($this->daily_data, -$limit, $limit);
|
||||
|
||||
$labels = [];
|
||||
$data = [];
|
||||
|
||||
/** @var Admin $admin */
|
||||
$admin = Grav::instance()['admin'];
|
||||
foreach ($chart_data as $date => $count) {
|
||||
$labels[] = $admin::translate([
|
||||
'PLUGIN_ADMIN.' . strtoupper(date('D', strtotime($date)))]) .
|
||||
'<br>' . date('M d', strtotime($date));
|
||||
$data[] = $count;
|
||||
}
|
||||
|
||||
return ['labels' => $labels, 'data' => $data];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getDailyTotal()
|
||||
{
|
||||
if (!$this->daily_data) {
|
||||
$this->daily_data = $this->getData($this->daily_file);
|
||||
}
|
||||
|
||||
if (isset($this->daily_data[date(self::DAILY_FORMAT)])) {
|
||||
return $this->daily_data[date(self::DAILY_FORMAT)];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getWeeklyTotal()
|
||||
{
|
||||
if (!$this->daily_data) {
|
||||
$this->daily_data = $this->getData($this->daily_file);
|
||||
}
|
||||
|
||||
$day = 0;
|
||||
$total = 0;
|
||||
foreach (array_reverse($this->daily_data) as $daily) {
|
||||
$total += $daily;
|
||||
$day++;
|
||||
if ($day === 7) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $total;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getMonthlyTotal()
|
||||
{
|
||||
if (!$this->monthly_data) {
|
||||
$this->monthly_data = $this->getData($this->monthly_file);
|
||||
}
|
||||
if (isset($this->monthly_data[date(self::MONTHLY_FORMAT)])) {
|
||||
return $this->monthly_data[date(self::MONTHLY_FORMAT)];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected function updateMonthly()
|
||||
{
|
||||
|
||||
if (!$this->monthly_data) {
|
||||
$this->monthly_data = $this->getData($this->monthly_file);
|
||||
}
|
||||
|
||||
$month_year = date(self::MONTHLY_FORMAT);
|
||||
|
||||
// get the monthly access count
|
||||
if (array_key_exists($month_year, $this->monthly_data)) {
|
||||
$this->monthly_data[$month_year] = (int)$this->monthly_data[$month_year] + 1;
|
||||
} else {
|
||||
$this->monthly_data[$month_year] = 1;
|
||||
}
|
||||
|
||||
// keep correct number as set by history
|
||||
$count = (int)$this->config->get('plugins.admin.popularity.history.monthly', 12);
|
||||
$total = count($this->monthly_data);
|
||||
$this->monthly_data = array_slice($this->monthly_data, $total - $count, $count);
|
||||
|
||||
|
||||
file_put_contents($this->monthly_file, json_encode($this->monthly_data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function getMonthyChartData()
|
||||
{
|
||||
if (!$this->monthly_data) {
|
||||
$this->monthly_data = $this->getData($this->monthly_file);
|
||||
}
|
||||
|
||||
$labels = [];
|
||||
$data = [];
|
||||
|
||||
foreach ($this->monthly_data as $date => $count) {
|
||||
$labels[] = date('M', strtotime($date));
|
||||
$data[] = $count;
|
||||
}
|
||||
|
||||
return ['labels' => $labels, 'data' => $data];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $url
|
||||
*/
|
||||
protected function updateTotals($url)
|
||||
{
|
||||
if (!$this->totals_data) {
|
||||
$this->totals_data = $this->getData($this->totals_file);
|
||||
}
|
||||
|
||||
// get the totals for this url
|
||||
if (array_key_exists($url, $this->totals_data)) {
|
||||
$this->totals_data[$url] = (int)$this->totals_data[$url] + 1;
|
||||
} else {
|
||||
$this->totals_data[$url] = 1;
|
||||
}
|
||||
|
||||
file_put_contents($this->totals_file, json_encode($this->totals_data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $ip
|
||||
*/
|
||||
protected function updateVisitors($ip)
|
||||
{
|
||||
if (!$this->visitors_data) {
|
||||
$this->visitors_data = $this->getData($this->visitors_file);
|
||||
}
|
||||
|
||||
// update with current timestamp
|
||||
$this->visitors_data[hash('sha1', $ip)] = time();
|
||||
$visitors = $this->visitors_data;
|
||||
arsort($visitors);
|
||||
|
||||
$count = (int)$this->config->get('plugins.admin.popularity.history.visitors', 20);
|
||||
$this->visitors_data = array_slice($visitors, 0, $count, true);
|
||||
|
||||
file_put_contents($this->visitors_file, json_encode($this->visitors_data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getData($path)
|
||||
{
|
||||
if (file_exists($path)) {
|
||||
return (array)json_decode(file_get_contents($path), true);
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
public function flushPopularity()
|
||||
{
|
||||
file_put_contents($this->daily_file, []);
|
||||
file_put_contents($this->monthly_file, []);
|
||||
file_put_contents($this->totals_file, []);
|
||||
file_put_contents($this->visitors_file, []);
|
||||
}
|
||||
}
|
||||
79
config/www/user/plugins/admin/classes/plugin/Router.php
Normal file
79
config/www/user/plugins/admin/classes/plugin/Router.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Processors\ProcessorBase;
|
||||
use Grav\Framework\Route\Route;
|
||||
use Grav\Plugin\Admin\Routers\LoginRouter;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
|
||||
class Router extends ProcessorBase
|
||||
{
|
||||
public $id = 'admin_router';
|
||||
public $title = 'Admin Panel';
|
||||
|
||||
/** @var Admin */
|
||||
protected $admin;
|
||||
|
||||
public function __construct(Grav $container, Admin $admin)
|
||||
{
|
||||
parent::__construct($container);
|
||||
|
||||
$this->admin = $admin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle routing to the dashboard, group and build objects.
|
||||
*
|
||||
* @param ServerRequestInterface $request
|
||||
* @param RequestHandlerInterface $handler
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
|
||||
{
|
||||
$this->startTimer();
|
||||
|
||||
$context = $request->getAttributes();
|
||||
$query = $request->getQueryParams();
|
||||
|
||||
/** @var Route $route */
|
||||
$route = $context['route'];
|
||||
$normalized = mb_strtolower(trim($route->getRoute(), '/'));
|
||||
$parts = explode('/', $normalized);
|
||||
array_shift($parts); // Admin path
|
||||
$routeStr = implode('/', $parts);
|
||||
$view = array_shift($parts);
|
||||
$path = implode('/', $parts);
|
||||
$task = $this->container['task'] ?? $query['task'] ?? null;
|
||||
$action = $this->container['action'] ?? $query['action'] ?? null;
|
||||
|
||||
$params = ['view' => $view, 'route' => $routeStr, 'path' => $path, 'parts' => $parts, 'task' => $task, 'action' => $action];
|
||||
$request = $request->withAttribute('admin', $params);
|
||||
|
||||
// Run login controller if user isn't fully logged in or asks to logout.
|
||||
$user = $this->admin->user;
|
||||
if (!$user->authorized || !$user->authorize('admin.login')) {
|
||||
$params = (new LoginRouter())->matchServerRequest($request);
|
||||
$request = $request->withAttribute('admin', $params + $request->getAttribute('admin'));
|
||||
}
|
||||
|
||||
$this->admin->request = $request;
|
||||
|
||||
$response = $handler->handle($request);
|
||||
|
||||
$this->stopTimer();
|
||||
|
||||
// Never allow admin pages to be rendered in <frame>, <iframe>, <embed> or <object> for improved security.
|
||||
return $response->withHeader('X-Frame-Options', 'DENY');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin\Routers;
|
||||
|
||||
use Grav\Plugin\Admin\Admin;
|
||||
use Grav\Plugin\Admin\Controllers\Login\LoginController;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
class LoginRouter
|
||||
{
|
||||
/** @var string[] */
|
||||
private $taskTemplates = [
|
||||
'logout' => 'login',
|
||||
'twofa' => 'login',
|
||||
'forgot' => 'forgot',
|
||||
'reset' => 'reset'
|
||||
];
|
||||
|
||||
/**
|
||||
* @param ServerRequestInterface $request
|
||||
* @return array
|
||||
*/
|
||||
public function matchServerRequest(ServerRequestInterface $request): array
|
||||
{
|
||||
$adminInfo = $request->getAttribute('admin');
|
||||
$task = $adminInfo['task'];
|
||||
$class = LoginController::class;
|
||||
|
||||
// Special controller for the new sites.
|
||||
if (!Admin::doAnyUsersExist()) {
|
||||
$method = $task === 'register' ? 'taskRegister' : 'displayRegister';
|
||||
|
||||
return [
|
||||
'controller' => [
|
||||
'class' => $class,
|
||||
'method' => $method,
|
||||
'params' => []
|
||||
],
|
||||
'template' => 'register',
|
||||
];
|
||||
}
|
||||
|
||||
$httpMethod = $request->getMethod();
|
||||
$template = $this->taskTemplates[$task] ?? $adminInfo['view'];
|
||||
$params = [];
|
||||
|
||||
switch ($template) {
|
||||
case 'forgot':
|
||||
break;
|
||||
case 'reset':
|
||||
$path = $adminInfo['path'];
|
||||
if (str_starts_with($path, 'u/')) {
|
||||
// Path is 'u/username/token'
|
||||
$parts = explode('/', $path, 4);
|
||||
$user = $parts[1] ?? null;
|
||||
$token = $parts[2] ?? null;
|
||||
} else {
|
||||
// Old path used to be 'task:reset/user:username/token:token'
|
||||
if ($httpMethod === 'GET' || $httpMethod === 'HEAD') {
|
||||
$task = null;
|
||||
}
|
||||
$route = $request->getAttribute('route');
|
||||
$user = $route->getGravParam('user');
|
||||
$token = $route->getGravParam('token');
|
||||
}
|
||||
$params = [$user, $token];
|
||||
break;
|
||||
default:
|
||||
$template = 'login';
|
||||
}
|
||||
|
||||
$method = ($task ? 'task' : 'display') . ucfirst($task ?? $template);
|
||||
if (!method_exists($class, $method)) {
|
||||
$method = 'displayUnauthorized';
|
||||
}
|
||||
|
||||
return [
|
||||
'controller' => [
|
||||
'class' => $class,
|
||||
'method' => $method,
|
||||
'params' => $params
|
||||
],
|
||||
'template' => $template,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use ScssPhp\ScssPhp\Compiler;
|
||||
use ScssPhp\ScssPhp\ValueConverter;
|
||||
|
||||
class ScssCompiler
|
||||
{
|
||||
protected $compiler;
|
||||
|
||||
public function compiler()
|
||||
{
|
||||
if ($this->compiler === null) {
|
||||
$this->reset();
|
||||
}
|
||||
return $this->compiler;
|
||||
}
|
||||
|
||||
public function reset()
|
||||
{
|
||||
$this->compiler = new Compiler();
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setVariables(array $variables)
|
||||
{
|
||||
// $parsed = ValueConverter::fromPhp($variables);
|
||||
$parsed = [];
|
||||
foreach ($variables as $key => $value) {
|
||||
$parsed[$key] = ValueConverter::parseValue($value);
|
||||
}
|
||||
|
||||
$this->compiler()->addVariables($parsed);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setImportPaths(array $paths)
|
||||
{
|
||||
$this->compiler()->setImportPaths($paths);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function compile(string $input_file, string $output_file)
|
||||
{
|
||||
$input = file_get_contents($input_file);
|
||||
$output = $this->compiler()->compile($input);
|
||||
file_put_contents($output_file, $output);
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function compileAll(array $input_paths, string $output_file)
|
||||
{
|
||||
$input = '';
|
||||
foreach ($input_paths as $input_file) {
|
||||
$input .= trim(file_get_contents($input_file)) . "\n\n";
|
||||
}
|
||||
$output = $this->compiler()->compileString($input)->getCss();
|
||||
file_put_contents($output_file, $output);
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
59
config/www/user/plugins/admin/classes/plugin/ScssList.php
Normal file
59
config/www/user/plugins/admin/classes/plugin/ScssList.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
class ScssList
|
||||
{
|
||||
/** @var string[] */
|
||||
protected $list = [];
|
||||
|
||||
/**
|
||||
* ScssList constructor.
|
||||
* @param string|null $item
|
||||
*/
|
||||
public function __construct($item = null)
|
||||
{
|
||||
if ($item) {
|
||||
$this->add($item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function all(): array
|
||||
{
|
||||
return $this->list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $item
|
||||
* @return void
|
||||
*/
|
||||
public function add($item): void
|
||||
{
|
||||
if ($item) {
|
||||
$this->list[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $item
|
||||
* @return void
|
||||
*/
|
||||
public function remove($item): void
|
||||
{
|
||||
$pos = array_search($item, $this->list, true);
|
||||
if ($pos) {
|
||||
unset($this->list[$pos]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
29
config/www/user/plugins/admin/classes/plugin/Themes.php
Normal file
29
config/www/user/plugins/admin/classes/plugin/Themes.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
/**
|
||||
* Admin theme object
|
||||
*
|
||||
* @author RocketTheme
|
||||
* @license MIT
|
||||
*/
|
||||
class Themes extends \Grav\Common\Themes
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
/** @var Themes $themes */
|
||||
$themes = $this->grav['themes'];
|
||||
$themes->configure();
|
||||
$themes->initTheme();
|
||||
|
||||
$this->grav->fireEvent('onAdminThemeInitialized');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin\Twig;
|
||||
|
||||
use Grav\Common\Data\Data;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Page\Interfaces\PageInterface;
|
||||
use Grav\Common\Utils;
|
||||
use Grav\Common\Yaml;
|
||||
use Grav\Common\Language\Language;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFilter;
|
||||
use Twig\TwigFunction;
|
||||
use Grav\Plugin\Admin\Admin;
|
||||
|
||||
class AdminTwigExtension extends AbstractExtension
|
||||
{
|
||||
/** @var Grav */
|
||||
protected $grav;
|
||||
|
||||
/** @var Language $lang */
|
||||
protected $lang;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->grav = Grav::instance();
|
||||
$this->lang = $this->grav['user']->language;
|
||||
}
|
||||
|
||||
public function getFilters(): array
|
||||
{
|
||||
return [
|
||||
new TwigFilter('tu', [$this, 'tuFilter']),
|
||||
new TwigFilter('toYaml', [$this, 'toYamlFilter']),
|
||||
new TwigFilter('fromYaml', [$this, 'fromYamlFilter']),
|
||||
new TwigFilter('adminNicetime', [$this, 'adminNicetimeFilter']),
|
||||
new TwigFilter('nested', [$this, 'nestedFilter']),
|
||||
new TwigFilter('flatten', [$this, 'flattenFilter']),
|
||||
];
|
||||
}
|
||||
|
||||
public function getFunctions(): array
|
||||
{
|
||||
return [
|
||||
new TwigFunction('admin_route', [$this, 'adminRouteFunc']),
|
||||
new TwigFunction('getPageUrl', [$this, 'getPageUrl']),
|
||||
new TwigFunction('clone', [$this, 'cloneFunc']),
|
||||
new TwigFunction('data', [$this, 'dataFunc']),
|
||||
];
|
||||
}
|
||||
|
||||
public function nestedFilter($current, $name)
|
||||
{
|
||||
$path = explode('.', trim($name, '.'));
|
||||
|
||||
foreach ($path as $field) {
|
||||
if (is_object($current) && isset($current->{$field})) {
|
||||
$current = $current->{$field};
|
||||
} elseif (is_array($current) && isset($current[$field])) {
|
||||
$current = $current[$field];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return $current;
|
||||
}
|
||||
|
||||
public function flattenFilter($array)
|
||||
{
|
||||
return Utils::arrayFlattenDotNotation($array);
|
||||
}
|
||||
|
||||
public function cloneFunc($obj)
|
||||
{
|
||||
return clone $obj;
|
||||
}
|
||||
|
||||
public function adminRouteFunc(string $route = '', ?string $languageCode = null)
|
||||
{
|
||||
/** @var Admin $admin */
|
||||
$admin = Grav::instance()['admin'];
|
||||
|
||||
return $admin->getAdminRoute($route, $languageCode)->toString(true);
|
||||
}
|
||||
|
||||
public function getPageUrl(PageInterface $page)
|
||||
{
|
||||
/** @var Admin $admin */
|
||||
$admin = Grav::instance()['admin'];
|
||||
|
||||
return $admin->getAdminRoute('/pages' . $page->rawRoute(), $page->language())->toString(true);
|
||||
}
|
||||
|
||||
public static function tuFilter()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$numargs = count($args);
|
||||
$lang = null;
|
||||
|
||||
if (($numargs === 3 && is_array($args[1])) || ($numargs === 2 && !is_array($args[1]))) {
|
||||
$lang = array_pop($args);
|
||||
} elseif ($numargs === 2 && is_array($args[1])) {
|
||||
$subs = array_pop($args);
|
||||
$args = array_merge($args, $subs);
|
||||
}
|
||||
|
||||
return Grav::instance()['admin']->translate($args, $lang);
|
||||
}
|
||||
|
||||
public function toYamlFilter($value, $inline = null)
|
||||
{
|
||||
return Yaml::dump($value, $inline);
|
||||
|
||||
}
|
||||
|
||||
public function fromYamlFilter($value)
|
||||
{
|
||||
return Yaml::parse($value);
|
||||
}
|
||||
|
||||
public function adminNicetimeFilter($date, $long_strings = true)
|
||||
{
|
||||
return Grav::instance()['admin']->adminNiceTime($date, $long_strings);
|
||||
}
|
||||
|
||||
public function dataFunc(array $data, $blueprints = null)
|
||||
{
|
||||
return new Data($data, $blueprints);
|
||||
}
|
||||
}
|
||||
61
config/www/user/plugins/admin/classes/plugin/Utils.php
Normal file
61
config/www/user/plugins/admin/classes/plugin/Utils.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\User\Interfaces\UserCollectionInterface;
|
||||
use Grav\Common\User\Interfaces\UserInterface;
|
||||
|
||||
/**
|
||||
* Admin utils class
|
||||
*
|
||||
* @license MIT
|
||||
*/
|
||||
class Utils
|
||||
{
|
||||
/**
|
||||
* Matches an email to a user
|
||||
*
|
||||
* @param string $email
|
||||
*
|
||||
* @return UserInterface
|
||||
*/
|
||||
public static function findUserByEmail(string $email)
|
||||
{
|
||||
$grav = Grav::instance();
|
||||
|
||||
/** @var UserCollectionInterface $users */
|
||||
$users = $grav['accounts'];
|
||||
|
||||
return $users->find($email, ['email']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a slug of the given string
|
||||
*
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
public static function slug(string $str)
|
||||
{
|
||||
if (function_exists('transliterator_transliterate')) {
|
||||
$str = transliterator_transliterate('Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove;', $str);
|
||||
} else {
|
||||
$str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str);
|
||||
}
|
||||
|
||||
$str = strtolower($str);
|
||||
$str = preg_replace('/[-\s]+/', '-', $str);
|
||||
$str = preg_replace('/[^a-z0-9-]/i', '', $str);
|
||||
$str = trim($str, '-');
|
||||
|
||||
return $str;
|
||||
}
|
||||
}
|
||||
100
config/www/user/plugins/admin/classes/plugin/WhiteLabel.php
Normal file
100
config/www/user/plugins/admin/classes/plugin/WhiteLabel.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
namespace Grav\Plugin\Admin;
|
||||
|
||||
/**
|
||||
* @package Grav\Plugin\Admin
|
||||
*
|
||||
* @copyright Copyright (c) 2015 - 2024 Trilby Media, LLC. All rights reserved.
|
||||
* @license MIT License; see LICENSE file for details.
|
||||
*/
|
||||
|
||||
use Grav\Common\Filesystem\Folder;
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Framework\File\File;
|
||||
use RocketTheme\Toolbox\Event\Event;
|
||||
use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
|
||||
use Symfony\Component\Yaml\Yaml;
|
||||
|
||||
class WhiteLabel
|
||||
{
|
||||
protected $grav;
|
||||
protected $scss;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->grav = Grav::instance();
|
||||
$this->scss = new ScssCompiler();
|
||||
}
|
||||
|
||||
public function compilePresetScss($config, $options = [
|
||||
'input' => 'plugin://admin/themes/grav/scss/preset.scss',
|
||||
'output' => 'asset://admin-preset.css'
|
||||
])
|
||||
{
|
||||
if (is_array($config)) {
|
||||
$color_scheme = $config['color_scheme'];
|
||||
} else {
|
||||
$color_scheme = $config->get('whitelabel.color_scheme');
|
||||
}
|
||||
|
||||
if ($color_scheme) {
|
||||
/** @var UniformResourceLocator $locator */
|
||||
$locator = $this->grav['locator'];
|
||||
|
||||
// Use ScssList object to make it easier ot handle in event
|
||||
$scss_list = new ScssList($locator->findResource($options['input']));
|
||||
$output_css = $locator->findResource(($options['output']), true, true);
|
||||
|
||||
Folder::create(dirname($output_css));
|
||||
|
||||
Grav::instance()->fireEvent('onAdminCompilePresetSCSS', new Event(['scss' => $scss_list]));
|
||||
|
||||
// Convert bak to regular array now we have run the event
|
||||
$input_scss = $scss_list->all();
|
||||
|
||||
$imports = [$locator->findResource('plugin://admin/themes/grav/scss')];
|
||||
foreach ($input_scss as $scss) {
|
||||
$input_path = dirname($scss);
|
||||
if (!in_array($input_path, $imports)) {
|
||||
$imports[] = $input_path;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$compiler = $this->scss->reset();
|
||||
|
||||
$compiler->setVariables($color_scheme['colors'] + $color_scheme['accents']);
|
||||
$compiler->setImportPaths($imports);
|
||||
$compiler->compileAll($input_scss, $output_css);
|
||||
} catch (\Exception $e) {
|
||||
return [false, $e->getMessage()];
|
||||
}
|
||||
|
||||
|
||||
return [true, 'Recompiled successfully'];
|
||||
|
||||
}
|
||||
return [false, ' Could not be recompiled, missing color scheme...'];
|
||||
}
|
||||
|
||||
public function exportPresetScsss($config, $location = 'asset://admin-theme-export.yaml')
|
||||
{
|
||||
|
||||
if (isset($config['color_scheme'])) {
|
||||
|
||||
$color_scheme = $config['color_scheme'];
|
||||
|
||||
$body = Yaml::dump($color_scheme);
|
||||
|
||||
$file = new File($location);
|
||||
$file->save($body);
|
||||
// todo: handle errors/exceptions?
|
||||
|
||||
return [true, 'File created successfully'];
|
||||
|
||||
} else {
|
||||
return [false, ' Could not export, missing color scheme...'];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
18
config/www/user/plugins/admin/codeception.yml
Normal file
18
config/www/user/plugins/admin/codeception.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
actor: Tester
|
||||
paths:
|
||||
tests: tests
|
||||
log: tests/_output
|
||||
data: tests/_data
|
||||
support: tests/_support
|
||||
envs: tests/_envs
|
||||
settings:
|
||||
bootstrap: _bootstrap.php
|
||||
colors: true
|
||||
memory_limit: 1024M
|
||||
extensions:
|
||||
enabled:
|
||||
- Codeception\Extension\RunFailed
|
||||
# - Codeception\Extension\Recorder
|
||||
|
||||
modules:
|
||||
config:
|
||||
62
config/www/user/plugins/admin/composer.json
Normal file
62
config/www/user/plugins/admin/composer.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"name": "getgrav/grav-plugin-admin",
|
||||
"type": "grav-plugin",
|
||||
"description": "Admin plugin for Grav CMS",
|
||||
"keywords": ["admin", "plugin", "manager", "panel"],
|
||||
"homepage": "https://github.com/getgrav/grav-plugin-admin",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Team Grav",
|
||||
"email": "devs@getgrav.org",
|
||||
"homepage": "https://getgrav.org",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getgrav/grav-plugin-admin/issues",
|
||||
"irc": "https://chat.getgrav.org",
|
||||
"forum": "https://discourse.getgrav.org",
|
||||
"docs": "https://github.com/getgrav/grav-plugin-admin/blob/master/README.md"
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.3.6 || ^8.0",
|
||||
"ext-json": "*",
|
||||
"scssphp/scssphp": "^1.13",
|
||||
"p3k/picofeed": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeception/codeception": "^2.5",
|
||||
"fzaninotto/faker": "^1.9",
|
||||
"symfony/yaml": "~4.4",
|
||||
"symfony/console": "~4.4",
|
||||
"symfony/finder": "~4.4",
|
||||
"symfony/event-dispatcher": "~4.4"
|
||||
},
|
||||
"replace": {
|
||||
"symfony/polyfill-php73": "*"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Grav\\Plugin\\Admin\\": "classes/plugin"
|
||||
},
|
||||
"classmap": [
|
||||
"admin.php"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.3.6"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "vendor/bin/codecept run unit",
|
||||
"test-windows": "vendor\\bin\\codecept run unit"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/rhukster/picoFeed"
|
||||
}
|
||||
]
|
||||
}
|
||||
3962
config/www/user/plugins/admin/composer.lock
generated
Normal file
3962
config/www/user/plugins/admin/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
351
config/www/user/plugins/admin/languages/ar.yaml
Normal file
351
config/www/user/plugins/admin/languages/ar.yaml
Normal file
@@ -0,0 +1,351 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_NOSCRIPT_MSG: "يرجى تفعيل جافا سكريبت في المتصفح الخاص بك."
|
||||
ADMIN_BETA_MSG: "هذا إصدار بيتا! استخدم هذا في الإنتاج على مسؤوليتك الخاصة..."
|
||||
ADMIN_REPORT_ISSUE: "وجدت مشكلة؟ الرجاء الإبلاغ عن GitHub."
|
||||
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">الموقع مدعوم من Grav</a> - نظام إدارة الملفات الحديثة"
|
||||
LOGIN_BTN: "تسجل الدخول"
|
||||
LOGIN_BTN_FORGOT: "نسيت"
|
||||
LOGIN_BTN_RESET: "إعادة تعيين كلمة المرور"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "إرسال إرشادات إعادة تعيين"
|
||||
LOGIN_BTN_CLEAR: "مسح النموذج"
|
||||
LOGIN_BTN_CREATE_USER: "أنشاء مستخدم جديد"
|
||||
LOGIN_LOGGED_IN: "لقد تم تسجيل بنجاح"
|
||||
LOGIN_FAILED: "فشل تسجيل الخول"
|
||||
LOGGED_OUT: "لقد قمت بتسجيل الخروج"
|
||||
RESET_NEW_PASSWORD: "إدخال كلمة سر جديدة رجاءً …"
|
||||
RESET_LINK_EXPIRED: "انتهت مدة صلاحية إعادة الارتباط، الرجاء المحاولة مرة أخرى"
|
||||
RESET_PASSWORD_RESET: "لقد تم إعادة تعيين كلمة المرور"
|
||||
RESET_INVALID_LINK: "اللينك خاطئ ، الرجاء المحاولة مرة أخرى"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "تم إرسال إرشادات إعادة تعيين كلمة المرور الخاصة بك عبر البريد الإلكتروني إلى %s"
|
||||
FORGOT_FAILED_TO_EMAIL: "فشل في تعليمات البريد الإلكتروني، الرجاء المحاولة مرة أخرى لاحقاً"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "لا يمكن إعادة تعيين كلمة المرور ل %s، لم يتم تعيين عنوان البريد الإلكتروني"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "لا يوجد المستخدم مع اسم المستخدم <b>%s</b>"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "لا يمكن إعادة تعيين كلمة المرور. لم يتم تكوين هذا الموقع لإرسال رسائل البريد الإلكتروني"
|
||||
FORGOT_EMAIL_SUBJECT: "طلب إعادة تعيين كلمة المرور %s"
|
||||
FORGOT_EMAIL_BODY: "<h1>\"إعادة تعيين كلمة المرور\"</h1><p>عزيزي %1$s،</p><p>طلبا قدم في <b>%4$s</b> لإعادة تعيين كلمة المرور الخاصة بك.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">انقر فوق هذا الخيار لإعادة تعيين الخاص بك كلمة مرور</a><br /><br /></p><p>بدلاً من ذلك، نسخ عنوان URL التالي في شريط العناوين في المستعرض الخاص بك:</p> <p>%2$s</p><p><br />أطيب التحيات،<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "إدارة الصفحات"
|
||||
PAGES: "الصفحات"
|
||||
PLUGINS: "الملحقات"
|
||||
PLUGIN: "البرنامج الإضافي"
|
||||
THEMES: "المواضيع"
|
||||
LOGOUT: "تسجيل الخروج"
|
||||
BACK: "الرجوع"
|
||||
NEXT: "التالي"
|
||||
PREVIOUS: "السابق"
|
||||
ADD_PAGE: "إضافة صفحة"
|
||||
MOVE: "انقل"
|
||||
DELETE: "حذف"
|
||||
UNSET: "تراجع عن التعيين"
|
||||
VIEW: "عرض"
|
||||
SAVE: "حفظ"
|
||||
NORMAL: "عادي"
|
||||
EXPERT: "خبير"
|
||||
EXPAND_ALL: "عرض الكل"
|
||||
COLLAPSE_ALL: "طي الكل"
|
||||
ERROR: "خطأ"
|
||||
CLOSE: "أغلق"
|
||||
CANCEL: "إلغاء"
|
||||
CONTINUE: "المتابعة"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "التأكيد مطلوب"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "تم الكشف عن التغييرات"
|
||||
MODAL_CHANGED_DETECTED_DESC: "وقد تغييرات غير محفوظة. هل أنت متأكد من أنك تريد ترك دون الحفظ؟"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "التأكيد مطلوب"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "هل أنت متأكد من حذف هذا الملف؟ لا يمكن التراجع عن هذا الإجراء."
|
||||
ADD_FILTERS: "إضافة عامل تصفية"
|
||||
SEARCH_PAGES: "صفحات البحث"
|
||||
VERSION: "النسخة"
|
||||
WAS_MADE_WITH: "تم عمله مع"
|
||||
BY: "بواسطة"
|
||||
UPDATE_THEME: "تحديث الموضوع"
|
||||
UPDATE_PLUGIN: "تحديث البرنامج الإضافي"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "من هذه السمة الآن متوفرة"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "من هذه الإضافة متوفرة الآن"
|
||||
AUTHOR: "المؤلّف"
|
||||
HOMEPAGE: "الصفحة الرئيسية"
|
||||
DEMO: "عرض تجريبي"
|
||||
BUG_TRACKER: "متتبع الأخطاء"
|
||||
KEYWORDS: "الكلمات الرئيسية"
|
||||
LICENSE: "الرخصة"
|
||||
DESCRIPTION: "الوصف"
|
||||
README: "الملف التمهيدي"
|
||||
REMOVE_THEME: "إزالة الموضوع"
|
||||
INSTALL_THEME: "تثبيت الموضوع"
|
||||
THEME: "الموضوع"
|
||||
BACK_TO_THEMES: "العودة إلى المواضيع"
|
||||
BACK_TO_PLUGINS: "العودة إلى البرامج الإضافية"
|
||||
CHECK_FOR_UPDATES: "التحقق من وجود تحديثات"
|
||||
ADD: "أَضِف"
|
||||
CLEAR_CACHE: "مسح ذاكرة التخزين المؤقتة"
|
||||
CLEAR_CACHE_ALL_CACHE: "كافة المحفوظات"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "الاصول فقط"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "الصور فقط"
|
||||
CLEAR_CACHE_CACHE_ONLY: "المحفوظات فقط"
|
||||
CLEAR_CACHE_TMP_ONLY: "المؤقتة فقط"
|
||||
UPDATES_AVAILABLE: "تحديثات متوفّرة"
|
||||
DAYS: "أيام"
|
||||
UPDATE: "تحديث"
|
||||
BACKUP: "نسخة احتياطية"
|
||||
BACKUPS: "النسخ الاحتياطية"
|
||||
BACKUP_NOW: "قم بحفض نسخة احتياطية"
|
||||
BACKUPS_STATS: "قم بحفض نسخة احتياطية لاحصائيات"
|
||||
BACKUPS_HISTORY: "قم بحفض نسخة احتياطية للسجل"
|
||||
BACKUPS_PROFILES: "قم بحفض نسخة احتياطي للحسابات"
|
||||
BACKUPS_COUNT: "عدد النسخ الاحتياطية"
|
||||
BACKUPS_PROFILES_COUNT: "عدد الحسابات"
|
||||
BACKUPS_TOTAL_SIZE: "المساحة المستعملة"
|
||||
BACKUPS_NEWEST: "النسخ الاحتياطية الحديثة"
|
||||
BACKUPS_OLDEST: "النسخ الاحتياطية القديمة"
|
||||
BACKUPS_PURGE: "تطهير"
|
||||
BACKUPS_NOT_GENERATED: "لم يتم إنشاء نسخ احتياطية بعد..."
|
||||
BACKUPS_PURGE_NUMBER: "استخدام %s من %s من فتحات النسخ الاحتياطي"
|
||||
BACKUPS_PURGE_TIME: "%s ايام من النسخ الاحتياطية بقية"
|
||||
BACKUPS_PURGE_SPACE: "استعمال %s من %s"
|
||||
BACKUP_DELETED: "تم حذف النسخة الاحتياطية بنجاح"
|
||||
BACKUP_NOT_FOUND: "لم يتم العثور على نسخة احتياطية"
|
||||
BACKUP_DATE: "تاريخ النسخ الاحتياطي"
|
||||
STATISTICS: "إحصائيات"
|
||||
TODAY: "اليوم"
|
||||
WEEK: "اسبوع"
|
||||
MONTH: "شهر"
|
||||
LATEST_PAGE_UPDATES: "آخر التحديثات"
|
||||
MAINTENANCE: "الصيانه"
|
||||
UPDATED: "تم تحديثه"
|
||||
MON: "الإثنين"
|
||||
TUE: "الثلاثاء"
|
||||
WED: "الإربعاء"
|
||||
THU: "الخميس"
|
||||
FRI: "الجمعة"
|
||||
SAT: "السبت"
|
||||
SUN: "الأحد"
|
||||
COPY: "نسخ"
|
||||
EDIT: "تحرير"
|
||||
CREATE: "انشاء"
|
||||
GRAV_ADMIN: "مدير جريف"
|
||||
GRAV_OFFICIAL_PLUGIN: "اضاف رسمية ل جريف"
|
||||
GRAV_OFFICIAL_THEME: "سمة جريف رسمية"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "هذه الاضافه مرتبطة بمرجع. لن يام اكتشاف التحديثات."
|
||||
THEME_SYMBOLICALLY_LINKED: "هذه السمة مرتبطة بمرجع. لم يتم اكتشاف التحديثات"
|
||||
REMOVE_PLUGIN: "حذف الإضافة"
|
||||
INSTALL_PLUGIN: "تثبيت الإضافة"
|
||||
AVAILABLE: "متوفر"
|
||||
INSTALLED: "مثبت"
|
||||
INSTALL: "تثبيت"
|
||||
ACTIVE_THEME: "سمة نشطة"
|
||||
SWITCHING_TO: "التبديل إلى"
|
||||
SWITCHING_TO_DESCRIPTION: "بالتبديل إلى سمة مختلفة, لايوجد أي ضمانات بأن صفحات الواجهة مدعومة, من المحتمل أن تحدث أخطاء عند محاولة تحميل الصفحات المذكورة."
|
||||
SWITCHING_TO_CONFIRMATION: "هل تريد التبديل الى السمة والمتابعة"
|
||||
CREATE_NEW_USER: "إنشاء مستخدم جديد"
|
||||
REMOVE_USER: "حذف المستخدم"
|
||||
ACCESS_DENIED: "الدخول ممنوع"
|
||||
ACCOUNT_NOT_ADMIN: "لا يملك حسابك أي صلاحيات للإدارة"
|
||||
PHP_INFO: "معلومات بي إش بي"
|
||||
INSTALLER: "المثبت"
|
||||
AVAILABLE_THEMES: "سمات متوفرة"
|
||||
AVAILABLE_PLUGINS: "إضافات متوفرة"
|
||||
INSTALLED_THEMES: "السمات المثبتة"
|
||||
INSTALLED_PLUGINS: "الإضافات المثبتة"
|
||||
BROWSE_ERROR_LOGS: "سجل أخطاء التصفح"
|
||||
SITE: "موقع"
|
||||
INFO: "معلومات"
|
||||
SYSTEM: "النظام"
|
||||
USER: "المستخدم"
|
||||
ADD_ACCOUNT: "إضافة حساب"
|
||||
SWITCH_LANGUAGE: "تبديل اللغة"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "تم تفعيل الإضافة بنجاح"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "تم إيقاف الإضافة بنجاح"
|
||||
SUCCESSFULLY_CHANGED_THEME: "تم تبديل السمة الإفتراضية بنجاح"
|
||||
INSTALLATION_FAILED: "فشل التثبيت"
|
||||
INSTALLATION_SUCCESSFUL: "تم التثبيت بنجاح"
|
||||
UNINSTALL_FAILED: "فشل الغاء التثبيت"
|
||||
UNINSTALL_SUCCESSFUL: "تم إلغاء التثبيت بنجاح"
|
||||
SUCCESSFULLY_SAVED: "حفظ بنجاح"
|
||||
SUCCESSFULLY_COPIED: "نسخ بنجاح"
|
||||
REORDERING_WAS_SUCCESSFUL: "إعادة ترتيب تم بنجاح"
|
||||
SUCCESSFULLY_DELETED: "تم الحذف بنجاح"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "تم تغيير اللغة بنجاح"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "لديك أذونات غير كافية للقيام بالمهمة"
|
||||
CACHE_CLEARED: "تم مسح الذاكرة المؤقتة"
|
||||
METHOD: "الأسلوب"
|
||||
ERROR_CLEARING_CACHE: "خطأ مسح ذاكرة التخزين المؤقت"
|
||||
AN_ERROR_OCCURRED: "حدث خطأ ما"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "النسخة الاحتياطية جاهزة للتحميل"
|
||||
DOWNLOAD_BACKUP: "تنزيل النسخة الاحتياطية"
|
||||
PAGES_FILTERED: "الصفحات التي تمت تصفيتها"
|
||||
NO_PAGE_FOUND: "لم يتم العثور على أي صفحة"
|
||||
INVALID_PARAMETERS: "متغيرات غير صالحة"
|
||||
NO_FILES_SENT: "لا توجد ملفات أرسلت حتى الآن"
|
||||
EXCEEDED_FILESIZE_LIMIT: "تجاوز الحد الأقصى لحجم ملف التكوين بي إتش بي"
|
||||
UNKNOWN_ERRORS: "خطأ غير معروف"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "تجاوز الحد الأقصى لحجم ملف التكوين بي إتش بي"
|
||||
UNSUPPORTED_FILE_TYPE: "نوع ملف غير معتمد"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "فشل في تحميل الملف"
|
||||
FILE_UPLOADED_SUCCESSFULLY: "تم رفع الملف بنجاح"
|
||||
FILE_DELETED: "تم حذف الملف"
|
||||
FILE_COULD_NOT_BE_DELETED: "لا يمكن حذف الملف"
|
||||
FILE_NOT_FOUND: "لم يتم العثور على الملف"
|
||||
NO_FILE_FOUND: "لا يوجد ملف"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "تم تحديث النظام بنجاح الى"
|
||||
GRAV_UPDATE_FAILED: "فشل تحديث نظام جراف"
|
||||
EVERYTHING_UPDATED: "تم تحديث كل شيء"
|
||||
UPDATES_FAILED: "فشل التحديث"
|
||||
AVATAR_BY: "الصورة الرمزية التي"
|
||||
AVATAR_UPLOAD_OWN: "أو قم بتحميل الخاصة بك..."
|
||||
LAST_BACKUP: "آخر نسخ احتياطي"
|
||||
FULL_NAME: "الإسم الكامل"
|
||||
USERNAME: "إسم المستخدم"
|
||||
EMAIL: "البريد الإلكتروني"
|
||||
USERNAME_EMAIL: "إسم المستخدم أو البريد الإلكتروني"
|
||||
PASSWORD: "كلمة السر"
|
||||
PASSWORD_CONFIRM: "تأكيد كلمة السر"
|
||||
TITLE: "العنوان"
|
||||
ACCOUNT: "الحساب"
|
||||
EMAIL_VALIDATION_MESSAGE: "يجب أن يكون البريد الإلكتروني صحيحاً"
|
||||
PASSWORD_VALIDATION_MESSAGE: "يجب أن تحتوي كلمة المرور على الأقل على رقم وعلى حرف كبير وعلى حرف صغير، و أن تكون مكونة على الأقل من 8 أحرف أو أكثر"
|
||||
LANGUAGE: "اللّغة"
|
||||
LANGUAGE_HELP: "تعيين اللغة المفضلة"
|
||||
MEDIA: "وسائط"
|
||||
DEFAULTS: "الإعدادات الافتراضية"
|
||||
SITE_TITLE: "عنوان الموقع"
|
||||
SITE_TITLE_PLACEHOLDER: "عنوان الموقع العريض"
|
||||
SITE_TITLE_HELP: "العنوان الإفتراضي لموقعك, غالبا يستخدم في السمات"
|
||||
SITE_DEFAULT_LANG: "اللغة الإفتراضية"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "اللغة الإفتراضية المستخدمة في السمات وسم <HTML>"
|
||||
SITE_DEFAULT_LANG_HELP: "اللغة الإفتراضية المستخدمة في السمات وسم <HTML>"
|
||||
DEFAULT_AUTHOR: "المؤلف الافتراضي"
|
||||
DEFAULT_AUTHOR_HELP: "إسم المؤلف الإفتراضي, يستخدم عادة في السمات او محتوى الصفحة"
|
||||
DEFAULT_EMAIL: "البريد الإلكتروني الإفتراضي"
|
||||
DEFAULT_EMAIL_HELP: "البريد الإلكتروني للإشارة في المواضيع أو صفحات"
|
||||
TAXONOMY_TYPES: "أنواع التصنيف"
|
||||
TAXONOMY_TYPES_HELP: "يجب أن يتم تعريف أنواع التصنيف هنا إذا كنت ترغب في استخدامها في صفحات"
|
||||
PAGE_SUMMARY: "ملخص الصفحة"
|
||||
ENABLED: "فعال"
|
||||
ENABLED_HELP: "تمكين صفحة الموجز (الملخص ترجع نفس محتوى الصفحة)"
|
||||
'YES': "نعم"
|
||||
'NO': "لا"
|
||||
SUMMARY_SIZE: "حجم الملخص"
|
||||
SUMMARY_SIZE_HELP: "مقدار أحرف صفحة لاستخدامها كمحتوى موجز"
|
||||
FORMAT: "الشكل"
|
||||
FORMAT_HELP: "اختصار = الاستخدام الأولى لوقوع محدد أو الحجم؛ = فترة طويلة سيتم تجاهل موجز محدد"
|
||||
SHORT: "قصير"
|
||||
LONG: "طويل"
|
||||
DELIMITER: "الفاصل"
|
||||
DELIMITER_HELP: "موجز محدد (الافتراضي '= = =')"
|
||||
METADATA: "البيانات الوصفية"
|
||||
METADATA_HELP: "قيم بيانات التعريف الافتراضية التي سيتم عرضها في كل صفحة ما لم يتم تجاوز الصفحة"
|
||||
NAME: "الإسم"
|
||||
CONTENT: "المحتوى"
|
||||
SIZE: "حجم"
|
||||
ACTION: "اجراء"
|
||||
REDIRECTS_AND_ROUTES: "اعادة التوجيه و المسارات"
|
||||
CUSTOM_REDIRECTS: "تخصيص اعادة التوجيه"
|
||||
CUSTOM_REDIRECTS_HELP: "مسارات لإعادة التوجيه إلى صفحات أخرى. الاستبدال الاساسي ل Regex صحيح"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/ الخاص / الاسم المستعار"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/ الخاص /إعادة التوجيه"
|
||||
CUSTOM_ROUTES: "تخصيص المسارات"
|
||||
CUSTOM_ROUTES_HELP: "مسارات لاسماء المستعارة إلى صفحات أخرى. الاستبدال الاساسي ل Regex صحيح"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ الخاص / الاسم المستعار"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ الخاص / المسار"
|
||||
FILE_STREAMS: "تيارات الملف"
|
||||
DEFAULT: "الإعدادات العامة"
|
||||
PAGE_MEDIA: "صور و فيديوهات الصفحة"
|
||||
OPTIONS: "الخيارات"
|
||||
PUBLISHED: "نُشِرَ"
|
||||
PUBLISHED_HELP: "بشكل افتراضي، يتم نشر صفحة إلا إذا قمت بتعيين المنشور: false أو عن طريق publish_date يجري في المستقبل، أو unpublish_date في الماضي"
|
||||
DATE: "التاريخ"
|
||||
PUBLISHED_DATE: "تاريخ النشر"
|
||||
ROBOTS: "الروبوتات"
|
||||
ADVANCED: "خيارات متقدمة"
|
||||
SETTINGS: "الإعدادات"
|
||||
FOLDER_NAME: "إسم المجلد"
|
||||
MENU: "القائمة"
|
||||
USE_GLOBAL: "الاستخدام العام"
|
||||
ROUTABLE: "قابل للتوجيه"
|
||||
ROUTABLE_HELP: "إذا أمكن ولوج هذه الصفحة عبر عنوان URL"
|
||||
VISIBLE: "مرئي"
|
||||
ASCENDING: "تصاعدي"
|
||||
DESCENDING: "تنازلي"
|
||||
PAGE_TITLE: "موضوع عنوان الصفحة"
|
||||
PAGE_TITLE_HELP: "عنوان الصفحة"
|
||||
PAGE: "صفحة"
|
||||
FILENAME: "اسم الملف"
|
||||
PARENT_PAGE: "الصفحة الأصل"
|
||||
HOME_PAGE: "الصفحة الرئيسية"
|
||||
TIMEZONE: "المنطقة الزمنية"
|
||||
LANGUAGES: "اللغات"
|
||||
EXPIRES: "انتهاء الصلاحية"
|
||||
LAST_MODIFIED: "آخر تعديل"
|
||||
SESSION: "الجلسة"
|
||||
CURRENT: "الحالي"
|
||||
SAVE_AS: "حفظ كـ"
|
||||
AND: "و"
|
||||
FULLY_UPDATED: "تم تحديث النظام بالكامل"
|
||||
IGNORE_FILES: "تجاهل الملفات"
|
||||
IGNORE_FOLDERS: "تجاهل المجلدات"
|
||||
GROUPS: "الفِرَق"
|
||||
ADMIN_ACCESS: "النفاذ إلى الإدارة"
|
||||
SITE_ACCESS: "الوصول إلى الموقع"
|
||||
INVALID_SECURITY_TOKEN: "رمز الأمان غير صالح"
|
||||
ACTIVATE: "تفعيل"
|
||||
HIDE_HOME_IN_URLS: "إخفاء المسار الرئيسي في عناوين URL"
|
||||
SESSION_SECURE: "آمن"
|
||||
ADD_FOLDER: "إضافة مجلد"
|
||||
ADD_ITEM: "إضافة عنصر"
|
||||
LOADING: "جار التحميل …"
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "تم تحديث حزمة أو حزمات بنجاح."
|
||||
INSERT: "إدراج"
|
||||
UNDO: "تراجع"
|
||||
REDO: "إعادة"
|
||||
HEADERS: "العناوين الرأسية"
|
||||
ITALIC: "مائل"
|
||||
LINK: "رابط"
|
||||
IMAGE: "صورة"
|
||||
EDITOR: "المحرر"
|
||||
PREVIEW: "معاينة"
|
||||
FULLSCREEN: "ملء الشاشة"
|
||||
PUBLISHING: "النشر"
|
||||
IMAGE_OPTIONS: "خيارات الصورة"
|
||||
ALL: "الكل"
|
||||
FROM: "من"
|
||||
TO: "إلى"
|
||||
RELEASE_DATE: "تاريخ الإصدار"
|
||||
FORCE_SSL: "فرض SSL"
|
||||
DROPZONE_REMOVE_FILE: "إزالة الملف"
|
||||
TOOLS: "الأدوات"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
2FA_REGENERATE: "إعادة التوليد"
|
||||
VIEW_SITE_TIP: "رؤية الموقع"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "تحميل وتثبيت"
|
||||
SCHEDULER_INSTALL_INSTRUCTIONS: "إرشادات التثبيت"
|
||||
SCHEDULER_INSTALLED_READY: "مثبت وجاهز"
|
||||
EXPERIMENTAL: "تجريبي"
|
||||
FILE: "ملف"
|
||||
ACCOUNTS: "الحسابات"
|
||||
USER_ACCOUNTS: "حسابات المستخدمين"
|
||||
USER_GROUPS: "مجموعات المستخدمين"
|
||||
GROUP_NAME: "اسم الفريق"
|
||||
DISPLAY_NAME: "الاسم المعروض"
|
||||
ICON: "أيقونة"
|
||||
ACCESS: "الوصول"
|
||||
NO_ACCESS: "لا يوجد وصول"
|
||||
SUPER_USER: "مستخدم خارق"
|
||||
ALLOWED: "مسموح"
|
||||
DENIED: "مرفوض"
|
||||
ACCESS_ADMIN_SETTINGS: "الإعدادات"
|
||||
ACCESS_ADMIN_PAGES: "إدارة الصفحات"
|
||||
ACCESS_ADMIN_MAINTENANCE: "صيانة الموقع"
|
||||
ACCESS_ADMIN_STATISTICS: "إحصائيات الموقع"
|
||||
ACCESS_ADMIN_PLUGINS: "إدارة الإضافات"
|
||||
ACCESS_ADMIN_THEMES: "إدارة السمات"
|
||||
ACCESS_ADMIN_TOOLS: "الوصول إلى الأدوات"
|
||||
ACCESS_ADMIN_USERS: "إدارة المستخدمين"
|
||||
USERS: "المستخدمون"
|
||||
ACL: "إدارة صلاحيات الوصول"
|
||||
LANGUAGE_TRANSLATIONS: "الترجمات"
|
||||
LOGOS: "الشعارات"
|
||||
PRESETS: "الإعدادات المسبقة"
|
||||
COLOR_SCHEME_LABEL: "تشكيلات الألوان"
|
||||
CONFIGURATION: "الإعدادات"
|
||||
DASHBOARD: "لوحة المعلومات"
|
||||
MONTHLY_HISTORY: "السجل الشهري"
|
||||
ENABLE: تمكين
|
||||
362
config/www/user/plugins/admin/languages/bg.yaml
Normal file
362
config/www/user/plugins/admin/languages/bg.yaml
Normal file
@@ -0,0 +1,362 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_NOSCRIPT_MSG: "Моля активирайте JavaScript във вашия браузър."
|
||||
ADMIN_BETA_MSG: "Това е Бета версия! Използвате на ваша отговорност..."
|
||||
ADMIN_REPORT_ISSUE: "Открили сте проблем? Моля, съобщете за него в GitHub."
|
||||
EMAIL_FOOTER: ""
|
||||
LOGIN_BTN: "Вход"
|
||||
LOGIN_BTN_FORGOT: "Забравена парола"
|
||||
LOGIN_BTN_RESET: "Промяна на паролата"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Изпращане на инструкциите за възстановяването"
|
||||
LOGIN_BTN_CLEAR: "Изтриване на формуляра"
|
||||
LOGIN_BTN_CREATE_USER: "Създаване на потребител"
|
||||
LOGIN_LOGGED_IN: "Влязохте успешно"
|
||||
LOGIN_FAILED: "Влизането не е успешно"
|
||||
LOGGED_OUT: "Излязохте от системата"
|
||||
RESET_NEW_PASSWORD: "Въведете нова парола …"
|
||||
RESET_LINK_EXPIRED: "Връзката за нулиране е изтекла, опитайте отново"
|
||||
RESET_PASSWORD_RESET: "Паролата е променена"
|
||||
RESET_INVALID_LINK: "Използвана невалидна връзка за нулиране, моля опитайте отново"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "На Вашия имейл, бяха изпратени инструкции за възстановяване на паролата"
|
||||
FORGOT_FAILED_TO_EMAIL: "Неуспешно изпращане на имейл с инструкции, опитайте по-късно"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Паролата на %s не може да бъде обновена, няма въведен имейл адрес"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Потребител с име <b>%s</b> не съществува"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Не може да обнови паролата. Този сайт не е конфигуриран да изпраща имейли"
|
||||
FORGOT_EMAIL_SUBJECT: "%s - искане за смяна на парола"
|
||||
FORGOT_EMAIL_BODY: "<h1>Смяна на парола</h1><p>Уважаеми %1$s</p><p>На <b>%4$s</b> бе направено искане за смяна на парола.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Натиснете тук за да обновите паролата си</a><br /><br /></p><p>Като алтернатива, можете да копирате линка в адресната лента на браузъра си:</p><p>%2$s</p><p><br />С уважение,<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Управление на страниците"
|
||||
PAGES: "Страници"
|
||||
PLUGINS: "Разширения"
|
||||
PLUGIN: "Разширение"
|
||||
THEMES: "Теми"
|
||||
LOGOUT: "Изход"
|
||||
BACK: "Назад"
|
||||
NEXT: "Напред"
|
||||
PREVIOUS: "Назад"
|
||||
ADD_PAGE: "Добавяне на страница"
|
||||
MOVE: "Преместване"
|
||||
DELETE: "Изтриване"
|
||||
UNSET: "Незададен"
|
||||
VIEW: "Виж"
|
||||
SAVE: "Запазване"
|
||||
NORMAL: "Обикновен"
|
||||
EXPERT: "Експертен"
|
||||
EXPAND_ALL: "Разгъване на всички"
|
||||
COLLAPSE_ALL: "Свиване на всички"
|
||||
ERROR: "Грешка"
|
||||
CLOSE: "Затваряне"
|
||||
CANCEL: "Отказ"
|
||||
CONTINUE: "Продължаване"
|
||||
CONFIRM: "Потвърди"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Изисква се потвърждение"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Засечени са промени"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Имате незапазени промени. Наистина ли искате да излезете без да сте ги запазили?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Изисква се потвърждение"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Наистина ли искате да изтриете този файл? Това действие не може да бъде отменено."
|
||||
MODAL_UPDATE_GRAV_CONFIRMATION_REQUIRED_DESC: "Предстои да обновите Grav до последна версия. Искате ли да продължите?"
|
||||
ADD_FILTERS: "Добавяне на филтри"
|
||||
SEARCH_PAGES: "Търсене"
|
||||
VERSION: "Версия"
|
||||
WAS_MADE_WITH: "е създаден с"
|
||||
BY: "от"
|
||||
UPDATE_THEME: "Актуализация на тема"
|
||||
UPDATE_PLUGIN: "Актуализация на разширение"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "на тази тема е наличен"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "на този плъгин е вече наличен"
|
||||
AUTHOR: "Автор"
|
||||
HOMEPAGE: "Страница"
|
||||
DEMO: "Демо"
|
||||
BUG_TRACKER: "Докладване за грешки"
|
||||
KEYWORDS: "Ключови думи"
|
||||
LICENSE: "Лиценз"
|
||||
DESCRIPTION: "Описание"
|
||||
README: "Документация"
|
||||
DOCS: "Документи"
|
||||
REMOVE_THEME: "Премахване на тема"
|
||||
INSTALL_THEME: "Инсталиране на тема"
|
||||
THEME: "Тема"
|
||||
BACK_TO_THEMES: "Обратно към темите"
|
||||
BACK_TO_PLUGINS: "Обратно към разширенията"
|
||||
CHECK_FOR_UPDATES: "Проверка за актуализации"
|
||||
ADD: "Добавяне"
|
||||
CLEAR_CACHE: "Изтриване на временните файлове"
|
||||
CLEAR_CACHE_ALL_CACHE: "Всички"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Само Assets"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Само изображенията"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Само временните файлове"
|
||||
CLEAR_CACHE_TMP_ONLY: "само временен"
|
||||
UPDATES_AVAILABLE: "Налични актуализации"
|
||||
DAYS: "Дни"
|
||||
UPDATE: "Актуализация"
|
||||
BACKUP: "Резервно копие"
|
||||
BACKUPS: "Резервно копие"
|
||||
BACKUP_NOW: "Създай резервно копие"
|
||||
BACKUPS_STATS: "Статистика резервни копия"
|
||||
BACKUPS_HISTORY: "История резервни копия"
|
||||
BACKUPS_PURGE_CONFIG: "Настройка изтриване на резервно копие"
|
||||
BACKUPS_PROFILES: "Профили на резервни копия"
|
||||
BACKUPS_COUNT: "Брой резервни копия"
|
||||
BACKUPS_PROFILES_COUNT: "Брой профили"
|
||||
BACKUPS_TOTAL_SIZE: "Използвано пространство"
|
||||
BACKUPS_NEWEST: "Най-ново резервно копие"
|
||||
BACKUPS_OLDEST: "Най-старо резервно копие"
|
||||
BACKUPS_PURGE: "Изтриване"
|
||||
BACKUPS_NOT_GENERATED: "Все още не са генериране резервни копия..."
|
||||
BACKUPS_PURGE_NUMBER: "Използва %s от %s слота за резервни копия"
|
||||
BACKUPS_PURGE_TIME: "Остават %s дни за резервно копие"
|
||||
BACKUPS_PURGE_SPACE: "Използва %s от %s"
|
||||
BACKUP_DELETED: "Успешно изтрито резервно копие"
|
||||
BACKUP_NOT_FOUND: "Не е намерено резервно копие"
|
||||
BACKUP_DATE: "Данни за резервно копие"
|
||||
STATISTICS: "Статистика"
|
||||
VIEWS_STATISTICS: "Статистика на страницата"
|
||||
TODAY: "Днес"
|
||||
WEEK: "Седмица"
|
||||
MONTH: "Месец"
|
||||
LATEST_PAGE_UPDATES: "Скоро актуализирани страници"
|
||||
MAINTENANCE: "Техническа поддръжка"
|
||||
UPDATED: "Актуализиран"
|
||||
MON: "пон"
|
||||
TUE: "вт"
|
||||
WED: "ср"
|
||||
THU: "чт"
|
||||
FRI: "пт"
|
||||
SAT: "сб"
|
||||
SUN: "нд"
|
||||
COPY: "Копиране"
|
||||
EDIT: "Редактиране"
|
||||
CREATE: "Създаване"
|
||||
GRAV_ADMIN: "Grav Admin"
|
||||
GRAV_OFFICIAL_PLUGIN: "Официално разширение на Grav"
|
||||
GRAV_OFFICIAL_THEME: "Официална тема на Grav"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Този плъгин е символично свързан. Актуализации няма да бъдат отразени."
|
||||
THEME_SYMBOLICALLY_LINKED: "Тази тема е символично свързана. Актуализации няма да бъдат отразени."
|
||||
REMOVE_PLUGIN: "Премахване на разширение"
|
||||
INSTALL_PLUGIN: "Инсталиране на разширение"
|
||||
AVAILABLE: "Налични"
|
||||
INSTALLED: "Инсталирани"
|
||||
INSTALL: "Инсталиране"
|
||||
ACTIVE_THEME: "Активна тема"
|
||||
SWITCHING_TO: "Превключване към"
|
||||
SWITCHING_TO_DESCRIPTION: "При превключването към различна тема няма гаранция, че всички страници са поддържани, което може да доведе до потенциални грешки при опит за зареждане на тези страници."
|
||||
SWITCHING_TO_CONFIRMATION: "Искате ли да продължите и да превключите към темата"
|
||||
CREATE_NEW_USER: "Създаване на нов потребител"
|
||||
REMOVE_USER: "Премахване на потребител"
|
||||
ACCESS_DENIED: "Нямате достъп"
|
||||
ACCOUNT_NOT_ADMIN: "вашият профил няма администраторски права"
|
||||
PHP_INFO: "Информация за PHP"
|
||||
INSTALLER: "Инсталатор"
|
||||
AVAILABLE_THEMES: "Налични теми"
|
||||
AVAILABLE_PLUGINS: "Налични разширения"
|
||||
INSTALLED_THEMES: "Инсталирани теми"
|
||||
INSTALLED_PLUGINS: "Инсталирани разширения"
|
||||
BROWSE_ERROR_LOGS: "Преглед на дневниците за грешки"
|
||||
SITE: "Сайт"
|
||||
INFO: "Информация"
|
||||
SYSTEM: "Система"
|
||||
USER: "Потребител"
|
||||
ADD_ACCOUNT: "Добавяне на профил"
|
||||
SWITCH_LANGUAGE: "Превключване на езика"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Разширението е активирано успешно"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Разширението е спряно"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Промяната на подразбиращата се тема е успешно"
|
||||
INSTALLATION_FAILED: "Неуспешна инсталация"
|
||||
INSTALLATION_SUCCESSFUL: "Инсталацията е успешна"
|
||||
UNINSTALL_FAILED: "Неуспешно деинсталиране"
|
||||
UNINSTALL_SUCCESSFUL: "Деинсталирането е успешно"
|
||||
SUCCESSFULLY_SAVED: "Успешно запазено"
|
||||
SUCCESSFULLY_COPIED: "Успешно копирано"
|
||||
REORDERING_WAS_SUCCESSFUL: "Записът бе успешен"
|
||||
SUCCESSFULLY_DELETED: "Успешно изтрити"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Езикът е променен успешно"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Нямате достатъчно права за тази задача"
|
||||
CACHE_CLEARED: "Временните файлове са изчистени"
|
||||
METHOD: "Метод"
|
||||
ERROR_CLEARING_CACHE: "Грешка при изтриването на временните файлове"
|
||||
AN_ERROR_OCCURRED: "Възникна грешка"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Резервното копие е готово за изтегляне"
|
||||
DOWNLOAD_BACKUP: "Изтегляне на резервното копие"
|
||||
PAGES_FILTERED: "Филтрирани страници"
|
||||
NO_PAGE_FOUND: "Няма намерени страници"
|
||||
INVALID_PARAMETERS: "Невалидни параметри"
|
||||
NO_FILES_SENT: "Няма изпратени файлове"
|
||||
EXCEEDED_FILESIZE_LIMIT: "Надхвърлен лимит за размер на PHP конфигурационен файл"
|
||||
EXCEEDED_POSTMAX_LIMIT: "Превишена PHP конфигурация post_max_size"
|
||||
UNKNOWN_ERRORS: "Неизвестни грешки"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Превишен лимит за размера на конфигурационен GRAV файл"
|
||||
UNSUPPORTED_FILE_TYPE: "Този файлов формат не се поддържа"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Преместването на качения файл не е успешно."
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Файлът е качен успешно"
|
||||
FILE_DELETED: "Файлът е изтрит"
|
||||
FILE_COULD_NOT_BE_DELETED: "Файлът не може да бъде изтрит"
|
||||
FILE_NOT_FOUND: "Файлът не е намерен"
|
||||
NO_FILE_FOUND: "Няма намерени файлове"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav беше успешно актуализиран до"
|
||||
GRAV_UPDATE_FAILED: "Актуализацията на Grav е неуспешна"
|
||||
EVERYTHING_UPDATED: "Всичко е актуализирано"
|
||||
UPDATES_FAILED: "Актуализациите не бяха успшено"
|
||||
AVATAR_BY: "Аватар от"
|
||||
AVATAR_UPLOAD_OWN: "Или качи собствени..."
|
||||
LAST_BACKUP: "Последно резервно копие"
|
||||
FULL_NAME: "Пълно име"
|
||||
USERNAME: "Потребителско име"
|
||||
EMAIL: "Ел. поща"
|
||||
USERNAME_EMAIL: "Потребителско име или инейл"
|
||||
PASSWORD: "Парола"
|
||||
PASSWORD_CONFIRM: "Потвърждение на паролата"
|
||||
TITLE: "Титла"
|
||||
ACCOUNT: "Профил"
|
||||
EMAIL_VALIDATION_MESSAGE: "Ел. поща трябва да бъде валидна"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Паролата трябва да съдържа поне един номер, една главна буква, една малка буква и да съдържа поне 8 или повече знака"
|
||||
LANGUAGE: "Език"
|
||||
LANGUAGE_HELP: "Задаване на любим език"
|
||||
MEDIA: "Медиа"
|
||||
DEFAULTS: "По подразбиране"
|
||||
SITE_TITLE: "Заглавие на сайта"
|
||||
SITE_TITLE_PLACEHOLDER: "Заглавие за всички страници"
|
||||
SITE_TITLE_HELP: "Подразбиращо се заглавие за вашият сайт, често се използва от темите"
|
||||
SITE_DEFAULT_LANG: "Език по подразбиране"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "Език по подразбиране, използван от <HTML> тага на темите"
|
||||
SITE_DEFAULT_LANG_HELP: "Език по подразбиране, използван от <HTML> тага на темите"
|
||||
DEFAULT_AUTHOR: "Подразбиращ се автор"
|
||||
DEFAULT_AUTHOR_HELP: "Име на автор по подразбиране, често използвано в теми или страници"
|
||||
DEFAULT_EMAIL: "Имейл по подразбиране"
|
||||
DEFAULT_EMAIL_HELP: "Имейл по подразбиране, използван в теми или страници"
|
||||
TAXONOMY_TYPES: "Видове таксономии"
|
||||
TAXONOMY_TYPES_HELP: "Типовете таксономия трябва да бъдат дефинирани тук, ако искате да ги използвате в страници"
|
||||
PAGE_SUMMARY: "Резюме на страницата"
|
||||
ENABLED: "Включен"
|
||||
ENABLED_HELP: "Разреши извлечение (извлечението връща същото съдържание, като в страницата)"
|
||||
'YES': "Да"
|
||||
'NO': "Не"
|
||||
SUMMARY_SIZE: "Размер на резюмето"
|
||||
SUMMARY_SIZE_HELP: "Брой знаци, които да бъдат използвани при създаването на резюме за страницата"
|
||||
FORMAT: "Формат"
|
||||
SHORT: "Къс"
|
||||
LONG: "Дълъг"
|
||||
DELIMITER: "Делител"
|
||||
DELIMITER_HELP: "Разделител на извлечението (по подразбиране '===')"
|
||||
METADATA: "Мета-данни"
|
||||
METADATA_HELP: "Ще бъдат показани метадата стойностите по подразбиране на всяка страница, освен ако не са отхвърлени от страницата"
|
||||
NAME: "Име"
|
||||
CONTENT: "Съдържание"
|
||||
SIZE: "Размер"
|
||||
ACTION: "Действие"
|
||||
REDIRECTS_AND_ROUTES: "Пренасочвания и пътища"
|
||||
CUSTOM_REDIRECTS: "Потребителски пренасочвания"
|
||||
CUSTOM_REDIRECTS_HELP: "маршрути за пренасочване към сдруга страница. Подмяна със стандартен Regex е валидна"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
|
||||
CUSTOM_ROUTES: "Потребителски пренасочвания"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
|
||||
FILE_STREAMS: "Потоци файлове"
|
||||
DEFAULT: "По подразбиране"
|
||||
PAGE_MEDIA: "Страница с медия"
|
||||
OPTIONS: "Опции"
|
||||
PUBLISHED: "Публикувано"
|
||||
PUBLISHED_HELP: "По подразбиране страницата се публикува, освен ако не е зададео published: false или publish_date е в бъдеще или unpublish_date е в миналото"
|
||||
DATE: "Дата"
|
||||
DATE_HELP: "Променливата за дата позволява да се зададе дата асоциирана със страницата."
|
||||
PUBLISHED_DATE: "Дата на публикуване"
|
||||
PUBLISHED_DATE_HELP: "Дата, на която автоматично ще се публикува."
|
||||
UNPUBLISHED_DATE: "Дата на непубликуване"
|
||||
UNPUBLISHED_DATE_HELP: "Може да зададе дата за автоматично непубликуване."
|
||||
ROBOTS: "Роботи"
|
||||
TAXONOMIES: "Таксономии"
|
||||
TAXONOMY: "Таксономия"
|
||||
ADVANCED: "Разширено"
|
||||
SETTINGS: "Настройки"
|
||||
FOLDER_NUMERIC_PREFIX: "Цифров префикс на папка"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Цифров префикс осигуряващ ръчно подреждане и по-добра видимост"
|
||||
FOLDER_NAME: "Име на папка"
|
||||
FOLDER_NAME_HELP: "Името на папката, която ще се съхрани във файлова система за тази страница"
|
||||
PARENT: "Родител"
|
||||
DEFAULT_OPTION_ROOT: "- Коренова папка -"
|
||||
DEFAULT_OPTION_SELECT: "- Избор -"
|
||||
DISPLAY_TEMPLATE: "Показване на шаблон"
|
||||
ORDERING: "Подреждане"
|
||||
PAGE_ORDER: "Подредба на страниците"
|
||||
OVERRIDES: "Замени"
|
||||
MENU: "Меню"
|
||||
MENU_HELP: "Стрингът, който ще се използва в меню. Ако не се зададе, ще се използва Title."
|
||||
SLUG: "Слъг"
|
||||
SLUG_HELP: "Слъг променливата Ви позволява да зададете конкретна порция от URL на страницата"
|
||||
SLUG_VALIDATE_MESSAGE: "Слъговете могат да съдържат само малки букви, цифри и тирета"
|
||||
PROCESS: "Обработване"
|
||||
PROCESS_HELP: "Контролирайте обработката на страниците. Може да бъде за отделна страница или глобално"
|
||||
DEFAULT_CHILD_TYPE: "Тип по подразбиране"
|
||||
USE_GLOBAL: "Използвай глобални"
|
||||
ROUTABLE: "Маршрутизируем"
|
||||
ROUTABLE_HELP: "Ако страницата е достъпна през URL"
|
||||
CACHING: "Създаване на временни файлове"
|
||||
VISIBLE: "Видим"
|
||||
VISIBLE_HELP: "Определя дали една страница е видима в навигацията."
|
||||
DISABLED: "Изключено"
|
||||
ITEMS: "Елементи"
|
||||
ORDER_BY: "Подреждане по"
|
||||
ORDER: "Подреждане"
|
||||
FOLDER: "Папка"
|
||||
ASCENDING: "Възходящо"
|
||||
DESCENDING: "Низходящо"
|
||||
PAGE_TITLE: "Заглавие на страницата"
|
||||
PAGE_TITLE_HELP: "Заглавието на страницата"
|
||||
PAGE: "Страница"
|
||||
FRONTMATTER: "Встъпление"
|
||||
FILENAME: "Име на файла"
|
||||
PARENT_PAGE: "Родителска страница"
|
||||
HOME_PAGE: "Начална страница"
|
||||
HOME_PAGE_HELP: "Страницата, която Grav ще използва по подразбиране за начална страница"
|
||||
DEFAULT_THEME: "Тема по подразбиране"
|
||||
DEFAULT_THEME_HELP: "Задаване на темата по подразбиране, която Grav ще използва (по подразбиране това е Antimatter)"
|
||||
TIMEZONE: "Часова зона"
|
||||
TIMEZONE_HELP: "Презаписване на времевата зона на сървъра"
|
||||
SHORT_DATE_FORMAT: "Кратък формат дата"
|
||||
SHORT_DATE_FORMAT_HELP: "Задай кратък формат дата, който може да се използва от темите"
|
||||
LONG_DATE_FORMAT: "Пълен формат дата"
|
||||
LONG_DATE_FORMAT_HELP: "Задай пълен формат дата, който може да се използва от темите"
|
||||
DEFAULT_ORDERING: "По подразбиране"
|
||||
DEFAULT_ORDERING_DEFAULT: "По подразбиране - според име на папка"
|
||||
DEFAULT_ORDERING_FOLDER: "Папка - според името на папката без префикс"
|
||||
DEFAULT_ORDERING_TITLE: "Заглавие - според заглавно поле в главата"
|
||||
DEFAULT_ORDERING_DATE: "Дата - според поле за дата в главата"
|
||||
DEFAULT_ORDER_DIRECTION: "Подреждане по подразбиране"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "Посоката на страниците в списък"
|
||||
DEFAULT_PAGE_COUNT: "Брой страници по подразбиране"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Максимален брой страници в списък по подразбиране"
|
||||
DATE_BASED_PUBLISHING: "Публикуване според датата"
|
||||
DATE_BASED_PUBLISHING_HELP: "Автоматично (не)публикувай постове според датата"
|
||||
EVENTS: "Събития"
|
||||
EVENTS_HELP: "Пускане или спиране на специфични събития. Спирането на някои събития може да счупи определени приставки"
|
||||
REDIRECT_DEFAULT_ROUTE: "Пренасочване на пътя по подразбиране"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Автоматично пренасочване към пътя по подразбиране на страницата"
|
||||
LANGUAGES: "Езици"
|
||||
SUPPORTED: "Поддържани"
|
||||
SUPPORTED_HELP: "Списък от двубуквени езикови кодове, отделени със запетая (пример 'bg,en,de')"
|
||||
HTTP_HEADERS: "HTTP заглавки"
|
||||
EXPIRES: "Изтича на"
|
||||
CACHE_CONTROL: "HTTP кеш-контрол"
|
||||
LAST_MODIFIED: "Последна промяна"
|
||||
CACHE_CHECK_METHOD: "Мотод проверка на кеша"
|
||||
CACHE_DRIVER: "Кеш драйвър"
|
||||
CACHE_PREFIX: "Кеш представка"
|
||||
CACHE_PURGE: "Изтриване на стр кеш"
|
||||
LIFETIME: "Продължителност на живот"
|
||||
GZIP_COMPRESSION: "Gzip компресия"
|
||||
GZIP_COMPRESSION_HELP: "Разреши GZip компресия на Grav страницата, за оптимизация."
|
||||
CSS_PIPELINE: "CSS pipeline"
|
||||
JAVASCRIPT_PIPELINE: "JavaScript pipeline"
|
||||
LOG_HANDLER: "Обработка на лога"
|
||||
DEBUGGER: "Дибъгър"
|
||||
SESSION: "Сесия"
|
||||
CURRENT: "Текущ"
|
||||
SAVE_AS: "Запази като"
|
||||
AND: "и"
|
||||
UPDATE_AVAILABLE: "Налична актуализация"
|
||||
FULLY_UPDATED: "Напълно обновен"
|
||||
SAVE_LOCATION: "Местоположение за запис"
|
||||
IGNORE_HIDDEN_HELP: "Игнорирай всички файлове и папки, които започват с точка"
|
||||
WRAPPED_SITE: "Опаковани сайт"
|
||||
CONFIGURATION: "Настройки"
|
||||
TIMEOUT: "Таймаут"
|
||||
DASHBOARD: "Контролен панел"
|
||||
4
config/www/user/plugins/admin/languages/bn.yaml
Normal file
4
config/www/user/plugins/admin/languages/bn.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
LOGIN_BTN: "লগ ইন"
|
||||
LOGIN_BTN_FORGOT: "ভুলে গেছি"
|
||||
591
config/www/user/plugins/admin/languages/br.yaml
Normal file
591
config/www/user/plugins/admin/languages/br.yaml
Normal file
@@ -0,0 +1,591 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_BETA_MSG: "Un ermaeziadenn beta an hini eo! Arverit en endro produadur gant evezh..."
|
||||
ADMIN_REPORT_ISSUE: "Kavet hoc'h eus ur gudenn? Danevellit anezhi war Github."
|
||||
LOGIN_BTN: "Anv arveriad"
|
||||
LOGIN_BTN_FORGOT: "Ankouaet"
|
||||
LOGIN_BTN_RESET: "Adderaouekaat ar ger-tremen"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Kas an ditouroù adderaouekaat"
|
||||
LOGIN_BTN_CLEAR: "Skarzhañ ar furmskrid"
|
||||
LOGIN_BTN_CREATE_USER: "Krouiñ an arveriad"
|
||||
LOGIN_LOGGED_IN: "Kennasket oc'h gant berzh"
|
||||
LOGIN_FAILED: "C'hwitadenn war ar c'hennask"
|
||||
LOGGED_OUT: "Digennasket oc'h"
|
||||
RESET_NEW_PASSWORD: "Enankit ur ger-tremen nevez …"
|
||||
RESET_LINK_EXPIRED: "Diamzeret eo an ere adderaouekaat, klaskit en-dro"
|
||||
RESET_PASSWORD_RESET: "Adderaouekaet eo bet ar ger-tremen"
|
||||
RESET_INVALID_LINK: "Ere adderaouekaat didalvoudek, klaskit en-dro"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Kaset eo bet an ditouroù da adderaouekaat ho ker-tremen d'ho chmolec'h postel"
|
||||
FORGOT_FAILED_TO_EMAIL: "C'hwitadenn en ur gas an ditouroù, klaskit en-dro diwezhatoc'h"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "N'haller ket adderaouekaat ar ger-tremen evit %s, chomlec'h postel ebet arventennet"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "N'eus ket eus an arveriad gant an anv <b>%s</b>"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "N'haller ket adderaouekaat ar ger-tremen. N'eo ket kefluniet al lec'hienn evit kas posteloù"
|
||||
FORGOT_EMAIL_SUBJECT: "%s Goulenn adderaouekaat ar ger-tremen"
|
||||
FORGOT_EMAIL_BODY: "<h1>Adderaouekaat ar ger-tremen/h1><p>%1$s,</p><p>Graet eo bet un azgoulenn war <b>%4$s</b> evit adderaouekaat ho ker-tremen.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Klikit amañ da adderaouekaat ho ker-tremen</a><br /><br /></p><p>Gallout a rit ivez eilañ an URL da heul er varrenn chomlec'h en ho merdeer:</p> <p>%2$s</p><p><br />A galon,<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Ardeiñ ar pajennoù"
|
||||
PAGES: "Pajennoù"
|
||||
PLUGINS: "Enlugelladoù"
|
||||
PLUGIN: "Enlugellad"
|
||||
THEMES: "Neuzioù"
|
||||
LOGOUT: "Digennaskañ"
|
||||
BACK: "Distreiñ"
|
||||
NEXT: "War-lerc'h"
|
||||
PREVIOUS: "Diaraog"
|
||||
ADD_PAGE: "Ouzhpennañ ur bajenn"
|
||||
MOVE: "Dilec'hiañ"
|
||||
DELETE: "Dilemel"
|
||||
VIEW: "Gwel"
|
||||
SAVE: "Enrollañ"
|
||||
NORMAL: "Reoliek"
|
||||
EXPERT: "Kemplezhoc'h"
|
||||
EXPAND_ALL: "Astenn an holl"
|
||||
COLLAPSE_ALL: "Bihanaat an holl"
|
||||
ERROR: "Fazi"
|
||||
CLOSE: "Serriñ"
|
||||
CANCEL: "Nullañ"
|
||||
CONTINUE: "Kenderc'hel"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Kadarnadur azgoulennet"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Kemmoù dinoet"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Kemmoù dienrollet a zo. Sur oc'h e fell deoc'h kuitaat hep enrollañ?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Kadarnadur azgoulennet"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Sur oc'h e fell deoc'h dilemel ar restr-mañ? N'haller ket dizober ar gwered-mañ."
|
||||
ADD_FILTERS: "Ouzhpennañ siloù"
|
||||
SEARCH_PAGES: "Klask pajennoù"
|
||||
VERSION: "Handelv"
|
||||
WAS_MADE_WITH: "Savet eo bet gant"
|
||||
BY: "Gant"
|
||||
UPDATE_THEME: "Hizivaat an neuz"
|
||||
UPDATE_PLUGIN: "Hizivaat an enlugellad"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "an neuz-mañ a zo hegerz"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "an enlugellad-mañ a zo hegerz"
|
||||
AUTHOR: "Aozer"
|
||||
HOMEPAGE: "Pennbajenn"
|
||||
DEMO: "Tañva"
|
||||
BUG_TRACKER: "Heulier beugoù"
|
||||
KEYWORDS: "Gerioù-alc'hwez"
|
||||
LICENSE: "Lañvaz"
|
||||
DESCRIPTION: "Deskrivadur"
|
||||
README: "Skoazell"
|
||||
REMOVE_THEME: "Dilemel an neuz"
|
||||
INSTALL_THEME: "Staliañ an neuz"
|
||||
THEME: "Neuz"
|
||||
BACK_TO_THEMES: "Distreiñ d'an neuzioù"
|
||||
BACK_TO_PLUGINS: "Distreiñ d'an enlugelladoù"
|
||||
CHECK_FOR_UPDATES: "Klask hizivadennoù"
|
||||
ADD: "Ouzhpenañ"
|
||||
CLEAR_CACHE: "Skarzhañ ar c'hrubuilh"
|
||||
CLEAR_CACHE_ALL_CACHE: "Ar c'hrubuilh a-bezh"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Loazioù nemetken"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Skeudennoù nemetken"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Krubuilh nemetken"
|
||||
CLEAR_CACHE_TMP_ONLY: "Padennek hepken"
|
||||
UPDATES_AVAILABLE: "Hizivadennoù hegerz"
|
||||
DAYS: "Devezhioù"
|
||||
UPDATE: "Hizivadenn"
|
||||
BACKUP: "Gwared"
|
||||
STATISTICS: "Stadegoù"
|
||||
TODAY: "Hiziv"
|
||||
WEEK: "Sizhun"
|
||||
MONTH: "Miz"
|
||||
LATEST_PAGE_UPDATES: "Hizivadennoù diwezhañ ar bajenn"
|
||||
MAINTENANCE: "Trezalc'h"
|
||||
UPDATED: "Hizivaet"
|
||||
MON: "Lun"
|
||||
TUE: "Meu"
|
||||
WED: "Mer"
|
||||
THU: "Yao"
|
||||
FRI: "Gwe"
|
||||
SAT: "Sad"
|
||||
SUN: "Sul"
|
||||
COPY: "Eilañ"
|
||||
EDIT: "Kemmañ"
|
||||
CREATE: "Krouiñ"
|
||||
GRAV_ADMIN: "Merour Grav"
|
||||
GRAV_OFFICIAL_PLUGIN: "Enlugellad Kefridiel Grav"
|
||||
GRAV_OFFICIAL_THEME: "Neuz Kefridiel Grav"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Gant un ere arouezus eo lakaet an enlugellad. Ne vo ket dinoet an hizivadennoù."
|
||||
THEME_SYMBOLICALLY_LINKED: "Gant un ere arouezus eo lakaet an neuz. Ne vo ket dinoet an hizivadennoù"
|
||||
REMOVE_PLUGIN: "Dilemel an enlugellad"
|
||||
INSTALL_PLUGIN: "Staliañ an enlugellad"
|
||||
AVAILABLE: "Hegerz"
|
||||
INSTALLED: "Staliet"
|
||||
INSTALL: "Staliañ"
|
||||
ACTIVE_THEME: "Neuz oberiant"
|
||||
SWITCHING_TO: "Kemmañ da"
|
||||
SWITCHING_TO_DESCRIPTION: "En ur gemmañ d'un neuz disheñvel n'eus gwarant ebet e vo skoret an holl frammoù pajenn, ar pezh a zegasfe fazioù en ur gargañ ar pajennoù-mañ."
|
||||
SWITCHING_TO_CONFIRMATION: "Fellout a ra deoc'h kenderc'hel ha kemmañ an neuz"
|
||||
CREATE_NEW_USER: "Krouiñ un arveriad nevez"
|
||||
REMOVE_USER: "Dilemel an arveriad"
|
||||
ACCESS_DENIED: "Haeziñ nac'het"
|
||||
ACCOUNT_NOT_ADMIN: "n'hoc'h eus ket an aotreoù a-zere"
|
||||
PHP_INFO: "Titouroù PHP"
|
||||
INSTALLER: "Stalier"
|
||||
AVAILABLE_THEMES: "Neuzioù hegerz"
|
||||
AVAILABLE_PLUGINS: "Enlugelladoù hegerz"
|
||||
INSTALLED_THEMES: "Neuzioù staliet"
|
||||
INSTALLED_PLUGINS: "Enlugelladoù staliet"
|
||||
BROWSE_ERROR_LOGS: "Furchal er c'herzhlevr fazioù"
|
||||
SITE: "Lec'hienn"
|
||||
INFO: "Titouroù"
|
||||
SYSTEM: "Reizhiad"
|
||||
USER: "Arveriad"
|
||||
ADD_ACCOUNT: "Ouzhpennañ ur gont"
|
||||
SWITCH_LANGUAGE: "Kemmañ ar yezh"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Gweredekaet an enlugellad gant berzh"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Diweredekaet an enlugellad gant berzh"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Kemmet an neuz dre ziouer gant berzh"
|
||||
INSTALLATION_FAILED: "C'hwitadenn war ar staliadur"
|
||||
INSTALLATION_SUCCESSFUL: "Berzh war ar staliadur"
|
||||
UNINSTALL_FAILED: "C'hwitadenn war an distaliadur"
|
||||
UNINSTALL_SUCCESSFUL: "Berzh war an distaliadur"
|
||||
SUCCESSFULLY_SAVED: "Enrollet gant berzh"
|
||||
SUCCESSFULLY_COPIED: "Eilet gant berzh"
|
||||
REORDERING_WAS_SUCCESSFUL: "Adurzhiet gant berzh"
|
||||
SUCCESSFULLY_DELETED: "Dilamet gant berzh"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Kemmet ar yezh gant berzh"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "N'ho peus ket trawalc'h a aotreoù evit ar gwered"
|
||||
CACHE_CLEARED: "Skarzhet ar c'hrubuilh"
|
||||
METHOD: "Hentenn"
|
||||
ERROR_CLEARING_CACHE: "Fazi en ur skarzhañ ar c'hrubuilh"
|
||||
AN_ERROR_OCCURRED: "Degouezhet ez eus bet ur fazi"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Prest eo ho kwared da vezañ pellgarget"
|
||||
DOWNLOAD_BACKUP: "Pellgargañ ar gwared"
|
||||
PAGES_FILTERED: "Pajennoù silet"
|
||||
NO_PAGE_FOUND: "Pajenn ebet kavet"
|
||||
INVALID_PARAMETERS: "Arventennoù didalvoudek"
|
||||
NO_FILES_SENT: "Restr ebet kaset"
|
||||
UNKNOWN_ERRORS: "Fazioù dianav"
|
||||
UNSUPPORTED_FILE_TYPE: "Doare restr amskor"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "C'hwitadenn en ur zilec'hiañ ar restr pellgaset."
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Restr pellgaset gant berzh"
|
||||
FILE_DELETED: "Restr dilamet"
|
||||
FILE_COULD_NOT_BE_DELETED: "N'haller ket dilemel ar restr"
|
||||
FILE_NOT_FOUND: "N'eus ket bet kavet ar restr"
|
||||
NO_FILE_FOUND: "Restr ebet kavet"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Hizivaet eo bet Grav da"
|
||||
GRAV_UPDATE_FAILED: "C'hwitadenn war hizivadenn Grav"
|
||||
EVERYTHING_UPDATED: "Hizivaet pep tra"
|
||||
UPDATES_FAILED: "C'hwitadenn war a hizivadennoù"
|
||||
AVATAR_BY: "Avatar gant"
|
||||
LAST_BACKUP: "Gwared diwezhañ"
|
||||
FULL_NAME: "Anv klok"
|
||||
USERNAME: "Anv arveriad"
|
||||
EMAIL: "Chomlec'h postel"
|
||||
PASSWORD: "Ger-tremen"
|
||||
PASSWORD_CONFIRM: "Kadarnat ar ger-tremen"
|
||||
TITLE: "Titl"
|
||||
ACCOUNT: "Kont"
|
||||
EMAIL_VALIDATION_MESSAGE: "Ret eo reiñ ur chomlec'h postel talvoudek"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Ret eo d'ar ger-tremen enderc'hel ur niverenn, ul lizherenn vras hag ul lizherenn vihan hag 8 arouezenn d'an nebeutañ"
|
||||
LANGUAGE: "Yezh"
|
||||
LANGUAGE_HELP: "Dibabit ar yezh"
|
||||
MEDIA: "Media"
|
||||
DEFAULTS: "Dre ziouer"
|
||||
SITE_TITLE: "Titl al lec'hienn"
|
||||
SITE_TITLE_PLACEHOLDER: "Titl ledan al lec'hienn"
|
||||
SITE_TITLE_HELP: "Titl dre ziouer ho lec'hienn, arveret en neuzioù"
|
||||
SITE_DEFAULT_LANG: "Yezh defot"
|
||||
DEFAULT_AUTHOR: "Aozer dre ziouer"
|
||||
DEFAULT_AUTHOR_HELP: "Un anv aozer dre ziouer, arveret en neuzioù pe er pajennoù"
|
||||
DEFAULT_EMAIL: "Chomlec'h postel dre ziouer"
|
||||
DEFAULT_EMAIL_HELP: "Ur chomlec'h postel dre ziouer, arveret en neuze pe er pajennoù"
|
||||
TAXONOMY_TYPES: "Doareoù rummadoù"
|
||||
TAXONOMY_TYPES_HELP: "An doareoù rummadoù a rank bezañ erspizet amañ ma fell deoc'h arverañ anezho er pajennoù"
|
||||
PAGE_SUMMARY: "Berradenn ar bajenn"
|
||||
ENABLED: "Gweredekaet"
|
||||
ENABLED_HELP: "Gweredekaat berradenn ar bajenn (ar verradenn a zistro an hevelep tra hag endalc'had ar bajenn)"
|
||||
'YES': "Ya"
|
||||
'NO': "Ket"
|
||||
SUMMARY_SIZE: "Ment ar verradenn"
|
||||
SUMMARY_SIZE_HELP: "An niverenn a arouezenn da arverañ evel berradenn ur bajenn"
|
||||
FORMAT: "Mentrezh"
|
||||
FORMAT_HELP: "berr = arverañ degouezh kentañ an disranner pe ment; hir = laosket e vo an disranner berradenn a-gostez"
|
||||
SHORT: "Berr"
|
||||
LONG: "Hir"
|
||||
DELIMITER: "Disranner"
|
||||
DELIMITER_HELP: "Disranner ar verradenn (diouer '===')"
|
||||
METADATA: "Metaroadennoù"
|
||||
METADATA_HELP: "Skrammet e vo ar gwerzhioù metaroadennoù dre ziouer war an holl bajennoù war-bouez m'eo flastret gant ar bajenn"
|
||||
NAME: "Anv"
|
||||
CONTENT: "Endalc'had"
|
||||
REDIRECTS_AND_ROUTES: "Adheñchañ ha treugoù"
|
||||
CUSTOM_REDIRECTS: "Adheñchañ personelaet"
|
||||
CUSTOM_REDIRECTS_HELP: "treugoù da adheñchañ davet pajennoù all. Talvoudek eo an amsaviñ regex"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/un/anv"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/un/adeñchañ"
|
||||
CUSTOM_ROUTES: "Treugoù personelaet"
|
||||
CUSTOM_ROUTES_HELP: "treugoù da adheñchañ davet pajennoù all. Talvoudek eo an amsaviñ Regex"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ho/anv"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ho/treug"
|
||||
FILE_STREAMS: "Lanvioù restroù"
|
||||
DEFAULT: "Dre ziouer"
|
||||
PAGE_MEDIA: "Media ar bajenn"
|
||||
OPTIONS: "Dibarzhioù"
|
||||
PUBLISHED: "Embannet"
|
||||
PUBLISHED_HELP: "Dre ziouer eo embannet ur bajenn war-bouez m'eo lakaet da \"Embannet: ket\" pe dre un deiziad embann en dazont, pe un deiziad diembannañ tremenet"
|
||||
DATE: "Deiziad"
|
||||
DATE_HELP: "Ar vaezienn deiziad a laosk ac'hanoc'h da arventennañ un deiziad liammet gant ar bajenn."
|
||||
PUBLISHED_DATE: "Deiziad embann"
|
||||
PUBLISHED_DATE_HELP: "Gallout a rit reiñ un deiziad da embann ent emgefreek."
|
||||
UNPUBLISHED_DATE: "Deiziad diembannañ"
|
||||
UNPUBLISHED_DATE_HELP: "Gallout a rit reiñ un deiziad evit diembannañ ent emgefreek."
|
||||
ROBOTS: "Robotoù"
|
||||
TAXONOMIES: "Rummadoù"
|
||||
TAXONOMY: "Rummad"
|
||||
ADVANCED: "Kempleshoc'h"
|
||||
SETTINGS: "Arventennoù"
|
||||
FOLDER_NUMERIC_PREFIX: "Rakger niverel an teuliad"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Rakgerioù niverel evit urzhiañ gant an dorn ha emplegañ ar gwelusted"
|
||||
FOLDER_NAME: "Anv an teuliad"
|
||||
FOLDER_NAME_HELP: "Anv an teuliad a vo kadavet er reizhiad restroù evit ar bajenn"
|
||||
PARENT: "Kar"
|
||||
DEFAULT_OPTION_ROOT: "- Gwrizienn -"
|
||||
DEFAULT_OPTION_SELECT: "- Diuzañ -"
|
||||
DISPLAY_TEMPLATE: "Skrammañ ar patrom"
|
||||
DISPLAY_TEMPLATE_HELP: "An doare pajenn a ziviz peseurt patrom twig a zeznaouo ar bajenn"
|
||||
ORDERING: "Urzh"
|
||||
PAGE_ORDER: "Urzh ar pajennoù"
|
||||
OVERRIDES: "Flastrañ"
|
||||
MENU: "Lañser"
|
||||
MENU_HELP: "Ar chadennoù da arverañ el lañser. Ma n'eo ket arventennet, Titl a vo arveret."
|
||||
SLUG: "Slug"
|
||||
SLUG_HELP: "An argemenn slug a aotren ac'hanoc'h da arventennañ URL lodenn ar bajenn"
|
||||
SLUG_VALIDATE_MESSAGE: "Lizherennoù bihan, sifroù ha tiredoù a c'hall bezañ er slug hepken"
|
||||
PROCESS: "Keweriañ"
|
||||
PROCESS_HELP: "Reoliañ penaos eo keweriet ar pajennoù. Gallout a ra bezañ lakaet dre bajenn kentoc'h eget en un doare hollek"
|
||||
DEFAULT_CHILD_TYPE: "Doare bugel dre ziouer"
|
||||
USE_GLOBAL: "Arverañ Hollek"
|
||||
ROUTABLE: "Treugus"
|
||||
ROUTABLE_HELP: "M'eo haezadus ar bajenn dre un URL"
|
||||
CACHING: "Krubuilhiñ"
|
||||
VISIBLE: "Gwelus"
|
||||
VISIBLE_HELP: "Despizañ a ra gwelusted ur bajenn er merdeiñ."
|
||||
DISABLED: "Diweredekaet"
|
||||
ITEMS: "Ergorennoù"
|
||||
ORDER_BY: "Urzhiañ dre"
|
||||
ORDER: "Urzh"
|
||||
FOLDER: "Teuliad"
|
||||
ASCENDING: "War-gresk"
|
||||
DESCENDING: "War-zigresk"
|
||||
PAGE_TITLE: "Titl ar bajenn"
|
||||
PAGE_TITLE_HELP: "Titl ar bajenn"
|
||||
PAGE: "Pajenn"
|
||||
FRONTMATTER: "Frontmatter"
|
||||
FILENAME: "Anv ar restr"
|
||||
PARENT_PAGE: "Pajenn gar"
|
||||
HOME_PAGE: "Pennbajenn"
|
||||
HOME_PAGE_HELP: "Pajenn arveret gant Grav evel pajenn degemer dre ziouer"
|
||||
DEFAULT_THEME: "Neuz dre ziouer"
|
||||
DEFAULT_THEME_HELP: "Arventennañ an neuz arveret gant Grav dre ziouer (Antimatter dre ziouer)"
|
||||
TIMEZONE: "Gwerzhid-eur"
|
||||
TIMEZONE_HELP: "Flastrañ gwerzhid-eur dre ziouer an dafariad"
|
||||
SHORT_DATE_FORMAT: "Mentrezh skrammañ an deiziad berr"
|
||||
SHORT_DATE_FORMAT_HELP: "Arventennan ar mentrezh deiziad berr da arverañ gant an neuzioù"
|
||||
LONG_DATE_FORMAT: "Mentrezh deiziad hir"
|
||||
LONG_DATE_FORMAT_HELP: "Arventennañ ar mentrezh deiziad hir a vo arveret en neuzioù"
|
||||
DEFAULT_ORDERING: "Urzh dre ziouer"
|
||||
DEFAULT_ORDERING_HELP: "Pajennoù er roll a vo skrammet en urzh-mañ war-bouez m'eo flastret"
|
||||
DEFAULT_ORDERING_DEFAULT: "Dre ziouer - diazezet war anv an teuliad"
|
||||
DEFAULT_ORDERING_FOLDER: "Teuliad - diazezet war anv an teuliad hep rakger"
|
||||
DEFAULT_ORDERING_TITLE: "Titl - diazezet war vaezienn ditl an talbenn"
|
||||
DEFAULT_ORDERING_DATE: "Deiziad - diazezet war vaezienn deiziad an talbenn"
|
||||
DEFAULT_ORDER_DIRECTION: "Tu an urzh dre ziouer"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "Tu ar pajennoù er roll"
|
||||
DEFAULT_PAGE_COUNT: "Niver a bajennoù dre ziouer"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Niver a bajennoù en ur roll d'ar muiañ"
|
||||
DATE_BASED_PUBLISHING: "Embannadenn diazezet war un deiziad"
|
||||
DATE_BASED_PUBLISHING_HELP: "(Di)embann pennadoù ent emgefreek hervez o deiziad"
|
||||
EVENTS: "Darvoudoù"
|
||||
EVENTS_HELP: "(Di)weredekaat darvoudoù resis. Diweredekaat anezho a c'hall terriñ enlugelladoù"
|
||||
REDIRECT_DEFAULT_ROUTE: "Adheñchañ an treug dre ziouer"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Adheñchañ ent emgefreek d'un treug pajenn dre ziouer"
|
||||
LANGUAGES: "Yezhoù"
|
||||
SUPPORTED: "Skoret"
|
||||
SUPPORTED_HELP: "Roll bonegoù yezh 2 lizherenn ennañ disrannet gant skejoù (skouer: 'br, cy, en')"
|
||||
TRANSLATIONS_FALLBACK: "Troidigezh dre ziouer"
|
||||
TRANSLATIONS_FALLBACK_HELP: "Arverañ un droidigezh all ma n'eus ket eus ar tezh oberiant"
|
||||
ACTIVE_LANGUAGE_IN_SESSION: "Yezhoù oberiant en estez"
|
||||
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Kadaviñ ar yezh oberiant en estez"
|
||||
HTTP_HEADERS: "Talbennoù HTTP"
|
||||
EXPIRES: "Diamzer"
|
||||
EXPIRES_HELP: "Arventennañ an talbenn diamzeriñ e eilennoù."
|
||||
LAST_MODIFIED: "Kemmet da ziwezhañ"
|
||||
LAST_MODIFIED_HELP: "Arventennañ an talbenn kemmet da ziwezhañ a c'hall skoazell da wellaat ar proksi ha krubuilh ar merdeer"
|
||||
ETAG: "ETag"
|
||||
ETAG_HELP: "Arventennañ an talbenn etag evit skoazell da c'houzout peur eo bet kemmet ur bajenn"
|
||||
VARY_ACCEPT_ENCODING: "Vary accept encoding"
|
||||
VARY_ACCEPT_ENCODING_HELP: "Arventennañ a ra an talbenn `Vary: Accept Encoding` evit skoazell gant ar proksi hag ar c'hrubuilh CDN"
|
||||
MARKDOWN_EXTRA_HELP: "Gweredekaat ar skor dre ziouer evit Markdown Ectra - https://michelf.ca/projects/php-markdown/extra/"
|
||||
AUTO_LINE_BREAKS: "Tremen d'al linenn ent emgefreek"
|
||||
AUTO_LINE_BREAKS_HELP: "Gweredekaat skor tremen al linenn ent emgefreek e Markdown"
|
||||
AUTO_URL_LINKS: "Ereoù URL emgefreek"
|
||||
AUTO_URL_LINKS_HELP: "Gweredekaat amdroadur emgefreek an URLoù da ereoù HTML"
|
||||
ESCAPE_MARKUP: "Gwareziñ an HTML"
|
||||
ESCAPE_MARKUP_HELP: "Gwareziñ ar c'hlavioù e elfennoù HTML"
|
||||
CACHING_HELP: "Trec'haoler hollek evit (di)weredekaat krubuilh Grav"
|
||||
CACHE_CHECK_METHOD: "Hentenn gwiriekaat ar c'hrubuilh"
|
||||
CACHE_CHECK_METHOD_HELP: "Dibab an hentenn arveret gant Grav evit gwiriekaat m'eo bet kemmer ar restoù pajenn."
|
||||
CACHE_DRIVER: "Sturier Krubuilh"
|
||||
CACHE_DRIVER_HELP: "Dibab pe sturier krubuilh a zo arveret Grav. 'Dinoiñ emgefreek' a glask kavout pe zoare a zo an hini gwellañ"
|
||||
CACHE_PREFIX: "Rakger ar c'hrubuilh"
|
||||
CACHE_PREFIX_HELP: "Lodenn naoudi an alc'hwez Grav. Na gemmit anezhi ma n'ouzit ket petra rit."
|
||||
CACHE_PREFIX_PLACEHOLDER: "Deveret eus an URL diazez (flastret en un enkañ ur chadenn dargouezhek)"
|
||||
LIFETIME: "Padelezh buhez"
|
||||
LIFETIME_HELP: "Arventennañ padelezh ar c'hrubuilh e eilennoù. 0 = anvevenn"
|
||||
GZIP_COMPRESSION: "Koazhadur Gzip"
|
||||
GZIP_COMPRESSION_HELP: "Gweredekaat koazhadur Gzip ar bajenn Grav evit kreskiñ an digonusted."
|
||||
TWIG_TEMPLATING: "Patromiñ Twig"
|
||||
TWIG_CACHING: "Krubuilh Twig"
|
||||
TWIG_CACHING_HELP: "Reoliañ wikefre krubuilh Twig. Laoskit gweredekaet evit an digonusted gwellañ."
|
||||
TWIG_DEBUG: "Diveugañ Twig"
|
||||
TWIG_DEBUG_HELP: "Aotren an dibarzh evit chom hep kargañ an askouezh diveugañ Twig"
|
||||
DETECT_CHANGES: "Dinoiñ ar c'hemmoù"
|
||||
DETECT_CHANGES_HELP: "Adkempunet e vo krubuilh Twig ent emgefreek ma vez dinoet kemmoù er patromoù Twig"
|
||||
AUTOESCAPE_VARIABLES: "Gwareziñ an argemennoù ent emgefreek"
|
||||
AUTOESCAPE_VARIABLES_HELP: "Gwareziñ an holl argemennoù ent emgefreek. Moarvat e torro ho lec'hienn"
|
||||
ASSETS: "Madoù"
|
||||
CSS_PIPELINE: "Arrevellañ CSS"
|
||||
CSS_PIPELINE_HELP: "Arrevellañ ar CSS a zo unvanadur meur a loaz CSS en ur restr hepken"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS: "Ebarzhiñ restroù estren en arrevellañ CSS"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "URLoù diavaez a zo gant daveoù restroù daveel a-wechoù ha ne rankont ket bezañ arrevellet"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES: "Deoueziñ an arrevellañ CSS da gentañ"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Deoueziñ an arrevellañ CSS a-raok kement dave CSS all ha n'int ket enkorfet"
|
||||
CSS_MINIFY: "Bihanadur CSS"
|
||||
CSS_MINIFY_HELP: "Bihanaat ar CSS e-pad an arrevellañ"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE: "Amsaviñ bihanadur ar CSS Windows"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Amsaviñ ar bihanadur evit savennoù Windows. Faos dre ziouer abalamour da ThreadStackSize"
|
||||
CSS_REWRITE: "Adskrivañ CSS"
|
||||
CSS_REWRITE_HELP: "Adskrivañ kement URL daveel CSS e-pad an arrevellañ"
|
||||
JAVASCRIPT_PIPELINE: "Arrevellañ Javascript"
|
||||
JAVASCRIPT_PIPELINE_HELP: "An arrevellañ JS a zo unvanadur meur a restr JS en ur restr hepken"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Enkorfañ ar JS diavaez evit an arrevellañ"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Urloù diavaez o deus daveoù restroù daveel a-wechoù ha ne rankont ket bezañ arrevellet"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Arrevellañ JS da gentañ"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Deoueziñ an arrevellañ JS a-raok kement dave JS all ha n'int ket enkorfet"
|
||||
JAVASCRIPT_MINIFY: "Bihanat ar javascript"
|
||||
JAVASCRIPT_MINIFY_HELP: "Bihanaat ar JS e-pad an arrevellañ"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS: "Gweredekaat ar boneg-amzer war al loazioù"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Gweredekaat bonegoù-amzer al loazioù"
|
||||
COLLECTIONS: "Dastumadegoù"
|
||||
ERROR_HANDLER: "Dornataour fazioù"
|
||||
DISPLAY_ERRORS: "Skrammañ ar fazioù"
|
||||
DISPLAY_ERRORS_HELP: "Skrammañ ur bajenn fazi gant munudoù"
|
||||
LOG_ERRORS: "Kerzhlevr ar fazioù"
|
||||
LOG_ERRORS_HELP: "Lakaat kerzhlevr ar fazioù en teuliad /logs"
|
||||
DEBUGGER: "Diveuger"
|
||||
DEBUGGER_HELP: "Gweredekaat diveuger Grav hag an arventennoù da heul"
|
||||
DEBUG_TWIG: "Diveugañ Twig"
|
||||
DEBUG_TWIG_HELP: "Gweredekaat diveugañ ar patromoù Twig"
|
||||
SHUTDOWN_CLOSE_CONNECTION: "Shutdown a serr ar c'hennask"
|
||||
SHUTDOWN_CLOSE_CONNECTION_HELP: "Serriñ ar c'hennask a-raok gervel onShutdown(). 'false' evit diveugañ"
|
||||
DEFAULT_IMAGE_QUALITY: "Perzhded skeudenn dre ziouer"
|
||||
DEFAULT_IMAGE_QUALITY_HELP: "Perzhded skeudenn dre ziouer da arverañ e-pad adstandilhonañ ar skeudennoù (85%)"
|
||||
CACHE_ALL: "Lakaat an holl skeudennoù er c'hrubuilh"
|
||||
CACHE_ALL_HELP: "Lakaat an holl skeudennoù da dremen dre reizhiad krubuilh Grav zoken ma n'o deus dornatadur media ebet"
|
||||
IMAGES_DEBUG: "Rouedigell diveugañ ar skeudenn"
|
||||
IMAGES_DEBUG_HELP: "Diskouez un diflugell a-us d'ar skeudennoù a ziskouez an donder piksel pa labourer war Retina da skouer"
|
||||
UPLOAD_LIMIT: "Bevenn ment ar restroù da bellgas"
|
||||
UPLOAD_LIMIT_HELP: "Lakaat ar ment restroù uhelañ e eizhbitoù (0 a zo anvevenn)"
|
||||
ENABLE_MEDIA_TIMESTAMP: "Gweredekaat ar boneg-amzer war ar media"
|
||||
ENABLE_MEDIA_TIMESTAMP_HELP: "Ouzhpennañ ur boneg-amzer diazezet war an deiziad kemmadur evit pep elfenn media"
|
||||
SESSION: "Estez"
|
||||
SESSION_ENABLED_HELP: "Gweredekaat skor an estez evit Grav"
|
||||
SESSION_NAME_HELP: "Un naoudi arveret da stummañ anv toupin an estez"
|
||||
ABSOLUTE_URLS: "URL dizave"
|
||||
ABSOLUTE_URLS_HELP: "URLoù dizave pe daveel evit 'base_url'"
|
||||
PARAMETER_SEPARATOR: "Disranner arventenn"
|
||||
PARAMETER_SEPARATOR_HELP: "An disranner evit an arventennoù tremenet a c'hall bezañ kemmet evit Apache war Windows"
|
||||
TASK_COMPLETED: "Trevell echuet"
|
||||
EVERYTHING_UP_TO_DATE: "Pep tra a zo hizivaet"
|
||||
UPDATES_ARE_AVAILABLE: "hizivadennoù hegerz"
|
||||
IS_AVAILABLE_FOR_UPDATE: "a zo gant un hizivadenn hegerz"
|
||||
IS_NOW_AVAILABLE: "a zo hegerz"
|
||||
CURRENT: "Bremanel"
|
||||
UPDATE_GRAV_NOW: "Hizivaat Grav bremañ"
|
||||
GRAV_SYMBOLICALLY_LINKED: "Gant un ere arouezel eo staliet Grav. Dihegerz eo an hizivadenn"
|
||||
UPDATING_PLEASE_WAIT: "Oc'h hizivaat... gortozit, emañ o pellgargañ"
|
||||
OF_THIS: "eus an"
|
||||
OF_YOUR: "eus ho"
|
||||
HAVE_AN_UPDATE_AVAILABLE: "en deus un hizivadenn hegerz"
|
||||
SAVE_AS: "Enrollañ evel"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sur oc'h e fell deoc'h dilemel ar bajenn-mañ hag holl he bugale? M'eo troet ar bajenn en ur yezh all e vo miret an troidigezhioù a rankout a reot o dilemel en un doare distag. E mod all e vo dilamet teuliad ar bajenn gant an is-pajennoù. N'haller ket dizober ar gwered-mañ."
|
||||
AND: "ha"
|
||||
UPDATE_AVAILABLE: "Hizivadenn hegerz"
|
||||
METADATA_KEY: "Alc'hwez (sk. 'Gerioù-alc'hwez')"
|
||||
METADATA_VALUE: "Gwerzh (sk. 'Blog, Grav')"
|
||||
USERNAME_HELP: "Etre 3 ha 16 arouezenn e rank an anv arveriad bezañ o kontañ al lizherennoù bihan, an niverennoù, an islinennoù hag ar barrennigoù. N'eo ket aotreet al lizherennoù bras, an esaouennoù hag an arouezennoù arbennik"
|
||||
FULLY_UPDATED: "Hizivaet"
|
||||
SAVE_LOCATION: "Lec'hiadur enrollañ"
|
||||
PAGE_FILE: "Patrom pajenn"
|
||||
PAGE_FILE_HELP: "Anv restr patrom ar bajenn, ha patrom skrammañ ar bajenn dre ziouer"
|
||||
NO_USER_ACCOUNTS: "Kont arveriad ebet kavet, krouit unan da gentañ..."
|
||||
REDIRECT_TRAILING_SLASH: "Adheñchañ ar veskell dibenn"
|
||||
REDIRECT_TRAILING_SLASH_HELP: "Ober un adheñchañ 301 e-lerc'h merañ an beskell dibenn an URI en un doare treuzwelus."
|
||||
DEFAULT_DATE_FORMAT: "Mentrezh deiziad ar bajenn"
|
||||
DEFAULT_DATE_FORMAT_HELP: "Mentrezh deiziad ar bajenn arveret gant Grav. Dre ziouer, Grav a glask divinout mentrezh an deiziad met gallout a rit erspizañ unan gant kevreadur deiziad PHP (sk.: Y-m-d H:i)"
|
||||
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Divinout en emgefreek"
|
||||
IGNORE_FILES: "Leuskel restroù a-gostez"
|
||||
IGNORE_FILES_HELP: "Restroù da leuskel a-gostez e-pad keweriañ ar pajennoù"
|
||||
IGNORE_FOLDERS: "Leuskel teuliadoù a-gostez"
|
||||
IGNORE_FOLDERS_HELP: "Teuliadoù resis da leuskel a-gostez e-pad keweriañ ar pajennoù"
|
||||
HTTP_ACCEPT_LANGUAGE: "Lakaat yezh ar merdeer"
|
||||
HTTP_ACCEPT_LANGUAGE_HELP: "Gallout a rit klask arventennañ ar yezh gant hini ar talbenn `http_accept_language` ar merdeer"
|
||||
OVERRIDE_LOCALE: "Flastrañ ar yezh"
|
||||
OVERRIDE_LOCALE_HELP: "Flastrañ arventenn yezh PHP diazezet war ar yezh vremanel"
|
||||
REDIRECT: "Adheñchañ ar bajenn"
|
||||
REDIRECT_HELP: "Enankit hent ur bajenn pe un URL diavaez da adheñchañ ar bajenn. Sk. '/un/hent' pe 'http://ulload.bzh'"
|
||||
PLUGIN_STATUS: "Stad an elugellad"
|
||||
INCLUDE_DEFAULT_LANG: "Enkorfañ ar yezh dre ziouer"
|
||||
INCLUDE_DEFAULT_LANG_HELP: "Ouzhpennañ a raio ar yezh dre ziouer en holl URLoù er yezh dre ziouer. Sk. '/br/blog/post'"
|
||||
ALLOW_URL_TAXONOMY_FILTERS: "URL siloù rummad"
|
||||
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Dastumadegoù pajennoù a aotren ac'hanoc'h da silañ dre '/rummad:gwerzh'."
|
||||
REDIRECT_DEFAULT_CODE: "Boneg adheñchan dre ziouer"
|
||||
REDIRECT_DEFAULT_CODE_HELP: "Boneg stad HTTP da arverañ evit adheñchañ"
|
||||
IGNORE_HIDDEN: "Leuskel ar re kuzhet a-gostez"
|
||||
IGNORE_HIDDEN_HELP: "Leuskel an holl restroù ha teuliadoù a grog gant ur POENT"
|
||||
WRAPPED_SITE: "Lec'hienn enkorfet"
|
||||
WRAPPED_SITE_HELP: "Evit ma ouife an neuzioù/enlugelladoù m'eo enkorfet Grav en ur savenn all"
|
||||
FALLBACK_TYPES: "Aotren doareoù fallback"
|
||||
FALLBACK_TYPES_HELP: "Doareoù restr aotreet a c'hall bezañ kavet m'int haezet dre hent ar bajenn. An holl zoareoù media skoret dre ziouer."
|
||||
INLINE_TYPES: "Doareoù fallback enkorfet"
|
||||
INLINE_TYPES_HELP: "Ur roll doareoù restroù a rank bezañ skrammet en un doare enkorfet kentoc'h eget pellgarget"
|
||||
APPEND_URL_EXT: "Ouzhpennañ an astenn d'an URL"
|
||||
APPEND_URL_EXT_HELP: "Ouzhpennañ a raio un astenn personelaet da URL ar bajenn. Talvezout a ra e glasko Grav ur patrom anvet `<patrom>.<astenn>.twig`"
|
||||
PAGE_MODES: "Modoù pajenn"
|
||||
PAGE_TYPES: "Doareoù pajenn"
|
||||
ACCESS_LEVELS: "Liveoù haeziñ"
|
||||
GROUPS: "Strolladoù"
|
||||
GROUPS_HELP: "Roll ar strolladoù gant an arveriad enno"
|
||||
ADMIN_ACCESS: "Haeziñ ardoer"
|
||||
SITE_ACCESS: "Haeziñ d'al lec'hienn"
|
||||
INVALID_SECURITY_TOKEN: "Reveziadenn diogelroez didalvoudek"
|
||||
ACTIVATE: "Gweredekaat"
|
||||
TWIG_UMASK_FIX: "Ratreadur Umask"
|
||||
TWIG_UMASK_FIX_HELP: "Twig a grou ar restroù krubuilh gant 0755 dre ziouer, ar ratreañ a lak anezho da 0755"
|
||||
CACHE_PERMS: "Aotreoù ar c'hrubuilh"
|
||||
CACHE_PERMS_HELP: "Aotreoù dre ziouer teuliad ar c'hrubuilh. 0755 pe 0775 peurvuiañ, hervez ar c'hefluniadur"
|
||||
REMOVE_SUCCESSFUL: "Dilamet gant berzh"
|
||||
REMOVE_FAILED: "C'hwitadenn war an dilemel"
|
||||
HIDE_HOME_IN_URLS: "Kuzhat hent ar pennbajenn en URL"
|
||||
HIDE_HOME_IN_URLS_HELP: "Gwiriekaat a raio n'eo ket daveet hent skoueriek an degemer gant hentoù dre ziouer ar pajennoù dindan an degemer"
|
||||
TWIG_FIRST: "Keweriañ an Twig da gentañ"
|
||||
TWIG_FIRST_HELP: "M'ho peus gweredekaat keweriañ ar bajenn Twig e c'hallit kefluniañ Twig evit e geweriañ a-raok pe goude ar Markdown"
|
||||
SESSION_SECURE: "Diogel"
|
||||
SESSION_SECURE_HELP: "M'eo gwir, diskouez a ra eo ret d'ar c'hehentiñ evit an toupin-mañ bezañ graet war un treuzkas diogel. DIWALLIT: Gweredekait an dra-se war lec'hiennoù e HTTPS nemetken"
|
||||
SESSION_HTTPONLY: "HTTP nemetken"
|
||||
SESSION_HTTPONLY_HELP: "M'eo gwir, diskouez a ra eo ret d'ar c'hehentiñ evit an toupin-mañ bezañ graet war un treuzkas HTTP ha n'eo ket aotreet kemmañ ar Javascript"
|
||||
REVERSE_PROXY: "Proksi en tu-gin"
|
||||
REVERSE_PROXY_HELP: "Gweredekait an dra-se m'hoc'h a-dreñv ur proksi en tu-gin hag ho peus diaesterioù gant an URLoù oc'h enderc'hel ur porzh didalvoudek"
|
||||
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter didalvoudek, n'haller ket enrollan"
|
||||
ADD_FOLDER: "Ouzhpennañ un teuliad"
|
||||
PROXY_URL: "URL ar proksi"
|
||||
PROXY_URL_HELP: "Enankit HERBERC'HIER pe IP ar proksi hag ar PORZH"
|
||||
NOTHING_TO_SAVE: "Netra da enrollañ"
|
||||
FILE_ERROR_ADD: "Degouezhet ez eus bet ur fazi en ur glask enrollañ ar restr"
|
||||
FILE_ERROR_UPLOAD: "Degouezhet ez eus bet ur fazi en ur glask pellgas ar restr"
|
||||
FILE_UNSUPPORTED: "Doare restr anskor"
|
||||
ADD_ITEM: "Ouzhpennañ un elfenn"
|
||||
FILE_TOO_LARGE: "Re leden eo ar restr evit bezañ pellgaset. %s eo an uhelañ aotreet hervez <br> hoc'h arventennoù PHP. Kreskit an arventenn PHP`post_max_size`"
|
||||
INSTALLING: "O staliañ"
|
||||
LOADING: "O kargañ.."
|
||||
DEPENDENCIES_NOT_MET_MESSAGE: "Ret eo deoc'h staliañ an amzalc'hoù da-heul a-raok:"
|
||||
ERROR_INSTALLING_PACKAGES: "Fazi en ur staliañ ar pakad(où)"
|
||||
INSTALLING_DEPENDENCIES: "O staliañ an amzalc'hoù..."
|
||||
INSTALLING_PACKAGES: "O staliañ ar pakad(où).."
|
||||
PACKAGES_SUCCESSFULLY_INSTALLED: "Pakad(où) staliet gant berzh."
|
||||
READY_TO_INSTALL_PACKAGES: "Prest da staliañ ar pakad(où)"
|
||||
PACKAGES_NOT_INSTALLED: "N'eo ket stalied ar pakadoù"
|
||||
PACKAGES_NEED_UPDATE: "Staliet eo ar pakadoù endeo, met re gozh eo"
|
||||
PACKAGES_SUGGESTED_UPDATE: "Staliet eo ar pakadoù endeo, dereat eo an handelv, met hizivaet e vint evit ma vefec'h en handelv diwezhañ"
|
||||
REMOVE_THE: "Dilemel an %s"
|
||||
CONFIRM_REMOVAL: "Sur oc'h e fell deoc'h dilemel %s?"
|
||||
REMOVED_SUCCESSFULLY: "%s dilamet gant berzh"
|
||||
ERROR_REMOVING_THE: "Fazi en ur zilemel %s"
|
||||
ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "An amzalc'hoù da heul a zo azgoulennet gant %s, met n'eo ket azgoulennet gant ur pakad all. Ma ne arverit ket anezho e c'hallit o dilemel adalek amañ."
|
||||
READY_TO_UPDATE_PACKAGES: "Prest da hizivaat ar pakad(où)"
|
||||
ERROR_UPDATING_PACKAGES: "Fazi en ur hizivaat ar pakad(où)"
|
||||
UPDATING_PACKAGES: "Oc'h hizivaat ar pakad(où).."
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "Pakad(où) hizivaet gant berzh."
|
||||
UPDATING: "Hizivaet"
|
||||
GPM_RELEASES: "Ermaeziadennoù GPM"
|
||||
GPM_RELEASES_HELP: "Dibabit 'Amprouiñ' evit staliañ an handelv beta pe amprouiñ"
|
||||
AUTO: "Oto"
|
||||
FOPEN: "fopen"
|
||||
CURL: "cURL"
|
||||
STABLE: "Stabil"
|
||||
TESTING: "Amprouiñ"
|
||||
FRONTMATTER_PROCESS_TWIG: "Keweriañ frontmatter Twig"
|
||||
FRONTMATTER_PROCESS_TWIG_HELP: "P'eo oberiant e c'hallit arverañ argemennoù kefluniañ Twig e frontmatter ar bajenn"
|
||||
FRONTMATTER_IGNORE_FIELDS: "Leuskel maeziennoù Frontmatter a-gostez"
|
||||
FRONTMATTER_IGNORE_FIELDS_HELP: "Maeziennoù Frontmatter a c'hall enderc'hel Twig met ne rankont ket bezañ keweriet, evel 'forms'"
|
||||
PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakad %s staliet gant berzh"
|
||||
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Urzh ar c'har, diweredekaet eo an urzhiañ"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Diwelus eo ar bajenn, diweredekaet eo an urzhiañ"
|
||||
ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "N'eo ket skoret an urzhiañ dre an ardeiñ dre ma zo ouzhpenn 200 c'hoar"
|
||||
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "EVEZHIADENN: n'hallit ket ouzhpennañ restroù media evit enrollañ ar bajenn. Klikit war 'Enrollañ' a-us"
|
||||
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "EVEZHIADENN: ret eo enrollañ ar bajenn a-raok pellgas restroù dezhi."
|
||||
DROP_FILES_HERE_TO_UPLOAD: "Lakait ho restroù amañ pe <strong>klikit amañ</strong>"
|
||||
INSERT: "Enlakaat"
|
||||
UNDO: "Dizober"
|
||||
REDO: "Adober"
|
||||
HEADERS: "Talbennoù"
|
||||
BOLD: "Tev"
|
||||
ITALIC: "Stouet"
|
||||
STRIKETHROUGH: "Barrennet"
|
||||
SUMMARY_DELIMITER: "Bonner diverrad"
|
||||
LINK: "Liamm"
|
||||
IMAGE: "Skeudenn"
|
||||
BLOCKQUOTE: "Meneg"
|
||||
UNORDERED_LIST: "Roll dizurzh"
|
||||
ORDERED_LIST: "Roll urzhiet"
|
||||
EDITOR: "Embanner"
|
||||
PREVIEW: "Alberz"
|
||||
FULLSCREEN: "Skramm a-bezh"
|
||||
NON_ROUTABLE: "Dihentus"
|
||||
NON_VISIBLE: "Diwelus"
|
||||
NON_PUBLISHED: "Diembannet"
|
||||
CHARACTERS: "arouezioù"
|
||||
PUBLISHING: "Embann"
|
||||
MEDIA_TYPES: "Doareoù media"
|
||||
IMAGE_OPTIONS: "Opsionoù skeudenn"
|
||||
MIME_TYPE: "Doare Mime"
|
||||
THUMB: "Miniaturenn"
|
||||
TYPE: "Doare"
|
||||
FILE_EXTENSION: "Astenn ar fichenn"
|
||||
LEGEND: "Alc'hwez ar bajenn"
|
||||
MEMCACHE_SERVER: "Servijer Memcached"
|
||||
MEMCACHE_SERVER_HELP: "Chomlec'h ar servijer Memcached"
|
||||
MEMCACHE_PORT: "Porzh Memcached"
|
||||
MEMCACHE_PORT_HELP: "Porzh ar servijer Memcached"
|
||||
MEMCACHED_SERVER: "Servijer Memcached"
|
||||
MEMCACHED_SERVER_HELP: "Chomlec'h ar servijer Memcached"
|
||||
MEMCACHED_PORT: "Porzh Memcached"
|
||||
MEMCACHED_PORT_HELP: "Porzh ar servijer Memcached"
|
||||
REDIS_SERVER: "Servijer Redis"
|
||||
REDIS_SERVER_HELP: "Chomlec'h ar servijer Redis"
|
||||
REDIS_PORT: "Porzh Redis"
|
||||
REDIS_PORT_HELP: "Porzh ar servijer Redis"
|
||||
ALL: "Tout"
|
||||
FROM: "eus"
|
||||
TO: "da"
|
||||
RESOURCE_FILTER: "Sil..."
|
||||
FORCE_SSL: "Forsañ SSL"
|
||||
DROPZONE_CANCEL_UPLOAD: 'Nullañ ar gargamant'
|
||||
DROPZONE_REMOVE_FILE: "Dilemel ar fichenn"
|
||||
PREMIUM_PRODUCT: "Premium"
|
||||
ERROR_SIMPLE: "Fazi simpl"
|
||||
ERROR_SYSTEM: "Fazi Sistem"
|
||||
NOT_SET: "Pas termenet"
|
||||
PERMISSIONS: "Permisionoù"
|
||||
REINSTALL_PLUGIN: "Adstaliañ ar Plugin"
|
||||
REINSTALL_THEME: "Adstaliañ an Tem"
|
||||
REINSTALL_THE: "Adstaliañ ar %s"
|
||||
REINSTALLATION_FAILED: "Adstaliañ c'hwitet"
|
||||
TOOLS: "Ostilhoù"
|
||||
DIRECT_INSTALL: "Staliañ war-eeun"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
CONFIGURATION: "Kefluniadur"
|
||||
TIMEOUT: "Diamzeriñ"
|
||||
TIMEOUT_HELP: "Lakaat an amzer diamzeriñ e eilennoù"
|
||||
DASHBOARD: "Taolenn labour"
|
||||
NOTIFICATIONS: "Notifiadenn"
|
||||
1141
config/www/user/plugins/admin/languages/ca.yaml
Normal file
1141
config/www/user/plugins/admin/languages/ca.yaml
Normal file
File diff suppressed because it is too large
Load Diff
1153
config/www/user/plugins/admin/languages/cs.yaml
Normal file
1153
config/www/user/plugins/admin/languages/cs.yaml
Normal file
File diff suppressed because it is too large
Load Diff
88
config/www/user/plugins/admin/languages/cy.yaml
Normal file
88
config/www/user/plugins/admin/languages/cy.yaml
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_BETA_MSG: "Mae hwn yn fersiwn beta! Defnyddio hwn yn cynhyrchu ar risg eich hun..."
|
||||
ADMIN_REPORT_ISSUE: "Canfod problem? Rhowch wybod ar GitHub."
|
||||
LOGIN_BTN: "Mewngofnodi"
|
||||
LOGIN_BTN_FORGOT: "Anghofio"
|
||||
LOGIN_BTN_RESET: "Ailosod cyfrinair"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Anfon cyfarwyddiadau ailosod"
|
||||
LOGIN_BTN_CLEAR: "Ffurflen clir"
|
||||
LOGIN_BTN_CREATE_USER: "Creu defnyddiwr"
|
||||
LOGIN_LOGGED_IN: "Wedi eich mewngofnodi llwyddiannus"
|
||||
LOGIN_FAILED: "Wedi methu mewngofnodi"
|
||||
LOGGED_OUT: "Chi allgofnodi"
|
||||
RESET_LINK_EXPIRED: "Ailosod cysylltiad wedi dod i ben, rhowch gynnig arall arni"
|
||||
RESET_PASSWORD_RESET: "Mae wedi'i ailosod cyfrinair"
|
||||
RESET_INVALID_LINK: "Mae annilys yn ailosod cyswllt a ddefnyddir, rhowch gynnig arni eto"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Mae cyfarwyddiadau i ailosod eich cyfrinair wedi'u hanfon drwy e-bost at %s"
|
||||
FORGOT_FAILED_TO_EMAIL: "Wedi methu anfon e-bost cyfarwyddiadau, rhowch gynnig arall arni rywbryd eto"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Does dim modd ailosod cyfrinair %s, pennir nad oes cyfeiriad e-bost"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Nid yw'r defnyddiwr gyda'r enw defnyddiwr <b>%s</b> yn bodoli"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Does dim modd ailosod cyfrinair. Nid yw'r safle hwn wedi'i ffurfweddu i anfon negeseuon e-bost"
|
||||
FORGOT_EMAIL_SUBJECT: "Cais ailosod cyfrinair %s"
|
||||
FORGOT_EMAIL_BODY: "<h1>Ailosod cyfrinair</h1> <p>%1$s Annwyl,</p> <p>Gwnaed cais ar <b>%4$s</b> i ailosod eich cyfrinair.</p> <p>< br / > <a href=\"%2$s\" class=\"btn-primary\"> hyn i ailosod eich cyfrinair cliciwch</a> < br / > < br / ></p> <p>Fel arall, gopïo URL canlynol i'r bar cyfeiriad eich porwr:</p> <p>%2$s</p> <p>< br / > Cofion, < br / > < br / >%3$s</p>"
|
||||
MANAGE_PAGES: "Rheoli tudalennau"
|
||||
PAGES: "Tudalennau"
|
||||
PLUGINS: "Ategion"
|
||||
PLUGIN: "Ategyn"
|
||||
THEMES: "Themâu"
|
||||
LOGOUT: "Allgofnodi"
|
||||
BACK: "Yn ôl"
|
||||
ADD_PAGE: "Ychwanegu Tudalen"
|
||||
MOVE: "Symud"
|
||||
DELETE: "Dileu"
|
||||
SAVE: "Cadw"
|
||||
NORMAL: "Arferol"
|
||||
EXPERT: "Arbenigol"
|
||||
EXPAND_ALL: "Ehangu'r cyfan"
|
||||
COLLAPSE_ALL: "Crebachu'r cyfan"
|
||||
ERROR: "Gwall"
|
||||
CLOSE: "Cau"
|
||||
CANCEL: "Canslo"
|
||||
CONTINUE: "Yn parhau"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Cadarnhad sydd yn ofynnol"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Ganfod newidiadau"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Wedi ichi golli'r newidiadau. Ydych chi'n siŵr eich bod am adael heb arbed?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Cadarnhad sydd yn ofynnol"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Ydych chi'n siŵr eich bod am ddileu'r ffeil hon? Ni ellir dad-wneud y cam gweithredu hwn."
|
||||
ADD_FILTERS: "Ychwanegu hidlydd"
|
||||
SEARCH_PAGES: "Tudalennau chwilio"
|
||||
VERSION: "Fersiwn"
|
||||
WAS_MADE_WITH: "Wedi greu hefo"
|
||||
BY: "Gan"
|
||||
AUTHOR: "Awdur"
|
||||
HOMEPAGE: "Hafan"
|
||||
KEYWORDS: "Allweddeiriau"
|
||||
LICENSE: "Trwydded"
|
||||
DESCRIPTION: "Disgrifiad"
|
||||
THEME: "Thema"
|
||||
BACK_TO_THEMES: "Ôl i themâu"
|
||||
BACK_TO_PLUGINS: "Ôl i ategion"
|
||||
CHECK_FOR_UPDATES: "Chwilio am ddiweddariadau"
|
||||
ADD: "Ychwanegu"
|
||||
CLEAR_CACHE: "Clirio storfa"
|
||||
CLEAR_CACHE_ALL_CACHE: "Holl storfa"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Asedau yn unig"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Llyniau yn unig"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Storfa yn unig"
|
||||
UPDATES_AVAILABLE: "Diweddariadau ar gael"
|
||||
DAYS: "Diwrnod"
|
||||
UPDATE: "Diweddaru"
|
||||
STATISTICS: "Ystadegau"
|
||||
TODAY: "Heddiw"
|
||||
WEEK: "Wythnos"
|
||||
MONTH: "Mis"
|
||||
UPDATED: "Wedi'w ddiweddaru"
|
||||
MON: "Llu"
|
||||
TUE: "Maw"
|
||||
WED: "Mer"
|
||||
THU: "Iau"
|
||||
FRI: "Gwe"
|
||||
SAT: "Sad"
|
||||
SUN: "Sul"
|
||||
COPY: "Copi"
|
||||
EDIT: "Golygu"
|
||||
CREATE: "Creu"
|
||||
AVAILABLE: "Ar gael"
|
||||
CONFIGURATION: "Ffurfweddiad"
|
||||
DASHBOARD: "Dangosfwrdd"
|
||||
802
config/www/user/plugins/admin/languages/da.yaml
Normal file
802
config/www/user/plugins/admin/languages/da.yaml
Normal file
@@ -0,0 +1,802 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_NOSCRIPT_MSG: "Aktivér JavaScript i din browser."
|
||||
ADMIN_BETA_MSG: "Dette er en beta-udgivelse! Brug i produktionsmiljøer er på egen risiko..."
|
||||
ADMIN_REPORT_ISSUE: "Har du fundet et problem? Så bedes du rapportere det på GitHub."
|
||||
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Drevet af Grav</a> - det moderne fladfil-CMS"
|
||||
LOGIN_BTN: "Login"
|
||||
LOGIN_BTN_FORGOT: "Glemt"
|
||||
LOGIN_BTN_RESET: "Nulstil adgangskode"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Send nulstillingsinstruktioner"
|
||||
LOGIN_BTN_CLEAR: "Ryd formular"
|
||||
LOGIN_BTN_CREATE_USER: "Opret bruger"
|
||||
LOGIN_LOGGED_IN: "Du er nu logget ind"
|
||||
LOGIN_FAILED: "Login fejlede"
|
||||
LOGGED_OUT: "Du er nu logget ud"
|
||||
RESET_NEW_PASSWORD: "Skriv venligst en ny adgangskode"
|
||||
RESET_LINK_EXPIRED: "Nulstillingslinket er udløbet; prøv venligst igen"
|
||||
RESET_PASSWORD_RESET: "Adgangskoden er blevet nulstillet"
|
||||
RESET_INVALID_LINK: "Du har benyttet et ugyldigt nulstillingslink; prøv venligst igen"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Vejledning i at nulstille din adgangskode er sendt via e-mail til %s"
|
||||
FORGOT_FAILED_TO_EMAIL: "Mislykkedes at maile vejledninger, forsøg venligst igen senere"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Kan ikke nulstille adgangskode til %s; der er ikke angivet en e-mail-adresse"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Der findes ikke en bruger med brugernavnet <b>%s</b>"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Kan ikke nulstille adgangskoden. Dette site er ikke konfigureret til at sende e-mails"
|
||||
FORGOT_EMAIL_SUBJECT: "%s Anmodning om nulstilling af adgangskode"
|
||||
FORGOT_EMAIL_BODY: "<h1>Adgangskodenulstilling</h1><p>Hej %1$s</p><p>Der blev den<b>%4$s</b> anmodet om at nulstille din adgangskode.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Klik her for at gennemføre adgangskodenulstillingen</a><br /><br /></p><p>Alternativt kan du indsætte flg. URL i din browsers adressebjælke:</p> <p>%2$s</p><p><br />Venlig hilsen,<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Administrer sider"
|
||||
PAGES: "Sider"
|
||||
PLUGINS: "Plugins"
|
||||
PLUGIN: "Plugin"
|
||||
THEMES: "Temaer"
|
||||
LOGOUT: "Logud"
|
||||
BACK: "Tilbage"
|
||||
NEXT: "Næste"
|
||||
PREVIOUS: "Foregående"
|
||||
ADD_PAGE: "Tilføj side"
|
||||
MOVE: "Flyt"
|
||||
DELETE: "Slet"
|
||||
UNSET: "Ikke-indstillet"
|
||||
VIEW: "Se"
|
||||
SAVE: "Gem"
|
||||
NORMAL: "Normal"
|
||||
EXPERT: "Ekspert"
|
||||
EXPAND_ALL: "Udfold alle"
|
||||
COLLAPSE_ALL: "Sammenfold alle"
|
||||
ERROR: "Fejl"
|
||||
CLOSE: "Luk"
|
||||
CANCEL: "Annullér"
|
||||
CONTINUE: "Fortsæt"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bekræftelse kræves"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Ændringer registreret"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Ændringer er ikke gemt. Sikker på, at du vil fortsætte uden at gemme?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bekræftelse kræves"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Sikker på, at du vil slette denne fil? Handlingen kan ikke fortrydes."
|
||||
ADD_FILTERS: "Tilføj filtre"
|
||||
SEARCH_PAGES: "Søg efter sider"
|
||||
VERSION: "Version"
|
||||
WAS_MADE_WITH: "Blev lavet med"
|
||||
BY: "Af"
|
||||
UPDATE_THEME: "Opdatere tema"
|
||||
UPDATE_PLUGIN: "Opdater Plugin"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "af dette tema er nu tilgængelig"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "af dette plugin er nu tilgængelig"
|
||||
AUTHOR: "Forfatter"
|
||||
HOMEPAGE: "Websted"
|
||||
DEMO: "Demo"
|
||||
BUG_TRACKER: "Sporing af fejl"
|
||||
KEYWORDS: "Nøgleord"
|
||||
LICENSE: "Licens"
|
||||
DESCRIPTION: "Beskrivelse"
|
||||
README: "Læs-mig"
|
||||
REMOVE_THEME: "Fjern Tema"
|
||||
INSTALL_THEME: "Installer Tema"
|
||||
THEME: "Tema"
|
||||
BACK_TO_THEMES: "Tilbage til Temaer"
|
||||
BACK_TO_PLUGINS: "Tilbage til Plugins"
|
||||
CHECK_FOR_UPDATES: "Søg efter Opdateringer"
|
||||
ADD: "Tilføj"
|
||||
CLEAR_CACHE: "Ryd Cache"
|
||||
CLEAR_CACHE_ALL_CACHE: "Alle Caches"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Kun Aktiver"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Kun Billeder"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Kun Cache"
|
||||
CLEAR_CACHE_TMP_ONLY: "Kun tmp"
|
||||
UPDATES_AVAILABLE: "Opdateringer tilgængelige"
|
||||
DAYS: "Dage"
|
||||
UPDATE: "Opdatér"
|
||||
BACKUP: "Backup"
|
||||
BACKUPS: "Sikkerhedskopier"
|
||||
BACKUP_NOW: "Sikkerhedskopiér nu"
|
||||
BACKUPS_STATS: "Sikkerhedskopieringsstatistik"
|
||||
BACKUPS_HISTORY: "Sikkerhedskopieringshistorik"
|
||||
BACKUPS_PURGE_CONFIG: "Opsætning, Sikkerhedskopieringsrensning"
|
||||
BACKUPS_PROFILES: "Sikkerhedskopieringsprofiler"
|
||||
BACKUPS_COUNT: "Antal Sikkerhedskopier"
|
||||
BACKUPS_PROFILES_COUNT: "Antal Profiler"
|
||||
BACKUPS_TOTAL_SIZE: "Forbrugt lagerplads"
|
||||
BACKUPS_NEWEST: "Seneste sikkerhedskopi"
|
||||
BACKUPS_OLDEST: "Ældste sikkerhedskopi"
|
||||
BACKUPS_PURGE: "Rense"
|
||||
BACKUPS_NOT_GENERATED: "Ingen sikkerhedskopier oprettet endnu..."
|
||||
BACKUPS_PURGE_NUMBER: "Benytter %s af %s sikkerhedskopipladser"
|
||||
BACKUPS_PURGE_TIME: "%s dages sikkerhedskopiering resterer"
|
||||
BACKUPS_PURGE_SPACE: "Benytter %s af %s"
|
||||
BACKUP_DELETED: "Sikkerhedskopi blev slettet"
|
||||
BACKUP_NOT_FOUND: "Sikkerhedskopi ikke fundet"
|
||||
BACKUP_DATE: "Sikkerhedskopieringsdato"
|
||||
STATISTICS: "Statistikker"
|
||||
TODAY: "I dag"
|
||||
WEEK: "Uge"
|
||||
MONTH: "Måned"
|
||||
LATEST_PAGE_UPDATES: "Seneste Sideopdateringer"
|
||||
MAINTENANCE: "Vedligeholdelse"
|
||||
UPDATED: "Opdateret"
|
||||
MON: "Man"
|
||||
TUE: "Tirs"
|
||||
WED: "Ons"
|
||||
THU: "Tor"
|
||||
FRI: "Fre"
|
||||
SAT: "Lør"
|
||||
SUN: "Søn"
|
||||
COPY: "Kopiér"
|
||||
EDIT: "Redigér"
|
||||
CREATE: "Opret"
|
||||
GRAV_ADMIN: "Grav Admin"
|
||||
GRAV_OFFICIAL_PLUGIN: "Grav Officielt Plugin"
|
||||
GRAV_OFFICIAL_THEME: "Grav Officielt Tema"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Dette plugin er symbolsk linket. Ændringer opdages ikke."
|
||||
THEME_SYMBOLICALLY_LINKED: "Dette tema er symbolsk linket. Ændringer opdaget ikke"
|
||||
REMOVE_PLUGIN: "Fjern Plugin"
|
||||
INSTALL_PLUGIN: "Installér Plugin"
|
||||
AVAILABLE: "Tilgængelig"
|
||||
INSTALLED: "Installeret"
|
||||
INSTALL: "Installér"
|
||||
ACTIVE_THEME: "Aktivt tema"
|
||||
SWITCHING_TO: "Skifte til"
|
||||
SWITCHING_TO_DESCRIPTION: "Der er ingen garanti for, at alle layoutsider understøttes ved skift til andet tema, hvilket potentielt kan forårsage fejl under indlæsning af nævnte sider."
|
||||
SWITCHING_TO_CONFIRMATION: "Vil du forsætte og skifte til temaet"
|
||||
CREATE_NEW_USER: "Opret ny bruger"
|
||||
REMOVE_USER: "Fjern bruger"
|
||||
ACCESS_DENIED: "Adgang nægtet"
|
||||
ACCOUNT_NOT_ADMIN: "din konto har ikke administratorrettigheder"
|
||||
PHP_INFO: "PHP-info"
|
||||
INSTALLER: "Installation"
|
||||
AVAILABLE_THEMES: "Tilgængelige temaer"
|
||||
AVAILABLE_PLUGINS: "Tilgængelige plugins"
|
||||
INSTALLED_THEMES: "Installerede temaer"
|
||||
INSTALLED_PLUGINS: "Installerede plugins"
|
||||
BROWSE_ERROR_LOGS: "Gennemse Fejl-logs"
|
||||
SITE: "Site"
|
||||
INFO: "Info"
|
||||
SYSTEM: "System"
|
||||
USER: "Bruger"
|
||||
ADD_ACCOUNT: "Tilføj konto"
|
||||
SWITCH_LANGUAGE: "Skift Sprog"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Plugin aktiveret"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Plugin deaktiveret"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Standardtema ændret"
|
||||
INSTALLATION_FAILED: "Installation mislykkedes"
|
||||
INSTALLATION_SUCCESSFUL: "Installation fuldført"
|
||||
UNINSTALL_FAILED: "Afinstallation mislykkedes"
|
||||
UNINSTALL_SUCCESSFUL: "Afinstallation fuldført"
|
||||
SUCCESSFULLY_SAVED: "Gemt"
|
||||
SUCCESSFULLY_COPIED: "Kopieret"
|
||||
REORDERING_WAS_SUCCESSFUL: "Rækkefølge ændret"
|
||||
SUCCESSFULLY_DELETED: "Slettet"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Sprog skiftet"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Du har ikke tilstrækkelige tilladelser til opgaven"
|
||||
CACHE_CLEARED: "Cache ryddet"
|
||||
METHOD: "Metode"
|
||||
ERROR_CLEARING_CACHE: "Fejl under sletning af cache"
|
||||
AN_ERROR_OCCURRED: "Der opstod en fejl"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Din backup er klar til download"
|
||||
DOWNLOAD_BACKUP: "Download backup"
|
||||
PAGES_FILTERED: "Filtrerede sider"
|
||||
NO_PAGE_FOUND: "Ingen side fundet"
|
||||
INVALID_PARAMETERS: "Ugyldige parametre"
|
||||
NO_FILES_SENT: "Ingen filer sendt"
|
||||
EXCEEDED_FILESIZE_LIMIT: "Størrelsesbegrænsning for PHP-configurationsfil overskredet"
|
||||
UNKNOWN_ERRORS: "Ukendt fejl"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Størrelsesbegrænsning for Grav-configurationsfil overskredet"
|
||||
UNSUPPORTED_FILE_TYPE: "Ikke-understøttet filtype"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Kunne ikke flytte den uploadede fil."
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Fil-upload lykkedes"
|
||||
FILE_DELETED: "Filen blev slettet"
|
||||
FILE_COULD_NOT_BE_DELETED: "Filen kunne ikke slettes"
|
||||
FILE_NOT_FOUND: "Filen blev ikke fundet"
|
||||
NO_FILE_FOUND: "Ingen fil blev fundet"
|
||||
FIELD_REORDER_SUCCESSFUL: "Medieordre opdateret for feltet '%s'"
|
||||
FIELD_REORDER_FAILED: "En fejl opstod under lagring af medieordren for feltet '%s'"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav blev opdateret til"
|
||||
GRAV_UPDATE_FAILED: "Opdatering af Grav mislykkedes"
|
||||
EVERYTHING_UPDATED: "Alt opdateret"
|
||||
UPDATES_FAILED: "Opdateringer mislykkedes"
|
||||
AVATAR_BY: "Avatar af"
|
||||
AVATAR_UPLOAD_OWN: "Eller upload din egen..."
|
||||
LAST_BACKUP: "Seneste backup"
|
||||
FULL_NAME: "Fulde navn"
|
||||
USERNAME: "Brugernavn"
|
||||
EMAIL: "E-mail"
|
||||
USERNAME_EMAIL: "Brugernavn eller e-mail"
|
||||
PASSWORD: "Adgangskode"
|
||||
PASSWORD_CONFIRM: "Bekræft adgangskode"
|
||||
TITLE: "Titel"
|
||||
ACCOUNT: "Konto"
|
||||
EMAIL_VALIDATION_MESSAGE: "Skal være en gyldig e-mail"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Adgangskode skal indeholde minimum ét ciffer, én versal, én minuskel samt udgøres af minimum otte tegn"
|
||||
LANGUAGE: "Sprog"
|
||||
LANGUAGE_HELP: "Opsæt foretrukne sprog"
|
||||
LANGUAGE_DEBUG: "Fejlsøg sprog"
|
||||
LANGUAGE_DEBUG_HELP: "Aktivér fejlsøgning af sprog, som bruger filteret |t twig ved at tilføje en span omkring dem, der kan stiliseres som hjælpe til problemdiagnosticeringer"
|
||||
MEDIA: "Medier"
|
||||
DEFAULTS: "Standarder"
|
||||
SITE_TITLE: "Sitets Titel"
|
||||
SITE_TITLE_PLACEHOLDER: "Overordnet webstedstitel"
|
||||
SITE_TITLE_HELP: "Sitets standard-titel. Bruges ofte i temaer"
|
||||
SITE_DEFAULT_LANG: "Standardsprog"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "Standardsprog benyttet af temaets <HTML>-etiket"
|
||||
SITE_DEFAULT_LANG_HELP: "Standardsprog benyttet af temaets <HTML>-etiket"
|
||||
DEFAULT_AUTHOR: "Standard-forfatter"
|
||||
DEFAULT_AUTHOR_HELP: "Standard-forfatternavn. Bruges ofte i temaer og sideindhold"
|
||||
DEFAULT_EMAIL: "Standard-e-mail"
|
||||
DEFAULT_EMAIL_HELP: "En standard-e-mail, som der kan henvises til i temaer og på sider"
|
||||
TAXONOMY_TYPES: "Taksonomi-typer"
|
||||
TAXONOMY_TYPES_HELP: "Taksonomi-typer skal defineres her hvis du vil bruge dem på sider"
|
||||
PAGE_SUMMARY: "Side-resume"
|
||||
ENABLED: "Aktiveret"
|
||||
ENABLED_HELP: "Aktiver side-resume (resumeet returnerer det samme som sideindholdet)"
|
||||
'YES': "Ja"
|
||||
'NO': "Nej"
|
||||
SUMMARY_SIZE: "Resume-længde"
|
||||
SUMMARY_SIZE_HELP: "Det antal af en sides karakter, som skal bruges som resume"
|
||||
FORMAT: "Format"
|
||||
FORMAT_HELP: "kort = brug første forekomst af afgrænser eller størrelse; lang = afgrænser ignoreres"
|
||||
SHORT: "Kort"
|
||||
LONG: "Lang"
|
||||
DELIMITER: "Afgrænser"
|
||||
DELIMITER_HELP: "Resume-afgrænseren (standard: '===')"
|
||||
METADATA: "Metadata"
|
||||
METADATA_HELP: "Standard-metadataværdier, som vises på alle sider, medmindre de tilsidesættes af siden"
|
||||
NAME: "Navn"
|
||||
CONTENT: "Indhold"
|
||||
SIZE: "Størrelse"
|
||||
ACTION: "Handling"
|
||||
REDIRECTS_AND_ROUTES: "Omdirigeringer og ruter"
|
||||
CUSTOM_REDIRECTS: "Brugerdefinerede omdirigeringer"
|
||||
CUSTOM_REDIRECTS_HELP: "ruter til omdirigering til andre sider. Gængse regex-erstatninger kan benyttes"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/dit/alias"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/din/omdirigering"
|
||||
CUSTOM_ROUTES: "Tilpassede ruter"
|
||||
CUSTOM_ROUTES_HELP: "ruter til alias til andre sider. Gængs regex-erstatning er gyldig"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/dit/alias"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/din/rute"
|
||||
FILE_STREAMS: "Filstrømme"
|
||||
DEFAULT: "Standard"
|
||||
PAGE_MEDIA: "Sidemedier"
|
||||
OPTIONS: "Indstillinger"
|
||||
PUBLISHED: "Udgivet"
|
||||
PUBLISHED_HELP: "Som standard offentliggøres en side medmindre du udtrykkeligt sætter published: false eller via en fremtidig publish_date eller fortidig unpublish_date"
|
||||
DATE: "Dato"
|
||||
DATE_HELP: "Dato-variablen tillader dig at sætte en specifik dato associeret med denne side."
|
||||
PUBLISHED_DATE: "Udgivelsesdato"
|
||||
PUBLISHED_DATE_HELP: "Kan give en dato for automatisk at udløse udgivelse."
|
||||
UNPUBLISHED_DATE: "Afpubliceringsdato"
|
||||
UNPUBLISHED_DATE_HELP: "Opsætning en dato for automatisk at afpublisere."
|
||||
ROBOTS: "Robotter"
|
||||
TAXONOMIES: "Taksonomier"
|
||||
TAXONOMY: "Taksonomi"
|
||||
ADVANCED: "Avanceret"
|
||||
SETTINGS: "Indstillinger"
|
||||
FOLDER_NUMERIC_PREFIX: "Numerisk Mappepræfiks"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Numerisk præfiks, der muliggør manuel sortering og indebærer synlighed"
|
||||
FOLDER_NAME: "Mappenavn"
|
||||
FOLDER_NAME_HELP: "Mappenavnet, som skal gemmes i filsystemet, for denne side"
|
||||
PARENT: "Overordnet"
|
||||
DEFAULT_OPTION_ROOT: "- Rod -"
|
||||
DEFAULT_OPTION_SELECT: "- Vælg -"
|
||||
DISPLAY_TEMPLATE: "Visningsskabelon"
|
||||
DISPLAY_TEMPLATE_HELP: "Sidetypen, som oversættes til den twig-template, som viser siden"
|
||||
ORDERING: "Soreting"
|
||||
PAGE_ORDER: "Side-sortering"
|
||||
OVERRIDES: "Tilsidesættelser"
|
||||
MENU: "Menu"
|
||||
MENU_HELP: "Den streng, som skal anvendes i en menu. Hvis ingen angives, bruges Title."
|
||||
SLUG: "Slug"
|
||||
SLUG_HELP: "Slug-variablen bruges til specifikt at angive sidens andel af URL'en"
|
||||
SLUG_VALIDATE_MESSAGE: "En slug må kun indeholde små alfanumeriske karakterer og bindestreger"
|
||||
PROCESS: "Processer"
|
||||
PROCESS_HELP: "Kontroller hvordan sider processeres. Kan angives per side i stedet for globalt"
|
||||
DEFAULT_CHILD_TYPE: "Standardtitel for underordnede"
|
||||
USE_GLOBAL: "Anvend Global"
|
||||
ROUTABLE: "Kan routes"
|
||||
ROUTABLE_HELP: "Om denne side kan tilgås via en URL"
|
||||
CACHING: "Caching"
|
||||
VISIBLE: "Synlig"
|
||||
VISIBLE_HELP: "Afgør om en side er synlig i navigationen."
|
||||
DISABLED: "Deaktiveret"
|
||||
ITEMS: "Elementer"
|
||||
ORDER_BY: "Sortér Efter"
|
||||
ORDER: "Sortering"
|
||||
FOLDER: "Mappe"
|
||||
ASCENDING: "Stigende"
|
||||
DESCENDING: "Faldende"
|
||||
PAGE_TITLE: "Sidetitel"
|
||||
PAGE_TITLE_HELP: "Sidens titel"
|
||||
PAGE: "Side"
|
||||
FRONTMATTER: "Forskræp"
|
||||
FILENAME: "Filnavn"
|
||||
PARENT_PAGE: "Overordnet Side"
|
||||
HOME_PAGE: "Hjem-side"
|
||||
HOME_PAGE_HELP: "Siden som Grav bruger som standard-destinationsside"
|
||||
DEFAULT_THEME: "Standardtema"
|
||||
DEFAULT_THEME_HELP: "Gravs standardtema (som udgangspunkt Antimatter)"
|
||||
TIMEZONE: "Tidszone"
|
||||
TIMEZONE_HELP: "Tilsidesæt serverens standardtidszone"
|
||||
SHORT_DATE_FORMAT: "Kort datoformat-visning"
|
||||
SHORT_DATE_FORMAT_HELP: "Angiv det korte datoformat, der kan bruges af temaer"
|
||||
LONG_DATE_FORMAT: "Lang datoformat-visning"
|
||||
LONG_DATE_FORMAT_HELP: "Angiv det lange datoformat, der kan bruges af temaer"
|
||||
DEFAULT_ORDERING: "Standardsortering"
|
||||
DEFAULT_ORDERING_HELP: "Sider i en liste bliver vist i denne rækkefølge, medmindre den tilsidesættes"
|
||||
DEFAULT_ORDERING_DEFAULT: "Standard - baseret på mappenavn"
|
||||
DEFAULT_ORDERING_FOLDER: "Mappe - baseret på mappenavn uden præfiks"
|
||||
DEFAULT_ORDERING_TITLE: "Titel - baseret på titel-felt i headeren"
|
||||
DEFAULT_ORDERING_DATE: "Dato - baseret på dato-felt i headeren"
|
||||
DEFAULT_ORDER_DIRECTION: "Standard-sorteringsretning"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "Den retning, som siderne i en liste skal sorteres i"
|
||||
DEFAULT_PAGE_COUNT: "Standard-sideantal"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Standard for maksimalt antal sider i en liste"
|
||||
DATE_BASED_PUBLISHING: "Datobaseret publicering"
|
||||
DATE_BASED_PUBLISHING_HELP: "(Af)publicer automatisk indhold baseret på dets dato"
|
||||
EVENTS: "Begivenheder"
|
||||
EVENTS_HELP: "Aktiver og deaktiver specifikke begivenheder. Deaktivering af disse kan ødelægge plugins"
|
||||
REDIRECT_DEFAULT_ROUTE: "Standardrute for omdirigeringer"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Omdiriger automatisk til en sides standardrute"
|
||||
LANGUAGES: "Sprog"
|
||||
SUPPORTED: "Understøttet"
|
||||
SUPPORTED_HELP: "Kommasepareret liste af sprogkoder på hver to bogstaver (f.eks. 'en,da,fr')"
|
||||
TRANSLATIONS_FALLBACK: "Fallback til oversættelser"
|
||||
TRANSLATIONS_FALLBACK_HELP: "Fallback gennem understøttede oversættelser hvis det aktive sprog ikke findes"
|
||||
ACTIVE_LANGUAGE_IN_SESSION: "Aktivt sprog i session"
|
||||
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Gem det aktive sprog i sessionen"
|
||||
HTTP_HEADERS: "HTTP-headere"
|
||||
EXPIRES: "Udløber"
|
||||
EXPIRES_HELP: "Indstiller expires-headeren. Værdien angives i sekunder."
|
||||
CACHE_CONTROL: "HTTP Cache-kontrol"
|
||||
CACHE_CONTROL_HELP: "Angive en gyldig cache-kontrolværdi såsom 'no-cache, no-butik, must-revalidate'"
|
||||
LAST_MODIFIED: "Senest ændret"
|
||||
LAST_MODIFIED_HELP: "Angiver \"last modified\"-headeren, der kan hjælpe med at optimere proxy og browsercachelagring"
|
||||
ETAG: "ETag"
|
||||
ETAG_HELP: "Indstiller etag-header for at hjælpe med at identificere, hvornår en side er blevet ændret"
|
||||
VARY_ACCEPT_ENCODING: "Vary accept encoding"
|
||||
VARY_ACCEPT_ENCODING_HELP: "Angiver \"Vary: Accept Encoding\"-headeren, der hjælper med proxy og CDN-cachelagring"
|
||||
MARKDOWN: "Markdown"
|
||||
MARKDOWN_EXTRA: "Markdown Extra"
|
||||
MARKDOWN_EXTRA_HELP: "Aktiver standardunderstøttelse for Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
|
||||
MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape HTML-elementer i Markdown Extra-låger"
|
||||
MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escaper HTML-elementer i Markdown Extra-låger"
|
||||
AUTO_LINE_BREAKS: "Automatiske linjeskift"
|
||||
AUTO_LINE_BREAKS_HELP: "Aktiver understøttelse af automatiske linjeskift i markdown"
|
||||
AUTO_URL_LINKS: "Automatiske URL-links"
|
||||
AUTO_URL_LINKS_HELP: "Aktiver automatisk konvertering af URL'er til HTML-hyperlinks"
|
||||
ESCAPE_MARKUP: "Escape markup"
|
||||
ESCAPE_MARKUP_HELP: "Escape markup-tags til HMTL-entiteter"
|
||||
CACHING_HELP: "Global TÆND/SLUK-kontakt til aktivering/deaktivering af Grav-caching"
|
||||
CACHE_CHECK_METHOD: "Metode til cache-tjek"
|
||||
CACHE_CHECK_METHOD_HELP: "Angiv den metode, som Grav skal bruge til at tjekke om en side er blevet ændret."
|
||||
CACHE_DRIVER: "Cache-driver"
|
||||
CACHE_DRIVER_HELP: "Angiv hvilken cache-driver, som Grav skal bruge. 'Auto-detekter' forsøger at finde den bedste for dig"
|
||||
CACHE_PREFIX: "Cache-præfiks"
|
||||
CACHE_PREFIX_HELP: "Identifikator for en del af Grav-nøglen. Ændr kun hvis du ved, hvad du laver."
|
||||
CACHE_PREFIX_PLACEHOLDER: "Afledt af base-URL'en (tilsidesæt ved at indtaste en arbitrær streng)"
|
||||
CACHE_PURGE_JOB: "Kør planlagt rensningsjob"
|
||||
CACHE_PURGE_JOB_HELP: "Du kan med planlæggeren periodisk rydde ud gamle Doctrine-filcachemapper med dette job"
|
||||
CACHE_CLEAR_JOB: "Kør planlagt rydningsjob"
|
||||
CACHE_CLEAR_JOB_HELP: "Du kan med planlæggeren periodisk rydde Grav-cachen"
|
||||
CACHE_JOB_TYPE: "Cache Jobtype"
|
||||
CACHE_JOB_TYPE_HELP: "Ryd cachen enten for 'standard' eller 'alle' mapper"
|
||||
CACHE_PURGE: "Rens gammel cache"
|
||||
LIFETIME: "Livstid"
|
||||
LIFETIME_HELP: "Angiver cache-livstiden i sekunder. 0 = uendelig"
|
||||
GZIP_COMPRESSION: "Gzip-kompression"
|
||||
GZIP_COMPRESSION_HELP: "Aktiver GZip komprimering af Grav siden for øget ydeevne."
|
||||
TWIG_TEMPLATING: "Twig-skabeloner"
|
||||
TWIG_CACHING: "Twig-cache"
|
||||
TWIG_CACHING_HELP: "Indstil Twigs cache-mekanisme. Lad feltet være aktiveret for at opnå den bedste ydeevne."
|
||||
TWIG_DEBUG: "Twig-debug"
|
||||
TWIG_DEBUG_HELP: "Giver mulighed for ikke at indlæse Twigs debugger-udvidelse"
|
||||
DETECT_CHANGES: "Registrer ændringer"
|
||||
DETECT_CHANGES_HELP: "Twig genkompilerer automatisk sin cache hvis den registrerer ændringer i Twig-skabeloner"
|
||||
AUTOESCAPE_VARIABLES: "Escape automatisk variabler"
|
||||
AUTOESCAPE_VARIABLES_HELP: "Escaper automatisk alle variabler. Dette vil højst sandsynligt ødelægge dit site"
|
||||
ASSETS: "Aktiver"
|
||||
CSS_ASSETS: "CSS-aktiver"
|
||||
CSS_PIPELINE: "CSS-pipeline"
|
||||
CSS_PIPELINE_HELP: "CSS-pipelinen forener flere CSS-ressourcer i én fil"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne enheder i CSS pipelinen"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URL'er har, til tider, relative fil referencer, og bør ikke blive pipelinet"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES: "Pre-rendering af CSS pipelinen"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Render CSS pipelinen før alle andre CSS referencer, der ikke er inkluderet"
|
||||
CSS_MINIFY: "CSS-minificering"
|
||||
CSS_MINIFY_HELP: "Minificer CSS ved brug af pipeline"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE: "Tilsidesæt Windows' CSS-minificering"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Tilsidesættelse af minificering på Windows-platforme. Standard = Fra pga. ThreadStackSize"
|
||||
CSS_REWRITE: "CSS-omskrivning"
|
||||
CSS_REWRITE_HELP: "Omskriv relative CSS-URL'er under pipelining"
|
||||
JS_ASSETS: "JavaScript-aktiver"
|
||||
JAVASCRIPT_PIPELINE: "Javascript-pipeline"
|
||||
JAVASCRIPT_PIPELINE_HELP: "JS-pipelinen samler flere JS-ressourcer i én fil"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne enheder i JS pipelinen"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URL'er har, til tider, relative fil referencer, og bør ikke blive pipelinet"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Pre-rendering af JS pipelinen"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render JS pipelinen før alle andre JS referencer, der ikke er inkluderet"
|
||||
JS_MODULE_ASSETS: "JavaScript Modul-aktiver"
|
||||
JAVASCRIPT_MODULE_PIPELINE: "JavaScript Modul-pipeline"
|
||||
JAVASCRIPT_MODULE_PIPELINE_HELP: "JS-pipelinen samler flere JS-ressourcer i én fil"
|
||||
JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS: "Medtag eksterne enheder i JS Modul-pipelinen"
|
||||
JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URL'er har sommetider relative filreferencer, og bør ikke pipelines"
|
||||
JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES: "Rendering af JS Modul-pipelinen først"
|
||||
JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES_HELP: "Rendér JS-pipelinen før alle andre JS-referencer, som ikke er medtaget"
|
||||
GENERAL_CONFIG: "Generel Aktivopsætning"
|
||||
JAVASCRIPT_MINIFY: "Javascript-minificering"
|
||||
JAVASCRIPT_MINIFY_HELP: "Minificer JS ved brug af pipeline"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS: "Aktiver tidsstempler på aktiver"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktiver tidsstempler på aktiver"
|
||||
COLLECTIONS: "Kollektioner"
|
||||
ERROR_HANDLER: "Fejlbehandler"
|
||||
DISPLAY_ERRORS: "Visningsfejl"
|
||||
DISPLAY_ERRORS_HELP: "Vis fuld backtrace på fejlside"
|
||||
LOG_ERRORS: "Log fejl"
|
||||
LOG_ERRORS_HELP: "Log fejl i mappen /logs"
|
||||
LOG_HANDLER: "Loghåndtering"
|
||||
LOG_HANDLER_HELP: "Hvor loggerne skal placeres"
|
||||
SYSLOG_FACILITY: "Syslog-facilitet"
|
||||
SYSLOG_FACILITY_HELP: "Syslog-facilitet til output"
|
||||
SYSLOG_TAG: "Syslog-tag"
|
||||
SYSLOG_TAG_HELP: "Syslog-tag til output"
|
||||
DEBUGGER: "Fejlfinder"
|
||||
DEBUGGER_HELP: "Aktivér Grav-fejlfinder og flg. indstillinger"
|
||||
DEBUG_TWIG: "Fejlfind i Twig"
|
||||
DEBUG_TWIG_HELP: "Aktivér fejlfinding i Twig-skabeloner"
|
||||
SHUTDOWN_CLOSE_CONNECTION: "Luk forbindelse ved nedlukning"
|
||||
SHUTDOWN_CLOSE_CONNECTION_HELP: "Luk forbindelsen inden onShutdown()-kald. Slået fra ved debugging"
|
||||
DEFAULT_IMAGE_QUALITY: "Standard-billedkvalitet"
|
||||
DEFAULT_IMAGE_QUALITY_HELP: "Standardbilledkvalitet til brug ved cachelagring af billeder (85%)"
|
||||
CACHE_ALL: "Cache alle billeder"
|
||||
CACHE_ALL_HELP: "Kør alle billeder - også ikke-manipulerede - gennem Gravs cache-system"
|
||||
IMAGES_DEBUG: "Vandmærke ved debugging af billeder"
|
||||
IMAGES_DEBUG_HELP: "Vis overlejring på billeder. Overlejringen indikerer billedets pixel-dybde til brug ved f.eks. visning på retina-skærme"
|
||||
IMAGES_DECODING: "Billedafkodningsadfærd"
|
||||
IMAGES_DECODING_HELP: "Afkodningsattributten lader en webbrowser udsætte billedafkodninger fra skærmen, indtil brugerne ruller i nærheden af dem. Afkodning understøtter tre værdier: auto, sync, async"
|
||||
#Removed in Grav 1.8
|
||||
IMAGES_SEOFRIENDLY: "SEO-venlige billednavne"
|
||||
IMAGES_SEOFRIENDLY_HELP: "Når aktiveret, vises billednavnet først, dernæst en mindre hash, der afspejler udførte operationer"
|
||||
UPLOAD_LIMIT: "Fil-upload grænse"
|
||||
UPLOAD_LIMIT_HELP: "Angiv maks. filstørrelse i bytes (0 = ubegrænset)"
|
||||
ENABLE_MEDIA_TIMESTAMP: "Aktivér tidsstempler på medier"
|
||||
ENABLE_MEDIA_TIMESTAMP_HELP: "Føjer et tidsstempel baseret på seneste ændringsdato til hvert medieemne"
|
||||
SESSION: "Session"
|
||||
SESSION_ENABLED_HELP: "Aktivér sessionsunderstøttelse i Grav"
|
||||
SESSION_NAME_HELP: "En identifikator, der benytts til at danne navnet på sessionens-cookie'en"
|
||||
SESSION_UNIQUENESS: "Unik streng"
|
||||
SESSION_UNIQUENESS_HELP: "MD5-hash af Gravs rodsti, dvs. `GRAV_ROOT` (standard) eller én baseret på den tilfældige` security.salt`-streng."
|
||||
ABSOLUTE_URLS: "Absolutte URL'er"
|
||||
ABSOLUTE_URLS_HELP: "Absolutte eller relative URL'er til 'base_url'"
|
||||
PARAMETER_SEPARATOR: "Parameterseparator"
|
||||
PARAMETER_SEPARATOR_HELP: "Separator til godkendte parametre, som kan ændres til Apache på Windows"
|
||||
TASK_COMPLETED: "Opgave fuldført"
|
||||
EVERYTHING_UP_TO_DATE: "Alt er opdateret"
|
||||
UPDATES_ARE_AVAILABLE: "opdatering(-er) er tilgængelige"
|
||||
IS_AVAILABLE_FOR_UPDATE: "er tilgængelig for opdatering"
|
||||
IS_NOW_AVAILABLE: "er nu tilgængelig"
|
||||
CURRENT: "Aktuel"
|
||||
UPDATE_GRAV_NOW: "Opdater Grav nu"
|
||||
GRAV_SYMBOLICALLY_LINKED: "Grav er forbundet med symbolsk link. Opgraderingen vil ikke være tilgængelig"
|
||||
UPDATING_PLEASE_WAIT: "Opdatering... Vent venligst; downloader"
|
||||
OF_THIS: "af denne"
|
||||
OF_YOUR: "af dit"
|
||||
HAVE_AN_UPDATE_AVAILABLE: "har en tilgængelig opdatering"
|
||||
SAVE_AS: "Gem som"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sikker på, at du vil slette denne side og alle dens undersider? Er siden oversat til andre sprog, vil disse oversættelser blive bevaret og skal slettes separat. I modsat fald bliver sidemappen og dens undersider slettet. Denne handling er irreversibel."
|
||||
AND: "og"
|
||||
UPDATE_AVAILABLE: "Opdatering tilgængelig"
|
||||
METADATA_KEY: "Nøgle (f.eks. 'Nøgleord')"
|
||||
METADATA_VALUE: "Værdi (f.eks. 'Blog, Grav')"
|
||||
USERNAME_HELP: "Brugernavnet skal være mellem 3 og 16 karakterer og kan indeholde små bogstaver, tal, understreger og bindestreger. Store bogstaver, mellemrum og specielle karakter er ikke tilladt"
|
||||
FULLY_UPDATED: "Fuldt opdateret"
|
||||
SAVE_LOCATION: "Gemmeplacering"
|
||||
PAGE_FILE: "Sideskabelon"
|
||||
PAGE_FILE_HELP: "Sideskabelon filnavn, og standard visnings-skabelonen for denne side"
|
||||
NO_USER_ACCOUNTS: "Der blev ikke fundet nogen brugerkonto; opret venligst en først..."
|
||||
NO_USER_EXISTS: "Ingen lokalbruger til denne konto, kan ikke gemme..."
|
||||
REDIRECT_TRAILING_SLASH: "Omdiriger efterstillet skråstreg"
|
||||
REDIRECT_TRAILING_SLASH_HELP: "Udfør en 301-omdirigering i stedet for gennemsigtigt at håndtere URI'er med efterstillet skråstreg."
|
||||
DEFAULT_DATE_FORMAT: "Sidedatoformat"
|
||||
DEFAULT_DATE_FORMAT_HELP: "Det side-datoformat, som Grav skal bruge. Som standard forsøger Grav at gætte dit datoformat, men du kan specificeret et format med PHP's dato-syntaks (f.eks. Y-m-d H:i)"
|
||||
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Gæt automatisk"
|
||||
IGNORE_FILES: "Ignorer filer"
|
||||
IGNORE_FILES_HELP: "Specifikke filer, som skal ignoreres ved behandlingen af sider"
|
||||
IGNORE_FOLDERS: "Ignorer mapper"
|
||||
IGNORE_FOLDERS_HELP: "Specifikke mapper, som skal ignoreres ved behandlingen af sider"
|
||||
HIDE_EMPTY_FOLDERS: "Skjul tomme mapper"
|
||||
HIDE_EMPTY_FOLDERS_HELP: "Har mappen ikke en .md-fil, skal den være skjult i navigationen og være ikke-rootbar"
|
||||
HTTP_ACCEPT_LANGUAGE: "Indstil sprog fra browser"
|
||||
HTTP_ACCEPT_LANGUAGE_HELP: "Du kan forsøge at indstille sproget på basis af browserens \"http_accept_language\"-headertag"
|
||||
OVERRIDE_LOCALE: "Tilsidesæt lokation"
|
||||
OVERRIDE_LOCALE_HELP: "Tilsidesæt PHP's \"locale\"-indstilling baseret på det nuværende sprog"
|
||||
REDIRECT: "Side-omdirigering"
|
||||
REDIRECT_HELP: "Angiv en side-rute eller ekstern URL, som denne side skal omdirigere til, f.eks. \"/en/rute\" eller \"http://etsite.com\""
|
||||
PLUGIN_STATUS: "Plugin-status"
|
||||
INCLUDE_DEFAULT_LANG: "Inkluder standardsproget"
|
||||
INCLUDE_DEFAULT_LANG_HELP: "Dette foranstiller standardsproget i alle standardsprogets URL'er, f.eks. \"/da/blog/mit-indlæg\""
|
||||
PAGES_FALLBACK_ONLY: "Kun tilbagefaldsside"
|
||||
PAGES_FALLBACK_ONLY_HELP: "Kun 'fallback' for at finde sideindhold via understøttede sprog. Standardadfærd er at vise et hvilket som helst tilgængeligt sprog, såfremt det aktivt sprog mangler"
|
||||
ALLOW_URL_TAXONOMY_FILTERS: "URL-taksonomifiltre"
|
||||
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Sidebaserede samlingergør det muligt at filtrere via \"/taxonomy:værdi\"."
|
||||
REDIRECT_DEFAULT_CODE: "Standardomdirigeringskode"
|
||||
REDIRECT_DEFAULT_CODE_HELP: "HTTP-statuskode til brug ved omdirigeringer"
|
||||
IGNORE_HIDDEN: "Ignorer skjulte"
|
||||
IGNORE_HIDDEN_HELP: "Ignorer alle filer og mapper, der begynder med punktum"
|
||||
WRAPPED_SITE: "Indpakket site"
|
||||
WRAPPED_SITE_HELP: "Bruges af temaer/plugins til at bestemme, om Grav er pakket ind i en anden platform"
|
||||
FALLBACK_TYPES: "Tilladte fallback-typer"
|
||||
FALLBACK_TYPES_HELP: "Tilladte filtyper, der kan tilgås med en side-rute. Som standard sat til alle understøttede medietyper."
|
||||
INLINE_TYPES: "Indlejrede fallback-typer"
|
||||
INLINE_TYPES_HELP: "En liste over filtyper, der skal vises indlejret i stedet for hentes"
|
||||
APPEND_URL_EXT: "Tilføj URL-efternavn"
|
||||
APPEND_URL_EXT_HELP: "Tilføjer et brugerdefineret efternavn til sidens webadresse. Bemærk, at dette vil få Grav til at kigge efter \"<skabelon>. <efternavn>. twig\"-skabeloner"
|
||||
PAGE_MODES: "Side-tilstande"
|
||||
PAGE_TYPES: "Sidetyper"
|
||||
PAGE_TYPES_HELP: "Bestemmer de sidetyper, som Grav understøtter, og rækkefølgen bestemmer fallback-typen, der skal benyttes, såfremt anmodningen er tvetydig"
|
||||
ACCESS_LEVELS: "Adgangsniveauer"
|
||||
GROUPS: "Grupper"
|
||||
GROUPS_HELP: "Liste af grupper, som brugeren er medlem af"
|
||||
ADMIN_ACCESS: "Admin-adgang"
|
||||
SITE_ACCESS: "Webstedsadgang"
|
||||
INVALID_SECURITY_TOKEN: "Ugyldigt sikkerhedstoken"
|
||||
ACTIVATE: "Aktivér"
|
||||
TWIG_UMASK_FIX: "Afmaskeringsfiks"
|
||||
TWIG_UMASK_FIX_HELP: "Som standard opretter Twig cachede filer som 0755. Dette fiks skifter dette til 0775"
|
||||
CACHE_PERMS: "Cachetilladelser"
|
||||
CACHE_PERMS_HELP: "Standard cachemappetilladelser. Som regel 0755 eller 0775, afhængig af opsætningen"
|
||||
REMOVE_SUCCESSFUL: "Fjernet"
|
||||
REMOVE_FAILED: "Fjernelse mislykkedes"
|
||||
HIDE_HOME_IN_URLS: "Skjul hjem-route i URL'er"
|
||||
HIDE_HOME_IN_URLS_HELP: "Sikrer at standard-routes for enhver side under hjem ikke henviser til hjemsidens normale route"
|
||||
TWIG_FIRST: "Behandl Twig først"
|
||||
TWIG_FIRST_HELP: "Har du aktiveret Twig-sidebehandling, kan du opsætte Twig til at gøre dette før eller efter markdown"
|
||||
SESSION_SECURE: "Sikker"
|
||||
SESSION_SECURE_HELP: "Angiver, om kommunikation med denne cookie skal ske krypteret. ADVARSEL: Brug kun dette på sites, der kører udelukkende på HTTPS"
|
||||
SESSION_HTTPONLY: "Kun HTTP"
|
||||
SESSION_HTTPONLY_HELP: "Hvis denne indstilling er aktiveret bruges cookes kun over HTTP og Javascript-ændringer tillades ikke"
|
||||
REVERSE_PROXY: "Omvendt proxy"
|
||||
REVERSE_PROXY_HELP: "Aktiver denne hvis du er bag en omvendt proxy og har problemer med URL'er, der indeholder ukorrekte porte"
|
||||
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ugyldigt forskræp; kunne ikke gemme"
|
||||
ADD_FOLDER: "Tilføj mappe"
|
||||
COPY_PAGE: "Kopiér side"
|
||||
PROXY_URL: "Proxy-URL"
|
||||
PROXY_URL_HELP: "Indtast proxyens host eller IP og port"
|
||||
PROXY_CERT: "Proxy-certifikatsti"
|
||||
PROXY_CERT_HELP: "Lokal sti til mappen indeholdende proxy-certifikat pem-fil"
|
||||
NOTHING_TO_SAVE: "Intet at gemme"
|
||||
FILE_ERROR_ADD: "Der opstod en fejl under forsøg på at tilføje filen"
|
||||
FILE_ERROR_UPLOAD: "Der opstod en fejl under forsøget på at uploade filer"
|
||||
FILE_UNSUPPORTED: "Ikke-understøttet filtype"
|
||||
ADD_ITEM: "Tilføj element"
|
||||
FILE_TOO_LARGE: "Filen er for stor til at blive uploadet, maksimal tilladt er %s ifølge <br>dine PHP-indstillinger. Øge din 'post_max_size' PHP indstilling"
|
||||
INSTALLING: "Installerer"
|
||||
LOADING: "Indlæser.."
|
||||
DEPENDENCIES_NOT_MET_MESSAGE: "De følgende afhængigheder skal være opfyldt først:"
|
||||
ERROR_INSTALLING_PACKAGES: "Fejl under installering af af pakke(r)"
|
||||
INSTALLING_DEPENDENCIES: "Installerer afhængigheder..."
|
||||
INSTALLING_PACKAGES: "Installerer pakke(r).."
|
||||
PACKAGES_SUCCESSFULLY_INSTALLED: "Pakke(r) installeret korrekt."
|
||||
READY_TO_INSTALL_PACKAGES: "Klar til at installere pakke(r)"
|
||||
PACKAGES_NOT_INSTALLED: "Pakker ikke installeret"
|
||||
PACKAGES_NEED_UPDATE: "Pakker allerede installeret, men forældede"
|
||||
PACKAGES_SUGGESTED_UPDATE: "Pakker allerede installeret, og versionen er i orden, men vil blive opdateret for at holde dig up to date"
|
||||
REMOVE_THE: "Fjern %s"
|
||||
CONFIRM_REMOVAL: "Er du sikker på, at du ønsker at slette %s?"
|
||||
REMOVED_SUCCESSFULLY: "%s fjernet korrekt"
|
||||
ERROR_REMOVING_THE: "Fejl i forsøget på at fjerne %s"
|
||||
ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s krævede følgende afhængigheder, som ikke er påkrævet af andre pakker. Hvis du ikke bruger dem, kan du fjerne dem her."
|
||||
READY_TO_UPDATE_PACKAGES: "Klar til at opdatere pakke(r)"
|
||||
ERROR_UPDATING_PACKAGES: "Fejl under opdatering af pakke(r)"
|
||||
UPDATING_PACKAGES: "Opdaterer pakke(r).."
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "Pakke(r) opdateret korrekt."
|
||||
UPDATING: "Updaterer"
|
||||
GPM_SECTION: "GPM-afsnit"
|
||||
GPM_RELEASES: "GPM udgivelser"
|
||||
GPM_RELEASES_HELP: "Vælg 'Test' for at installere beta eller testversioner"
|
||||
GPM_METHOD: "Fjernhentningsmetode"
|
||||
GPM_METHOD_HELP: "Når indstillet til Auto afgør Grav, om fopen er tilgængelig og benytter den, ellers benyttes cURL. For at gennemtvinge brugen af den ene eller den, skift indstillingen."
|
||||
HTTP_SECTION: "HTTP-afsnit"
|
||||
SSL_ENABLE_PROXY: "Aktivér proxyserver"
|
||||
SSL_VERIFY_PEER: "Fjernbekræft Peer"
|
||||
SSL_VERIFY_PEER_HELP: "Nogle kan mislykkes under bekræftelsen af SSL-certifikater"
|
||||
SSL_VERIFY_HOST: "Fjernbekræft Vært"
|
||||
SSL_VERIFY_HOST_HELP: "Nogle kan mislykkes under bekræftelsen af SSL-certifikater"
|
||||
HTTP_CONNECTIONS: "HTTPS-forbindelser"
|
||||
HTTP_CONNECTIONS_HELP: "Antallet af samtidige HTTP-forbindelser under multipleksede forespørgsler"
|
||||
MISC_SECTION: "Diverse-afsnit"
|
||||
AUTO: "Auto"
|
||||
FOPEN: "fopen"
|
||||
CURL: "cURL"
|
||||
STABLE: "Stabil"
|
||||
TESTING: "Tester"
|
||||
FRONTMATTER_PROCESS_TWIG: "Processer frontmatter Twig"
|
||||
FRONTMATTER_PROCESS_TWIG_HELP: "Når aktiveret kan du bruge Twig's konfigurationsvariabler i sidens frontmatter"
|
||||
FRONTMATTER_IGNORE_FIELDS: "Ignorer frontmatter felter"
|
||||
FRONTMATTER_IGNORE_FIELDS_HELP: "Visse frontmatter felter kan indeholde Twig, men skal ikke behandles. Så som \"formularer\""
|
||||
PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakke %s installeret"
|
||||
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Overordnet rækkefølge-indstilling, orden de-aktiveret"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Siden er ikke synlig, orden de-aktiveret"
|
||||
ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Sortering af rækkefølge via administrationen er ikke tilgængelig, fordi der er mere end 200 under-elementer"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Sidebestilling er deaktiveret for denne side, da <strong>Numerisk Mappenpræfiks</strong> ikke er aktiveret"
|
||||
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "OBS: Du kan ikke tilføje medie-filer før du har gemt siden. Klik på \"Gem\" øverst"
|
||||
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "OBS: Siden skal gemmes før du kan tilføje filer til den."
|
||||
DROP_FILES_HERE_TO_UPLOAD: "Smid dine filer her eller, <strong>Klik i dette område</strong>"
|
||||
INSERT: "Indsæt"
|
||||
UNDO: "Fortryd"
|
||||
REDO: "Gendan"
|
||||
HEADERS: "Overskrifter"
|
||||
BOLD: "Fed"
|
||||
ITALIC: "Kursiv"
|
||||
STRIKETHROUGH: "Gennemstreget"
|
||||
SUMMARY_DELIMITER: "Sammendragsafgrænser"
|
||||
LINK: "Link"
|
||||
IMAGE: "Billede"
|
||||
BLOCKQUOTE: "Citatblok"
|
||||
UNORDERED_LIST: "Usorteret liste"
|
||||
ORDERED_LIST: "Sorteret liste"
|
||||
EDITOR: "Editor"
|
||||
PREVIEW: "Eksempelvisning"
|
||||
FULLSCREEN: "Fuld skærm"
|
||||
NON_ROUTABLE: "Ikke tilgængelig"
|
||||
NON_VISIBLE: "Ikke-synlig"
|
||||
NON_PUBLISHED: "Ikke udgivet"
|
||||
CHARACTERS: "tegn"
|
||||
PUBLISHING: "Udgivelse"
|
||||
MEDIA_TYPES: "Medietyper"
|
||||
IMAGE_OPTIONS: "Billedmuligheder"
|
||||
MIME_TYPE: "MIME-type"
|
||||
THUMB: "Miniature"
|
||||
TYPE: "Type"
|
||||
FILE_EXTENSION: "Filendelse"
|
||||
LEGEND: "Sideoversigt"
|
||||
MEMCACHE_SERVER: "Memcache-server"
|
||||
MEMCACHE_SERVER_HELP: "Memcache-serveradressen"
|
||||
MEMCACHE_PORT: "Memcache-port"
|
||||
MEMCACHE_PORT_HELP: "Memcache-serverporten"
|
||||
MEMCACHED_SERVER: "Memcachet-server"
|
||||
MEMCACHED_SERVER_HELP: "Memcachet-serveradresse"
|
||||
MEMCACHED_PORT: "Memcache-port"
|
||||
MEMCACHED_PORT_HELP: "Memcachet-serverport"
|
||||
REDIS_SERVER: "Redis-server"
|
||||
REDIS_SERVER_HELP: "Redis-serveradressen"
|
||||
REDIS_PORT: "Redis-port"
|
||||
REDIS_PORT_HELP: "Redis-serverport"
|
||||
REDIS_PASSWORD: "Redis-adgangskode/hemmelighed"
|
||||
ALL: "Alle"
|
||||
FROM: "fra"
|
||||
TO: "til"
|
||||
RELEASE_DATE: "Udgivelsesdato"
|
||||
SORT_BY: "Sortér efter"
|
||||
RESOURCE_FILTER: "Filtrér..."
|
||||
FORCE_SSL: "Gennemtving SSL"
|
||||
FORCE_SSL_HELP: "Gennemtving SSL globalt, hvis aktiveret, når webstedet nås via HTTP, Grav sender en omdirigering til HTTPS-siden"
|
||||
NEWS_FEED: "Nyhedsfeed"
|
||||
EXTERNAL_URL: "Ekstern URL"
|
||||
CUSTOM_BASE_URL: "Tilpasset basis-URL"
|
||||
CUSTOM_BASE_URL_HELP: "Benyt, hvis du ønsker at omskrive webstedsdomæne eller benytte en anden undermappe end den, Grav benytter. Eksempel: http://localhost"
|
||||
FILEUPLOAD_PREVENT_SELF: 'Kan ikke benytte "%s" uden for sider.'
|
||||
FILEUPLOAD_UNABLE_TO_UPLOAD: 'Kan ikke uploade fil %s: %s'
|
||||
FILEUPLOAD_UNABLE_TO_MOVE: 'Kan ikke flytte fil %s til "%s"'
|
||||
DROPZONE_CANCEL_UPLOAD: 'Annullér upload'
|
||||
DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Sikker på, at du vil annullere denne upload?'
|
||||
DROPZONE_DEFAULT_MESSAGE: 'Slip dine filer hér eller, <strong>klik i dette område</strong>'
|
||||
DROPZONE_FALLBACK_MESSAGE: 'Din browser understøtter ikke træk-og-slip fil-uploads.'
|
||||
DROPZONE_FALLBACK_TEXT: 'Benyt venligst formularen nedenfor for alternativt at uploade filer ''som i gamle dage''.'
|
||||
DROPZONE_FILE_TOO_BIG: 'Filen er for stor ({{filesize}}MiB). Maks. filstørrelse: {{maxFilesize}}MiB.'
|
||||
DROPZONE_INVALID_FILE_TYPE: "Filer af denne type kan ikke uploades."
|
||||
DROPZONE_MAX_FILES_EXCEEDED: "Der kan ikke uploades flere filer."
|
||||
DROPZONE_REMOVE_FILE: "Fjern fil"
|
||||
DROPZONE_RESPONSE_ERROR: "Serveren svarede med koden {{statusCode}}."
|
||||
PREMIUM_PRODUCT: "Premium"
|
||||
DESTINATION_NOT_SPECIFIED: "Destination er ikke angivet"
|
||||
UPLOAD_ERR_NO_TMP_DIR: "Mangler en midlertidige mappe"
|
||||
SESSION_SPLIT: "Sessionsopdeling"
|
||||
SESSION_SPLIT_HELP: "Opdel sessioner uafhængigt mellem websted og andre plugins (f.eks. Admin)"
|
||||
ERROR_FULL_BACKTRACE: "Vis detaljeret Backtrace fejlinfo"
|
||||
ERROR_SIMPLE: "Vis simpel fejlinfo"
|
||||
ERROR_SYSTEM: "Systemfejl"
|
||||
IMAGES_AUTO_FIX_ORIENTATION: "Korrigér orientering automatisk"
|
||||
IMAGES_AUTO_FIX_ORIENTATION_HELP: "Korrigér automatisk billedretningen baseret på Exif-dataene"
|
||||
REDIS_SOCKET: "Redis socket"
|
||||
REDIS_SOCKET_HELP: "Redis socket"
|
||||
NOT_SET: "Ikke indstillet"
|
||||
PERMISSIONS: "Rettigheder"
|
||||
NEVER_CACHE_TWIG: "Mellemlagre aldrig Twig"
|
||||
NEVER_CACHE_TWIG_HELP: "Cache kun indhold og behandle Twig for hver side. Ignorerer twig_first-indstilling."
|
||||
ALLOW_WEBSERVER_GZIP: "Tillad WebServer Gzip"
|
||||
ALLOW_WEBSERVER_GZIP_HELP: "Deaktiveret som standard. Når aktiveret, vil WebServer-konfigureret Gzip-/Deflate-kompression fungere, men HTTP-forbindelsen vil ikke blive lukket før onShutDown() begivenheden forårsager langsommere sideindlæsning"
|
||||
OFFLINE_WARNING: "Kan ikke etablere forbindelse til GPM"
|
||||
CLEAR_IMAGES_BY_DEFAULT: "Ryd som standard billede-cachen"
|
||||
CLEAR_IMAGES_BY_DEFAULT_HELP: "Som standard ryddes behandlede billeder for alle caches. Dette kan deaktiveres"
|
||||
CLI_COMPATIBILITY: "CLI-kompatibilitet"
|
||||
CLI_COMPATIBILITY_HELP: "Sikrer, at kun ikke-flygtig Cache-drivere benyttes (fil, redis, memcache etc.)"
|
||||
REINSTALL_PLUGIN: "Geninstallere plugin"
|
||||
REINSTALL_THEME: "Geninstallere tema"
|
||||
REINSTALL_THE: "Geninstallér %s"
|
||||
CONFIRM_REINSTALL: "Sikker på, at du vil geninstallere dette %s?"
|
||||
REINSTALLED_SUCCESSFULLY: "%s geninstalleret"
|
||||
ERROR_REINSTALLING_THE: "Fejl under geninstallering af %s"
|
||||
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pakke %s geninstalleret"
|
||||
REINSTALLATION_FAILED: "Geninstallation mislykkedes"
|
||||
WARNING_REINSTALL_NOT_LATEST_RELEASE: "Den installerede version er ikke den seneste udgivelse. Ved at klikke på Fortsæt fjerner du fjerne den aktuelle version og installerer den senest tilgængelige version"
|
||||
TOOLS: "Værktøjer"
|
||||
NO_PACKAGE_NAME: "Pakkenavn ikke angivet"
|
||||
PACKAGE_EXTRACTION_FAILED: "Pakkeudpakning mislykkedes"
|
||||
NOT_VALID_GRAV_PACKAGE: "Ikke en gyldig Grav-pakke"
|
||||
NAME_COULD_NOT_BE_DETERMINED: "Navn kunne ikke fastslås"
|
||||
CANNOT_OVERWRITE_SYMLINKS: "Kan ikke overskrive symlinks"
|
||||
ZIP_PACKAGE_NOT_FOUND: "ZIP-pakke blev ikke fundet"
|
||||
GPM_OFFICIAL_ONLY: "Kun officiel GPM"
|
||||
GPM_OFFICIAL_ONLY_HELP: "Tillade kun direkte installationer fra det officielle GPM-repositorie."
|
||||
NO_CHILD_TYPE: "Ingen underordnet type for denne rawroute"
|
||||
SORTABLE_PAGES: "Sorterbare sider:"
|
||||
ADMIN_SPECIFIC_OVERRIDES: "Admin-specifikke tilsidesætter"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER: "Underordnedes visningsrækkefølge"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Rækkefølgen, hvori undersider til denne side skal vises i visningen 'Sider' i Admin-plugin"
|
||||
PWD_PLACEHOLDER: "kompleks streng minimum 8 tegn lang"
|
||||
PWD_REGEX: "Adgangskode Regex"
|
||||
PWD_REGEX_HELP: "Adgangskode skal som standard indeholde mindst ét ciffer, én versal og én minuskel samt udgøres af minimum otte tegn"
|
||||
USERNAME_PLACEHOLDER: "kun minuskler, f.eks. 'admin'"
|
||||
USERNAME_REGEX: "Brugernavn Regex"
|
||||
USERNAME_REGEX_HELP: "Som standard kun minuskler, cifre, bindestreger og understregninger på 3-16 tegn"
|
||||
ENABLE_AUTO_METADATA: "Auto-metadata fra Exif"
|
||||
ENABLE_AUTO_METADATA_HELP: "Automatisk generere metadatafiler til billeder med exif-oplysninger"
|
||||
2FA_TITLE: "Totrinsautentificering"
|
||||
2FA_INSTRUCTIONS: "### 2-faktor Autentificering \nDu har **2FA** aktiveret for denne konto. Benyt venligst din **2FA**-app til at angive den aktuelle **6-cifrede kode** for at fuldføre loginprocessen."
|
||||
2FA_LABEL: "Admin-adgang"
|
||||
2FA_FAILED: "Ugyldig 2-faktor autentificeringskode, forsøg venligst igen..."
|
||||
2FA_ENABLED: "2FA aktiveret"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
2FA_SECRET: "2FA hemmelighed"
|
||||
2FA_REGENERATE: "Regenerér"
|
||||
YUBIKEY_ID: "YubiKey ID"
|
||||
YUBIKEY_OTP_INPUT: "YubiKey OTP"
|
||||
YUBIKEY_HELP: "Indsæt YubiKey i computeren og klik på knappen for at generere en OTP. De første 12 tegn er klient-ID'en, der vil blive gemt."
|
||||
FORCE_LOWERCASE_URLS: "Brug små bogstaver i URL'er"
|
||||
VIEW_SITE_TIP: "Vis site"
|
||||
TOOLS_DIRECT_INSTALL_TITLE: "Direkte installation af Grav-pakker"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Upload og installer"
|
||||
OPEN_NEW_TAB: "Åbn i nyt faneblad"
|
||||
STRICT_YAML_COMPAT: "YAML Kompatibilitet"
|
||||
STRICT_TWIG_COMPAT: "Twig Kompatibilitet"
|
||||
SCHEDULER_RUNAT_HELP: "Cron-formateret 'at' syntaks. BEMÆRK: Alle tidsangivelser er UTC!"
|
||||
SCHEDULER_OUTPUT: "Output Fil"
|
||||
SCHEDULER_EMAIL: "E-mail"
|
||||
SECURITY: "Sikkerhed"
|
||||
REPORTS: "Rapporter"
|
||||
LOGS: "Logfiler"
|
||||
BACKUPS_MAX_COUNT: "Maksimalt Antal Sikkerhedskopier"
|
||||
BACKUPS_MAX_COUNT_HELP: "0 er ubegrænset"
|
||||
BACKUPS_PROFILE_NAME: "Backup navn"
|
||||
COMMAND: "Kommando"
|
||||
CONFIGURATION: "Opsætning"
|
||||
ADMIN_CACHING: "Aktivere Admin-cachelagring"
|
||||
ADMIN_CACHING_HELP: "Cachelagring i admin kan styres uafhængigt af frontend-webstedet"
|
||||
CONTENT_PADDING: "Indholdsrammer"
|
||||
CONTENT_PADDING_HELP: "Aktivér/Deaktivér indholdsrammer omkring indholdsområde for at give mere plads"
|
||||
TIMEOUT: "Timeout"
|
||||
TIMEOUT_HELP: "Angiver sessionstimeout i sekunder"
|
||||
DASHBOARD: "Kontrolpanel"
|
||||
NOTIFICATIONS: "Notifikationer"
|
||||
CONTENT_HIGHLIGHT_HELP: "Indholdsfremhævning"
|
||||
REDIRECT_OPTION_NO_REDIRECT: "Ingen omdirigering"
|
||||
REDIRECT_OPTION_DEFAULT_REDIRECT: "Benyt standardomdirigeringskode"
|
||||
REDIRECT_OPTION_301: "301 - Flyttet permanent"
|
||||
REDIRECT_OPTION_302: "302 - Flyttet midlertidigt"
|
||||
REDIRECT_OPTION_303: "303 - Se andre"
|
||||
IMAGES_CLS_TITLE: "Cumative Layer Shift (CLS)"
|
||||
IMAGES_CLS_AUTO_SIZES: "Aktivér Auto-størrelser"
|
||||
IMAGES_CLS_AUTO_SIZES_HELP: "Føj automatisk 'bredde'- og 'højde'-attributter til billeder for at adressere CLS"
|
||||
IMAGES_CLS_ASPECT_RATIO: "Aktivér Størrelsesforhold"
|
||||
IMAGES_CLS_ASPECT_RATIO_HELP: "Valgfri CSS-variabel, der bliver anvendt via en 'stil'-attribut, der kan bruges i CSS til tilpasset styling"
|
||||
IMAGES_CLS_RETINA_SCALE: "Retinaskaleringsfaktor"
|
||||
IMAGES_CLS_RETINA_SCALE_HELP: "Vil tage den beregnede størrelse og dividere med skaleringsfaktoren for at vise et billede med højere opløsning ved en mindre pixelstørrelse for bedre håndtering af HiDPI-opløsninger"
|
||||
AUTOREGENERATE_FOLDER_SLUG: "Auto-regenerér baseret på sidetitel"
|
||||
ENABLE: Aktivér
|
||||
PLUGINS_MUST_BE_ENABLED: "Plugin skal være aktiveret for at opsætte"
|
||||
ACTIVATION_REQUIRED: "Aktivering krævet for at opsætte"
|
||||
SESSION_SECURE_HTTPS: "Sikker (HTTPS)"
|
||||
SESSION_SECURE_HTTPS_HELP: "Opsæt sikker session for HTTPS, men ikke for HTTP. Har ingen effekt, hvis indstillinger over Sikker er sat til sand. Indstil til falsk, hvis webstedet hopper mellem HTTP og HTTPS."
|
||||
AVATAR: "Avatargenerator"
|
||||
AVATAR_HELP: "Multiavatar er en lokalt genereret avatar. Gravatar er en ekstern tjeneste, der bruger din e-mailadresse til at trække en præopsat Avatar eksternt"
|
||||
AVATAR_HASH: "BEMÆRK: Valgfri tilpasset Avatar 'hash'-streng"
|
||||
IMAGES_TITLE: "Billeder"
|
||||
LEGACY_MEDIA_MUTATION: "Kompatibilitet til redigering af ældre medier"
|
||||
LEGACY_MEDIA_MUTATION_HELP: "Aktivér kun denne indstilling, hvis billedemanipulation fejlede efter Grav-opdatering."
|
||||
BACKWARD_COMPATIBILITY: "Bagudkompatibilitet"
|
||||
1153
config/www/user/plugins/admin/languages/de.yaml
Normal file
1153
config/www/user/plugins/admin/languages/de.yaml
Normal file
File diff suppressed because it is too large
Load Diff
707
config/www/user/plugins/admin/languages/el.yaml
Normal file
707
config/www/user/plugins/admin/languages/el.yaml
Normal file
@@ -0,0 +1,707 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_BETA_MSG: "Αυτή είναι δοκιμαστική έκδοση (beta)! Χρησιμοποιήστε την στην παραγωγή με δική σας ευθύνη..."
|
||||
ADMIN_REPORT_ISSUE: "Βρήκατε κάποιο πρόβλημα; Παρακαλείστε να το αναφέρετε στο GitHub."
|
||||
LOGIN_BTN: "Σύνδεση"
|
||||
LOGIN_BTN_FORGOT: "Το ξέχασα"
|
||||
LOGIN_BTN_RESET: "Επαναφορά συνθηματικού"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Αποστολή οδηγιών επαναφοράς"
|
||||
LOGIN_BTN_CLEAR: "Καθαρισμός Φόρμας"
|
||||
LOGIN_BTN_CREATE_USER: "Δημιουργία χρήστη"
|
||||
LOGIN_LOGGED_IN: "Έχετε συνδεθεί με επιτυχία"
|
||||
LOGIN_FAILED: "Αποτυχία Σύνδεσης"
|
||||
LOGGED_OUT: "Έχετε αποσυνδεθεί"
|
||||
RESET_NEW_PASSWORD: "Παρακαλούμε εισαγάγετε νέο συνθηματικό …"
|
||||
RESET_LINK_EXPIRED: "Ο σύνδεσμος επαναφοράς έχει λήξει, παρακαλώ προσπαθήστε ξανά"
|
||||
RESET_PASSWORD_RESET: "Έχει γίνει επαναφορά του συνθηματικού"
|
||||
RESET_INVALID_LINK: "Ο σύνδεσμος γιά την επαναφορά δεν είναι έγκυρος, παρακαλώ προσπαθήστε πάλι"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Οι οδηγίες για να επαναφέρετε το συνθηματικό σας έχουν σταλεί στη διεύθυνση ηλεκτρονικού σας ταχυδρομείου"
|
||||
FORGOT_FAILED_TO_EMAIL: "Απέτυχε η αποστολή οδηγιών με email, παρακαλώ προσπαθήστε ξανά αργότερα"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Δεν είναι δυνατή η επαναφορά του συνθηματικού για %s, δεν έχει καθοριστεί διεύθυνση ηλεκτρονικού ταχυδρομείου"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Χρήστης με όνομα χρήστη <b>%s</b> δεν υπάρχει"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Δεν είναι δυνατή η επαναφορά του συνθηματικού σας. Αυτός ο ιστότοπος δεν έχει ρυθμιστεί για αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου"
|
||||
FORGOT_EMAIL_SUBJECT: "%s Αίτηση Επαναφοράς Κωδικού Πρόσβασης"
|
||||
FORGOT_EMAIL_BODY: "<h1>Επαναφορά συνθηματικού</h1> <p>Αγαπητέ/ή %1$s,</p> <p>Έγινε μία αίτηση στις <b>%4$s</b> για επαναφορά του συνθηματικού σας.</p> <p>< br / > <a href=\"%2$s\" class=\"btn-primary\"> Κάντε κλικ εδώ για να επαναφέρετε το συνθηματικό σας</a> < br / > < br / ></p> <p>Εναλλακτικά, αντιγράψτε την ακόλουθη διεύθυνση URL στη γραμμή διευθύνσεων του προγράμματος περιήγησής σας:</p> <p>%2$s</p> <p>< br / > Με εκτίμηση, < br / > < br / >%3$s</p>"
|
||||
MANAGE_PAGES: "Διαχείριση σελίδων"
|
||||
PAGES: "Σελίδες"
|
||||
PLUGINS: "Πρόσθετα"
|
||||
PLUGIN: "Πρόσθετο"
|
||||
THEMES: "Θέματα"
|
||||
LOGOUT: "Αποσύνδεση"
|
||||
BACK: "Επιστροφή"
|
||||
NEXT: "Επόμενο"
|
||||
PREVIOUS: "Προηγούμενο"
|
||||
ADD_PAGE: "Προσθήκη σελίδας"
|
||||
MOVE: "Μετακίνηση"
|
||||
DELETE: "Διαγραφή"
|
||||
UNSET: "Μη ορισμένο"
|
||||
VIEW: "Προβολή"
|
||||
SAVE: "Αποθήκευση"
|
||||
NORMAL: "Κανονικό"
|
||||
EXPERT: "Ειδικός"
|
||||
EXPAND_ALL: "Ανάπτυξη Όλων"
|
||||
COLLAPSE_ALL: "Σύμπτυξη όλων"
|
||||
ERROR: "Σφάλμα"
|
||||
CLOSE: "Κλείσιμο"
|
||||
CANCEL: "Ακύρωση"
|
||||
CONTINUE: "Συνέχεια"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Απαιτείται Επιβεβαίωση"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Εντοπίστηκαν Αλλαγές"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Έχετε μη αποθηκευμένες αλλαγές. Είστε βέβαιοι ότι θέλετε να φύγετε χωρίς να γίνει αποθήκευση;"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Απαιτείται Επιβεβαίωση"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αρχείο; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."
|
||||
ADD_FILTERS: "Προσθήκη φίλτρων"
|
||||
SEARCH_PAGES: "Αναζήτηση στις σελίδες"
|
||||
VERSION: "Έκδοση"
|
||||
WAS_MADE_WITH: "Δημιουργήθηκε με"
|
||||
BY: "Από"
|
||||
UPDATE_THEME: "Ενημέρωση Θέματος"
|
||||
UPDATE_PLUGIN: "Ενημέρωση Προσθέτου"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "αυτού του θέματος είναι τώρα διαθέσιμη"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "αυτού του πρόσθετου είναι τώρα διαθέσιμη"
|
||||
AUTHOR: "Συντάκτης"
|
||||
HOMEPAGE: "Αρχική σελίδα"
|
||||
DEMO: "Επίδειξη"
|
||||
BUG_TRACKER: "Παρακολούθηση Σφαλμάτων"
|
||||
KEYWORDS: "Λέξεις κλειδιά"
|
||||
LICENSE: "Άδεια Χρήσης"
|
||||
DESCRIPTION: "Περιγραφή"
|
||||
README: "Διάβασέ με"
|
||||
REMOVE_THEME: "Κατάργηση Θέματος"
|
||||
INSTALL_THEME: "Εγκατάσταση Θέματος"
|
||||
THEME: "Θέμα"
|
||||
BACK_TO_THEMES: "Πίσω στα Θέματα"
|
||||
BACK_TO_PLUGINS: "Πίσω στα Πρόσθετα"
|
||||
CHECK_FOR_UPDATES: "Ελέγχος για Ενημερώσεις"
|
||||
ADD: "Προσθήκη"
|
||||
CLEAR_CACHE: "Εκκαθάριση προσωρινής μνήμης"
|
||||
CLEAR_CACHE_ALL_CACHE: "Όλης της Cache"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Μόνον οι διαθέσιμοι πόροι"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Μόνον των Εικόνων"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Μόνον τη μνήμη cache"
|
||||
CLEAR_CACHE_TMP_ONLY: "Tmp μόνο"
|
||||
UPDATES_AVAILABLE: "Υπάρχουν Διαθέσιμες Ενημερώσεις"
|
||||
DAYS: "Ημέρες"
|
||||
UPDATE: "Ενημέρωση"
|
||||
BACKUP: "Δημιουργία αντιγράφου ασφαλείας"
|
||||
BACKUPS: "Αντίγραφα Ασφαλείας"
|
||||
BACKUP_NOW: "Πάρτε Αντίγραφο Ασφαλείας τώρα"
|
||||
BACKUPS_STATS: "Στατιστικά Αντιγράφων Ασφαλείας"
|
||||
BACKUPS_HISTORY: "Ιστορικό Αντιγράφων Ασφαλείας"
|
||||
BACKUPS_PURGE_CONFIG: "Ρυθμίσεις Καθαρισμού Αντιγράφων Ασφαλείας"
|
||||
BACKUPS_PROFILES: "Προφίλ Αντιγράφων Ασφαλείας"
|
||||
BACKUPS_COUNT: "Αριθμός των Αντιγράφων Ασφαλείας"
|
||||
BACKUPS_PROFILES_COUNT: "Αριθμός των Προφίλ"
|
||||
BACKUPS_TOTAL_SIZE: "Χώρος Χρήσης"
|
||||
STATISTICS: "Στατιστικά"
|
||||
TODAY: "Σήμερα"
|
||||
WEEK: "Εβδομάδα"
|
||||
MONTH: "Μήνας"
|
||||
LATEST_PAGE_UPDATES: "Πιο πρόσφατες ενημερώσεις της σελίδας"
|
||||
MAINTENANCE: "Συντήρηση"
|
||||
UPDATED: "Ενημερωμένο"
|
||||
MON: "Δευ"
|
||||
TUE: "Τρί"
|
||||
WED: "Τετ"
|
||||
THU: "Πέμ"
|
||||
FRI: "Παρ"
|
||||
SAT: "Σάβ"
|
||||
SUN: "Κυρ"
|
||||
COPY: "Αντιγραφή"
|
||||
EDIT: "Επεξεργασία"
|
||||
CREATE: "Δημιουργία"
|
||||
GRAV_ADMIN: "Διαχειριστής του Grav"
|
||||
GRAV_OFFICIAL_PLUGIN: "Επίσημο πρόσθετο του Grav"
|
||||
GRAV_OFFICIAL_THEME: "Επίσημο Θέμα του Grav"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Αυτό το πρόσθετο είναι συμβολικά συνδεδεμένο. Οποιεσδήποτε ενημερώσεις δεν θα εντοπιστούν."
|
||||
THEME_SYMBOLICALLY_LINKED: "Αυτό το θέμα είναι συμβολικά συνδεδεμένο. Οποιεσδήποτε ενημερώσεις δεν θα εντοπιστούν"
|
||||
REMOVE_PLUGIN: "Αφαιρέστε το Πρόσθετο"
|
||||
INSTALL_PLUGIN: "Εγκατάσταση Πρόσθετου"
|
||||
AVAILABLE: "Διαθέσιμα"
|
||||
INSTALLED: "Εγκατεστημένα"
|
||||
INSTALL: "Εγκατάσταση"
|
||||
ACTIVE_THEME: "Ενεργό Θέμα"
|
||||
SWITCHING_TO: "Μετάβαση σε"
|
||||
SWITCHING_TO_DESCRIPTION: "Εάν αλλάξετε το θέμα, δεν υπάρχει καμία εγγύηση ότι θα υποστηρίζονται όλα τα layouts σελίδων, ενδεχομένως προκαλώντας σφάλματα όταν θα φορτώσουν οι σελίδες αυτές."
|
||||
SWITCHING_TO_CONFIRMATION: "Θέλετε να συνεχίσετε και να μεταβείτε στο θέμα"
|
||||
CREATE_NEW_USER: "Δημιουργία νέου χρήστη"
|
||||
REMOVE_USER: "Διαγραφή χρήστη"
|
||||
ACCESS_DENIED: "Απαγορεύεται η Πρόσβαση"
|
||||
ACCOUNT_NOT_ADMIN: "ο λογαριασμός σας δεν έχει δικαιώματα διαχειριστή"
|
||||
PHP_INFO: "Πληροφορίες της PHP"
|
||||
INSTALLER: "Πρόγραμμα εγκατάστασης"
|
||||
AVAILABLE_THEMES: "Διαθέσιμα Θέματα"
|
||||
AVAILABLE_PLUGINS: "Διαθέσιμα πρόσθετα"
|
||||
INSTALLED_THEMES: "Εγκατεστημένα Θέματα"
|
||||
INSTALLED_PLUGINS: "Εγκατεστημένα πρόσθετα"
|
||||
BROWSE_ERROR_LOGS: "Περιήγηση στα αρχεία σφαλμάτων"
|
||||
SITE: "Ιστότοπος"
|
||||
INFO: "Πληροφορίες"
|
||||
SYSTEM: "Σύστημα"
|
||||
USER: "Χρήστης"
|
||||
ADD_ACCOUNT: "Προσθήκη λογαριασμού"
|
||||
SWITCH_LANGUAGE: "Εναλλαγή γλώσσας"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Το πρόσθετο ενεργοποιήθηκε με επιτυχία"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Το πρόσθετο απενεργοποιήθηκε με επιτυχία"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Έγινε επιτυχής αλλαγή του προεπιλεγμένου θέματος"
|
||||
INSTALLATION_FAILED: "Η εγκατάσταση απέτυχε"
|
||||
INSTALLATION_SUCCESSFUL: "Επιτυχής εγκατάσταση"
|
||||
UNINSTALL_FAILED: "Η απεγκατάσταση έχει αποτύχει"
|
||||
UNINSTALL_SUCCESSFUL: "Η απεγκατάσταση έγινε με επιτυχία"
|
||||
SUCCESSFULLY_SAVED: "Επιτυχής αποθήκευση"
|
||||
SUCCESSFULLY_COPIED: "Επιτυχής αντιγραφή"
|
||||
REORDERING_WAS_SUCCESSFUL: "Η αναδιάταξη ήταν επιτυχής"
|
||||
SUCCESSFULLY_DELETED: "Επιτυχής διαγραφή"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Επιτυχία στην αλλαγή γλώσσας"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Έχετε ανεπαρκή δικαιώματα για την εργασία"
|
||||
CACHE_CLEARED: "Η προσωρινή μνήμη καθάρισε"
|
||||
METHOD: "Μέθοδος"
|
||||
ERROR_CLEARING_CACHE: "Σφάλμα κατά την εκκαθάριση της μνήμης cache"
|
||||
AN_ERROR_OCCURRED: "Παρουσιάστηκε ένα σφάλμα"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Το αντίγραφο ασφαλείας είναι έτοιμο για λήψη"
|
||||
DOWNLOAD_BACKUP: "Λήψη αντιγράφου ασφαλείας"
|
||||
PAGES_FILTERED: "Σελίδες που φιλτραρίστηκαν"
|
||||
NO_PAGE_FOUND: "Δεν βρέθηκαν σελίδες"
|
||||
INVALID_PARAMETERS: "Μη έγκυρες παράμετροι"
|
||||
NO_FILES_SENT: "Δεν απεστάλη κανένα αρχείο"
|
||||
EXCEEDED_FILESIZE_LIMIT: "Υπέρβαση ορίου μεγέθους αρχείων ρύθμισης παραμέτρων της PHP"
|
||||
UNKNOWN_ERRORS: "Άγνωστο Σφάλμα"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Το αρχείο υπερβαίνει το προκαθορισμένο όριο μεγέθους"
|
||||
UNSUPPORTED_FILE_TYPE: "Μη υποστηριζόμενος τύπος αρχείου"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Απέτυχε η μετακίνηση του μεταφορτωμένου αρχείου."
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Το αρχείο μεταφορτώθηκε με επιτυχία"
|
||||
FILE_DELETED: "Το αρχείο διεγράφη"
|
||||
FILE_COULD_NOT_BE_DELETED: "Δεν ήταν δυνατή η διαγραφή του αρχείου"
|
||||
FILE_NOT_FOUND: "Το αρχείο δεν βρέθηκε"
|
||||
NO_FILE_FOUND: "Δεν βρέθηκαν αρχεία"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Το Grav ενημερώθηκε επιτυχώς σε"
|
||||
GRAV_UPDATE_FAILED: "Η ενημέρωση του Grav απέτυχε"
|
||||
EVERYTHING_UPDATED: "Τα πάντα έχουν ενημερωθεί"
|
||||
UPDATES_FAILED: "Αποτυχία ενημέρωσης"
|
||||
AVATAR_BY: "Avatar από"
|
||||
AVATAR_UPLOAD_OWN: "Ή ανέβασε το δικό σου avatar..."
|
||||
LAST_BACKUP: "Τελευταία δημιουργία αντιγράφων ασφαλείας"
|
||||
FULL_NAME: "Ονοματεπώνυμο"
|
||||
USERNAME: "Όνομα χρήστη"
|
||||
EMAIL: "Διεύθυνση ηλεκτρονικού ταχυδρομείου"
|
||||
USERNAME_EMAIL: "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου"
|
||||
PASSWORD: "Συνθηματικό"
|
||||
PASSWORD_CONFIRM: "Επιβεβαίωση συνθηματικού"
|
||||
TITLE: "Τίτλος"
|
||||
ACCOUNT: "Λογαριασμός"
|
||||
EMAIL_VALIDATION_MESSAGE: "Πρέπει να είναι μια έγκυρη διεύθυνση email"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Το συνθηματικό πρέπει να περιέχει τουλάχιστον έναν αριθμό, ένα κεφαλαίο και ένα πεζό γράμμα και τουλάχιστον 8 ή περισσότερους χαρακτήρες"
|
||||
LANGUAGE: "Γλώσσα"
|
||||
LANGUAGE_HELP: "Ορίστε την αγαπημένη γλώσσα"
|
||||
MEDIA: "Πολυμέσα"
|
||||
DEFAULTS: "Προεπιλογές"
|
||||
SITE_TITLE: "Τίτλος Ιστοχώρου"
|
||||
SITE_TITLE_PLACEHOLDER: "Τίτλος σε όλο τον ιστοχώρο"
|
||||
SITE_TITLE_HELP: "Προεπιλεγμένος τίτλος για το site σας, χρησιμοποιείται συχνά στα θέματα"
|
||||
SITE_DEFAULT_LANG: "Προεπιλεγμένη γλώσσα"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "Προεπιλεγμένη γλώσσα που θα χρησιμοποιείται από <HTML> tag του θέματος"
|
||||
SITE_DEFAULT_LANG_HELP: "Προεπιλεγμένη γλώσσα που θα χρησιμοποιείται από <HTML> tag του θέματος"
|
||||
DEFAULT_AUTHOR: "Προεπιλεγμένος συντάκτης"
|
||||
DEFAULT_AUTHOR_HELP: "Ένα προεπιλεγμένο όνομα συντάκτη, που χρησιμοποιείται συχνά στα θέματα ή στο περιεχόμενο της σελίδας"
|
||||
DEFAULT_EMAIL: "Προεπιλεγμένη διεύθυνση ηλεκτρονικού ταχυδρομείου"
|
||||
DEFAULT_EMAIL_HELP: "Μία ηλεκτρονική διεύθυνση email για να χρησιμοποιηθεί σε θέματα ή σελίδες"
|
||||
TAXONOMY_TYPES: "Τύποι ταξινομίας"
|
||||
TAXONOMY_TYPES_HELP: "Τύποι ταξινόμησης πρέπει να οριστούν εδώ εάν θέλετε να τους χρησιμοποιήσετε σε σελίδες"
|
||||
PAGE_SUMMARY: "Περίληψη Σελίδας"
|
||||
ENABLED: "Ενεργοποιημένη"
|
||||
ENABLED_HELP: "Ενεργοποίηση σύνοψης σελίδας (η σύνοψη επιστρέφει το ίδιο με το περιεχόμενο της σελίδας)"
|
||||
'YES': "Ναι"
|
||||
'NO': "Όχι"
|
||||
SUMMARY_SIZE: "Μέγεθος Περίληψης"
|
||||
SUMMARY_SIZE_HELP: "Το πλήθος των χαρακτήρων μίας σελίδας που θα χρησιμοποιηθεί για τη σύνοψη της σελίδας"
|
||||
FORMAT: "Μορφοποίηση"
|
||||
FORMAT_HELP: "short = χρησιμοποίησε την πρώτη εμφάνιση του delimiter ή την υπέρβαση του πλήθους χαρακτήρων; long = η σύνοψη θα αγνοηθεί"
|
||||
SHORT: "Σύντομη"
|
||||
LONG: "Εκτεταμένη"
|
||||
DELIMITER: "Διαχωριστικό"
|
||||
DELIMITER_HELP: "Ο οριοθέτης σύνοψης (προεπιλογή ' ===')"
|
||||
METADATA: "Μεταδεδομένα"
|
||||
METADATA_HELP: "Προεπιλεγμένες τιμές μεταδεδομένων που θα εμφανίζονται σε κάθε σελίδα εκτός εάν παρακάμπτονται από την εκάστοτε σελίδα"
|
||||
NAME: "Όνομα"
|
||||
CONTENT: "Περιεχόμενο"
|
||||
REDIRECTS_AND_ROUTES: "Ανακατευθύνσεις και Διαδρομές"
|
||||
CUSTOM_REDIRECTS: "Προσαρμοσμένες Ανακατευθύνσεις"
|
||||
CUSTOM_REDIRECTS_HELP: "διαδρομές για την ανακατεύθυνση σε άλλες σελίδες. Η αντικατάσταση με μία κανονική παράσταση είναι έγκυρη"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
|
||||
CUSTOM_ROUTES: "Προσαρμοσμένες Διαδρομές"
|
||||
CUSTOM_ROUTES_HELP: "διαδρομές για την ανακατεύθυνση σε άλλες σελίδες. Η αντικατάσταση με μία κανονική παράσταση είναι έγκυρη"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
|
||||
FILE_STREAMS: "File Streams"
|
||||
DEFAULT: "Προεπιλογή"
|
||||
PAGE_MEDIA: "Σελίδα Media"
|
||||
OPTIONS: "Επιλογές"
|
||||
PUBLISHED: "Δημοσιευμένο"
|
||||
PUBLISHED_HELP: "Από προεπιλογή, μια σελίδα δημοσιεύεται κατευθείαν, εκτός αν ορίσετε την επιλογή published: false, εάν το publish_date αναφέρεται σε μελλοντική στιγμή, ή αν το unpublish_date αναφέρεται στο παρελθόν"
|
||||
DATE: "Ημερομηνία"
|
||||
DATE_HELP: "Η μεταβλητή date σας επιτρέπει να ορίσετε συγκεκριμένα μία ημερομηνία που να σχετίζεται με τη σελίδα αυτή."
|
||||
PUBLISHED_DATE: "Ημερομηνία δημοσίευσης"
|
||||
PUBLISHED_DATE_HELP: "Μπορεί να δοθεί μία ημερομηνία για την αυτόματη δημοσίευση της ανάρτησης."
|
||||
UNPUBLISHED_DATE: "Ημερομηνία παύσης δημοσίευσης"
|
||||
UNPUBLISHED_DATE_HELP: "Μπορεί να δοθεί μία ημερομηνία για την αυτόματη ιδιωτικοποίηση της ανάρτησης."
|
||||
ROBOTS: "Ρομπότ"
|
||||
TAXONOMIES: "Ταξινομίες"
|
||||
TAXONOMY: "Ταξινομία"
|
||||
ADVANCED: "Γιά Προχωρημένους"
|
||||
SETTINGS: "Ρυθμίσεις"
|
||||
FOLDER_NUMERIC_PREFIX: "Αριθμητικό Πρόθεμα Φακέλου"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Αριθμητικό πρόθεμα που παρέχει χειροκίνητη ταξινόμηση και υπονοεί την ορατότητα"
|
||||
FOLDER_NAME: "Όνομα φακέλου"
|
||||
FOLDER_NAME_HELP: "Το όνομα του φακέλου που θα χρησιμοποιηθεί στο σύστημα αρχείων γι αυτή τη σελίδα"
|
||||
PARENT: "Γονικό"
|
||||
DEFAULT_OPTION_ROOT: "-Ρίζα-"
|
||||
DEFAULT_OPTION_SELECT: "-Επιλέξτε-"
|
||||
DISPLAY_TEMPLATE: "Εμφάνιση Προτύπου"
|
||||
DISPLAY_TEMPLATE_HELP: "Το τύπος της σελίδας που ορίζει ποιο twig template θα χρησιμοποιηθεί για να αποδοθεί η σελίδα"
|
||||
ORDERING: "Ταξινόμηση"
|
||||
PAGE_ORDER: "Σειρά Σελίδων"
|
||||
OVERRIDES: "Παρακάμψεις"
|
||||
MENU: "Μενού"
|
||||
MENU_HELP: "Η συμβολοσειρά που θα χρησιμοποιηθεί σε ένα μενού. Εάν δεν έχει καθοριστεί, θα χρησιμοποιηθεί ο τίτλος."
|
||||
SLUG: "Slug"
|
||||
SLUG_HELP: "Η μεταβλητή slug σας επιτρέπει να ορίσετε συγκεκριμένα το sub-URL μίας σελίδας"
|
||||
SLUG_VALIDATE_MESSAGE: "Ένα slug πρέπει να περιέχει μόνο πεζούς αλφαριθμητικούς χαρακτήρες και παύλες"
|
||||
PROCESS: "Διαδικασία"
|
||||
PROCESS_HELP: "Ελέγχει τον τρόπο που οι σελίδες δέχονται επεξεργασία. Μπορεί να ρυθμιστεί για την εκάστοτε σελίδα ή καθολικά"
|
||||
DEFAULT_CHILD_TYPE: "Προεπιλεγμένος τύπος Child"
|
||||
USE_GLOBAL: "Χρησιμοποίησε τη Global τιμή"
|
||||
ROUTABLE: "Μπορεί να δρομολογηθεί"
|
||||
ROUTABLE_HELP: "Εάν η σελίδα είναι προσβάσιμα από μια διεύθυνση URL"
|
||||
CACHING: "Προσωρινή μνήμη αποθήκευσης"
|
||||
VISIBLE: "Ορατή"
|
||||
VISIBLE_HELP: "Προσδιορίζει αν μια σελίδα είναι ορατή στην πλοήγηση."
|
||||
DISABLED: "Ανενεργή"
|
||||
ITEMS: "Αντικείμενα"
|
||||
ORDER_BY: "Ταξινόμιση κατά"
|
||||
ORDER: "Ταξινόμηση"
|
||||
FOLDER: "Φάκελος"
|
||||
ASCENDING: "Αύξουσα"
|
||||
DESCENDING: "Φθίνουσα"
|
||||
PAGE_TITLE: "Τίτλος σελίδας"
|
||||
PAGE_TITLE_HELP: "Ο τίτλος της σελίδας"
|
||||
PAGE: "Σελίδα"
|
||||
FRONTMATTER: "Frontmatter"
|
||||
FILENAME: "Όνομα αρχείου"
|
||||
PARENT_PAGE: "Γονική σελίδα"
|
||||
HOME_PAGE: "Αρχική σελίδα"
|
||||
HOME_PAGE_HELP: "Η σελίδα που το Grav θα χρησιμοποιήσει ως προεπιλεγμένη σελίδα προσγείωσης"
|
||||
DEFAULT_THEME: "Προεπιλεγμένο Θέμα"
|
||||
DEFAULT_THEME_HELP: "Ορίσετε το προεπιλεγμένο θέμα που θα χρησιμοποιεί το Grav (η προεπιλογή είναι το θέμα Antimatter)"
|
||||
TIMEZONE: "Ζώνη ώρας"
|
||||
TIMEZONE_HELP: "Παράκαμψη της προεπιλεγμένης ζώνης ώρας του διακομιστή"
|
||||
SHORT_DATE_FORMAT: "Σύντομη μορφή ημερομηνίας"
|
||||
SHORT_DATE_FORMAT_HELP: "Ρύθμισε τη σύντομη μορφή ημερομηνίας που θα χρησιμοποιείται από τα θέματα"
|
||||
LONG_DATE_FORMAT: "Εκτενής μορφή ημερομηνίας"
|
||||
LONG_DATE_FORMAT_HELP: "Ρύθμισε την εκτενή μορφή ημερομηνίας που θα χρησιμοποιείται από τα θέματα"
|
||||
DEFAULT_ORDERING: "Προεπιλεγμένη Ταξινόμηση"
|
||||
DEFAULT_ORDERING_HELP: "Οι σελίδες μίας λίστας θα εμφανίζονται χρησιμοποιώντας την σειρά εκτός αν αυτό παρακαμφθεί"
|
||||
DEFAULT_ORDERING_DEFAULT: "Default - βάσει του όνομα φακέλου"
|
||||
DEFAULT_ORDERING_FOLDER: "Folder - βάσει του όνομα φακέλου"
|
||||
DEFAULT_ORDERING_TITLE: "Title - βάσει του τίτλου που έχει οριστεί στο header"
|
||||
DEFAULT_ORDERING_DATE: "Date - βάσει της ημερομηνίας που έχει οριστεί στο header"
|
||||
DEFAULT_ORDER_DIRECTION: "Προεπιλεγμένη σειρά εμφάνισης"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "Η κατεύθυνση των σελίδων σε μια λίστα"
|
||||
DEFAULT_PAGE_COUNT: "Προεπιλεγμένο πλήθος σελίδων"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Προεπιλεγμένο μέγιστο πλήθος σελίδων σε μία λίστα"
|
||||
DATE_BASED_PUBLISHING: "Δημοσίευση βάσει ημερομηνίας"
|
||||
DATE_BASED_PUBLISHING_HELP: "Αυτόματη δημοσίευση ή ιδιωτικοποίηση των αναρτήσεων βασισμένη στην ημερομηνία τους"
|
||||
EVENTS: "Συμβάντα"
|
||||
EVENTS_HELP: "Ενεργοποίησε ή απενεργοποίησε συγκεκριμένα events. Απενεργοποιώντας τα ίσως διακοπεί η λειτουργία κάποιου προσθέτου"
|
||||
REDIRECT_DEFAULT_ROUTE: "Ανακατεύθυνση της προεπιλεγμένης διαδρομής"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Αυτόματη ανακατεύθυνση στην προεπιλεγμένη διαδρομή μιας σελίδας"
|
||||
LANGUAGES: "Γλώσσες"
|
||||
SUPPORTED: "Υποστηρίζεται"
|
||||
SUPPORTED_HELP: "Λίστα χωρισμένη με κόμματα κωδικών γλωσσών 2 γραμμάτων (π.χ. 'en,fr,de')"
|
||||
TRANSLATIONS_FALLBACK: "Εναλλακτική μετάφραση"
|
||||
TRANSLATIONS_FALLBACK_HELP: "Fallback σε κάποια άλλη μετάφραση εάν η επιλεγμένη γλώσσα δεν έχει μεταφραστεί"
|
||||
ACTIVE_LANGUAGE_IN_SESSION: "Ενεργή γλώσσα κατά τη συνεδρία"
|
||||
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Αποθήκευση της ενεργής γλώσσας στη συνεδρία"
|
||||
HTTP_HEADERS: "Κεφαλίδες HTTP"
|
||||
EXPIRES: "Λήξη"
|
||||
EXPIRES_HELP: "Ορίζει την κεφαλίδα λήξης. Η τιμή είναι σε δευτερόλεπτα."
|
||||
CACHE_CONTROL: "HTTP Cache-Control"
|
||||
CACHE_CONTROL_HELP: "Ορίστε μια έγκυρη τιμή cache-ελέγχου όπως 'όχι-cache, όχι-αποθήκευση, να-επανεπικυρωθεί'"
|
||||
LAST_MODIFIED: "Τελευταία τροποποίηση"
|
||||
LAST_MODIFIED_HELP: "Ορίζει την τελευταία τροποποιημένη κεφαλίδα που μπορεί να σας βοηθήσει να βελτιστοποιήσετε τον διακομιστή μεσολάβησης και την προσωρινή αποθήκευση του προγράμματος περιήγησης"
|
||||
ETAG: "ETag"
|
||||
ETAG_HELP: "Καθορίζει την κεφαλίδα etag για να βοηθήσει στον εντοπισμό όταν μια σελίδα έχει τροποποιηθεί"
|
||||
VARY_ACCEPT_ENCODING: "Ποικίλλει η δεκτή κωδικοποίηση"
|
||||
VARY_ACCEPT_ENCODING_HELP: "Ορίζει την κεφαλίδα «Ποικίλλει: Δεκτή Κωδικοποίηση» για να βοηθήσει με το διακομιστή μεσολάβησης και την προσωρινή αποθήκευση CDN"
|
||||
MARKDOWN_EXTRA: "Markdown extra"
|
||||
MARKDOWN_EXTRA_HELP: "Ενεργοποιήσετε την προεπιλεγμένη υποστήριξη για Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
|
||||
MARKDOWN_EXTRA_ESCAPE_FENCES: "Διάφυγε τα HTML στοιχεία σε markdown extra fences"
|
||||
MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Διαφεύγει τα HTML στοιχεία σε markdown extra fences"
|
||||
AUTO_LINE_BREAKS: "Αυτόματες αλλαγές γραμμών"
|
||||
AUTO_LINE_BREAKS_HELP: "Ενεργοποιήσετε την υποστήριξη για αυτόματη αλλαγή γραμμής στη markdown"
|
||||
AUTO_URL_LINKS: "Αυτόματες συνδέσεις URL"
|
||||
AUTO_URL_LINKS_HELP: "Ενεργοποιήσετε την αυτόματη μετατροπή των διευθύνσεων URL σε HTML υπερ-συνδέσεις"
|
||||
ESCAPE_MARKUP: "Σημειοθέτηση αποσπάσματος"
|
||||
ESCAPE_MARKUP_HELP: "Ετικέτες σήμανσης διαφυγής σε HTML οντότητες"
|
||||
CACHING_HELP: "Γενικός διακόπτης ενεργοποίησης/απενεργοποίησης της προσωρινής αποθήκευσης του Grav"
|
||||
CACHE_CHECK_METHOD: "Μέθοδος ελέγχου μνήμης προσωρινής αποθήκευσης (cache)"
|
||||
CACHE_CHECK_METHOD_HELP: "Επιλέξτε τη μέθοδο που χρησιμοποιεί το Grav για να ελέγξει αν έχουν τροποποιηθεί αρχεία σελίδων."
|
||||
CACHE_DRIVER: "Πρόγραμμα οδήγησης της μνήμης cache"
|
||||
CACHE_DRIVER_HELP: "Επιλέξτε ποιο πρόγραμμα οδήγησης της προσωρινής αποθήκευσης να χρησιμοποιήσει το Grav. Ο 'Αυτόματος εντοπισμός' προσπαθεί να βρει το καλύτερο για εσάς"
|
||||
CACHE_PREFIX: "Πρόθεμα cache"
|
||||
CACHE_PREFIX_HELP: "Ένα αναγνωριστικό για το μέρος του κλειδιού Grav. Μην το αλλάξετε εκτός και αν γνωρίζετε τι κάνετε."
|
||||
CACHE_PREFIX_PLACEHOLDER: "Προέρχεται από τη βασική διεύθυνση URL (παράκαμψη εισάγοντας τυχαία συμβολοσειρά)"
|
||||
LIFETIME: "Διάρκεια ζωής"
|
||||
LIFETIME_HELP: "Ορίζει τη διάρκεια ζωής της cache σε δευτερόλεπτα. 0 = άπειρο"
|
||||
GZIP_COMPRESSION: "Συμπίεση Gzip"
|
||||
GZIP_COMPRESSION_HELP: "Ενεργοποιήστε τη GZip συμπίεση της σελίδας του Grav για αυξημένη απόδοση."
|
||||
TWIG_TEMPLATING: "Πρότυπα Twig"
|
||||
TWIG_CACHING: "Προσωρινή αποθήκευση Twig"
|
||||
TWIG_CACHING_HELP: "Ελέγχει το μηχανισμό προσωρινής αποθήκευσης του Twig. Αφήστε το ενεργοποιημένο για καλύτερη απόδοση."
|
||||
TWIG_DEBUG: "Εντοπισμός σφαλμάτων Twig"
|
||||
TWIG_DEBUG_HELP: "Επιτρέπει την επιλογή της μη φόρτωσης της επέκτασης Αποσφαλμάτωση Twig"
|
||||
DETECT_CHANGES: "Ανίχνευση μεταβολών"
|
||||
DETECT_CHANGES_HELP: "Το Twig θα μεταγλωττίσει αυτόματα την προσωρινή μνήμη του αν εντοπίσει αλλαγές σε πρότυπα Twig"
|
||||
AUTOESCAPE_VARIABLES: "Εφαρμογή Autoescape στις μεταβλητές"
|
||||
AUTOESCAPE_VARIABLES_HELP: "Κάνει autoescape όλες τις μεταβλητές. Αυτό πιθανότατα θα σπάσει το site σας"
|
||||
ASSETS: "Αντικείμενα"
|
||||
CSS_PIPELINE: "Αγωγός CSS"
|
||||
CSS_PIPELINE_HELP: "Ο αγωγός CSS είναι η ενοποίηση πολλαπλών CSS πόρων σε ένα αρχείο"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS: "Συμπεριλάβετε εξωτερικούς αγωγούς CSS"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Οι εξωτερικές διευθύνσεις URL μερικές φορές έχουν σχετικές αναφορές αρχείων και δεν θα έπρεπε να διοχετεύονται"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES: "Πρώτα επεξεργασία CSS αγωγού"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Επεξεργάζεται τον CSS αγωγό πριν από οποιαδήποτε άλλη αναφορά CSS που δεν περιλαμβάνεται"
|
||||
CSS_MINIFY: "Συμπίεση της CSS"
|
||||
CSS_MINIFY_HELP: "Ελαχιστοποίησε το CSS κατά τη διοχέτευση"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE: "Παράκαψη ελαχιστοποίησης CSS για Windows"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Παράκαμψη Ελαχιστοποίησης για Windows. False από προεπιλογή λόγω ThreadStackSize"
|
||||
CSS_REWRITE: "Επανεγγραφή CSS"
|
||||
CSS_REWRITE_HELP: "Επανεγγραφή κάθε αναφορικού CSS URL κατά τη διοχέτευση"
|
||||
JAVASCRIPT_PIPELINE: "Αγωγός JavaScript"
|
||||
JAVASCRIPT_PIPELINE_HELP: "Ο αγωγός JS είναι η ενοποίηση πολλαπλών JS πόρων σε ένα αρχείο"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Συμπεριλάβετε εξωτερικούς αγωγούς JS"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Οι εξωτερικές διευθύνσεις URL μερικές φορές έχουν σχετικές αναφορές αρχείων και δεν θα έπρεπε να διοχετεύονται"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Πρώτα επεξεργασία JS αγωγού"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Επεξεργάζεται τον JS αγωγό πριν από οποιαδήποτε άλλη αναφορά JS που δεν περιλαμβάνεται"
|
||||
JAVASCRIPT_MINIFY: "Συμπίεση του κώδικα JavaScript"
|
||||
JAVASCRIPT_MINIFY_HELP: "Ελαχιστοποίησε το JS κατά τη διοχέτευση"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS: "Ενεργοποιήστε τις χρονοσημάνσεις στους διαθέσιμους πόρους"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Ενεργοποίηση χρονοσημάνσεων στους διαθέσιμους πόρους"
|
||||
COLLECTIONS: "Συλλογές"
|
||||
ERROR_HANDLER: "Πρόγραμμα χειρισμού σφαλμάτων"
|
||||
DISPLAY_ERRORS: "Εμφάνιση των μηνυμάτων λάθους"
|
||||
DISPLAY_ERRORS_HELP: "Εμφάνιση πλήρους backtrace στιλ σελίδας σφάλματος"
|
||||
LOG_ERRORS: "Καταγραφή σφαλμάτων σε αρχείο"
|
||||
LOG_ERRORS_HELP: "Καταγραφή σφαλμάτων στο φάκελο /logs"
|
||||
DEBUGGER: "Πρόγραμμα εντοπισμού σφαλμάτων"
|
||||
DEBUGGER_HELP: "Ενεργοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων του Grav και τις ακόλουθες ρυθμίσεις"
|
||||
DEBUG_TWIG: "Εκσφαλμάτωση του Twig"
|
||||
DEBUG_TWIG_HELP: "Ενεργοποίηση του εντοπισμού σφαλμάτων στα πρότυπα του Twig"
|
||||
SHUTDOWN_CLOSE_CONNECTION: "Τερματισμός στενής σύνδεσης"
|
||||
SHUTDOWN_CLOSE_CONNECTION_HELP: "Κλείσε τη σύνδεση πριν από την κλήση onShutdown(). False για εντοπισμό σφαλμάτων"
|
||||
DEFAULT_IMAGE_QUALITY: "Προεπιλεγμένη ποιότητα εικόνας"
|
||||
DEFAULT_IMAGE_QUALITY_HELP: "Η προεπιλεγμένη ποιότητα εικόνας που θα χρησιμοποιείται όταν γίνεται αναδειγματοληψία ή προσωρινή αποθήκευση εικόνων (85%)"
|
||||
CACHE_ALL: "Προσωρινή αποθήκευση όλων των εικόνων"
|
||||
CACHE_ALL_HELP: "Πέρασε όλες τις εικόνες μέσω του Grav cache συστήματος ακόμη και αν δεν έχουν επεξεργασία μέσων"
|
||||
IMAGES_DEBUG: "Υδατογράφημα αποσφαλμάτωσης εικόνας"
|
||||
IMAGES_DEBUG_HELP: "Εμφάνιση μιας επικάλυψης πάνω από τις εικόνες που δείχνει το βάθος pixel της εικόνας, όταν εργάζεστε με retina για παράδειγμα"
|
||||
UPLOAD_LIMIT: "Όριο μεταφόρτωσης αρχείων"
|
||||
UPLOAD_LIMIT_HELP: "Ορίσετε το μέγιστο μέγεθος μεταφόρτωσης σε byte (0 είναι απεριόριστο)"
|
||||
ENABLE_MEDIA_TIMESTAMP: "Ενεργοποιήστε τις χρονοσημάνσεις στα μέσα"
|
||||
ENABLE_MEDIA_TIMESTAMP_HELP: "Προσθέτει μια χρονική σήμανση με βάση την τελευταία ημερομηνία τροποποίησης σε κάθε στοιχείο πολυμέσων"
|
||||
SESSION: "Συνεδρία"
|
||||
SESSION_ENABLED_HELP: "Ενεργοποιήσετε την υποστήριξη συνεδριών λειτουργίας εντός Grav"
|
||||
SESSION_NAME_HELP: "Ένα αναγνωριστικό που χρησιμοποιείται για το σχηματισμό του όνόματος του cookie της συνεδρίας"
|
||||
ABSOLUTE_URLS: "Απόλυτες διευθύνσεις URL"
|
||||
ABSOLUTE_URLS_HELP: "Απόλυτες ή σχετικές διευθύνσεις URL για «base_url»"
|
||||
PARAMETER_SEPARATOR: "Διαχωριστικό παραμέτρων"
|
||||
PARAMETER_SEPARATOR_HELP: "Διαχωριστικό για τις παραμέτρους που διαβιβάστηκαν, που μπορούν να αλλάξουν για τον Apache στα Windows"
|
||||
TASK_COMPLETED: "Η εργασία ολοκληρώθηκε"
|
||||
EVERYTHING_UP_TO_DATE: "Τα πάντα είναι ενημερωμένα"
|
||||
UPDATES_ARE_AVAILABLE: "υπάρχουν διαθέσιμες ενημερώσεις"
|
||||
IS_AVAILABLE_FOR_UPDATE: "είναι διαθέσιμη για ενημέρωση"
|
||||
IS_NOW_AVAILABLE: "είναι τώρα διαθέσιμη"
|
||||
CURRENT: "Τρέχουσα έκδοση"
|
||||
UPDATE_GRAV_NOW: "Αναβαθμίστε το Grav τώρα"
|
||||
GRAV_SYMBOLICALLY_LINKED: "Το Grav είναι symlinked. Δε θα υπάρχει διαθέσιμη αναβάθμιση"
|
||||
UPDATING_PLEASE_WAIT: "Ενημέρωση... παρακαλώ περιμένετε, λήψη"
|
||||
OF_THIS: "αυτό"
|
||||
OF_YOUR: "σας"
|
||||
HAVE_AN_UPDATE_AVAILABLE: "έχει διαθέσιμη ενημέρωση"
|
||||
SAVE_AS: "Αποθήκευση ως"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη σελίδα και όλα τα τέκνα; Εάν η σελίδα είναι μεταφρασμένη σε άλλες γλώσσες, αυτές οι μεταφράσεις θα κρατηθούν και πρέπει να διαγραφούν ξεχωριστά. Αλλιώς ο φάκελος σελίδας θα διαγραφεί μαζί με τις υποσελίδες. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."
|
||||
AND: "και"
|
||||
UPDATE_AVAILABLE: "Υπάρχει διαθέσιμη ενημέρωση"
|
||||
METADATA_KEY: "Κλειδί (π.χ. «λέξεις-κλειδιά»)"
|
||||
METADATA_VALUE: "Τιμή (π.χ. «Blog, Grav»)"
|
||||
USERNAME_HELP: "Το όνομα χρήστη πρέπει να είναι μεταξύ 3 και 16 χαρακτήρες, με πεζά, αριθμούς, κάτω παύλες και ενωτικά. Κεφαλαία γράμματα, διαστήματα και ειδικοί χαρακτήρες δεν επιτρέπονται"
|
||||
FULLY_UPDATED: "Πλήρως Ενημερωμένο"
|
||||
SAVE_LOCATION: "Τοποθεσία Αποθήκευσης"
|
||||
PAGE_FILE: "Πρότυπο σελίδας"
|
||||
PAGE_FILE_HELP: "Ονομασία αρχείου προτύπου σελίδας, και από προεπιλογή το πρότυπο εμφάνισης για αυτή τη σελίδα"
|
||||
NO_USER_ACCOUNTS: "Δεν βρέθηκε κανένας λογαριασμός χρήστη, παρακαλώ δημιουργήστε έναν πρώτα..."
|
||||
REDIRECT_TRAILING_SLASH: "Ανακατευθύνει την τελική κάθετο"
|
||||
REDIRECT_TRAILING_SLASH_HELP: "Εκτέλεσε μια ανακατεύθυνση 301 αντί για διαφανή χειρισμό των καταληκτικών καθέτων URIs."
|
||||
DEFAULT_DATE_FORMAT: "Μορφή ημερομηνίας σελίδας"
|
||||
DEFAULT_DATE_FORMAT_HELP: "Μορφή ημερομηνίας σελίδας που χρησιμοποιείται από το Grav. Από προεπιλογή, το Grav επιχειρεί να μαντέψει τη μορφή, εντούτοις μπορείτε να ορίσετε μορφή σύμφωνα με τη σύνταξη PHP"
|
||||
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Μάντεψε αυτόματα"
|
||||
IGNORE_FILES: "Αγνόηση αρχείων"
|
||||
IGNORE_FILES_HELP: "Συγκεκριμένα αρχεία που θα αγνοηθούν κατά την επεξεργασία σελίδων"
|
||||
IGNORE_FOLDERS: "Αγνόηση φακέλων"
|
||||
IGNORE_FOLDERS_HELP: "Συγκεκριμένοι φάκελοι που θα αγνοηθούν κατά την επεξεργασία σελίδων"
|
||||
HTTP_ACCEPT_LANGUAGE: "Όρισε την γλώσσα βάσει του φυλλομετρητή"
|
||||
HTTP_ACCEPT_LANGUAGE_HELP: "Μπορείτε να επιλέξετε να δοκιμάσετε να ορίσετε τη γλώσσα που βασίζεται στην ετικέτα κεφαλίδας «http_accept_language» στο πρόγραμμα περιήγησης"
|
||||
OVERRIDE_LOCALE: "Παράκαμψη των Τοπικών Ρυθμίσεων"
|
||||
OVERRIDE_LOCALE_HELP: "Αντικαθιστά τις ρυθμίσεις τοπικότητας στην PHP με βάση την τρέχουσα γλώσσα"
|
||||
REDIRECT: "Ανακατεύθυνση σελίδας"
|
||||
REDIRECT_HELP: "Εισαγάγετε μια διαδρομή σελίδας ή εξωτερική διεύθυνση URL για αυτήν τη σελίδα για να ανακατευθύνετε σε. π.χ. «/κάποια/διαδρομή» ή «http://somesite.com»"
|
||||
PLUGIN_STATUS: "Κατάσταση πρόσθετου"
|
||||
INCLUDE_DEFAULT_LANG: "Περιλαμβάνει την προεπιλεγμένη γλώσσα"
|
||||
INCLUDE_DEFAULT_LANG_HELP: "Αυτό θα προτάξει όλες τις διευθύνσεις URL στην προεπιλεγμένη γλώσσα με την προεπιλεγμένη γλώσσα. π.χ. «/en/blog/my-post»"
|
||||
ALLOW_URL_TAXONOMY_FILTERS: "Φίλτρα Ταξινόμησης URL"
|
||||
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Συλλογές βασισμένες σε σελίδα σας επιτρέπουν να φιλτράρετε μέσω «/taxonomy:value»."
|
||||
REDIRECT_DEFAULT_CODE: "Προεπιλεγμένος κωδικός ανακατεύθυνσης"
|
||||
REDIRECT_DEFAULT_CODE_HELP: "Ο κωδικός κατάστασης HTTP που θα χρησιμοποιηθεί για ανακατευθύνσεις"
|
||||
IGNORE_HIDDEN: "Παράβλεψη των κρυφών"
|
||||
IGNORE_HIDDEN_HELP: "Παράβλεψη όλων των αρχείων και των φακέλων που ξεκινούν με μια ΤΕΛΕΙΑ"
|
||||
WRAPPED_SITE: "Wrapped site"
|
||||
WRAPPED_SITE_HELP: "Για να γνωρίζουν τα θέματα/plugins αν το Grav είναι wrapped από άλλη πλατφόρμα"
|
||||
FALLBACK_TYPES: "Επιτρεπόμενοι εναλλακτικοί τύποι"
|
||||
FALLBACK_TYPES_HELP: "Επιτρεπτοί τύποι αρχείων που μπορούν να βρεθούν αν έχετε αποκτήσει πρόσβαση μέσω της οδού Σελίδα. Προεπιλέγει οποιοδήποτε τύπο μέσων που υποστηρίζονται."
|
||||
INLINE_TYPES: "Ένθετοι εναλλακτικοί τύποι"
|
||||
INLINE_TYPES_HELP: "Μια λίστα των τύπων αρχείων που πρέπει να εμφανίζονται ένθετα αντί να γίνεται λήψη αυτών"
|
||||
APPEND_URL_EXT: "Προσάρτηση επέκτασης URL"
|
||||
APPEND_URL_EXT_HELP: "Θα προσθέσει μια προσαρμοσμένη επέκταση στο URL της Σελίδας. Σημείωση, αυτό θα σημαίνει ότι το Grav θα αναζητήσει ' <template>. <extension>. twig ' πρότυπο"
|
||||
PAGE_MODES: "Λειτουργίες Σελίδας"
|
||||
PAGE_TYPES: "Τύποι σελίδας"
|
||||
ACCESS_LEVELS: "Επίπεδα πρόσβασης"
|
||||
GROUPS: "Ομάδες"
|
||||
GROUPS_HELP: "Λίστα των ομάδων που ο χρήστης είναι μέλος"
|
||||
ADMIN_ACCESS: "Πρόσβαση Διαχειριστή"
|
||||
SITE_ACCESS: "Πρόσβαση στον Ιστοχώρο"
|
||||
INVALID_SECURITY_TOKEN: "Το διακριτικό ασφαλείας δεν είναι έγκυρο"
|
||||
ACTIVATE: "Eνεργοποίηση"
|
||||
TWIG_UMASK_FIX: "Unmask Fix"
|
||||
TWIG_UMASK_FIX_HELP: "Από προεπιλογή το Twig δημιουργεί προσωρινά αρχεία ως 0755, η διόρθωση τα αλλάζει σε 0775"
|
||||
CACHE_PERMS: "Δικαιώματα μνήμης cache"
|
||||
CACHE_PERMS_HELP: "Προεπιλεγμένα δικαιώματα φακέλων cache. Συνήθως 0755 ή 0775"
|
||||
REMOVE_SUCCESSFUL: "Επιτυχής Κατάργηση"
|
||||
REMOVE_FAILED: "Η Κατάργηση Απέτυχε"
|
||||
HIDE_HOME_IN_URLS: "Απόκρυψη της αρχικής διαδρομής στις διευθύνσεις URL"
|
||||
HIDE_HOME_IN_URLS_HELP: "Θα εξασφαλίσει ότι οι προεπιλεγμένες διαδρομές για όλες τις σελίδες κάτω από την αρχική δε θα αναφέρουν την κανονική διαδρομή της"
|
||||
TWIG_FIRST: "Επεξεργασία πρώτα των αρχείων του Twig"
|
||||
TWIG_FIRST_HELP: "Εάν έχετε ενεργοποιήσει την επεξεργασία σελίδων Twig, τότε μπορείτε να ρυθμίσετε το Twig να επεξεργαστεί πριν ή μετά από τη markdown"
|
||||
SESSION_SECURE: "Ασφαλής"
|
||||
SESSION_SECURE_HELP: "Εάν είναι αληθές, δείχνει ότι η επικοινωνία για αυτό το cookie πρέπει να γίνει πάνω από μιά κρυπτογραφημένη μετάδοση. Προειδοποίηση: Ενεργοποιήστε την μόνο στις τοποθεσίες που εκτελούνται αποκλειστικά σε HTTPS"
|
||||
SESSION_HTTPONLY: "HTTP μόνο"
|
||||
SESSION_HTTPONLY_HELP: "Εάν είναι αληθές, δείχνει ότι τα cookies πρέπει να χρησιμοποιούνται μόνο μέσω HTTP, και δεν επιτρέπεται η τροποποίηση μέσω JavaScript"
|
||||
REVERSE_PROXY: "Αντίστροφoς Διακομιστής Μεσολάβησης"
|
||||
REVERSE_PROXY_HELP: "Ενεργοποιήστε το άν είστε πίσω από έναν διακομιστή αντίστροφης μεσολάβηση αντιμετωπίζετε δυσκολία με τις διευθύνσεις URL που περιέχουν εσφαλμένες θύρες"
|
||||
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Μη έγκυρος πρόλογος (frontmatter), αδύνατη η αποθήκευση"
|
||||
ADD_FOLDER: "Προσθήκη φακέλου"
|
||||
PROXY_URL: "Διεύθυνση URL του διακομιστή μεσολάβησης"
|
||||
PROXY_URL_HELP: "Εισάγετε το Διακομιστή proxy ή τη διεύθυνση IP και τη ΘΥΡΑ (PORT)"
|
||||
NOTHING_TO_SAVE: "Δεν υπάρχει τίποτα γιά αποθήκευση"
|
||||
FILE_ERROR_ADD: "Παρουσιάστηκε σφάλμα κατά την προσθήκη του αρχείου"
|
||||
FILE_ERROR_UPLOAD: "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτωση του αρχείου"
|
||||
FILE_UNSUPPORTED: "Μη υποστηριζόμενος τύπος αρχείου"
|
||||
ADD_ITEM: "Προσθήκη στοιχείου"
|
||||
FILE_TOO_LARGE: "Το αρχείο είναι πολύ μεγάλο για να φορτωθεί, το μέγιστο επιτρεπόμενο είναι %s σύμφωνα με <br>τις ρυθμίσεις της PHP. Αυξήστε τη ρύθμιση PHP σας `post_max_size`"
|
||||
INSTALLING: "Γίνεται εγκατάσταση"
|
||||
LOADING: "Φόρτωση…"
|
||||
DEPENDENCIES_NOT_MET_MESSAGE: "Οι ακόλουθες εξαρτήσεις πρέπει να εκπληρωθούν πρώτα:"
|
||||
ERROR_INSTALLING_PACKAGES: "Σφάλμα κατά την εγκατάσταση πακέτων"
|
||||
INSTALLING_DEPENDENCIES: "Εγκατάσταση εξαρτήσεων..."
|
||||
INSTALLING_PACKAGES: "Εγκατάσταση πακέτων..."
|
||||
PACKAGES_SUCCESSFULLY_INSTALLED: "Τα πακέτα εγκαταστάθηκαν με επιτυχία."
|
||||
READY_TO_INSTALL_PACKAGES: "Είστε έτοιμοι να εγκαταστήσετε τα πακέτα"
|
||||
PACKAGES_NOT_INSTALLED: "Τα πακέτα δεν εγκαταστάθηκαν"
|
||||
PACKAGES_NEED_UPDATE: "Πακέτα που έχουν ήδη εγκατασταθεί, αλλά πολύ παλιά"
|
||||
PACKAGES_SUGGESTED_UPDATE: "Πακέτα που είναι ήδη εγκατεστημένα, καθώς και η έκδοση είναι εντάξει, αλλά θα ενημερώνονται"
|
||||
REMOVE_THE: "Αφαιρέστε το %s"
|
||||
CONFIRM_REMOVAL: "Είστε βέβαιοι ότι θέλετε να διαγράψετε το %s; ?"
|
||||
REMOVED_SUCCESSFULLY: "Το %s καταργήθηκε με επιτυχία"
|
||||
ERROR_REMOVING_THE: "Σφάλμα κατά την αφαίρεση του %s"
|
||||
ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "Το %s απαιτεί τις ακόλουθες εξαρτήσεις, που δεν απαιτούνται από άλλα εγκατεστημένα πακέτα. Εάν δεν τις χρησιμοποιείτε, μπορείτε να τις καταργήσετε απευθείας από εδώ."
|
||||
READY_TO_UPDATE_PACKAGES: "Είστε έτοιμοι να ενημερώσετε τα πακέτα"
|
||||
ERROR_UPDATING_PACKAGES: "Σφάλμα κατά την ενημέρωση πακέτων."
|
||||
UPDATING_PACKAGES: "Ενημέρωση πακέτων..."
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "Τα πακέτα ενημερώθηκαν με επιτυχία."
|
||||
UPDATING: "Ενημέρωση"
|
||||
GPM_RELEASES: "GPM κυκλοφορίες"
|
||||
GPM_RELEASES_HELP: "Επιλέξτε «Testing» για να εγκαταστήσετε beta ή testing εκδόσεις"
|
||||
GPM_METHOD: "Μέθοδος Remote Fetch"
|
||||
GPM_METHOD_HELP: "Όταν οριστεί σε αυτόματο, το Grav θα καθορίσει αν το fopen είναι διαθέσιμο και θα το χρησιμοποιήσει, αλλιώς θα επιστρέψει στο cURL. Για να επιβάλετε τη χρήση του ενός ή του άλλου αλλάξτε τη ρύθμιση."
|
||||
AUTO: "Αυτόματο"
|
||||
FOPEN: "fopen"
|
||||
CURL: "cURL"
|
||||
STABLE: "Stable"
|
||||
TESTING: "Testing"
|
||||
FRONTMATTER_PROCESS_TWIG: "Επεξεργασία frontmatter Twig"
|
||||
FRONTMATTER_PROCESS_TWIG_HELP: "Όταν ενεργοποιηθεί μπορείτε να χρησιμοποιήσετε μεταβλητές Twig config στο frontmatter"
|
||||
FRONTMATTER_IGNORE_FIELDS: "Παράβλεψη frontmatter πεδίων"
|
||||
FRONTMATTER_IGNORE_FIELDS_HELP: "Ορισμένα πεδία frontmatter μπορεί να περιέχουν Twig, αλλά δεν πρέπει να υποστούν επεξεργασία, όπως οι «φόρμες»"
|
||||
PACKAGE_X_INSTALLED_SUCCESSFULLY: "Το πακέτο %s εγκαταστάθηκε με επιτυχία"
|
||||
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Γονική ρύθμιση ταξινόμησης, η ταξινόμηση απενεργοποιήθηκε"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Η σελίδα δεν είναι ορατή, η ταξινόμηση απενεργοποιήθηκε"
|
||||
ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Η ταξινόμηση μέσω διαχειριστή δεν υποστηρίζεται γιατί υπάρχουν περισσότερα από 200 παράγωγα"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Η ταξινόμηση σελίδων είναι απενεργοποιημένη για αυτήν τη σελίδα, επειδή το <strong>Αριθμητικό Πρόθεμα Φακέλου</strong> δεν είναι ενεργοποιημένο"
|
||||
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "ΣΗΜΕΙΩΣΗ: Δεν μπορείτε να προσθέσετε αρχεία πολυμέσων, μέχρι να αποθηκεύσετε τη σελίδα. Απλά κάντε κλικ «Αποθήκευση» στην κορυφή"
|
||||
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "ΣΗΜΕΙΩΣΗ: Η σελίδα πρέπει να αποθηκευτεί πριν να μπορείτε να ανεβάσετε αρχεία σε αυτή."
|
||||
DROP_FILES_HERE_TO_UPLOAD: "Ρίξτε τα αρχεία σας εδώ ή <strong>κάντε κλικ σε αυτόν τον τομέα</strong>"
|
||||
INSERT: "Εισαγωγή"
|
||||
UNDO: "Αναίρεση"
|
||||
REDO: "Ακύρωση Αναίρεσης"
|
||||
HEADERS: "Επικεφαλίδες"
|
||||
BOLD: "Έντονα"
|
||||
ITALIC: "Πλάγια"
|
||||
STRIKETHROUGH: "Διακριτή διαγραφή"
|
||||
SUMMARY_DELIMITER: "Περίληψη οριοθέτη"
|
||||
LINK: "Σύνδεσμος"
|
||||
IMAGE: "Εικόνα"
|
||||
BLOCKQUOTE: "Μπλοκ κειμένου παράθεσης"
|
||||
UNORDERED_LIST: "Μη ταξινομημένη λίστα"
|
||||
ORDERED_LIST: "Ταξινομημένη λίστα"
|
||||
EDITOR: "Επεξεργαστής"
|
||||
PREVIEW: "Προεπισκόπιση"
|
||||
FULLSCREEN: "Πλήρης οθόνη"
|
||||
NON_ROUTABLE: "Απροσπέλαστη"
|
||||
NON_VISIBLE: "Αόρατη"
|
||||
NON_PUBLISHED: "Μη δημοσιευμένες"
|
||||
CHARACTERS: "χαρακτήρες"
|
||||
PUBLISHING: "Δημοσίευση"
|
||||
MEDIA_TYPES: "Τύποι μέσων"
|
||||
IMAGE_OPTIONS: "Επιλογές εικόνας"
|
||||
MIME_TYPE: "Τύπος MIME"
|
||||
THUMB: "Μικρογραφία"
|
||||
TYPE: "Τύπος"
|
||||
FILE_EXTENSION: "Επέκταση αρχείου"
|
||||
LEGEND: "Υπόμνημα σελίδων"
|
||||
MEMCACHE_SERVER: "Διακομιστής Memcache"
|
||||
MEMCACHE_SERVER_HELP: "Η διεύθυνση του διακομιστή Memcache"
|
||||
MEMCACHE_PORT: "Θύρα Memcache"
|
||||
MEMCACHE_PORT_HELP: "Η θύρα του διακομιστή Memcache"
|
||||
MEMCACHED_SERVER: "Διακομιστής Memcached"
|
||||
MEMCACHED_SERVER_HELP: "Η διεύθυνση του διακομιστή Memcached"
|
||||
MEMCACHED_PORT: "Θύρα Memcached"
|
||||
MEMCACHED_PORT_HELP: "Η θύρα του διακομιστή Memcached"
|
||||
REDIS_SERVER: "Διακομιστής Redis"
|
||||
REDIS_SERVER_HELP: "Η διεύθυνση του διακομιστή Redis"
|
||||
REDIS_PORT: "Θύρα Redis"
|
||||
REDIS_PORT_HELP: "Η θύρα του διακομιστή Redis"
|
||||
REDIS_PASSWORD: "Συνθηματικό Redis"
|
||||
ALL: "Όλα"
|
||||
FROM: "από"
|
||||
TO: "έως"
|
||||
RELEASE_DATE: "Ημερομηνία κυκλοφορίας"
|
||||
SORT_BY: "Ταξινόμηση κατά"
|
||||
RESOURCE_FILTER: "Φίλτρο..."
|
||||
FORCE_SSL: "Εξαναγκασμός SSL"
|
||||
FORCE_SSL_HELP: "Γενικός εξαναγκασμός SSL, αν ενεργοποιηθεί όταν η σελίδα είναι προσβάσιμη μέσω HTTP, το Grav αποστέλλει ανακατεύθυνση στη σελίδα HTTPS"
|
||||
NEWS_FEED: "Ροή ειδήσεων"
|
||||
EXTERNAL_URL: "Εξωτερική διεύθυνση URL"
|
||||
CUSTOM_BASE_URL: "Προσαρμοσμένο URL βάσης"
|
||||
CUSTOM_BASE_URL_HELP: "Χρησιμοποιήστε το αν θέλετε να ξαναγράψετε τον τομέα του ιστότοπου ή να χρησιμοποιήσετε κάποιον υποφάκελο, διαφορετικό από εκείνο που χρησιμοποιείται από το Grav. Παράδειγμα: http://localhost"
|
||||
FILEUPLOAD_PREVENT_SELF: 'Δεν είναι δυνατό να χρησιμοποιήσετε «%s» εκτός σελίδων.'
|
||||
FILEUPLOAD_UNABLE_TO_UPLOAD: 'Δεν μπορείτε να ανεβάσετε το αρχείο %s: %s'
|
||||
FILEUPLOAD_UNABLE_TO_MOVE: 'Δεν μπορείτε να μετακινήσετε το αρχείο %s σε «%s»'
|
||||
DROPZONE_CANCEL_UPLOAD: 'Ακύρωση ανεβάσματος'
|
||||
DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτό το ανέβασμα;'
|
||||
DROPZONE_DEFAULT_MESSAGE: 'Ρίξτε τα αρχεία σας εδώ ή <strong>κάντε κλικ σε αυτόν τον τομέα</strong>'
|
||||
DROPZONE_FALLBACK_MESSAGE: 'Το πρόγραμμα περιήγησής σας δεν υποστηρίζει drag and drop ανέβασμα αρχείων.'
|
||||
DROPZONE_FALLBACK_TEXT: 'Παρακαλούμε χρησιμοποιήστε την παρακάτω φόρμα για να φορτώσετε τα αρχεία σας όπως γινόταν παλαιότερα.'
|
||||
DROPZONE_FILE_TOO_BIG: 'Το αρχείο είναι πολύ μεγάλο ({{filesize}}MiB). Μέγιστο μέγεθος αρχείου: {{maxFilesize}}MiB.'
|
||||
DROPZONE_INVALID_FILE_TYPE: "Δεν μπορείτε να ανεβάσετε αρχεία αυτού του τύπου."
|
||||
DROPZONE_MAX_FILES_EXCEEDED: "Δεν μπορείτε να ανεβάσετε άλλα αρχεία."
|
||||
DROPZONE_REMOVE_FILE: "Αφαίρεση αρχείου"
|
||||
DROPZONE_RESPONSE_ERROR: "Ο διακομιστής ανταποκρίθηκε με κωδικό {{statusCode}}."
|
||||
PREMIUM_PRODUCT: "Premium"
|
||||
DESTINATION_NOT_SPECIFIED: "Δεν ορίστηκε προορισμός"
|
||||
UPLOAD_ERR_NO_TMP_DIR: "Λείπει ένας προσωρινός φάκελος"
|
||||
SESSION_SPLIT: "Συνεδρία Σπλιτ"
|
||||
SESSION_SPLIT_HELP: "Ανεξάρτητες split συνεδρίες μεταξύ σελίδας και άλλων plugins (όπως admin)"
|
||||
ERROR_FULL_BACKTRACE: "Πλήρες Backtrace σφάλμα"
|
||||
ERROR_SIMPLE: "Απλό σφάλμα"
|
||||
ERROR_SYSTEM: "Σφάλμα συστήματος"
|
||||
IMAGES_AUTO_FIX_ORIENTATION: "Αυτόματη επιδιόρθωση του προσανατολισμού"
|
||||
IMAGES_AUTO_FIX_ORIENTATION_HELP: "Διορθώσετε αυτόματα τον προσανατολισμό της εικόνας που βασίζεται στα δεδομένα Exif"
|
||||
REDIS_SOCKET: "Υποδοχή Redis"
|
||||
REDIS_SOCKET_HELP: "Η υποδοχή Redis"
|
||||
NOT_SET: "Μη ορισμένο"
|
||||
PERMISSIONS: "Δικαιώματα"
|
||||
NEVER_CACHE_TWIG: "Ποτέ Twig Cache"
|
||||
NEVER_CACHE_TWIG_HELP: "Μόνο cache περιεχόμενου και επεξεργασια του Twig κάθε φορά για τις σελίδες. Παραβλέπει τη ρύθμιση twig_first."
|
||||
ALLOW_WEBSERVER_GZIP: "Επίτρεψε WebServer Gzip"
|
||||
ALLOW_WEBSERVER_GZIP_HELP: "Απενεργοποιημένη από προεπιλογή. Όταν είναι ενεργοποιημένη, η WebServer-configured Gzip/Deflate συμπίεση θα λειτουργήσει, αλλά δεν θα κλείσει πριν από το onShutDown() προκαλώντας αργή φόρτωση της σελίδας"
|
||||
OFFLINE_WARNING: "Αδύνατη η σύνδεση με το GPM"
|
||||
CLEAR_IMAGES_BY_DEFAULT: "Καθαρισμός cache εικόνων από προεπιλογή"
|
||||
CLEAR_IMAGES_BY_DEFAULT_HELP: "Από προεπιλογή, οι επεξεργασμένες εικόνες καθαρίζονται για κάθε καθαρισμό cache, αυτό μπορεί να απενεργοποιηθεί"
|
||||
CLI_COMPATIBILITY: "CLI Συμβατότητα"
|
||||
CLI_COMPATIBILITY_HELP: "Εξασφαλίζει ότι χρησιμοποιούνται μόνο non-volatile Cache οδηγοί (αρχείο, redis, memcache, κλπ.)"
|
||||
REINSTALL_PLUGIN: "Επανεγκατάσταση Πρόσθετου"
|
||||
REINSTALL_THEME: "Εγκατάσταση Θέματος"
|
||||
REINSTALL_THE: "Εγκαταστήστε ξανά το %s"
|
||||
CONFIRM_REINSTALL: "Είστε βέβαιοι ότι θέλετε να επανεγκαταστήσετε το %s;"
|
||||
REINSTALLED_SUCCESSFULLY: "Το %s επανεγκαταστάθηκε με επιτυχία"
|
||||
ERROR_REINSTALLING_THE: "Σφάλμα κατά την επανεγκατάσταση του %s"
|
||||
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Το πακέτο %s επανεγκαταστάθηκε με επιτυχία"
|
||||
REINSTALLATION_FAILED: "Η επανεγκατάσταση απέτυχε"
|
||||
WARNING_REINSTALL_NOT_LATEST_RELEASE: "Η εγκατεστημένη έκδοση δεν είναι η τελευταία έκδοση. Κάνοντας κλικ στο κουμπί Συνέχεια, θα αφαιρέσετε την τρέχουσα έκδοση και θα εγκαταστήσετε την πιο πρόσφατη διαθέσιμη έκδοση"
|
||||
TOOLS: "Εργαλεία"
|
||||
DIRECT_INSTALL: "Άμεση Εγκατάσταση"
|
||||
NO_PACKAGE_NAME: "Δεν επιλέχθηκε όνομα πακέτου"
|
||||
PACKAGE_EXTRACTION_FAILED: "Η εξαγωγή πακέτου απέτυχε"
|
||||
NOT_VALID_GRAV_PACKAGE: "Δεν είναι ένα έγκυρο πακέτο Grav"
|
||||
NAME_COULD_NOT_BE_DETERMINED: "Δεν μπορούσε να προσδιοριστεί το όνομα"
|
||||
CANNOT_OVERWRITE_SYMLINKS: "Δεν μπορεί να αντικαταστήσει symlinks"
|
||||
ZIP_PACKAGE_NOT_FOUND: "Δεν βρέθηκε ZIP"
|
||||
GPM_OFFICIAL_ONLY: "Επίσημo GPM μόνο"
|
||||
GPM_OFFICIAL_ONLY_HELP: "Επιτρέπει μόνο άμεση εγκατάσταση από το επίσημο αποθετήριο GPM."
|
||||
NO_CHILD_TYPE: "Κανένα θυγατρικό τύπο για αυτό το rawroute"
|
||||
SORTABLE_PAGES: "Ταξινομήσιμες σελίδες:"
|
||||
UNSORTABLE_PAGES: "Μη Ταξινομήσιμες Σελίδες"
|
||||
ADMIN_SPECIFIC_OVERRIDES: "Συγκεκριμένες Παρακάμψεις Διαχειριστή"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER: "Σειρά Εμφάνισης Θυγατρικών"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Η σειρά με την οποία οι θυγατρικές αυτής της σελίδας θα πρέπει να εμφανίζονται στην προβολή 'Σελίδες' του Admin plugin"
|
||||
PWD_PLACEHOLDER: "πολύπλοκη συμβολοσειρά μήκους τουλάχιστον 8 χαρακτήρων"
|
||||
PWD_REGEX: "Κανονική έκφραση (regex) συνθηματικού"
|
||||
PWD_REGEX_HELP: "Από προεπιλογή: Το συνθηματικό πρέπει να περιέχει τουλάχιστον έναν αριθμό, ένα κεφαλαίο και ένα πεζό γράμμα και τουλάχιστον 8 ή περισσότερους χαρακτήρες"
|
||||
USERNAME_PLACEHOLDER: "πεζούς χαρακτήρες μόνο, π.χ. «admin»"
|
||||
USERNAME_REGEX: "Όνομα χρήστη Regex"
|
||||
USERNAME_REGEX_HELP: "Από προεπιλογή: πεζούς μόνο χαρακτήρες, αριθμούς, παύλες και κάτω παύλες. 3 - 16 χαρακτήρες"
|
||||
ENABLE_AUTO_METADATA: "Αυτόματα μεταδεδομένα από Exif"
|
||||
ENABLE_AUTO_METADATA_HELP: "Δημιουργεί αυτόματα αρχεία μεταδεδομένων για εικόνες με exif πληροφορίες"
|
||||
2FA_TITLE: "Έλεγχος ταυτότητας δύο παραγόντων"
|
||||
2FA_INSTRUCTIONS: "##### Έλεγχος Ταυτότητας Δύο Παραγόντων\nΈχετε ενεργοποιημένο τον **ΕΤΔΠ** σε αυτόν το λογαριασμό. Παρακαλώ χρησιμοποιήστε την **ΕΤΔΠ** εφαρμογή σας για να εισαγάγετε τον τρέχοντα **6-ψήφιο κωδικό** ώστε να ολοκληρώσετε τη διαδικασία σύνδεσης."
|
||||
2FA_REGEN_HINT: "Η αναδημιουργία του κωδικού θα απαιτήσει να ενημερώσετε την εφαρμογή επαλήθευσής σας"
|
||||
2FA_LABEL: "Πρόσβαση Διαχειριστή"
|
||||
2FA_FAILED: "Μη έγκυρος κωδικός ελέγχου ταυτότητας δύο παραγόντων, παρακαλούμε προσπαθήστε ξανά..."
|
||||
2FA_ENABLED: "ΕΤΔΠ Ενεργοποιημένος"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
2FA_SECRET: "Μυστικό ΕΤΔΠ"
|
||||
2FA_SECRET_HELP: "Σαρώστε αυτόν τον κωδικό QR με την [εφαρμογή ελέγχου ταυτότητας] (https://learn.getgrav.org/admin-panel/2fa#apps) της επιλογής σας. Επίσης είναι καλή ιδέα να κρατήσετε αντίγραφο ασφαλείας του μυστικού κωδικού σε μια ασφαλή τοποθεσία, σε περίπτωση που χρειαστεί να επανεγκαταστήσετε την εφαρμογή σας. Ελέγξτε τα [εγχειρίδια του Grav] (https://learn.getgrav.org/admin-panel/2fa) για περισσότερες πληροφορίες "
|
||||
2FA_REGENERATE: "Επαναδημιουργία"
|
||||
FORCE_LOWERCASE_URLS: "Εξαναγκασμός πεζών URLs"
|
||||
FORCE_LOWERCASE_URLS_HELP: "Ως προεπιλογή το Grav θα ορίσει τις διαδρομές με πεζά. Αν αυτό είναι απενεργοποιημένο, μπορούν να χρησιμοποιηθούν κεφαλαία"
|
||||
INTL_ENABLED: "Ενσωμάτωση intl ενότητας"
|
||||
INTL_ENABLED_HELP: "Χρησιμοποιήστε την Intl PHP ενότητα και διαταξινόμηση για να ταξινομήσετε τις συλλογές που βασίζονται στο UTF8"
|
||||
VIEW_SITE_TIP: "Δείτε τη σελίδα"
|
||||
TOOLS_DIRECT_INSTALL_TITLE: "Απευθείας Εγκατάσταση των Grav Πακέτων"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Εγκατάσταση Πακέτου με Απευθείας Μεταφόρτωση ZIP"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Μπορείτε να εγκαταστήσετε εύκολα ένα έγκυρο <strong>θέμα</strong>, <strong>πρόσθετο</strong>, ή ακόμα και πακέτο zip αναβάθμισης του <strong>Grav</strong> με αυτή τη μέθοδο. Αυτό το πακέτο δε χρειάζεται να είναι καταχωρημένο στο GPM και σας επιτρέπει να επιστρέψετε εύκολα σε προηγούμενη έκδοση ή να εγκαταστήσετε για δοκιμή."
|
||||
TOOLS_DIRECT_INSTALL_URL_TITLE: "Εγκατάσταση Πακέτου μέσω Απομακρυσμένης Αναφοράς URL"
|
||||
TOOLS_DIRECT_INSTALL_URL_DESC: "Εναλλακτικά, μπορείτε επίσης να αναφέρετε το πλήρες URL για το αρχείο ZIP του πακέτου και να το εγκαταστήσετε μέσω απομακρυσμένου URL."
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Μεταφόρτωση και εγκατάσταση"
|
||||
ROUTE_OVERRIDES: "Παρακάμψεις Διαδρομών"
|
||||
ROUTE_DEFAULT: "Προεπιλεγμένη Διαδρομή"
|
||||
ROUTE_CANONICAL: "Κανονική Διαδρομή"
|
||||
ROUTE_ALIASES: "Ψευδώνυμα Διαδρομών"
|
||||
CONFIGURATION: "Διαμόρφωση"
|
||||
ADMIN_CACHING: "Ενεργοποιήσετε την προσωρινή αποθήκευση Admin"
|
||||
ADMIN_CACHING_HELP: "Η προσωρινή αποθήκευση στο admin μπορεί να ελέγχεται αυτόνομα από τη front-end ιστοσελίδα"
|
||||
CONTENT_PADDING: "Περιθώριο περιεχομένου"
|
||||
CONTENT_PADDING_HELP: "Ενεργοποίηση/απενεργοποίηση του περιθωρίου περιεχομένου γύρω από την περιοχή περιεχομένου για να παρέχει περισσότερο χώρο"
|
||||
TIMEOUT: "Λήξη χρονικού ορίου"
|
||||
TIMEOUT_HELP: "Ορίζει το χρονικό όριο της συνεδρίας σε δευτερόλεπτα"
|
||||
DASHBOARD: "Πίνακας Ελέγχου"
|
||||
NOTIFICATIONS: "Ειδοποιήσεις"
|
||||
1161
config/www/user/plugins/admin/languages/en.yaml
Normal file
1161
config/www/user/plugins/admin/languages/en.yaml
Normal file
File diff suppressed because it is too large
Load Diff
780
config/www/user/plugins/admin/languages/eo.yaml
Normal file
780
config/www/user/plugins/admin/languages/eo.yaml
Normal file
@@ -0,0 +1,780 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_NOSCRIPT_MSG: "Bonvolu enŝalti JavaScript en via retumilo."
|
||||
ADMIN_BETA_MSG: "Tio ĉi estas beta-versio! Uzi ĝin en produkta medio estas je via propra risko..."
|
||||
ADMIN_REPORT_ISSUE: "Ĉu vi trovis problemon? Bonvolu raporti ĝin ĉe GitHub."
|
||||
LOGIN_BTN: "Ensaluti"
|
||||
LOGIN_BTN_FORGOT: "Forgesita"
|
||||
LOGIN_BTN_RESET: "Restarigi pasvorton"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Sendi restarigajn instrukciojn"
|
||||
LOGIN_BTN_CLEAR: "Nuligi formularon"
|
||||
LOGIN_BTN_CREATE_USER: "Krei uzanton"
|
||||
LOGIN_LOGGED_IN: "Vi sukcese ensalutis"
|
||||
LOGIN_FAILED: "Ensaluto malsukcesis"
|
||||
LOGGED_OUT: "Vi estis elsalutigita"
|
||||
RESET_NEW_PASSWORD: "Bonvolu enmeti novan pasvorton …"
|
||||
RESET_LINK_EXPIRED: "La restarigan ligilo senvalidiĝis, bonvolu reprovi"
|
||||
RESET_PASSWORD_RESET: "La pasvorto estas restarigita"
|
||||
RESET_INVALID_LINK: "Nevalida restarigan ligilo estis uzata, bonvolu reprovi"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instrukcioj pri kiel restarigi vian pasvorton estas senditaj al via retpoŝtadreso"
|
||||
FORGOT_FAILED_TO_EMAIL: "Ne sukcesis sendi retmesaĝon kun instrukcioj, bonvolu reprovi poste"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Ne povas restarigi pasvorton por %s, neniu retpoŝtadreso estas agordita"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Uzanto kun uzantnomo <b>%s</b> ne ekzistas"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Ne povas restarigi pasvorton. Tiu ĉi retejo ne estas agordita por sendi retmesaĝojn"
|
||||
FORGOT_EMAIL_SUBJECT: "%s Peto restarigi pasvorton"
|
||||
FORGOT_EMAIL_BODY: "<h1>Restarigo de pasvorto</h1><p>Estimata %1$s</p><p>Peto estis farita je <b>%4$s</b> pri restarigo de via pasvorto.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Alklaku tie ĉi por restarigi vian pasvorton.</a><br /><br /></p><p>Alternative, kopiu la jenan adreson en la adresbreton de via retumilo:</p><p>%2$s</p><p><br />Salutas<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Administri paĝojn"
|
||||
PAGES: "Paĝoj"
|
||||
PLUGINS: "Aldonaĵoj"
|
||||
PLUGIN: "Aldonaĵo"
|
||||
THEMES: "Etosoj"
|
||||
LOGOUT: "Elsaluti"
|
||||
BACK: "Reveni"
|
||||
NEXT: "Venonta"
|
||||
PREVIOUS: "Antaŭa"
|
||||
ADD_PAGE: "Aldoni paĝon"
|
||||
MOVE: "Movi"
|
||||
DELETE: "Forigi"
|
||||
UNSET: "Malagordi"
|
||||
VIEW: "Vidi"
|
||||
SAVE: "Konservi"
|
||||
NORMAL: "Normala"
|
||||
EXPERT: "Eksperto"
|
||||
EXPAND_ALL: "Etendi ĉiujn"
|
||||
COLLAPSE_ALL: "Kaŝi ĉiujn"
|
||||
ERROR: "Eraro"
|
||||
CLOSE: "Fermi"
|
||||
CANCEL: "Nuligi"
|
||||
CONTINUE: "Daŭrigi"
|
||||
CONFIRM: "Konfirmi"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Konfirmo necesas"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Ŝanĝoj detektitaj"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Estas nekonservitaj ŝanĝoj. Ĉu vi certas, ke vi volas foriri sen konservi?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Konfirmo necesas"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Ĉu vi certas, ke vi volas forigi tiun ĉi dosieron? Tiu ĉi ago ne estas malfarebla."
|
||||
MODAL_UPDATE_GRAV_CONFIRMATION_REQUIRED_DESC: "Vi nun ĝisdatigos Grav al la plej lasta versio. Ĉu vi volas daŭrigi?"
|
||||
ADD_FILTERS: "Aldoni filtrilojn"
|
||||
SEARCH_PAGES: "Serĉi paĝojn"
|
||||
VERSION: "Versio"
|
||||
WAS_MADE_WITH: "Estis farita per"
|
||||
BY: "De"
|
||||
UPDATE_THEME: "Ĝisdatigi etoson"
|
||||
UPDATE_PLUGIN: "Ĝisdatigi aldonaĵon"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "de tiu ĉi etoso nun haveblas"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de tiu ĉi aldonaĵo nun haveblas"
|
||||
AUTHOR: "Aŭtoro"
|
||||
HOMEPAGE: "Ĉefpaĝo"
|
||||
DEMO: "Provoversio"
|
||||
BUG_TRACKER: "Cimraportilo"
|
||||
KEYWORDS: "Ŝlosilvortoj"
|
||||
LICENSE: "Permesilo"
|
||||
DESCRIPTION: "Priskribo"
|
||||
README: "Legu min"
|
||||
DOCS: "Dokumentigo"
|
||||
REMOVE_THEME: "Forigi etoson"
|
||||
INSTALL_THEME: "Instali etoson"
|
||||
THEME: "Etoso"
|
||||
BACK_TO_THEMES: "Reen al etosoj"
|
||||
BACK_TO_PLUGINS: "Reen al aldonaĵoj"
|
||||
CHECK_FOR_UPDATES: "Kontroli ĝisdatigojn"
|
||||
ADD: "Aldoni"
|
||||
CLEAR_CACHE: "Viŝi kaŝmemoron"
|
||||
CLEAR_CACHE_ALL_CACHE: "Ĉia kaŝmemoro"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Nur aŭdvidaĵoj"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Nur bildoj"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Nur kaŝmemoro"
|
||||
CLEAR_CACHE_TMP_ONLY: "Nur provizoraĵoj"
|
||||
UPDATES_AVAILABLE: "Ĝisdatigoj disponeblaj"
|
||||
DAYS: "Tagoj"
|
||||
UPDATE: "Ĝisdatigi"
|
||||
BACKUP: "Sekurkopio"
|
||||
BACKUPS: "Sekurkopioj"
|
||||
BACKUP_NOW: "Savkopii nun"
|
||||
BACKUPS_STATS: "Statistiko pri savkopioj"
|
||||
BACKUPS_HISTORY: "Historio de savkopioj"
|
||||
BACKUPS_PURGE_CONFIG: "Agordoj pri viŝado de savkopioj"
|
||||
BACKUPS_PROFILES: "Sekurkopiaj agordaroj"
|
||||
BACKUPS_COUNT: "Kvanto de savkopioj"
|
||||
BACKUPS_PROFILES_COUNT: "Nombro de agordaroj"
|
||||
BACKUPS_TOTAL_SIZE: "Spaco uzata"
|
||||
BACKUPS_NEWEST: "Plej nova savkopio"
|
||||
BACKUPS_OLDEST: "Plej malnova savkopio"
|
||||
BACKUPS_PURGE: "Viŝi"
|
||||
BACKUPS_NOT_GENERATED: "Ankoraŭ estis kreita neniu savkopio..."
|
||||
BACKUPS_PURGE_NUMBER: "%s el %s savkopiujoj uzata"
|
||||
BACKUPS_PURGE_TIME: "restas %s tagoj da sekurkopioj"
|
||||
BACKUPS_PURGE_SPACE: "%s el %s uzata"
|
||||
BACKUP_DELETED: "Sekurkopio estis sukcese forgitia"
|
||||
BACKUP_NOT_FOUND: "Sekurkopio ne trovita"
|
||||
BACKUP_DATE: "Dato de sekurkopio"
|
||||
STATISTICS: "Statistikoj"
|
||||
VIEWS_STATISTICS: "Paĝmontraj statistikaĵoj"
|
||||
TODAY: "Hodiaŭ"
|
||||
WEEK: "Semajno"
|
||||
MONTH: "Monato"
|
||||
LATEST_PAGE_UPDATES: "Plej lastaj paĝĝisdatigoj"
|
||||
MAINTENANCE: "Prizorgado"
|
||||
UPDATED: "Ĝisdatigita"
|
||||
MON: "Lun"
|
||||
TUE: "Mar"
|
||||
WED: "Mer"
|
||||
THU: "Ĵaŭ"
|
||||
FRI: "Ven"
|
||||
SAT: "Sab"
|
||||
SUN: "Dim"
|
||||
COPY: "Kopii"
|
||||
EDIT: "Redakti"
|
||||
CREATE: "Krei"
|
||||
GRAV_ADMIN: "Grav-administrado"
|
||||
GRAV_OFFICIAL_PLUGIN: "Oficiala aldonaĵo de Grav"
|
||||
GRAV_OFFICIAL_THEME: "Oficiala etoso de Grav"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Tiu ĉi aldonaĵo estas simbole ligita. Ĝisdatigoj ne estos detektitaj."
|
||||
THEME_SYMBOLICALLY_LINKED: "Tiu ĉi etoso estas simbole ligita. Ĝisdatigoj ne estos detektitaj"
|
||||
REMOVE_PLUGIN: "Forigi aldonaĵon"
|
||||
INSTALL_PLUGIN: "Instali aldonaĵon"
|
||||
AVAILABLE: "Disponebla"
|
||||
INSTALLED: "Instalita"
|
||||
INSTALL: "Instali"
|
||||
ACTIVE_THEME: "Aktiva etoso"
|
||||
SWITCHING_TO: "Ŝanĝas al"
|
||||
SWITCHING_TO_DESCRIPTION: "Ŝanĝante al alia etoso, estas nenia garantio, ke la aranĝaj paĝoj estas subtenataj, kio povas eble okazigi erarojn je provoj konservi tiujn paĝojn."
|
||||
SWITCHING_TO_CONFIRMATION: "Ĉu vi volas daŭrigi kaj ŝanĝi al la etoso"
|
||||
CREATE_NEW_USER: "Krei novan uzanton"
|
||||
REMOVE_USER: "Forigi uzanton"
|
||||
ACCESS_DENIED: "Aliro ne permesita"
|
||||
ACCOUNT_NOT_ADMIN: "via konto ne havas administrajn rajtojn"
|
||||
PHP_INFO: "PHP-informoj"
|
||||
INSTALLER: "Instalilo"
|
||||
AVAILABLE_THEMES: "Disponeblaj etosoj"
|
||||
AVAILABLE_PLUGINS: "Haveblaj aldonaĵoj"
|
||||
INSTALLED_THEMES: "Instalitaj etosoj"
|
||||
INSTALLED_PLUGINS: "Instalitaj aldonaĵoj"
|
||||
BROWSE_ERROR_LOGS: "Trafoliumi erarprotokolon"
|
||||
SITE: "Retejo"
|
||||
INFO: "Informoj"
|
||||
SYSTEM: "Sistemo"
|
||||
USER: "Uzanto"
|
||||
ADD_ACCOUNT: "Aldoni konton"
|
||||
SWITCH_LANGUAGE: "Ŝanĝi lingvon"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Sukcese ŝaltis aldonaĵon"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Sukcese malŝaltis aldonaĵon"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Sukcese ŝanĝis defaŭltan etoson"
|
||||
INSTALLATION_FAILED: "Instalo ne sukcesis"
|
||||
INSTALLATION_SUCCESSFUL: "Instalo sukcesis"
|
||||
UNINSTALL_FAILED: "Malinstalo ne sukcesis"
|
||||
UNINSTALL_SUCCESSFUL: "Malinstalo sukcesis"
|
||||
SUCCESSFULLY_SAVED: "Sukcese konservis"
|
||||
SUCCESSFULLY_COPIED: "Sukcese kopiis"
|
||||
REORDERING_WAS_SUCCESSFUL: "Reordigo sukcesis"
|
||||
SUCCESSFULLY_DELETED: "Sukcese forigis"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Sukcese ŝanĝis lingvon"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Vi ne havas la necesajn permesojn por la tasko"
|
||||
CACHE_CLEARED: "Kaŝmemoro vakigita"
|
||||
METHOD: "Metodo"
|
||||
ERROR_CLEARING_CACHE: "Okazis eraro dum viŝado de kaŝmemoro"
|
||||
AN_ERROR_OCCURRED: "Eraro okazis"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Via savkopio pretas por elŝuto"
|
||||
DOWNLOAD_BACKUP: "Elŝuto savkopion"
|
||||
PAGES_FILTERED: "Paĝoj filtritaj"
|
||||
NO_PAGE_FOUND: "Neniu paĝo trovita"
|
||||
INVALID_PARAMETERS: "Nevalidaj parametroj"
|
||||
NO_FILES_SENT: "Neniuj dosieroj senditaj"
|
||||
EXCEEDED_FILESIZE_LIMIT: "La limoj en PHP-agordo \"upload_max_filesize\" estis transpasitaj"
|
||||
EXCEEDED_POSTMAX_LIMIT: "La limoj en PHP-agordo \"post_max_size\" estis transpasitaj"
|
||||
UNKNOWN_ERRORS: "Nekonataj eraroj"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Transpasis limon por dosier-grando de Grav-agordaro"
|
||||
UNSUPPORTED_FILE_TYPE: "Nesubtenata dosiertipo"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Ne sukcesis movi la alŝutitan dosieron"
|
||||
FILE_UPLOADED_SUCCESSFULLY: "La dosiero estis sukcese alŝutita"
|
||||
FILE_DELETED: "Dosiero forigita"
|
||||
FILE_COULD_NOT_BE_DELETED: "Ne sukcesis forigi la dosieron"
|
||||
FILE_NOT_FOUND: "La dosiero ne estis trovita"
|
||||
NO_FILE_FOUND: "Neniu dosiero estis trovita"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav estis sukcese ĝisdatigita al"
|
||||
GRAV_UPDATE_FAILED: "Grav-ĝisdatigo malsukcesis"
|
||||
EVERYTHING_UPDATED: "Ĉio estas ĝisdata"
|
||||
UPDATES_FAILED: "Ĝisdatigoj eraris"
|
||||
AVATAR_BY: "Profilbildo per"
|
||||
AVATAR_UPLOAD_OWN: "Aŭ alŝuti vian propran..."
|
||||
LAST_BACKUP: "Lasta savkopio"
|
||||
FULL_NAME: "Plena nomo"
|
||||
USERNAME: "Uzantnomo"
|
||||
EMAIL: "Retpoŝto"
|
||||
USERNAME_EMAIL: "Uzantnomo aŭ retpoŝtadreso"
|
||||
PASSWORD: "Pasvorto"
|
||||
PASSWORD_CONFIRM: "Konfirmi pasvorton"
|
||||
TITLE: "Titolo"
|
||||
ACCOUNT: "Konto"
|
||||
EMAIL_VALIDATION_MESSAGE: "Devas esti valida retpoŝtadreso"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Pasvortoj devas enhavi almenaŭ unu numeron kaj unu majusklan kaj unu minusklan literon, kaj almenaŭ 8 signojn"
|
||||
LANGUAGE: "Lingvo"
|
||||
LANGUAGE_HELP: "Agordi la plej ŝatatan lingvon"
|
||||
MEDIA: "Aŭdvidaĵoj"
|
||||
DEFAULTS: "Defaŭltoj"
|
||||
SITE_TITLE: "Reteja titolo"
|
||||
SITE_TITLE_PLACEHOLDER: "Titolo de la tuta retejo"
|
||||
SITE_TITLE_HELP: "Defaŭlta titolo por via retejo, ofte uzata en etosoj"
|
||||
SITE_DEFAULT_LANG: "Defaŭlta lingvo"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "La defaŭlta lingvo uzota de la <HTML>-etikedo de la etoso"
|
||||
SITE_DEFAULT_LANG_HELP: "La defaŭlta lingvo uzota de la <HTML>-etikedo de la etoso"
|
||||
DEFAULT_AUTHOR: "Defaŭlta aŭtoro"
|
||||
DEFAULT_AUTHOR_HELP: "Defaŭlta aŭtornomo, ofte uzata en etosoj aŭ paĝenhavo"
|
||||
DEFAULT_EMAIL: "Defaŭlta retpoŝtadreso"
|
||||
DEFAULT_EMAIL_HELP: "Defaŭlta retpoŝtadreso por referenci en etosoj aŭ paĝoj"
|
||||
TAXONOMY_TYPES: "Specoj de taksonomio"
|
||||
TAXONOMY_TYPES_HELP: "Specoj de taksonomio devas esti difinita ĉi tie, se vi volas uzi ilin en paĝoj"
|
||||
PAGE_SUMMARY: "Paĝresumo"
|
||||
ENABLED: "Ŝaltita"
|
||||
ENABLED_HELP: "Ebligi paĝa resumo (la resumo estos sama kiel la enhavo de la paĝo)"
|
||||
'YES': "Jes"
|
||||
'NO': "Ne"
|
||||
SUMMARY_SIZE: "Grandeco de resumo"
|
||||
SUMMARY_SIZE_HELP: "Nombro de signoj de paĝo uzenda kiel enhava resumo"
|
||||
FORMAT: "Formato"
|
||||
FORMAT_HELP: "mallonga = uzu la unuan okazon de dividilo aŭ grandeco; longa = resuma dividilo estas ignorita"
|
||||
SHORT: "Mallonga"
|
||||
LONG: "Longa"
|
||||
DELIMITER: "Dividilo"
|
||||
DELIMITER_HELP: "La resuma dividilo (defaŭlte '===')"
|
||||
METADATA: "Metadatumoj"
|
||||
METADATA_HELP: "La defaŭltaj metadatumvaloroj montrotaj sur ĉi paĝo krom se ĝi estas transpasita de la paĝo"
|
||||
NAME: "Nomo"
|
||||
CONTENT: "Enhavo"
|
||||
SIZE: "Grandeco"
|
||||
ACTION: "Ago"
|
||||
REDIRECTS_AND_ROUTES: "Alidirektiloj k Rutoj"
|
||||
CUSTOM_REDIRECTS: "Propraj alidirektiloj"
|
||||
CUSTOM_REDIRECTS_HELP: "kursoj por alidirekti al aliaj paĝoj. Laŭnorma anstataŭigo per Regex estas valida"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/via/kromnomo"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/via/alidirektigo"
|
||||
CUSTOM_ROUTES: "Propraj rutoj"
|
||||
CUSTOM_ROUTES_HELP: "rutigas kromnomojn al aliaj paĝoj. Kutima Regex-anstataŭigo estas valida"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/via/kromnomo"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/via/ruto"
|
||||
FILE_STREAMS: "Dosierfluoj"
|
||||
DEFAULT: "Defaŭlta"
|
||||
PAGE_MEDIA: "Paĝaj aŭdvidaĵoj"
|
||||
OPTIONS: "Agordoj"
|
||||
PUBLISHED: "Publikigita"
|
||||
PUBLISHED_HELP: "Defaŭlte, paĝo estas publikigita krom se vi eksplicite agordis published: false aŭ publish_date al iam en la estonteco, aŭ unpublish_date iam en la estinteco"
|
||||
DATE: "Dato"
|
||||
DATE_HELP: "La datovariablo permesas al vi eksplicite agordi daton asociitan kun tiu ĉi paĝo."
|
||||
PUBLISHED_DATE: "Publikigdato"
|
||||
PUBLISHED_DATE_HELP: "Povas provizii daton por aŭtomate kaŭzi publikiĝon."
|
||||
UNPUBLISHED_DATE: "Malpublikigdato"
|
||||
UNPUBLISHED_DATE_HELP: "Povas provizii daton por aŭtomate kaŭzi malpublikiĝon."
|
||||
ROBOTS: "Robotoj"
|
||||
TAXONOMIES: "Taksonimioj"
|
||||
TAXONOMY: "Taksonomio"
|
||||
ADVANCED: "Altnivela"
|
||||
SETTINGS: "Agordoj"
|
||||
FOLDER_NUMERIC_PREFIX: "Numera prefikso de dosiero"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Numera prefikso, kiu donas permanan ordigon kaj implicas videblecon"
|
||||
FOLDER_NAME: "Dosiernomo"
|
||||
FOLDER_NAME_HELP: "La nomo de la dosiero konservota en la dosiersistemo por tiu ĉi paĝo"
|
||||
PARENT: "Supra"
|
||||
DEFAULT_OPTION_ROOT: "- Radiko -"
|
||||
DEFAULT_OPTION_SELECT: "- Elekti -"
|
||||
DISPLAY_TEMPLATE: "Montri ŝablonon"
|
||||
ORDERING: "Ordigado"
|
||||
PAGE_ORDER: "Paĝordigo"
|
||||
OVERRIDES: "Transpasas"
|
||||
MENU: "Menuo"
|
||||
MENU_HELP: "la klavĉeno uzenda en menuo. Se ne agordita, la titolo estos uzata"
|
||||
SLUG: "Mallongiĝo"
|
||||
PROCESS: "Procezo"
|
||||
PROCESS_HELP: "Regi kiel paĝoj estas procezigataj. Eblas agordi laŭ-paĝe anstataŭ ĉie ajn"
|
||||
DEFAULT_CHILD_TYPE: "Implicita Ida Speco"
|
||||
USE_GLOBAL: "Uzi globalan"
|
||||
ROUTABLE: "Rutigebla"
|
||||
ROUTABLE_HELP: "Ĉu tiu ĉi paĝo estu alirebla per URL"
|
||||
CACHING: "Kaŝado"
|
||||
VISIBLE: "Videbla"
|
||||
VISIBLE_HELP: "Determinas ĉu paĝo estas videbla en la navigado."
|
||||
DISABLED: "Malŝaltita"
|
||||
ITEMS: "Eroj"
|
||||
ORDER_BY: "Ordigi laŭ"
|
||||
ORDER: "Ordigo"
|
||||
FOLDER: "Dosierujo"
|
||||
ASCENDING: "Kreskanta"
|
||||
DESCENDING: "Malkreskanta"
|
||||
PAGE_TITLE: "Paĝtitolo"
|
||||
PAGE_TITLE_HELP: "La titolo de la paĝo"
|
||||
PAGE: "Paĝo"
|
||||
FRONTMATTER: "Frontmatter"
|
||||
FILENAME: "Dosiernomo"
|
||||
PARENT_PAGE: "Supra paĝo"
|
||||
HOME_PAGE: "Ĉefpaĝo"
|
||||
HOME_PAGE_HELP: "La paĝo, kiun Grav uzoz kiel la defaŭltan alvenpaĝon"
|
||||
DEFAULT_THEME: "Defaŭlta etoso"
|
||||
DEFAULT_THEME_HELP: "Agordi la defaŭltan etoson uzotan de Grav (defaŭlte estas Antimatter)"
|
||||
TIMEZONE: "Horzono"
|
||||
TIMEZONE_HELP: "Transpasi la defaŭltan tempzonon de la servilo"
|
||||
SHORT_DATE_FORMAT: "Mallonga datmontra formato"
|
||||
SHORT_DATE_FORMAT_HELP: "Agordas la mallongan datmontran formaton, kiun povas uzi etostoj"
|
||||
LONG_DATE_FORMAT: "Longa datmontra formato"
|
||||
LONG_DATE_FORMAT_HELP: "Agordas la longan datmontran formaton, kiun povas uzi etostoj"
|
||||
DEFAULT_ORDERING: "Defaŭlta ordigo"
|
||||
DEFAULT_ORDERING_HELP: "Paĝoj en listo estos bildigita en ĉi tiu ordo, se ĝi ne estas transpasita"
|
||||
DEFAULT_ORDERING_DEFAULT: "Defaŭlta - bazita de la dosieruja nomo"
|
||||
DEFAULT_ORDERING_FOLDER: "Dosierujo - bazita de senprefiksa nomo de dosierujo"
|
||||
DEFAULT_ORDERING_TITLE: "Titolo - bazita de la titolkampo en la ĉapo"
|
||||
DEFAULT_ORDERING_DATE: "Dato - bazita de la datkampo en la ĉapo"
|
||||
DEFAULT_ORDER_DIRECTION: "Defaŭlta ordigdirekto"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "La direkto de paĝoj en listo"
|
||||
DEFAULT_PAGE_COUNT: "Defaŭlta pagkvanto"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Defaŭlta maksimuma kvanto de paĝoj en listo"
|
||||
DATE_BASED_PUBLISHING: "Dat-bazita publikigado"
|
||||
DATE_BASED_PUBLISHING_HELP: "Aŭtomate (mal)publikigi afiŝojn surbaze de iliaj datoj"
|
||||
EVENTS: "Eventoj"
|
||||
EVENTS_HELP: "(Mal)ŝalti specifajn okazojn. Malŝalto de tio ĉi povas rompi aldonaĵojn"
|
||||
REDIRECT_DEFAULT_ROUTE: "Alidirektigi defaŭltan ruton"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Aŭtomate alidirektigi al la defaŭlta ruto de paĝo"
|
||||
LANGUAGES: "Lingvoj"
|
||||
SUPPORTED: "Subtenata"
|
||||
SUPPORTED_HELP: "Komo-dividita listo de 2-literaj lingvokodoj (ekz. 'eo,fr,de')"
|
||||
SUPPORTED_PLACEHOLDER: "ekz. en, fr"
|
||||
TRANSLATIONS_FALLBACK: "Retrodefaŭltaj tradukoj"
|
||||
TRANSLATIONS_FALLBACK_HELP: "Retropaŝi tra subtenataj tradukoj se traduko por aktiva lingvo ne ekzistas"
|
||||
ACTIVE_LANGUAGE_IN_SESSION: "Aktiva lingvo en sesio"
|
||||
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Konservi la aktivan lingvon en la sesio"
|
||||
HTTP_HEADERS: "HTTP-ĉapoj"
|
||||
EXPIRES: "Senvalidiĝas"
|
||||
EXPIRES_HELP: "Agordas la senvalidiĝa ĉapo (Expires). La valoro estas en sekundoj."
|
||||
CACHE_CONTROL: "HTTP kaŝkontrolo"
|
||||
CACHE_CONTROL_HELP: "Agordi al valida kaŝkontrola (Cache-Control) valoro kiel ekz. `no-cache, no-store, must-revalidate`"
|
||||
CACHE_CONTROL_PLACEHOLDER: "ekz. public, max-age=31536000"
|
||||
LAST_MODIFIED: "Laste redaktita"
|
||||
ETAG: "ETag"
|
||||
VARY_ACCEPT_ENCODING: "Vary accept encoding"
|
||||
VARY_ACCEPT_ENCODING_HELP: "Agordas kapumo `Vary: Accept Encoding` por help pri prokur-servila kaj CDN-a kaŝmemorigado"
|
||||
MARKDOWN: "Markdown"
|
||||
MARKDOWN_EXTRA: "Markdown extra"
|
||||
MARKDOWN_EXTRA_HELP: "Ŝalti implicitan subtenon al Markdown Extra – https://michelf.ca/projects/php-markdown/extra/"
|
||||
AUTO_LINE_BREAKS: "Aŭtomataj linisaltoj"
|
||||
AUTO_LINE_BREAKS_HELP: "Ŝalti subtenon por aŭtomataj linisaltoj en markdown"
|
||||
AUTO_URL_LINKS: "Aŭtomataj URL-ligiloj"
|
||||
AUTO_URL_LINKS_HELP: "Ebligas aŭtomate konverti URL-ojn al HTML-aj ligiloj"
|
||||
ESCAPE_MARKUP: "Kodŝanĝi markadon"
|
||||
ESCAPE_MARKUP_HELP: "Kodŝanĝi etikedojn de markado en HTML-subtenatajn signojn"
|
||||
CACHING_HELP: "Ĉiea ON/OFF ŝaltilo por (mal)ebligi kaŝmemorigon de Grav"
|
||||
CACHE_CHECK_METHOD: "Metodo por kontroli kaŝmemoro"
|
||||
CACHE_CHECK_METHOD_HELP: "Elektu metodo, kiun Grav uzos por testi, ĉu paĝaj dosieroj estis ŝanĝitaj."
|
||||
CACHE_DRIVER: "Kaŝmemora pelilo"
|
||||
CACHE_DRIVER_HELP: "Elektu kiun kaŝmemoran pelilon Grav uzu. 'Aŭtomate detekti' provas elekti por vi la plej bonan"
|
||||
CACHE_PREFIX: "Kaŝmemora prefikso"
|
||||
CACHE_PREFIX_HELP: "Identigilo de parto de la Grav-ŝlosilo. Ne ŝanĝu tion ĉi krom se vi scias kion vi estas faranta."
|
||||
CACHE_PURGE_JOB: "Plenumi planitan viŝtaskon"
|
||||
CACHE_CLEAR_JOB: "Plenumi planitan vakigtaskon"
|
||||
CACHE_CLEAR_JOB_HELP: "Per la planilo vi povas periode viŝi la kaŝmemoron de Grav"
|
||||
CACHE_JOB_TYPE: "Kaŝmemora taskospeco"
|
||||
CACHE_PURGE: "Viŝi malnovan kaŝmemoron"
|
||||
LIFETIME: "Vivodaŭro"
|
||||
GZIP_COMPRESSION: "Gzip-densigo"
|
||||
TWIG_TEMPLATING: "Ŝablonoj de Twig"
|
||||
TWIG_CACHING: "Kaŝmemorado de Twig"
|
||||
TWIG_DEBUG: "Erarserĉilo de Twig"
|
||||
DETECT_CHANGES: "Detekti ŝanĝojn"
|
||||
AUTOESCAPE_VARIABLES: "Aŭtomate kodŝanĝi variablojn"
|
||||
ASSETS: "Aŭdvidaĵoj"
|
||||
CSS_PIPELINE: "CSS-ĉenstablo"
|
||||
CSS_PIPELINE_HELP: "La CSS-ĉenstablo estas la unuiĝo de pluraj CSS-resursoj en unu dosieron"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS: "Inkluzivi eksternaĵojn en CSS-ĉenstablon"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksternaj URLoj kelkfoje havas relativajn dosierreferencojn kaj ne estu ĉenstablita"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES: "CSS-ĉenstablo bildiĝu unue"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Bildigi la CSS-ĉenstablon antaŭ ol ajna aliaj CSS-referencoj neinkluzivataj"
|
||||
CSS_MINIFY: "CSS-minimumigo"
|
||||
CSS_MINIFY_HELP: "Minimumigu la CSS dum ĉenstablado"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE: "Windows-transpado por CSS-minimumigo"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minimumig-transpago por Windows-platformoj. Defaŭlte estas malvera pro ThreadStackSize"
|
||||
CSS_REWRITE: "CSS-reskribo"
|
||||
CSS_REWRITE_HELP: "Reskribi ajnan CSSan relativan URLon dum ĉenstablado"
|
||||
JAVASCRIPT_PIPELINE: "JavaScript-ĉenstablo"
|
||||
JAVASCRIPT_PIPELINE_HELP: "La JS-ĉenstablo estas la unuiĝo de pluraj JS-resursoj en unu dosieron"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inkluzivi eksternaĵojn en JS-ĉenstablon"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksternaj URLoj kelkfoje havas relativajn dosierreferencojn kaj ne estu ĉenstablita"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JS-ĉenstablo bildiĝu unue"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Bildigi la JS-ĉenstablon antaŭ ol ajna aliaj JS-referencoj neinkluzivataj"
|
||||
JAVASCRIPT_MINIFY: "JavaScript-minimumigo"
|
||||
JAVASCRIPT_MINIFY_HELP: "Minimumigu la JS dum ĉenstablado"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS: "Ŝalti tempindikojn ĉe aŭdvidaĵoj"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Ŝalti tempindikojn de aŭdividaĵoj"
|
||||
COLLECTIONS: "Kolektoj"
|
||||
ERROR_HANDLER: "Erar-traktilo"
|
||||
DISPLAY_ERRORS: "Montri erarojn"
|
||||
DISPLAY_ERRORS_HELP: "Montri tutan retrospurad-stilan erarpaĝon"
|
||||
LOG_ERRORS: "Protokoli erarojn"
|
||||
LOG_ERRORS_HELP: "Protokoli erarojn al la dosierujo /logs"
|
||||
LOG_HANDLER: "Protokola traktilo"
|
||||
LOG_HANDLER_HELP: "Kien elmeti la protokolojn"
|
||||
DEBUGGER: "Erarserĉilo"
|
||||
DEBUG_TWIG: "Erarserĉilo de Twig"
|
||||
DEBUG_TWIG_HELP: "Ŝalti erarserĉilon de Twig-ŝablonoj"
|
||||
DEFAULT_IMAGE_QUALITY: "Defaŭlta bildkvalito"
|
||||
DEFAULT_IMAGE_QUALITY_HELP: "La defaŭlta bildkvalito uzota dum respecimenumo aŭ kaŝado de bildoj (85%)"
|
||||
CACHE_ALL: "Kaŝmemori ĉiujn bildojn"
|
||||
CACHE_ALL_HELP: "Trairigi ĉiujn bildojn tra la kaŝmemora sistemo de Grav eĉ se ili havas neniujn aŭdvidaĵajn redaktojn"
|
||||
IMAGES_DEBUG: "Bild-erarilaj akvomarkoj"
|
||||
IMAGES_DEBUG_HELP: "Montri surmeton super bildoj indikantan la pikselan profundecon de la bildo ekz. por labori pri retina"
|
||||
#Removed in Grav 1.8
|
||||
IMAGES_SEOFRIENDLY: "SEO-amikaj bildnomoj"
|
||||
IMAGES_SEOFRIENDLY_HELP: "Kiam ŝaltita, la nomo de la bildo estas unue montrata kaj tiam pli malgrandan haketaĵon por reflekti traktitajn operaciojn"
|
||||
UPLOAD_LIMIT: "Dosieralŝutlimo"
|
||||
UPLOAD_LIMIT_HELP: "Agordi la maksimuman alŝutgrandecon en bajtoj (0 estas senlima)"
|
||||
ENABLE_MEDIA_TIMESTAMP: "Ŝalti tempindikojn ĉe aŭdvidaĵoj"
|
||||
ENABLE_MEDIA_TIMESTAMP_HELP: "Postlugas tempindikon surbaze de la laste redaktita dato al ĉiu aŭdvidaĵo"
|
||||
SESSION: "Seanco"
|
||||
SESSION_ENABLED_HELP: "Ŝalti sesisubtenon ene de Grav"
|
||||
SESSION_NAME_HELP: "Identigilo uzata por krei la nomon de la sesia kuketo"
|
||||
SESSION_UNIQUENESS: "Unika signovico"
|
||||
SESSION_UNIQUENESS_HELP: "MD5-haŝo de la radika dosierindiko de Grav, t.e. `GRAV_ROOT` (defaŭlte) aŭ surbaze de la hazarda `security.salt`-signovico."
|
||||
ABSOLUTE_URLS: "Absolutaj URLoj"
|
||||
ABSOLUTE_URLS_HELP: "Absolutaj aŭ relativaj URLoj por `base_url`"
|
||||
PARAMETER_SEPARATOR: "Dividilo de parametroj"
|
||||
PARAMETER_SEPARATOR_HELP: "Dividilo de donitaj parametroj kiu estas ŝanĝebla por Apache ĉe Windows"
|
||||
TASK_COMPLETED: "Tasko estis plenumita"
|
||||
EVERYTHING_UP_TO_DATE: "Ĉio estas ĝisdata"
|
||||
UPDATES_ARE_AVAILABLE: "ĝisdatigo(j) disponeblas"
|
||||
IS_AVAILABLE_FOR_UPDATE: "pretas por ĝisdatiĝo"
|
||||
IS_NOW_AVAILABLE: "estas nun disponebla"
|
||||
CURRENT: "Nuna"
|
||||
UPDATE_GRAV_NOW: "Ĝisdatigi Grav nun"
|
||||
GRAV_SYMBOLICALLY_LINKED: "Grav estas simbole ligita. Ĝisdatigoj ne estos haveblaj"
|
||||
UPDATING_PLEASE_WAIT: "Ĝisdatigas... bonvolu atendi, elŝutas"
|
||||
OF_THIS: "de tiu ĉi"
|
||||
OF_YOUR: "de via"
|
||||
HAVE_AN_UPDATE_AVAILABLE: "havas pretan ĝisdatigon"
|
||||
SAVE_AS: "Konservi kiel"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Ĉu vi certas, ke vi volas forigi tiun ĉi paĝon kaj ĉiujn ĝiajn infanojn? Se la paĝo estas tradukita al aliaj lingvoj, tiuj tradukoj daŭre haveblos kaj devos esti aparte forigitaj. Alie, la paĝdosierujo estos forigita kune kun siaj subpaĝoj. Tiu ĉi ago ne estas malfarebla."
|
||||
AND: "kaj"
|
||||
UPDATE_AVAILABLE: "Ĝisdatigo disponebla"
|
||||
METADATA_KEY: "Ŝlosilo (ekz. 'Ŝlosilvortoj')"
|
||||
METADATA_VALUE: "Valoro (ekzemple 'Blog, Grav')"
|
||||
USERNAME_HELP: "La uzantonomo devas havi inter 3 kaj 16 signojn, inkluzive minusklajn literojn, numerojn, substrekojn kaj streketojn. Majusklaj literoj, spacoj kaj specialaj signoj ne estas permesataj"
|
||||
FULLY_UPDATED: "Plene ĝisdatigita"
|
||||
SAVE_LOCATION: "Konservi lokon"
|
||||
PAGE_FILE: "Paĝŝablono"
|
||||
NO_USER_ACCOUNTS: "Neniuj uzantkontoj estis trovitaj, bonvolu unue krei unu konton..."
|
||||
NO_USER_EXISTS: "Neniu loka uzanto ekzistas por tiu ĉi konto, ne povas konservi..."
|
||||
REDIRECT_TRAILING_SLASH_HELP: "Fari 301-alidirekton anstataŭ travideble trakti vostajn oblikvajn URIojn."
|
||||
DEFAULT_DATE_FORMAT: "Formato de la paĝa dato"
|
||||
DEFAULT_DATE_FORMAT_HELP: "La datformato de paĝoj uzata de Grav. Defaŭlte, Grav provas diveni vian datformaton, tamen vi povas indiki formaton uzante la dat-sintakson de PHP (ekz. Y-m-d H:i)"
|
||||
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Diveni aŭtomate"
|
||||
IGNORE_FILES: "Ignori dosierojn"
|
||||
IGNORE_FILES_HELP: "Specifaj dosieroj ignorotaj dum traktado de paĝoj"
|
||||
IGNORE_FOLDERS: "Ignori dosierujojn"
|
||||
IGNORE_FOLDERS_HELP: "Specifaj dosierujoj ignorotaj dum traktado de paĝoj"
|
||||
HIDE_EMPTY_FOLDERS: "Kaŝi malplenajn dosierujojn"
|
||||
HIDE_EMPTY_FOLDERS_HELP: "Se dosiero enhavas neniun .md-dosieron, ĉu ĝi estu kaŝita en navigado kaj ankaŭ estu nealrutigebla"
|
||||
HTTP_ACCEPT_LANGUAGE: "Agordi lingvon de retumilo"
|
||||
HTTP_ACCEPT_LANGUAGE_HELP: "Vi povas elekti provi agordi la lingvon laŭ la `http_accept_language`-ĉapo en la retumilo"
|
||||
OVERRIDE_LOCALE: "Transpagi agorditan lokaĵaron"
|
||||
OVERRIDE_LOCALE_HELP: "Transpasi la agorditan lokaĵaron en PHP laŭ la nuna lingvo"
|
||||
REDIRECT: "Paĝa alidirektigo"
|
||||
REDIRECT_HELP: "Enmeti paĝruton aŭ eksternan URLon por tiu ĉi paĝo por alidirekti al ekz. `/iu/ruto` aŭ `http://iupaĝo.org`"
|
||||
PLUGIN_STATUS: "Stato de aldonaĵo"
|
||||
INCLUDE_DEFAULT_LANG: "Inkluzivi defaŭltan lingvon"
|
||||
INCLUDE_DEFAULT_LANG_HELP: "Tio ĉi antaŭgluos ĉiujn URLojn en la nuna lingvo per la defaŭlta lingvo. Ekz. `/eo/blogo/mia-afiŝo`"
|
||||
PAGES_FALLBACK_ONLY: "Retrodefaŭlto nur de paĝoj"
|
||||
PAGES_FALLBACK_ONLY_HELP: "Nur 'retrodefaŭltu' por trovi paĝenhavon tra subtenataj lingvoj. La defaŭlta ago estas montri ajnan lingvon trovitan se la aktiva lingvo mankas"
|
||||
ALLOW_URL_TAXONOMY_FILTERS: "Filtriloj de URL-taksonomio"
|
||||
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Paĝ-bazitaj kolektoj permesas al vi filtri per `/taksonomio:valoro`."
|
||||
REDIRECT_DEFAULT_CODE: "Defaŭlta kodo de plusendado"
|
||||
REDIRECT_DEFAULT_CODE_HELP: "La HTTP-statkodo uzota por alidirektoj"
|
||||
IGNORE_HIDDEN: "Ignori kaŝitajn"
|
||||
IGNORE_HIDDEN_HELP: "Ignori ĉiujn dosier(uj)ojn kiuj komenciĝas per PUNKTO"
|
||||
WRAPPED_SITE: "Enpaĝata retejo"
|
||||
WRAPPED_SITE_HELP: "Por ke etosoj/aldonaĵo sciu, ĉu alia platformo enhavas na Grav"
|
||||
FALLBACK_TYPES: "Permesataj retrodefaŭltajn specoj"
|
||||
FALLBACK_TYPES_HELP: "Permesaj dosiertipoj troveblaj se alirataj per Paĝruto. Defaŭlte povas esti ajna speco de aŭdvidaĵo."
|
||||
INLINE_TYPES: "Enliniaj retrodefaŭltaj specoj"
|
||||
INLINE_TYPES_HELP: "Listo de dosierspecoj kiuj estu montrataj enlinie anstataŭ esti elŝutitaj"
|
||||
APPEND_URL_EXT: "Postglui URL-sufikson"
|
||||
APPEND_URL_EXT_HELP: "Aldonos memdefinitan sufikson al la URL de la paĝo. Notu, ke tio ĉi signifas, ke Grav serĉos ŝablonon kun la nomo`<ŝablono>.<sufikso>.twig`"
|
||||
PAGE_MODES: "Pagmodusoj"
|
||||
PAGE_TYPES: "Paĝtipoj"
|
||||
PAGE_TYPES_HELP: "Determinas la paĝspecojn kiujn subtenas Grav kaj la ordo determinas la retrodefaŭltan specon se la peto estas ambigua"
|
||||
ACCESS_LEVELS: "Alirniveloj"
|
||||
GROUPS: "Grupoj"
|
||||
GROUPS_HELP: "Listo de grupoj al kiuj apartenas la uzanto"
|
||||
ADMIN_ACCESS: "Administranta aliro"
|
||||
SITE_ACCESS: "Retejaliro"
|
||||
INVALID_SECURITY_TOKEN: "Nevalida sekurecĵetono"
|
||||
ACTIVATE: "Aktivigi"
|
||||
CACHE_PERMS: "Kaŝmemoraj permesoj"
|
||||
CACHE_PERMS_HELP: "La defaŭltaj kaŝmemoraj dosierujaj permesoj. Kutime 0755 aŭ 0775 depende de agordoj"
|
||||
REMOVE_SUCCESSFUL: "Forigo estis sukcesa"
|
||||
REMOVE_FAILED: "Forigo estis malsukcesa"
|
||||
HIDE_HOME_IN_URLS: "Kaŝi hejmruton en URLoj"
|
||||
HIDE_HOME_IN_URLS_HELP: "Certigas ke defaŭltaj rutoj por ajna paĝo sub hejmo ne referencos la kutiman ruton de la hejmo"
|
||||
TWIG_FIRST: "Traktu unue Twig"
|
||||
TWIG_FIRST_HELP: "Se vi ŝaltis Twig-paĝ-traktadon, vi povas agordi Twig por traktiĝo antaŭ aŭ post la markdown"
|
||||
SESSION_SECURE: "Sekura"
|
||||
SESSION_HTTPONLY: "Nur HTTP"
|
||||
SESSION_HTTPONLY_HELP: "Se vera, indikas ke la kuketoj estu uzata nur tra HTTP, kaj ke redaktoj pere de JavaScript ne estas permesataj"
|
||||
REVERSE_PROXY: "Inversa prokurilo"
|
||||
REVERSE_PROXY_HELP: "Ŝalti tion ĉi se vi estas malantaŭ inversa prokurilo kaj vi spertas problemojn pri URLoj kun malĝustaj pordoj"
|
||||
INVALID_FRONTMATTER_COULD_NOT_SAVE: "nevalida antaŭtraktado, ne savebla "
|
||||
ADD_FOLDER: "Aldoni dosierujon"
|
||||
COPY_PAGE: "Kopii paĝon"
|
||||
PROXY_URL: "URL de la prokurilo"
|
||||
PROXY_URL_HELP: "Enmetu la prokuirlan-gastigadreson, aŭ IP-adreson kaj pordon"
|
||||
NOTHING_TO_SAVE: "Estas nenio konservebla"
|
||||
FILE_ERROR_ADD: "Okazis eraro dum aldonado de la dosiero"
|
||||
FILE_ERROR_UPLOAD: "Okazis eraro dum alŝutado de la dosiero"
|
||||
FILE_UNSUPPORTED: "Nesubtenata dosiertipo"
|
||||
ADD_ITEM: "Aldoni eron"
|
||||
FILE_TOO_LARGE: "La dosiero estas tro granda por alŝuto, la maksimuma permesata grando<br> estas %s laŭ via PHP agordaro. Pligrandigu vian `post_max_size` PHP-agordon"
|
||||
INSTALLING: "Instalado"
|
||||
LOADING: "Ŝargado.."
|
||||
DEPENDENCIES_NOT_MET_MESSAGE: "Unue, necesas havi la sekvajn devigajn programopartojn:"
|
||||
ERROR_INSTALLING_PACKAGES: "Okazis eraro dum instalo de la pakaĵo(j)"
|
||||
INSTALLING_DEPENDENCIES: "Instalas dependaĵojn..."
|
||||
INSTALLING_PACKAGES: "Instalas pakaĵo(j)n..."
|
||||
PACKAGES_SUCCESSFULLY_INSTALLED: "Pakaĵo(j) estis sukcese instalitaj."
|
||||
READY_TO_INSTALL_PACKAGES: "Pretas instali la pakaĵo(j)n"
|
||||
PACKAGES_NOT_INSTALLED: "Pakaĵoj ne instalitaj"
|
||||
PACKAGES_NEED_UPDATE: "Pakaĵoj jam instalitaj, sed tro malnovaj"
|
||||
PACKAGES_SUGGESTED_UPDATE: "La pakaĵoj estas jam instalitaj, kaj la versio enordas, sed ili estos ĝisdatigitaj por esti ĝisdata"
|
||||
REMOVE_THE: "Forigi la %s"
|
||||
CONFIRM_REMOVAL: "Ĉu vi certas, ke vi volas forigi ĉi tiun %s?"
|
||||
REMOVED_SUCCESSFULLY: "%s forigita sukcese"
|
||||
ERROR_REMOVING_THE: "Okazis eraro dum forigo de la %s"
|
||||
ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s postulas la sekvajn devigajn programopartojn, kiuj ne estas devig-petataj de aliaj instalitaj pakaĵoj. Se vi ne uzas ilin, vi povas forigi ilin senpere ĉi tie."
|
||||
READY_TO_UPDATE_PACKAGES: "Pretas ĝisdatigi la pakaĵo(j)n"
|
||||
ERROR_UPDATING_PACKAGES: "Okazis eraro dum ĝisdatigo de la pakaĵo(j)"
|
||||
UPDATING_PACKAGES: "Ĝisdatigas pakaĵo(j)n..."
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "Pakaĵo(j) estis sukcese ĝisdatigitaj."
|
||||
UPDATING: "Ĝisdatigado"
|
||||
GPM_RELEASES: "GPM-publikigoj"
|
||||
GPM_METHOD: "Metodo por Defora Venigo"
|
||||
AUTO: "Aŭtomata"
|
||||
FOPEN: "fopen"
|
||||
CURL: "cURL"
|
||||
STABLE: "Stabila"
|
||||
TESTING: "Testado"
|
||||
FRONTMATTER_PROCESS_TWIG: "Prilabori branĉeton de frontmatter"
|
||||
FRONTMATTER_IGNORE_FIELDS: "Ignori kampojn de frontmatter"
|
||||
FRONTMATTER_IGNORE_FIELDS_PLACEHOLDER: "ekz. forms"
|
||||
PACKAGE_X_INSTALLED_SUCCESSFULLY: "La pakaĵo %s estis sukcese instalita"
|
||||
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Ordigo laŭ supra paĝo, ordigo malŝaltita"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Paĝo ne videblas, ordigo malŝaltita"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Paĝordigo estas malŝaltita por tiu ĉi paĝo ĉar <strong>Numera dosierujprefikso</strong> ne estas ŝaltita"
|
||||
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "NOTU: Vi ne povas aldoni aŭdvidaĵajn dosierojn ĝis vi konservas la paĝon. Simple aklaku 'Konservi' plej supre"
|
||||
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTU: La paĝu devas esti konservita antaŭ ol vi povas alŝuti dosierojn al ĝi."
|
||||
DROP_FILES_HERE_TO_UPLOAD: "Ĵetu viajn dosierojn tien ĉi aŭ <strong>alklaku en tiu ĉi regiono</strong>"
|
||||
INSERT: "Enmeti"
|
||||
UNDO: "Malfari"
|
||||
REDO: "Refari"
|
||||
HEADERS: "Ĉapoj"
|
||||
BOLD: "Grase"
|
||||
ITALIC: "Kursive"
|
||||
STRIKETHROUGH: "Trastreke"
|
||||
SUMMARY_DELIMITER: "Resuma dividilo"
|
||||
LINK: "Ligilo"
|
||||
IMAGE: "Bildo"
|
||||
BLOCKQUOTE: "Blokcitaĵo"
|
||||
UNORDERED_LIST: "Neordigita listo"
|
||||
ORDERED_LIST: "Ordigita listo"
|
||||
EDITOR: "Redaktilo"
|
||||
PREVIEW: "Antaŭrigardo"
|
||||
FULLSCREEN: "Plenekrano"
|
||||
NON_ROUTABLE: "Nerutigebla"
|
||||
NON_VISIBLE: "Nevidebla"
|
||||
NON_PUBLISHED: "Nepublikigita"
|
||||
CHARACTERS: "signoj"
|
||||
PUBLISHING: "Publikigado"
|
||||
MEDIA_TYPES: "Specoj de aŭdvidaĵoj"
|
||||
IMAGE_OPTIONS: "Bildagordoj"
|
||||
MIME_TYPE: "MIME-tipo"
|
||||
THUMB: "Antaŭvido"
|
||||
TYPE: "Tipo"
|
||||
FILE_EXTENSION: "Dosiernoma sufikso"
|
||||
LEGEND: "Paĝlegendo"
|
||||
MEMCACHE_SERVER: "Memcache-servilo"
|
||||
MEMCACHE_SERVER_HELP: "La adreso de la Memcache-servilo"
|
||||
MEMCACHE_PORT: "Memcache-pordo"
|
||||
MEMCACHE_PORT_HELP: "La pordo de la Memcache-servilo"
|
||||
MEMCACHED_SERVER: "Memcached-servilo"
|
||||
MEMCACHED_SERVER_HELP: "La adreso de la Memcache-igita servo"
|
||||
MEMCACHED_PORT: "Memcached-pordo"
|
||||
MEMCACHED_PORT_HELP: "La pordo de la Memcache-igita servilo"
|
||||
REDIS_SERVER: "Redis-servilo"
|
||||
REDIS_SERVER_HELP: "La adreso de la Redis-servilo"
|
||||
REDIS_PORT: "Redis-pordo"
|
||||
REDIS_PORT_HELP: "La pordo de la Redis-servilo"
|
||||
REDIS_PASSWORD: "Pasvorto/sekreto de Redis"
|
||||
ALL: "Ĉiuj"
|
||||
FROM: "de"
|
||||
TO: "al"
|
||||
RELEASE_DATE: "Publikigdato"
|
||||
SORT_BY: "Ordigi laŭ"
|
||||
RESOURCE_FILTER: "Filtri..."
|
||||
FORCE_SSL: "Devigi SSL"
|
||||
FORCE_SSL_HELP: "Devigi SSL-n ĉie, se ŝaltite, kiam retejo estos atingita per HTTP, Grav sendos alidirekton al la HTTPS-paĝo"
|
||||
NEWS_FEED: "Novaĵfluo"
|
||||
EXTERNAL_URL: "Eksterna URLo"
|
||||
CUSTOM_BASE_URL: "Memdefinita baza URLo"
|
||||
CUSTOM_BASE_URL_HELP: "Uzu se oni volas reskribi la retpaĝan domajnon aŭ uzi malsaman subdosierujon al tiun de Grav. Ekz-e http://localhost"
|
||||
FILEUPLOAD_PREVENT_SELF: 'Ne eblas uzi "%s" ekster paĝoj.'
|
||||
FILEUPLOAD_UNABLE_TO_UPLOAD: 'Ne sukcesis alŝuti dosieron %s %s'
|
||||
FILEUPLOAD_UNABLE_TO_MOVE: 'Ne sukcesis movi la dosieron %s al "%s"'
|
||||
DROPZONE_CANCEL_UPLOAD: 'Nuligi alŝuton'
|
||||
DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Ĉu vi certas, ke vi volas nuligi tiun ĉi alŝuton?'
|
||||
DROPZONE_DEFAULT_MESSAGE: 'Ĵetu viajn dosierojn tien ĉi aŭ <strong>alklaku en tiu ĉi regiono</strong>'
|
||||
DROPZONE_FALLBACK_MESSAGE: 'Via retumilo ne subtenas ŝovmetadon de alŝutotaj dosieroj.'
|
||||
DROPZONE_FALLBACK_TEXT: 'Bonvolu uzi la rettrodefaŭltan formularon ĉi-suban por alŝuti viajn dosierojn kiel en la malnovaj tagoj.'
|
||||
DROPZONE_FILE_TOO_BIG: 'La dosiero estas tro granda ({{filesize}}MiB). La maksimuma grandeco estas {{maxFilesize}}MiB.'
|
||||
DROPZONE_INVALID_FILE_TYPE: "Vi ne povas alŝuti dosierojn de tiu ĉi speco."
|
||||
DROPZONE_MAX_FILES_EXCEEDED: "Vi ne povas alŝuti pli da dosieroj."
|
||||
DROPZONE_REMOVE_FILE: "Forigi dosieron"
|
||||
DROPZONE_RESPONSE_ERROR: "La servilo respondis kun {{statusCode}}-a kodo."
|
||||
PREMIUM_PRODUCT: "Ora"
|
||||
DESTINATION_NOT_SPECIFIED: "Destino ne indikita"
|
||||
UPLOAD_ERR_NO_TMP_DIR: "Mankas provizora dosierujo"
|
||||
SESSION_SPLIT: "Sesidivido"
|
||||
ERROR_FULL_BACKTRACE: "Plena Retrospurada Eraro"
|
||||
ERROR_SIMPLE: "Simpla eraro"
|
||||
ERROR_SYSTEM: "Sistema eraro"
|
||||
IMAGES_AUTO_FIX_ORIENTATION: "Aŭtomate ripari orientiĝon"
|
||||
IMAGES_AUTO_FIX_ORIENTATION_HELP: "Aŭtomate riparas la orientiĝon de la bildo surbaze de ĝiaj Exif-datumoj"
|
||||
REDIS_SOCKET: "Konektinterfaco de Redis"
|
||||
REDIS_SOCKET_HELP: "La konektinterfaco de Redis"
|
||||
NOT_SET: "Ne agordita"
|
||||
PERMISSIONS: "Permesoj"
|
||||
NEVER_CACHE_TWIG: "Neniam kaŝmemori Twig"
|
||||
NEVER_CACHE_TWIG_HELP: "Nur kaŝmemori enhavon kaj ĉiufoje trakti Twig por paĝoj. Ignoras la twig_first-agordo."
|
||||
ALLOW_WEBSERVER_GZIP: "Permesi gzip ĉe retservilo"
|
||||
ALLOW_WEBSERVER_GZIP_HELP: "Laŭ implicita agordo, malŝaltite. Kiam ŝaltite, densigo \"Gzip/Deflate\" agordita ĉe WebServer funkcios, sed http konekto ne estos fermita antaŭ ol \"onShutDown()\" evento, kaj tio kaŭzos malrapidan paĝ-ŝutadon"
|
||||
OFFLINE_WARNING: "Ne sukcesis krei konekton al GPM"
|
||||
CLEAR_IMAGES_BY_DEFAULT: "Defaŭlte viŝi bildkaŝmemoron"
|
||||
CLEAR_IMAGES_BY_DEFAULT_HELP: "Defaŭlte, traktitaj bildoj estas plene kaŝmemore viŝititaj, tio ĉi estas malŝaltebla"
|
||||
CLI_COMPATIBILITY: "Kompatibleco de CLI"
|
||||
CLI_COMPATIBILITY_HELP: "Certigas ke nur persist-memoraj \"Cache\" peliloj estas uzataj (file, redis, memcache k.t.p.)"
|
||||
REINSTALL_PLUGIN: "Reinstali aldonaĵon"
|
||||
REINSTALL_THEME: "Reinstali etoson"
|
||||
REINSTALL_THE: "Reinstali la %s"
|
||||
CONFIRM_REINSTALL: "Ĉu vi certas ke vi volas reinstali tiun ĉi %s?"
|
||||
REINSTALLED_SUCCESSFULLY: "%s reinstalita sukcese"
|
||||
ERROR_REINSTALLING_THE: "Okazis eraro dum reinstalo de la %s"
|
||||
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "La pakaĵo %s estis sukcese reinstalita"
|
||||
REINSTALLATION_FAILED: "La reinstalo ne estis sukcesa"
|
||||
WARNING_REINSTALL_NOT_LATEST_RELEASE: "La instalita versio ne estas la plej lasta publikigta versio. Aklakante Daŭrigi, vi forigios la nunan version kaj instalos la plej laste haveblan version"
|
||||
TOOLS: "Iloj"
|
||||
DIRECT_INSTALL: "Rekta instalo"
|
||||
NO_PACKAGE_NAME: "La nomo de la pakaĵo ne estas indikita"
|
||||
PACKAGE_EXTRACTION_FAILED: "La eltirado de la pakaĵo ne estis sukcesa"
|
||||
NOT_VALID_GRAV_PACKAGE: "Ne estas valida pakaĵo por Grav"
|
||||
NAME_COULD_NOT_BE_DETERMINED: "La nomo ne estis determinebla"
|
||||
CANNOT_OVERWRITE_SYMLINKS: "Ne povas superskribi simbolajn ligilojn"
|
||||
ZIP_PACKAGE_NOT_FOUND: "ZIP-pakaĵo ne estis trovita"
|
||||
GPM_OFFICIAL_ONLY: "Nur oficiala GPM"
|
||||
GPM_OFFICIAL_ONLY_HELP: "Permesi nur rektajn instalojn el la oficiala GPM-deponejo."
|
||||
NO_CHILD_TYPE: "Sen ido-speco por ĉi tiu rawroute"
|
||||
SORTABLE_PAGES: "Ordigeblaj paĝoj:"
|
||||
UNSORTABLE_PAGES: "Neordigeblaj paĝoj"
|
||||
ADMIN_SPECIFIC_OVERRIDES: "Transpasoj Specifaj por Administrantoj"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER: "Ordo de Vidigo de Idoj"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "La ordo laŭ kiu idoj de ĉi tiu paĝo devas esti montritaj en la 'Paĝoj' prezento de la \"Admin\" kromaĵo"
|
||||
PWD_PLACEHOLDER: "komplika ĉeno minimume 8 signojn longa"
|
||||
PWD_REGEX: "Pasvorto-regex"
|
||||
PWD_REGEX_HELP: "Defaŭlte: Pasvortoj devas enhavi almenaŭ unu numeron kaj unu majusklan kaj unu minusklan literon, kaj almenaŭ 8 signojn"
|
||||
USERNAME_PLACEHOLDER: "nur minusklaj literoj, ekz. 'admin'"
|
||||
USERNAME_REGEX: "Uzantonomo-regex"
|
||||
USERNAME_REGEX_HELP: "Defaŭlte: Nur minusklaj literoj, ciferoj, streketoj kaj substrekoj. 3 - 16 signoj"
|
||||
ENABLE_AUTO_METADATA: "Aŭomataj metadumoj el Exif"
|
||||
ENABLE_AUTO_METADATA_HELP: "Aŭtomate kreas metadumdosierojn por bildoj kun exif-informoj"
|
||||
2FA_TITLE: "Dua-faktora aŭtentiko"
|
||||
2FA_INSTRUCTIONS: "##### Dua-faktora aŭtentiko\n**2FA** estas ŝaltita por tiu ĉi konto. Bonvolu uzi vian **2FA**-apon por enmeti la nunan **6-ciferan kodon** por fini la ensalut-proceduron."
|
||||
2FA_REGEN_HINT: "Regenerado de la sekreto postulos al vi ĝisdatigi vian aŭtentikaplikaĵon"
|
||||
2FA_LABEL: "Administranta aliro"
|
||||
2FA_FAILED: "Nevalida dua-faktora aŭtentikkodo, bonvolu reprovi..."
|
||||
2FA_ENABLED: "2FA ŝaltita"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
2FA_SECRET: "2FA-sekreto"
|
||||
2FA_SECRET_HELP: "Skani tiun ĉi QR-kodon en vian [aŭtentik-apon](https://learn.getgrav.org/admin-panel/2fa#apps). Krome, estas bona ideo savkopii la sekreton en sekura loko, okaze ke vi bezonas reinstali vian aplikaĵon. Legu la [Grav-dokumentigon](https://learn.getgrav.org/admin-panel/2fa) por pli da informoj "
|
||||
2FA_REGENERATE: "Regeneri"
|
||||
FORCE_LOWERCASE_URLS: "Devigi minusklajn URL-ojn"
|
||||
INTL_ENABLED: "Integrado de modulo Intl"
|
||||
INTL_ENABLED_HELP: "Uzi PHP-modulon \"Intl\" kaj \"collate\" por ordigi kolektojn bazitajn sur UTF8"
|
||||
VIEW_SITE_TIP: "Vidi retejon"
|
||||
TOOLS_DIRECT_INSTALL_TITLE: "Rekta instalo de Grav-pakaĵoj"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Instali pakaĵon per rekta ZIP-alŝuto"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Vi povas facile instali validan Grav-<strong>etoson</strong>, <strong>kromaĵon</strong>, aŭ eĉ ĝisdatigan <strong>Grav</strong> zip pakaĵon per ĉi tiu maniero. Ĉi tiu pakaĵo ne bezonas esti registrita per GPM kaj permesas onin facile malfari ŝanĝojn aŭ instali por testado."
|
||||
TOOLS_DIRECT_INSTALL_URL_TITLE: "Instali Pakaĵon per Defora Referenco al URL"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Alŝuti kaj instali"
|
||||
ROUTE_OVERRIDES: "Transpasoj de Kursoj"
|
||||
ROUTE_DEFAULT: "Defaŭlta ruto"
|
||||
ROUTE_CANONICAL: "Laŭkanona Kurso"
|
||||
ROUTE_ALIASES: "Kromnomoj por Kursoj"
|
||||
OPEN_NEW_TAB: "Malfermi en nova langeto"
|
||||
SESSION_INITIALIZE: "Iniciati sesion"
|
||||
SESSION_INITIALIZE_HELP: "Igas Grav komenci sesion. Tiu ĉi funkcio estas necesa por igi ajnan uzantinteragon funkcii, kiel ekz. ensalutoj, formularoj ktp. La administran aldonaĵo funkcias sendepende de tiu ĉi agordo."
|
||||
STRICT_YAML_COMPAT: "Kompatibleco de YAML"
|
||||
STRICT_TWIG_COMPAT: "Kompatibleco de Twig"
|
||||
SCHEDULER: "Planilo"
|
||||
SCHEDULER_INSTALL_INSTRUCTIONS: "Instrukcioj pri instalo"
|
||||
SCHEDULER_INSTALLED_READY: "Instalita kaj preta"
|
||||
SCHEDULER_SETUP: "Planilaj agordoj"
|
||||
SCHEDULER_INSTRUCTIONS: "La <b>Grav-taskplanilo</b> permesas al vi krei kaj plani memdefinitajn taskojn. Ĝi ankaŭ provizas metodon al Grav-aldonaĵoj por programe integriĝi kaj dinamike aldoni taskojn periode plenumotajn."
|
||||
SCHEDULER_JOBS: "Memdefinitaj taskplanilaj taskoj"
|
||||
SCHEDULER_STATUS: "Stato de la planilo"
|
||||
SCHEDULER_RUNAT: "Plenumi je"
|
||||
SCHEDULER_OUTPUT: "Elirdosiero"
|
||||
SCHEDULER_OUTPUT_HELP: "La dosierindiko/dosiernomo de la elira dosiero (el la radiko de la Grav-instalo)"
|
||||
SCHEDULER_OUTPUT_TYPE: "Elirtipo"
|
||||
SCHEDULER_OUTPUT_TYPE_HELP: "Aŭ postaldoni en saman dosieron ĉiulanĉe, aŭ superskribi la dosieron ĉiulanĉe"
|
||||
SCHEDULER_EMAIL: "Retpoŝto"
|
||||
SCHEDULER_EMAIL_HELP: "Retpoŝtadreso kiu ricevos la eligon. NOTU: devas esti difinita eligdosiero"
|
||||
SECURITY: "Sekureco"
|
||||
XSS_SECURITY: "XSS-sekureco por enhavo"
|
||||
XSS_WHITELIST_PERMISSIONS: "Blanklistigitaj permesoj"
|
||||
XSS_WHITELIST_PERMISSIONS_HELP: "Uzantoj kun la jenaj permesoj preteriras la XSS-regulojn dum konservado de enhavo"
|
||||
XSS_ON_EVENTS: "Filtri \"On\"-eventojn"
|
||||
XSS_INVALID_PROTOCOLS: "Filtri Nevalidajn protokolojn"
|
||||
XSS_INVALID_PROTOCOLS_LIST: "Nevalida listo de protokoloj"
|
||||
XSS_MOZ_BINDINGS: "Filtri \"Moz\" bindaĵojn"
|
||||
XSS_HTML_INLINE_STYLES: "Filtri enliniajn HTML-stilojn"
|
||||
XSS_DANGEROUS_TAGS: "Filtri danĝerajn HTML-etikedojn"
|
||||
XSS_DANGEROUS_TAGS_LIST: "Listo de danĝeraj HTML-etikedoj"
|
||||
XSS_ONSAVE_ISSUE: "Ne sukcesis konservi: Detektis XSS-roblemon..."
|
||||
XSS_ISSUE: "<strong>NOTO:</strong> Grav trovis eventualajn XSS-ajn problemojn en <strong>%s</strong>"
|
||||
UPLOADS_SECURITY: "Sekureco de alŝutaĵoj"
|
||||
UPLOADS_DANGEROUS_EXTENSIONS: "Danĝeraj dosiernomaj sufiksoj"
|
||||
UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Malpermesas alŝuton de tiuj ĉi dosiersufiksoj sendepende de la akceptitaj MIME-tipoj"
|
||||
REPORTS: "Raportoj"
|
||||
LOGS: "Protokoloj"
|
||||
LOG_VIEWER_FILES: "Protokoli \"Viewer\" Dosierojn"
|
||||
LOG_VIEWER_FILES_HELP: "Dosieroj en /logs/, kiuj estos videblaj en Iloj - Protokoloj. Ekz. 'grav' = /logs/grav.log"
|
||||
BACKUPS_STORAGE_PURGE_TRIGGER: "Savkopii Ekagilon por Forigo de Konservejo"
|
||||
BACKUPS_MAX_COUNT: "Maksimuma kvanto de sekurkopioj"
|
||||
BACKUPS_MAX_COUNT_HELP: "0 signifas nelimigita"
|
||||
BACKUPS_MAX_SPACE: "Maksimuma spaco por sekurkopioj"
|
||||
BACKUPS_MAX_RETENTION_TIME: "Maksimuma Konservadoperiodo"
|
||||
BACKUPS_MAX_RETENTION_TIME_APPEND: "en tagoj"
|
||||
BACKUPS_PROFILE_NAME: "Nomo de sekurkopio"
|
||||
BACKUPS_PROFILE_ROOT_FOLDER: "Radika dosierujo"
|
||||
BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Povas esti absoluta dosierindiko aŭ fluo"
|
||||
BACKUPS_PROFILE_EXCLUDE_PATHS: "Ekskluzivi dosierindikojn"
|
||||
BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Absolutaj dosierindikoj por ekskluzivi, po unu por linio"
|
||||
BACKUPS_PROFILE_EXCLUDE_FILES: "Ekskluzivi dosierojn"
|
||||
BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Specifa dosieroj aŭ dosierujoj por ekskluzivi, po unu por linio"
|
||||
BACKUPS_PROFILE_SCHEDULE: "Ŝalti planitan taskon"
|
||||
BACKUPS_PROFILE_SCHEDULE_AT: "Plenumi planitan taskon"
|
||||
COMMAND: "Komando"
|
||||
EXTRA_ARGUMENTS: "Kromaj argumentoj"
|
||||
ACCOUNTS: "Kontoj"
|
||||
USER_ACCOUNTS: "Uzantokontoj"
|
||||
ACCESS_ADMIN_SETTINGS: "Agordoj"
|
||||
ACCESS_ADMIN_USERS: "Matrumi uzantojn"
|
||||
USERS: "Uzantoj"
|
||||
CONFIGURATION: "Agordoj"
|
||||
ADMIN_CACHING: "Ŝalti administran kaŝmemoron"
|
||||
ADMIN_CACHING_HELP: "Kaŝmemoro en la administra sistemo povas esti regata sendepende de la uzant-flanka retejo"
|
||||
CONTENT_PADDING: "Ŝtopado de enhavo"
|
||||
CONTENT_PADDING_HELP: "(Mal)ŝalti ŝtopadon de enhavo ĉirkaŭ enhavo-regiono por provizi pli da spaco"
|
||||
TIMEOUT: "Tempolimo"
|
||||
TIMEOUT_HELP: "Agordas la sesian tempolimon per sekundoj"
|
||||
DASHBOARD: "Stirpanelo"
|
||||
NOTIFICATIONS: "Sciigoj"
|
||||
PAGEMEDIA_RESIZER: "> La sekva agordaro aplikiĝas por bildoj alŝutitaj per la paĝaj aŭdovidaĵoj. \"Ŝanĝi larĝon/alton\" aŭtomate kaj proporcie malpligrandigos bildon se ĝi transpasas enigitajn limojn. Maksimumaj kaj minimumaj valoroj por distingivo difinas la grand-intervalon por alŝutitaj bildoj. Agordu la kampojn al 0 por preventi ajnan manipuladon."
|
||||
1155
config/www/user/plugins/admin/languages/es.yaml
Normal file
1155
config/www/user/plugins/admin/languages/es.yaml
Normal file
File diff suppressed because it is too large
Load Diff
903
config/www/user/plugins/admin/languages/et.yaml
Normal file
903
config/www/user/plugins/admin/languages/et.yaml
Normal file
@@ -0,0 +1,903 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_NOSCRIPT_MSG: "Palun luba oma brauseris JavaScripti kasutamine"
|
||||
ADMIN_BETA_MSG: "Tegemist on beeta-versiooniga! Kasutamine töötaval veebilehel oma vastutusel..."
|
||||
ADMIN_REPORT_ISSUE: "Leidsid mõne vea? Palun anna sellest teada GitHub-i vahendusel."
|
||||
EMAIL_FOOTER: "<a href=\"https://getgrav.org\">Veebileht kasutab Grav'i</a> - kaasaegset failipõhist sisuhaldustarkvara"
|
||||
LOGIN_BTN: "Logi sisse"
|
||||
LOGIN_BTN_FORGOT: "Unusta"
|
||||
LOGIN_BTN_RESET: "Lähtesta salasõna"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Saada lähtestamise juhised"
|
||||
LOGIN_BTN_CLEAR: "Tühjenda vorm"
|
||||
LOGIN_BTN_CREATE_USER: "Loo kasutaja"
|
||||
LOGIN_LOGGED_IN: "Oled edukalt sisse logitud"
|
||||
LOGIN_FAILED: "Sisselogimine ebaõnnestus"
|
||||
LOGGED_OUT: "Sind logiti välja"
|
||||
RESET_NEW_PASSWORD: "Palun sisesta uus salasõna …"
|
||||
RESET_LINK_EXPIRED: "Salasõna lähtestamine on aegunud, palun proovi uuesti"
|
||||
RESET_PASSWORD_RESET: "Salasõna on lähtestatud"
|
||||
RESET_INVALID_LINK: "Kehtetu lähtestamise link, palun proovi uuesti"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Salasõna lähtestamise juhised on saadeti sinu e-posti aadressile"
|
||||
FORGOT_FAILED_TO_EMAIL: "Juhiste e-postiga saatmine ebaõnnestus, palun proovi hiljem uuesti"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Kasutaja %s salasõna ei saa lähtestada, puudub e-posti aadress"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "Puudub kasutaja kasutajanimega <b>%s</b>"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Salasõna ei saa lähtestada. See veebileht ei ole seadistatud e-kirju saatma"
|
||||
FORGOT_EMAIL_SUBJECT: "%s salasõna lähtestamise taotlus"
|
||||
FORGOT_EMAIL_BODY: "<h1>Salasõna lähtestamine</h1><p>Hea %1$s,</p><p>veebilehelt <b>%4$s</b> tehti taotlus sinu salasõna lähtestamiseks.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Salasõna lähtestamiseks klõpsa siia</a><br /><br /></p><p>Võid ka järgneva aadressi kopeerida oma veebilehitseja aadressiribale:</p> <p>%2$s</p><p><br />Parimate soovidega<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Halda lehti"
|
||||
PAGES: "Lehed"
|
||||
PLUGINS: "Lisamoodulid"
|
||||
PLUGIN: "Lisamoodul"
|
||||
THEMES: "Kujundused"
|
||||
LOGOUT: "Logi välja"
|
||||
BACK: "Tagasi"
|
||||
NEXT: "Edasi"
|
||||
PREVIOUS: "Eelmine"
|
||||
ADD_PAGE: "Lisa leht"
|
||||
MOVE: "Liiguta"
|
||||
DELETE: "Kustuta"
|
||||
UNSET: "Tühista määramine"
|
||||
VIEW: "Vaata"
|
||||
SAVE: "Salvesta"
|
||||
NORMAL: "Tavaline"
|
||||
EXPERT: "Ekspert"
|
||||
EXPAND_ALL: "Laienda kõik"
|
||||
COLLAPSE_ALL: "Ahenda kõik"
|
||||
ERROR: "Viga"
|
||||
CLOSE: "Sulge"
|
||||
CANCEL: "Tühista"
|
||||
CONTINUE: "Jätka"
|
||||
CONFIRM: "Kinnita"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Kinnitamine on nõutav"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Tehtud on muudatusi"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Sul on salvestamata muudatusi. Kas soovid kindlasti lahkuda ilma salvestamata?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Kinnitamine on nõutav"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Kas soovid kindlasti seda faili kustutada? Seda toimingut ei saa tagasi võtta."
|
||||
MODAL_UPDATE_GRAV_CONFIRMATION_REQUIRED_DESC: "Järgnevaga uuendad Grav'i viimase saadaoleva versioonini. Kas sa soovid jätkata?"
|
||||
ADD_FILTERS: "Lisa filtreid"
|
||||
SEARCH_PAGES: "Otsi lehti"
|
||||
VERSION: "Versioon"
|
||||
WAS_MADE_WITH: "valmistas"
|
||||
BY: "-ga"
|
||||
UPDATE_THEME: "Uuenda kujundust"
|
||||
UPDATE_PLUGIN: "Uuenda lisamoodulit"
|
||||
OF_THIS_THEME_IS_NOW_AVAILABLE: "on sellele kujundusele nüüd saadaval"
|
||||
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "on sellele lisamoodulile nüüd saadaval"
|
||||
AUTHOR: "Autor"
|
||||
HOMEPAGE: "Koduleht"
|
||||
DEMO: "Esitlus"
|
||||
BUG_TRACKER: "Vigadest teavitamine"
|
||||
KEYWORDS: "Võtmesõnad"
|
||||
LICENSE: "Litsents"
|
||||
DESCRIPTION: "Kirjeldus"
|
||||
README: "Loe mind"
|
||||
REMOVE_THEME: "Eemalda kujundus"
|
||||
INSTALL_THEME: "Paigalda kujundus"
|
||||
THEME: "Kujundus"
|
||||
BACK_TO_THEMES: "Tagasi kujundustenimekirja"
|
||||
BACK_TO_PLUGINS: "Tagasi lisamoodulite nimekirja"
|
||||
CHECK_FOR_UPDATES: "Kontrolli uuendusi"
|
||||
ADD: "Lisa"
|
||||
CLEAR_CACHE: "Tühjenda puhver"
|
||||
CLEAR_CACHE_ALL_CACHE: "Kogu puhver"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Ainult väärtused"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Ainult pildid"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Ainult puhver"
|
||||
CLEAR_CACHE_TMP_ONLY: "Ainult tmp"
|
||||
UPDATES_AVAILABLE: "Uuendamist vajavad"
|
||||
DAYS: "Päeva tagasi"
|
||||
UPDATE: "Uuenda"
|
||||
BACKUP: "Varunda"
|
||||
BACKUPS: "Varukoopiad"
|
||||
BACKUP_NOW: "Loo kohe varukoopia"
|
||||
BACKUPS_STATS: "Varukoopia statistika"
|
||||
BACKUPS_HISTORY: "Varukoopiate ajalugu"
|
||||
BACKUPS_PURGE_CONFIG: "Varukoopiate kustutamise seaded"
|
||||
BACKUPS_PROFILES: "Varukoopia profiil"
|
||||
BACKUPS_COUNT: "Varukoopiate arv"
|
||||
BACKUPS_PROFILES_COUNT: "Profiilide arv"
|
||||
BACKUPS_TOTAL_SIZE: "Kasutatud kettaruum"
|
||||
BACKUPS_NEWEST: "Uusim varukoopia"
|
||||
BACKUPS_OLDEST: "Vanim varukoopia"
|
||||
BACKUPS_PURGE: "Kustuta"
|
||||
BACKUPS_NOT_GENERATED: "Ühtegi varukoopiat pole veel loodud..."
|
||||
BACKUP_DELETED: "Varukoopia on kustutatud"
|
||||
BACKUP_NOT_FOUND: "Varukoopiat ei leitud"
|
||||
BACKUP_DATE: "Varukoopia kuupäev"
|
||||
STATISTICS: "Statistika"
|
||||
VIEWS_STATISTICS: "Lehekülgede vaatamise statistika"
|
||||
TODAY: "Täna"
|
||||
WEEK: "Nädal"
|
||||
MONTH: "Kuu"
|
||||
LATEST_PAGE_UPDATES: "Viimased lehtede uuendused"
|
||||
MAINTENANCE: "Hooldus"
|
||||
UPDATED: "Uuendatud"
|
||||
MON: "E"
|
||||
TUE: "T"
|
||||
WED: "K"
|
||||
THU: "N"
|
||||
FRI: "R"
|
||||
SAT: "L"
|
||||
SUN: "P"
|
||||
COPY: "Kopeeri"
|
||||
EDIT: "Muuda"
|
||||
CREATE: "Loo"
|
||||
GRAV_ADMIN: "Grav'i admin"
|
||||
GRAV_OFFICIAL_PLUGIN: "Grav-i ametlik lisamoodul"
|
||||
GRAV_OFFICIAL_THEME: "Grav-i ametlik kujundus"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "See lisamoodul on sümboolselt lingitud (symlink). Värskendusi ei leitud."
|
||||
THEME_SYMBOLICALLY_LINKED: "See kujundus on sümboolselt lingitud (symlink) Värskendusi ei leitud"
|
||||
REMOVE_PLUGIN: "Eemalda lisamoodul"
|
||||
INSTALL_PLUGIN: "Paigalda lisamoodul"
|
||||
AVAILABLE: "Saadaval"
|
||||
INSTALLED: "Paigaldatud"
|
||||
INSTALL: "Paigalda"
|
||||
ACTIVE_THEME: "Aktiivne kujundus"
|
||||
SWITCHING_TO: "Üleminek"
|
||||
SWITCHING_TO_DESCRIPTION: "Valides mõne muu kujundus, ei ole mingit garantiid, et elementide paigutus lehtedel jääb samaks. Lehtede laadimisel võivad tekkida tõrked."
|
||||
SWITCHING_TO_CONFIRMATION: "Kas soovite jätkata ja kujundust muuta?"
|
||||
CREATE_NEW_USER: "Uue kasutaja loomine"
|
||||
REMOVE_USER: "Eemalda kasutaja"
|
||||
ACCESS_DENIED: "Juurdepääs keelatud!"
|
||||
ACCOUNT_NOT_ADMIN: "Teie kontol pole on administraatori õiguseid"
|
||||
PHP_INFO: "PHP teave"
|
||||
INSTALLER: "Paigaldaja"
|
||||
AVAILABLE_THEMES: "Saadaolevad kujundused"
|
||||
AVAILABLE_PLUGINS: "Saadaolevad lisamoodulid"
|
||||
INSTALLED_THEMES: "Paigaldatud kujundused"
|
||||
INSTALLED_PLUGINS: "Paigaldatud lisamoodulid"
|
||||
BROWSE_ERROR_LOGS: "Uuri vealogisid"
|
||||
SITE: "Veebileht"
|
||||
INFO: "Teave"
|
||||
SYSTEM: "Süsteem"
|
||||
USER: "Kasutaja"
|
||||
ADD_ACCOUNT: "Lisa konto"
|
||||
SWITCH_LANGUAGE: "Vaheta keelt"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Lisamoodul on edukalt lubatud"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Lisamoodul on edukalt keelatud"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Vaikimisi kujundus on edukalt muudetud"
|
||||
INSTALLATION_FAILED: "Paigaldamine ebaõnnestus"
|
||||
INSTALLATION_SUCCESSFUL: "Paigaldamine õnnestus"
|
||||
UNINSTALL_FAILED: "Eemaldamine ebaõnnestus"
|
||||
UNINSTALL_SUCCESSFUL: "Eemaldamine õnnestus"
|
||||
SUCCESSFULLY_SAVED: "Edukalt salvestatud"
|
||||
SUCCESSFULLY_COPIED: "Edukalt kopeeritud"
|
||||
REORDERING_WAS_SUCCESSFUL: "Järjekord on muudetud"
|
||||
SUCCESSFULLY_DELETED: "Kustutatud"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Keel on edukalt vahetatud"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Teil pole selle tegevuse jaoks piisavalt õigusi"
|
||||
CACHE_CLEARED: "Puhver tühejndatud"
|
||||
METHOD: "Meetod"
|
||||
ERROR_CLEARING_CACHE: "Viga puhvri kustutamisel"
|
||||
AN_ERROR_OCCURRED: "Tekkis viga"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Teie varukoopia n allalaadimiseks valmis"
|
||||
DOWNLOAD_BACKUP: "Laadi varukopia alla"
|
||||
PAGES_FILTERED: "Filtreeritud lehed"
|
||||
NO_PAGE_FOUND: "Leheküõlge ei leitud"
|
||||
INVALID_PARAMETERS: "Vigased parameetrid"
|
||||
NO_FILES_SENT: "Faile ei saadetud ära"
|
||||
EXCEEDED_FILESIZE_LIMIT: "PHP seadete faili suuruse limiit on ületatud"
|
||||
EXCEEDED_POSTMAX_LIMIT: "Ületab PHP seadete post_max_size väärtuse"
|
||||
UNKNOWN_ERRORS: "Tundmatud vead"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Grav seadefaili limiit on ületatud"
|
||||
UNSUPPORTED_FILE_TYPE: "Failitüüp ei ole toetatud"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Üleslaaditud faili ei saanud liigutada"
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Fail on edukalt üles laaditud"
|
||||
FILE_DELETED: "Fail on kustutatud"
|
||||
FILE_COULD_NOT_BE_DELETED: "Faili ei saa kustutada"
|
||||
FILE_NOT_FOUND: "Faili ei leitud"
|
||||
NO_FILE_FOUND: "Ühtegi faili ei leitud"
|
||||
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav uuendati edukalt versioonile"
|
||||
GRAV_UPDATE_FAILED: "Grav'i uuendamine nurjus"
|
||||
EVERYTHING_UPDATED: "Kõik on uuendatud"
|
||||
UPDATES_FAILED: "Uuendamine nurjus"
|
||||
AVATAR_BY: "Avatar lehelt"
|
||||
AVATAR_UPLOAD_OWN: "Või laadi üles enda oma..."
|
||||
LAST_BACKUP: "Viimane varundus"
|
||||
FULL_NAME: "Täisnimi"
|
||||
USERNAME: "Kasutajanimi"
|
||||
EMAIL: "E-post"
|
||||
USERNAME_EMAIL: "Kasutajanimi või e-post"
|
||||
PASSWORD: "Salasõna"
|
||||
PASSWORD_CONFIRM: "Kinnita salasõna"
|
||||
TITLE: "Pealkiri"
|
||||
ACCOUNT: "Konto"
|
||||
EMAIL_VALIDATION_MESSAGE: "Palun sisesta kehtiv e-posti aadress"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Salasõna peab sisaldama vähemalt ühte numbrit, ühte suur- ja väiketähte ja koosnema vähemalt 8 märgist"
|
||||
LANGUAGE: "Keel"
|
||||
LANGUAGE_HELP: "Määra sobiv keel"
|
||||
MEDIA: "Meedia"
|
||||
DEFAULTS: "Vaikimisi"
|
||||
SITE_TITLE: "Veebilehe nimi"
|
||||
SITE_TITLE_PLACEHOLDER: "Pealkiri kogu saidile"
|
||||
SITE_TITLE_HELP: "Vaikimisi pealkiri saidile - sageli kasutatakse kujundustes"
|
||||
SITE_DEFAULT_LANG: "Vaikimisi keel"
|
||||
SITE_DEFAULT_LANG_PLACEHOLDER: "Vaikimisi keel <HTML> tag-ides kasutamiseks"
|
||||
SITE_DEFAULT_LANG_HELP: "Vaikimisi keel kujunduste <HTML> tag-ides kasutamiseks"
|
||||
DEFAULT_AUTHOR: "Vaikimisi autor"
|
||||
DEFAULT_AUTHOR_HELP: "Vaikimisi autori nimi, kasutatakse sageli kujundustes või lehe sisus"
|
||||
DEFAULT_EMAIL: "Vaikimisi e-post"
|
||||
DEFAULT_EMAIL_HELP: "Vaikimisi e-mail kujundustes või lehekülgedel kasutamiseks"
|
||||
TAXONOMY_TYPES: "Taksonoomia tüübid"
|
||||
TAXONOMY_TYPES_HELP: "Taksonoomia liigid tuleb määratleda siin kui soovid kasutada neid lehtedel"
|
||||
PAGE_SUMMARY: "Lehekülje kokkuvõte"
|
||||
ENABLED: "Lubatud"
|
||||
ENABLED_HELP: "Lülita kokkuvõte sisse (see kokkuvõte on sama mis lehekülje sisu)"
|
||||
'YES': "Jah"
|
||||
'NO': "Ei"
|
||||
SUMMARY_SIZE: "Kokkuvõtte maht"
|
||||
SUMMARY_SIZE_HELP: "Tähemärkide arv, mida kasutatakse sisu kokkuvõtte genereerimisel"
|
||||
FORMAT: "Formaat"
|
||||
FORMAT_HELP: "lühike = kasuta esimest leitud eraldajat või suurust; pikk = ignoreeri kokkuvõte eraldajat"
|
||||
SHORT: "Lühike"
|
||||
LONG: "Pikk"
|
||||
DELIMITER: "Eraldaja"
|
||||
DELIMITER_HELP: "Lehekülje kokkuvõtte eraldaja (vaikimisi ' === \")"
|
||||
METADATA: "Metaandmed"
|
||||
METADATA_HELP: "Metaandmete vaikeväärtused, mida kuvatakse vaikimisi igal leheküljel. Vajadusel saab seda igal lehel eraldi muuta."
|
||||
NAME: "Nimi"
|
||||
CONTENT: "Sisu"
|
||||
SIZE: "Suurus"
|
||||
ACTION: "Tegevus"
|
||||
REDIRECTS_AND_ROUTES: "Ümbersuunamised ja marsruudid"
|
||||
CUSTOM_REDIRECTS: "Kohandatud ümbersuunamised"
|
||||
CUSTOM_REDIRECTS_HELP: "Marsruudid teistele lehekülgedele suunamiseks. Saab kasutada ka standardsed regex-lausendeid."
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/sinu/alias"
|
||||
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/sinu/suunamine"
|
||||
CUSTOM_ROUTES: "Kohandatud suunamised"
|
||||
CUSTOM_ROUTES_HELP: "marsruudid aliaste teistele lehekülgedele suunamiseks. Saab kasutada ka standardsed regex-lausendeid"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/sinu/alias"
|
||||
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
|
||||
FILE_STREAMS: "Failivood"
|
||||
DEFAULT: "Vaikimisi"
|
||||
PAGE_MEDIA: "Lehe meedia"
|
||||
OPTIONS: "Valikud"
|
||||
PUBLISHED: "Avaldatud"
|
||||
PUBLISHED_HELP: "Vaikimisi on leht avaldatud, kui sa ei määra avaldamise staatuseks 'Ei' või kui avaldamise kuupäev on tulevikus või privaatseks muutmise kuupäev on minevikus"
|
||||
DATE: "Kuupäev"
|
||||
DATE_HELP: "Kuupäeva muutuja lubab sul määrata just selle lehega seotud kuupäeva"
|
||||
PUBLISHED_DATE: "Avaldamise aeg"
|
||||
PUBLISHED_DATE_HELP: "Saab määrata kuupäeva ja kellaaja, millal leht automaatselt avaldatakse"
|
||||
UNPUBLISHED_DATE: "Privaatseks muutmise aeg"
|
||||
UNPUBLISHED_DATE_HELP: "Saab määrata kuupäeva ja kellaaja, millal leht automaatselt privaatseks muudetakse."
|
||||
ROBOTS: "Robotid"
|
||||
TAXONOMIES: "Taksonoomiad"
|
||||
TAXONOMY: "Taksonoomia"
|
||||
ADVANCED: "Edasijõudnud"
|
||||
SETTINGS: "Seaded"
|
||||
FOLDER_NUMERIC_PREFIX: "Kataloogi numbriline eesliide"
|
||||
FOLDER_NUMERIC_PREFIX_HELP: "Numbriline eesliide, mis võimaldab käsitsi järjestamist ja tähistab nähtavust"
|
||||
FOLDER_NAME: "Kataloogi nimi"
|
||||
FOLDER_NAME_HELP: "Kataloogi nimi, mis salvestatakse failisüsteemi selle lehe jaoks"
|
||||
PARENT: "Peamine"
|
||||
DEFAULT_OPTION_ROOT: "- Juurkaust -"
|
||||
DEFAULT_OPTION_SELECT: "- Vali -"
|
||||
DISPLAY_TEMPLATE: "Näita malli"
|
||||
DISPLAY_TEMPLATE_HELP: "Lehe tüüp, mis määrab, millist Twigi malli kasutatakse lehe visualiseerimiseks"
|
||||
ORDERING: "Järjestamine"
|
||||
PAGE_ORDER: "Lehekülgede järjekord"
|
||||
OVERRIDES: "Ülekirjutused"
|
||||
MENU: "Menüü"
|
||||
MENU_HELP: "Menüüs kasutatav sõne. Kui ei ole seatud, kasutatakse Pealkirja."
|
||||
SLUG: "Slug"
|
||||
SLUG_HELP: "Slug muutuja võimaldab spetsiifiliselt seada lehe nimetuse osa URL-s"
|
||||
SLUG_VALIDATE_MESSAGE: "Slug peab koosnema ainult väiketähtedest, numbritest ja kriipsudest"
|
||||
PROCESS: "Töötlemine"
|
||||
PROCESS_HELP: "Saab määrata, kuidas lehti töödeldakse. Lisaks üldisele seadistusele saab muuta ka iga lehe puhul eraldi"
|
||||
DEFAULT_CHILD_TYPE: "Vaikimisi tütre tüüp"
|
||||
USE_GLOBAL: "Kasuta vaikeväärtust"
|
||||
ROUTABLE: "Suunatav"
|
||||
ROUTABLE_HELP: "Kui see leht on URLi kaudu kättesaadav"
|
||||
CACHING: "Vahemälu"
|
||||
VISIBLE: "Nähtav"
|
||||
VISIBLE_HELP: "Määrab, kas leht on navigatsioonis nähtav."
|
||||
DISABLED: "Keelatud"
|
||||
ITEMS: "Kirjed"
|
||||
ORDER_BY: "Järjesta"
|
||||
ORDER: "Järjekord"
|
||||
FOLDER: "Kataloog"
|
||||
ASCENDING: "Kasvav"
|
||||
DESCENDING: "Kahanev"
|
||||
PAGE_TITLE: "Lehe pealkiri"
|
||||
PAGE_TITLE_HELP: "Lehekülje pealkiri"
|
||||
PAGE: "Leht"
|
||||
FRONTMATTER: "Frontmatter"
|
||||
FILENAME: "Failinimi"
|
||||
PARENT_PAGE: "Peamine lehekülg"
|
||||
HOME_PAGE: "Avaleht"
|
||||
HOME_PAGE_HELP: "Leht, mida Grav kasutab vaikimisi avalehena"
|
||||
DEFAULT_THEME: "Vaikmisi kujundus"
|
||||
DEFAULT_THEME_HELP: "Määra Grav'i vaikimisi kujundus (algne vaikimisi kujundus on Antimatter)"
|
||||
TIMEZONE: "Ajavöönd"
|
||||
TIMEZONE_HELP: "Tühista serveri vaikimisi ajavöönd"
|
||||
SHORT_DATE_FORMAT: "Lühike kuupäevavorming"
|
||||
SHORT_DATE_FORMAT_HELP: "Määra lühike kuupäevavorming, mida kujundused saavad kasutada"
|
||||
LONG_DATE_FORMAT: "Pikk kuupäevavorming"
|
||||
LONG_DATE_FORMAT_HELP: "Määra pikk kuupäevavorming, mida kujundused saavad kasutada"
|
||||
DEFAULT_ORDERING: "Vaikimisi järjestamine"
|
||||
DEFAULT_ORDERING_HELP: "Lehtede nimekirja esitatakse seda järjestust kasutades, kui ei ole käsitsi ümber järjestatud"
|
||||
DEFAULT_ORDERING_DEFAULT: "Vaikimisi - põhineb kausta nimel"
|
||||
DEFAULT_ORDERING_FOLDER: "Kataloog - põhineb eesliiteta kataloogi nimel"
|
||||
DEFAULT_ORDERING_TITLE: "Pealkiri - põhineb päise pealkirjaväljal"
|
||||
DEFAULT_ORDERING_DATE: "Kuupäev - põhineb päise kuupäevaväljal"
|
||||
DEFAULT_ORDER_DIRECTION: "Vaikimisi järjestamise suund"
|
||||
DEFAULT_ORDER_DIRECTION_HELP: "Lehtede nimekirja järjestamise suund"
|
||||
DEFAULT_PAGE_COUNT: "Vaikimisi lehtede arv"
|
||||
DEFAULT_PAGE_COUNT_HELP: "Vaikimisi maksimaalne lehtede arv nimekirjas"
|
||||
DATE_BASED_PUBLISHING: "Kuupäevapõhine avaldamine"
|
||||
DATE_BASED_PUBLISHING_HELP: "Muuda lehed kuupäevapõhiselt automaatselt avaldatuks või privaatseks"
|
||||
EVENTS: "Sündmused"
|
||||
EVENTS_HELP: "Luba või keela eriomased sündmused. Keelamine võib osad lisamoodulid katki teha"
|
||||
REDIRECT_DEFAULT_ROUTE: "Suuna vaikimisi teekonnale"
|
||||
REDIRECT_DEFAULT_ROUTE_HELP: "Suuna automaatselt lehe vaikimisi teekonnale"
|
||||
LANGUAGES: "Keeled"
|
||||
SUPPORTED: "Toetatud"
|
||||
SUPPORTED_HELP: "Komadega eraldatud nimekiri 2-tähelistest keelekoodidest (näiteks 'et,en,de')"
|
||||
SUPPORTED_PLACEHOLDER: "nt. en, et"
|
||||
TRANSLATIONS_FALLBACK: "Tõlke varukeel"
|
||||
TRANSLATIONS_FALLBACK_HELP: "Otsib tõlget järjestikuselt teistest keeltest, kui valitud keeles tõlget ei ole"
|
||||
ACTIVE_LANGUAGE_IN_SESSION: "Sessiooni aktiivne keel"
|
||||
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Säilita sessioonis aktiivne keel"
|
||||
HTTP_HEADERS: "HTTP päised"
|
||||
EXPIRES: "Aegub"
|
||||
EXPIRES_HELP: "Seab aegumise (`expires`) päise. Väärtus on sekundites."
|
||||
CACHE_CONTROL: "HTTP vahemälu juhtimine"
|
||||
CACHE_CONTROL_HELP: "Seab puhvri juhtimise käsundi, nagu `no-cache, no-store, must-revalidate`"
|
||||
CACHE_CONTROL_PLACEHOLDER: "nt. avalik, max-age=31536000"
|
||||
LAST_MODIFIED: "Viimati muudetud"
|
||||
LAST_MODIFIED_HELP: "Seab viimati muudetud (`last modified`) päise, mis võib aidata optimeerida puhverserveri ja veebilehitseja puhverdamist"
|
||||
ETAG: "ETag"
|
||||
ETAG_HELP: "Seab `etag` päise, mis võib aidata määrata, millal lehte on muudetud"
|
||||
VARY_ACCEPT_ENCODING: "Vary accept encoding"
|
||||
VARY_ACCEPT_ENCODING_HELP: "Seab `Vary: Accept Encoding` päise, mis võib aidata puhverserveri ja CDN-i töös"
|
||||
MARKDOWN: "Markdown"
|
||||
MARKDOWN_EXTRA: "Markdown Extra"
|
||||
MARKDOWN_EXTRA_HELP: "Lülita sisse vaikimisi tugi Markdown Extra-le - https://michelf.ca/projects/php-markdown/extra/"
|
||||
AUTO_LINE_BREAKS: "Automaatsed reavahetused"
|
||||
AUTO_LINE_BREAKS_HELP: "Lülita markdown-s sisse tugi automaatsetele reavahetustele"
|
||||
AUTO_URL_LINKS: "Automaatsed URL lingid"
|
||||
AUTO_URL_LINKS_HELP: "Lülita sisse URL-de automaatne muutmine HTML linkideks"
|
||||
CACHING_HELP: "Globaalne ON/OFF lüliti Grav puhverdamise sisse- ja väljalülitamiseks"
|
||||
CACHE_CHECK_METHOD: "Vahemälu kontrollimise meetod"
|
||||
CACHE_CHECK_METHOD_HELP: "Vali meetod, mida Grav kasutab kontrollimaks, kas lehefaile on muudetud."
|
||||
CACHE_DRIVER: "Vahemälu draiver"
|
||||
CACHE_DRIVER_HELP: "Vali millist puhverdamisvahendit Grav peaks kasutama. 'Auto Detect' proovib ise leida parima võimaluse"
|
||||
CACHE_PREFIX: "Vahemälu eesliide"
|
||||
CACHE_PREFIX_HELP: "Grav võtme tunnus. Ära muuda, kui sa ei ta, mida sa teed."
|
||||
CACHE_PREFIX_PLACEHOLDER: "Tuletatud baas-URL-st (asenda suvalise sõne sisestamisega)"
|
||||
CACHE_CLEAR_JOB: "Käivita ajastatud tühjendamise töö"
|
||||
LIFETIME: "Eluiga"
|
||||
LIFETIME_HELP: "Seab puhvri eluea sekundites. 0 = lõpmatu"
|
||||
GZIP_COMPRESSION: "Gzip pakkimine"
|
||||
GZIP_COMPRESSION_HELP: "Lülita sisse või välja Grav lehe GZip pakkimine. Sisselülitamine võib parandada jõudlust."
|
||||
TWIG_TEMPLATING: "Twig mallid"
|
||||
TWIG_CACHING: "Twig vahemälu"
|
||||
TWIG_CACHING_HELP: "Lülita sisse või välja Twigi puhverdamine. Sisselülitamine vajalik parima jõudluse saamiseks."
|
||||
TWIG_DEBUG: "Twigi veatuvastus"
|
||||
TWIG_DEBUG_HELP: "Võimaldab mitte laadida Twig Debugger laiendust"
|
||||
DETECT_CHANGES: "Tuvasta muudatused"
|
||||
DETECT_CHANGES_HELP: "Twig rekompileerib automaatselt Twigi puhvri, kui tuvastab muudatuse Twigi mallides"
|
||||
AUTOESCAPE_VARIABLES: "Autoescape-i muutujad"
|
||||
AUTOESCAPE_VARIABLES_HELP: "Autoescapes kõik muutujad. See teeb väga tõenäoliselt sinu saidi katki"
|
||||
ASSETS: "Ressursid"
|
||||
CSS_PIPELINE: "CSS Pipeline"
|
||||
CSS_PIPELINE_HELP: "CSS pipeline tähendab mitmete CSS ressursside ühendamist ühte faili"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS: "Kaasa välised URL-d CSS pipeline-i"
|
||||
CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Välistel URL-del on vahel relatiivsed failiviited ja neid ei peaks pipeline lisama"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES: "Töötle CSS pipeline esimesena"
|
||||
CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Töötle CSS pipeline enne muid CSS viiteid, mis ei ole pipeline lisatud"
|
||||
CSS_MINIFY: "CSS-i vähendamine"
|
||||
CSS_MINIFY_HELP: "Minimeeri CSS pipeline lisamise ajal"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minimeerimise Windowsi serveritel"
|
||||
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "CSS minimeerimise olek Windows serverite puhul. Vaikimisi välja lülitatud ThreadStackSize tõttu"
|
||||
CSS_REWRITE: "CSS-i ülekirjutamine"
|
||||
CSS_REWRITE_HELP: "Asenda kõik CSS relatiivsed URL-d pipeline lisamise ajal"
|
||||
JAVASCRIPT_PIPELINE: "JavaScript pipeline"
|
||||
JAVASCRIPT_PIPELINE_HELP: "JS pipeline tähendab mitmete JS ressursside ühendamist ühte faili"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Kaasa välised URL-d JS pipeline"
|
||||
JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Välistel URL-del on vahel relatiivsed failiviited ja neid ei peaks pipeline lisama"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Töötle JS pipeline esimesena"
|
||||
JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Töötle JS pipeline enne muid JS viiteid, mis ei ole pipeline lisatud"
|
||||
JAVASCRIPT_MINIFY: "JavaSkripti minimeerimine"
|
||||
JAVASCRIPT_MINIFY_HELP: "Minimeeri JS pipeline lisamise ajal"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS: "Luba ressurssidele loomisaja lisamine"
|
||||
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Luba ressurssidele loomisaja lisamine"
|
||||
COLLECTIONS: "Kogud"
|
||||
ERROR_HANDLER: "Vigade käsitlemine"
|
||||
DISPLAY_ERRORS: "Näita veateateid"
|
||||
DISPLAY_ERRORS_HELP: "Vigade kuvamise mall"
|
||||
LOG_ERRORS: "Logi veateated"
|
||||
LOG_ERRORS_HELP: "Logi vead /logs kataloogi"
|
||||
DEBUGGER: "Veatuvastus"
|
||||
DEBUGGER_HELP: "Lülita sisse Gravi veatuvastus ja järgnevad seaded"
|
||||
DEBUG_TWIG: "Twigi veatuvastus"
|
||||
DEBUG_TWIG_HELP: "Lülita sisse Twigi silumine"
|
||||
SHUTDOWN_CLOSE_CONNECTION: "Shutdown-il ühenduse sulgemine"
|
||||
SHUTDOWN_CLOSE_CONNECTION_HELP: "Sulge ühendus enne onShutdown()-i kutsumist. 'Ei' silumise jaoks"
|
||||
DEFAULT_IMAGE_QUALITY: "Piltide vaikimisi kvaliteet"
|
||||
DEFAULT_IMAGE_QUALITY_HELP: "Vaikimisi pildikvaliteet piltide töötlemisel või puhverdamisel (85%)"
|
||||
CACHE_ALL: "Loe kõik pildid vahemällu"
|
||||
CACHE_ALL_HELP: "Juhi kõik pildid läbi Gravi puhvrisüsteemi isegi juhul, kui neid ei töödelda"
|
||||
IMAGES_DEBUG: "Piltide silumise vesimärk"
|
||||
IMAGES_DEBUG_HELP: "Näita piltide kohal kattekihti, mis näitab pildi pikslisügavust näiteks retina-ga töötamisel"
|
||||
#Removed in Grav 1.8
|
||||
IMAGES_SEOFRIENDLY: "SEO-spbralikud piltide nimed"
|
||||
IMAGES_SEOFRIENDLY_HELP: "Kui see valik on kasutusel, siis faili nimi kuvatakse enne räsi, mis kajastab tehtud toiminguid"
|
||||
UPLOAD_LIMIT: "Failide üleslaadimise limiit"
|
||||
UPLOAD_LIMIT_HELP: "Määra maksimaalne üleslaadimise suurus baitides (0 tähendab, et piirangut pole)"
|
||||
ENABLE_MEDIA_TIMESTAMP: "Luba loomisaja lisamine meediale"
|
||||
ENABLE_MEDIA_TIMESTAMP_HELP: "Lisab igale meediafailile ajatempli viimase muutmise ajaga"
|
||||
SESSION: "Sessioon"
|
||||
SESSION_ENABLED_HELP: "Luba Gravi sessioonide tugi"
|
||||
SESSION_NAME_HELP: "Identifikaator, mida kasutatakse sessiooniküpsise nime koostamisel"
|
||||
SESSION_UNIQUENESS: "Unikaalne string"
|
||||
ABSOLUTE_URLS: "Absoluutsed URL-id"
|
||||
ABSOLUTE_URLS_HELP: "Absoluutsed või relatiivsed URL-d `base_url`-i jaoks"
|
||||
PARAMETER_SEPARATOR: "Parameetrite eraldaja"
|
||||
PARAMETER_SEPARATOR_HELP: "Saadetud parameetrite eraldaja, mida saab muuta Windowsil jooksva Apache jaoks"
|
||||
TASK_COMPLETED: "Ülesanne on lõpetatud"
|
||||
EVERYTHING_UP_TO_DATE: "Kõik on ajakohane"
|
||||
UPDATES_ARE_AVAILABLE: "uuendus(t) on saadaval"
|
||||
IS_AVAILABLE_FOR_UPDATE: "on saadaval uuendamiseks"
|
||||
IS_NOW_AVAILABLE: "on nüüd saadaval"
|
||||
CURRENT: "Praegune"
|
||||
UPDATE_GRAV_NOW: "Uuenda kohe Grav-i"
|
||||
GRAV_SYMBOLICALLY_LINKED: "Grav on sümboolselt lingitud. Uuendamine ei ole võimalik"
|
||||
UPDATING_PLEASE_WAIT: "Uuendamine... palun oota, käimas on allalaadimine"
|
||||
OF_THIS: "selle"
|
||||
OF_YOUR: "sinu"
|
||||
HAVE_AN_UPDATE_AVAILABLE: "on uuendus saadaval"
|
||||
SAVE_AS: "Salvesta - "
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Oled kindel, et soovid antud lehe ja kõik selle alamlehed kustutada? Kui leht on teistesse keeltesse tõlgitud, jäävad tõlked alles ja need tuleb eraldi kustutada. Jätkamisel lehe kaust koos alamlehtedega kustutatakse. Seda tegevust ei saa tagasi võtta."
|
||||
AND: "ja"
|
||||
UPDATE_AVAILABLE: "Uuendus on saadaval"
|
||||
METADATA_KEY: "Võti (näiteks 'keywords')"
|
||||
METADATA_VALUE: "Väärtus (näiteks 'Ajaveeb, Grav')"
|
||||
USERNAME_HELP: "Kasutajanimi peaks olema 3 kuni 16 märki, võib sisaldada väikeseid tähti, numbreid, alakriipse ja kriipse. Suured tähed, tühikud ja spets-märgid ei ole lubatud"
|
||||
FULLY_UPDATED: "Täielikult uuendatud"
|
||||
SAVE_LOCATION: "Salvestamise asukoht"
|
||||
PAGE_FILE: "Lehekülje mallid"
|
||||
PAGE_FILE_HELP: "Lehe malli faili nimi ja vaikimisi kuvamall sellele lehele"
|
||||
NO_USER_ACCOUNTS: "Ühtegi kasutajakontot ei leitud. Palun loo alustuseks üks konto..."
|
||||
REDIRECT_TRAILING_SLASH: "Lõpukaldjoone ümbersuunamine"
|
||||
REDIRECT_TRAILING_SLASH_HELP: "Tee 301 ümbersuunamine selle asemel, et lõpukaldjoonega URI-sid nähtamatult käsitleda."
|
||||
DEFAULT_DATE_FORMAT: "Lehe kuupäevavorming"
|
||||
DEFAULT_DATE_FORMAT_HELP: "Gravi'i poolt kasutatav lehe kuupäevavorming. Vaikimisi üritab Grav ise sobivat kuupäevavormingut valida, kuid saad seda täpsustada PHP kuupäevasüntaksit kasutades (näiteks: Y-m-d H:i)"
|
||||
DEFAULT_DATE_FORMAT_PLACEHOLDER: "Vali automaatselt"
|
||||
IGNORE_FILES: "Ignoreeri faile"
|
||||
IGNORE_FILES_HELP: "Spetsiifilised failid, mida lehekülgde töötlemisel ignoreerida"
|
||||
IGNORE_FOLDERS: "Ignoreeri katalooge"
|
||||
IGNORE_FOLDERS_HELP: "Spetsiifilised kataloogid, mida ignoreeritakse lehtede töötlemisel"
|
||||
HIDE_EMPTY_FOLDERS: "Peida tühjad kaustad"
|
||||
HTTP_ACCEPT_LANGUAGE: "Vali keel veebilehitsejast"
|
||||
HTTP_ACCEPT_LANGUAGE_HELP: "Proovi seada keel veebilehitseja `http_accept_language` päise alusel"
|
||||
OVERRIDE_LOCALE: "Kirjuta keel üle"
|
||||
OVERRIDE_LOCALE_HELP: "Kirjuta keele seadede PHP-s üle kasutadest valitud keelt"
|
||||
REDIRECT: "Lehe ümbersuunamine"
|
||||
REDIRECT_HELP: "Sisesta marsruut või väline URL, kuhu see leht ümbersuunata. Nt. `/some/route` või `http://somesite.com`"
|
||||
PLUGIN_STATUS: "Lisamooduli staatus"
|
||||
INCLUDE_DEFAULT_LANG: "Kaasa vaikimisi keel"
|
||||
INCLUDE_DEFAULT_LANG_HELP: "See seade lisab ka vaikimisi keeles olevate URL-de algusesse keeletähise. Nt. `/et/blog/postitus`"
|
||||
ALLOW_URL_TAXONOMY_FILTERS: "URL Taksonoomia filtrid"
|
||||
ALLOW_URL_TAXONOMY_FILTERS_HELP: "Lehepõhised kollektsioonid võimaldavad filtreerimist taksonoomia põhjal. Nt. `/taxonomy:value`."
|
||||
REDIRECT_DEFAULT_CODE: "Vaikimisi ümbersuunamiskood"
|
||||
REDIRECT_DEFAULT_CODE_HELP: "HTTP olekukood ümbersuunamiste puhul"
|
||||
IGNORE_HIDDEN: "Ignoreeri peidetuid"
|
||||
IGNORE_HIDDEN_HELP: "Ignoreeri kõiki faile ja katalooge, mis algavad PUNKTIGA"
|
||||
WRAPPED_SITE: "Põimitud sait"
|
||||
WRAPPED_SITE_HELP: "Et kujundused ja lisamoodulid teaksid, kas Grav on põimitud mõne teise platformi sisse"
|
||||
FALLBACK_TYPES: "Lubatud failitüübid"
|
||||
FALLBACK_TYPES_HELP: "Lubatud failitüübid, mida on võimalik leida läbi lehe marsruudi. Vaikimisi on lubatud kõik toetatud meediatüübid."
|
||||
INLINE_TYPES: "Tekstisisesed failitüübid"
|
||||
INLINE_TYPES_HELP: "Nimekiri failitüüpidest, mida peaks pigem näitama teksti sees kui allalaadima"
|
||||
APPEND_URL_EXT: "Lisa aadressilaiend"
|
||||
APPEND_URL_EXT_HELP: "Lisab lehe aadressile laiendi. Pane tähele, et sellisel juhul järgib Grav `<mall>.<laiend>.twig`malli."
|
||||
PAGE_MODES: "Lehe moodulid"
|
||||
PAGE_TYPES: "Lehe liigid"
|
||||
ACCESS_LEVELS: "Juurdepääs"
|
||||
GROUPS: "Grupid"
|
||||
GROUPS_HELP: "Nimekiri gruppidest, kuhu kasutaja kuulub"
|
||||
ADMIN_ACCESS: "Admini ligipääs"
|
||||
SITE_ACCESS: "Saidi ligipääs"
|
||||
INVALID_SECURITY_TOKEN: "Vigane turvakood"
|
||||
ACTIVATE: "Aktiveeri"
|
||||
TWIG_UMASK_FIX: "Umask parandus"
|
||||
TWIG_UMASK_FIX_HELP: "Twig loob vaikimisi puhverfailid õigustega 0755, parandus muudab selle 0775-ks"
|
||||
CACHE_PERMS: "Vahemälu õigused"
|
||||
CACHE_PERMS_HELP: "Vaikimisi õigused puhvri (cache) kataloogile. Tavaliselt 0755 või 0775 olenevalt seadistusest"
|
||||
REMOVE_SUCCESSFUL: "Eemaldatud"
|
||||
REMOVE_FAILED: "Eemaldamine ebaõnnestus"
|
||||
HIDE_HOME_IN_URLS: "Peida aadressis avalehe teekond"
|
||||
HIDE_HOME_IN_URLS_HELP: "Peidab kõikide avalehe alamlehtede aadressis avalehe vaikimisi teekonna"
|
||||
TWIG_FIRST: "Töötle esmalt Twigi"
|
||||
TWIG_FIRST_HELP: "Kui sa oled sisse lülitanud Twigi töötlemise lehel, saad konfigureerida Twigi töötlemise enne või pärast markdowni"
|
||||
SESSION_SECURE: "Turvaline"
|
||||
SESSION_SECURE_HELP: "Kui sisse lülitatud, siis suhtlus selle küpsisega peab olema ainult üle krüpteeritud ühenduse. HOIATUS: lülita sisse ainult saitidel, mis jooksevad täielikult HTTPSi peal"
|
||||
SESSION_HTTPONLY: "Ainult HTTP"
|
||||
SESSION_HTTPONLY_HELP: "Kui sisse lülitatud, siis seab HTTPOnly lipu, mis ei luba küpsise muutmist JavaScripti vms poolt kasutaja veebilehitsejas"
|
||||
REVERSE_PROXY: "Pöördproksi"
|
||||
REVERSE_PROXY_HELP: "Lülita see sisse, kui sait on pöördproksi taga ja tekivad probleemid URL-dega, mis sisaldavad ebaõigeid porte"
|
||||
INVALID_FRONTMATTER_COULD_NOT_SAVE: "Vigane frontmatter, ei saanud salvestada"
|
||||
ADD_FOLDER: "Lisa kataloog"
|
||||
PROXY_URL: "Proksi URL"
|
||||
PROXY_URL_HELP: "Sisesta proksi HOSTINIMI või IP ja PORT"
|
||||
NOTHING_TO_SAVE: "Pole midagi salvestada"
|
||||
FILE_ERROR_ADD: "Faili lisamisel tekkis viga"
|
||||
FILE_ERROR_UPLOAD: "Faili üleslaadimisel tekkis viga"
|
||||
FILE_UNSUPPORTED: "Failitüüp pole toetatud"
|
||||
ADD_ITEM: "Lisa kirje"
|
||||
FILE_TOO_LARGE: "See fail on üles laadimiseks luuga suur. Maksmiaalne lubatud suurus<br>on vastavalt sinu PHP seadetele %s. Suurenda PHP seadetes väärtust `post_max_size`"
|
||||
INSTALLING: "Paigaldamine"
|
||||
LOADING: "Laadimine.."
|
||||
DEPENDENCIES_NOT_MET_MESSAGE: "Eelnevalt tuleb täita järgmised nõuded:"
|
||||
ERROR_INSTALLING_PACKAGES: "Viga paki (pakkide) paigaldamisek"
|
||||
INSTALLING_DEPENDENCIES: "Sõltuvuste paigaldamine..."
|
||||
INSTALLING_PACKAGES: "Pakkide paigaldamine.."
|
||||
PACKAGES_SUCCESSFULLY_INSTALLED: "Pakk (Pakid) on paigaldatud."
|
||||
READY_TO_INSTALL_PACKAGES: "Valmis paki (pakkide) paigaldamiseks"
|
||||
PACKAGES_NOT_INSTALLED: "Pakke ei paigaldatud"
|
||||
PACKAGES_NEED_UPDATE: "Pakid on juba paigaldatud, aga need on liiga vanad"
|
||||
PACKAGES_SUGGESTED_UPDATE: "Pakid on juba paigaldatud ning versioon on korras, aga seda uuendatakse, et sul oleks kõige viimane versioon"
|
||||
REMOVE_THE: "Eemalda %s"
|
||||
CONFIRM_REMOVAL: "Kas oled kindel, et soovid selle %s kustutada?"
|
||||
REMOVED_SUCCESSFULLY: "%s on eemaldatud"
|
||||
ERROR_REMOVING_THE: "Viga %s eemaldamisel"
|
||||
ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s vajas järgnevaid sõltuvusi, mis ei ole vajalikud teiste installeeritud pakettide jaoks. Kui sa neid ei kasuta, võid need otse siit eemaldada."
|
||||
READY_TO_UPDATE_PACKAGES: "Valmis paki (pakkide) uuendamiseks"
|
||||
ERROR_UPDATING_PACKAGES: "Viga paki (pakkide) uuendamisel"
|
||||
UPDATING_PACKAGES: "Paki (Pakkide) uuendamine.."
|
||||
PACKAGES_SUCCESSFULLY_UPDATED: "Pakk (Pakid) on uuendatud."
|
||||
UPDATING: "Uuendamine"
|
||||
GPM_RELEASES: "GPM versioonid"
|
||||
GPM_RELEASES_HELP: "Vali 'Testimine' beta ja test-versioonide installeerimiseks"
|
||||
GPM_METHOD: "Mujalt tõmbamise meetod"
|
||||
GPM_METHOD_HELP: "Kui valitud Automaatne, siis Grav tuvastab, kas fopen on saadaval ning kasutab seda. Kui see pole saadaval, siis kasutatakse cURL-i. Kui tahad jõuga sundida peale mingit valikut, siis tee siin see valik."
|
||||
AUTO: "Automaatne"
|
||||
FOPEN: "fopen"
|
||||
CURL: "cURL"
|
||||
STABLE: "Stabiilne"
|
||||
TESTING: "Testimine"
|
||||
FRONTMATTER_PROCESS_TWIG: "Töötle frontmatter-i Twigi"
|
||||
FRONTMATTER_PROCESS_TWIG_HELP: "Kui sisselülitatud, saad kasutada Twigi konfiguratsioonimuutujaid lehe frontmatter-s"
|
||||
FRONTMATTER_IGNORE_FIELDS: "Ignoreeri frontmatter-i välju"
|
||||
FRONTMATTER_IGNORE_FIELDS_HELP: "Teatud frontmatteri väljad võivad sisaldada Twigi, kuid ei tohiks saada töödeldud, nagu näiteks 'forms'"
|
||||
FRONTMATTER_IGNORE_FIELDS_PLACEHOLDER: "nt. vormid"
|
||||
PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakk %s on paigaldatud"
|
||||
ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Vanem defineerib järjestuse, järjestamine väljalülitatud"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Lehekülg pole nähtav, järjekorra muutmine on välja lülitatud"
|
||||
ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Admini kaudu pole järjekorra muutmine võimalik, kuna siin on üle 200 alamkirje"
|
||||
ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Lehtede järjestamine on väljalülitatud kuna <strong>kataloogi numbriline eesliide</strong> on välja lülitatud"
|
||||
CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "MÄRKUS: Sa ei saa lisada meediafaile enne lehe salvestamist. Lihtsalt kliki 'Salvesta' üleval ääres"
|
||||
CANNOT_ADD_FILES_PAGE_NOT_SAVED: "MÄRKUS: Leht peab olema salvestatud enne kui sa saad sellele faile üleslaadida."
|
||||
DROP_FILES_HERE_TO_UPLOAD: "Lohista failid siia või <strong>klõpsa sellele alale</strong>"
|
||||
INSERT: "Sisesta"
|
||||
UNDO: "Võta tagagi"
|
||||
REDO: "Tee uuesti"
|
||||
HEADERS: "Päised"
|
||||
BOLD: "Rasvane kiri"
|
||||
ITALIC: "Kaldkiri"
|
||||
STRIKETHROUGH: "Läbikriipsutamine"
|
||||
SUMMARY_DELIMITER: "Kokkuvõtte eraldaja"
|
||||
LINK: "Link"
|
||||
IMAGE: "Pilt"
|
||||
BLOCKQUOTE: "Plokk-tsitaat"
|
||||
UNORDERED_LIST: "Järjestamata loend"
|
||||
ORDERED_LIST: "Järjestatud loend"
|
||||
EDITOR: "Redaktor"
|
||||
PREVIEW: "Eelvaade"
|
||||
FULLSCREEN: "Täisekraan"
|
||||
NON_ROUTABLE: "Privaatne"
|
||||
NON_VISIBLE: "Nähtamatu"
|
||||
NON_PUBLISHED: "Avaldamata"
|
||||
CHARACTERS: "tähemärki"
|
||||
PUBLISHING: "Avaldamine"
|
||||
MEDIA_TYPES: "Meedia tüübid"
|
||||
IMAGE_OPTIONS: "Pildi valikud"
|
||||
MIME_TYPE: "Failitüübid"
|
||||
THUMB: "Pisipilt"
|
||||
TYPE: "Tüüp"
|
||||
FILE_EXTENSION: "Faililaiendid"
|
||||
LEGEND: "Lehe legend"
|
||||
MEMCACHE_SERVER: "Memcache server"
|
||||
MEMCACHE_SERVER_HELP: "Memcache serveri aadress"
|
||||
MEMCACHE_PORT: "Memcache port"
|
||||
MEMCACHE_PORT_HELP: "Memcache serveri port"
|
||||
MEMCACHED_SERVER: "Memcache server"
|
||||
MEMCACHED_SERVER_HELP: "Memcache serveri aadress"
|
||||
MEMCACHED_PORT: "Memcache port"
|
||||
MEMCACHED_PORT_HELP: "Memcache serveri port"
|
||||
REDIS_SERVER: "Redis server"
|
||||
REDIS_SERVER_HELP: "Redis serveri aadress"
|
||||
REDIS_PORT: "Redis port"
|
||||
REDIS_PORT_HELP: "Redis serveri port"
|
||||
REDIS_PASSWORD: "Redis parool/salasõna"
|
||||
REDIS_DATABASE: "Redis andmebaasi ID"
|
||||
ALL: "kõik"
|
||||
FROM: "alates"
|
||||
TO: "kuni"
|
||||
RELEASE_DATE: "Väljalaske kuupäev"
|
||||
SORT_BY: "Sorteerimise alus"
|
||||
RESOURCE_FILTER: "Filter..."
|
||||
FORCE_SSL: "SSL-i jõuga kasutamine"
|
||||
FORCE_SSL_HELP: "Kogu saidil kasutatakse SSL-i. Kui see on sisse lülitatud, siis HHTP ühendusega lehele saabunud kasutajad suunatakse HTTPS lehele"
|
||||
NEWS_FEED: "Uudised"
|
||||
EXTERNAL_URL: "Väline URL"
|
||||
CUSTOM_BASE_URL: "Kohandatud baas URL"
|
||||
CUSTOM_BASE_URL_HELP: "Kasuta, kui soovid ülekirjutada saidi domeeni või kasutada teistsugust alamkataloogi kui Grav. Nt: http://localhost"
|
||||
FILEUPLOAD_PREVENT_SELF: 'Väljaspool lehti ei saa "%s" kasutada.'
|
||||
FILEUPLOAD_UNABLE_TO_UPLOAD: 'Faili üleslaadimine ebaõnnestus %s: %s'
|
||||
FILEUPLOAD_UNABLE_TO_MOVE: 'Ei saa liigutada faili %s asukohta "%s"'
|
||||
DROPZONE_CANCEL_UPLOAD: 'Tühista üleslaadimine'
|
||||
DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Kas sa oled kindel, et soovid selle üleslaadimise tühistada?'
|
||||
DROPZONE_DEFAULT_MESSAGE: 'Lohista failid siia või <strong>klõpsa sellele alale</strong>'
|
||||
DROPZONE_FALLBACK_MESSAGE: 'Sinu brauser ei toeta failide lohistamisega üleslaadimist.'
|
||||
DROPZONE_FALLBACK_TEXT: 'Palun kasuta allpool olevat vormi failide üleslaadimiseks nagu vanal ajal.'
|
||||
DROPZONE_FILE_TOO_BIG: 'Fail on liiga suur ({{filesize}}MiB). Maks failisuurus: {{maxFilesize}}MiB.'
|
||||
DROPZONE_INVALID_FILE_TYPE: "Sa ei saa laadida üles seda tüüpi faile."
|
||||
DROPZONE_MAX_FILES_EXCEEDED: "Sa ei saa rohkem faile üles laadida."
|
||||
DROPZONE_REMOVE_FILE: "Eemalda fail"
|
||||
DROPZONE_RESPONSE_ERROR: "Server vastas {{statusCode}} koodiga."
|
||||
PREMIUM_PRODUCT: "Tasuline"
|
||||
DESTINATION_NOT_SPECIFIED: "Sihtkoht on määramata"
|
||||
UPLOAD_ERR_NO_TMP_DIR: "Ajutiste failide kataloog puudub"
|
||||
SESSION_SPLIT: "Sessiooni jagamine"
|
||||
SESSION_SPLIT_HELP: "Iseseisvad eraldatud sessioonid saidi ja lisamoodulite (nagu Admin) vahel"
|
||||
ERROR_FULL_BACKTRACE: "Täieliku infoga viga"
|
||||
ERROR_SIMPLE: "Lihtne viga"
|
||||
ERROR_SYSTEM: "Süsteemi viga"
|
||||
IMAGES_AUTO_FIX_ORIENTATION: "Paranda suund automaatselt"
|
||||
IMAGES_AUTO_FIX_ORIENTATION_HELP: "Paranda pildi suund automaatselt vastavalt EXIF-andmetele"
|
||||
REDIS_SOCKET: "Redis pesa"
|
||||
REDIS_SOCKET_HELP: "Redis pesa"
|
||||
NOT_SET: "Määramata"
|
||||
PERMISSIONS: "Õigused"
|
||||
NEVER_CACHE_TWIG: "Ära kasuta Twigi jaoks kunagi vahemälu"
|
||||
NEVER_CACHE_TWIG_HELP: "Loe vahemällu ainult sisu ning töötle Twigi iga lehe loomisel. Ignoreerib sätet twig_first."
|
||||
ALLOW_WEBSERVER_GZIP: "Luba veebiserveri Gzipi kasutamine"
|
||||
ALLOW_WEBSERVER_GZIP_HELP: "Vaikimisi väljalülitatud. Kui sisse lülitada, siis veebiserveris konfigureeritud Gzip/Deflate pakkimine töötab, aga http ühendust ei suleta enne onShutDown() sündmust, mis põhjustab aeglasema lehe laadimise"
|
||||
OFFLINE_WARNING: "Ühenduse loomine GMP-ga ebaõnnestus"
|
||||
CLEAR_IMAGES_BY_DEFAULT: "Tühjenda vaikimisi piltide vahemälu"
|
||||
CLEAR_IMAGES_BY_DEFAULT_HELP: "Vaikimisi tühjendatakse töödeldud piltide puhver kõikide puhvritühjenduste käigus, siin saab selle välja lülitada"
|
||||
CLI_COMPATIBILITY: "CLI ühilduvus"
|
||||
CLI_COMPATIBILITY_HELP: "Tagab, et kasutatakse ainult mitte-volatiilsed puhverdamisvahendid ( fail, redis, memcache, etc.)"
|
||||
REINSTALL_PLUGIN: "Paigalda plugin uuesti"
|
||||
REINSTALL_THEME: "Paigalda kujundus uuesti"
|
||||
REINSTALL_THE: "Paigalda %s uuesti"
|
||||
CONFIRM_REINSTALL: "Kas oled kindel, et soovid %s uuesti paigaldada?"
|
||||
REINSTALLED_SUCCESSFULLY: "%s on uuesti paigaldatud"
|
||||
ERROR_REINSTALLING_THE: "Viga %s uuesti paigaldamisel"
|
||||
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pakk %s on uuesti paigaldatud"
|
||||
REINSTALLATION_FAILED: "Uuesti paigaldamine ebaõnnestus"
|
||||
WARNING_REINSTALL_NOT_LATEST_RELEASE: "Installeeritud versioon ei ole uusim redaktsioon. Kui klikid Jätka, eemaldada praeguse versiooni ja installeerid uusima kättesaadava redaktsiooni"
|
||||
TOOLS: "Tööriistad"
|
||||
DIRECT_INSTALL: "Failist paigaldamine"
|
||||
NO_PACKAGE_NAME: "Paketi nime ei ole kindlaks määratud"
|
||||
PACKAGE_EXTRACTION_FAILED: "Paketi lahtipakkimine ebaõnnestus"
|
||||
NOT_VALID_GRAV_PACKAGE: "Tegemist ei ole korrektse Grav-i paketiga"
|
||||
NAME_COULD_NOT_BE_DETERMINED: "Nime ei ole võimalik kindlaks määrata"
|
||||
CANNOT_OVERWRITE_SYMLINKS: "Symlinkide ülekirjutamine ebaõnnestus"
|
||||
ZIP_PACKAGE_NOT_FOUND: "ZIP-paketti ei leitud"
|
||||
GPM_OFFICIAL_ONLY: "Ainult ametlik GPM"
|
||||
GPM_OFFICIAL_ONLY_HELP: "Luba otse installeerida ainult ametlikust GPM repositooriumist."
|
||||
NO_CHILD_TYPE: "Puudub tütre tüüp sellele marsruudile"
|
||||
SORTABLE_PAGES: "Sorteeritavad lehed:"
|
||||
UNSORTABLE_PAGES: "Mittesorteeritavad lehed"
|
||||
ADMIN_SPECIFIC_OVERRIDES: "Admini-spetsiifilised erisused"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER: "Tütarde kuvamisjärjestus"
|
||||
ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Järjestus, milles selle lehe tütred peaks olema kuvatud Admin lisamooduli 'Lehed' vaates"
|
||||
PWD_PLACEHOLDER: "keeruline vähemalt 8 märgi pikkune sõne"
|
||||
PWD_REGEX: "Salasõna Regex"
|
||||
PWD_REGEX_HELP: "Vaikeväärtus: Salasõna peab sisaldama vähemalt ühte numbrit, ühte suur- ja väiketähte ja koosnema vähemalt 8 märgist"
|
||||
USERNAME_PLACEHOLDER: "ainult väiketähed, nt. 'admin'"
|
||||
USERNAME_REGEX: "Kasutajanime Regex"
|
||||
USERNAME_REGEX_HELP: "Vaikimisi: Ainult väikesed tähed, numbrid, kriipsud ja alakriipsud. 3 - 16 märki"
|
||||
ENABLE_AUTO_METADATA: "Auto metadata Exif-st"
|
||||
ENABLE_AUTO_METADATA_HELP: "Genereeri automaatselt metaandmete failid Exif infoga piltidele"
|
||||
2FA_TITLE: "Kahe etapiline autentimine"
|
||||
2FA_INSTRUCTIONS: "##### 2-faktoriline autentimine\nSellel kontol on **2FA** sisse lülitatud. Palun kasuta oma **2FA** äppi ja sisesta **6-kohaline kood** sisselogimise lõpuleviimiseks."
|
||||
2FA_REGEN_HINT: "Salakoodi regenereerimine nõuab, et sa uuendaksid koodi ka oma autentimise äpis"
|
||||
2FA_LABEL: "Admini ligipääs"
|
||||
2FA_FAILED: "Vale 2-etapilise autentimise kood, palun proovi uuesti..."
|
||||
2FA_ENABLED: "2-etapiline autentimine on sees"
|
||||
2FA_CODE_INPUT: "000000"
|
||||
2FA_SECRET: "2FA salasõna"
|
||||
2FA_SECRET_HELP: "Skaneeri see QR kood oma [autentimise äppi](https://learn.getgrav.org/admin-panel/2fa#apps). Samuti on hea idee varundada salakood turvalises kohas, kui sa peaksid vajama äppi uuesti installimist. Tutvu [Grav dokumentatsiooniga](https://learn.getgrav.org/admin-panel/2fa) lisainformatsiooni saamiseks "
|
||||
2FA_REGENERATE: "Loo uuesti"
|
||||
FORCE_LOWERCASE_URLS: "URL-ides kasutatakse ainult väiketähti"
|
||||
FORCE_LOWERCASE_URLS_HELP: "Vaikimisi paneb Grav URL-idesse kõik väiketähtedega. Kui see välja lülitada, siis saab URL-ides kasutada ka suurtähti"
|
||||
INTL_ENABLED: "Intl mooduli integreerimine"
|
||||
INTL_ENABLED_HELP: "Kasuta Intl PHP moodulit sorteerimiseks UTF8 põhistes kollektsioonides"
|
||||
VIEW_SITE_TIP: "Vaata Saiti"
|
||||
TOOLS_DIRECT_INSTALL_TITLE: "Grav pakkide otse paigaldamine"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Paigalda pakke ZIP-faili üleslaadimisega"
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Saad lihtsasti installeerida valideeritud Gravi <strong>kujunduse</strong>, <strong>lisamooduli</strong> või isegi <strong>Grav</strong> uuenduse Zip paketi. Paketti ei pea registreerima GPM-s ja see võimaldab sul lihtsalt minna tagasi eelnevale versioonile või installerida ainult testimiseks."
|
||||
TOOLS_DIRECT_INSTALL_URL_TITLE: "Paigalda pakke kasutades installipakkide URL-e"
|
||||
TOOLS_DIRECT_INSTALL_URL_DESC: "Alternatiivselt, saad lisada täispika URL-i paketi ZIP faili asukohaga ja installeerida sealtkaudu."
|
||||
TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Laadi üles ja paigalda"
|
||||
ROUTE_OVERRIDES: "Marsuutide ülekirjutused"
|
||||
ROUTE_DEFAULT: "Vaikimisi marsruut"
|
||||
ROUTE_CANONICAL: "Kanooniline marsruut"
|
||||
ROUTE_ALIASES: "Marsruudi aliased"
|
||||
OPEN_NEW_TAB: "Ava uuel kaardil"
|
||||
SESSION_INITIALIZE: "Käivita sessioon"
|
||||
STRICT_YAML_COMPAT: "YAML ühilduvus"
|
||||
STRICT_TWIG_COMPAT: "Twig ühilduvus"
|
||||
SCHEDULER: "Ajastamine"
|
||||
SCHEDULER_INSTALL_INSTRUCTIONS: "Paigaldamise juhendid"
|
||||
SCHEDULER_INSTALLED_READY: "Paigaldatud ja valmis"
|
||||
SCHEDULER_SETUP: "Ajastamise seadistamine"
|
||||
SCHEDULER_STATUS: "Ajastaja olek"
|
||||
SCHEDULER_RUNAT: "Käivita"
|
||||
SCHEDULER_OUTPUT: "Väljundfail"
|
||||
SCHEDULER_OUTPUT_TYPE: "Väljundi tüüp"
|
||||
SCHEDULER_EMAIL: "E-post"
|
||||
SECURITY: "Turvalisus"
|
||||
XSS_SECURITY: "Sisu XSS turvalisus"
|
||||
XSS_WHITELIST_PERMISSIONS: "Valge nimekirja õigused"
|
||||
XSS_INVALID_PROTOCOLS: "Filtreeri vigaseid protokolle"
|
||||
XSS_INVALID_PROTOCOLS_LIST: "Vigane protokollide nimekiri"
|
||||
XSS_MOZ_BINDINGS: "Filtreeri Moz-seoseid"
|
||||
XSS_HTML_INLINE_STYLES: "Filtreeri HTML-isisesed stiilid"
|
||||
XSS_DANGEROUS_TAGS: "Filtreeri ohtlikud HTML-sildid"
|
||||
XSS_DANGEROUS_TAGS_LIST: "Ohtlike HTML-siltide nimekiri"
|
||||
XSS_ONSAVE_ISSUE: "Salvestamine ebaõnnestus: tuvastati XSS probleem..."
|
||||
UPLOADS_SECURITY: "Üleslaadimiste turvalisus"
|
||||
UPLOADS_DANGEROUS_EXTENSIONS: "Ohtlikud faililaiendid"
|
||||
UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Keela nende faililaienditega failide üleslaadimine hoolimata lubatud failitüüpidest"
|
||||
REPORTS: "Aruanded"
|
||||
LOGS: "Logid"
|
||||
BACKUPS_MAX_COUNT: "Maksimaalne varukoopiate arv"
|
||||
BACKUPS_MAX_COUNT_HELP: "0 tähendab piiramatut"
|
||||
BACKUPS_MAX_SPACE: "Maksimaalne ruum varukoopiatele"
|
||||
BACKUPS_MAX_RETENTION_TIME: "Maksimaalne säilitamise aeg"
|
||||
BACKUPS_MAX_RETENTION_TIME_APPEND: "päeva jooksul"
|
||||
BACKUPS_PROFILE_NAME: "Varukoopia nimi"
|
||||
BACKUPS_PROFILE_ROOT_FOLDER: "Juurkaust"
|
||||
BACKUPS_PROFILE_EXCLUDE_PATHS: "Jäta välja asukohad"
|
||||
BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Täielikud kaustateed, mida välja jätta. Üks rea kohta."
|
||||
BACKUPS_PROFILE_EXCLUDE_FILES: "Jäta välja failid"
|
||||
BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Konkreetsed failid või kaustad, mida välja jätta. Üks rea kohta."
|
||||
BACKUPS_PROFILE_SCHEDULE: "Luba ajastatud töö"
|
||||
BACKUPS_PROFILE_SCHEDULE_AT: "Käivita ajastatud töö"
|
||||
COMMAND: "Käsk"
|
||||
EXTRA_ARGUMENTS: "Lisaargumendid"
|
||||
EXPERIMENTAL: "Eksperimentaalne"
|
||||
ACCOUNTS_TYPE: "Konto tüüp"
|
||||
ACCOUNTS_STORAGE: "Konto salvestamine"
|
||||
FLEX: "Flex objekt (EKSPERIMENTAALNE)"
|
||||
REGULAR: "Tavaline"
|
||||
FILE: "Fail"
|
||||
SANITIZE_SVG: "Puhasta SVG"
|
||||
ACCOUNTS: "Kontod"
|
||||
USER_ACCOUNTS: "Kasutajakontod"
|
||||
USER_GROUPS: "Kasutajagrupid"
|
||||
GROUP_NAME: "Grupi nimi"
|
||||
DISPLAY_NAME: "Näidatav nimi"
|
||||
ICON: "Ikoonid"
|
||||
ACCESS: "Juurdepääs"
|
||||
NO_ACCESS: "Ligipääs puudub"
|
||||
SUPER_USER: "Super kasutaja"
|
||||
ALLOWED: "Lubatud"
|
||||
DENIED: "Keelatud"
|
||||
MODULE: "Moodul"
|
||||
ADD_MODULE: "Lisa moodul"
|
||||
MODULE_SETUP: "Mooduli seadistamine"
|
||||
MODULE_TEMPLATE: "Mooduli mall"
|
||||
CHANGELOG: "Muudatuste logi"
|
||||
PAGE_ACCESS: "Lehe ligipääs"
|
||||
PAGE PERMISSIONS: "Lehe õigused"
|
||||
READ: "Lugemine"
|
||||
PUBLISH: "Avaldamine"
|
||||
LIST: "Nimekiri"
|
||||
ACCESS_SITE: "Sait"
|
||||
ACCESS_SITE_LOGIN: "Saidile sisselogimine"
|
||||
ACCESS_ADMIN: "Admin"
|
||||
ACCESS_ADMIN_LOGIN: "Admini sisselogimine"
|
||||
ACCESS_ADMIN_SUPER: "Super kasutaja"
|
||||
ACCESS_ADMIN_CACHE: "Tühjenda vahemälu"
|
||||
ACCESS_ADMIN_CONFIGURATION: "Seadistused"
|
||||
ACCESS_ADMIN_CONFIGURATION_SYSTEM: "Halda süsteemi seadeid"
|
||||
ACCESS_ADMIN_CONFIGURATION_SITE: "Halda saidi seadeid"
|
||||
ACCESS_ADMIN_CONFIGURATION_MEDIA: "Halda meedia seadeid"
|
||||
ACCESS_ADMIN_CONFIGURATION_INFO: "Vaata serveri seadeid"
|
||||
ACCESS_ADMIN_SETTINGS: "Seaded"
|
||||
ACCESS_ADMIN_PAGES: "Halda lehti"
|
||||
ACCESS_ADMIN_MAINTENANCE: "Saidi haldamine"
|
||||
ACCESS_ADMIN_STATISTICS: "Saidi statistika"
|
||||
ACCESS_ADMIN_PLUGINS: "Halda pluginaid"
|
||||
ACCESS_ADMIN_THEMES: "Halda teemasid"
|
||||
ACCESS_ADMIN_TOOLS: "Ligipääs tööriistadele"
|
||||
ACCESS_ADMIN_USERS: "Halda kasutajaid"
|
||||
USERS: "Kasutajad"
|
||||
ACL: "Ligipääsu haldamine"
|
||||
FLEX_CACHING: "Paindlik vahemälu"
|
||||
LANGUAGE_TRANSLATIONS: "Tõlked"
|
||||
RESET: "Lähtesta"
|
||||
LOGOS: "Logod"
|
||||
PRESETS: "Eelseadistused"
|
||||
COLOR_SCHEME_LABEL: "Värviteema"
|
||||
COLOR_SCHEME_NAME: "Kohandatud värviskeemi nimi"
|
||||
COLOR_SCHEME_NAME_PLACEHOLDER: "Sinise varjunid"
|
||||
PRIMARY_ACCENT_LABEL: "Peamine lisavärv"
|
||||
WEB_FONTS_LABEL: "Veebifondid"
|
||||
HEADER_FONT_LABEL: "Päise font"
|
||||
CUSTOM_CSS_LABEL: "Kohandatud CSS"
|
||||
CUSTOM_FOOTER: "Kohandatud jalus"
|
||||
LOAD_PRESET: "Laadi eelseadistus"
|
||||
EXPORT: "Ekspordi"
|
||||
CODEMIRROR_THEME: "Redaktori teema"
|
||||
GENERAL: "Üldine"
|
||||
CONTENT_EDITOR: "Sisuredaktor"
|
||||
BAD_FILENAME: "Vigane failinimi"
|
||||
SHOW_SENSITIVE: "Näita tundlikku infot"
|
||||
CONFIGURATION: "Seadistused"
|
||||
CUSTOMIZATION: "Kohandamine"
|
||||
EXTRAS: "Lisad"
|
||||
BASICS: "Peamine"
|
||||
ADMIN_CACHING: "Luba adminiliidese vahemälu kasutamine"
|
||||
ADMIN_CACHING_HELP: "Adminiliidese vahemällu lugemist saab kasutada sõltumata saidi avalikust poolest"
|
||||
LOGO_TEXT: "Logo tekst"
|
||||
CONTENT_PADDING: "Sisu padding"
|
||||
CONTENT_PADDING_HELP: "Lülita sisse või välja sisu padding sisuala ümber suurema ruumi tekitamiseks"
|
||||
SIDEBAR_HOVER_DELAY_APPEND: "millisekundit"
|
||||
SIDEBAR_ACTIVATION_TAB: "Kaart"
|
||||
SIDEBAR_SIZE: "Külgriba suurus"
|
||||
SIDEBAR_SIZE_AUTO: "Automaatne laius"
|
||||
SIDEBAR_SIZE_SMALL: "Väike laius"
|
||||
EDIT_MODE: "Muutmise režiim"
|
||||
FRONTEND_PREVIEW_TARGET_NEW: "Uuel kaardil"
|
||||
FRONTEND_PREVIEW_TARGET_CURRENT: "Praegune kaart"
|
||||
PARENT_DROPDOWN_FOLDER: "Näita kausta"
|
||||
TIMEOUT: "Aegumine"
|
||||
TIMEOUT_HELP: "Määrab sessiooni aegumise sekundites"
|
||||
DASHBOARD: "Töölaud"
|
||||
NOTIFICATIONS: "Teated"
|
||||
PLUGINS_NOTIFICATIONS: "Pluginate teavitused"
|
||||
THEMES_NOTIFICATIONS: "Teemade teavitused"
|
||||
LOGO_BG_HELP: "Logo taust"
|
||||
LOGO_LINK_HELP: "Logo link"
|
||||
NAV_BG_HELP: "Menüü taust"
|
||||
NAV_TEXT_HELP: "Menüü tekst"
|
||||
NAV_LINK_HELP: "Menüü link"
|
||||
NAV_SELECTED_BG_HELP: "Valitud menüü taust"
|
||||
NAV_SELECTED_LINK_HELP: "Valitud menüü link"
|
||||
PAGE_BG_HELP: "Lehe taust"
|
||||
PAGE_TEXT_HELP: "Lehe tekst"
|
||||
PAGE_LINK_HELP: "Lehe link"
|
||||
CONTENT_BG_HELP: "Sisu taust"
|
||||
CONTENT_TEXT_HELP: "Sisu tekst"
|
||||
CONTENT_LINK_HELP: "Sisu link"
|
||||
CONTENT_LINK2_HELP: "Sisu link 2"
|
||||
CONTENT_HEADER_HELP: "Sisu päis"
|
||||
BUTTON_BG_HELP: "Nupu taust"
|
||||
BUTTON_TEXT_HELP: "Nupu tekst"
|
||||
NOTICE_BG_HELP: "Teavituse taust"
|
||||
NOTICE_TEXT_HELP: "Teavituse tekst"
|
||||
UPDATES_BG_HELP: "Uuenduste taust"
|
||||
UPDATES_TEXT_HELP: "Uuenduste tekst"
|
||||
BUTTON_COLORS: "Nupu värvid"
|
||||
CONTENT_COLORS: "Sisu värvid"
|
||||
LOGO_COLORS: "Logo värvid"
|
||||
NAV_COLORS: "Menüü värvid"
|
||||
NOTICE_COLORS: "Teavituste värvid"
|
||||
PAGE_COLORS: "Lehe värvid"
|
||||
TOOLBAR_COLORS: "Tööriistariba värvid"
|
||||
UPDATE_COLORS: "Uuenda värve"
|
||||
POPULARITY: "Populaarsus"
|
||||
VISITOR_TRACKING: "Külastajate jälgimine"
|
||||
IGNORE_URLS: "Ignoreeri"
|
||||
IGNORE_URLS_HELP: "URL-id, mida ignoreerida"
|
||||
DAILY_HISTORY: "Ajalugu päevade kaupa"
|
||||
MONTHLY_HISTORY: "Ajalugu kuude kaupa"
|
||||
VISITORS_HISTORY: "Külastuste ajalugu"
|
||||
RESIZE_WIDTH: "Muuda laiust"
|
||||
RESIZE_HEIGHT: "Muuda kõrgust"
|
||||
RES_MIN_WIDTH: "Resolutsiooni minimaalne laius"
|
||||
RES_MIN_HEIGHT: "Resolutsiooni minimaalne kõrgus"
|
||||
RES_MAX_WIDTH: "Resolutsiooni maksimaalne laius"
|
||||
RES_MAX_HEIGHT: "Resolutsiooni maksimaalne kõrgus"
|
||||
RESIZE_QUALITY: "Suuruse muutmise kvaliteet"
|
||||
PIXELS: "pikslit"
|
||||
ACCESS_ADMIN_CONFIGURATION_SECURITY: "Halda turvalisuse seadeid"
|
||||
SESSION_DOMAIN: "Sessiooni domeen"
|
||||
SESSION_PATH: "Sessiooni kaust"
|
||||
180
config/www/user/plugins/admin/languages/eu.yaml
Normal file
180
config/www/user/plugins/admin/languages/eu.yaml
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
PLUGIN_ADMIN:
|
||||
ADMIN_BETA_MSG: "Beta bertsio bat da hau! Produkzioan erabili ezazu zure ardurapean..."
|
||||
ADMIN_REPORT_ISSUE: "Arazoren bat topatu duzu? Mesedez, horren berri eman GitHub-en."
|
||||
LOGIN_BTN: "Sartu"
|
||||
LOGIN_BTN_FORGOT: "Ahaztu"
|
||||
LOGIN_BTN_RESET: "Berrezarri pasahitza"
|
||||
LOGIN_BTN_SEND_INSTRUCTIONS: "Bidali reset egiteko argibideak"
|
||||
LOGIN_BTN_CLEAR: "Garbitu inprimakia"
|
||||
LOGIN_BTN_CREATE_USER: "Sortu erabiltzailea"
|
||||
LOGIN_LOGGED_IN: "Saioa arrakastaz hastea lortu duzu"
|
||||
LOGIN_FAILED: "Akatsa sartzerakoan"
|
||||
LOGGED_OUT: "Saiotik irten zara"
|
||||
RESET_NEW_PASSWORD: "Mesedez sartu pasahitz berri bat …"
|
||||
RESET_LINK_EXPIRED: "Reset egiteko esteka iraungi da, mesedez saiatu berriro"
|
||||
RESET_PASSWORD_RESET: "Pasahitza berrezarri da"
|
||||
RESET_INVALID_LINK: "Reset egiteko esteka baliogabea, mesedez saiatu berriro"
|
||||
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Zure pasahitza berriz ezartzeko argibideak zure helbide elektronikora bidali dira"
|
||||
FORGOT_FAILED_TO_EMAIL: "Akatsa argibideak posta elektroniko bidez bidaltzean, mesedez saiatu berriro beranduago"
|
||||
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Ezinezkoa da pasahitza berriro ezartzea %s-rentzat, ez da helbide elektronikorik ezarri"
|
||||
FORGOT_USERNAME_DOES_NOT_EXIST: "<b>%s</b> erabiltzailea ez da existitzen"
|
||||
FORGOT_EMAIL_NOT_CONFIGURED: "Ezin da pasahitza berrezarri. Gune hau ez dago konfiguratuta mezu elektronikoak bidaltzeko"
|
||||
FORGOT_EMAIL_SUBJECT: "%s Pasahitza Berrezartzeko Eskaera"
|
||||
FORGOT_EMAIL_BODY: "<h1>Pazahitza berrezarketa</h1><p>%1$s estimatua,</p><p>Eskaera egin da <b>%4$s</b> zure pasahitza berrezartzeko.</p><p><br /><a href=\"%2$s\" class=\"btn-primary\">Klik egin hemen zure pasahitza berrezartzeko</a><br /><br /></p><p>Edo bestela kopiatu hurrengo URLa zure nabigatzailearen helbide barran</p> <p>%2$s</p><p><br />Begirunez,<br /><br />%3$s</p>"
|
||||
MANAGE_PAGES: "Orrialdeak Kudeatu"
|
||||
PAGES: "Orrialdeak"
|
||||
PLUGINS: "Pluginak"
|
||||
PLUGIN: "Plugina"
|
||||
THEMES: "Itxurak"
|
||||
LOGOUT: "Irten"
|
||||
BACK: "Itzuli"
|
||||
ADD_PAGE: "Gehitu orrialdea"
|
||||
MOVE: "Mugitu"
|
||||
DELETE: "Ezabatu"
|
||||
SAVE: "Gorde"
|
||||
NORMAL: "Normala"
|
||||
EXPERT: "Aditua"
|
||||
EXPAND_ALL: "Guztia Zabaldu"
|
||||
COLLAPSE_ALL: "Tolestu dena"
|
||||
ERROR: "Errorea"
|
||||
CLOSE: "Itxi"
|
||||
CANCEL: "Utzi"
|
||||
CONTINUE: "Jarraitu"
|
||||
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Egiaztapena Beharrezkoa da"
|
||||
MODAL_CHANGED_DETECTED_TITLE: "Aldaketak Aurkituta"
|
||||
MODAL_CHANGED_DETECTED_DESC: "Gorde gabeko aldaketak dauzkazu. Ziur al zaude irten nahi duzula?"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Egiaztapena Beharrezkoa da"
|
||||
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Ziur al zaude fitxategi hau ezabatu nahi duzula? Ekintza hau ezingo da desegin."
|
||||
ADD_FILTERS: "Iragazkiak gehitu"
|
||||
SEARCH_PAGES: "Orrialdeak Bilatu"
|
||||
VERSION: "Bertsioa"
|
||||
UPDATE_THEME: "Itxura Eguneratu"
|
||||
UPDATE_PLUGIN: "Plugina Eguneratu"
|
||||
AUTHOR: "Egilea"
|
||||
HOMEPAGE: "Hasiera Orrialdea"
|
||||
DEMO: "Demo"
|
||||
BUG_TRACKER: "Akatsen Jarraitzailea"
|
||||
KEYWORDS: "Hitz gakoak"
|
||||
LICENSE: "Lizentzia"
|
||||
DESCRIPTION: "Deskribapena"
|
||||
README: "Irakur nazazu"
|
||||
REMOVE_THEME: "Itxura Ezabatu"
|
||||
INSTALL_THEME: "Itxura instalatu"
|
||||
THEME: "Itxura"
|
||||
BACK_TO_THEMES: "Itxuretara Itzuli"
|
||||
BACK_TO_PLUGINS: "Pluginetara Itzuli"
|
||||
CHECK_FOR_UPDATES: "Begiratu Eguneraketak"
|
||||
ADD: "Gehitu"
|
||||
CLEAR_CACHE: "Garbitu Katxea"
|
||||
CLEAR_CACHE_ALL_CACHE: "Katxe Guztia"
|
||||
CLEAR_CACHE_ASSETS_ONLY: "Asset-ak Bakarrik"
|
||||
CLEAR_CACHE_IMAGES_ONLY: "Irudiak Bakarrik"
|
||||
CLEAR_CACHE_CACHE_ONLY: "Katxea Bakarrik"
|
||||
CLEAR_CACHE_TMP_ONLY: "Tmp Bakarrik"
|
||||
UPDATES_AVAILABLE: "Eguneraketak Eskuragarri"
|
||||
DAYS: "Egun"
|
||||
UPDATE: "Eguneratu"
|
||||
BACKUP: "Segurtasun kopia"
|
||||
STATISTICS: "Estatistikak"
|
||||
TODAY: "Gaur"
|
||||
WEEK: "Astea"
|
||||
MONTH: "Hilabetea"
|
||||
LATEST_PAGE_UPDATES: "Eguneratutako Azken Orrialdeak"
|
||||
MAINTENANCE: "Mantenua"
|
||||
UPDATED: "Eguneratuta"
|
||||
MON: "Al."
|
||||
TUE: "Ar."
|
||||
WED: "Az."
|
||||
THU: "Og."
|
||||
FRI: "Ol."
|
||||
SAT: "Lr."
|
||||
SUN: "Ig."
|
||||
COPY: "Kopiatu"
|
||||
EDIT: "Editatu"
|
||||
CREATE: "Sortu"
|
||||
GRAV_ADMIN: "Grav Admin"
|
||||
GRAV_OFFICIAL_PLUGIN: "Grav-en Plugin Ofiziala"
|
||||
GRAV_OFFICIAL_THEME: "Grav-en Itxura Ofiziala"
|
||||
PLUGIN_SYMBOLICALLY_LINKED: "Plugin hau sinbolikoki estekatuta dago. Eguneraketak ezingo dira aurkitu."
|
||||
THEME_SYMBOLICALLY_LINKED: "Plugin hau sinbolikoki estekatuta dago. Eguneraketak ezingo dira aurkitu"
|
||||
REMOVE_PLUGIN: "Plugina Ezabatu"
|
||||
INSTALL_PLUGIN: "Plugina instalatu"
|
||||
AVAILABLE: "Eskuragarri"
|
||||
INSTALLED: "Instalatuta"
|
||||
INSTALL: "Instalatu"
|
||||
ACTIVE_THEME: "Itxura Aktiboa"
|
||||
SWITCHING_TO_DESCRIPTION: "Itxura ezberdin batera aldatuz gero, ezingo da ziurtatu orrialdeen egiturak ondo eutsiko dutenik, potentzialki erroreak eragingo dituzte orrialdeak kargatzen saiatzean."
|
||||
SWITCHING_TO_CONFIRMATION: "Jarraitu eta Itxura aldatu nahi al duzu"
|
||||
CREATE_NEW_USER: "Erabiltzaile Berri Bat Sortu"
|
||||
REMOVE_USER: "Erabiltzailea Ezabatu"
|
||||
ACCESS_DENIED: "Sarbide debekatua"
|
||||
ACCOUNT_NOT_ADMIN: "zure kontuak ez dauka administratzaile baimenik"
|
||||
PHP_INFO: "PHP Info"
|
||||
INSTALLER: "Instalatzaile"
|
||||
AVAILABLE_THEMES: "Eskuragarri Dauden Itxurak"
|
||||
AVAILABLE_PLUGINS: "Eskuragarri Dauden Pluginak"
|
||||
INSTALLED_THEMES: "Instalatutako Itxurak"
|
||||
INSTALLED_PLUGINS: "Instalatutako Pluginak"
|
||||
BROWSE_ERROR_LOGS: "Begiratu Errore Erregistroa"
|
||||
SITE: "Gunea"
|
||||
INFO: "Info"
|
||||
SYSTEM: "Sistema"
|
||||
USER: "Erabiltzailea"
|
||||
ADD_ACCOUNT: "Gehitu Kontua"
|
||||
SWITCH_LANGUAGE: "Aldatu Hizkuntza"
|
||||
SUCCESSFULLY_ENABLED_PLUGIN: "Plugina ondo gaitu da"
|
||||
SUCCESSFULLY_DISABLED_PLUGIN: "Plugina ondo desgaitu da"
|
||||
SUCCESSFULLY_CHANGED_THEME: "Itxura lehenetsia ondo aldatu da"
|
||||
INSTALLATION_FAILED: "Instalazioak huts egin du"
|
||||
INSTALLATION_SUCCESSFUL: "Instalazioa ondo egin da"
|
||||
UNINSTALL_FAILED: "Desinstalazioak huts egin du"
|
||||
UNINSTALL_SUCCESSFUL: "Desinstalazioa ondo egin da"
|
||||
SUCCESSFULLY_SAVED: "Ondo gorde da"
|
||||
SUCCESSFULLY_COPIED: "Ondo kopiatu da"
|
||||
REORDERING_WAS_SUCCESSFUL: "Ordenaren aldaketa ondo egin da"
|
||||
SUCCESSFULLY_DELETED: "Ondo ezabatu da"
|
||||
SUCCESSFULLY_SWITCHED_LANGUAGE: "Hizkuntza ondo aldatu da"
|
||||
INSUFFICIENT_PERMISSIONS_FOR_TASK: "Ez daukazu bahimen nahikorik zereginerako"
|
||||
CACHE_CLEARED: "Katxea garbituta"
|
||||
METHOD: "Metodoa"
|
||||
ERROR_CLEARING_CACHE: "Errorea katxea garbitzean"
|
||||
AN_ERROR_OCCURRED: "Errore bat gertatu da"
|
||||
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Zure segurtasun kopia deskargatzeko prest dago"
|
||||
DOWNLOAD_BACKUP: "Segurtasun kopia deskargatu"
|
||||
PAGES_FILTERED: "Orrialdeak iragazita"
|
||||
NO_PAGE_FOUND: "Ez da Orrialderik aurkitu"
|
||||
INVALID_PARAMETERS: "Baliogabeko Parametroak"
|
||||
NO_FILES_SENT: "Fitxategirik ez da bidali"
|
||||
EXCEEDED_FILESIZE_LIMIT: "PHP konfigurazio fitxategiaren tamainaren muga gainditu da"
|
||||
UNKNOWN_ERRORS: "Errore ezezagunak"
|
||||
EXCEEDED_GRAV_FILESIZE_LIMIT: "Grav konfigurazio fitxategiaren tamainaren muga gainditu da"
|
||||
UNSUPPORTED_FILE_TYPE: "Fitxategi mota bateraezina"
|
||||
FAILED_TO_MOVE_UPLOADED_FILE: "Akatsa igotako fitxategia mugitzean"
|
||||
FILE_UPLOADED_SUCCESSFULLY: "Fitxategia ondo igo da"
|
||||
FILE_DELETED: "Fitxategia ezabatuta"
|
||||
FILE_COULD_NOT_BE_DELETED: "Fitxategia ezin da ezabatu"
|
||||
FILE_NOT_FOUND: "Fitxategia ez da aurkitu"
|
||||
NO_FILE_FOUND: "Fitxategirik ez da aurkitu"
|
||||
GRAV_UPDATE_FAILED: "Grav eguneraketak huts egin du"
|
||||
EVERYTHING_UPDATED: "Dena eguneratuta"
|
||||
UPDATES_FAILED: "Eguneraketek huts egin dute"
|
||||
LAST_BACKUP: "Azkenengo babes kopia"
|
||||
FULL_NAME: "Izen osoa"
|
||||
USERNAME: "Erabiltzaile izena"
|
||||
EMAIL: "Helbide Elektronikoa"
|
||||
USERNAME_EMAIL: "Erabiltzaile izena edo helbide elektronikoa"
|
||||
PASSWORD: "Pasahitza"
|
||||
PASSWORD_CONFIRM: "Pasahitza egiaztatu"
|
||||
TITLE: "Izenburua"
|
||||
ACCOUNT: "Kontua"
|
||||
EMAIL_VALIDATION_MESSAGE: "Benetako helbide elektroniko bat izan behar da"
|
||||
PASSWORD_VALIDATION_MESSAGE: "Pasahitzak zenbaki bat eta letra maiuskula eta minuskula bat eduki eduki behar du gutxienez, eta 8 edo karaktere gehiago"
|
||||
LANGUAGE: "Hizkuntza"
|
||||
LANGUAGE_HELP: "Gogoko hizkuntza ezarri"
|
||||
MEDIA: "Media"
|
||||
DEFAULTS: "Lehenetsitakoak"
|
||||
SITE_TITLE: "Gunearen Izenburua"
|
||||
SITE_TITLE_PLACEHOLDER: "Gune osoko izenburua"
|
||||
CONFIGURATION: "Konfigurazioa"
|
||||
DASHBOARD: "Arbela"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user