mirror of
https://github.com/tarampampam/error-pages.git
synced 2024-08-30 18:22:40 +00:00
l10n file formatted, CI updated (#83)
This commit is contained in:
parent
481e11d527
commit
cd5abe458b
16
.github/workflows/tests.yml
vendored
16
.github/workflows/tests.yml
vendored
@ -48,6 +48,22 @@ jobs: # Docs: <https://git.io/JvxXE>
|
|||||||
- name: Run linter
|
- name: Run linter
|
||||||
run: ajv validate --all-errors --verbose -s ./schemas/config/1.0.schema.json -d ./error-pages.y*ml
|
run: ajv validate --all-errors --verbose -s ./schemas/config/1.0.schema.json -d ./error-pages.y*ml
|
||||||
|
|
||||||
|
lint-l10n:
|
||||||
|
name: Lint l10n file(s)
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with: {node-version: '16'}
|
||||||
|
|
||||||
|
- name: Install eslint
|
||||||
|
run: npm install -g eslint@v8 # Package page: <https://www.npmjs.com/package/eslint>
|
||||||
|
|
||||||
|
- name: Run linter
|
||||||
|
working-directory: l10n
|
||||||
|
run: eslint ./*.js
|
||||||
|
|
||||||
go-test:
|
go-test:
|
||||||
name: Unit tests
|
name: Unit tests
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
@ -34,7 +34,7 @@ One day you may want to replace the standard error pages of your HTTP server wit
|
|||||||
- Error pages can be [embedded into your own `nginx`][wiki-usage-with-nginx] docker image
|
- Error pages can be [embedded into your own `nginx`][wiki-usage-with-nginx] docker image
|
||||||
- Fully configurable (take a look at the [configuration file](https://github.com/tarampampam/error-pages/blob/master/error-pages.yml) and [project Wiki][wiki])
|
- Fully configurable (take a look at the [configuration file](https://github.com/tarampampam/error-pages/blob/master/error-pages.yml) and [project Wiki][wiki])
|
||||||
- Distributed using docker image and compiled binary files
|
- Distributed using docker image and compiled binary files
|
||||||
- Localized (🇺🇸, 🇺🇦, 🇷🇺) HTML error pages (translation process [described here](https://github.com/tarampampam/error-pages/tree/master/l10n) - other translations are welcome!)
|
- Localized (🇺🇸, 🇫🇷, 🇺🇦, 🇷🇺) HTML error pages (translation process [described here](https://github.com/tarampampam/error-pages/tree/master/l10n) - other translations are welcome!)
|
||||||
|
|
||||||
## 🧩 Install
|
## 🧩 Install
|
||||||
|
|
||||||
|
11
l10n/.eslintrc.json
Normal file
11
l10n/.eslintrc.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended"
|
||||||
|
],
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 2017
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"browser": true
|
||||||
|
}
|
||||||
|
}
|
338
l10n/l10n.js
338
l10n/l10n.js
@ -2,181 +2,369 @@ Object.defineProperty(window, 'l10n', {
|
|||||||
value: new function () {
|
value: new function () {
|
||||||
// language codes list: <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>
|
// language codes list: <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>
|
||||||
const data = { // all keys should be in english (it is default/main locale)
|
const data = { // all keys should be in english (it is default/main locale)
|
||||||
'Error': {fr: 'Erreur', ru: 'Ошибка', uk: 'Помилка'},
|
'Error': {
|
||||||
'Good luck': {fr: 'Bonne chance', ru: 'Удачи', uk: 'Успіхів'},
|
fr: 'Erreur',
|
||||||
'UH OH': {fr: 'Oups', ru: 'Ох', uk: 'Ох'},
|
ru: 'Ошибка',
|
||||||
'Request details': {fr: 'Détails de la demande', ru: 'Детали запроса', uk: 'Деталі запиту'},
|
uk: 'Помилка',
|
||||||
'Double-check the URL': {fr: 'Vérifiez l’URL', ru: 'Дважды проверьте URL', uk: 'Двічі перевіряйте URL-адресу'},
|
},
|
||||||
'Alternatively, go back': {fr: 'Essayer de revenir en arrière', ru: 'Или можете вернуться назад', uk: 'Або ви можете повернутися'},
|
'Good luck': {
|
||||||
'Here\'s what might have happened': {fr: 'Voici ce qui aurait pu se passer', ru: 'Из-за чего это могло случиться', uk: 'Що це може статися'},
|
fr: 'Bonne chance',
|
||||||
|
ru: 'Удачи',
|
||||||
|
uk: 'Успіхів',
|
||||||
|
},
|
||||||
|
'UH OH': {
|
||||||
|
fr: 'Oups',
|
||||||
|
ru: 'Ох',
|
||||||
|
uk: 'Ох',
|
||||||
|
},
|
||||||
|
'Request details': {
|
||||||
|
fr: 'Détails de la demande',
|
||||||
|
ru: 'Детали запроса',
|
||||||
|
uk: 'Деталі запиту',
|
||||||
|
},
|
||||||
|
'Double-check the URL': {
|
||||||
|
fr: 'Vérifiez l’URL',
|
||||||
|
ru: 'Дважды проверьте URL',
|
||||||
|
uk: 'Двічі перевіряйте URL-адресу',
|
||||||
|
},
|
||||||
|
'Alternatively, go back': {
|
||||||
|
fr: 'Essayer de revenir en arrière',
|
||||||
|
ru: 'Или можете вернуться назад',
|
||||||
|
uk: 'Або ви можете повернутися',
|
||||||
|
},
|
||||||
|
'Here\'s what might have happened': {
|
||||||
|
fr: 'Voici ce qui aurait pu se passer',
|
||||||
|
ru: 'Из-за чего это могло случиться',
|
||||||
|
uk: 'Що це може статися',
|
||||||
|
},
|
||||||
'You may have mistyped the URL': {
|
'You may have mistyped the URL': {
|
||||||
fr: 'Vous avez peut-être mal tapé l’URL',
|
fr: 'Vous avez peut-être mal tapé l’URL',
|
||||||
ru: 'Вы могли ошибиться в URL',
|
ru: 'Вы могли ошибиться в URL',
|
||||||
uk: 'Ви можете зробити помилку в URL-адресі'
|
uk: 'Ви можете зробити помилку в URL-адресі',
|
||||||
|
},
|
||||||
|
'The site was moved': {
|
||||||
|
fr: 'Le site a été déplacé',
|
||||||
|
ru: 'Сайт был перемещён',
|
||||||
|
uk: 'Сайт був переміщений',
|
||||||
|
},
|
||||||
|
'It was never here': {
|
||||||
|
fr: 'Il n’a jamais été ici',
|
||||||
|
ru: 'Он никогда не был здесь',
|
||||||
|
uk: 'Він ніколи не був тут',
|
||||||
},
|
},
|
||||||
'The site was moved': {fr: 'Le site a été déplacé', ru: 'Сайт был перемещён', uk: 'Сайт був переміщений'},
|
|
||||||
'It was never here': {fr: 'Il n’a jamais été ici', ru: 'Он никогда не был здесь', uk: 'Він ніколи не був тут'},
|
|
||||||
|
|
||||||
'Bad Request': {fr: 'Mauvaise demande', ru: 'Некорректный запрос', uk: 'Неправильний запит'},
|
'Bad Request': {
|
||||||
|
fr: 'Mauvaise demande',
|
||||||
|
ru: 'Некорректный запрос',
|
||||||
|
uk: 'Неправильний запит',
|
||||||
|
},
|
||||||
'The server did not understand the request': {
|
'The server did not understand the request': {
|
||||||
fr: 'Le serveur ne comprend pas la demande',
|
fr: 'Le serveur ne comprend pas la demande',
|
||||||
ru: 'Сервер не смог обработать запрос из-за ошибки в нём',
|
ru: 'Сервер не смог обработать запрос из-за ошибки в нём',
|
||||||
uk: 'Сервер не міг обробити запит через помилку в ньому'
|
uk: 'Сервер не міг обробити запит через помилку в ньому',
|
||||||
|
},
|
||||||
|
'Unauthorized': {
|
||||||
|
fr: 'Non autorisé',
|
||||||
|
ru: 'Запрос не авторизован',
|
||||||
|
uk: 'Несанкціонований доступ',
|
||||||
},
|
},
|
||||||
'Unauthorized': {fr: 'Non autorisé', ru: 'Запрос не авторизован', uk: 'Несанкціонований доступ'},
|
|
||||||
'The requested page needs a username and a password': {
|
'The requested page needs a username and a password': {
|
||||||
fr: 'La page demandée nécessite un nom d’utilisateur et un mot de passe',
|
fr: 'La page demandée nécessite un nom d’utilisateur et un mot de passe',
|
||||||
ru: 'Для доступа к странице требуется логин и пароль',
|
ru: 'Для доступа к странице требуется логин и пароль',
|
||||||
uk: 'Щоб отримати доступ до сторінки, потрібний логін та пароль'
|
uk: 'Щоб отримати доступ до сторінки, потрібний логін та пароль',
|
||||||
|
},
|
||||||
|
'Forbidden': {
|
||||||
|
fr: 'Interdit',
|
||||||
|
ru: 'Запрещено',
|
||||||
|
uk: 'Заборонено',
|
||||||
},
|
},
|
||||||
'Forbidden': {fr: 'Interdit', ru: 'Запрещено', uk: 'Заборонено'},
|
|
||||||
'Access is forbidden to the requested page': {
|
'Access is forbidden to the requested page': {
|
||||||
fr: 'Accès interdit à la page demandée',
|
fr: 'Accès interdit à la page demandée',
|
||||||
ru: 'Доступ к странице запрещён',
|
ru: 'Доступ к странице запрещён',
|
||||||
uk: 'Доступ до сторінки заборонено'
|
uk: 'Доступ до сторінки заборонено',
|
||||||
|
},
|
||||||
|
'Not Found': {
|
||||||
|
fr: 'Pas trouvé',
|
||||||
|
ru: 'Страница не найдена',
|
||||||
|
uk: 'Сторінка не знайдена',
|
||||||
},
|
},
|
||||||
'Not Found': {fr: 'Pas trouvé', ru: 'Страница не найдена', uk: 'Сторінка не знайдена'},
|
|
||||||
'The server can not find the requested page': {
|
'The server can not find the requested page': {
|
||||||
fr: 'Le serveur ne peut trouver la page demandée',
|
fr: 'Le serveur ne peut trouver la page demandée',
|
||||||
ru: 'Сервер не смог найти запрашиваемую страницу',
|
ru: 'Сервер не смог найти запрашиваемую страницу',
|
||||||
uk: 'Сервер не міг знайти запитану сторінку'
|
uk: 'Сервер не міг знайти запитану сторінку',
|
||||||
|
},
|
||||||
|
'Method Not Allowed': {
|
||||||
|
fr: 'Méthode Non Autorisée',
|
||||||
|
ru: 'Метод не поддерживается',
|
||||||
|
uk: 'Неприпустимий метод',
|
||||||
},
|
},
|
||||||
'Method Not Allowed': {fr: 'Méthode Non Autorisée', ru: 'Метод не поддерживается', uk: 'Неприпустимий метод'},
|
|
||||||
'The method specified in the request is not allowed': {
|
'The method specified in the request is not allowed': {
|
||||||
fr: 'La méthode spécifiée dans la requête n’est pas autorisée',
|
fr: 'La méthode spécifiée dans la requête n’est pas autorisée',
|
||||||
ru: 'Указанный в запросе метод не поддерживается',
|
ru: 'Указанный в запросе метод не поддерживается',
|
||||||
uk: 'Метод, зазначений у запиті, не підтримується'
|
uk: 'Метод, зазначений у запиті, не підтримується',
|
||||||
|
},
|
||||||
|
'Proxy Authentication Required': {
|
||||||
|
fr: 'Authentification proxy requise',
|
||||||
|
ru: 'Нужна аутентификация прокси',
|
||||||
|
uk: 'Потрібна ідентифікація проксі',
|
||||||
},
|
},
|
||||||
'Proxy Authentication Required': {fr: 'Authentification proxy requise', ru: 'Нужна аутентификация прокси', uk: 'Потрібна ідентифікація проксі'},
|
|
||||||
'You must authenticate with a proxy server before this request can be served': {
|
'You must authenticate with a proxy server before this request can be served': {
|
||||||
fr: 'Vous devez vous authentifier avec un serveur proxy avant que cette requête puisse être servie',
|
fr: 'Vous devez vous authentifier avec un serveur proxy avant que cette requête puisse être servie',
|
||||||
ru: 'Вы должны быть авторизованы на прокси сервере для обработки этого запроса',
|
ru: 'Вы должны быть авторизованы на прокси сервере для обработки этого запроса',
|
||||||
uk: 'Ви повинні увійти до проксі-сервера для обробки цього запиту'
|
uk: 'Ви повинні увійти до проксі-сервера для обробки цього запиту',
|
||||||
|
},
|
||||||
|
'Request Timeout': {
|
||||||
|
fr: 'Demande expiré',
|
||||||
|
ru: 'Истекло время ожидания',
|
||||||
|
uk: 'Час запиту закінчився',
|
||||||
},
|
},
|
||||||
'Request Timeout': {fr: 'Demande expiré', ru: 'Истекло время ожидания', uk: 'Час запиту закінчився'},
|
|
||||||
'The request took longer than the server was prepared to wait': {
|
'The request took longer than the server was prepared to wait': {
|
||||||
fr: 'La requête prend plus de temps que prévu',
|
fr: 'La requête prend plus de temps que prévu',
|
||||||
ru: 'Отправка запроса заняла слишком много времени',
|
ru: 'Отправка запроса заняла слишком много времени',
|
||||||
uk: 'Надсилання запиту зайняв занадто багато часу'
|
uk: 'Надсилання запиту зайняв занадто багато часу',
|
||||||
|
},
|
||||||
|
'Conflict': {
|
||||||
|
fr: 'Conflit',
|
||||||
|
ru: 'Конфликт',
|
||||||
|
uk: 'Конфлікт',
|
||||||
},
|
},
|
||||||
'Conflict': {fr: 'Conflit', ru: 'Конфликт', uk: 'Конфлікт'},
|
|
||||||
'The request could not be completed because of a conflict': {
|
'The request could not be completed because of a conflict': {
|
||||||
fr: 'La requête n’a pas pu être complétée à cause d’un conflit',
|
fr: 'La requête n’a pas pu être complétée à cause d’un conflit',
|
||||||
ru: 'Запрос не может быть обработан из-за конфликта',
|
ru: 'Запрос не может быть обработан из-за конфликта',
|
||||||
uk: 'Запит не може бути оброблений через конфлікт'
|
uk: 'Запит не може бути оброблений через конфлікт',
|
||||||
|
},
|
||||||
|
'Gone': {
|
||||||
|
fr: 'Supprimé',
|
||||||
|
ru: 'Удалено',
|
||||||
|
uk: 'Вилучений',
|
||||||
},
|
},
|
||||||
'Gone': {fr: 'Supprimé', ru: 'Удалено', uk: 'Вилучений'},
|
|
||||||
'The requested page is no longer available': {
|
'The requested page is no longer available': {
|
||||||
fr: 'La page demandée n’est plus disponible',
|
fr: 'La page demandée n’est plus disponible',
|
||||||
ru: 'Запрошенная страница была удалена',
|
ru: 'Запрошенная страница была удалена',
|
||||||
uk: 'Запитана сторінка була видалена'
|
uk: 'Запитана сторінка була видалена',
|
||||||
|
},
|
||||||
|
'Length Required': {
|
||||||
|
fr: 'Longueur requise',
|
||||||
|
ru: 'Необходима длина',
|
||||||
|
uk: 'Потрібно вказати розмір',
|
||||||
},
|
},
|
||||||
'Length Required': {fr: 'Longueur requise', ru: 'Необходима длина', uk: 'Потрібно вказати розмір'},
|
|
||||||
'The "Content-Length" is not defined. The server will not accept the request without it': {
|
'The "Content-Length" is not defined. The server will not accept the request without it': {
|
||||||
fr: 'Le « Content-Length » n’est pas défini. Le serveur ne prendra pas en compte la requête sans',
|
fr: 'Le "Content-Length" n’est pas défini. Le serveur ne prendra pas en compte la requête sans',
|
||||||
ru: 'Заголовок "Content-Length" не был передан. Сервер не может обработать запрос без него',
|
ru: 'Заголовок "Content-Length" не был передан. Сервер не может обработать запрос без него',
|
||||||
uk: 'Заголовок "Content-Length" не був переданий. Сервер не може обробити запит без нього'
|
uk: 'Заголовок "Content-Length" не був переданий. Сервер не може обробити запит без нього',
|
||||||
|
},
|
||||||
|
'Precondition Failed': {
|
||||||
|
fr: 'Échec de la condition préalable',
|
||||||
|
ru: 'Условие ложно',
|
||||||
|
uk: 'Збій під час обробки попередньої умови',
|
||||||
},
|
},
|
||||||
'Precondition Failed': {fr: 'Échec de la condition préalable', ru: 'Условие ложно', uk: 'Збій під час обробки попередньої умови'},
|
|
||||||
'The pre condition given in the request evaluated to false by the server': {
|
'The pre condition given in the request evaluated to false by the server': {
|
||||||
fr: 'La précondition donnée dans la requête a été évaluée comme étant fausse par le serveur',
|
fr: 'La précondition donnée dans la requête a été évaluée comme étant fausse par le serveur',
|
||||||
ru: 'Ни одно из условных полей заголовка запроса не было выполнено',
|
ru: 'Ни одно из условных полей заголовка запроса не было выполнено',
|
||||||
uk: 'Жодна з умовних полів заголовка запиту не була виконана'
|
uk: 'Жодна з умовних полів заголовка запиту не була виконана',
|
||||||
|
},
|
||||||
|
'Payload Too Large': {
|
||||||
|
fr: 'Charge trop volumineuse',
|
||||||
|
ru: 'Слишком большой запрос',
|
||||||
|
uk: 'Занадто великий запит',
|
||||||
},
|
},
|
||||||
'Payload Too Large': {fr: 'Charge trop volumineuse', ru: 'Слишком большой запрос', uk: 'Занадто великий запит'},
|
|
||||||
'The server will not accept the request, because the request entity is too large': {
|
'The server will not accept the request, because the request entity is too large': {
|
||||||
fr: 'Le serveur ne prendra pas en compte la requête, car l’entité de la requête est trop volumineuse',
|
fr: 'Le serveur ne prendra pas en compte la requête, car l’entité de la requête est trop volumineuse',
|
||||||
ru: 'Сервер не может обработать запрос, так как он слишком большой',
|
ru: 'Сервер не может обработать запрос, так как он слишком большой',
|
||||||
uk: 'Сервер не може обробити запит, оскільки він занадто великий'
|
uk: 'Сервер не може обробити запит, оскільки він занадто великий',
|
||||||
|
},
|
||||||
|
'Requested Range Not Satisfiable': {
|
||||||
|
fr: 'Demande non satisfaisante',
|
||||||
|
ru: 'Диапазон не достижим',
|
||||||
|
uk: 'Запитуваний діапазон недосяжний',
|
||||||
},
|
},
|
||||||
'Requested Range Not Satisfiable': {fr: 'Demande non satisfaisante', ru: 'Диапазон не достижим', uk: 'Запитуваний діапазон недосяжний'},
|
|
||||||
'The requested byte range is not available and is out of bounds': {
|
'The requested byte range is not available and is out of bounds': {
|
||||||
fr: 'Le byte range demandé n’est pas disponible et est hors des limites',
|
fr: 'Le byte range demandé n’est pas disponible et est hors des limites',
|
||||||
ru: 'Запрошенный диапазон данных недоступен или вне допустимых пределов',
|
ru: 'Запрошенный диапазон данных недоступен или вне допустимых пределов',
|
||||||
uk: 'Описаний діапазон даних недоступний або з допустимих меж'
|
uk: 'Описаний діапазон даних недоступний або з допустимих меж',
|
||||||
|
},
|
||||||
|
'I\'m a teapot': {
|
||||||
|
fr: 'Je suis une théière',
|
||||||
|
ru: 'Я чайник',
|
||||||
|
uk: 'Я чайник',
|
||||||
},
|
},
|
||||||
'I\'m a teapot': {fr: 'Je suis une théière', ru: 'Я чайник', uk: 'Я чайник'},
|
|
||||||
'Attempt to brew coffee with a teapot is not supported': {
|
'Attempt to brew coffee with a teapot is not supported': {
|
||||||
fr: 'Tenter de préparer du café avec une théière n’est pas pris en charge',
|
fr: 'Tenter de préparer du café avec une théière n’est pas pris en charge',
|
||||||
ru: 'Попытка заварить кофе в чайнике обречена на фиаско',
|
ru: 'Попытка заварить кофе в чайнике обречена на фиаско',
|
||||||
uk: 'Спроба виварити каву в чайник приречена на фіаско'
|
uk: 'Спроба виварити каву в чайник приречена на фіаско',
|
||||||
|
},
|
||||||
|
'Too Many Requests': {
|
||||||
|
fr: 'Trop de demandes',
|
||||||
|
ru: 'Слишком много запросов',
|
||||||
|
uk: 'Занадто багато запитів',
|
||||||
},
|
},
|
||||||
'Too Many Requests': {fr: 'Trop de demandes', ru: 'Слишком много запросов', uk: 'Занадто багато запитів'},
|
|
||||||
'Too many requests in a given amount of time': {
|
'Too many requests in a given amount of time': {
|
||||||
fr: 'Trop de requêtes dans un délai donné',
|
fr: 'Trop de requêtes dans un délai donné',
|
||||||
ru: 'Отправлено слишком много запросов за короткое время',
|
ru: 'Отправлено слишком много запросов за короткое время',
|
||||||
uk: 'Надіслано занадто багато запитів на короткий час'
|
uk: 'Надіслано занадто багато запитів на короткий час',
|
||||||
|
},
|
||||||
|
'Internal Server Error': {
|
||||||
|
fr: 'Erreur interne du serveur',
|
||||||
|
ru: 'Внутренняя ошибка сервера',
|
||||||
|
uk: 'Внутрішня помилка сервера',
|
||||||
},
|
},
|
||||||
'Internal Server Error': {fr: 'Erreur interne du serveur', ru: 'Внутренняя ошибка сервера', uk: 'Внутрішня помилка сервера'},
|
|
||||||
'The server met an unexpected condition': {
|
'The server met an unexpected condition': {
|
||||||
fr: 'Le serveur a rencontré une condition inattendue',
|
fr: 'Le serveur a rencontré une condition inattendue',
|
||||||
ru: 'Произошло что-то неожиданное на сервере',
|
ru: 'Произошло что-то неожиданное на сервере',
|
||||||
uk: 'На сервері було щось несподіване'
|
uk: 'На сервері було щось несподіване',
|
||||||
|
},
|
||||||
|
'Bad Gateway': {
|
||||||
|
fr: 'Mauvaise passerelle',
|
||||||
|
ru: 'Ошибка шлюза',
|
||||||
|
uk: 'Помилка шлюзу',
|
||||||
},
|
},
|
||||||
'Bad Gateway': {fr: 'Mauvaise passerelle', ru: 'Ошибка шлюза', uk: 'Помилка шлюзу'},
|
|
||||||
'The server received an invalid response from the upstream server': {
|
'The server received an invalid response from the upstream server': {
|
||||||
fr: 'Le serveur a reçu une réponse invalide du serveur distant',
|
fr: 'Le serveur a reçu une réponse invalide du serveur distant',
|
||||||
ru: 'Сервер получил некорректный ответ от вышестоящего сервера',
|
ru: 'Сервер получил некорректный ответ от вышестоящего сервера',
|
||||||
uk: 'Сервер отримав неправильну відповідь з сервера Upstream'
|
uk: 'Сервер отримав неправильну відповідь з сервера Upstream',
|
||||||
|
},
|
||||||
|
'Service Unavailable': {
|
||||||
|
fr: 'Service indisponible',
|
||||||
|
ru: 'Сервис недоступен',
|
||||||
|
uk: 'Сервіс недоступний',
|
||||||
},
|
},
|
||||||
'Service Unavailable': {fr: 'Service indisponible', ru: 'Сервис недоступен', uk: 'Сервіс недоступний'},
|
|
||||||
'The server is temporarily overloading or down': {
|
'The server is temporarily overloading or down': {
|
||||||
fr: 'Le serveur est temporairement en surcharge ou indisponible',
|
fr: 'Le serveur est temporairement en surcharge ou indisponible',
|
||||||
ru: 'Сервер временно не может обрабатывать запросы по техническим причинам',
|
ru: 'Сервер временно не может обрабатывать запросы по техническим причинам',
|
||||||
uk: 'Сервер тимчасово не може обробляти запити з технічних причин'
|
uk: 'Сервер тимчасово не може обробляти запити з технічних причин',
|
||||||
|
},
|
||||||
|
'Gateway Timeout': {
|
||||||
|
fr: 'Expiration Passerelle',
|
||||||
|
ru: 'Шлюз не отвечает',
|
||||||
|
uk: 'Шлюз не відповідає',
|
||||||
},
|
},
|
||||||
'Gateway Timeout': {fr: 'Expiration Passerelle', ru: 'Шлюз не отвечает', uk: 'Шлюз не відповідає'},
|
|
||||||
'The gateway has timed out': {
|
'The gateway has timed out': {
|
||||||
fr: 'Le temps d’attente de la passerelle est dépassé',
|
fr: 'Le temps d’attente de la passerelle est dépassé',
|
||||||
ru: 'Сервер не дождался ответа от вышестоящего сервера',
|
ru: 'Сервер не дождался ответа от вышестоящего сервера',
|
||||||
uk: 'Сервер не чекав відповіді від сервера Upstream'
|
uk: 'Сервер не чекав відповіді від сервера Upstream',
|
||||||
|
},
|
||||||
|
'HTTP Version Not Supported': {
|
||||||
|
fr: 'Version HTTP non prise en charge',
|
||||||
|
ru: 'Версия HTTP не поддерживается',
|
||||||
|
uk: 'Версія НТТР не підтримується',
|
||||||
},
|
},
|
||||||
'HTTP Version Not Supported': {fr: 'Version HTTP non prise en charge', ru: 'Версия HTTP не поддерживается', uk: 'Версія НТТР не підтримується'},
|
|
||||||
'The server does not support the "http protocol" version': {
|
'The server does not support the "http protocol" version': {
|
||||||
fr: 'Le serveur ne supporte pas la version du protocole HTTP"',
|
fr: 'Le serveur ne supporte pas la version du protocole HTTP"',
|
||||||
ru: 'Сервер не поддерживает запрошенную версию HTTP протокола',
|
ru: 'Сервер не поддерживает запрошенную версию HTTP протокола',
|
||||||
uk: 'Сервер не підтримує запитану версію HTTP-протоколу'
|
uk: 'Сервер не підтримує запитану версію HTTP-протоколу',
|
||||||
},
|
},
|
||||||
|
|
||||||
'Host': {fr: 'Hôte', ru: 'Хост', uk: 'Хост'},
|
'Host': {
|
||||||
'Original URI': {fr: 'URI d’origine', ru: 'Исходный URI', uk: 'Вихідний URI'},
|
fr: 'Hôte',
|
||||||
'Forwarded for': {fr: 'Transmis pour', ru: 'Перенаправлен', uk: 'Перенаправлений'},
|
ru: 'Хост',
|
||||||
'Namespace': {fr: 'Espace de noms', ru: 'Пространство имён', uk: 'Простір імен'},
|
uk: 'Хост',
|
||||||
'Ingress name': {fr: 'Nom ingress', ru: 'Имя Ingress', uk: 'Ім\'я Ingress'},
|
},
|
||||||
'Service name': {fr: 'Nom du service', ru: 'Имя сервиса', uk: 'Ім\'я сервісу'},
|
'Original URI': {
|
||||||
'Service port': {fr: 'Port du service', ru: 'Порт сервиса', uk: 'Порт сервісу'},
|
fr: 'URI d’origine',
|
||||||
'Request ID': {fr: 'Identifiant de la demande', ru: 'ID запроса', uk: 'ID запиту'},
|
ru: 'Исходный URI',
|
||||||
'Timestamp': {fr: 'Horodatage', ru: 'Временная метка', uk: 'Тимчасова мітка'},
|
uk: 'Вихідний URI',
|
||||||
|
},
|
||||||
|
'Forwarded for': {
|
||||||
|
fr: 'Transmis pour',
|
||||||
|
ru: 'Перенаправлен',
|
||||||
|
uk: 'Перенаправлений',
|
||||||
|
},
|
||||||
|
'Namespace': {
|
||||||
|
fr: 'Espace de noms',
|
||||||
|
ru: 'Пространство имён',
|
||||||
|
uk: 'Простір імен',
|
||||||
|
},
|
||||||
|
'Ingress name': {
|
||||||
|
fr: 'Nom ingress',
|
||||||
|
ru: 'Имя Ingress',
|
||||||
|
uk: 'Ім\'я Ingress',
|
||||||
|
},
|
||||||
|
'Service name': {
|
||||||
|
fr: 'Nom du service',
|
||||||
|
ru: 'Имя сервиса',
|
||||||
|
uk: 'Ім\'я сервісу',
|
||||||
|
},
|
||||||
|
'Service port': {
|
||||||
|
fr: 'Port du service',
|
||||||
|
ru: 'Порт сервиса',
|
||||||
|
uk: 'Порт сервісу',
|
||||||
|
},
|
||||||
|
'Request ID': {
|
||||||
|
fr: 'Identifiant de la demande',
|
||||||
|
ru: 'ID запроса',
|
||||||
|
uk: 'ID запиту',
|
||||||
|
},
|
||||||
|
'Timestamp': {
|
||||||
|
fr: 'Horodatage',
|
||||||
|
ru: 'Временная метка',
|
||||||
|
uk: 'Тимчасова мітка',
|
||||||
|
},
|
||||||
|
|
||||||
'client-side error': {fr: 'Erreur du client', ru: 'ошибка на стороне клиента', uk: 'помилка на стороні клієнта'},
|
'client-side error': {
|
||||||
'server-side error': {fr: 'Erreur du serveur', ru: 'ошибка на стороне сервера', uk: 'помилка на стороні сервера'},
|
fr: 'Erreur du client',
|
||||||
|
ru: 'ошибка на стороне клиента',
|
||||||
|
uk: 'помилка на стороні клієнта',
|
||||||
|
},
|
||||||
|
'server-side error': {
|
||||||
|
fr: 'Erreur du serveur',
|
||||||
|
ru: 'ошибка на стороне сервера',
|
||||||
|
uk: 'помилка на стороні сервера',
|
||||||
|
},
|
||||||
|
|
||||||
'Your Client': {fr: 'Votre client', ru: 'Ваш Браузер', uk: 'Ваш Браузер'},
|
'Your Client': {
|
||||||
'Network': {fr: 'Réseau', ru: 'Сеть', uk: 'Сіть'},
|
fr: 'Votre client',
|
||||||
'Web Server': {fr: 'Serveur Web', ru: 'Web Сервер', uk: 'Web Сервер'},
|
ru: 'Ваш Браузер',
|
||||||
'What happened?': {fr: 'Que s’est-il passé ?', ru: 'Что произошло?', uk: 'Що сталося?'},
|
uk: 'Ваш Браузер',
|
||||||
'What can i do?': {fr: 'Que puis-je faire ?', ru: 'Что можно сделать?', uk: 'Що можна зробити?'},
|
},
|
||||||
|
'Network': {
|
||||||
|
fr: 'Réseau',
|
||||||
|
ru: 'Сеть',
|
||||||
|
uk: 'Сіть',
|
||||||
|
},
|
||||||
|
'Web Server': {
|
||||||
|
fr: 'Serveur Web',
|
||||||
|
ru: 'Web Сервер',
|
||||||
|
uk: 'Web Сервер',
|
||||||
|
},
|
||||||
|
'What happened?': {
|
||||||
|
fr: 'Que s’est-il passé ?',
|
||||||
|
ru: 'Что произошло?',
|
||||||
|
uk: 'Що сталося?',
|
||||||
|
},
|
||||||
|
'What can i do?': {
|
||||||
|
fr: 'Que puis-je faire ?',
|
||||||
|
ru: 'Что можно сделать?',
|
||||||
|
uk: 'Що можна зробити?',
|
||||||
|
},
|
||||||
'Please try again in a few minutes': {
|
'Please try again in a few minutes': {
|
||||||
fr: 'Veuillez réessayer dans quelques minutes',
|
fr: 'Veuillez réessayer dans quelques minutes',
|
||||||
ru: 'Пожалуйста, попробуйте повторить запрос ещё раз чуть позже',
|
ru: 'Пожалуйста, попробуйте повторить запрос ещё раз чуть позже',
|
||||||
uk: 'Будь ласка, спробуйте повторити запит ще раз трохи пізніше'
|
uk: 'Будь ласка, спробуйте повторити запит ще раз трохи пізніше',
|
||||||
|
},
|
||||||
|
'Working': {
|
||||||
|
fr: 'Opérationnel',
|
||||||
|
ru: 'Работает',
|
||||||
|
uk: 'Працює',
|
||||||
|
},
|
||||||
|
'Unknown': {
|
||||||
|
fr: 'Inconnu',
|
||||||
|
ru: 'Неизвестно',
|
||||||
|
uk: 'Невідомо',
|
||||||
},
|
},
|
||||||
'Working': {fr: 'Opérationnel', ru: 'Работает', uk: 'Працює'},
|
|
||||||
'Unknown': {fr: 'Inconnu', ru: 'Неизвестно', uk: 'Невідомо'},
|
|
||||||
'Please try to change the request method, headers, payload, or URL': {
|
'Please try to change the request method, headers, payload, or URL': {
|
||||||
fr: 'Veuillez essayer de changer la méthode de requête, les en-têtes, le contenu ou l’URL',
|
fr: 'Veuillez essayer de changer la méthode de requête, les en-têtes, le contenu ou l’URL',
|
||||||
ru: 'Пожалуйста, попробуйте изменить метод запроса, заголовки, его содержимое или URL',
|
ru: 'Пожалуйста, попробуйте изменить метод запроса, заголовки, его содержимое или URL',
|
||||||
uk: 'Будь ласка, спробуйте змінити метод запиту, заголовки, його вміст або URL-адресу'
|
uk: 'Будь ласка, спробуйте змінити метод запиту, заголовки, його вміст або URL-адресу',
|
||||||
},
|
},
|
||||||
'Please check your authorization data': {
|
'Please check your authorization data': {
|
||||||
fr: 'Veuillez vérifier vos données d’autorisation',
|
fr: 'Veuillez vérifier vos données d’autorisation',
|
||||||
ru: 'Пожалуйста, проверьте данные авторизации',
|
ru: 'Пожалуйста, проверьте данные авторизации',
|
||||||
uk: 'Будь ласка, перевірте дані авторизації'
|
uk: 'Будь ласка, перевірте дані авторизації',
|
||||||
},
|
},
|
||||||
'Please double-check the URL and try again': {
|
'Please double-check the URL and try again': {
|
||||||
fr: 'Veuillez vérifier l’URL et réessayer',
|
fr: 'Veuillez vérifier l’URL et réessayer',
|
||||||
ru: 'Пожалуйста, дважды проверьте URL и попробуйте снова',
|
ru: 'Пожалуйста, дважды проверьте URL и попробуйте снова',
|
||||||
uk: 'Будь ласка, двічі перевірте URL-адресу і спробуйте знову'
|
uk: 'Будь ласка, двічі перевірте URL-адресу і спробуйте знову',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -211,11 +399,11 @@ Object.defineProperty(window, 'l10n', {
|
|||||||
this.translate = function (token, def) {
|
this.translate = function (token, def) {
|
||||||
const t = serializeToken(token);
|
const t = serializeToken(token);
|
||||||
|
|
||||||
if (activeLocale === 'en' && data.hasOwnProperty(t)) {
|
if (activeLocale === 'en' && Object.prototype.hasOwnProperty.call(data, t)) {
|
||||||
return token
|
return token
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.hasOwnProperty(t) && data[t].hasOwnProperty(activeLocale)) {
|
if (Object.prototype.hasOwnProperty.call(data, t) && Object.prototype.hasOwnProperty.call(data[t], activeLocale)) {
|
||||||
return data[t][activeLocale];
|
return data[t][activeLocale];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Localization
|
# 🔤 Localization
|
||||||
|
|
||||||
[](https://www.jsdelivr.com/package/gh/tarampampam/error-pages)
|
[](https://www.jsdelivr.com/package/gh/tarampampam/error-pages)
|
||||||
|
|
||||||
This directory contains file [l10n.js](l10n.js) for the error pages localization. The logic is very simple - pages load this file using [jsdelivr.com](https://www.jsdelivr.com/) as a CDN for [versioned content from the GitHub repository](https://www.jsdelivr.com/features#gh), and the script from this file translate tags content using the special HTML attribute `data-l10n`.
|
This directory contains file [l10n.js](l10n.js) for the error pages localization. The working logic is very simple - pages load this script using [jsdelivr.com](https://www.jsdelivr.com/) as a CDN for [versioned content from the GitHub repository](https://www.jsdelivr.com/features#gh), and it translates tag content with the special HTML attribute `data-l10n`.
|
||||||
|
|
||||||
By default, pages markup contains strings in English (`en` locale). If you want to localize the error pages on the different locales, you should:
|
By default, pages markup contains strings in English (`en` locale). If you want to localize the error pages on the different locales, you should:
|
||||||
|
|
||||||
@ -10,3 +10,7 @@ By default, pages markup contains strings in English (`en` locale). If you want
|
|||||||
- Make a fork of this repository
|
- Make a fork of this repository
|
||||||
- Edit file [l10n.js](l10n.js) in `data` section (append new localized strings) using locale name from the step 1
|
- Edit file [l10n.js](l10n.js) in `data` section (append new localized strings) using locale name from the step 1
|
||||||
- Make a PR with your changes
|
- Make a PR with your changes
|
||||||
|
|
||||||
|
## 👍 Translators
|
||||||
|
|
||||||
|
- 🇫🇷 French by [@jvin042](https://github.com/jvin042)
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&display=swap" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
:root{--matrix-glyph-size:15px;--matrix-glyph-font-size:15px;--matrix-glyph-front-color:rgba(255, 255, 255, 0.8);--matrix-glyph-tail-color:#0f0;--matrix-overlay-color:rgba(18, 18, 18, 0.05)}
|
:root{--matrix-glyph-size:15px;--matrix-glyph-font-size:15px;--matrix-glyph-front-color:rgba(255, 255, 255, 0.8);--matrix-glyph-tail-color:#0f0;--matrix-overlay-color:rgba(0, 0, 0, 0.12)}
|
||||||
body,html{margin:0;padding:0;background-color:#000;height:100vh}
|
body,html{margin:0;padding:0;background-color:#000;height:100vh}
|
||||||
#matrix{display:block;position:fixed;width:100vw;height:100vh}
|
#matrix{display:block;position:fixed;width:100vw;height:100vh}
|
||||||
.container{align-items:center;display:flex;justify-content:center;position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:1}
|
.container{align-items:center;display:flex;justify-content:center;position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:1}
|
||||||
@ -91,7 +91,7 @@
|
|||||||
const ctx = $canvas.getContext('2d');
|
const ctx = $canvas.getContext('2d');
|
||||||
ctx.globalCompositeOperation = 'lighter'; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
|
ctx.globalCompositeOperation = 'lighter'; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
|
||||||
|
|
||||||
this.redrawInterval = 70; // fade oud speed
|
this.redrawInterval = 90; // fade oud speed
|
||||||
this.glyphSize = 0;
|
this.glyphSize = 0;
|
||||||
this.rowsCapacity = 0;
|
this.rowsCapacity = 0;
|
||||||
this.columnsCapacity = 0;
|
this.columnsCapacity = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user