### Install Webpanel Dependencies with Composer Source: https://github.com/sbpp/sourcebans-pp/blob/php81/README.md Command to install PHP dependencies for the SourceBans++ web panel using Composer. This command must be executed from the root directory of the SourceBans++ installation after uploading the web panel files. ```Bash composer install ``` -------------------------------- ### Localized 'Reason Prompt' Message Definition Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_report.phrases.txt Specifies the multi-language prompt instructing the user to enter a reason for their report or to type 'cancel' to abort the action. This guides the user through the reporting process. ```Custom Key-Value "Reason Prompt" { "en" "Please enter the reason for the report or \"cancel\" to cancel." "ru" "Пожалуйста, напишите причину жалобы или \"cancel\" для отмены." "de" "Bitte geben sie einen Grund für die Meldung ein oder \"cancel\" um die Meldung abzubrechen." "fr" "Veuillez entrer la raison du signalement ou \"cancel\" pour annuler." "pl" "Podaj przyczynę zgłoszenia lub \"cancel\", aby anulować." "pt" "Digite o motivo para enviar a denúncia ou digite \"cancel\" para cancelar." "chi" "请填写报告填写理由或者 \"cancel\" 来取消" "hu" "Írd be az indokot vagy írd \"cancel\" a megszakításhoz" "tr" "Şikayetiniz için bir sebep belirtiniz. İptal etmek için \"cancel\" yazınız" } ``` -------------------------------- ### SourceBans++ System Requirements Source: https://github.com/sbpp/sourcebans-pp/blob/php81/README.md Lists the essential software components and their minimum versions required to run SourceBans++. This includes specifications for the web server environment (PHP, database) and the Source Dedicated Server components (MetaMod, SourceMod). ```Text * Webserver o PHP 8.2 or higher * ini setting: memory_limit greater than or equal to 64M * GMP extension o MySQL 5.6 or MariaDB 10 and higher * Source Dedicated Server o MetaMod: Source o SourceMod: Greater Than or Equal To 1.11 ``` -------------------------------- ### Localization for ReasonPanel_Reason Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Reason:' in the reason panel, with a placeholder for the specific reason text. Includes translations for various languages. ```KeyValues "ReasonPanel_Reason" { "#format" "{1:s}" "en" "Reason: {1}" "hu" "Ok: {1}" } ``` -------------------------------- ### Localizing 'minute' term Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_main.phrases.txt Provides multi-language translations for the singular term 'minute', likely used in time durations. ```VDF "minute" { "en" "minute" "de" "minute" "ru" "минуту" "fr" "minute" "pt" "minuto" "chi" "分钟" } ``` -------------------------------- ### Localization for ReasonPanel_Time Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for a time-based duration (e.g., 'X Minutes') in the reason panel, with a placeholder for the numerical value. Includes translations for various languages. ```KeyValues "ReasonPanel_Time" { "#format" "{1:d}" "en" "{1} Minutes" "hu" "{1} Perc" "es" "{1} Minutos" "ru" "{1} минут." "pl" "{1} minut" "pt" "{1} minutos" "de" "{1} Minuten" "fr" "{1} Minutes" "chi" "{1} 分钟" "tr" "{1} Dakika" } ``` -------------------------------- ### Smarty Tag Migration for Custom Themes Source: https://github.com/sbpp/sourcebans-pp/blob/php81/README.md Due to an updated Smarty version in SourceBans++, the `{php}` tag is no longer supported in custom themes. Developers must update their themes to use the new `{load_template}` tag for embedding template logic. ```Smarty {php} ``` ```Smarty {load_template} ``` -------------------------------- ### SourceBans++ Combined Ban and Communication Block Warning Phrase Configuration Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_checker.phrases.txt Configuration for the warning message displayed when a player has both previous bans and communication blocks. This phrase uses multiple format specifiers for player name, ban count, and communication block count, enabling comprehensive dynamic messaging across various languages. ```Custom Config "Ban and Comm Warning" { "#format" "{1:N},{2:d},{3:s},{4:d},{5:s}" "en" "Warning: \"{1:N}\" has {2} previous ban{3} and {4} previous comm block{5}." "ru" "Внимание: \"{1:N}\" ранее был забанен {2} раз и ему отключали чат или микрофон {4} раз{5}." "hu" "Figyelem: \"{1:N}\" van {2} korábbi kitiltása és {4} korábbi kommunikációs tiltása{5}." "chi" "警告: \"{1:N}\" 之前有 {2} 次封禁和 {4} 次禁言{5}." "pl" "Uwaga: \"{1:N}\" posiada {2} poprzednie bany{3} oraz {4} poprzednie blokady czatu{5}." "pt" "Aviso: \"{1:N}\" tem {2} banimento{3} e {4} bloqueio{5} de comunicação registrado." "de" "Warnung: \"{1:N}\" hatte bisher {2} ban{3} und {4} Sprachchat ban{5}." "tr" "Uyarı: \"{1:N}\" daha önceden {2} defa yasaklandı ve {4} defa iletişim yasağı aldı{5}." "fr" "Attention: \"{1:N}\" a déjà reçu {2} ban{3} et {4} blocage{5} de communication." } ``` -------------------------------- ### Localization for ListMenu_Option_Reason Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for the 'View Reason' option in a list menu, allowing users to see the justification for a punishment. Includes translations for various languages. ```KeyValues "ListMenu_Option_Reason" { "en" "- View Reason" "hu" "- Ok megnézése" "es" "- Ver Razón" "ru" "- Причина." "pl" "- Zobacz powód" "pt" "— Ver motivo" "de" "- Grund" "fr" "- Voir la raison" "chi" "- 查看原因" "tr" "- Sebebi Gör" } ``` -------------------------------- ### SourceBans++ Ban Warning Phrase Configuration Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_checker.phrases.txt Configuration for the warning message displayed when a player has previous bans. It uses format specifiers like '{1:N}' for player name and '{2:d}' for ban count, allowing for dynamic insertion of values into the localized strings across multiple languages. ```Custom Config "Ban Warning" { "#format" "{1:N},{2:d},{3:s}" "en" "Warning: \"{1:N}\" has {2} previous ban{3}." "ru" "Внимание: \"{1:N}\" ранее был забанен {2} раз{3}." "hu" "Figyelem: \"{1:N}\" van {2} korábbi kitiltása{3}." "chi" "警告: \"{1:N}\" 之前有 {2} 次封禁{3}." "pl" "Uwaga: \"{1:N}\" posiada {2} poprzednie bany{3}." "pt" "Aviso: \"{1:N}\" tem {2} banimento(s) registrado{3}." "de" "Warnung: \"{1:N}\" hatte bisher {2} ban{3}." "tr" "Uyarı: \"{1:N}\" daha önceden {2} defa yasaklandı{3}." "fr" "Attention: \"{1:N}\" a déjà reçu {2} ban{3}." } ``` -------------------------------- ### Localizing 'minutes' term Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_main.phrases.txt Provides multi-language translations for the plural term 'minutes', typically used for ban durations. ```VDF "minutes" { "en" "minutes" "de" "minuten" "ru" "минут" "fr" "minutes" "pt" "minutos" "chi" "分钟" } ``` -------------------------------- ### Localization for ListMenu_Option_Reason_None Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Reason: None' in a list menu, indicating that no specific reason was provided for a punishment. Includes translations for various languages. ```KeyValues "ListMenu_Option_Reason_None" { "en" "- Reason: None" "hu" "- Ok: Nincs" "es" "- Razón: Ninguna" "ru" "- Нет причины." "pl" "- Powód: Brak" "pt" "— Motivo: nenhum" "de" "- Kein Grund" "fr" "- Raison: Aucun" "chi" "- 原因: 无" "tr" "- Sebep: Yok" } ``` -------------------------------- ### SourceBans++ Communication Block Warning Phrase Configuration Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_checker.phrases.txt Configuration for the warning message displayed when a player has previous communication blocks (e.g., chat or voice mute). It uses format specifiers like '{1:N}' for player name and '{2:d}' for comm block count, allowing for dynamic insertion of values into the localized strings. ```Custom Config "Comm Warning" { "#format" "{1:N},{2:d},{3:s}" "en" "Warning: \"{1:N}\" has {2} previous comm block{3}." "ru" "Внимание: \"{1:N}\" ранее отключали чат или микрофон {2} раз{3}." "hu" "Figyelem: \"{1:N}\" van {2} korábbi kommunikációs tiltása{3}." "chi" "警告: \"{1:N}\" 之前有 {2} 次禁言{3}." "pl" "Uwaga: \"{1:N}\" posiada {2} poprzednie blokady czatu{3}." "pt" "Aviso: \"{1:N}\" tem {2} bloqueio{3} de comunicação registrado." "de" "Warnung: \"{1:N}\" hatte bisher {2} Sprachchat ban{3}." "tr" "Uyarı: \"{1:N}\" daha önceden {2} defa iletişim yasağı aldı{3}." "fr" "Attention: \"{1:N}\" a déjà reçu {2} blocage{3} de communication." } ``` -------------------------------- ### Localization for ReasonPanel_Perm Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Permanent' in the reason panel, indicating an indefinite punishment. Provides translations for multiple languages. ```KeyValues "ReasonPanel_Perm" { "en" "Permanent" "hu" "Örökre" "es" "Permanente" "ru" "Навсегда." "pl" "Permanentnie" "pt" "permanente" "de" "Permanent" "fr" "Permanent" "chi" "永久" "tr" "Süresiz" } ``` -------------------------------- ### Localization for ReasonPanel_Temp Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Temporary' in the reason panel, indicating a non-permanent punishment. Provides translations for multiple languages. ```KeyValues "ReasonPanel_Temp" { "en" "Temporary" "hu" "Ideiglenes" "es" "Temporal" "ru" "Сессия." "pl" "Tymczasowo" "pt" "temporária" "de" "Zeitweihlig" "fr" "Temporaire" "chi" "临时" "tr" "Geçici" } ``` -------------------------------- ### Localizing 'Ban Log' message format Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_main.phrases.txt Defines the format and multi-language translations for a ban log entry, including placeholders for ban details like administrator, banned player, duration, and reason. ```VDF "Ban Log" { "#format" "{1:L},{2:L},{3:d},{4:s}" "en" "\"{1}\" banned \"{2}\" (minutes: {3}) (reason: {4})." "de" "\"{1}\" hat \"{2}\" gebannt. (Minuten: {3}) (Grund: {4})." "ru" "\"{1}\" забанил \"{2}\" (длительность (в минутах): {3}) (причина: {4})." "fr" "\"{1}\" a banni \"{2}\" (minutes: {3}) (raison: {4})." "pt" "\"{1}\" baniu \"{2}\". (Minutos: {3}.) (Motivo: {4}.)" "chi" "\"{1}\" 已封禁 \"{2}\" ({3} 分钟) (理由: {4})." } ``` -------------------------------- ### Localization for ListMenu_Option_Admin Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for displaying the administrator's name in a list menu, with a placeholder for the admin's identifier. Includes translations for various languages. ```KeyValues "ListMenu_Option_Admin" { "#format" "{1:s}" "en" "- Admin: {1}" "hu" "- Admin: {1}" "es" "- Admin: {1}" "ru" "- Админ: {1}" "pl" "- Admin: {1}" "pt" "— Administrador: {1}" "de" "- Admin: {1}" "fr" "- Admin: {1}" "chi" "- 管理员: {1}" "tr" "- Admin: {1}" } ``` -------------------------------- ### Localization for ListMenu_Option_Duration_Time Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for a time-based duration (e.g., 'X Minutes') in a list menu, with a placeholder for the numerical value. Includes translations for various languages. ```KeyValues "ListMenu_Option_Duration_Time" { "#format" "{1:d}" "en" "{1} Minutes" "hu" "{1} Perc" "es" "{1} Minutos" "ru" "{1} минут." "pl" "{1} minut" "pt" "{1} minutos" "de" "{1} Minuten" "fr" "{1} Minutes" "chi" "{1} 分钟" "tr" "{1} Dakika" } ``` -------------------------------- ### Localization for ListMenu_Option_Duration Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized prefix for 'Duration' in a list menu, used to indicate the length of a punishment. Includes translations for various languages. ```KeyValues "ListMenu_Option_Duration" { "en" "- Duration: " "hu" "- Időtartam: " "es" "- Duración: " "ru" "- На время: " "pl" "- Czas trwania: " "pt" "— Duração: " "de" "- Dauer: " "fr" "- Durée: " "chi" "- 时长: " "tr" "- Süre: " } ``` -------------------------------- ### Localization for ListMenu_Option_Expire_Perm Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Never' expiry option in a list menu, indicating a permanent punishment. Provides translations for multiple languages. ```KeyValues "ListMenu_Option_Expire_Perm" { "en" "Never" "hu" "Soha" "es" "Nunca" "ru" "Никогда." "pl" "Nigdy" "pt" "nunca" "de" "Nie" "fr" "Jamais" "chi" "永不" "tr" "Asla" } ``` -------------------------------- ### Localization for ListMenu_Option_Expire_Time Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for a specific expiry time in a list menu, with a placeholder for the time value. Includes translations for various languages. ```KeyValues "ListMenu_Option_Expire_Time" { "#format" "{1:s}" "en" "{1}" "hu" "{1}" "es" "{1}" "ru" "{1}" "pl" "{1}" "pt" "{1}" "de" "{1}" "fr" "{1}" "chi" "{1}" "tr" "{1}" } ``` -------------------------------- ### Localization for ListMenu_Option_Issue Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for displaying the issue date of a punishment in a list menu, with a placeholder for the date value. Includes translations for various languages. ```KeyValues "ListMenu_Option_Issue" { "#format" "{1:s}" "en" "- Issued: {1}" "hu" "- Issued: {1}" "es" "- Emitido: {1}" "ru" "- Отключен: {1}" "pl" "- Nadano: {1}" "pt" "— Aplicado: {1}" "de" "- Gesperrt: {1}" "fr" "- Publié: {1}" "chi" "- 已封禁: {1}" "tr" "- Oluşturma: {1}" } ``` -------------------------------- ### Transactional Email Base Styles and Responsiveness Source: https://github.com/sbpp/sourcebans-pp/blob/php81/web/themes/default/mails/ban_submission.html This CSS defines the foundational styles for a transactional email template. It includes global resets to normalize rendering, defines the layout for the email body and container, sets up typography for headings and paragraphs, and styles buttons for calls to action. Crucially, it incorporates media queries to provide responsive adjustments, ensuring the email looks good on smaller screens and various email clients, including specific fixes for Outlook (mso-table-lspace, mso-table-rspace, mso-hide) and Apple Mail (apple-link). ```CSS /* ------------------------------------- GLOBAL RESETS ------------------------------------- */ /*All the styling goes here*/ img { border: none; -ms-interpolation-mode: bicubic; max-width: 100%; } body { background-color: #f6f6f6; font-family: sans-serif; -webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; margin: 0; padding: 0; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } table { border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; } table td { font-family: sans-serif; font-size: 14px; vertical-align: top; } /* ------------------------------------- BODY & CONTAINER ------------------------------------- */ .body { background-color: #f6f6f6; width: 100%; } /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */ .container { display: block; margin: 0 auto !important; /* makes it centered */ max-width: 580px; padding: 10px; width: 580px; } /* This should also be a block element, so that it will fill 100% of the .container */ .content { box-sizing: border-box; display: block; margin: 0 auto; max-width: 580px; padding: 10px; } /* ------------------------------------- HEADER, FOOTER, MAIN ------------------------------------- */ .main { background: #ffffff; border-radius: 3px; width: 100%; } .wrapper { box-sizing: border-box; padding: 20px; } .content-block { padding-bottom: 10px; padding-top: 10px; } .footer { clear: both; margin-top: 10px; text-align: center; width: 100%; } .footer td, .footer p, .footer span, .footer a { color: #999999; font-size: 12px; text-align: center; } /* ------------------------------------- TYPOGRAPHY ------------------------------------- */ h1, h2, h3, h4 { color: #000000; font-family: sans-serif; font-weight: 400; line-height: 1.4; margin: 0; margin-bottom: 30px; } h1 { font-size: 35px; font-weight: 300; text-align: center; text-transform: capitalize; } p, ul, ol { font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; margin-bottom: 15px; } p li, ul li, ol li { list-style-position: inside; margin-left: 5px; } a { color: #3498db; text-decoration: underline; } /* ------------------------------------- BUTTONS ------------------------------------- */ .btn { box-sizing: border-box; width: 100%; } .btn > tbody > tr > td { padding-bottom: 15px; } .btn table { width: auto; } .btn table td { background-color: #ffffff; border-radius: 5px; text-align: center; } .btn a { background-color: #ffffff; border: solid 1px #3498db; border-radius: 5px; box-sizing: border-box; color: #3498db; cursor: pointer; display: inline-block; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-decoration: none; text-transform: capitalize; } .btn-primary table td { background-color: #3498db; } .btn-primary a { background-color: #3498db; border-color: #3498db; color: #ffffff; } /* ------------------------------------- OTHER STYLES THAT MIGHT BE USEFUL ------------------------------------- */ .last { margin-bottom: 0; } .first { margin-top: 0; } .align-center { text-align: center; } .align-right { text-align: right; } .align-left { text-align: left; } .clear { clear: both; } .mt0 { margin-top: 0; } .mb0 { margin-bottom: 0; } .preheader { color: transparent; display: none; height: 0; max-height: 0; max-width: 0; opacity: 0; overflow: hidden; mso-hide: all; visibility: hidden; width: 0; } .powered-by a { text-decoration: none; } hr { border: 0; border-bottom: 1px solid #f6f6f6; margin: 20px 0; } /* ------------------------------------- RESPONSIVE AND MOBILE FRIENDLY STYLES ------------------------------------- */ @media only screen and (max-width: 620px) { table.body h1 { font-size: 28px !important; margin-bottom: 10px !important; } table.body p, table.body ul, table.body ol, table.body td, table.body span, table.body a { font-size: 16px !important; } table.body .wrapper, table.body .article { padding: 10px !important; } table.body .content { padding: 0 !important; } table.body .container { padding: 0 !important; width: 100% !important; } table.body .main { border-left-width: 0 !important; border-radius: 0 !important; border-right-width: 0 !important; } table.body .btn table { width: 100% !important; } table.body .btn a { width: 100% !important; } table.body .img-responsive { height: auto !important; max-width: 100% !important; width: auto !important; } } /* ------------------------------------- PRESERVE THESE STYLES IN THE HEAD ------------------------------------- */ @media all { .ExternalClass { width: 100%; } .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { line-height: 100%; } .apple-link a { color: inherit !important; font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important; line-height: inherit !important; text-decoration: none !important; } #MessageViewBod ``` -------------------------------- ### Localization for ListMenu_Option_Expire_Temp_Reconnect Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Reconnect' expiry option in a list menu, indicating a temporary punishment that ends upon player reconnection. Provides translations for multiple languages. ```KeyValues "ListMenu_Option_Expire_Temp_Reconnect" { "en" "Reconnect" "hu" "Újracsatlakozás" "es" "Al reconectar" "ru" "После перезахода." "pl" "Ponowne połączenie" "pt" "Reconectar" "de" "Wiederverbinden" "fr" "Reconnecter" "chi" "重新连接" "tr" "Yeniden bağlan" } ``` -------------------------------- ### Localization for ListMenu_Option_Duration_Temp Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Temporary' duration option in a list menu, indicating a non-permanent punishment. Provides translations for multiple languages. ```KeyValues "ListMenu_Option_Duration_Temp" { "en" "Temporary" "hu" "Ideiglenes" "es" "Temporal" "ru" "Временный." "pl" "Tymczasowo" "pt" "temporária" "de" "Zeitweilig" "fr" "Temporaire" "chi" "临时" "tr" "Geçici" } ``` -------------------------------- ### Localization for ListMenu_Option_Duration_Perm Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Permanent' duration option in a list menu, indicating an indefinite punishment. Provides translations for multiple languages. ```KeyValues "ListMenu_Option_Duration_Perm" { "en" "Permanent" "hu" "Örökre" "es" "Permanente" "ru" "Навсегда." "pl" "Permanentnie" "pt" "permanente" "de" "Permanent" "fr" "Permanent" "chi" "永久" "tr" "Süresiz" } ``` -------------------------------- ### SourceBans UI Button and Link Styling (CSS) Source: https://github.com/sbpp/sourcebans-pp/blob/php81/web/themes/default/mails/contact_custom.html CSS rules defining styles for anchor tags, primary buttons, and their hover states within the SourceBans user interface. It ensures consistent appearance and hover effects for interactive elements. ```css y a { color: inherit; text-decoration: none; font-size: inherit; font-family: inherit; font-weight: inherit; line-height: inherit; } .btn-primary table td:hover { background-color: #34495e !important; } .btn-primary a:hover { background-color: #34495e !important; border-color: #34495e !important; } } ``` -------------------------------- ### Localization for ReasonPanel_Punishment_Mute Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for 'Muted:' in the reason panel, indicating a mute punishment. Includes translations for various languages. ```KeyValues "ReasonPanel_Punishment_Mute" { "en" "Muted: " "hu" "Némítva: " "es" "Muteado: " "ru" "Микрофон: " "pl" "Wyciszono: " "pt" "Emudecido(a): " "de" "Sprachchat: " "fr" "Muté: " "chi" "静音: " "tr" "Mikrofon Yasağı: " } ``` -------------------------------- ### Localization for ListMenu_Option_Expire Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized prefix for 'Expires' in a list menu, used to indicate when a punishment will end. Includes translations for various languages. ```KeyValues "ListMenu_Option_Expire" { "en" "- Expires: " "hu" "- Lejárt: " "es" "- Expira en: " "ru" "- Истекает: " "pl" "- Wygasa: " "pt" "— Expira em: " "de" "- Läuft ab: " "fr" "- Expire: " "chi" "- 解除: " "tr" "- Sona Erme: " } ``` -------------------------------- ### Localization for ListMenu_Option_Mute Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_comms.phrases.txt Defines the localized string for the 'Muted' option in a list menu, providing translations across multiple languages for the state of a player being muted. ```KeyValues "ListMenu_Option_Mute" { "en" "Muted" "hu" "Némítva" "es" "Muteado" "ru" "Микрофон." "pl" "Wyciszony" "pt" "Emudecido(a)" "de" "Sprachchat" "fr" "Muté" "chi" "静音" "tr" "Mikrofon Yasaklı" } ``` -------------------------------- ### Localizing 'permanent' term Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_main.phrases.txt Provides multi-language translations for the term 'permanent' used in ban durations or states. ```VDF "permanent" { "fr" "permanent" "pt" "permanente" "chi" "永久" } ``` -------------------------------- ### Localizing 'Ban Added' message format Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_main.phrases.txt Defines the format and multi-language translations for a message indicating a ban has been added, including details like administrator, duration, ID/IP, and reason. ```VDF "Ban Added" { "#format" "{1:L},{2:d},{3:s},{4:s}" "en" "\"{1}\" added ban (minutes: {2}) (ID/IP: {3}) (reason: {4})." "de" "\"{1}\" hat einen Ban hinzugefügt. (Minuten: {2}) (ID/IP: {3}) (Grund: {4})." "ru" "\"{1}\" добавил бан (длительностью (в минутах): {2}) (ID/IP: {3}) (причина: {4})." "fr" "\"{1}\" a ajouté un ban (minutes: {2}) (ID/IP: {3}) (raison: {4})." "pt" "\"{1}\" adicionou um banimento. (Minutos: {2}.) (ID/IP: {3}.) (Motivo: {4}.)" "chi" "\"{1}\" 已被封禁 ({2} 分钟) (ID/IP: {3}) (理由: {4})." } ``` -------------------------------- ### Responsive Transactional Email Stylesheet Source: https://github.com/sbpp/sourcebans-pp/blob/php81/web/themes/default/mails/pass_reset.html This CSS snippet defines the complete styling for a transactional email template. It includes global resets for consistent rendering across email clients, defines layout for body, container, and content areas, sets typography rules for headings and paragraphs, styles buttons for call-to-actions, and incorporates responsive media queries to ensure optimal display on various screen sizes. It also includes specific rules for Microsoft Outlook compatibility and styles to preserve in the email head. ```CSS img { border: none; -ms-interpolation-mode: bicubic; max-width: 100%; } body { background-color: #f6f6f6; font-family: sans-serif; -webkit-font-smoothing: antialiased; font-size: 14px; line-height: 1.4; margin: 0; padding: 0; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } table { border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; } table td { font-family: sans-serif; font-size: 14px; vertical-align: top; } /* ------------------------------------- BODY & CONTAINER ------------------------------------- */ .body { background-color: #f6f6f6; width: 100%; } /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */ .container { display: block; margin: 0 auto !important; /* makes it centered */ max-width: 580px; padding: 10px; width: 580px; } /* This should also be a block element, so that it will fill 100% of the .container */ .content { box-sizing: border-box; display: block; margin: 0 auto; max-width: 580px; padding: 10px; } /* ------------------------------------- HEADER, FOOTER, MAIN ------------------------------------- */ .main { background: #ffffff; border-radius: 3px; width: 100%; } .wrapper { box-sizing: border-box; padding: 20px; } .content-block { padding-bottom: 10px; padding-top: 10px; } .footer { clear: both; margin-top: 10px; text-align: center; width: 100%; } .footer td, .footer p, .footer span, .footer a { color: #999999; font-size: 12px; text-align: center; } /* ------------------------------------- TYPOGRAPHY ------------------------------------- */ h1, h2, h3, h4 { color: #000000; font-family: sans-serif; font-weight: 400; line-height: 1.4; margin: 0; margin-bottom: 30px; } h1 { font-size: 35px; font-weight: 300; text-align: center; text-transform: capitalize; } p, ul, ol { font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; margin-bottom: 15px; } p li, ul li, ol li { list-style-position: inside; margin-left: 5px; } a { color: #3498db; text-decoration: underline; } /* ------------------------------------- BUTTONS ------------------------------------- */ .btn { box-sizing: border-box; width: 100%; } .btn > tbody > tr > td { padding-bottom: 15px; } .btn table { width: auto; } .btn table td { background-color: #ffffff; border-radius: 5px; text-align: center; } .btn a { background-color: #ffffff; border: solid 1px #3498db; border-radius: 5px; box-sizing: border-box; color: #3498db; cursor: pointer; display: inline-block; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-decoration: none; text-transform: capitalize; } .btn-primary table td { background-color: #3498db; } .btn-primary a { background-color: #3498db; border-color: #3498db; color: #ffffff; } /* ------------------------------------- OTHER STYLES THAT MIGHT BE USEFUL ------------------------------------- */ .last { margin-bottom: 0; } .first { margin-top: 0; } .align-center { text-align: center; } .align-right { text-align: right; } .align-left { text-align: left; } .clear { clear: both; } .mt0 { margin-top: 0; } .mb0 { margin-bottom: 0; } . ``` -------------------------------- ### Localized 'Reason Too Short' Message Definition Source: https://github.com/sbpp/sourcebans-pp/blob/php81/game/addons/sourcemod/translations/sbpp_report.phrases.txt Defines the multi-language error message displayed when the provided reason for a report is deemed too short and requires more detail. This prompts the user to provide sufficient information. ```Custom Key-Value "Reason Short Need More" { "en" "Reason is too short, more details are required." "ru" "Текст причины слишком мал, требуется больше информации." "de" "Der Grund ist leider zu kurz, es werden mehr Details benötigt." "fr" "La raison est trop courte, plus de détails sont requis." "pl" "Powód jest za krótki, więcej szczegółów jest wymaganych." "pt" "Motivo muito curto. Informe mais detalhes." "chi" "理由过于简短, 请做更多说明." "hu" "Az indoklás túl rövid, több információra van szükség." "tr" "Sebep çok kısa, lütfen daha detaylı yazınız." } ```