diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 25731923e6..42952a874b 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -2065,6 +2065,7 @@ class DefaultCharacter(DefaultObject): # Set the supplied key as the name of the intended object kwargs["key"] = key + key = cls._validate(key) # Get home for character kwargs["home"] = ObjectDB.objects.get_id(kwargs.get("home", settings.DEFAULT_HOME)) @@ -2115,6 +2116,22 @@ class DefaultCharacter(DefaultObject): return obj, errors + def _validate(self, key): + """ + Validate that character name is acceptable prior to creating. Note that this should be refactored + to support i18n for non-latin scripts, but as we (currently) have no bug reports requesting better + support of non-latin character sets, requiring character names to be latinified is an acceptable option. + + Args: + key (str) : The name of the character + + Returns: + key (str) : A valid name. + """ + from evennia.utils.utils import latinify + key = latinify(key, default="X") + return key + def basetype_setup(self): """ Setup character-specific security.