Merge pull request #136 from sanderland/v1.3.2

V1.3.2
This commit is contained in:
sanderland authored and GitHub committed 2020-07-14 19:52:15 +02:00
commit ce2e6e3cd9
28 files changed
+752 -23

No files matched your search

+1
View File
@@ -60,6 +60,7 @@ Many thanks to the following contributors for translations.
* Spanish: Sergio Villegas ("serpiente") with contributions from the Spanish OGS community
* Russian: Dmitry Ivankov and Alexander Kiselev
* Simplified Chinese: Qing Mu with contributions from "Medwin"
* Japanese: "kaorahi"
## Additional thanks to
+1 -1
View File
@@ -4,7 +4,7 @@ This repository includes:
For on related licenses for these binaries and libraries see https://github.com/lightvector/KataGo
2. Icons from www.flaticon.com, used with permission with the following attributions:
- Equalize icon: derived from work by bqlqn from www.flaticon.com
- Equalize icon and Thrash Icon: derived from work by bqlqn from www.flaticon.com
- Other Menu icons and Flag icons: derived from work by Freepik from www.flaticon.com
+4 -4
View File
@@ -29,10 +29,10 @@
<a href="https://translate.google.com/translate?sl=en&tl=fr&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="French" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-fr.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=es&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Spanish" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-es.png" width=50></a>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://translate.google.com/translate?sl=en&tl=ko&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Korean" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-ko.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=zh-CN&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Chinese" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-cn.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=ru&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Russian" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-ru.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=zh-CN&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Chinese" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-cn.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=ko&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Korean" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-ko.png" width=50></a>
<a href="https://translate.google.com/translate?sl=en&tl=ja&u=https%3A%2F%2Fgithub.com%2Fsanderland%2Fkatrain%2Fblob%2Fmaster%2FREADME.md"><img alt="Japanese" src="https://github.com/sanderland/katrain/blob/master/katrain/img/flaticon/flag-jp.png" width=50></a>
</td>
</table>
@@ -190,7 +190,7 @@ In addition to shortcuts mentioned above and those shown in the main menu:
## <a name="support"></a> Support / Contribute
[![GitHub issues](https://img.shields.io/github/issues/sanderland/katrain)](https://github.com/sanderland/katrain/issues)
[![Contributors](https://img.shields.io/static/v1?label=contributors&message=16&color=dcb424)](CONTRIBUTIONS.md)
[![Contributors](https://img.shields.io/static/v1?label=contributors&message=17&color=dcb424)](CONTRIBUTIONS.md)
[![Liberapay patrons](https://img.shields.io/liberapay/patrons/sanderbaduk)](https://liberapay.com/sanderbaduk/)
[![Github sponsors](https://img.shields.io/static/v1?label=sponsor&message=4&logo=GitHub&color=dcb424&link=https://github.com/sponsors/sanderland/)](https://github.com/sponsors/sanderland)
+1 -1
View File
@@ -1,4 +1,4 @@
VERSION = "1.3.1"
VERSION = "1.3.2"
HOMEPAGE = "https://github.com/sanderland/katrain"
CONFIG_MIN_VERSION = "1.3.0" # keep config files from this version
+3 -1
View File
@@ -42,10 +42,12 @@ class KataGoEngine:
self.analysis_thread = None
self.stderr_thread = None
exe = config.get("katago", "").strip()
if override_command:
self.command = override_command
elif exe.startswith('"') and exe.endswith('"'):
self.command = exe.strip('"')
else:
exe = config["katago"].strip()
if not exe:
if platform == "win":
exe = "katrain/KataGo/katago.exe"
+5 -1
View File
@@ -11,7 +11,11 @@ from katrain.gui.style import DEFAULT_FONT
class Lang(Observable):
observers = []
callbacks = []
FONTS = {"ko": "fonts/NotoSansKR-Regular.otf", "cn": "fonts/NotoSansCJKsc-Regular.otf"}
FONTS = {
"ko": "fonts/NotoSansKR-Regular.otf",
"cn": "fonts/NotoSansCJKsc-Regular.otf",
"jp": "fonts/NotoSansJP-Regular.otf",
}
def __init__(self, lang):
super(Lang, self).__init__()
Binary file not shown.
+4 -1
View File
@@ -820,7 +820,7 @@
<LangButton@TransparentIconButton>
size_hint: 1,1
icon_size: self.height * 0.75, self.height * 0.75
icon_size: self.height * 0.7, self.height * 0.7
<MenuLabel@BackgroundMixin+Label>:
@@ -982,6 +982,9 @@
LangButton:
icon: 'img/flaticon/flag-ko.png'
on_press: app.language = 'ko'
LangButton:
icon: 'img/flaticon/flag-jp.png'
on_press: app.language = 'jp'
BoxLayout:
size_hint: 1,None
height: root.item_height
+1 -1
View File
@@ -451,7 +451,7 @@ class BadukPanWidget(Widget):
animating_pv = self.animating_pv
if animating_pv:
pv, node, start_time, _ = animating_pv
delay = self.trainer_config.get("anim_pv_time", 0.5)
delay = self.katrain.config("general/anim_pv_time", 0.5)
up_to_move = (time.time() - start_time) / delay
self.draw_pv(pv, node, up_to_move)
+1
View File
@@ -376,6 +376,7 @@ class ConfigPopup(QuickConfigGui):
def __init__(self, katrain):
super().__init__(katrain)
self.paths = [self.katrain.config("engine/model"), "katrain/models", "~/.katrain"]
MDApp.get_running_app().bind(language=self.check_models)
def build_and_set_properties(self, *_args):
super().build_and_set_properties()
+80 -13
View File
@@ -3,12 +3,12 @@ from collections import defaultdict
from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Line, Rectangle
from kivy.lang import Builder
from kivy.properties import ObjectProperty, Clock, DictProperty, NumericProperty
from kivy.properties import ObjectProperty, Clock, NumericProperty, BooleanProperty
from kivy.uix.dropdown import DropDown
from kivy.uix.scrollview import ScrollView
from kivy.uix.widget import Widget
from kivymd.app import MDApp
from katrain.core.game_node import GameNode
from katrain.gui.kivyutils import BackgroundMixin, draw_circle, draw_text
from katrain.gui.style import (
WHITE,
@@ -19,17 +19,44 @@ from katrain.gui.style import (
LIGHTER_BACKGROUND_COLOR,
YELLOW,
STONE_TEXT_COLORS,
RED,
)
class MoveTreeDropdown(DropDown):
pass
class MoveTreeCanvas(Widget):
scroll_view_widget = ObjectProperty(None)
move_size = NumericProperty(5)
dropdown = ObjectProperty(None)
is_open = BooleanProperty(False)
menu_selected_node = ObjectProperty(None, allownone=True)
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.move_pos = {}
self.move_xy_pos = {}
self.bind(menu_selected_node=lambda *_args: self.scroll_view_widget.redraw_tree_trigger())
self.build_dropdown()
def on_is_open(self, instance, value):
if value:
max_content_width = max(option.content_width for option in self.dropdown.container.children)
self.dropdown.width = max_content_width
self.dropdown.open(self.scroll_view_widget)
else:
self.menu_selected_node = None
if self.dropdown.attach_to:
self.dropdown.dismiss()
def close_dropdown(self, *largs):
self.is_open = False
def build_dropdown(self):
self.dropdown = MoveTreeDropdown(auto_width=False)
self.dropdown.bind(on_dismiss=self.close_dropdown)
def set_game_node(self, node):
katrain = MDApp.get_running_app().gui
@@ -37,12 +64,26 @@ class MoveTreeCanvas(Widget):
katrain.update_state()
def on_touch_up(self, touch):
if "button" not in touch.profile or touch.button == "left":
node, (x, y) = min(
self.move_xy_pos.items(), key=lambda n_xy: abs(n_xy[1][0] - touch.x) + abs(n_xy[1][1] - touch.y)
)
if max(abs(x - touch.x), abs(y - touch.y)) <= (self.move_size / 2):
selected_node = None
is_open = False
node, (x, y) = min(
self.move_xy_pos.items(), key=lambda n_xy: abs(n_xy[1][0] - touch.x) + abs(n_xy[1][1] - touch.y)
)
if max(abs(x - touch.x), abs(y - touch.y)) <= (self.move_size / 2):
if "button" not in touch.profile or touch.button == "left":
self.set_game_node(node)
elif touch.button == "right" and not node.is_root:
is_open = True
selected_node = node
self.is_open = is_open
self.menu_selected_node = selected_node
def delete_selected_node(self):
if self.menu_selected_node and self.menu_selected_node.parent:
parent = self.menu_selected_node.parent
parent.children.remove(self.menu_selected_node)
self.set_game_node(parent)
self.is_open = False
def switch_branch(self, direction=1):
pos = self.move_pos.get(self.scroll_view_widget.current_node)
@@ -97,11 +138,6 @@ class MoveTreeCanvas(Widget):
with self.canvas:
self.canvas.clear()
Color(*YELLOW)
Rectangle(
pos=[c - self.move_size / 2 - spacing / 2 for c in self.move_xy_pos[current_node]],
size=(self.move_size + spacing, self.move_size + spacing),
)
Color(*LIGHTGREY)
for node, (x, y) in self.move_xy_pos.items():
for ci, c in enumerate(children[node]):
@@ -109,12 +145,19 @@ class MoveTreeCanvas(Widget):
Line(points=[x, y, x, cy, cx, cy], width=1)
for node, pos in self.move_xy_pos.items():
if node == self.menu_selected_node or node == current_node:
Color(*(RED if node == self.menu_selected_node else YELLOW))
Rectangle(
pos=[c - self.move_size / 2 - spacing / 2 for c in self.move_xy_pos[node]],
size=(self.move_size + spacing, self.move_size + spacing),
)
draw_stone(pos, node.player)
text = str(node.depth)
Color(*STONE_COLORS["W" if node.player == "B" else "B"])
draw_text(pos=pos, text=text, font_size=self.move_size * 1.75 / (1 + 1 * len(text)), font_name="Roboto")
self.scroll_view_widget.scroll_to_pixel(*self.move_xy_pos[current_node])
if current_node in self.move_xy_pos:
self.scroll_view_widget.scroll_to_pixel(*self.move_xy_pos[current_node])
class MoveTree(ScrollView, BackgroundMixin):
@@ -130,6 +173,9 @@ class MoveTree(ScrollView, BackgroundMixin):
def switch_branch(self, direction):
self.move_tree_canvas.switch_branch(direction)
def delete_selected_node(self):
self.move_tree_canvas.delete_selected_node()
def scroll_to_pixel(self, x, y):
if not self._viewport:
return
@@ -152,5 +198,26 @@ Builder.load_string(
scroll_view_widget: root
id: move_tree_canvas
size_hint: None, None
<MoveTreeDropdownItem@MenuItem>:
canvas.before:
Color:
rgba: WHITE
Line:
points: self.x, self.y, self.x, self.y+self.height
Color:
rgba: LIGHTGREY
Line
points: self.x,self.y,self.x+self.width,self.y
width: 1
<MoveTreeDropdown>:
katrain: app.gui
MoveTreeDropdownItem:
text: i18n._("Delete Node")
icon: 'img/delete.png'
shortcut: ''
on_action: root.katrain.controls.move_tree.delete_selected_node()
-background_color: LIGHTER_BACKGROUND_COLOR
"""
)
Binary file not shown.
@@ -591,3 +591,7 @@ msgstr "预计棋力"
msgid "reanalyze max visits"
msgstr "每步棋计算深度"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -635,3 +635,7 @@ msgstr "Geschätzte Spielstärke"
msgid "reanalyze max visits"
msgstr "Anzahl der Visits pro Zug"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -639,3 +639,7 @@ msgstr "All available models already downloaded"
#. label in little popup for analyzing entire game
msgid "reanalyze max visits"
msgstr "Number of visits per move"
#. on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -631,3 +631,7 @@ msgstr "Fuerza Estimada"
msgid "reanalyze max visits"
msgstr "Número de visitas por jugada"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -672,3 +672,7 @@ msgstr ""
"Tout à gauche, un PDA de -3 (W+3) supposera que Blanc est bien plus fort que Noir. \n"
"Tout à droite, un PDA de 3 (B+3) supposera que Noir est bien plus fort que Blanc. \n"
"Cocher l'option 'automatic' adaptera la valeur PDA au handicap utilisé."
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -0,0 +1,623 @@
# KaTrain localization file
msgid ""
msgstr ""
"Language: Japanese\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 "対局者設定"
msgid "menu:newgame"
msgstr "新規対局"
msgid "menu:save"
msgstr "棋譜保存"
msgid "menu:load"
msgstr "棋譜読込"
msgid "menu:settings"
msgstr "一般・エンジン設定"
msgid "menu:clocksettings"
msgstr "時間設定"
msgid "menu:teachsettings"
msgstr "指導対局設定"
msgid "menu:aisettings"
msgstr "AI設定"
msgid "menu:lang"
msgstr "言語"
msgid "menu:support"
msgstr "貢献するには"
msgid "menu:manual"
msgstr "マニュアル"
#. player options in the setup and on the right
msgid "player:type"
msgstr "プレイヤー"
msgid "player:human"
msgstr "人間"
msgid "player:ai"
msgstr "AI"
msgid "aistrategy"
msgstr "AIの戦略"
msgid "gametype"
msgstr "対局の種類"
msgid "game:normal"
msgstr "通常対局"
msgid "game:teach"
msgstr "指導対局"
#. buttons at the top - should all include a line break
msgid "analysis:nextmoves"
msgstr ""
"次の\n"
"着手"
msgid "analysis:dots"
msgstr ""
"ドット\n"
"表示"
msgid "analysis:topmoves"
msgstr ""
"上位\n"
"候補"
msgid "analysis:policy"
msgstr ""
"第一\n"
"感"
msgid "analysis:territory"
msgstr ""
"地合\n"
"推定"
#. analysis menu items
msgid "analysis:extra"
msgstr "さらに深く分析"
msgid "analysis:equalize"
msgstr "候補手を均等に分析"
msgid "analysis:sweep"
msgstr "盤上すべての手を簡易分析"
#. Analyze every node in the game more deeply
msgid "analysis:game"
msgstr "一局全体を深く分析"
#. Keep improving current position analysis when there is nothing else to do
msgid "analysis:continuous"
msgstr "分析の継続・停止"
msgid "analysis:aimove"
msgstr "AIの推奨手を打つ"
#. status message
msgid "extra analysis"
msgstr "さらに深く分析中(のべ{visits}手)"
#. status message
msgid "sweep analysis"
msgstr "盤面すべての手を分析中(各{visits}手)"
#. status message
msgid "equalizing analysis"
msgstr "候補手を均等に分析中(各{visits}手)"
#. status message
msgid "game re-analysis"
msgstr "一局全体を再分析中(各{visits}手)"
#. right panel buttons and below board
msgid "pass-button-text"
msgstr "パス"
msgid "teaching undo message"
msgstr ""
"待った。{move}は{points_lost:.1f}目損です(マウスカーソルをこの手にかざせばとがめる手順が表示されます)。打ち直してください。"
msgid "ai-ponder"
msgstr "この印はエンジンの状態をシンプルに表します(緑=空き、オレンジ=処理中)。エンジンが止まったり起動できなかったりすると赤くなります。"
#. undo button on the right
msgid "undo-button-text"
msgstr "待った"
#. tabs and labels on the right panel
msgid "tab:score"
msgstr "目差"
msgid "tab:winrate"
msgstr "勝率"
#. shown on a graph tab
msgid "tab:rank_est"
msgstr "推定段級位"
msgid "tab:points"
msgstr "損失目数"
msgid "tab:info"
msgstr "情報"
msgid "tab:info-details"
msgstr "詳細"
msgid "tab:notes"
msgstr "コメント"
msgid "closedlabel:scoregraph"
msgstr "目差グラフ"
#. on the graph
msgid "Jigo"
msgstr "持碁"
msgid "closedlabel:movestats"
msgstr "着手の分析結果"
msgid "closedlabel:info&notes"
msgstr "着手の情報・コメント"
#. on the board after passing once/twice
msgid "board-pass"
msgstr "パス"
msgid "board-game-end"
msgstr "終局"
#. Select mode
msgid "btn:Play"
msgstr "対局"
msgid "btn:Analysis"
msgstr "分析"
msgid "btn:Analyze"
msgstr "分析オプション"
msgid "stats:winrate"
msgstr "勝率"
msgid "stats:score"
msgstr "推定目差"
msgid "stats:pointslost"
msgstr "損失目数"
#. better than expected best move
msgid "stats:pointsgained"
msgstr "獲得目数"
#. SGF and move comment messages
msgid "SGF start message"
msgstr "×印はKataGoの推奨手、四角は半目損以内の手"
msgid "Info:score"
msgstr "目差:{score}"
msgid "Info:winrate"
msgstr "勝率:{winrate}"
msgid "Info:point loss"
msgstr "推定損失目数:{points_lost:.1f}"
#. as in 'Move 125: B5'
msgid "move"
msgstr "手数{number}"
msgid "Info:top move"
msgstr "最善手は{top_move} ({score})"
msgid "Info:best move"
msgstr "最善手"
msgid "Info:PV"
msgstr "予想手順:{pv}"
msgid "Info:policy rank"
msgstr "第一感では{rank}位 ({probability:.2%})"
msgid "Info:policy best"
msgstr "第一感での最有力手は{move} ({probability:.1%})"
msgid "Info:teaching undo"
msgstr "指導モードにより自動的に待ったがかかりました"
msgid "Info:undo predicted PV"
msgstr "予想手順:{pv}"
msgid "Info:AI thoughts"
msgstr "AIの思考過程:{thoughts}"
msgid "No analysis available"
msgstr "分析結果なし"
msgid "Analyzing move..."
msgstr "分析中…"
msgid "SGF Notes Hint"
msgstr "この手に対するコメント記入欄(SGF記録用)"
# sgf load popup
msgid "load sgf title"
msgstr "SGFファイルを読み込んで解析"
msgid "load sgf fast analysis"
msgstr "簡易解析"
msgid "load sgf rewind"
msgstr "初手に巻戻す"
# timer settings from here
msgid "timer settings"
msgstr "時間設定の調整"
msgid "byoyomi length"
msgstr "秒読み時間"
msgid "byoyomi periods"
msgstr "秒読み回数"
msgid "count down sound"
msgstr "音声オン"
#. submit button
msgid "update timer"
msgstr "時間設定を更新"
# new game settings from here
msgid "New Game title"
msgstr "新規対局の設定"
msgid "board size"
msgstr "碁盤サイズ"
msgid "handicap"
msgstr "置き石"
msgid "komi"
msgstr "コミ"
msgid "ruleset"
msgstr "ルール"
#. ruleset names
msgid "japanese"
msgstr "日本"
msgid "chinese"
msgstr "中国"
msgid "korean"
msgstr "韓国"
msgid "aga"
msgstr "AGA"
msgid "clear cache"
msgstr "思考記録をクリア"
#. clear cache help
msgid "avoids replaying"
msgstr ""
"同一手順の\n"
"再現を防ぐ"
#. hints on new game
msgid "non square board hint"
msgstr "長方形碁盤は x:y と記入(例 19:9)"
#. submit new game
msgid "new game"
msgstr "新規対局を開始"
# teacher settings from here
msgid "teacher settings"
msgstr "指導設定を編集"
msgid "point loss threshold"
msgstr "何目より損なら"
msgid "num undos"
msgstr "待ったの回数"
msgid "dot color"
msgstr "色(固定)"
msgid "show dots"
msgstr "ドットを表示"
msgid "save dots"
msgstr "SGFに保存"
msgid "show last n dots"
msgstr ""
"直近何手の\n"
"ドットを表示"
msgid "show ai dots"
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 "指導設定を更新"
# main config settings
msgid "restarting engine"
msgstr "設定変更後にエンジンを再起動中"
# title
msgid "general settings title"
msgstr "一般・エンジン設定"
msgid "file not found"
msgstr "ファイルがありません"
msgid "general settings"
msgstr "一般設定"
msgid "katago settings"
msgstr "KataGo設定"
msgid "engine settings"
msgstr "エンジン設定"
msgid "config file path"
msgstr "全オプションの保存先:"
msgid "engine:katago"
msgstr "KataGo本体(実行ファイル)のフルパス"
msgid "engine:katago:hint"
msgstr "内蔵エンジンを使うなら空のまま"
msgid "engine:model"
msgstr "KataGoモデルファイルの場所"
msgid "engine:config"
msgstr "KataGo設定ファイルの場所"
msgid "engine:max_visits"
msgstr "分析時の最大読み手数"
msgid "engine:fast_visits"
msgstr "簡易分析時の最大読み手数"
msgid "engine:max_time"
msgstr "分析の最大時間"
msgid "engine:wide_root_noise"
msgstr "Wide root noise (考慮する手の範囲を広げる)"
msgid "engine:wide_root_noise:hint"
msgstr ""
"候補手を増やすには\n"
"0.02から0.1の値を設定"
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 "手順アニメーションの一手毎の時間"
msgid "general:debug_level"
msgstr "コンソールのデバッグレベル"
msgid "general:debug_level:hint"
msgstr "エラーを報告する際は1に設定を"
msgid "update settings"
msgstr "設定を更新"
# ai settings from here
msgid "ai settings"
msgstr "高度なAI設定"
msgid "Select AI"
msgstr "AIの戦略"
msgid "update ai settings"
msgstr "AI設定を更新"
#. misc errors and info messages
msgid "sgf written"
msgstr "分析結果入りSGFを{file_name}に保存"
msgid "wait-before-equalize"
msgstr "初期分析が完了しないと均等分析はできません"
msgid "Copied SGF to clipboard."
msgstr "クリップボードにSGFをコピーしました"
msgid "Failed to import from clipboard"
msgstr ""
"クリップボードの読み込みに失敗しました:{error}\n"
"クリップボードの内容:{contents}..."
msgid "Failed to load SGF"
msgstr "SGFのロードに失敗しました。Parse Error: {error}"
msgid "Kata exe not found"
msgstr "KataGoの実行ファイル {exe} がありません。一般設定を確認してください。"
msgid "Kata exe not found in path"
msgstr ""
"KataGoの実行ファイル `{exe}` "
"がPATH内にありません。環境変数を確認するか、もしくは一般設定でフルパスを記入してください。MacOSの場合は、まずbrewを使ってkatagoをインストールする方法について、マニュアルを参照ください。"
msgid "Kata model not found"
msgstr "KataGoのモデル {model} がありません。一般設定を確認してください。"
msgid "Kata config not found"
msgstr "KataGo設定ファイル {config} がありません。一般設定を確認してください。"
msgid "Starting Kata failed"
msgstr "コマンド '{command}' によるKataGoの起動に失敗しました。エラー {error}"
msgid "Engine died unexpectedly"
msgstr "出力なしで予期せずエンジンが止まりました。メモリ不足かもしれません:{error}"
#. AI names, help etc
msgid "strength:kyu"
msgstr "級"
msgid "strength:dan"
msgstr "段"
msgid "ai:default"
msgstr "KataGo"
msgid "aihelp:default"
msgstr ""
"手加減なしのKataGo AI. 強さは, 一般設定のエンジンの読み手数とモデル, およびエンジンの設定ファイルによります. "
"オプション設定はありません."
#. ai which handles handicap games better
msgid "ai:handicap"
msgstr "Kata置碁"
msgid "aihelp:handicap"
msgstr ""
"置き石が多い場合向けに最適化されたKataGo. "
"`pda`設定は黒側から見たKataGoの`playoutDoublingAdvantage`に対応します. `automatic`を設定しておけば, "
"適切な値をKaTrainが自動的にみつけます."
msgid "ai:jigo"
msgstr "Kata持碁"
msgid "aihelp:jigo"
msgstr "指定された目差ちょうど(デフォルトは半目)だけ勝つことをめざします. それ以外は制限なし."
msgid "ai:scoreloss"
msgstr "損も混ぜて"
msgid "aihelp:scoreloss"
msgstr ""
"損する目数に応じた確率でランダムに手を選択します(損が大きいほど低確率). 読み手数の設定値を大きくするほど多彩で弱い打ち方をするでしょう."
msgid "ai:policy"
msgstr "第一感"
msgid "aihelp:policy"
msgstr ""
"一手も読まずに第一感での最有力手を打ちます. 強さは主にエンジン設定のモデルしだいです. "
"`opening_moves`は序盤の何手目までをよりランダムにするかの設定です."
msgid "ai:p:weighted"
msgstr "第一感(比重)"
msgid "aihelp:p:weighted"
msgstr ""
"第一感での確率にしたがって手を選びます. `weaken_fac`は弱そうな手を選ぶ度合を調整します. これを非常に小さな値にすれば`Policy` "
"AIと似たような打ち方になります. なお, 最有力手の第一感での確率が`pick_override`より大きい場合はその手が無条件で選ばれます. 逆に,"
" 第一感での確率が`lower_bound`より小さい手は決して選ばれません."
msgid "ai:p:pick"
msgstr "第一感(盲点)"
msgid "aihelp:p:pick"
msgstr ""
"`pick_n + pick_frac * <合法手の個数>`個の手をランダムに選んだ上で, その中での最善手を打ちます. "
"`pick_frac=1`にすれば`Policy` AIと同じような打ち方になります. なお, 明らかなミスを避けるために, "
"最有力手の第一感での確率が`pick_override`より大きい場合は無条件でその手を打ちます."
msgid "ai:p:local"
msgstr "おつきあい派"
msgid "aihelp:p:local"
msgstr ""
"直前の着手に近い位置ほど重みをつけて`pick_n + pick_frac * <合法手の個数>`個の手をランダムに選び, その中での最善手を打ちます."
" ただし, 明らかなミスを避けるために, 最有力手の第一感での確率が`pick_override`より大きい場合は無条件でその手を打ちます."
msgid "ai:p:tenuki"
msgstr "手抜き派"
msgid "aihelp:p:tenuki"
msgstr ""
"直前の着手から遠い位置ほど重みをつけて`pick_n + pick_frac * <合法手の個数>`個の手をランダムに選び, "
"その中での最善手を打ちます. ただし, 明らかなミスを避けるために, "
"最有力手の第一感での確率が`pick_override`より大きい場合は無条件でその手を打ちます. "
"`stddev`を大きくするほどより遠くの手を打ちます."
msgid "ai:p:influence"
msgstr "勢力派"
msgid "aihelp:p:influence"
msgstr ""
"`threshold`線より高い(天元寄りの)手に重みをつけて何個かの手を選び, その中での最善手を打ちます. "
"`line_weight`を大きくするほど, 盤端に近い手をより避けるようになります. なお, "
"盤全体のうち'endgame'の割合が埋まったあとにはこの重みづけは適用しません."
msgid "ai:p:territory"
msgstr "実利派"
msgid "aihelp:p:territory"
msgstr ""
"`threshold`線より低い(盤端寄りの)手に重みをつけて何個かの手を選び, その中での最善手を打ちます. "
"`line_weight`を大きくするほど, 天元に近い手をより避けるようになります. なお, "
"盤全体のうち'endgame'の割合が埋まったあとにはこの重みづけは適用しません."
msgid "ai:p:rank"
msgstr "段級位相応"
msgid "aihelp:p:rank"
msgstr ""
"制限された手のうちからランダムに何手か選んだ上で, その中での最善手を打ちます. 強い設定にするほどより広い候補の中から最善手を選ぶようになります. "
"なお, 3段は-2 kyuに対応します(0級/段はないので数字がずれる). "
#. in AI settings
msgid "estimated strength"
msgstr "推定段級位"
#. button in general settings for downloading models
msgid "download models button"
msgstr "モデルをダウンロード"
#. shown on on the model select dropdown
msgid "models available"
msgstr "利用できるモデルが {num} 個みつかりました"
#. error message on trying to download models when already done
msgid "All models downloaded"
msgstr "利用できるモデルはすべてダウンロード済です"
#. label in little popup for analyzing entire game
msgid "reanalyze max visits"
msgstr "着手毎の読み手数"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -607,3 +607,7 @@ msgstr "추정 기력"
msgid "reanalyze max visits"
msgstr "한 수당 visit 수"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.
@@ -632,3 +632,7 @@ msgstr "Оценка силы"
msgid "reanalyze max visits"
msgstr "Количество посещений на ход"
#. TODO - on move tree editing
msgid "Delete Node"
msgstr "Delete Node"
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB