28 files changed
+752
-23
No files matched your search
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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/>
|
||||
|
||||
<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
|
||||
|
||||
[](https://github.com/sanderland/katrain/issues)
|
||||
[](CONTRIBUTIONS.md)
|
||||
[](CONTRIBUTIONS.md)
|
||||
[](https://liberapay.com/sanderbaduk/)
|
||||
[](https://github.com/sponsors/sanderland)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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¬es"
|
||||
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 |
Reference in new issue
Block a user