Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Update OpenRC service to truncate the runtime directory before starting Anubis.
- Allow multiple consecutive slashes in a row in application paths ([#754](https://github.com/TecharoHQ/anubis/issues/754)).
- Add option to set `targetSNI` to special keyword 'auto' to indicate that it should be automatically set to the request Host name ([424](https://github.com/TecharoHQ/anubis/issues/424)).
- Add Bulgarian translation ([#1164](https://github.com/TecharoHQ/anubis/pull/1164))

### Bug Fixes

Expand Down
66 changes: 66 additions & 0 deletions lib/localization/locales/bg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"loading": "Зареждане…",
"why_am_i_seeing": "Защо виждам това?",
"protected_by": "Защитено чрез",
"protected_from": "от",
"made_with": "Създадено с ❤️ в 🇨🇦",
"mascot_design": "Дизайн на талисмана",
"ai_companies_explanation": "Виждате това, защото администраторът на страницата е настроил Anubis да защитава сървъра срещу напористото обхождане на сайтове от компании за изкуствен интелект. Резултатът може и действително причинява прекъсвания, което прави ресурсите недостъпни за всички.",
"anubis_compromise": "Anubis е компромис. Той използва схемата „доказателство за извършена работа“, подобна на друга предложена схема за намаляване на нежелана поща. Идеята е, че в малък мащаб натоварването е незначително, но при масово обхождане се натрупва и прави процеса много по-скъп.",
"hack_purpose": "В крайна сметка това е временно решение, за да може да се работи по отпечатъци и разпознаване на безглави мрежови четци (напр. чрез начина, по който визуализират шрифтове), така че страницата със задача по схемата „доказателство за извършена работа“ да не се показва на обикновените потребители.",
"simplified_explanation": "Това е мярка срещу роботи и злонамерени заявки, подобна на CAPTCHA. Разликата е, че вместо вие да вършите работата, мрежовият четец получава задача за изчисление, която трябва да реши, за да докаже, че зад него стои истински потребител. Тази концепция се нарича „доказателство за извършена работа“. Задачата се решава за няколко секунди и получавате достъп до страницата. Благодарим за разбирането и търпението.",
"jshelter_note": "Имайте предвид, че Anubis изисква използване на модерните възможности на JavaScript, които добавките за мрежовия четец като JShelter обикновено изключват. Изключете JShelter или подобни добавки за домейна.",
"version_info": "Страницата използва Anubis издание",
"try_again": "Опитайте отново",
"go_home": "Към началната страница",
"contact_webmaster": "или ако смятате, че не трябва да бъдете спрени, се свържете с администратора на",
"connection_security": "Изчакайте, докато осигурим сигурността на връзката.",
"javascript_required": "За съжаление трябва да включите JavaScript, за да бъде решена задачата. Това е необходимо, защото компаниите за изкуствен интелект промениха социалния договор за начина, по който работи хостингът на сайтове. Решение без използване на JavaScript е в процес на разработка.",
"benchmark_requires_js": "За работа на инструмента за замерване е необходим включен JavaScript.",
"difficulty": "Трудност:",
"algorithm": "Алгоритъм:",
"compare": "Сравнение:",
"time": "Време",
"iters": "Цикли",
"time_a": "Време A",
"iters_a": "Цикли A",
"time_b": "Време B",
"iters_b": "Цикли B",
"static_check_endpoint": "Това е само междинна точка, която обърнатото прокси да използва.",
"authorization_required": "Изисква се удостоверяване",
"cookies_disabled": "Мрежовият четец е настроен да забранява бисквитки. За да се увери, че сте истински потребител Anubis изисква бисквитки. Включете бисквитките за домейна.",
"access_denied": "Достъпът е отказан: код за грешка",
"dronebl_entry": "DroneBL върна запис",
"see_dronebl_lookup": "преглед",
"internal_server_error": "Вътрешна грешка на сървъра: администраторът не е настрои Anubis правилно. Свържете се с него и го помолете да провери дневника около",
"invalid_redirect": "Неправилно пренасочване",
"redirect_not_parseable": "Адресът за пренасочване не може да бъде разчетен",
"redirect_domain_not_allowed": "Домейнът за пренасочване не е позволен",
"missing_required_forwarded_headers": "Липсват задължителните заглавки X-Forwarded-*",
"failed_to_sign_jwt": "неуспешно подписване на JWT",
"invalid_invocation": "Неправилно извикване на MakeChallenge",
"client_error_browser": "Грешка от клиент: уверете се, че мрежовият четец е последно издание и опитайте отново.",
"oh_noes": "О, не!",
"benchmarking_anubis": "Anubis изпълнява замерване!",
"you_are_not_a_bot": "Вие не сте робот!",
"making_sure_not_bot": "Уверяваме се, че не сте робот!",
"celphase": "CELPHASE",
"js_web_crypto_error": "Мрежовият четец няма работещ web.crypto елемент. Достъпвате ли страницата през защитен контекст?",
"js_web_workers_error": "Мрежовият четец не поддържа обслужващи нишки (Anubis ги използва, за да не замръзва мрежовият четец). Инсталирана ли е добавка като JShelter?",
"js_cookies_error": "Мрежовият четец не пази бисквитки. Anubis ги използва, за да определи кои клиенти са решили задачата, като пази подпис в бисквитка. Включете пазенето на бисквитки за домейна. Имената на бисквитките може да бъдат променяни без предупреждение. Те не са част от публичния ППИ.",
"js_context_not_secure": "Контекстът не е защитен!",
"js_context_not_secure_msg": "Опитайте да се свържете през HTTPS или уведомете администратора да настрои HTTPS. Повече информация: <a href=\"https://developer.mozilla.org/docs/Web/Security/Secure_Contexts#when_is_a_context_considered_secure\">MDN</a>.",
"js_calculating": "Изчисляване →",
"js_missing_feature": "Липсваща възможност",
"js_challenge_error": "Грешка в задачата!",
"js_challenge_error_msg": "Неуспешно разрешаване на алгоритъма за проверка. Опитате като презаредите страницата.",
"js_calculating_difficulty": "Изчисляване…<br/>Трудност:",
"js_speed": "Скорост:",
"js_verification_longer": "Проверката отнема повече време от очакваното. Не презареждайте страницата.",
"js_success": "Успешно!",
"js_done_took": "Готово! Отне",
"js_iterations": "цикъла",
"js_finished_reading": "Прочетох, напред →",
"js_calculation_error": "Грешка при изчисление!",
"js_calculation_error_msg": "Неуспешно изчисление на задачата:"
}
1 change: 1 addition & 0 deletions lib/localization/locales/manifest.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"supportedLanguages": [
"bg",
"cs",
"de",
"en",
Expand Down
1 change: 1 addition & 0 deletions lib/localization/localization_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ func TestLocalizationService(t *testing.T) {
service := NewLocalizationService()

loadingStrMap := map[string]string{
"bg": "Зареждане…",
"de": "Ladevorgang...",
"en": "Loading...",
"es": "Cargando...",
Expand Down