From 96b3cd049c2bd8845f04e4067a176d68e73829be Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 13:25:19 +0200 Subject: [PATCH 01/13] Clarify command-help for set command. Resolve #1944. --- evennia/commands/default/building.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 8222297fb4..6712aa8a7f 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1469,10 +1469,10 @@ class CmdSetAttribute(ObjManipCommand): char: Setting an attribute on a character (global search) character: Alias for char, as above. - Sets attributes on objects. The second form clears - a previously set attribute while the last form - inspects the current value of the attribute - (if any). + Sets attributes on objects. The second example form above clears a + previously set attribute while the third form inspects the current value of + the attribute (if any). The last one (with the star) is a shortcut for + operatin on a player Account rather than an Object. The most common data to save with this command are strings and numbers. You can however also set Python primitives such as lists, From 88e8e885940d166f6a3283935757dd6149ca48c0 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 13:32:12 +0200 Subject: [PATCH 02/13] Change about command to put relevant version info first, as per #1945 --- evennia/commands/default/system.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/evennia/commands/default/system.py b/evennia/commands/default/system.py index c408493248..088503df41 100644 --- a/evennia/commands/default/system.py +++ b/evennia/commands/default/system.py @@ -768,8 +768,13 @@ class CmdAbout(COMMAND_DEFAULT_CLASS): """Display information about server or target""" string = """ - |cEvennia|n {version}|n - MU* development system + |cEvennia|n MU* development system + + |wEvennia version|n: {version} + |wOS|n: {os} + |wPython|n: {python} + |wTwisted|n: {twisted} + |wDjango|n: {django} |wLicence|n https://opensource.org/licenses/BSD-3-Clause |wWeb|n http://www.evennia.com @@ -778,10 +783,6 @@ class CmdAbout(COMMAND_DEFAULT_CLASS): |wMaintainer|n (2010-) Griatch (griatch AT gmail DOT com) |wMaintainer|n (2006-10) Greg Taylor - |wOS|n {os} - |wPython|n {python} - |wTwisted|n {twisted} - |wDjango|n {django} """.format(version=utils.get_evennia_version(), os=os.name, python=sys.version.split()[0], From 83af02c21d52647d264f15ab15977fc4a1b9ec5c Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 14:00:05 +0200 Subject: [PATCH 03/13] Update issue templates --- .github/ISSUE_TEMPLATE/bug-report.md | 27 +++++++++++++++++++ .github/ISSUE_TEMPLATE/bug_report.md | 27 +++++++++++++++++++ .github/ISSUE_TEMPLATE/documentation-issue.md | 14 ++++++++++ .github/ISSUE_TEMPLATE/feature-request.md | 20 ++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/documentation-issue.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000000..d7bd11e964 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG] Enter a brief description here" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. +2. +3. +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Environment, Evennia version, OS** +If unsure, run `evennia -v` or get the first few lines of the `about` command in-game. + +**Additional context** +Any other context about the problem, or ideas on how to solve. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..d7bd11e964 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG] Enter a brief description here" +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. +2. +3. +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Environment, Evennia version, OS** +If unsure, run `evennia -v` or get the first few lines of the `about` command in-game. + +**Additional context** +Any other context about the problem, or ideas on how to solve. diff --git a/.github/ISSUE_TEMPLATE/documentation-issue.md b/.github/ISSUE_TEMPLATE/documentation-issue.md new file mode 100644 index 0000000000..66a73840dd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation-issue.md @@ -0,0 +1,14 @@ +--- +name: Documentation issue +about: Documentation problems and suggestions +title: '' +labels: documentation +assignees: '' + +--- + +**Documentation issue** +Describe what the issue is and where it can/should be found. + +**Suggested change** +The suggested change. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000000..b09d6e3afe --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[Feature Request] Enter a brief description here" +labels: feature-request +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From c13bc5ab53804b1d419659eb79e77aecd5f00681 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 14:02:33 +0200 Subject: [PATCH 04/13] Remove unnecessary issue template --- .github/ISSUE_TEMPLATE/bug_report.md | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index d7bd11e964..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "[BUG] Enter a brief description here" -labels: bug -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. -2. -3. -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Environment, Evennia version, OS** -If unsure, run `evennia -v` or get the first few lines of the `about` command in-game. - -**Additional context** -Any other context about the problem, or ideas on how to solve. From eb10dde76109bb6060da4eab32ea7ffa0e1ac6dd Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 14:39:44 +0200 Subject: [PATCH 05/13] Some more fixes to issue templates --- .github/ISSUE_TEMPLATE/bug-report.md | 10 +++++----- .github/ISSUE_TEMPLATE/documentation-issue.md | 4 ++-- .github/ISSUE_TEMPLATE/feature-request.md | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index d7bd11e964..9dfdd7cb54 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -7,21 +7,21 @@ assignees: '' --- -**Describe the bug** +#### Describe the bug A clear and concise description of what the bug is. -**To Reproduce** +####To Reproduce Steps to reproduce the behavior: 1. 2. 3. 4. See error -**Expected behavior** +####Expected behavior A clear and concise description of what you expected to happen. -**Environment, Evennia version, OS** +####Environment, Evennia version, OS etc If unsure, run `evennia -v` or get the first few lines of the `about` command in-game. -**Additional context** +####Additional context Any other context about the problem, or ideas on how to solve. diff --git a/.github/ISSUE_TEMPLATE/documentation-issue.md b/.github/ISSUE_TEMPLATE/documentation-issue.md index 66a73840dd..6c0ef8a2cf 100644 --- a/.github/ISSUE_TEMPLATE/documentation-issue.md +++ b/.github/ISSUE_TEMPLATE/documentation-issue.md @@ -7,8 +7,8 @@ assignees: '' --- -**Documentation issue** +####Documentation issue Describe what the issue is and where it can/should be found. -**Suggested change** +####Suggested change The suggested change. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index b09d6e3afe..b342169ee9 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -7,14 +7,14 @@ assignees: '' --- -**Is your feature request related to a problem? Please describe.** +####Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -**Describe the solution you'd like** +####Describe the solution you'd like A clear and concise description of what you want to happen. -**Describe alternatives you've considered** +####Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. -**Additional context** +####Additional context Add any other context or screenshots about the feature request here. From 10e01fa3b6cc10e5d50946691180cba4d74c1ccb Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 14:41:07 +0200 Subject: [PATCH 06/13] Further issue-template fixes --- .github/ISSUE_TEMPLATE/bug-report.md | 8 ++++---- .github/ISSUE_TEMPLATE/documentation-issue.md | 4 ++-- .github/ISSUE_TEMPLATE/feature-request.md | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 9dfdd7cb54..580225a96a 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -10,18 +10,18 @@ assignees: '' #### Describe the bug A clear and concise description of what the bug is. -####To Reproduce +#### To Reproduce Steps to reproduce the behavior: 1. 2. 3. 4. See error -####Expected behavior +#### Expected behavior A clear and concise description of what you expected to happen. -####Environment, Evennia version, OS etc +#### Environment, Evennia version, OS etc If unsure, run `evennia -v` or get the first few lines of the `about` command in-game. -####Additional context +#### Additional context Any other context about the problem, or ideas on how to solve. diff --git a/.github/ISSUE_TEMPLATE/documentation-issue.md b/.github/ISSUE_TEMPLATE/documentation-issue.md index 6c0ef8a2cf..200676bf5e 100644 --- a/.github/ISSUE_TEMPLATE/documentation-issue.md +++ b/.github/ISSUE_TEMPLATE/documentation-issue.md @@ -7,8 +7,8 @@ assignees: '' --- -####Documentation issue +#### Documentation issue Describe what the issue is and where it can/should be found. -####Suggested change +#### Suggested change The suggested change. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index b342169ee9..7dc702cfad 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -7,14 +7,14 @@ assignees: '' --- -####Is your feature request related to a problem? Please describe. +#### Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -####Describe the solution you'd like +#### Describe the solution you'd like A clear and concise description of what you want to happen. -####Describe alternatives you've considered +#### Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. -####Additional context +#### Additional context Add any other context or screenshots about the feature request here. From b5b66b271c0951a3a14ea086e15040258b1ea968 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 14:42:52 +0200 Subject: [PATCH 07/13] Add default title for doc-issues --- .github/ISSUE_TEMPLATE/documentation-issue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/documentation-issue.md b/.github/ISSUE_TEMPLATE/documentation-issue.md index 200676bf5e..bffee8dfb5 100644 --- a/.github/ISSUE_TEMPLATE/documentation-issue.md +++ b/.github/ISSUE_TEMPLATE/documentation-issue.md @@ -1,7 +1,7 @@ --- name: Documentation issue about: Documentation problems and suggestions -title: '' +title: '[Documentation] Enter a brief description here' labels: documentation assignees: '' From dafec2e72097ebc3fb8c91752fc88e043d7e257e Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 19:22:15 +0200 Subject: [PATCH 08/13] Don't trim input whitespace from webclient, to better support python code input, as per #1935 --- .../web/webclient/static/webclient/js/plugins/default_in.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evennia/web/webclient/static/webclient/js/plugins/default_in.js b/evennia/web/webclient/static/webclient/js/plugins/default_in.js index cfde412043..044e4e7ec8 100644 --- a/evennia/web/webclient/static/webclient/js/plugins/default_in.js +++ b/evennia/web/webclient/static/webclient/js/plugins/default_in.js @@ -28,9 +28,9 @@ let defaultin_plugin = (function () { case 13: // Enter key var outtext = inputfield.val() || ""; // Grab the text from which-ever inputfield is focused if ( !event.shiftKey ) { // Enter Key without shift --> send Mesg - var lines = outtext.trim().replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n"); + var lines = outtext.replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n"); for (var i = 0; i < lines.length; i++) { - plugin_handler.onSend( lines[i].trim() ); + plugin_handler.onSend( lines[i] ); } inputfield.val(""); // Clear this inputfield event.preventDefault(); From bb370c89fe8d36a8fca60405065c3fda07c8659d Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 19:22:48 +0200 Subject: [PATCH 09/13] Enforce LINEMODE state for vanilla telnet. Resolve #1942 --- evennia/commands/default/system.py | 4 ++-- evennia/server/portal/telnet.py | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/evennia/commands/default/system.py b/evennia/commands/default/system.py index 088503df41..fded209d90 100644 --- a/evennia/commands/default/system.py +++ b/evennia/commands/default/system.py @@ -298,8 +298,8 @@ class CmdPy(COMMAND_DEFAULT_CLASS): being parsed as HTML in the webclient but not in telnet clients) Without argument, open a Python console in-game. This is a full console, - accepting multi-line Python code for testing and debugging. Type `exit` to - return to the game. If Evennia is reloaded, thek console will be closed. + accepting multi-line Python code for testing and debugging. Type `exit()` to + return to the game. If Evennia is reloaded, the console will be closed. Enter a line of instruction after the 'py' command to execute it immediately. Separate multiple commands by ';' or open the code editor diff --git a/evennia/server/portal/telnet.py b/evennia/server/portal/telnet.py index b82754f37a..19ac5d10d8 100644 --- a/evennia/server/portal/telnet.py +++ b/evennia/server/portal/telnet.py @@ -11,7 +11,8 @@ import re from twisted.internet import protocol from twisted.internet.task import LoopingCall from twisted.conch.telnet import Telnet, StatefulTelnetProtocol -from twisted.conch.telnet import IAC, NOP, LINEMODE, GA, WILL, WONT, ECHO, NULL +from twisted.conch.telnet import (IAC, NOP, LINEMODE, GA, WILL, WONT, ECHO, NULL, + MODE, LINEMODE_EDIT, LINEMODE_TRAPSIG) from django.conf import settings from evennia.server.session import Session from evennia.server.portal import ttype, mssp, telnet_oob, naws, suppress_ga @@ -51,6 +52,8 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session): This is called when the connection is first established. """ + # important in order to work normally with standard telnet + self.do(LINEMODE) # initialize the session self.line_buffer = b"" client_address = self.transport.client @@ -146,12 +149,18 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session): enable (bool): If this option should be enabled. """ - return (option == LINEMODE or - option == ttype.TTYPE or - option == naws.NAWS or - option == MCCP or - option == mssp.MSSP or - option == suppress_ga.SUPPRESS_GA) + if option == LINEMODE: + # make sure to activate line mode with local editing for all clients + self.requestNegotiation(LINEMODE, MODE + + bytes(chr(ord(LINEMODE_EDIT) + + ord(LINEMODE_TRAPSIG)), 'ascii')) + return True + else: + return (option == ttype.TTYPE or + option == naws.NAWS or + option == MCCP or + option == mssp.MSSP or + option == suppress_ga.SUPPRESS_GA) def enableLocal(self, option): """ @@ -164,7 +173,8 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session): enable (bool): If this option should be enabled. """ - return (option == MCCP or + return (option == LINEMODE or + option == MCCP or option == ECHO or option == suppress_ga.SUPPRESS_GA) From a315b3c7ec4d63a7c98a2ff741adfb3822ca3965 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 22 Sep 2019 19:41:24 +0200 Subject: [PATCH 10/13] Add simplified Korean translation by aceamro in #1947 --- CHANGELOG.md | 1 + evennia/locale/fr/LC_MESSAGES/django.mo | Bin 5525 -> 5484 bytes evennia/locale/it/LC_MESSAGES/django.mo | Bin 6031 -> 5561 bytes evennia/locale/ko/LC_MESSAGES/django.mo | Bin 0 -> 7083 bytes evennia/locale/ko/LC_MESSAGES/django.po | 333 ++++++++++++++++++++++++ evennia/locale/pl/LC_MESSAGES/django.mo | Bin 3605 -> 3564 bytes evennia/locale/pt/LC_MESSAGES/django.mo | Bin 6370 -> 5922 bytes evennia/locale/sv/LC_MESSAGES/django.mo | Bin 3488 -> 3041 bytes evennia/locale/zh/LC_MESSAGES/django.mo | Bin 6725 -> 6684 bytes 9 files changed, 334 insertions(+) create mode 100644 evennia/locale/ko/LC_MESSAGES/django.mo create mode 100644 evennia/locale/ko/LC_MESSAGES/django.po diff --git a/CHANGELOG.md b/CHANGELOG.md index 45cd4cc941..7778576124 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ without arguments starts a full interactive Python console. - `AttributeHandler.get(return_list=True)` will return `[]` if there are no Attributes instead of `[None]`. - Remove `pillow` requirement (install especially if using imagefield) +- Add Simplified Korean translation (user aceamro) ## Evennia 0.9 (2018-2019) diff --git a/evennia/locale/fr/LC_MESSAGES/django.mo b/evennia/locale/fr/LC_MESSAGES/django.mo index b16ad24fa011131aa7c6638e1970c2d15ca70c11..6ed877e2c7fcac7f293096f791d697ec716dcacc 100644 GIT binary patch delta 370 zcmXZYze|Eq6vpw#7Ys39Efphl3CdDQ60x5;H0Tly%^4^z4H8C>OCYxS2Q)U;76yWY zLwn%n7CA+mnb%7 delta 409 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 U`Y3&)y!U_VbbjxAV4o=e19t_jK>z>% literal 0 HcmV?d00001 diff --git a/evennia/locale/ko/LC_MESSAGES/django.po b/evennia/locale/ko/LC_MESSAGES/django.po new file mode 100644 index 0000000000..dbef340a04 --- /dev/null +++ b/evennia/locale/ko/LC_MESSAGES/django.po @@ -0,0 +1,333 @@ +##The Simplified Korean translation for the Evennia server. +##Copyright (C) 2019 Ethan Kwon +##This file is distributed under the same license as the Evennia package. +##FIRST AUTHOR: Ethan Kwon , 2019- +## +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-21 05:00+0900\n" +"PO-Revision-Date: 2019-09-21 05:00+0900\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .\accounts\accounts.py:784 +msgid "Account being deleted." +msgstr "계정이 삭제되었습니다." + +#: .\commands\cmdhandler.py:680 +msgid "There were multiple matches." +msgstr "여러 개의 일치 항목을 찾았습니다." + +#: .\commands\cmdhandler.py:703 +#, python-format +msgid "Command '%s' is not available." +msgstr "'%s' 명령은 사용할 수 없습니다." + +#: .\commands\cmdhandler.py:708 +#, python-format +msgid " Maybe you meant %s?" +msgstr "'%s'이 맞습니까?" + +#: .\commands\cmdhandler.py:708 +msgid "or" +msgstr "또는" + +#: .\commands\cmdhandler.py:710 +msgid " Type \"help\" for help." +msgstr " 도음말은 \"help\"를 입력하세요." + +#: .\commands\cmdsethandler.py:89 +#, python-brace-format +msgid "" +"{traceback}\n" +"Error loading cmdset '{path}'\n" +"(Traceback was logged {timestamp})" +msgstr "" +"{traceback}\n" +"Error loading cmdset '{path}'\n" +"Traceback was logged {timestamp})" + +#: .\commands\cmdsethandler.py:94 +#, python-brace-format +msgid "" +"Error loading cmdset: No cmdset class '{classname}' in '{path}'.\n" +"(Traceback was logged {timestamp})" +msgstr "" +"Error loading cmdset: No cmdset class '{classname}' in '{path}'.\n" +"(Traceback was logged {timestamp})" + +#: .\commands\cmdsethandler.py:98 +#, python-brace-format +msgid "" +"{traceback}\n" +"SyntaxError encountered when loading cmdset '{path}'.\n" +"(Traceback was logged {timestamp})" +msgstr "" +"{traceback}\n" +"SyntaxError encountered when loading cmdset '{path}'.\n" +"(Traceback was logged {timestamp})" + +#: .\commands\cmdsethandler.py:103 +#, python-brace-format +msgid "" +"{traceback}\n" +"Compile/Run error when loading cmdset '{path}'.\",\n" +"(Traceback was logged {timestamp})" +msgstr "" +"{traceback}\n" +"Compile/Run error when loading cmdset '{path}'.\",\n" +"(Traceback was logged {timestamp})" + +#: .\commands\cmdsethandler.py:108 +#, python-brace-format +msgid "" +"\n" +"Error encountered for cmdset at path '{path}'.\n" +"Replacing with fallback '{fallback_path}'.\n" +msgstr "" +"\n" +"Error encountered for cmdset at path '{path}'.\n" +"Replacing with fallback '{fallback_path}'.\n" + +#: .\commands\cmdsethandler.py:114 +#, python-brace-format +msgid "Fallback path '{fallback_path}' failed to generate a cmdset." +msgstr "Fallback path '{fallback_path}' failed to generate a cmdset." + +#: .\commands\cmdsethandler.py:182 .\commands\cmdsethandler.py:192 +#, python-format +msgid "" +"\n" +"(Unsuccessfully tried '%s')." +msgstr "" +"\n" +"(Unsuccessfully tried '%s')." + +#: .\commands\cmdsethandler.py:311 +#, python-brace-format +msgid "custom {mergetype} on cmdset '{cmdset}'" +msgstr "custom {mergetype} on cmdset '{cmdset}'" + +#: .\commands\cmdsethandler.py:314 +#, python-brace-format +msgid " : {current}" +msgstr " : {current}" + +#: .\commands\cmdsethandler.py:322 +#, python-brace-format +msgid "" +" <{key} ({mergetype}, prio {prio}, {permstring})>:\n" +" {keylist}" +msgstr "" +" <{key} ({mergetype}, prio {prio}, {permstring})>:\n" +" {keylist}" + +#: .\commands\cmdsethandler.py:426 +msgid "Only CmdSets can be added to the cmdsethandler!" +msgstr "Only CmdSets can be added to the cmdsethandler!" + +#: .\comms\channelhandler.py:100 +msgid "Say what?" +msgstr "뭐라구요?" + +#: .\comms\channelhandler.py:105 +#, python-format +msgid "Channel '%s' not found." +msgstr "'%s' 채널을 찾을 수 없습니다." + +#: .\comms\channelhandler.py:108 +#, python-format +msgid "You are not connected to channel '%s'." +msgstr "'%s' 채널에 접속하고 있지 않습니다." + +#: .\comms\channelhandler.py:112 +#, python-format +msgid "You are not permitted to send to channel '%s'." +msgstr "'%s' 채널에 보낼 수 없습니다." + +#: .\comms\channelhandler.py:155 +msgid " (channel)" +msgstr " (채널)" + +#: .\locks\lockhandler.py:236 +#, python-format +msgid "Lock: lock-function '%s' is not available." +msgstr "Lock: lock-function '%s' is not available." + +#: .\locks\lockhandler.py:249 +#, python-format +msgid "Lock: definition '%s' has syntax errors." +msgstr "Lock: definition '%s' has syntax errors." + +#: .\locks\lockhandler.py:253 +#, python-format +msgid "" +"LockHandler on %(obj)s: access type '%(access_type)s' changed from " +"'%(source)s' to '%(goal)s' " +msgstr "" +"LockHandler on %(obj)s: access type '%(access_type)s' changed from " +"'%(source)s' to '%(goal)s' " + +#: .\locks\lockhandler.py:320 +#, python-brace-format +msgid "Lock: '{lockdef}' contains no colon (:)." +msgstr "Lock: '{lockdef}' contains no colon (:)." + +#: .\locks\lockhandler.py:328 +#, python-brace-format +msgid "Lock: '{lockdef}' has no access_type (left-side of colon is empty)." +msgstr "Lock: '{lockdef}' has no access_type (left-side of colon is empty)." + +#: .\locks\lockhandler.py:336 +#, python-brace-format +msgid "Lock: '{lockdef}' has mismatched parentheses." +msgstr "Lock: '{lockdef}' has mismatched parentheses." + +#: .\locks\lockhandler.py:343 +#, python-brace-format +msgid "Lock: '{lockdef}' has no valid lock functions." +msgstr "Lock: '{lockdef}' has no valid lock functions." + +#: .\objects\objects.py:745 +#, python-format +msgid "Couldn't perform move ('%s'). Contact an admin." +msgstr "Couldn't perform move ('%s'). 운영자에게 문의하세요." + +#: .\objects\objects.py:755 +msgid "The destination doesn't exist." +msgstr "The destination doesn't exist." + +#: .\objects\objects.py:846 +#, python-format +msgid "Could not find default home '(#%d)'." +msgstr "Could not find default home '(#%d)'." + +#: .\objects\objects.py:862 +msgid "Something went wrong! You are dumped into nowhere. Contact an admin." +msgstr "Something went wrong! You are dumped into nowhere. 운영자에게 문의하세요." + +#: .\objects\objects.py:1004 +#, python-format +msgid "Your character %s has been destroyed." +msgstr "%s 캐릭터가 삭제되었습니다." + +#: .\scripts\scripthandler.py:53 +#, python-format +msgid "" +"\n" +" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s" +msgstr "" +"\n" +" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s" + +#: .\scripts\scripts.py:199 +#, python-format +msgid "" +"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'." +msgstr "" +"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'." + +#: .\server\initial_setup.py:28 +msgid "" +"\n" +"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if " +"you need\n" +"help, want to contribute, report issues or just join the community.\n" +"As Account #1 you can create a demo/tutorial area with |w@batchcommand " +"tutorial_world.build|n.\n" +" " +msgstr "" +"\n" +"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if " +"you need\n" +"help, want to contribute, report issues or just join the community.\n" +"#1 유저(운영자)는 |w@batchcommand tutorial_world.build|n.명령을 사용하여\n" +"데모겸 튜터리얼 월드를 생성할 수 있습니다.\n" +" " + +#: .\server\initial_setup.py:92 +msgid "This is User #1." +msgstr "This is User #1." + +#: .\server\initial_setup.py:105 +msgid "Limbo" +msgstr "림보" + +#: .\server\server.py:139 +msgid "idle timeout exceeded" +msgstr "연결 시간 초과" + +#: .\server\sessionhandler.py:392 +msgid " ... Server restarted." +msgstr " ... 서버가 재가동되었습니다." + +#: .\server\sessionhandler.py:620 +msgid "Logged in from elsewhere. Disconnecting." +msgstr "어디에선가 로그인했습니다. 접속이 끊어집니다." + +#: .\server\sessionhandler.py:648 +msgid "Idle timeout exceeded, disconnecting." +msgstr "연결 시간이 초과되었습니다. 접속이 끊어집니다." + +#: .\server\validators.py:50 +#, python-format +msgid "" +"%s From a terminal client, you can also use a phrase of multiple words if " +"you enclose the password in double quotes." +msgstr "" +"%s 터미널 클라이언트에서 암호를 큰 따옴표로 묶으면 여러 단어로 된 암호를 사용할 수 있습니다." +"" + +#: .\utils\evmenu.py:192 +#, python-brace-format +msgid "" +"Menu node '{nodename}' is either not implemented or caused an error. Make " +"another choice." +msgstr "" +"Menu node '{nodename}'가 구현되지 않았거나 오류가 발생했습니다." +"다른 선택을 해보세요." + +#: .\utils\evmenu.py:194 +#, python-brace-format +msgid "Error in menu node '{nodename}'." +msgstr "Menu node '{nodename}'에서 오류가 발생했습니다." + +#: .\utils\evmenu.py:195 +msgid "No description." +msgstr "설명이 없습니다." + +#: .\utils\evmenu.py:196 +msgid "Commands: , help, quit" +msgstr "명령: , help, quit" + +#: .\utils\evmenu.py:197 +msgid "Commands: , help" +msgstr "명령: , help" + +#: .\utils\evmenu.py:198 +msgid "Commands: help, quit" +msgstr "명령: help, quit" + +#: .\utils\evmenu.py:199 +msgid "Commands: help" +msgstr "명령: help" + +#: .\utils\evmenu.py:200 +msgid "Choose an option or try 'help'." +msgstr "다른 옵션을 선택하거나 'help'를 확인해보세요." + +#: .\utils\utils.py:1882 +#, python-format +msgid "Could not find '%s'." +msgstr "'%s'를 찾을 수 없습니다." + +#: .\utils\utils.py:1889 +#, python-format +msgid "More than one match for '%s' (please narrow target):\n" +msgstr "'%s'와 일치하는 항목을 여러 개 찾았습니다.:\n" diff --git a/evennia/locale/pl/LC_MESSAGES/django.mo b/evennia/locale/pl/LC_MESSAGES/django.mo index 021e81ea31f16dfbc0841744b8ecd63e753bd050..f6e31091d57bde327efd7f851e0a1a2aabd09ce1 100644 GIT binary patch delta 273 zcmXBP%?bfw7{&2pWCkFfLrqNqHQghcg`E3SB&7 X9Uqv)7xKSfX}a^GtP!N5y|p&K8ATY$ delta 312 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 diff --git a/evennia/locale/zh/LC_MESSAGES/django.mo b/evennia/locale/zh/LC_MESSAGES/django.mo index a0ec7c2c00710bf453510059e5bdc93bf02b0800..d07dd7a51714c9c0e185f4e01bfedf1137a28586 100644 GIT binary patch delta 450 zcmXZYF-SsD6vpvSq#(4cp1w-Uz#4j~SYXf)A#M>tM9`$rSVJxbImDwm9ds+Asj(rl zEgTJmc7ui>9Ne0sA*lXWgU9`yb9o%TbDQa_^xd<^eV6nyB5mMfK$^yZQ7Mlx9P&tK zI81*&CWY|=Gx&g6{KN@d9haiGjVD+@K6N=J@%!JPCC$($ExC$OY;r*c9bphpk(sLD zJl^06w$Q;}ETY5DYj}+je8oZh!X*CSA|^uppnDjnzr+Q63c1o8#RnJrXxaTi$GAmb z#dUl`KSo(|8RKaB9PZ#DnwMxGqk8L_jcpF|0x2{BvuJ|laTd!<6ei&z%! z_t%)9zxAYHe8d&}!c|Q7NrPCyG}iG5&yh=BQt~m|b`i(ucajP&0;$=P_va4J^|)(GK`QW-HISw(&AI`vbdZa}Usho!~g$%~4pwceDdEBt;>C gwxNdsHn57Ht$Os-=?n^Mhx?UUGwx Date: Sun, 22 Sep 2019 19:54:23 +0200 Subject: [PATCH 11/13] Catch tracebacks when leaving the py console with exit/exit() --- evennia/commands/default/system.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/evennia/commands/default/system.py b/evennia/commands/default/system.py index fded209d90..41490b6502 100644 --- a/evennia/commands/default/system.py +++ b/evennia/commands/default/system.py @@ -264,6 +264,7 @@ class EvenniaPythonConsole(code.InteractiveConsole): """Push some code, whether complete or not.""" old_stdout = sys.stdout old_stderr = sys.stderr + class FakeStd: def __init__(self, caller): self.caller = caller @@ -274,9 +275,14 @@ class EvenniaPythonConsole(code.InteractiveConsole): fake_std = FakeStd(self.caller) sys.stdout = fake_std sys.stderr = fake_std - result = super().push(line) - sys.stdout = old_stdout - sys.stderr = old_stderr + result = None + try: + result = super().push(line) + except SystemExit: + pass + finally: + sys.stdout = old_stdout + sys.stderr = old_stderr return result From 70da95ef688f4eb68e0513fc6cbd420a90cee3d3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 23 Sep 2019 22:46:18 +0200 Subject: [PATCH 12/13] Add create_msg alias to create_message --- evennia/utils/create.py | 1 + 1 file changed, 1 insertion(+) diff --git a/evennia/utils/create.py b/evennia/utils/create.py index 36729a62eb..b0527331b0 100644 --- a/evennia/utils/create.py +++ b/evennia/utils/create.py @@ -351,6 +351,7 @@ def create_message(senderobj, message, channels=None, receivers=None, locks=None message = create_message +create_msg = create_message def create_channel(key, aliases=None, desc=None, From 37452e2a434a50961076f069efe83ce355426c74 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 23 Sep 2019 23:22:56 +0200 Subject: [PATCH 13/13] Show warnings on start -l if settings contains production-unsafe values. Resolves #1732 --- CHANGELOG.md | 1 + evennia/server/deprecations.py | 9 +++++++-- evennia/server/evennia_launcher.py | 15 ++++++++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7778576124..9a607c34f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ without arguments starts a full interactive Python console. Attributes instead of `[None]`. - Remove `pillow` requirement (install especially if using imagefield) - Add Simplified Korean translation (user aceamro) +- Show warning on `start -l` if settings contains values unsafe for production. ## Evennia 0.9 (2018-2019) diff --git a/evennia/server/deprecations.py b/evennia/server/deprecations.py index 976040a8e9..d51f3e753d 100644 --- a/evennia/server/deprecations.py +++ b/evennia/server/deprecations.py @@ -85,7 +85,12 @@ def check_errors(settings): def check_warnings(settings): """ - Check deprecations that should produce warnings but which + Check conditions and deprecations that should produce warnings but which does not stop launch. """ - pass + if settings.DEBUG: + print(" [Devel: settings.DEBUG is True. Important to turn off in production.]") + if settings.IN_GAME_ERRORS: + print(" [Devel: settings.IN_GAME_ERRORS is True. Turn off in production.]") + if settings.ALLOWED_HOSTS == ["*"]: + print(" [Devel: settings.ALLOWED_HOSTS set to '*' (all). Limit in production.]") diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index 86dd99aa43..ad73bd26a0 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -242,7 +242,7 @@ ERROR_DATABASE = \ (error was '{traceback}') If you think your database should work, make sure you are running your - commands from inside your game directory. If this error persists, run + commands from inside your game directory. If this error persists, run evennia migrate @@ -1611,7 +1611,7 @@ def show_version_info(about=False): django=django.get_version()) -def error_check_python_modules(): +def error_check_python_modules(show_warnings=False): """ Import settings modules in settings. This will raise exceptions on pure python-syntax issues which are hard to catch gracefully with @@ -1619,6 +1619,9 @@ def error_check_python_modules(): python source files themselves). Best they fail already here before we get any further. + Kwargs: + show_warnings (bool): If non-fatal warning messages should be shown. + """ from django.conf import settings @@ -1634,11 +1637,13 @@ def error_check_python_modules(): from evennia.server import deprecations try: deprecations.check_errors(settings) - deprecations.check_warnings(settings) except DeprecationWarning as err: print(err) sys.exit() + if show_warnings: + deprecations.check_warnings(settings) + # core modules _imp(settings.COMMAND_PARSER) _imp(settings.SEARCH_AT_RESULT) @@ -2113,11 +2118,11 @@ def main(): query_info() elif option == "start": init_game_directory(CURRENT_DIR, check_db=True) - error_check_python_modules() + error_check_python_modules(show_warnings=args.tail_log) start_evennia(args.profiler, args.profiler) elif option == "istart": init_game_directory(CURRENT_DIR, check_db=True) - error_check_python_modules() + error_check_python_modules(show_warnings=args.tail_log) start_server_interactive() elif option == "ipstart": start_portal_interactive()