diff --git a/.gitignore b/.gitignore
index 031afa5..df2424a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+dist_sgf
+
# additions
KataGoData
katrain/KataGo/KataGoData
diff --git a/CONTRIBUTIONS.md b/CONTRIBUTIONS.md
index f3a352a..ee68c50 100644
--- a/CONTRIBUTIONS.md
+++ b/CONTRIBUTIONS.md
@@ -62,6 +62,7 @@ Many thanks to the following contributors for translations.
* Russian: Dmitry Ivankov and Alexander Kiselev
* Simplified Chinese: Qing Mu with contributions from "Medwin" and Viktor Lin
* Japanese: "kaorahi"
+* Traditional Chinese: "Tony-Liou"
## Additional thanks to
diff --git a/README.md b/README.md
index 6b14c2f..a2320c0 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,8 @@
-
+
+
diff --git a/i18n.py b/i18n.py
index 9adf47b..76fe841 100644
--- a/i18n.py
+++ b/i18n.py
@@ -70,7 +70,7 @@ for lang in locales:
po[lang].append(copied_entry)
errors = True
else:
- print(f"MISSING IN DEFAULT AND {lang}", strings_to_langs[msgid])
+ print(f"MISSING IN DEFAULT AND {lang}", msgid)
errors = True
for msgid, lang_entries in strings_to_langs.items():
diff --git a/katrain/__main__.py b/katrain/__main__.py
index 80b60b9..6b554d8 100644
--- a/katrain/__main__.py
+++ b/katrain/__main__.py
@@ -292,7 +292,7 @@ class KaTrainGui(Screen, KaTrainBase):
self.play_mode.switch_ui_mode() # for new game, go to play, for loaded, analyze
self.board_gui.animating_pv = None
self.engine.on_new_game() # clear queries
- self.game = Game(self, self.engine, move_tree=move_tree, analyze_fast=analyze_fast, sgf_filename=sgf_filename)
+ self.game = Game(self, self.engine, move_tree=move_tree, analyze_fast=analyze_fast or not move_tree, sgf_filename=sgf_filename)
if move_tree:
for bw, player_info in self.players_info.items():
player_info.player_type = PLAYER_HUMAN
diff --git a/katrain/gui.kv b/katrain/gui.kv
index 79f9060..efa6a5f 100644
--- a/katrain/gui.kv
+++ b/katrain/gui.kv
@@ -1001,6 +1001,9 @@
LangButton:
icon: 'flags/flag-cn.png'
on_press: app.language = 'cn'
+ LangButton:
+ icon: 'flags/flag-tw.png'
+ on_press: app.language = 'tw'
LangButton:
icon: 'flags/flag-ko.png'
on_press: app.language = 'ko'
diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo
index 469ca4a..0fd991b 100644
Binary files a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po
index e6e997a..7efcc10 100644
--- a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po
@@ -322,11 +322,6 @@ msgstr ""
"AI的\n"
"显示选点/SGF评价"
-msgid "lock ai when playing"
-msgstr ""
-"对局模式中\n"
-"不允许最佳选点"
-
#. submit button
msgid "update teacher"
msgstr "更新指导棋设置"
@@ -383,12 +378,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "时间单位是秒"
-msgid "general:sgf_load"
-msgstr "加载SGF文件路径"
-
-msgid "general:sgf_save"
-msgstr "保存SGF文件路径"
-
msgid "general:anim_pv_time"
msgstr "动画中两手棋时间间隔"
diff --git a/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo
index 240981d..7f49482 100644
Binary files a/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/de/LC_MESSAGES/katrain.po b/katrain/i18n/locales/de/LC_MESSAGES/katrain.po
index cd7890c..a5f6760 100644
--- a/katrain/i18n/locales/de/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/de/LC_MESSAGES/katrain.po
@@ -329,11 +329,6 @@ msgstr ""
"Dots/SGF-Kommentare \n"
" für AI Spieler zeigen"
-msgid "lock ai when playing"
-msgstr ""
-"Beste Züge während \n"
-" Spiel deaktivieren"
-
#. submit button
msgid "update teacher"
msgstr "Feedbackeinstellungen aktualisieren"
@@ -393,12 +388,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "Zeit in Sekunden"
-msgid "general:sgf_load"
-msgstr "Pfad um SGF-Dateien zu laden"
-
-msgid "general:sgf_save"
-msgstr "Pfad um SGF-Dateien zu speichern"
-
msgid "general:anim_pv_time"
msgstr "Zeit zwischen Zügen, wenn Sequenz animiert wird"
diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/en/LC_MESSAGES/katrain.mo
index c0677f0..fd345d0 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 20f1d6e..a6fccfa 100644
--- a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po
@@ -450,12 +450,6 @@ msgstr ""
msgid "cache analysis to sgf"
msgstr "Cache analysis in SGF"
-#. removed as an option / can ignore
-msgid "lock ai when playing"
-msgstr ""
-"Disable top moves\n"
-" while in play mode"
-
#. submit button
msgid "update teacher"
msgstr "Update Feedback Settings"
@@ -523,13 +517,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "Time in seconds"
-#. no longer used, can ignore
-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"
diff --git a/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo
index 5baaa1e..5d316cc 100644
Binary files a/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/es/LC_MESSAGES/katrain.po b/katrain/i18n/locales/es/LC_MESSAGES/katrain.po
index cff7ace..c158402 100644
--- a/katrain/i18n/locales/es/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/es/LC_MESSAGES/katrain.po
@@ -333,11 +333,6 @@ msgstr ""
"Mostrar puntos/comentarios\n"
" para motores de IA"
-msgid "lock ai when playing"
-msgstr ""
-"Deshabilitar jugadas superiores top moves\n"
-" en modo juego"
-
#. submit button
msgid "update teacher"
msgstr "Actualizar conf"
@@ -398,12 +393,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "Tiempo en segundos"
-msgid "general:sgf_load"
-msgstr "Ruta para cargar los archivos SGF"
-
-msgid "general:sgf_save"
-msgstr "Ruta para guardar los archivos SGF"
-
msgid "general:anim_pv_time"
msgstr "Tiempo entre juagadas animando una secuencia"
diff --git a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo
index a930151..88e84e7 100644
Binary files a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.mo 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
index 81694f1..48e7751 100644
--- a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po
@@ -344,11 +344,6 @@ msgstr "Dernier(s) coup(s) à marquer :"
msgid "show ai dots"
msgstr "Étudier les coups du joueur artificiel"
-msgid "lock ai when playing"
-msgstr ""
-"Ne pas recommander de coups \n"
-"en mode “Partie”"
-
#. submit button
msgid "update teacher"
msgstr "Mettre à jour"
@@ -428,16 +423,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "En secondes"
-msgid "general:sgf_load"
-msgstr ""
-"Chemin d'accès du \n"
-"fichier SGF à analyser"
-
-msgid "general:sgf_save"
-msgstr ""
-"Chemin d'accès du \n"
-"fichier SGF à enregistrer"
-
msgid "general:anim_pv_time"
msgstr ""
"Durée entre chaque coup \n"
diff --git a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.mo
index 928ba4b..fb0bd4a 100644
Binary files a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po
index 4ea0d5c..3cfeee1 100644
--- a/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/jp/LC_MESSAGES/katrain.po
@@ -354,12 +354,6 @@ msgstr ""
"AIの手にもドットや\n"
"SGFコメントをつける"
-#. removed as an option / can ignore
-msgid "lock ai when playing"
-msgstr ""
-"Disable top moves\n"
-" while in play mode"
-
#. submit button
msgid "update teacher"
msgstr "指導設定を更新"
@@ -419,13 +413,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "秒数"
-#. no longer used, can ignore
-msgid "general:sgf_load"
-msgstr "Path for loading SGF files"
-
-msgid "general:sgf_save"
-msgstr "SGFファイルの保存場所"
-
msgid "general:anim_pv_time"
msgstr "手順アニメーションの一手毎の時間"
diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo
index 0ea1b77..57ad9e8 100644
Binary files a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po
index 7ea4495..ee5e3ab 100644
--- a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.po
@@ -326,11 +326,6 @@ msgstr ""
"인공지능 대국자에 대해서도\n"
"평가를 색으로 표시"
-msgid "lock ai when playing"
-msgstr ""
-"대국 중에\n"
-"후보수 분석하지 않기"
-
#. submit button
msgid "update teacher"
msgstr "피드백 설정 갱신"
@@ -392,12 +387,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "시간(초)"
-msgid "general:sgf_load"
-msgstr "SGF 파일을 불러올 경로"
-
-msgid "general:sgf_save"
-msgstr "SGF 파일을 저장할 경로"
-
msgid "general:anim_pv_time"
msgstr "수순을 보여줄 때 수 사이의 시간"
diff --git a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo
index b583b4c..1aebf6f 100644
Binary files a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo and b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po
index 2a3e83f..7cae85e 100644
--- a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po
@@ -352,12 +352,6 @@ msgstr ""
"Показать точки и SGF комментарии\n"
" для ИИ игроков"
-#. removed as an option / can ignore
-msgid "lock ai when playing"
-msgstr ""
-"Отключить лучшие ходы\n"
-" во время игры"
-
#. submit button
msgid "update teacher"
msgstr "Сохранить настройки анализа"
@@ -417,13 +411,6 @@ msgstr ""
msgid "engine:time:hint"
msgstr "Время в секундах"
-#. no longer used, can ignore
-msgid "general:sgf_load"
-msgstr "Путь для загрузки файлов SGF"
-
-msgid "general:sgf_save"
-msgstr "Путь для сохранения файлов SGF"
-
msgid "general:anim_pv_time"
msgstr "Задержка между ходами в анимации"
diff --git a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.mo
new file mode 100644
index 0000000..8ef53ec
Binary files /dev/null and b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.mo differ
diff --git a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po
index 97a1d4a..3dd156e 100644
--- a/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po
+++ b/katrain/i18n/locales/tw/LC_MESSAGES/katrain.po
@@ -167,14 +167,11 @@ msgstr "認輸"
#. Shown when a move is undone in teaching mode.
msgid "teaching undo message"
msgstr ""
-"復原第 {move} 手損失了 {points_lost:.1f} 目。請再試一次。"
-"若要查看提示,將游標停於該手以查看預期的反制手段;"
-"或查看預估的領地來看可能損失目數的棋盤區域。"
+"復原第 {move} 手損失了 {points_lost:.1f} "
+"目。請再試一次。若要查看提示,將游標停於該手以查看預期的反制手段;或查看預估的領地來看可能損失目數的棋盤區域。"
msgid "ai-ponder"
-msgstr ""
-"AI引擎狀態指示燈,從綠色(閒置)變為橘色(處理中)。當引擎崩潰或無法啟動時,"
-"會變為紅色。"
+msgstr "AI引擎狀態指示燈,從綠色(閒置)變為橘色(處理中)。當引擎崩潰或無法啟動時,會變為紅色。"
#. undo button on the right
msgid "undo-button-text"
@@ -445,11 +442,6 @@ msgstr ""
msgid "cache analysis to sgf"
msgstr "儲存分析到SGF中"
-msgid "lock ai when playing"
-msgstr ""
-"在對局模式中\n"
-"停用最佳選點"
-
#. submit button
msgid "update teacher"
msgstr "更新指導棋設定"
@@ -512,24 +504,20 @@ msgstr ""
msgid "engine:time:hint"
msgstr "時間單位是秒"
-#. no longer used, can ignore
-# msgid "general:sgf_load"
-# msgstr "Path for loading SGF files"
+msgid "general:anim_pv_time"
+msgstr "動畫中,兩手棋的時間間隔"
-# msgid "general:sgf_save"
-# msgstr "Path for saving SGF files"
+msgid "general:debug_level:hint"
+msgstr "設為1時,回報錯誤"
-# msgid "general:anim_pv_time"
-# msgstr "Time between moves when animating a sequence"
+msgid "general:debug_level"
+msgstr "Console中的偵錯層級"
-# msgid "general:debug_level"
-# msgstr "Debug level in the console"
+msgid "katago settings"
+msgstr "KataGo設定"
-# msgid "general:debug_level:hint"
-# msgstr "Set to 1 when reporting errors"
-
-# msgid "update settings"
-# msgstr "Update Settings"
+msgid "update settings"
+msgstr "更新設定"
# ai settings from here
msgid "ai settings"
@@ -564,9 +552,8 @@ msgstr "KataGo執行檔 {exe} 不存在,請檢查一般設定。"
msgid "Kata exe not found in path"
msgstr ""
-"在 PATH 中找不到KataGo執行檔 `{exe}`,請檢查環境變數"
-"或在一般設定中使用完整路徑代替。若是在 MacOS 上,請先閱讀使用手冊中的"
-"如何使用brew安裝KataGo。"
+"在 PATH 中找不到KataGo執行檔 `{exe}`,請檢查環境變數或在一般設定中使用完整路徑代替。若是在 MacOS "
+"上,請先閱讀使用手冊中的如何使用brew安裝KataGo。"
msgid "Kata model not found"
msgstr "KataGo模型 {model} 不存在,請檢查一般設定。"
@@ -581,9 +568,7 @@ msgid "Engine died unexpectedly"
msgstr "引擎意外崩潰沒有輸出,可能為記憶體不足導致: {error}"
msgid "Engine missing DLL"
-msgstr ""
-"遺失DLL因此無法啟動KataGo。請參考KataGo文件中的所需事項,"
-"或嘗試單獨啟動KataGo來取得詳細資訊。"
+msgstr "遺失DLL因此無法啟動KataGo。請參考KataGo文件中的所需事項,或嘗試單獨啟動KataGo來取得詳細資訊。"
#. AI names, help etc
msgid "strength:kyu"
@@ -597,8 +582,7 @@ msgstr "KataGo"
msgid "aihelp:default"
msgstr ""
-"最強的KataGo AI。其棋力由在一般設定中 `引擎` 區塊中的 `最大走訪數` 和 "
-"`模型` 以及引擎組態文件決定。此處沒有可供調整的選項。"
+"最強的KataGo AI。其棋力由在一般設定中 `引擎` 區塊中的 `最大走訪數` 和 `模型` 以及引擎組態文件決定。此處沒有可供調整的選項。"
#. ai which handles handicap games better
msgid "ai:handicap"
@@ -606,20 +590,18 @@ msgstr "Kata讓子棋"
msgid "aihelp:handicap"
msgstr ""
-"KataGo 對讓子棋做了最佳化的對局版本。以黑棋的觀點來看,KataGo 中的 `pda` 設定對應到的"
-"是 `playoutDoublingAdvantage`。當被設定為 `自動` 時,KaTrain 將會找自動找到適合的值。"
+"KataGo 對讓子棋做了最佳化的對局版本。以黑棋的觀點來看,KataGo 中的 `pda` 設定對應到的是 "
+"`playoutDoublingAdvantage`。當被設定為 `自動` 時,KaTrain 將會找自動找到適合的值。"
msgid "ai:simple"
msgstr "單純模式"
msgid "aihelp:simple"
msgstr ""
-"下法會導致盤面狀態簡單化。每步在損失最多 '最大目數損失' 目和最少 '最少走訪數'中,"
-"較傾向於損失較少目數、安定自身領地(搭配 importance settled_weight)、突破對方領地"
-"(importance settled_weight * opponent_fac)、避免脫先(5路以上,importance "
-"tenuki_penalty)和避免碰(importance attachment_penalty)。"
-"權重可以是負數使對局複雜化,而寬根雜訊(在一般設定中)的使用,可以以棋力強度作為代價"
-",加強風格。"
+"下法會導致盤面狀態簡單化。每步在損失最多 '最大目數損失' 目和最少 '最少走訪數'中,較傾向於損失較少目數、安定自身領地(搭配 importance "
+"settled_weight)、突破對方領地(importance settled_weight * "
+"opponent_fac)、避免脫先(5路以上,importance tenuki_penalty)和避免碰(importance "
+"attachment_penalty)。權重可以是負數使對局複雜化,而寬根雜訊(在一般設定中)的使用,可以以棋力強度作為代價,加強風格。"
msgid "ai:jigo"
msgstr "Kata控目"
@@ -637,66 +619,61 @@ msgid "ai:policy"
msgstr "直覺"
msgid "aihelp:policy"
-msgstr ""
-"按最佳直覺行棋,沒有任何計算。棋力主要由引擎設定中的 `模型` 決定。"
-"布局落點設定影響布局中隨機落點的數量。"
+msgstr "按最佳直覺行棋,沒有任何計算。棋力主要由引擎設定中的 `模型` 決定。布局落點設定影響布局中隨機落點的數量。"
msgid "ai:p:weighted"
msgstr "直覺權重"
msgid "aihelp:p:weighted"
msgstr ""
-"按直覺機率行棋, `weaken_fac` 影響較弱選點的多寡。當機率極低時,它的下棋風格變得很像直覺AI。"
-" `pick_override` 決定在選擇最佳選點時的無隨機性;而 `lower_bound` 決定了允許的直覺值的下限。"
+"按直覺機率行棋, `weaken_fac` 影響較弱選點的多寡。當機率極低時,它的下棋風格變得很像直覺AI。 `pick_override` "
+"決定在選擇最佳選點時的無隨機性;而 `lower_bound` 決定了允許的直覺值的下限。"
msgid "ai:p:pick"
msgstr "盲選直覺"
msgid "aihelp:p:pick"
msgstr ""
-"隨機選擇 `pick_n + pick_frac * ` 並採用最佳的一手。 "
-"當 `pick_frac=1` 時,下棋風格像是直覺AI。 如果直覺值高於 `pick_override`,則採用"
-"最佳的一手以避免明顯錯誤。"
+"隨機選擇 `pick_n + pick_frac * ` 並採用最佳的一手。 當 "
+"`pick_frac=1` 時,下棋風格像是直覺AI。 如果直覺值高於 `pick_override`,則採用最佳的一手以避免明顯錯誤。"
msgid "ai:p:local"
msgstr "局部模式"
msgid "aihelp:p:local"
msgstr ""
-"使加權 `pick_n + pick_frac * ` 接近最後一手並選出最好的一手。"
-"如果直覺值大於 `pick_override`則採用最佳的一手以避免明顯錯誤。"
+"使加權 `pick_n + pick_frac * ` 接近最後一手並選出最好的一手。如果直覺值大於 "
+"`pick_override`則採用最佳的一手以避免明顯錯誤。"
msgid "ai:p:tenuki"
msgstr "脫先模式"
msgid "aihelp:p:tenuki"
msgstr ""
-"使加權 `pick_n + pick_frac * ` 遠離最後一手並選出最好的一手。如果"
-"直覺值大於 `pick_override` 則採用最佳的一手以避免明顯錯誤。更高的 `stddev` 使其偏離更多。"
+"使加權 `pick_n + pick_frac * ` 遠離最後一手並選出最好的一手。如果直覺值大於 "
+"`pick_override` 則採用最佳的一手以避免明顯錯誤。更高的 `stddev` 使其偏離更多。"
msgid "ai:p:influence"
msgstr "取勢模式"
msgid "aihelp:p:influence"
msgstr ""
-"在偏移值高於 `threshold` 線的點中選出最好的一手。增加 `line_weight` 以加重"
-"對靠近邊緣選點的懲罰。在 '終局' 部分結束後停止。"
+"在偏移值高於 `threshold` 線的點中選出最好的一手。增加 `line_weight` 以加重對靠近邊緣選點的懲罰。在 '終局' "
+"部分結束後停止。"
msgid "ai:p:territory"
msgstr "取地模式"
msgid "aihelp:p:territory"
msgstr ""
-"在偏移值低於 `threshold` 線的點中選出最好的一手。增加 `line_weight` 以加重"
-"對靠近中央選點的懲罰。在 '終局' 部分結束後停止。"
+"在偏移值低於 `threshold` 線的點中選出最好的一手。增加 `line_weight` 以加重對靠近中央選點的懲罰。在 '終局' "
+"部分結束後停止。"
msgid "ai:p:rank"
msgstr "可變棋力"
msgid "aihelp:p:rank"
-msgstr ""
-"隨機選擇有限數量的合法選點,並下出最佳的一手。愈強的設定有愈多的選擇來選出最佳的一手。"
-"因為沒有0級/段,因此 3段 = -2級。"
+msgstr "隨機選擇有限數量的合法選點,並下出最佳的一手。愈強的設定有愈多的選擇來選出最佳的一手。因為沒有0級/段,因此 3段 = -2級。"
#. in AI settings
msgid "estimated strength"
@@ -801,4 +778,4 @@ msgstr "插入完畢,複製 {num_copied} 手棋。"
#. when a user tries to go to a different move/node while in insert
#. mode
msgid "finish inserting before navigating"
-msgstr "此功能在插入模式無法使用,按 i 結束插入。"
\ No newline at end of file
+msgstr "此功能在插入模式無法使用,按 i 結束插入。"
diff --git a/katrain/img/flags/flag-tw.png b/katrain/img/flags/flag-tw.png
new file mode 100644
index 0000000..970e3e3
Binary files /dev/null and b/katrain/img/flags/flag-tw.png differ