diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a5a21bb..4427d98 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -4,10 +4,9 @@ Sander Land Many thanks to these additional authors: Matthew Allred ("Kameone") for design of the v1.1 UI and providing MacOS installation instructions. "isty2e" for Korean translation. - +"Dontbtme" for detailed feedback and early testing of v1.0, and French translation. Additional thanks to: -"Dontbtme" for detailed feedback and early testing of v1.0. "Seventeen" for explanatory youtube videos. diff --git a/katrain/__main__.py b/katrain/__main__.py index 41f4a08..633ac6a 100644 --- a/katrain/__main__.py +++ b/katrain/__main__.py @@ -421,9 +421,11 @@ class KaTrainApp(MDApp): def on_language(self, _instance, language): self.gui.log(f"Switching language to {language}", OUTPUT_INFO) - self.gui._config["general"]["lang"] = language - self.gui.save_config() i18n.switch_lang(language) + if language!="haha": + self.gui._config["general"]["lang"] = language + self.gui.save_config() + def webbrowser(self, site_key): WEBSITES = {"homepage": HOMEPAGE, "support": HOMEPAGE + "#support"} diff --git a/katrain/gui.kv b/katrain/gui.kv index 121e8fc..be98338 100644 --- a/katrain/gui.kv +++ b/katrain/gui.kv @@ -936,6 +936,9 @@ LangButton: icon: 'img/flaticon/flag-uk.png' on_press: app.language = 'en' + LangButton: + icon: 'img/flaticon/flag-fr.png' + on_press: app.language = 'fr' LangButton: icon: 'img/flaticon/flag-ko.png' on_press: app.language = 'ko' diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo index e55fc78..6a8cdba 100644 Binary files a/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo differ diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po index 8f0b62c..a834d11 100644 --- a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po @@ -305,9 +305,6 @@ msgstr "Edit Teacher Settings" msgid "point loss threshold" msgstr "Point loss greater than" -msgid "num undos" -msgstr "Number of undos per mistake" - msgid "num undos" msgstr "Number of undos" diff --git a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo new file mode 100644 index 0000000..14f7c7a Binary files /dev/null and b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo differ diff --git a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po new file mode 100644 index 0000000..9c461a6 --- /dev/null +++ b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po @@ -0,0 +1,560 @@ +# KaTrain localization file +msgid "" +msgstr "" +"Language: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. main hamburger menu +msgid "menu:playersetup" +msgstr "Paramètres de jeu" + +msgid "menu:newgame" +msgstr "Nouvelle partie" + +msgid "menu:save" +msgstr "Enregistrer" + +msgid "menu:load" +msgstr "Charger une partie" + +msgid "menu:settings" +msgstr "Paramètres généraux" + +msgid "menu:clocksettings" +msgstr "Temps de jeu" + +msgid "menu:teachsettings" +msgstr "Paramètres d’étude" + +msgid "menu:aisettings" +msgstr "Paramètres d’IA" + +msgid "menu:lang" +msgstr "Langue" + +msgid "menu:support" +msgstr "Contribution" + +msgid "menu:manual" +msgstr "Manuel" + +#. player options in the setup and on the right +msgid "player:type" +msgstr "Joueur" + +msgid "player:human" +msgstr "Humain" + +msgid "player:ai" +msgstr "IA" + +msgid "aistrategy" +msgstr "Style de jeu" + +msgid "gametype" +msgstr "Mode de partie" + +msgid "game:normal" +msgstr "Normal" + +msgid "game:teach" +msgstr "Pédagogique" + +#. buttons at the top - should all include a line break +msgid "analysis:nextmoves" +msgstr "" +"Coups\n" +"suivants" + +msgid "analysis:dots" +msgstr "" +"Marquer\n" +"les pierres" + +msgid "analysis:topmoves" +msgstr "" +"Coups\n" +"prioritaires" + +msgid "analysis:policy" +msgstr "" +"Penchants\n" +"spontanés" + +msgid "analysis:territory" +msgstr "" +"Prévisions\n" +"territoriales" + +#. analysis menu items +msgid "analysis:extra" +msgstr "Analyser davantage" + +msgid "analysis:equalize" +msgstr "Égaliser l’analyse des coups potentiels" + +msgid "analysis:sweep" +msgstr "Analyser rapidement tous les coups" + +msgid "analysis:aimove" +msgstr "Jouer le coup de l’IA" + +#. right panel buttons and below board +msgid "pass-button-text" +msgstr "Passer" + +msgid "ai-ponder" +msgstr "" +"Le statut du moteur de jeu est indiqué par la couleur verte (en " +"veille),orange (“en cours de tâche”) ou rouge (inopérant)" + +#. undo button on the right +msgid "undo-button-text" +msgstr "Annuler" + +#. tabs and labels on the right panel +msgid "tab:score" +msgstr "Score" + +msgid "tab:winrate" +msgstr "Pronostic" + +msgid "tab:points" +msgstr "Pertes" + +msgid "tab:info" +msgstr "Données" + +msgid "tab:notes" +msgstr "Note" + +msgid "closedlabel:scoregraph" +msgstr "Graphes" + +#. on the graph +msgid "Jigo" +msgstr "Jigo" + +msgid "closedlabel:movestats" +msgstr "Évaluation" + +msgid "closedlabel:info¬es" +msgstr "Commentaires" + +#. on the board after passing once/twice +msgid "board-pass" +msgstr "passer" + +msgid "board-game-end" +msgstr "" +"Fin de\n" +"partie" + +#. Select mode +msgid "btn:Play" +msgstr "Jouer" + +msgid "btn:Analysis" +msgstr "Analyse" + +msgid "btn:Analyze" +msgstr "Analyser" + +msgid "stats:winrate" +msgstr "Pronostic " + +msgid "stats:score" +msgstr "Estimation du score" + +msgid "stats:pointslost" +msgstr "Points perdus" + +#. better than expected best move +msgid "stats:pointsgained" +msgstr "Points gagnés" + +#. SGF and move comment messages +msgid "SGF start message" +msgstr "" +"Les coup préférés de KataGo sont marqué d’un X. En comparaison, ceux perdant" +" moins de 0.5 points sont marqués d’un carré" + +msgid "Info:score" +msgstr "Score : {score}" + +msgid "Info:winrate" +msgstr "Pronostic : {winrate}" + +msgid "Info:point loss" +msgstr "Estimation des points perdus: {points_lost:.1f}" + +#. as in 'Move 125: B5' +msgid "move" +msgstr "Coup {number}" + +msgid "Info:top move" +msgstr "Le coup attendu était {top_move} ({score})." + +msgid "Info:best move" +msgstr "Ce coup était jugé le meilleur." + +msgid "Info:PV" +msgstr "Séquence attendue : {pv}" + +msgid "Info:policy rank" +msgstr "" +"Ce coup était classé le n°{rank} des penchants spontanés " +"({probability:.2%})." + +msgid "Info:policy best" +msgstr "Le premier penchant spontané était {move} ({probability:.1%})." + +msgid "Info:teaching undo" +msgstr "" +"Ce coup ayant été joué en mode pédagogique, il a été annulé automatiquement." + +msgid "Info:undo predicted PV" +msgstr "Continuation attendue : {pv}" + +msgid "Info:AI thoughts" +msgstr "Raisonnement de l’IA : {thoughts}" + +msgid "No analysis available" +msgstr "Pas d’analyse disponible" + +msgid "Analyzing move..." +msgstr "Analyse en cours..." + +msgid "SGF Notes Hint" +msgstr "Rédigez une note SGF concernant la position en cours." + +# sgf load popup +msgid "load sgf title" +msgstr "Charger le fichier SGF à analyser" + +msgid "load sgf fast analysis" +msgstr "Analyse rapide" + +msgid "load sgf rewind" +msgstr "Reprendre au début" + +# timer settings from here +msgid "timer settings" +msgstr "Paramètres de byo-yomi" + +msgid "byoyomi length" +msgstr "Secondes par période" + +msgid "byoyomi periods" +msgstr "Nombre de périodes" + +#. submit button +msgid "update timer" +msgstr "Confirmer" + +# new game settings from here +msgid "New Game title" +msgstr "Nouvelle partie" + +msgid "board size" +msgstr "Dimensions" + +msgid "handicap" +msgstr "Handicap" + +msgid "komi" +msgstr "Komi" + +msgid "ruleset" +msgstr "Règles" + +#. ruleset names +msgid "japanese" +msgstr "Japonaises" + +msgid "chinese" +msgstr "Chinoises" + +msgid "korean" +msgstr "Coréennes" + +msgid "aga" +msgstr "AGA" + +msgid "clear cache" +msgstr "Vider le cache" + +#. clear cache help +msgid "avoids replaying" +msgstr "" +"Évite de rejouer\n" +"des parties identiques" + +#. hints on new game +msgid "non square board hint" +msgstr "Noter x:y (p. ex. 19:9) pour les formes non-carrées" + +#. submit new game +msgid "new game" +msgstr "Commencer la partie" + +# teacher settings from here +msgid "teacher settings" +msgstr "Champ d’étude" + +msgid "point loss threshold" +msgstr "Perte de points supérieure à" + +msgid "num undos" +msgstr "Essais supplémentaires" + +msgid "dot color" +msgstr "Couleurs" + +msgid "show dots" +msgstr "Pierres marquées" + +msgid "save dots" +msgstr "Données sauvegardées" + +msgid "show last n dots" +msgstr "" +"Marquer les \n" +"derniers coups" + +msgid "show ai dots" +msgstr "" +"Marquer/commenter \n" +"les coups joués par l’IA" + +msgid "lock ai when playing" +msgstr "" +"Empêcher d’analyser \n" +"en mode “Jouer”" + +#. submit button +msgid "update teacher" +msgstr "Mettre à jour le champ d’étude" + +# main config settings +msgid "restarting engine" +msgstr "Restarting Engine after Settings Change." + +# title +msgid "general settings title" +msgstr "Paramètres généraux" + +msgid "file not found" +msgstr "Le chemin d’accès est introuvable" + +msgid "general settings" +msgstr "Paramètres généraux" + +msgid "engine settings" +msgstr "KataGo Engine Settings" + +msgid "engine:katago" +msgstr "Path to KataGo executable" + +msgid "engine:katago:hint" +msgstr "Leave blank to use included executable" + +msgid "engine:model" +msgstr "Path to KataGo model file" + +msgid "engine:config" +msgstr "Path to KataGo config file" + +msgid "engine:config" +msgstr "Path to KataGo config file" + +msgid "engine:max_visits" +msgstr "Maximum number of visits in analysis" + +msgid "engine:fast_visits" +msgstr "Maximum number of visits in fast analysis" + +msgid "engine:max_time" +msgstr "Maximum time for analysis" + +msgid "engine:wide_root_noise" +msgstr "Wide root noise (increases variety of moves considered)" + +msgid "engine:wide_root_noise:hint" +msgstr "" +"Use 0.02-0.1 to show\n" +"more possible moves" + +msgid "engine:time:hint" +msgstr "Time in seconds" + +msgid "general:sgf_load" +msgstr "Path for loading SGF files" + +msgid "general:sgf_save" +msgstr "Path for saving SGF files" + +msgid "general:anim_pv_time" +msgstr "Time between moves when animating a sequence" + +msgid "general:debug_level" +msgstr "Debug level in the console" + +msgid "general:debug_level:hint" +msgstr "Set to 1 when reporting errors" + +msgid "update settings" +msgstr "Update Settings" + +# ai settings from here +msgid "ai settings" +msgstr "Advanced AI Settings" + +msgid "Select AI" +msgstr "Select AI strategy to configure" + +msgid "update ai settings" +msgstr "Update AI Settings" + +#. misc errors and info messages +msgid "sgf written" +msgstr "SGF with analysis written to {file_name}" + +msgid "wait-before-equalize" +msgstr "Wait for initial analysis to complete before requesting a refinement." + +msgid "Copied SGF to clipboard." +msgstr "Copied SGF to clipboard." + +msgid "Failed to import from clipboard" +msgstr "" +"Failed to import game from clipboard: {error}\n" +"Clipboard contents: {contents}..." + +msgid "Failed to load SGF" +msgstr "Failed to load SGF. Parse Error: {error}" + +msgid "Starting default Kata failed" +msgstr "" +"Starting KataGo with command '{command}' failed with error {error}. If on " +"MacOS, see the manual on how to use brew to install katago first, and add it" +" to your path or 'engine/katago' setting." + +msgid "Starting Kata failed" +msgstr "" +"Starting KataGo with command '{command}' failed with error {error}. Please " +"make sure the 'katago' value under 'engine' in settings points to the " +"correct KataGo executable." + +msgid "Engine died unexpectedly" +msgstr "" +"Engine died unexpectedly without sending output, possibly due to out of " +"memory: {error}" + +#. AI names, help etc +msgid "strength:kyu" +msgstr "k" + +msgid "strength:dan" +msgstr "d" + +msgid "ai:default" +msgstr "KataGo" + +msgid "aihelp:default" +msgstr "" +"Full strength KataGo AI. Strength is affected by `max_visits` and `model` " +"in the general settings `engine` section and engine configuration file. No " +"options are available here." + +msgid "ai:jigo" +msgstr "KataJigo" + +msgid "aihelp:jigo" +msgstr "" +"Will try to win by a set amount of points (default 0.5), without further " +"restrictions." + +msgid "ai:jigo" +msgstr "KataJigo" + +msgid "aihelp:jigo" +msgstr "" +"Will try to win by a set amount of points (default 0.5), without further " +"restrictions." + +msgid "ai:scoreloss" +msgstr "Score Loss" + +msgid "aihelp:scoreloss" +msgstr "" +"Plays moves that lead to more points lost with lower probability. Likely to " +"play more varied/weaker with higher visits settings." + +msgid "ai:policy" +msgstr "Policy" + +msgid "aihelp:policy" +msgstr "" +"Plays the top move from the policy network, without any reading. Strength is" +" mainly affected by `model` in engine settings. The opening moves setting " +"affects how many moves in the opening are more random." + +msgid "ai:p:weighted" +msgstr "Policy Weighted" + +msgid "aihelp:p:weighted" +msgstr "" +"Plays moves according to policy probability, with `weaken_fac` influencing " +"how much more likely weaker moves are played. A high negative value plays " +"like the `Policy` AI.`pick_override` determines when top move is chosen " +"without randomness, and `lower_bound` determines the lower bound policy " +"value that is allowed." + +msgid "ai:p:pick" +msgstr "Blinded Policy" + +msgid "aihelp:p:pick" +msgstr "" +"Picks `pick_n + pick_frac * ` at random and plays the" +" best one. For `pick_frac=1` plays like the `Policy` AI. Plays top move if " +"policy value is above `pick_override` to avoid obvious mistakes." + +msgid "ai:p:local" +msgstr "Local Style" + +msgid "aihelp:p:local" +msgstr "" +"Picks `pick_n + pick_frac * ` weighted towards the " +"last move and plays the best one. Plays top move if policy value is above " +"`pick_override` to avoid obvious mistakes." + +msgid "ai:p:tenuki" +msgstr "Tenuki Style" + +msgid "aihelp:p:tenuki" +msgstr "" +"Picks `pick_n + pick_frac * ` weighted away from the " +"last move and plays the best one. Plays top move if policy value is above " +"`pick_override` to avoid obvious mistakes. A higher `stddev` makes it play " +"further away." + +msgid "ai:p:influence" +msgstr "Influential Style" + +msgid "aihelp:p:influence" +msgstr "" +"Picks moves biased above the `threshold` line and plays the best " +"one.Increase `line_weight` to penalize moves near the edge more. Stops " +"strategy after the 'endgame' fraction of the board is filled." + +msgid "ai:p:territory" +msgstr "Territorial Style" + +msgid "aihelp:p:territory" +msgstr "" +"Picks moves biased below the `threshold` line and plays the best " +"one.Increase `line_weight` to penalize moves near the center more. Stops " +"strategy after the 'endgame' fraction of the board is filled." diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo index 331d095..46ff96a 100644 Binary files a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo differ