tryton 7.4.8__py3-none-any.whl → 7.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of tryton might be problematic. Click here for more details.
- tryton/__init__.py +1 -1
- tryton/bus.py +113 -69
- tryton/chat.py +179 -0
- tryton/client.py +7 -0
- tryton/common/__init__.py +15 -11
- tryton/common/button.py +1 -1
- tryton/common/cellrendererfloat.py +1 -1
- tryton/common/cellrenderertext.py +2 -2
- tryton/common/common.py +91 -19
- tryton/common/domain_parser.py +8 -6
- tryton/common/environment.py +2 -2
- tryton/common/number_entry.py +12 -6
- tryton/common/selection.py +1 -1
- tryton/data/locale/bg/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/bg/LC_MESSAGES/tryton.po +26 -16
- tryton/data/locale/ca/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/ca/LC_MESSAGES/tryton.po +29 -18
- tryton/data/locale/cs/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/cs/LC_MESSAGES/tryton.po +28 -16
- tryton/data/locale/de/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/de/LC_MESSAGES/tryton.po +27 -18
- tryton/data/locale/es/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/es/LC_MESSAGES/tryton.po +25 -16
- tryton/data/locale/es_419/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/es_419/LC_MESSAGES/tryton.po +26 -16
- tryton/data/locale/et/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/et/LC_MESSAGES/tryton.po +28 -18
- tryton/data/locale/fa/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/fa/LC_MESSAGES/tryton.po +28 -18
- tryton/data/locale/fi/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/fi/LC_MESSAGES/tryton.po +25 -16
- tryton/data/locale/fr/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/fr/LC_MESSAGES/tryton.po +25 -16
- tryton/data/locale/hu/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/hu/LC_MESSAGES/tryton.po +28 -18
- tryton/data/locale/id/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/id/LC_MESSAGES/tryton.po +23 -16
- tryton/data/locale/it/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/it/LC_MESSAGES/tryton.po +29 -18
- tryton/data/locale/ja_JP/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/lo/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/lo/LC_MESSAGES/tryton.po +26 -18
- tryton/data/locale/lt/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/lt/LC_MESSAGES/tryton.po +30 -18
- tryton/data/locale/nl/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/nl/LC_MESSAGES/tryton.po +25 -16
- tryton/data/locale/pl/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/pl/LC_MESSAGES/tryton.po +31 -18
- tryton/data/locale/pt/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/pt/LC_MESSAGES/tryton.po +148 -177
- tryton/data/locale/ro/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/ro/LC_MESSAGES/tryton.po +32 -19
- tryton/data/locale/ru/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/ru/LC_MESSAGES/tryton.po +28 -16
- tryton/data/locale/sl/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/sl/LC_MESSAGES/tryton.po +33 -18
- tryton/data/locale/tr/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/tr/LC_MESSAGES/tryton.po +25 -16
- tryton/data/locale/uk/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/uk/LC_MESSAGES/tryton.po +31 -18
- tryton/data/locale/zh_CN/LC_MESSAGES/tryton.mo +0 -0
- tryton/data/locale/zh_CN/LC_MESSAGES/tryton.po +27 -18
- tryton/data/pixmaps/tryton/tryton-chat.svg +1 -0
- tryton/data/pixmaps/tryton/tryton-note.svg +1 -4
- tryton/gui/window/attachment.py +2 -2
- tryton/gui/window/board.py +1 -1
- tryton/gui/window/form.py +57 -10
- tryton/gui/window/note.py +2 -2
- tryton/gui/window/tabcontent.py +8 -1
- tryton/gui/window/view_board/action.py +1 -1
- tryton/gui/window/view_form/model/field.py +38 -29
- tryton/gui/window/view_form/model/group.py +4 -4
- tryton/gui/window/view_form/model/record.py +17 -4
- tryton/gui/window/view_form/screen/screen.py +24 -6
- tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +1 -1
- tryton/gui/window/view_form/view/calendar_gtk/toolbar.py +1 -1
- tryton/gui/window/view_form/view/form.py +2 -1
- tryton/gui/window/view_form/view/form_gtk/binary.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/calendar_.py +4 -4
- tryton/gui/window/view_form/view/form_gtk/char.py +42 -5
- tryton/gui/window/view_form/view/form_gtk/checkbox.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/dictionary.py +53 -15
- tryton/gui/window/view_form/view/form_gtk/float.py +3 -7
- tryton/gui/window/view_form/view/form_gtk/image.py +4 -4
- tryton/gui/window/view_form/view/form_gtk/integer.py +1 -1
- tryton/gui/window/view_form/view/form_gtk/many2many.py +3 -4
- tryton/gui/window/view_form/view/form_gtk/many2one.py +2 -2
- tryton/gui/window/view_form/view/form_gtk/multiselection.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/one2many.py +11 -8
- tryton/gui/window/view_form/view/form_gtk/progressbar.py +2 -2
- tryton/gui/window/view_form/view/form_gtk/pyson.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/reference.py +4 -4
- tryton/gui/window/view_form/view/form_gtk/richtextbox.py +5 -5
- tryton/gui/window/view_form/view/form_gtk/selection.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/state_widget.py +8 -6
- tryton/gui/window/view_form/view/form_gtk/textbox.py +4 -4
- tryton/gui/window/view_form/view/form_gtk/timedelta.py +3 -3
- tryton/gui/window/view_form/view/form_gtk/url.py +2 -2
- tryton/gui/window/view_form/view/form_gtk/widget.py +1 -1
- tryton/gui/window/view_form/view/graph_gtk/bar.py +7 -7
- tryton/gui/window/view_form/view/graph_gtk/graph.py +2 -2
- tryton/gui/window/view_form/view/graph_gtk/line.py +5 -5
- tryton/gui/window/view_form/view/graph_gtk/pie.py +2 -2
- tryton/gui/window/view_form/view/list.py +110 -52
- tryton/gui/window/view_form/view/list_gtk/editabletree.py +2 -2
- tryton/gui/window/view_form/view/list_gtk/widget.py +22 -20
- tryton/gui/window/view_form/view/screen_container.py +13 -1
- tryton/gui/window/win_csv.py +2 -2
- tryton/gui/window/win_export.py +9 -7
- tryton/gui/window/win_form.py +73 -39
- tryton/gui/window/win_import.py +5 -6
- tryton/gui/window/wizard.py +11 -11
- tryton/jsonrpc.py +2 -2
- tryton/plugins/__init__.py +0 -1
- tryton/pyson.py +18 -18
- tryton/rpc.py +7 -5
- {tryton-7.4.8.dist-info → tryton-7.6.0.dist-info}/METADATA +6 -6
- {tryton-7.4.8.dist-info → tryton-7.6.0.dist-info}/RECORD +122 -120
- {tryton-7.4.8.data → tryton-7.6.0.data}/scripts/tryton +0 -0
- {tryton-7.4.8.dist-info → tryton-7.6.0.dist-info}/WHEEL +0 -0
- {tryton-7.4.8.dist-info → tryton-7.6.0.dist-info}/licenses/LICENSE +0 -0
- {tryton-7.4.8.dist-info → tryton-7.6.0.dist-info}/top_level.txt +0 -0
tryton/common/common.py
CHANGED
|
@@ -10,6 +10,7 @@ import logging
|
|
|
10
10
|
import os
|
|
11
11
|
import platform
|
|
12
12
|
import re
|
|
13
|
+
import ssl
|
|
13
14
|
import subprocess
|
|
14
15
|
import unicodedata
|
|
15
16
|
import xml.etree.ElementTree as ET
|
|
@@ -32,24 +33,18 @@ import urllib.error
|
|
|
32
33
|
import urllib.parse
|
|
33
34
|
import urllib.request
|
|
34
35
|
import webbrowser
|
|
36
|
+
import zipfile
|
|
35
37
|
from functools import wraps
|
|
36
38
|
from string import Template
|
|
37
39
|
from threading import Lock, Thread
|
|
38
40
|
|
|
41
|
+
from gi.repository import Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk
|
|
42
|
+
|
|
39
43
|
import tryton.rpc as rpc
|
|
40
44
|
import tryton.translate as translate
|
|
45
|
+
from tryton import __version__
|
|
41
46
|
from tryton.cache import CacheDict
|
|
42
47
|
from tryton.config import CONFIG, PIXMAPS_DIR, SOUNDS_DIR, TRYTON_ICON
|
|
43
|
-
|
|
44
|
-
try:
|
|
45
|
-
import ssl
|
|
46
|
-
except ImportError:
|
|
47
|
-
ssl = None
|
|
48
|
-
import zipfile
|
|
49
|
-
|
|
50
|
-
from gi.repository import Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk
|
|
51
|
-
|
|
52
|
-
from tryton import __version__
|
|
53
48
|
from tryton.exceptions import TrytonError, TrytonServerError
|
|
54
49
|
from tryton.pyson import PYSONEncoder
|
|
55
50
|
|
|
@@ -238,6 +233,49 @@ class IconFactory:
|
|
|
238
233
|
IconFactory.load_local_icons()
|
|
239
234
|
|
|
240
235
|
|
|
236
|
+
class SolidColorFactory:
|
|
237
|
+
_pixbufs = defaultdict(dict)
|
|
238
|
+
|
|
239
|
+
@staticmethod
|
|
240
|
+
def _create_pixbuf(red, green, blue, width, height):
|
|
241
|
+
pixbuf = GdkPixbuf.Pixbuf.new(
|
|
242
|
+
GdkPixbuf.Colorspace.RGB, False, 8, width, height)
|
|
243
|
+
pixels = bytearray(pixbuf.get_pixels())
|
|
244
|
+
rowstride = pixbuf.get_rowstride()
|
|
245
|
+
for y in range(height):
|
|
246
|
+
for x in range(width):
|
|
247
|
+
offset = y * rowstride + x * 3
|
|
248
|
+
pixels[offset:offset + 3] = bytes([red, green, blue])
|
|
249
|
+
return GdkPixbuf.Pixbuf.new_from_data(
|
|
250
|
+
pixels, GdkPixbuf.Colorspace.RGB, False, 8, width, height,
|
|
251
|
+
rowstride)
|
|
252
|
+
|
|
253
|
+
@staticmethod
|
|
254
|
+
def hex_to_rgb(color):
|
|
255
|
+
color = color.lstrip('#')
|
|
256
|
+
if len(color) == 3:
|
|
257
|
+
color = ''.join([c * 2 for c in color])
|
|
258
|
+
if len(color) != 6:
|
|
259
|
+
return
|
|
260
|
+
try:
|
|
261
|
+
red = int(color[0:2], 16)
|
|
262
|
+
green = int(color[2:4], 16)
|
|
263
|
+
blue = int(color[4:6], 16)
|
|
264
|
+
except ValueError:
|
|
265
|
+
return
|
|
266
|
+
return red, green, blue
|
|
267
|
+
|
|
268
|
+
@classmethod
|
|
269
|
+
def get_pixbuf(cls, color, width=16, height=16):
|
|
270
|
+
rgb = cls.hex_to_rgb(color)
|
|
271
|
+
if rgb is None:
|
|
272
|
+
return
|
|
273
|
+
if rgb not in cls._pixbufs[width, height]:
|
|
274
|
+
cls._pixbufs[width, height][rgb] = cls._create_pixbuf(
|
|
275
|
+
*rgb, width, height)
|
|
276
|
+
return cls._pixbufs[width, height][rgb]
|
|
277
|
+
|
|
278
|
+
|
|
241
279
|
class ModelAccess(object):
|
|
242
280
|
|
|
243
281
|
batchnum = 100
|
|
@@ -341,6 +379,25 @@ class ModelNotification:
|
|
|
341
379
|
MODELNOTIFICATION = ModelNotification()
|
|
342
380
|
|
|
343
381
|
|
|
382
|
+
class ModelChat:
|
|
383
|
+
_models = None
|
|
384
|
+
|
|
385
|
+
def load_names(self):
|
|
386
|
+
try:
|
|
387
|
+
self._models = dict(rpc.execute(
|
|
388
|
+
'model', 'ir.chat.channel', 'get_models', rpc.CONTEXT))
|
|
389
|
+
except TrytonServerError:
|
|
390
|
+
pass
|
|
391
|
+
|
|
392
|
+
def __contains__(self, model):
|
|
393
|
+
if self._models is None:
|
|
394
|
+
self.load_names()
|
|
395
|
+
return model in self._models
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
MODELCHAT = ModelChat()
|
|
399
|
+
|
|
400
|
+
|
|
344
401
|
class ViewSearch(object):
|
|
345
402
|
searches = {}
|
|
346
403
|
|
|
@@ -349,7 +406,7 @@ class ViewSearch(object):
|
|
|
349
406
|
def default(self, obj):
|
|
350
407
|
if isinstance(obj, Decimal):
|
|
351
408
|
return float(obj)
|
|
352
|
-
return super(
|
|
409
|
+
return super().default(obj)
|
|
353
410
|
self.encoder = Encoder()
|
|
354
411
|
|
|
355
412
|
def load_searches(self):
|
|
@@ -721,7 +778,7 @@ class MessageDialog(UniqueDialog):
|
|
|
721
778
|
return dialog
|
|
722
779
|
|
|
723
780
|
def __call__(self, message, *args, **kwargs):
|
|
724
|
-
return super(
|
|
781
|
+
return super().__call__(message, *args, **kwargs)
|
|
725
782
|
|
|
726
783
|
|
|
727
784
|
message = MessageDialog()
|
|
@@ -854,7 +911,7 @@ class ConcurrencyDialog(UniqueDialog):
|
|
|
854
911
|
return dialog
|
|
855
912
|
|
|
856
913
|
def __call__(self, model, id_, context):
|
|
857
|
-
res = super(
|
|
914
|
+
res = super().__call__()
|
|
858
915
|
|
|
859
916
|
if res == Gtk.ResponseType.OK:
|
|
860
917
|
return True
|
|
@@ -932,7 +989,7 @@ class ErrorDialog(UniqueDialog):
|
|
|
932
989
|
title = "%s: %s" % (title.__class__.__name__, title)
|
|
933
990
|
details += '\n' + title
|
|
934
991
|
logger.error(details)
|
|
935
|
-
return super(
|
|
992
|
+
return super().__call__(title, details)
|
|
936
993
|
|
|
937
994
|
|
|
938
995
|
error = ErrorDialog()
|
|
@@ -965,8 +1022,8 @@ def check_version(box, version=__version__):
|
|
|
965
1022
|
|
|
966
1023
|
logger.info(_("Check URL: %s"), url)
|
|
967
1024
|
try:
|
|
968
|
-
|
|
969
|
-
|
|
1025
|
+
context = ssl.create_default_context(cafile=rpc._CA_CERTS)
|
|
1026
|
+
urllib.request.urlopen(HeadRequest(url), timeout=5, context=context)
|
|
970
1027
|
except (urllib.error.HTTPError, socket.timeout):
|
|
971
1028
|
return True
|
|
972
1029
|
except Exception:
|
|
@@ -977,7 +1034,7 @@ def check_version(box, version=__version__):
|
|
|
977
1034
|
if check_version(box, version):
|
|
978
1035
|
info_bar = Gtk.InfoBar()
|
|
979
1036
|
info_bar.get_content_area().pack_start(
|
|
980
|
-
Gtk.Label(label=_("A new version is available
|
|
1037
|
+
Gtk.Label(label=_(f"A new version ({version}) is available.")),
|
|
981
1038
|
expand=True, fill=True, padding=0)
|
|
982
1039
|
info_bar.set_show_close_button(True)
|
|
983
1040
|
info_bar.add_button(_("Download"), Gtk.ResponseType.ACCEPT)
|
|
@@ -1249,7 +1306,7 @@ def generateColorscheme(masterColor, keys, light=0.1):
|
|
|
1249
1306
|
class RPCException(Exception):
|
|
1250
1307
|
|
|
1251
1308
|
def __init__(self, exception):
|
|
1252
|
-
super(
|
|
1309
|
+
super().__init__(exception)
|
|
1253
1310
|
self.exception = exception
|
|
1254
1311
|
|
|
1255
1312
|
|
|
@@ -1556,7 +1613,7 @@ def setup_window(window):
|
|
|
1556
1613
|
|
|
1557
1614
|
def play_sound(self, sound='success'):
|
|
1558
1615
|
try:
|
|
1559
|
-
from
|
|
1616
|
+
from playsound3 import playsound
|
|
1560
1617
|
playsound(os.path.join(SOUNDS_DIR, f'{sound}.wav'))
|
|
1561
1618
|
except ImportError:
|
|
1562
1619
|
pass
|
|
@@ -1574,3 +1631,18 @@ def get_gdk_backend():
|
|
|
1574
1631
|
if 'wayland' in dm_class_name:
|
|
1575
1632
|
return 'wayland'
|
|
1576
1633
|
return 'x11'
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
def get_monitor_size():
|
|
1637
|
+
from tryton.gui import Main
|
|
1638
|
+
|
|
1639
|
+
main_gdk_window = Main().window.get_window()
|
|
1640
|
+
if not main_gdk_window:
|
|
1641
|
+
return None, None
|
|
1642
|
+
|
|
1643
|
+
display = Gdk.Display.get_default()
|
|
1644
|
+
monitor = display.get_monitor_at_window(main_gdk_window)
|
|
1645
|
+
geometry = monitor.get_geometry()
|
|
1646
|
+
return (
|
|
1647
|
+
geometry.width / monitor.get_scale_factor(),
|
|
1648
|
+
geometry.height / monitor.get_scale_factor())
|
tryton/common/domain_parser.py
CHANGED
|
@@ -5,6 +5,7 @@ import decimal
|
|
|
5
5
|
import gettext
|
|
6
6
|
import io
|
|
7
7
|
import locale
|
|
8
|
+
import math
|
|
8
9
|
from collections import OrderedDict
|
|
9
10
|
from decimal import Decimal
|
|
10
11
|
from shlex import shlex
|
|
@@ -336,17 +337,18 @@ def format_value(field, value, target=None, context=None, _quote_empty=False):
|
|
|
336
337
|
or isinstance(value, bool))):
|
|
337
338
|
return ''
|
|
338
339
|
digit = 0
|
|
339
|
-
|
|
340
|
-
cast = Decimal
|
|
341
|
-
else:
|
|
342
|
-
cast = float
|
|
343
|
-
factor = cast(field.get('factor', 1))
|
|
344
|
-
string_ = str(value * factor)
|
|
340
|
+
string_ = str(value)
|
|
345
341
|
if 'e' in string_:
|
|
346
342
|
string_, exp = string_.split('e')
|
|
347
343
|
digit -= int(exp)
|
|
348
344
|
if '.' in string_:
|
|
349
345
|
digit += len(string_.rstrip('0').split('.')[1])
|
|
346
|
+
if isinstance(value, Decimal):
|
|
347
|
+
cast = Decimal
|
|
348
|
+
else:
|
|
349
|
+
cast = float
|
|
350
|
+
factor = cast(field.get('factor', 1))
|
|
351
|
+
digit -= round(math.log10(factor))
|
|
350
352
|
return locale.localize(
|
|
351
353
|
'{0:.{1}f}'.format(value * factor or 0, digit), True)
|
|
352
354
|
|
tryton/common/environment.py
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
class EvalEnvironment(dict):
|
|
6
6
|
|
|
7
7
|
def __init__(self, parent, eval_type='eval'):
|
|
8
|
-
super(
|
|
8
|
+
super().__init__()
|
|
9
9
|
self.parent = parent
|
|
10
10
|
assert eval_type in ('eval', 'on_change')
|
|
11
11
|
self.eval_type = eval_type
|
|
@@ -33,7 +33,7 @@ class EvalEnvironment(dict):
|
|
|
33
33
|
return self.__getitem__(item)
|
|
34
34
|
except KeyError:
|
|
35
35
|
pass
|
|
36
|
-
return super(
|
|
36
|
+
return super().get(item, default)
|
|
37
37
|
|
|
38
38
|
def __bool__(self):
|
|
39
39
|
return True
|
tryton/common/number_entry.py
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# this repository contains the full copyright notices and license terms.
|
|
3
3
|
import gettext
|
|
4
4
|
import locale
|
|
5
|
+
import math
|
|
5
6
|
from decimal import Decimal, InvalidOperation
|
|
6
7
|
|
|
7
8
|
from gi.repository import Gdk, GObject, Gtk
|
|
@@ -64,13 +65,18 @@ class NumberEntry(Gtk.Entry, Gtk.Editable):
|
|
|
64
65
|
value = Decimal(locale.delocalize(text, self.monetary))
|
|
65
66
|
except (ValueError, InvalidOperation):
|
|
66
67
|
return position
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
if self.__digits:
|
|
69
|
+
int_size, dec_size = self.__digits
|
|
70
|
+
try:
|
|
71
|
+
if int_size is not None and value:
|
|
72
|
+
if math.ceil(math.log10(abs(value))) > int_size:
|
|
73
|
+
return position
|
|
74
|
+
if dec_size is not None:
|
|
75
|
+
if (round(value, dec_size) != value
|
|
76
|
+
or value.as_tuple().exponent < -dec_size):
|
|
77
|
+
return position
|
|
78
|
+
except InvalidOperation:
|
|
71
79
|
return position
|
|
72
|
-
except InvalidOperation:
|
|
73
|
-
return position
|
|
74
80
|
length = len(new_text.encode('utf-8'))
|
|
75
81
|
buffer_.insert_text(position, new_text, length)
|
|
76
82
|
return position + length
|
tryton/common/selection.py
CHANGED
|
@@ -11,7 +11,7 @@ from tryton.common import RPCException, RPCExecute, eval_domain
|
|
|
11
11
|
class SelectionMixin(object):
|
|
12
12
|
|
|
13
13
|
def __init__(self, *args, **kwargs):
|
|
14
|
-
super(
|
|
14
|
+
super().__init__(*args, **kwargs)
|
|
15
15
|
self.nullable_widget = True
|
|
16
16
|
self.selection = None
|
|
17
17
|
self.inactive_selection = []
|
|
Binary file
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
msgid ""
|
|
6
6
|
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
|
7
7
|
|
|
8
|
+
msgid "Make this an _internal message"
|
|
9
|
+
msgstr ""
|
|
10
|
+
|
|
11
|
+
msgid "Send"
|
|
12
|
+
msgstr ""
|
|
13
|
+
|
|
8
14
|
msgid "specify alternate config file"
|
|
9
15
|
msgstr "укажете друг конфигурационен файл"
|
|
10
16
|
|
|
@@ -133,9 +139,6 @@ msgstr ""
|
|
|
133
139
|
msgid "Unable to check for new version."
|
|
134
140
|
msgstr ""
|
|
135
141
|
|
|
136
|
-
msgid "A new version is available!"
|
|
137
|
-
msgstr ""
|
|
138
|
-
|
|
139
142
|
msgid "Download"
|
|
140
143
|
msgstr ""
|
|
141
144
|
|
|
@@ -659,9 +662,6 @@ msgstr "Прикачен файл:"
|
|
|
659
662
|
msgid "Files"
|
|
660
663
|
msgstr ""
|
|
661
664
|
|
|
662
|
-
msgid "Send"
|
|
663
|
-
msgstr ""
|
|
664
|
-
|
|
665
665
|
#, fuzzy
|
|
666
666
|
msgid "Select File"
|
|
667
667
|
msgstr "Избор"
|
|
@@ -888,6 +888,13 @@ msgstr ""
|
|
|
888
888
|
msgid "Add a note to the record"
|
|
889
889
|
msgstr ""
|
|
890
890
|
|
|
891
|
+
msgid "C_hat"
|
|
892
|
+
msgstr ""
|
|
893
|
+
|
|
894
|
+
#, fuzzy
|
|
895
|
+
msgid "Chat on the record"
|
|
896
|
+
msgstr "Създаване на нов запис"
|
|
897
|
+
|
|
891
898
|
msgid "_Actions..."
|
|
892
899
|
msgstr "Действия..."
|
|
893
900
|
|
|
@@ -1015,11 +1022,9 @@ msgstr ""
|
|
|
1015
1022
|
|
|
1016
1023
|
#, fuzzy, python-format
|
|
1017
1024
|
msgid "%d record saved."
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
msgid "%d records saved."
|
|
1022
|
-
msgstr "%d записа съхранени!"
|
|
1025
|
+
msgid_plural "%d records saved."
|
|
1026
|
+
msgstr[0] "%d заспис съхранен!"
|
|
1027
|
+
msgstr[1] "%d заспис съхранен!"
|
|
1023
1028
|
|
|
1024
1029
|
msgid "Export failed"
|
|
1025
1030
|
msgstr ""
|
|
@@ -1103,11 +1108,9 @@ msgstr ""
|
|
|
1103
1108
|
|
|
1104
1109
|
#, fuzzy, python-format
|
|
1105
1110
|
msgid "%d record imported."
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
msgid "%d records imported."
|
|
1110
|
-
msgstr "%d записи вмъкнати!"
|
|
1111
|
+
msgid_plural "%d records imported."
|
|
1112
|
+
msgstr[0] "%d запис вмъкнат!"
|
|
1113
|
+
msgstr[1] "%d запис вмъкнат!"
|
|
1111
1114
|
|
|
1112
1115
|
msgid "Search"
|
|
1113
1116
|
msgstr "Търсене"
|
|
@@ -1186,6 +1189,9 @@ msgstr "Запис като"
|
|
|
1186
1189
|
msgid "Image size too large."
|
|
1187
1190
|
msgstr "Размера на изображението е много голям!"
|
|
1188
1191
|
|
|
1192
|
+
msgid "Reset Column Widths"
|
|
1193
|
+
msgstr ""
|
|
1194
|
+
|
|
1189
1195
|
msgid "Copy"
|
|
1190
1196
|
msgstr ""
|
|
1191
1197
|
|
|
@@ -1266,6 +1272,10 @@ msgstr "Всички файлове"
|
|
|
1266
1272
|
msgid "Show plain text"
|
|
1267
1273
|
msgstr "Показване само на текст"
|
|
1268
1274
|
|
|
1275
|
+
#, python-format
|
|
1276
|
+
msgid "Select a color for \"%s\""
|
|
1277
|
+
msgstr ""
|
|
1278
|
+
|
|
1269
1279
|
msgid "Add value"
|
|
1270
1280
|
msgstr ""
|
|
1271
1281
|
|
|
Binary file
|
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
msgid ""
|
|
7
7
|
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
|
8
8
|
|
|
9
|
+
msgid "Make this an _internal message"
|
|
10
|
+
msgstr ""
|
|
11
|
+
|
|
12
|
+
msgid "Send"
|
|
13
|
+
msgstr "Envia"
|
|
14
|
+
|
|
9
15
|
msgid "specify alternate config file"
|
|
10
16
|
msgstr "Indica un fitxer de configuració alternatiu"
|
|
11
17
|
|
|
@@ -128,9 +134,6 @@ msgstr "URL de comprovació: %s"
|
|
|
128
134
|
msgid "Unable to check for new version."
|
|
129
135
|
msgstr "No s'ha pogut comprovar si existeix una nova versió."
|
|
130
136
|
|
|
131
|
-
msgid "A new version is available!"
|
|
132
|
-
msgstr "Hi ha una nova versió disponible!"
|
|
133
|
-
|
|
134
137
|
msgid "Download"
|
|
135
138
|
msgstr "Baixa"
|
|
136
139
|
|
|
@@ -623,9 +626,6 @@ msgstr "Adjunts"
|
|
|
623
626
|
msgid "Files"
|
|
624
627
|
msgstr "Fitxers"
|
|
625
628
|
|
|
626
|
-
msgid "Send"
|
|
627
|
-
msgstr "Envia"
|
|
628
|
-
|
|
629
629
|
msgid "Select File"
|
|
630
630
|
msgstr "Selecciona un fitxer"
|
|
631
631
|
|
|
@@ -832,6 +832,13 @@ msgstr "_Notes..."
|
|
|
832
832
|
msgid "Add a note to the record"
|
|
833
833
|
msgstr "Afegeix una nota al registre"
|
|
834
834
|
|
|
835
|
+
msgid "C_hat"
|
|
836
|
+
msgstr ""
|
|
837
|
+
|
|
838
|
+
#, fuzzy
|
|
839
|
+
msgid "Chat on the record"
|
|
840
|
+
msgstr "Afegeix una nota al registre"
|
|
841
|
+
|
|
835
842
|
msgid "_Actions..."
|
|
836
843
|
msgstr "_Accions..."
|
|
837
844
|
|
|
@@ -948,13 +955,11 @@ msgstr "Quin és el nom d'aquesta exportació?"
|
|
|
948
955
|
msgid "Override '%s' definition?"
|
|
949
956
|
msgstr "Voleu sobreescriure la definició de '%s'?"
|
|
950
957
|
|
|
951
|
-
#, python-format
|
|
958
|
+
#, fuzzy, python-format
|
|
952
959
|
msgid "%d record saved."
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
msgid "%d records saved."
|
|
957
|
-
msgstr "S'han desat %d registres."
|
|
960
|
+
msgid_plural "%d records saved."
|
|
961
|
+
msgstr[0] "S'ha desat %d registre."
|
|
962
|
+
msgstr[1] "S'ha desat %d registre."
|
|
958
963
|
|
|
959
964
|
msgid "Export failed"
|
|
960
965
|
msgstr "Ha fallat l'exportació"
|
|
@@ -1033,13 +1038,11 @@ msgstr "Error"
|
|
|
1033
1038
|
msgid "Import failed"
|
|
1034
1039
|
msgstr "Ha fallat la importació"
|
|
1035
1040
|
|
|
1036
|
-
#, python-format
|
|
1041
|
+
#, fuzzy, python-format
|
|
1037
1042
|
msgid "%d record imported."
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
msgid "%d records imported."
|
|
1042
|
-
msgstr "S'han importat %d registres."
|
|
1043
|
+
msgid_plural "%d records imported."
|
|
1044
|
+
msgstr[0] "S'ha importat %d registre."
|
|
1045
|
+
msgstr[1] "S'ha importat %d registre."
|
|
1043
1046
|
|
|
1044
1047
|
msgid "Search"
|
|
1045
1048
|
msgstr "Cerca"
|
|
@@ -1111,6 +1114,10 @@ msgstr "Anomena i desa"
|
|
|
1111
1114
|
msgid "Image size too large."
|
|
1112
1115
|
msgstr "La mida de la imatge és massa gran."
|
|
1113
1116
|
|
|
1117
|
+
#, fuzzy
|
|
1118
|
+
msgid "Reset Column Widths"
|
|
1119
|
+
msgstr "Guarda l'ample de la columna"
|
|
1120
|
+
|
|
1114
1121
|
msgid "Copy"
|
|
1115
1122
|
msgstr "Copia"
|
|
1116
1123
|
|
|
@@ -1189,6 +1196,10 @@ msgstr "Tots els fitxers"
|
|
|
1189
1196
|
msgid "Show plain text"
|
|
1190
1197
|
msgstr "Mostra com a text pla"
|
|
1191
1198
|
|
|
1199
|
+
#, fuzzy, python-format
|
|
1200
|
+
msgid "Select a color for \"%s\""
|
|
1201
|
+
msgstr "Seleccioneu un color"
|
|
1202
|
+
|
|
1192
1203
|
msgid "Add value"
|
|
1193
1204
|
msgstr "Afegeix un valor"
|
|
1194
1205
|
|
|
Binary file
|
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
msgid ""
|
|
6
6
|
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
|
7
7
|
|
|
8
|
+
msgid "Make this an _internal message"
|
|
9
|
+
msgstr ""
|
|
10
|
+
|
|
11
|
+
msgid "Send"
|
|
12
|
+
msgstr ""
|
|
13
|
+
|
|
8
14
|
msgid "specify alternate config file"
|
|
9
15
|
msgstr "zadejte alternativní konfigurační soubor"
|
|
10
16
|
|
|
@@ -133,9 +139,6 @@ msgstr ""
|
|
|
133
139
|
msgid "Unable to check for new version."
|
|
134
140
|
msgstr ""
|
|
135
141
|
|
|
136
|
-
msgid "A new version is available!"
|
|
137
|
-
msgstr ""
|
|
138
|
-
|
|
139
142
|
msgid "Download"
|
|
140
143
|
msgstr ""
|
|
141
144
|
|
|
@@ -664,9 +667,6 @@ msgstr "Příloha:"
|
|
|
664
667
|
msgid "Files"
|
|
665
668
|
msgstr ""
|
|
666
669
|
|
|
667
|
-
msgid "Send"
|
|
668
|
-
msgstr ""
|
|
669
|
-
|
|
670
670
|
#, fuzzy
|
|
671
671
|
msgid "Select File"
|
|
672
672
|
msgstr "Výběr"
|
|
@@ -899,6 +899,13 @@ msgstr ""
|
|
|
899
899
|
msgid "Add a note to the record"
|
|
900
900
|
msgstr ""
|
|
901
901
|
|
|
902
|
+
msgid "C_hat"
|
|
903
|
+
msgstr ""
|
|
904
|
+
|
|
905
|
+
#, fuzzy
|
|
906
|
+
msgid "Chat on the record"
|
|
907
|
+
msgstr "Vytvořit nový záznam"
|
|
908
|
+
|
|
902
909
|
msgid "_Actions..."
|
|
903
910
|
msgstr "Akce..."
|
|
904
911
|
|
|
@@ -1028,11 +1035,10 @@ msgstr ""
|
|
|
1028
1035
|
|
|
1029
1036
|
#, fuzzy, python-format
|
|
1030
1037
|
msgid "%d record saved."
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
msgstr "%d záznamů uloženo!"
|
|
1038
|
+
msgid_plural "%d records saved."
|
|
1039
|
+
msgstr[0] "%d záznam uložen!"
|
|
1040
|
+
msgstr[1] "%d záznam uložen!"
|
|
1041
|
+
msgstr[2] "%d záznam uložen!"
|
|
1036
1042
|
|
|
1037
1043
|
msgid "Export failed"
|
|
1038
1044
|
msgstr ""
|
|
@@ -1120,11 +1126,10 @@ msgstr ""
|
|
|
1120
1126
|
|
|
1121
1127
|
#, fuzzy, python-format
|
|
1122
1128
|
msgid "%d record imported."
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
msgstr "%d záznamů načteno!"
|
|
1129
|
+
msgid_plural "%d records imported."
|
|
1130
|
+
msgstr[0] "%d záznam načten!"
|
|
1131
|
+
msgstr[1] "%d záznam načten!"
|
|
1132
|
+
msgstr[2] "%d záznam načten!"
|
|
1128
1133
|
|
|
1129
1134
|
msgid "Search"
|
|
1130
1135
|
msgstr "Hledat"
|
|
@@ -1201,6 +1206,9 @@ msgstr "Uložit jako"
|
|
|
1201
1206
|
msgid "Image size too large."
|
|
1202
1207
|
msgstr "Rozměry obrázku jsou příliš velké!"
|
|
1203
1208
|
|
|
1209
|
+
msgid "Reset Column Widths"
|
|
1210
|
+
msgstr ""
|
|
1211
|
+
|
|
1204
1212
|
msgid "Copy"
|
|
1205
1213
|
msgstr ""
|
|
1206
1214
|
|
|
@@ -1281,6 +1289,10 @@ msgstr "Všechny soubory"
|
|
|
1281
1289
|
msgid "Show plain text"
|
|
1282
1290
|
msgstr ""
|
|
1283
1291
|
|
|
1292
|
+
#, python-format
|
|
1293
|
+
msgid "Select a color for \"%s\""
|
|
1294
|
+
msgstr ""
|
|
1295
|
+
|
|
1284
1296
|
msgid "Add value"
|
|
1285
1297
|
msgstr ""
|
|
1286
1298
|
|
|
Binary file
|