From a41ccd4859783926c7e04aaed0ff0652d995f4fd Mon Sep 17 00:00:00 2001 From: Rushaway Date: Sun, 1 Nov 2026 00:50:47 +0100 Subject: [PATCH] feat(translations): translate hard-coded messages Move the hard-coded chat, reply, menu and HUD messages into a phrase file with en, fr, ru, es, de, pt and chi (srcdslab/.github#5). Co-Authored-By: WareZ57 <7504466+WareZ57@users.noreply.github.com> --- .github/workflows/ci.yml | 11 +++++ .../sourcemod/scripting/AdvancedAdminList.sp | 10 +++-- .../AdvancedAdminList.phrases.txt | 43 +++++++++++++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 addons/sourcemod/translations/AdvancedAdminList.phrases.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15e7138..be5c8eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,16 @@ name: CI on: [push, pull_request, workflow_dispatch] jobs: + translations: + name: Translations + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: srcdslab/smtranslate@v1 + with: + # Set the TRANSLATIONS_FAIL_ON repository variable to "warning" to make warnings blocking + fail-on: ${{ vars.TRANSLATIONS_FAIL_ON || 'error' }} + build: name: Build runs-on: ubuntu-latest @@ -34,6 +44,7 @@ jobs: set -euo pipefail mkdir -p /tmp/package/addons/sourcemod/plugins cp addons/sourcemod/plugins/*.smx /tmp/package/addons/sourcemod/plugins/ + cp -R addons/sourcemod/translations /tmp/package/addons/sourcemod/ cp -R addons/sourcemod/configs /tmp/package/addons/sourcemod/ - name: Upload build archive for test runners diff --git a/addons/sourcemod/scripting/AdvancedAdminList.sp b/addons/sourcemod/scripting/AdvancedAdminList.sp index c225425..0b62f42 100644 --- a/addons/sourcemod/scripting/AdvancedAdminList.sp +++ b/addons/sourcemod/scripting/AdvancedAdminList.sp @@ -55,12 +55,14 @@ public Plugin myinfo = name = "Advanced Admin List", author = "maxime1907, .Rushaway", description = "An advanced admin list system", - version = "2.1.10", + version = "2.1.11", url = "" }; public void OnPluginStart() { + LoadTranslations("AdvancedAdminList.phrases"); + g_cAdminsRealNames = CreateConVar("sm_admins_real_names", "1", "0 = disabled, 1 = enable in game admin name display", 0, true, 0.0, true, 1.0); g_cAdminsNameColor = CreateConVar("sm_admins_name_color", "{green}", "What color should be displayed for admin names"); g_cAdminsNameSeparatorColor = CreateConVar("sm_admins_name_separator_color", "{default}", "What color should be displayed for separating admin names"); @@ -101,9 +103,9 @@ public Action Command_ReloadConfigOverride(int client, int argc) ResetColorListOverride(); if (LoadConfigOverride(ADMIN_CONFIG_OVERRIDE)) - CPrintToChat(client, "Successfully reloaded the admin config override"); + CPrintToChat(client, "%t", "Config Override Reloaded"); else - CPrintToChat(client, "There was an error reloading the admin config override"); + CPrintToChat(client, "%t", "Config Override Reload Failed"); return Plugin_Handled; } @@ -367,7 +369,7 @@ public Action Command_Admins(int client, const char[] command, int argc) public void printAdminList(int client, char[][] resolvedAdminsAndGroups, int resolvedAdminGroupsLength) { - CPrintToChat(client, "{green}[SM] {lightgreen}Admins %s", resolvedAdminGroupsLength <= 0 ? "are offline" : "currently online:"); + CPrintToChat(client, "{green}[SM] {lightgreen}%t", resolvedAdminGroupsLength <= 0 ? "Admins Offline" : "Admins Online"); for (int i = 0; i < resolvedAdminGroupsLength; i++) CPrintToChat(client, "%s", resolvedAdminsAndGroups[i]); diff --git a/addons/sourcemod/translations/AdvancedAdminList.phrases.txt b/addons/sourcemod/translations/AdvancedAdminList.phrases.txt new file mode 100644 index 0000000..2bed2f2 --- /dev/null +++ b/addons/sourcemod/translations/AdvancedAdminList.phrases.txt @@ -0,0 +1,43 @@ +"Phrases" +{ + "Config Override Reloaded" + { + "en" "Successfully reloaded the admin config override." + "fr" "La surcharge de la config admin a été rechargée avec succès." + "ru" "Файл переопределения конфигурации админов успешно перезагружен." + "es" "Se recargó correctamente la anulación de la configuración de admins." + "de" "Die Admin-Konfigurationsüberschreibung wurde erfolgreich neu geladen." + "pt" "A substituição da configuração de admins foi recarregada com sucesso." + "chi" "已成功重新加载管理员配置覆盖文件。" + } + "Config Override Reload Failed" + { + "en" "There was an error reloading the admin config override." + "fr" "Une erreur est survenue lors du rechargement de la surcharge de la config admin." + "ru" "Ошибка при перезагрузке файла переопределения конфигурации админов." + "es" "Se produjo un error al recargar la anulación de la configuración de admins." + "de" "Beim Neuladen der Admin-Konfigurationsüberschreibung ist ein Fehler aufgetreten." + "pt" "Ocorreu um erro ao recarregar a substituição da configuração de admins." + "chi" "重新加载管理员配置覆盖文件时出错。" + } + "Admins Offline" + { + "en" "Admins are offline" + "fr" "Les admins sont hors ligne" + "ru" "Админы не в сети" + "es" "Los admins están desconectados" + "de" "Admins sind offline" + "pt" "Os admins estão offline" + "chi" "管理员均不在线" + } + "Admins Online" + { + "en" "Admins currently online:" + "fr" "Admins actuellement en ligne :" + "ru" "Админы в сети:" + "es" "Admins conectados actualmente:" + "de" "Admins aktuell online:" + "pt" "Admins online no momento:" + "chi" "当前在线管理员:" + } +}