haha'
This commit is contained in:
1 parent
22ea8604ca
commit
2d20196dda
15 files changed
+1177
-38
No files matched your search
+3
-3
@@ -108,15 +108,16 @@ def get_drives():
|
|||||||
return drives
|
return drives
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class I18NFileChooserListView(FileChooserListView):
|
class I18NFileChooserListView(FileChooserListView):
|
||||||
font_name = StringProperty("")
|
font_name = StringProperty("")
|
||||||
|
|
||||||
|
|
||||||
class I18NFileChooserListLayout(FileChooserListLayout):
|
class I18NFileChooserListLayout(FileChooserListLayout):
|
||||||
_ENTRY_TEMPLATE = "I18NFileListEntry"
|
_ENTRY_TEMPLATE = "I18NFileListEntry"
|
||||||
|
|
||||||
|
|
||||||
Builder.load_string("""
|
Builder.load_string(
|
||||||
|
"""
|
||||||
#:kivy 1.0
|
#:kivy 1.0
|
||||||
[I18NFileListEntry@FloatLayout+TreeViewNode]:
|
[I18NFileListEntry@FloatLayout+TreeViewNode]:
|
||||||
locked: False
|
locked: False
|
||||||
@@ -156,7 +157,6 @@ Builder.load_string("""
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Builder.load_string(
|
Builder.load_string(
|
||||||
"""
|
"""
|
||||||
#:kivy 1.2.0
|
#:kivy 1.2.0
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import polib
|
import polib
|
||||||
import sys
|
import sys
|
||||||
|
import re
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
localedir = "katrain/i18n/locales"
|
localedir = "katrain/i18n/locales"
|
||||||
@@ -34,7 +35,10 @@ for lang in locales:
|
|||||||
errors = True
|
errors = True
|
||||||
elif DEFAULT_LANG in strings_to_langs[msgid]:
|
elif DEFAULT_LANG in strings_to_langs[msgid]:
|
||||||
print("Message id", msgid, "missing in ", lang, "-> Adding it from", DEFAULT_LANG)
|
print("Message id", msgid, "missing in ", lang, "-> Adding it from", DEFAULT_LANG)
|
||||||
entry = polib.POEntry(msgid=msgid, msgstr=strings_to_langs[msgid][DEFAULT_LANG], comment="TODO")
|
copied_msg = strings_to_langs[msgid][DEFAULT_LANG]
|
||||||
|
if lang == "haha":
|
||||||
|
copied_msg = re.sub(r"[a-zA-Z]{1,2}", "ㅋ", copied_msg)
|
||||||
|
entry = polib.POEntry(msgid=msgid, msgstr=copied_msg, comment="TODO")
|
||||||
po[lang].append(entry)
|
po[lang].append(entry)
|
||||||
errors = True
|
errors = True
|
||||||
else:
|
else:
|
||||||
|
|||||||
+7
-4
@@ -33,6 +33,7 @@ from katrain.core.game import Game, IllegalMoveException, KaTrainSGF
|
|||||||
from katrain.core.sgf_parser import Move, ParseError
|
from katrain.core.sgf_parser import Move, ParseError
|
||||||
from katrain.gui.kivyutils import *
|
from katrain.gui.kivyutils import *
|
||||||
from katrain.gui.widgets.graph import ScoreGraph
|
from katrain.gui.widgets.graph import ScoreGraph
|
||||||
|
from katrain.gui.widgets.filebrowser import I18NFileChooserListView
|
||||||
from katrain.gui.badukpan import AnalysisControls, BadukPanControls, BadukPanWidget
|
from katrain.gui.badukpan import AnalysisControls, BadukPanControls, BadukPanWidget
|
||||||
from katrain.gui.controlspanel import ControlsPanel
|
from katrain.gui.controlspanel import ControlsPanel
|
||||||
from katrain.gui.popups import ConfigPopup, LoadSGFPopup, NewGamePopup, AIPopup
|
from katrain.gui.popups import ConfigPopup, LoadSGFPopup, NewGamePopup, AIPopup
|
||||||
@@ -246,10 +247,9 @@ class KaTrainGui(Screen, KaTrainBase):
|
|||||||
|
|
||||||
def _do_analyze_sgf_popup(self):
|
def _do_analyze_sgf_popup(self):
|
||||||
if not self.fileselect_popup:
|
if not self.fileselect_popup:
|
||||||
self.fileselect_popup = Popup(title="Double Click SGF file to analyze", size_hint=(0.8, 0.8)).__self__
|
|
||||||
popup_contents = LoadSGFPopup()
|
popup_contents = LoadSGFPopup()
|
||||||
self.fileselect_popup.add_widget(popup_contents)
|
popup_contents.filesel.path = os.path.abspath(os.path.expanduser(self.config("general/sgf_load", ".")))
|
||||||
popup_contents.filesel.path = os.path.abspath(os.path.expanduser(self.config("sgf/sgf_load")))
|
self.fileselect_popup = I18NPopup(title_key="load sgf title", size=[1200, 800], content=popup_contents).__self__
|
||||||
|
|
||||||
def readfile(files, _mouse):
|
def readfile(files, _mouse):
|
||||||
self.fileselect_popup.dismiss()
|
self.fileselect_popup.dismiss()
|
||||||
@@ -323,7 +323,8 @@ class KaTrainGui(Screen, KaTrainBase):
|
|||||||
def _on_keyboard_down(self, _keyboard, keycode, _text, modifiers):
|
def _on_keyboard_down(self, _keyboard, keycode, _text, modifiers):
|
||||||
if self.controls.note.focus:
|
if self.controls.note.focus:
|
||||||
return # when making notes, don't allow keyboard shortcuts
|
return # when making notes, don't allow keyboard shortcuts
|
||||||
first_child = App.get_running_app().root_window.children[0]
|
app = App.get_running_app()
|
||||||
|
first_child = app.root_window.children[0]
|
||||||
if isinstance(first_child, Popup):
|
if isinstance(first_child, Popup):
|
||||||
if keycode[1] not in ["f5", "f6", "f7", "f8"]:
|
if keycode[1] not in ["f5", "f6", "f7", "f8"]:
|
||||||
return
|
return
|
||||||
@@ -352,6 +353,8 @@ class KaTrainGui(Screen, KaTrainBase):
|
|||||||
self("new-game-popup")
|
self("new-game-popup")
|
||||||
elif keycode[1] == "l" and "ctrl" in modifiers:
|
elif keycode[1] == "l" and "ctrl" in modifiers:
|
||||||
self("analyze-sgf-popup")
|
self("analyze-sgf-popup")
|
||||||
|
elif keycode[1] == "f12" and "ctrl" in modifiers:
|
||||||
|
app.language = "haha"
|
||||||
elif keycode[1] == "s" and "ctrl" in modifiers:
|
elif keycode[1] == "s" and "ctrl" in modifiers:
|
||||||
self("output-sgf")
|
self("output-sgf")
|
||||||
elif keycode[1] == "c" and "ctrl" in modifiers:
|
elif keycode[1] == "c" and "ctrl" in modifiers:
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ def find_package_resource(path):
|
|||||||
class Lang(Observable):
|
class Lang(Observable):
|
||||||
observers = []
|
observers = []
|
||||||
callbacks = []
|
callbacks = []
|
||||||
FONTS = {"ko": "fonts/NotoSansKR-Regular.otf"}
|
FONTS = {"ko": "fonts/NotoSansKR-Regular.otf", "haha": "fonts/NotoSansKR-Regular.otf"}
|
||||||
|
|
||||||
def __init__(self, lang):
|
def __init__(self, lang):
|
||||||
super(Lang, self).__init__()
|
super(Lang, self).__init__()
|
||||||
@@ -88,7 +88,7 @@ class Lang(Observable):
|
|||||||
for widget, func, args in self.observers:
|
for widget, func, args in self.observers:
|
||||||
try:
|
try:
|
||||||
func(args[0], None, None)
|
func(args[0], None, None)
|
||||||
print('setting',widget,widget.font_name,'->',self.font_name)
|
print("setting", widget, widget.font_name, "->", self.font_name)
|
||||||
widget.font_name = self.font_name
|
widget.font_name = self.font_name
|
||||||
for sub_widget in [getattr(widget, "_hint_lbl", None), getattr(widget, "_msg_lbl", None)]: # MDText
|
for sub_widget in [getattr(widget, "_hint_lbl", None), getattr(widget, "_msg_lbl", None)]: # MDText
|
||||||
if sub_widget:
|
if sub_widget:
|
||||||
|
|||||||
+1
-1
@@ -822,7 +822,7 @@
|
|||||||
size_hint_y: 0.5
|
size_hint_y: 0.5
|
||||||
id: analysis_button
|
id: analysis_button
|
||||||
on_press: root.open_analysis_menu()
|
on_press: root.open_analysis_menu()
|
||||||
text: 'Analysis'
|
text: i18n._("btn:Analyze")
|
||||||
pos_hint: {'center_y':0.5}
|
pos_hint: {'center_y':0.5}
|
||||||
|
|
||||||
<MainMenuItem>
|
<MainMenuItem>
|
||||||
|
|||||||
@@ -0,0 +1,465 @@
|
|||||||
|
# Adapted from https://github.com/kivy-garden/filebrowser
|
||||||
|
|
||||||
|
"""
|
||||||
|
FileBrowser
|
||||||
|
===========
|
||||||
|
The :class:`FileBrowser` widget is an advanced file browser. You use it
|
||||||
|
similarly to FileChooser usage.
|
||||||
|
It provides a shortcut bar with links to special and system directories.
|
||||||
|
When touching next to a shortcut in the links bar, it'll expand and show
|
||||||
|
all the directories within that directory. It also facilitates specifying
|
||||||
|
custom paths to be added to the shortcuts list.
|
||||||
|
It provides a icon and list view to choose files from. And it also accepts
|
||||||
|
filter and filename inputs.
|
||||||
|
To create a FileBrowser which prints the currently selected file as well as
|
||||||
|
the current text in the filename field when 'Select' is pressed, with
|
||||||
|
a shortcut to the Documents directory added to the favorites bar::
|
||||||
|
import os
|
||||||
|
from kivy.app import App
|
||||||
|
class TestApp(App):
|
||||||
|
def build(self):
|
||||||
|
user_path = os.path.join(get_home_directory(), 'Documents')
|
||||||
|
browser = FileBrowser(select_string='Select',
|
||||||
|
favorites=[(user_path, 'Documents')])
|
||||||
|
browser.bind(on_success=self._fbrowser_success,
|
||||||
|
on_submit=self._fbrowser_submit)
|
||||||
|
return browser
|
||||||
|
def _fbrowser_success(self, instance):
|
||||||
|
print(instance.selection)
|
||||||
|
def _fbrowser_submit(self, instance):
|
||||||
|
print(instance.selection)
|
||||||
|
TestApp().run()
|
||||||
|
:Events:
|
||||||
|
`on_success`:
|
||||||
|
Fired when the `Select` buttons `on_release` event is called.
|
||||||
|
`on_submit`:
|
||||||
|
Fired when a file has been selected with a double-tap.
|
||||||
|
.. image:: _static/filebrowser.png
|
||||||
|
:align: right
|
||||||
|
"""
|
||||||
|
from kivy.uix.boxlayout import BoxLayout
|
||||||
|
from kivy.uix.treeview import TreeViewLabel, TreeView
|
||||||
|
from kivy.uix.filechooser import FileChooserListView, FileChooserListLayout
|
||||||
|
from kivy.properties import ObjectProperty, StringProperty, OptionProperty, ListProperty, BooleanProperty
|
||||||
|
from kivy.lang import Builder
|
||||||
|
from kivy.utils import platform
|
||||||
|
from kivy.clock import Clock
|
||||||
|
import string
|
||||||
|
from os.path import sep, dirname, expanduser, isdir, join
|
||||||
|
from os import walk
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
|
from katrain.gui.style import DEFAULT_FONT
|
||||||
|
|
||||||
|
if platform == "win":
|
||||||
|
from ctypes import windll, create_unicode_buffer
|
||||||
|
|
||||||
|
|
||||||
|
def last_modified_first(files, filesystem):
|
||||||
|
return sorted(f for f in files if filesystem.is_dir(f)) + sorted([f for f in files if not filesystem.is_dir(f)], key=lambda f: -os.path.getmtime(f))
|
||||||
|
|
||||||
|
|
||||||
|
def get_home_directory():
|
||||||
|
if platform == "win":
|
||||||
|
user_path = expanduser("~")
|
||||||
|
|
||||||
|
if not isdir(join(user_path, "Desktop")):
|
||||||
|
user_path = dirname(user_path)
|
||||||
|
|
||||||
|
else:
|
||||||
|
user_path = expanduser("~")
|
||||||
|
|
||||||
|
return user_path
|
||||||
|
|
||||||
|
|
||||||
|
def get_drives():
|
||||||
|
drives = []
|
||||||
|
if platform == "win":
|
||||||
|
bitmask = windll.kernel32.GetLogicalDrives()
|
||||||
|
GetVolumeInformationW = windll.kernel32.GetVolumeInformationW
|
||||||
|
for letter in string.ascii_uppercase:
|
||||||
|
if bitmask & 1:
|
||||||
|
name = create_unicode_buffer(64)
|
||||||
|
# get name of the drive
|
||||||
|
drive = letter + u":"
|
||||||
|
res = GetVolumeInformationW(drive + sep, name, 64, None, None, None, None, 0)
|
||||||
|
if isdir(drive):
|
||||||
|
drives.append((drive, name.value))
|
||||||
|
bitmask >>= 1
|
||||||
|
elif platform == "linux":
|
||||||
|
drives.append((sep, sep))
|
||||||
|
drives.append((expanduser(u"~"), "~/"))
|
||||||
|
places = (sep + u"mnt", sep + u"media")
|
||||||
|
for place in places:
|
||||||
|
if isdir(place):
|
||||||
|
for directory in next(walk(place))[1]:
|
||||||
|
drives.append((place + sep + directory, directory))
|
||||||
|
elif platform == "macosx" or platform == "ios":
|
||||||
|
drives.append((expanduser(u"~"), "~/"))
|
||||||
|
vol = sep + u"Volume"
|
||||||
|
if isdir(vol):
|
||||||
|
for drive in next(walk(vol))[1]:
|
||||||
|
drives.append((vol + sep + drive, drive))
|
||||||
|
return drives
|
||||||
|
|
||||||
|
|
||||||
|
class I18NFileChooserListView(FileChooserListView):
|
||||||
|
font_name = StringProperty(DEFAULT_FONT)
|
||||||
|
show_hidden = BooleanProperty(True) # avoid errors
|
||||||
|
|
||||||
|
|
||||||
|
class I18NFileChooserListLayout(FileChooserListLayout):
|
||||||
|
_ENTRY_TEMPLATE = "I18NFileListEntry"
|
||||||
|
|
||||||
|
|
||||||
|
Builder.load_string(
|
||||||
|
"""
|
||||||
|
#:kivy 1.0
|
||||||
|
[I18NFileListEntry@FloatLayout+TreeViewNode]:
|
||||||
|
locked: False
|
||||||
|
entries: []
|
||||||
|
path: ctx.path
|
||||||
|
is_selected: self.path in ctx.controller().selection
|
||||||
|
orientation: 'horizontal'
|
||||||
|
size_hint_y: None
|
||||||
|
height: '24dp'
|
||||||
|
# Don't allow expansion of the ../ node
|
||||||
|
is_leaf: not ctx.isdir or ctx.name.endswith('..' + ctx.sep) or self.locked
|
||||||
|
on_touch_down: self.collide_point(*args[1].pos) and ctx.controller().entry_touched(self, args[1])
|
||||||
|
on_touch_up: self.collide_point(*args[1].pos) and ctx.controller().entry_released(self, args[1])
|
||||||
|
BoxLayout:
|
||||||
|
pos: root.pos
|
||||||
|
size_hint_x: None
|
||||||
|
width: root.width - dp(10)
|
||||||
|
Label:
|
||||||
|
id: filename
|
||||||
|
text_size: self.width, None
|
||||||
|
halign: 'left'
|
||||||
|
shorten: True
|
||||||
|
text: ctx.name
|
||||||
|
font_name: ctx.controller().font_name
|
||||||
|
Label:
|
||||||
|
text_size: self.width, None
|
||||||
|
size_hint_x: None
|
||||||
|
halign: 'right'
|
||||||
|
text: '{}'.format(ctx.get_nice_size())
|
||||||
|
|
||||||
|
<I18NFileChooserListView>:
|
||||||
|
layout: layout
|
||||||
|
I18NFileChooserListLayout:
|
||||||
|
id: layout
|
||||||
|
controller: root
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Builder.load_string(
|
||||||
|
"""
|
||||||
|
#:kivy 1.2.0
|
||||||
|
#:import metrics kivy.metrics
|
||||||
|
#:import abspath os.path.abspath
|
||||||
|
#:import i18n katrain.core.utils.i18n
|
||||||
|
|
||||||
|
<Button>:
|
||||||
|
track_lang: i18n._('')
|
||||||
|
|
||||||
|
<TreeLabel>:
|
||||||
|
on_touch_down:
|
||||||
|
self.parent.browser.path = self.path if self.collide_point(*args[1].pos) and self.path else self.parent.browser.path
|
||||||
|
on_is_open: self.is_open and self.parent.trigger_populate(self)
|
||||||
|
|
||||||
|
<FileBrowser>:
|
||||||
|
orientation: 'vertical'
|
||||||
|
spacing: 5
|
||||||
|
padding: [6, 6, 6, 6]
|
||||||
|
select_state: select_button.state
|
||||||
|
filename: file_text.text
|
||||||
|
browser: list_view
|
||||||
|
on_favorites: link_tree.reload_favs(self.favorites)
|
||||||
|
BoxLayout:
|
||||||
|
orientation: 'horizontal'
|
||||||
|
spacing: 5
|
||||||
|
Splitter:
|
||||||
|
sizable_from: 'right'
|
||||||
|
min_size: '153sp'
|
||||||
|
size_hint: (.2, 1)
|
||||||
|
id: splitter
|
||||||
|
ScrollView:
|
||||||
|
LinkTree:
|
||||||
|
id: link_tree
|
||||||
|
browser: root.browser
|
||||||
|
size_hint_y: None
|
||||||
|
height: self.minimum_height
|
||||||
|
on_parent: self.fill_tree(root.favorites)
|
||||||
|
root_options: {'text': 'Locations', 'no_selection':True}
|
||||||
|
BoxLayout:
|
||||||
|
size_hint_x: .8
|
||||||
|
orientation: 'vertical'
|
||||||
|
Label:
|
||||||
|
size_hint_y: None
|
||||||
|
height: '22dp'
|
||||||
|
text_size: self.size
|
||||||
|
padding_x: '10dp'
|
||||||
|
text: abspath(root.path)
|
||||||
|
track_lang: i18n._('')
|
||||||
|
valign: 'middle'
|
||||||
|
I18NFileChooserListView:
|
||||||
|
id: list_view
|
||||||
|
path: root.path
|
||||||
|
sort_func: root.sort_func
|
||||||
|
filters: root.filters
|
||||||
|
filter_dirs: root.filter_dirs
|
||||||
|
show_hidden: root.show_hidden
|
||||||
|
multiselect: root.multiselect
|
||||||
|
dirselect: root.dirselect
|
||||||
|
rootpath: root.rootpath
|
||||||
|
on_submit: root.dispatch('on_submit')
|
||||||
|
track_lang: i18n._('')
|
||||||
|
GridLayout:
|
||||||
|
size_hint: (1, None)
|
||||||
|
height: file_text.line_height * 2
|
||||||
|
cols: 2
|
||||||
|
rows: 2
|
||||||
|
spacing: [5]
|
||||||
|
TextInput:
|
||||||
|
id: file_text
|
||||||
|
text: (root.selection and (root._shorten_filenames(root.selection) if root.multiselect else root.selection[0])) or ''
|
||||||
|
hint_text: 'Filename'
|
||||||
|
multiline: False
|
||||||
|
Button:
|
||||||
|
id: select_button
|
||||||
|
size_hint_x: None
|
||||||
|
width: metrics.dp(100)
|
||||||
|
text: root.select_string
|
||||||
|
on_release: root.dispatch('on_success')
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TreeLabel(TreeViewLabel):
|
||||||
|
path = StringProperty("")
|
||||||
|
"""Full path to the location this node points to.
|
||||||
|
:class:`~kivy.properties.StringProperty`, defaults to ''
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class LinkTree(TreeView):
|
||||||
|
# link to the favorites section of link bar
|
||||||
|
_favs = ObjectProperty(None)
|
||||||
|
_computer_node = None
|
||||||
|
|
||||||
|
def fill_tree(self, fav_list):
|
||||||
|
user_path = get_home_directory()
|
||||||
|
self._favs = self.add_node(TreeLabel(text="Favorites", is_open=True, no_selection=True))
|
||||||
|
self.reload_favs(fav_list)
|
||||||
|
|
||||||
|
libs = self.add_node(TreeLabel(text="Libraries", is_open=True, no_selection=True))
|
||||||
|
places = ("Documents", "Music", "Pictures", "Videos")
|
||||||
|
for place in places:
|
||||||
|
if isdir(join(user_path, place)):
|
||||||
|
self.add_node(TreeLabel(text=place, path=join(user_path, place)), libs)
|
||||||
|
self._computer_node = self.add_node(TreeLabel(text="Computer", is_open=True, no_selection=True))
|
||||||
|
self._computer_node.bind(on_touch_down=self._drives_touch)
|
||||||
|
self.reload_drives()
|
||||||
|
|
||||||
|
def _drives_touch(self, obj, touch):
|
||||||
|
if obj.collide_point(*touch.pos):
|
||||||
|
self.reload_drives()
|
||||||
|
|
||||||
|
def reload_drives(self):
|
||||||
|
nodes = [(node, node.text + node.path) for node in self._computer_node.nodes if isinstance(node, TreeLabel)]
|
||||||
|
sigs = [s[1] for s in nodes]
|
||||||
|
nodes_new = []
|
||||||
|
sig_new = []
|
||||||
|
for path, name in get_drives():
|
||||||
|
if platform == "win":
|
||||||
|
text = u"{}({})".format((name + " ") if name else "", path)
|
||||||
|
else:
|
||||||
|
text = name
|
||||||
|
nodes_new.append((text, path))
|
||||||
|
sig_new.append(text + path + sep)
|
||||||
|
for node, sig in nodes:
|
||||||
|
if sig not in sig_new:
|
||||||
|
self.remove_node(node)
|
||||||
|
for text, path in nodes_new:
|
||||||
|
if text + path + sep not in sigs:
|
||||||
|
self.add_node(TreeLabel(text=text, path=path + sep), self._computer_node)
|
||||||
|
|
||||||
|
def reload_favs(self, fav_list):
|
||||||
|
user_path = get_home_directory()
|
||||||
|
favs = self._favs
|
||||||
|
remove = []
|
||||||
|
for node in self.iterate_all_nodes(favs):
|
||||||
|
if node != favs:
|
||||||
|
remove.append(node)
|
||||||
|
for node in remove:
|
||||||
|
self.remove_node(node)
|
||||||
|
places = ("Desktop", "Downloads")
|
||||||
|
for place in places:
|
||||||
|
if isdir(join(user_path, place)):
|
||||||
|
self.add_node(TreeLabel(text=place, path=join(user_path, place)), favs)
|
||||||
|
for path, name in fav_list:
|
||||||
|
if isdir(path):
|
||||||
|
self.add_node(TreeLabel(text=name, path=path), favs)
|
||||||
|
|
||||||
|
def trigger_populate(self, node):
|
||||||
|
if not node.path or node.nodes:
|
||||||
|
return
|
||||||
|
parent = node.path
|
||||||
|
_next = next(walk(parent))
|
||||||
|
if _next:
|
||||||
|
for path in _next[1]:
|
||||||
|
self.add_node(TreeLabel(text=path, path=parent + sep + path), node)
|
||||||
|
|
||||||
|
|
||||||
|
class FileBrowser(BoxLayout):
|
||||||
|
"""FileBrowser class, see module documentation for more information.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__events__ = ("on_success", "on_submit")
|
||||||
|
|
||||||
|
select_state = OptionProperty("normal", options=("normal", "down"))
|
||||||
|
"""State of the 'select' button, must be one of 'normal' or 'down'.
|
||||||
|
The state is 'down' only when the button is currently touched/clicked,
|
||||||
|
otherwise 'normal'. This button functions as the typical Ok/Select/Save
|
||||||
|
button.
|
||||||
|
:data:`select_state` is an :class:`~kivy.properties.OptionProperty`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
select_string = StringProperty("Ok")
|
||||||
|
"""Label of the 'select' button.
|
||||||
|
:data:`select_string` is an :class:`~kivy.properties.StringProperty`,
|
||||||
|
defaults to 'Ok'.
|
||||||
|
"""
|
||||||
|
|
||||||
|
filename = StringProperty("")
|
||||||
|
"""The current text in the filename field. Read only. When multiselect is
|
||||||
|
True, the list of selected filenames is shortened. If shortened, filename
|
||||||
|
will contain an ellipsis.
|
||||||
|
:data:`filename` is an :class:`~kivy.properties.StringProperty`,
|
||||||
|
defaults to ''.
|
||||||
|
.. versionchanged:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
selection = ListProperty([])
|
||||||
|
"""Read-only :class:`~kivy.properties.ListProperty`.
|
||||||
|
Contains the list of files that are currently selected in the current tab.
|
||||||
|
See :kivy_fchooser:`kivy.uix.filechooser.FileChooserController.selection`.
|
||||||
|
.. versionchanged:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
path = StringProperty(u"/")
|
||||||
|
"""
|
||||||
|
:class:`~kivy.properties.StringProperty`, defaults to the current working
|
||||||
|
directory as a unicode string. It specifies the path on the filesystem that
|
||||||
|
browser should refer to.
|
||||||
|
See :kivy_fchooser:`kivy.uix.filechooser.FileChooserController.path`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
filters = ListProperty([])
|
||||||
|
""":class:`~kivy.properties.ListProperty`, defaults to [], equal to
|
||||||
|
``'*'``.
|
||||||
|
Specifies the filters to be applied to the files in the directory.
|
||||||
|
See :kivy_fchooser:`kivy.uix.filechooser.FileChooserController.filters`.
|
||||||
|
Filering keywords that the user types into the filter field as a comma
|
||||||
|
separated list will be reflected here.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
filter_dirs = BooleanProperty(False)
|
||||||
|
"""
|
||||||
|
:class:`~kivy.properties.BooleanProperty`, defaults to False.
|
||||||
|
Indicates whether filters should also apply to directories.
|
||||||
|
See
|
||||||
|
:kivy_fchooser:`kivy.uix.filechooser.FileChooserController.filter_dirs`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
show_hidden = BooleanProperty(False)
|
||||||
|
"""
|
||||||
|
:class:`~kivy.properties.BooleanProperty`, defaults to False.
|
||||||
|
Determines whether hidden files and folders should be shown.
|
||||||
|
See
|
||||||
|
:kivy_fchooser:`kivy.uix.filechooser.FileChooserController.show_hidden`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
multiselect = BooleanProperty(False)
|
||||||
|
"""
|
||||||
|
:class:`~kivy.properties.BooleanProperty`, defaults to False.
|
||||||
|
Determines whether the user is able to select multiple files or not.
|
||||||
|
See
|
||||||
|
:kivy_fchooser:`kivy.uix.filechooser.FileChooserController.multiselect`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
dirselect = BooleanProperty(False)
|
||||||
|
"""
|
||||||
|
:class:`~kivy.properties.BooleanProperty`, defaults to False.
|
||||||
|
Determines whether directories are valid selections or not.
|
||||||
|
See
|
||||||
|
:kivy_fchooser:`kivy.uix.filechooser.FileChooserController.dirselect`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
rootpath = StringProperty(None, allownone=True)
|
||||||
|
"""
|
||||||
|
Root path to use instead of the system root path. If set, it will not show
|
||||||
|
a ".." directory to go up to the root path. For example, if you set
|
||||||
|
rootpath to /users/foo, the user will be unable to go to /users or to any
|
||||||
|
other directory not starting with /users/foo.
|
||||||
|
:class:`~kivy.properties.StringProperty`, defaults to None.
|
||||||
|
See :kivy_fchooser:`kivy.uix.filechooser.FileChooserController.rootpath`.
|
||||||
|
.. versionadded:: 1.1
|
||||||
|
"""
|
||||||
|
|
||||||
|
favorites = ListProperty([])
|
||||||
|
"""A list of the paths added to the favorites link bar. Each element
|
||||||
|
is a tuple where the first element is a string containing the full path
|
||||||
|
to the location, while the second element is a string with the name of
|
||||||
|
path to be displayed.
|
||||||
|
:data:`favorites` is an :class:`~kivy.properties.ListProperty`,
|
||||||
|
defaults to '[]'.
|
||||||
|
"""
|
||||||
|
|
||||||
|
sort_func = ObjectProperty(last_modified_first)
|
||||||
|
"""
|
||||||
|
Provides a function to be called with a list of filenames as the first
|
||||||
|
argument and the filesystem implementation as the second argument. It
|
||||||
|
returns a list of filenames sorted for display in the view."""
|
||||||
|
|
||||||
|
def on_success(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def on_submit(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(FileBrowser, self).__init__(**kwargs)
|
||||||
|
Clock.schedule_once(self._post_init)
|
||||||
|
|
||||||
|
def _post_init(self, *largs):
|
||||||
|
self.ids.list_view.bind(
|
||||||
|
selection=partial(self._attr_callback, "selection"),
|
||||||
|
path=partial(self._attr_callback, "path"),
|
||||||
|
filters=partial(self._attr_callback, "filters"),
|
||||||
|
filter_dirs=partial(self._attr_callback, "filter_dirs"),
|
||||||
|
show_hidden=partial(self._attr_callback, "show_hidden"),
|
||||||
|
multiselect=partial(self._attr_callback, "multiselect"),
|
||||||
|
dirselect=partial(self._attr_callback, "dirselect"),
|
||||||
|
rootpath=partial(self._attr_callback, "rootpath"),
|
||||||
|
)
|
||||||
|
|
||||||
|
def _shorten_filenames(self, filenames):
|
||||||
|
if not len(filenames):
|
||||||
|
return ""
|
||||||
|
elif len(filenames) == 1:
|
||||||
|
return filenames[0]
|
||||||
|
elif len(filenames) == 2:
|
||||||
|
return filenames[0] + ", " + filenames[1]
|
||||||
|
else:
|
||||||
|
return filenames[0] + ", _..._, " + filenames[-1]
|
||||||
|
|
||||||
|
def _attr_callback(self, attr, obj, value):
|
||||||
|
setattr(self, attr, getattr(obj, attr))
|
||||||
Binary file not shown.
@@ -153,6 +153,9 @@ msgstr "Play"
|
|||||||
msgid "btn:Analysis"
|
msgid "btn:Analysis"
|
||||||
msgstr "Analysis"
|
msgstr "Analysis"
|
||||||
|
|
||||||
|
msgid "btn:Analyze"
|
||||||
|
msgstr "Analyze"
|
||||||
|
|
||||||
msgid "stats:winrate"
|
msgid "stats:winrate"
|
||||||
msgstr "Win Rate"
|
msgstr "Win Rate"
|
||||||
|
|
||||||
@@ -214,7 +217,16 @@ msgstr "Analyzing move..."
|
|||||||
msgid "SGF Notes Hint"
|
msgid "SGF Notes Hint"
|
||||||
msgstr "Your SGF notes for this position here."
|
msgstr "Your SGF notes for this position here."
|
||||||
|
|
||||||
#. popup title
|
# sgf load popup
|
||||||
|
msgid "load sgf title"
|
||||||
|
msgstr "Load SGF File to Analyze"
|
||||||
|
|
||||||
|
msgid "load sgf fast analysis"
|
||||||
|
msgstr "Use fast analysis"
|
||||||
|
|
||||||
|
msgid "load sgf rewind"
|
||||||
|
msgstr "Rewind to start"
|
||||||
|
|
||||||
# timer settings from here
|
# timer settings from here
|
||||||
msgid "timer settings"
|
msgid "timer settings"
|
||||||
msgstr "Adjust Timer Settings"
|
msgstr "Adjust Timer Settings"
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,634 @@
|
|||||||
|
# KaTrain i18n file
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Language: ㅋㅋㅋ\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ruleset"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "pass-button-text"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Analyzing move..."
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋ..."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "chinese"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:aisettings"
|
||||||
|
msgstr "ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:scoreloss"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Select AI"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋㅋㅋ ㅋ ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:katago"
|
||||||
|
msgstr "ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:scoreloss"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋㅋ. ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ/ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋ "
|
||||||
|
"ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general settings title"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general:sgf_load"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:fast_visits"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:weighted"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "wait-before-equalize"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ ㅋ ㅋㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "save dots"
|
||||||
|
msgstr "ㅋㅋ ㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:clocksettings"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Starting default Kata failed"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ '{ㅋㅋㅋㅋ}' ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ {ㅋㅋㅋ}. ㅋ ㅋ ㅋㅋㅋ, ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋ ㅋㅋ ㅋㅋ "
|
||||||
|
"ㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ, ㅋㅋ ㅋㅋ ㅋ ㅋ ㅋㅋ ㅋㅋ ㅋ 'ㅋㅋㅋ/ㅋㅋㅋ' ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "teacher settings"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "gametype"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "dot color"
|
||||||
|
msgstr "ㅋㅋㅋ (ㅋㅋㅋ)"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "tab:notes"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "komi"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:settings"
|
||||||
|
msgstr "ㅋㅋㅋㅋ & ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general:debug_level"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "korean"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:policy"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:pick"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "handicap"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:wide_root_noise:hint"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ 0.02-0.1 ㅋ ㅋㅋ\n"
|
||||||
|
"ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "player:type"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general:debug_level:hint"
|
||||||
|
msgstr "ㅋㅋ ㅋ 1 ㅋㅋ ㅋㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:config"
|
||||||
|
msgstr "ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:score"
|
||||||
|
msgstr "ㅋㅋㅋ: {ㅋㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:AI thoughts"
|
||||||
|
msgstr "ㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ: {ㅋㅋㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "update ai settings"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "num undos"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:default"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:point loss"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ: {ㅋㅋㅋ_ㅋㅋ:.1ㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:tenuki"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:save"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:sweep"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "update settings"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "board size"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "tab:points"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:weighted"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋㅋ, ㅋㅋ `ㅋㅋㅋ_ㅋㅋ` ㅋㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ. "
|
||||||
|
"ㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ `ㅋㅋㅋ` ㅋ.`ㅋㅋ_ㅋㅋㅋㅋ` ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋㅋ, "
|
||||||
|
"ㅋㅋ `ㅋㅋㅋ_ㅋㅋㅋ` ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:katago:hint"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:best move"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:support"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋ ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:lang"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aistrategy"
|
||||||
|
msgstr "ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf title"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:local"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ `ㅋㅋ_ㅋ + ㅋㅋ_ㅋㅋ * <ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ>` ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ. ㅋㅋㅋ"
|
||||||
|
" ㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ `ㅋㅋ_ㅋㅋㅋㅋ` ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:policy"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ\n"
|
||||||
|
"ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:top move"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ {ㅋㅋ_ㅋㅋ} ({ㅋㅋㅋ})."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:policy rank"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ #{ㅋㅋ} ㅋㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ({ㅋㅋㅋㅋㅋㅋ:.2%})."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:equalize"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "No analysis available"
|
||||||
|
msgstr "ㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "show last n dots"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ\n"
|
||||||
|
"<ㅋㅋ ㅋㅋ> ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "stats:pointsgained"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:policy best"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ {ㅋㅋ} ({ㅋㅋㅋㅋㅋㅋ:.1%})."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "tab:score"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Copied SGF to clipboard."
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:territory"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "btn:Play"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Failed to load SGF"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋ. ㅋㅋㅋ ㅋㅋㅋ: {ㅋㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "sgf written"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋ {ㅋㅋ_ㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "tab:winrate"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "point loss threshold"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "player:human"
|
||||||
|
msgstr "ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:jigo"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "closedlabel:info¬es"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ & ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "SGF start message"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋ 'ㅋ' ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋ ㅋ ㅋㅋㅋ, ㅋㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ 0.5 "
|
||||||
|
"ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:max_time"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aga"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:time:hint"
|
||||||
|
msgstr "ㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "update timer"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "game:teach"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "byoyomi length"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋ-ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "new game"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "japanese"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:teachsettings"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "closedlabel:scoregraph"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine settings"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "stats:score"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:wide_root_noise"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋ (ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ)"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "btn:Analysis"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:PV"
|
||||||
|
msgstr "ㅋ: {ㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:local"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:dots"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ\n"
|
||||||
|
"ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "show ai dots"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ ㅋㅋ/ㅋㅋ ㅋㅋㅋㅋ\n"
|
||||||
|
" ㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "board-game-end"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ\n"
|
||||||
|
"ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "SGF Notes Hint"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "file not found"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general:anim_pv_time"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:newgame"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:topmoves"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ\n"
|
||||||
|
"ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:playersetup"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "restarting engine"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai-ponder"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋ, ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ (ㅋㅋ) ㅋ ㅋㅋㅋ (ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋ). ㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ "
|
||||||
|
"ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "stats:pointslost"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "byoyomi periods"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "closedlabel:movestats"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "avoids replaying"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋㅋㅋ\n"
|
||||||
|
"ㅋㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "player:ai"
|
||||||
|
msgstr "ㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "menu:load"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf fast analysis"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:territory"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋㅋ\n"
|
||||||
|
"ㅋㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:pick"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ `ㅋㅋ_ㅋ + ㅋㅋ_ㅋㅋ * <ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ>` ㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ. ㅋㅋ `ㅋㅋ_ㅋㅋ=1` ㅋㅋㅋ"
|
||||||
|
" ㅋㅋ ㅋㅋ `ㅋㅋㅋ` ㅋ. ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ `ㅋㅋ_ㅋㅋㅋㅋ` ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "tab:info"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:model"
|
||||||
|
msgstr "ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "board-pass"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "show dots"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:default"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ. ㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋ `ㅋㅋ_ㅋㅋㅋ` ㅋㅋ `ㅋㅋㅋ` ㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ `ㅋㅋㅋ` "
|
||||||
|
"ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "timer settings"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "game:normal"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "non square board hint"
|
||||||
|
msgstr "ㅋㅋ ㅋ:ㅋ (ㅋ.ㅋ. 19:9) ㅋㅋ ㅋㅋ-ㅋㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "ai:p:influence"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:aimove"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "stats:winrate"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:nextmoves"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋ\n"
|
||||||
|
"ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "undo-button-text"
|
||||||
|
msgstr "ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Engine died unexpectedly"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ, ㅋㅋㅋㅋ ㅋㅋ ㅋ ㅋㅋ ㅋ ㅋㅋㅋ: {ㅋㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:winrate"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ: {ㅋㅋㅋㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:policy"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ, ㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ. ㅋㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋ `ㅋㅋㅋ` ㅋ ㅋㅋㅋ "
|
||||||
|
"ㅋㅋㅋㅋ. ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "New Game title"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:tenuki"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ `ㅋㅋ_ㅋ + ㅋㅋ_ㅋㅋ * <ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ>` ㅋㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ. "
|
||||||
|
"ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ `ㅋㅋ_ㅋㅋㅋㅋ` ㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:undo predicted PV"
|
||||||
|
msgstr "ㅋㅋㅋㅋㅋ ㅋㅋㅋ-ㅋ: {ㅋ}"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "engine:max_visits"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general:sgf_save"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "strength:kyu"
|
||||||
|
msgstr "ㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "general settings"
|
||||||
|
msgstr "ㅋㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:jigo"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋ ㅋㅋ ㅋ ㅋ ㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ (ㅋㅋㅋㅋ 0.5), ㅋㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Info:teaching undo"
|
||||||
|
msgstr "ㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋㅋ ㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "strength:dan"
|
||||||
|
msgstr "ㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "lock ai when playing"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋㅋ ㅋㅋㅋㅋ\n"
|
||||||
|
" ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:influence"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ `ㅋㅋㅋㅋㅋ` ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ.ㅋㅋㅋㅋ `ㅋㅋ_ㅋㅋㅋ` ㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
" ㅋㅋ ㅋㅋ. ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ 'ㅋㅋㅋㅋ' ㅋㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Starting Kata failed"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ '{ㅋㅋㅋㅋ}' ㅋㅋㅋ ㅋㅋ ㅋㅋㅋ {ㅋㅋㅋ}. ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ 'ㅋㅋㅋ' ㅋㅋㅋ ㅋㅋㅋ 'ㅋㅋㅋ'"
|
||||||
|
" ㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "update teacher"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "clear cache"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "Failed to import from clipboard"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋㅋㅋㅋ: {ㅋㅋㅋ}\n"
|
||||||
|
"ㅋㅋㅋㅋㅋ ㅋㅋㅋㅋ: {ㅋㅋㅋㅋ}..."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "aihelp:p:territory"
|
||||||
|
msgstr ""
|
||||||
|
"ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋㅋ ㅋㅋ `ㅋㅋㅋㅋㅋ` ㅋㅋ ㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ.ㅋㅋㅋㅋ `ㅋㅋ_ㅋㅋㅋ` ㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ ㅋㅋ"
|
||||||
|
" ㅋㅋㅋ ㅋㅋ. ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋ ㅋㅋ 'ㅋㅋㅋㅋ' ㅋㅋㅋㅋ ㅋ ㅋㅋ ㅋㅋㅋ ㅋ ㅋㅋㅋ."
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "analysis:extra"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf rewind"
|
||||||
|
msgstr "ㅋㅋㅋ ㅋ ㅋㅋㅋ"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "btn:Analyze"
|
||||||
|
msgstr "ㅋㅋㅋㅋ"
|
||||||
Binary file not shown.
@@ -626,3 +626,19 @@ msgstr "Update AI Settings"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "Select AI"
|
msgid "Select AI"
|
||||||
msgstr "Select AI strategy to configure"
|
msgstr "Select AI strategy to configure"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf rewind"
|
||||||
|
msgstr "Rewind to start"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf fast analysis"
|
||||||
|
msgstr "Use fast analysis"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf title"
|
||||||
|
msgstr "Load SGF File to Analyze"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "btn:Analyze"
|
||||||
|
msgstr "Analyze"
|
||||||
Binary file not shown.
@@ -658,3 +658,19 @@ msgstr "Update AI Settings"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "Select AI"
|
msgid "Select AI"
|
||||||
msgstr "Select AI strategy to configure"
|
msgstr "Select AI strategy to configure"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf rewind"
|
||||||
|
msgstr "Rewind to start"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf fast analysis"
|
||||||
|
msgstr "Use fast analysis"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "load sgf title"
|
||||||
|
msgstr "Load SGF File to Analyze"
|
||||||
|
|
||||||
|
#. TODO
|
||||||
|
msgid "btn:Analyze"
|
||||||
|
msgstr "Analyze"
|
||||||
+15
-26
@@ -383,52 +383,41 @@
|
|||||||
on_press: root.update_config(True)
|
on_press: root.update_config(True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<NewLoadSGFPopup>:
|
|
||||||
FileBrowser:
|
|
||||||
|
|
||||||
# old
|
|
||||||
|
|
||||||
<LoadSGFPopup>:
|
<LoadSGFPopup>:
|
||||||
fast: fast
|
fast: fast
|
||||||
rewind: rewind
|
rewind: rewind
|
||||||
filesel: filesel
|
filesel: filesel
|
||||||
orientation: 'vertical'
|
orientation: 'vertical'
|
||||||
Label:
|
I18NFileChooserListView:
|
||||||
text: root.filesel.path
|
|
||||||
size_hint: 1,0.05
|
|
||||||
halign: 'left'
|
|
||||||
FileChooserListView:
|
|
||||||
id: filesel
|
id: filesel
|
||||||
multiselect: False
|
multiselect: False
|
||||||
filters: ["*.sgf"]
|
filters: ["*.sgf"]
|
||||||
path: "."
|
path: "."
|
||||||
size_hint: 1,0.88
|
size_hint: 1,7
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
orientation: 'horizontal'
|
orientation: 'horizontal'
|
||||||
size_hint: 1,0.07
|
size_hint: 1,1
|
||||||
canvas.before:
|
DescriptionLabel:
|
||||||
Color:
|
text: i18n._("load sgf fast analysis")
|
||||||
rgb: 0.4, 0.4, 0.4
|
|
||||||
Rectangle:
|
|
||||||
pos: self.pos
|
|
||||||
size: self.size
|
|
||||||
Label:
|
|
||||||
text: "Analyze Extra Fast"
|
|
||||||
size_hint: 0.45,1
|
size_hint: 0.45,1
|
||||||
halign: 'right'
|
halign: 'right'
|
||||||
CheckBox:
|
LabelledCheckBox:
|
||||||
id: fast
|
id: fast
|
||||||
color: (0.95, 0.95, 0.95)
|
color: (0.95, 0.95, 0.95)
|
||||||
size_hint: 0.05,1
|
size_hint: 0.05,1
|
||||||
Label:
|
DescriptionLabel:
|
||||||
text: "Rewind to Start"
|
text: i18n._("load sgf rewind")
|
||||||
halign: 'right'
|
halign: 'right'
|
||||||
size_hint: 0.45,1
|
size_hint: 0.45,1
|
||||||
CheckBox:
|
LabelledCheckBox:
|
||||||
id: rewind
|
id: rewind
|
||||||
active: True
|
active: True
|
||||||
color: (0.95, 0.95, 0.95)
|
color: (0.95, 0.95, 0.95)
|
||||||
size_hint: 0.05,1
|
size_hint: 0.05,1
|
||||||
|
AnchorLayout:
|
||||||
|
size_hint: 1,1.5
|
||||||
|
AutoSizedRoundedRectangleButton:
|
||||||
|
padding_x: 15
|
||||||
|
size_hint: None,0.5
|
||||||
|
text: i18n._("Load File")
|
||||||
|
|
||||||
Reference in new issue
Block a user