PazerOP / tf2_bot_detector

Automatically detects and votekicks cheaters/bots in TF2 casual.
MIT License
400 stars 55 forks source link

[Improvement] Localization support #148

Open KarmaDeb opened 4 years ago

KarmaDeb commented 4 years ago

Hi, I would like to see an option to set the software language, I made a "default" language based on the original and non-modifiable actual one which one could be used as template

{
    "Tab": {
        "File": {
            "Title":    "File",
            "Reload_players":   "Reload Playerlists/Rules",
            "Reload_settings":  "Reload settings",
            "Generate_debug":   "Generate debug report",
            "Exit": "Exit"
        },
        "Settings": "Settings",
        "Help": {
            "open_github":  "Open GitHub",
            "open_discord": "Open discord",
            "about":    "About TF2 Bot Detector"
        }
    },
    "Settings": {
        "Title":    "Settings",
        "lang": "TF2 Bot detector language",
        "steamDir": {
            "Title":    "Override steam directory",
            "Auto": "Autodetected value: '{path}'",
            "Manual":   "Steam directory"
        },
        "tfDir": {
            "Title":    "Override tf directory",
            "Auto": "Autodetected value: '{path'",
            "Manual":   "tf directory"
        },
        "steamID": {
            "Title":    "Override SteamID",
            "Auto": "Autodetected value: {steamID}",
            "Manual":   "My SteamID"
        },
        "sleep":    "Sleep when unfocused",
        "autoLaunch":   "Launch TF2 automatically when TF2 BD is open",
        "autoMute": "Auto temp mute",
        "chatWarnings": "Chat message warnings for connecting cheaters",
        "allowInternet":    "Allow internet connectivity",
        "updates": {
            "Desc": "Automatic update checking",
            "disable":  "Disable automatic update chceks",
            "notify_stable":    "Notify only about stable releases",
            "notify_all":   "Notify about all updates"
        }
    },
    "About": {
        "Info": {
            "Header":   "Automatically detects and votekicks cheaters in TF2 casual.",
            "Desc": "This program is free, open source software licensed under the MIT license. Full\nlicense text for this program and its dependencies can be found in the licenses\nsubfolder next to this executable."
        },
        "Credits":  {
            "Title":    "Credits",
            "line_1":   "Code/concept by",
            "line_2":   "Artwork/icon by",
            "line_3":   "Documentation/moderation by"
        },
        "Sponsors": {
            "Title":    "Sponsors",
            "Desc": "Huge thanks to the people sponsoring this project via GitHub Sponsors:",
            "End":  "If you're feeling generous, you can make a small donation to help support my work."
        }
    },
    "GUI": {
        "Tab": {
            "Pause":    "Pause",
            "chatWarnigs": {
                "Title":    "Enable chat warnings",
                "Hover":    "Enables chat messages warnings about cheaters"
            },
            "autoVote": {
                "Title":    "Enable auto votekick",
                "Hover":    "Automatically run votes on cheaters"
            },
            "autoMark": {
                "Title":    "Enable auto-mark",
                "Hover":    "Automatically marks players matching the detection rules"
            },
            "showCMDs": {
                "Title":    "Show commands",
                "Hover":    "Prints out all game commands to the log"
            }
        },
        "Data": {
            "Time": "Time (Compensated):",
            "Blacklist":    "Blacklisted user count:",
            "Rule": "Rule count:",
            "Parsed":   "Parsed line count"
        },
        "Colours": {
            "self": "You",
            "connecting":   "Connecting",
            "teammate": "Friendly",
            "opposite": "Enemy",
            "idiot":    "Cheater",
            "susp": "Suspicious",
            "delfy":    "Exploiter",
            "not_humman":   "Racist"
        },
        "PlayerList": {
            "id":   "User ID",
            "player":   "Name",
            "stats_kills":  "Kills",
            "stats_deaths": "Deaths",
            "stats_time":   "Time",
            "info_ping":    "Latency",
            "info_id":  "SteamID"
        },
        "UserOptions":  {
            "copy_id":  "Copy SteamID",
            "goto": "Search on",
            "kick": "Vote kick",
            "mark": {
                "Title":    "Mark player as",
                "Cheater":  "Cheater",
                "Suspicious":   "Suspicious",
                "Exploiter":    "Exploiter",
                "Racist":   "Racist"
            }
        }
    }
}
lnx00 commented 4 years ago

I was bored so I translated this in german (even though this might not be the final lang file structure): https://gist.github.com/lnx00/9d807757a177af193a93d1b36a80739f

CrazyGunman2C4U commented 4 years ago

Nice translation. I've edited it very slightly.

Not sure about "connecting" though. "Verbinden" imo sounds weird as it loses its progressive form when used as noun and as a verb it sounds too much like a call to action. "Verbindungsaufbau" on the other hand might be too long...

PazerOP commented 4 years ago

Thanks for sharing these. I would recommend against putting more work into this for now though, since the layout/phrasing of the program may change significantly before support for other languages is implemented.

ghost commented 4 years ago

Gonna translate it to Spanish now, when it's ready, I'm going to send it via here

PabloDinella commented 4 years ago

Brazilian Portuguese:

{
    "Tab": {
        "File": {
            "Title":    "Arquivo",
            "Reload_players":   "Recarregar lista de jogadores/regras",
            "Reload_settings":  "Recarregar preferências",
            "Generate_debug":   "Gerar relatório de depuração",
            "Exit": "Sair"
        },
        "Settings": "Preferências",
        "Help": {
            "open_github":  "Abrir GitHub",
            "open_discord": "Abrir discord",
            "about":    "Sobre o TF2 Bot Detector"
        }
    },
    "Settings": {
        "Title":    "Preferências",
        "lang": "Idioma do TF2 Bot Detector",
        "steamDir": {
            "Title":    "Sobrescrever diretório da steam",
            "Auto": "Valor autodetectado: '{path}'",
            "Manual":   "Diretório da Steam"
        },
        "tfDir": {
            "Title":    "Sobrescrever diretório do TF2",
            "Auto": "Valor autodetectado: '{path}'",
            "Manual":   "diretório do TF2"
        },
        "steamID": {
            "Title":    "Sobrescrever SteamID",
            "Auto": "Valor autodetectado: {steamID}",
            "Manual":   "Meu SteamID"
        },
        "sleep":    "Suspender quando a janela não estiver ativa",
        "autoLaunch":   "Iniciar TF2 automaticamente quando o TF2 Bot Detector estiver aberto",
        "autoMute": "Mutar automaticamente (temporariamente)",
        "chatWarnings": "Avisar no chat sobre cheaters que estão conectando",
        "allowInternet":    "Permitir conexão com a internet",
        "updates": {
            "Desc": "Verificar atualizações automaticamente",
            "disable":  "Desligar verificação automática de atualizações",
            "notify_stable":    "Notificar apenas sobre versões estáveis",
            "notify_all":   "Notificar sobre todas as atualizações"
        }
    },
    "About": {
        "Info": {
            "Header":   "Detecta cheaters no TF2 casual e inicia votação para kickar automaticamente.",
            "Desc": "Este programa é livre, software de código aberto licenciado sob a licença MIT. A licença\ncompleta deste programa e suas dependências pode ser encontrada na subpasta 'licenses'\nadjacente a este executável."
        },
        "Credits":  {
            "Title":    "Créditos",
            "line_1":   "Código/conceito por",
            "line_2":   "Artes/ícones por",
            "line_3":   "Documentação/moderação por"
        },
        "Sponsors": {
            "Title":    "Patrocinadores",
            "Desc": "Agradecimentos às pessoas patrocinando este projeto via GitHub Sponsors:",
            "End":  "Se você está sentindo-se generoso, pode fazer uma pequena doação para ajudar a manter o meu trabalho."
        }
    },
    "GUI": {
        "Tab": {
            "Pause":    "Pausar",
            "chatWarnigs": {
                "Title":    "Ativar avisos no chat",
                "Hover":    "Ativa avisos sobre cheaters no chat do jogo"
            },
            "autoVote": {
                "Title":    "Ativar votação de kick automática",
                "Hover":    "Cria votação para kickar cheaters automaticamente"
            },
            "autoMark": {
                "Title":    "Ativar auto-marcação",
                "Hover":    "Marca jogadores automaticamente, de acordo com as regras de detecção"
            },
            "showCMDs": {
                "Title":    "Mostrar comandos",
                "Hover":    "Mostra todos os comandos do jogo no log"
            }
        },
        "Data": {
            "Time": "Tempo (Compensado):",
            "Blacklist":    "Quantidade de usuários na blacklist:",
            "Rule": "Quantidade de regras:",
            "Parsed":   "Quantidade de linhas processadas"
        },
        "Colours": {
            "self": "Você",
            "connecting":   "Conectando",
            "teammate": "Amigo",
            "opposite": "Inimigo",
            "idiot":    "Cheater",
            "susp": "Suspeito",
            "delfy":    "Exploiter",
            "not_humman":   "Racista"
        },
        "PlayerList": {
            "id":   "ID do usuário",
            "player":   "Nome",
            "stats_kills":  "Kills",
            "stats_deaths": "Mortes",
            "stats_time":   "Tempo",
            "info_ping":    "Latência",
            "info_id":  "SteamID"
        },
        "UserOptions":  {
            "copy_id":  "Copiar SteamID",
            "goto": "Busca",
            "kick": "Iniciar votação",
            "mark": {
                "Title":    "Marcar jogador como",
                "Cheater":  "Cheater",
                "Suspicious":   "Suspeito",
                "Exploiter":    "Exploiter",
                "Racist":   "Racista"
            }
        }
    }
}

Would be even more important to be able to translate the chat warnings though, so all the players in the match can understand (I play in Brazil) :)

Edit 2022-03-04: fixed the missing } as pointed by https://github.com/PazerOP/tf2_bot_detector/issues/148#issuecomment-1059556430

ghost commented 4 years ago

Spanish :

"Tab": {
    "File": {
        "Title":    "Archivo",
        "Reload_players":   "Refrescar lista de jugadores/reglas",
        "Reload_settings":  "Refrescar configuraciones",
        "Generate_debug":   "Generar reporte de depuración",
        "Exit": "Salir"
    },
    "Settings": "Configuraciones",
    "Help": {
        "open_github":  "Abrir Github",
        "open_discord": "Abrir Discord",
        "about":    "Acerca de TF2 Bot Detector"
    }
},
"Settings": {
    "Title":    "Configuraciones",
    "lang": "Idioma de TF2 Bot detector ",
    "steamDir": {
        "Title":    "Sobreescribir directorio de Steam",
        "Auto": "Valor detectado automaticamente: '{path}'",
        "Manual":   "Directorio de Steam"
    },
    "tfDir": {
        "Title":    "Sobreescribir directorio de TF2",
        "Auto": "Valor detectado automaticamente: '{path}",
        "Manual":   "Directorio de TF2"
    },
    "steamID": {
        "Title":    "Sobreescribir ID de Steam",
        "Auto": "Valor detectado automaticamente:: {steamID}",
        "Manual":   "Mi ID de Steam"
    },
    "sleep":    "Suspender en desenfoque",
    "autoLaunch":   "Abrir TF2 automáticamente cuando se abre TF2 Bot Detector",
    "autoMute": "Mutear temporalmente automáticamente",
    "chatWarnings": "Advertencia en el chat para hackers conectándose",
    "allowInternet":    "Permitir conectividad a internet",
    "updates": {
        "Desc": "Chequeo de actualizaciones automática",
        "disable":  "Desabilitar chequeos de actualizaciones automáticas",
        "notify_stable":    "Notificarme solo acerca de versiones estables",
        "notify_all":   "Notificarme acerca de todas las actualizaciones"
    }
},
"About": {
    "Info": {
        "Header":   "Automaticamente detectar y hacer votacion de expulsión a los hackers en partidas casuales de TF2.",
        "Desc": "Este programa es gratuito, software de código abierto licenciado bajo la licencia MIT . La\nliciencia para este programa y sus dependencias pueden \nser encontradas en la subcarpeta de licencias al lado del ejecutable."
    },
    "Credits":  {
        "Title":    "Créditos",
        "line_1":   "Código/concepto hecho por",
        "line_2":   "Arte/íconos hechos por",
        "line_3":   "Documentación/moderación hecha por"
    },
    "Sponsors": {
        "Title":    "Patrocinadores",
        "Desc": "Un agradecimiento gigante para la gente que ha patrocinado este projecto mediante Github Sponsors:",
        "End":  "Si te sientes generoso, puedes hacer una pequeña donación para ayudar al soporte de mi trabajo."
    }
},
"GUI": {
    "Tab": {
        "Pause":    "Pausa",
        "chatWarnigs": {
            "Title":    "Habilitar advertencias de chat",
            "Hover":    "Habilitar advertencias de chat acerca de hackers"
        },
        "autoVote": {
            "Title":    "Habilitar votación de expulsión automática",
            "Hover":    "Automáticamente hace votaciones para expulsar hackers"
        },
        "autoMark": {
            "Title":    "Habilitar marcado automático",
            "Hover":    "Automáticamente marca a los jugadores que coincidan con las reglas de detección"
        },
        "showCMDs": {
            "Title":    "Mostrar comandos",
            "Hover":    "Muestra todos los comandos del juego en un registro"
        }
    },
    "Data": {
        "Time": "Tiempo (Compensado):",
        "Blacklist":    "Contadór de los jugadores en la lista negra:",
        "Rule": "Contadór de las reglast:",
        "Parsed":   "Parsed line count"
    },
    "Colours": {
        "self": "Tú",
        "connecting":   "Conectando",
        "teammate": "Amistoso",
        "opposite": "Enemigo",
        "idiot":    "Hacker",
        "susp": "Sospechoso",
        "delfy":    "Exploiter",
        "not_humman":   "Racista"
    },
    "PlayerList": {
        "id":   "ID de Usuario",
        "player":   "Nombre",
        "stats_kills":  "Bajas",
        "stats_deaths": "Muertes",
        "stats_time":   "Tiempo",
        "info_ping":    "Latencia",
        "info_id":  "SteamID"
    },
    "UserOptions":  {
        "copy_id":  "Copiar SteamID",
        "goto": "Buscar en",
        "kick": "Votación de expulsión",
        "mark": {
            "Title":    "Marcar jugador como",
            "Cheater":  "   Hacker",
            "Suspicious":   "Sospechoso",
            "Exploiter":    "Exploiter",
            "Racist":   "Racista"
        }
    }
}

}

As PabloDinella said, it would be even more important to be able to translate the chat warnings though, so all the players in the match can understand (I play in chile servers)

Tiagoquix commented 2 years ago

"tfDir": { "Title": "Override tf directory", "Auto": "Autodetected value: '{path'", "Manual": "tf directory"

The "Auto" is wrong (path is missing a }). Because the base model is wrong, so are all the translated ones. Except for the Spanish translator, who figured it out and corrected it.

PabloDinella commented 2 years ago

"tfDir": { "Title": "Override tf directory", "Auto": "Autodetected value: '{path'", "Manual": "tf directory"

The "Auto" is wrong (path is missing a }). Because the base model is wrong, so are all the translated ones. Except for the Spanish translator, who figured it out and corrected it.

Fixed in the pt-br translation