From 71f9544a3bbe77cd6978ad2c55d37dd6041cc669 Mon Sep 17 00:00:00 2001 From: ChrisLR Date: Tue, 7 Jun 2022 12:29:22 -0400 Subject: [PATCH 01/58] Added support to retrieve and remove commands from Commandsets using the key --- evennia/commands/cmdset.py | 45 ++++++++++++++++++++++++++++++-------- evennia/commands/tests.py | 18 +++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/evennia/commands/cmdset.py b/evennia/commands/cmdset.py index 1a0aa952b0..2bab1b7512 100644 --- a/evennia/commands/cmdset.py +++ b/evennia/commands/cmdset.py @@ -211,6 +211,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): if key: self.key = key self.commands = [] + self.commands_by_key = {} self.system_commands = [] self.actual_mergetype = self.mergetype self.cmdsetobj = cmdsetobj @@ -243,9 +244,13 @@ class CmdSet(object, metaclass=_CmdSetMeta): # we make copies, not refs by use of [:] cmdset_c.commands = cmdset_a.commands[:] if cmdset_a.duplicates and cmdset_a.priority == cmdset_b.priority: - cmdset_c.commands.extend(cmdset_b.commands) + new_cmds = cmdset_b.commands else: - cmdset_c.commands.extend([cmd for cmd in cmdset_b if cmd not in cmdset_a]) + new_cmds = [cmd for cmd in cmdset_b if cmd not in cmdset_a] + + cmdset_c.commands.extend(new_cmds) + cmdset_c.commands_by_key.update({cmd.key: cmd for cmd in new_cmds}) + return cmdset_c def _intersect(self, cmdset_a, cmdset_b): @@ -272,7 +277,10 @@ class CmdSet(object, metaclass=_CmdSetMeta): cmdset_c.add(cmd) cmdset_c.add(cmdset_b.get(cmd)) else: - cmdset_c.commands = [cmd for cmd in cmdset_a if cmd in cmdset_b] + new_cmds = [cmd for cmd in cmdset_a if cmd in cmdset_b] + cmdset_c.commands = new_cmds + cmdset_c.commands_by_key = {cmd.key: cmd for cmd in new_cmds} + return cmdset_c def _replace(self, cmdset_a, cmdset_b): @@ -291,7 +299,10 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ cmdset_c = cmdset_a._duplicate() - cmdset_c.commands = cmdset_a.commands[:] + commands = cmdset_a.commands[:] + cmdset_c.commands = commands + cmdset_c.commands_by_key = {cmd.key: cmd for cmd in commands} + return cmdset_c def _remove(self, cmdset_a, cmdset_b): @@ -311,7 +322,10 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ cmdset_c = cmdset_a._duplicate() - cmdset_c.commands = [cmd for cmd in cmdset_b if cmd not in cmdset_a] + new_cmds = [cmd for cmd in cmdset_b if cmd not in cmdset_a] + cmdset_c.commands = new_cmds + cmdset_c.commands_by_key = {cmd.key: cmd for cmd in new_cmds} + return cmdset_c def _instantiate(self, cmd): @@ -546,10 +560,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): commands[ic] = cmd # replace except ValueError: commands.append(cmd) - self.commands = commands - if not allow_duplicates: - # extra run to make sure to avoid doublets - self.commands = list(set(self.commands)) + # add system_command to separate list as well, # for quick look-up if cmd.key.startswith("__"): @@ -559,6 +570,13 @@ class CmdSet(object, metaclass=_CmdSetMeta): except ValueError: system_commands.append(cmd) + self.commands = commands + if not allow_duplicates: + # extra run to make sure to avoid doublets + self.commands = list(set(self.commands)) + + self.commands_by_key = {cmd.key: cmd for cmd in self.commands} + def remove(self, cmd): """ Remove a command instance from the cmdset. @@ -568,6 +586,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): or the key of such a command. """ + if isinstance(cmd, str): + cmd = self.commands_by_key.get(cmd) + cmd = self._instantiate(cmd) if cmd.key.startswith("__"): try: @@ -578,6 +599,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): pass else: self.commands = [oldcmd for oldcmd in self.commands if oldcmd != cmd] + self.commands_by_key = {cmd.key: cmd for cmd in self.commands} def get(self, cmd): """ @@ -591,6 +613,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): cmd (Command): The first matching Command in the set. """ + if isinstance(cmd, str): + cmd = self.commands_by_key.get(cmd) + cmd = self._instantiate(cmd) for thiscmd in self.commands: if thiscmd == cmd: @@ -649,7 +674,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): unique[cmd.key] = cmd else: unique[cmd.key] = cmd + self.commands = list(unique.values()) + self.commands_by_key = {cmd.key: cmd for cmd in self.commands} def get_all_cmd_keys_and_aliases(self, caller=None): """ diff --git a/evennia/commands/tests.py b/evennia/commands/tests.py index c06962da84..c422a69a81 100644 --- a/evennia/commands/tests.py +++ b/evennia/commands/tests.py @@ -1199,3 +1199,21 @@ class TestCmdSetNesting(BaseEvenniaTest): cmd = self.char1.cmdset.cmdset_stack[-1].commands[0] self.assertEqual(cmd.obj, self.char1) + + +class TestCmdSet(BaseEvenniaTest): + """ + General tests for cmdsets + """ + + def test_cmdset_remove_by_key(self): + test_cmd_set = _CmdSetTest() + test_cmd_set.remove("another command") + + self.assertNotIn(_CmdTest2, test_cmd_set.commands) + + def test_cmdset_gets_by_key(self): + test_cmd_set = _CmdSetTest() + result = test_cmd_set.get("another command") + + self.assertIsInstance(result, _CmdTest2) From f9ad4d030d7185ac52a1882835fbc175a531e8e0 Mon Sep 17 00:00:00 2001 From: ChrisLR Date: Mon, 27 Jun 2022 12:48:28 -0400 Subject: [PATCH 02/58] Rollback code related to commands_by_key --- evennia/commands/cmdset.py | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/evennia/commands/cmdset.py b/evennia/commands/cmdset.py index 2bab1b7512..98dc999e22 100644 --- a/evennia/commands/cmdset.py +++ b/evennia/commands/cmdset.py @@ -211,7 +211,6 @@ class CmdSet(object, metaclass=_CmdSetMeta): if key: self.key = key self.commands = [] - self.commands_by_key = {} self.system_commands = [] self.actual_mergetype = self.mergetype self.cmdsetobj = cmdsetobj @@ -244,13 +243,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): # we make copies, not refs by use of [:] cmdset_c.commands = cmdset_a.commands[:] if cmdset_a.duplicates and cmdset_a.priority == cmdset_b.priority: - new_cmds = cmdset_b.commands + cmdset_c.commands.extend(cmdset_b.commands) else: - new_cmds = [cmd for cmd in cmdset_b if cmd not in cmdset_a] - - cmdset_c.commands.extend(new_cmds) - cmdset_c.commands_by_key.update({cmd.key: cmd for cmd in new_cmds}) - + cmdset_c.commands.extend([cmd for cmd in cmdset_b if cmd not in cmdset_a]) return cmdset_c def _intersect(self, cmdset_a, cmdset_b): @@ -277,10 +272,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): cmdset_c.add(cmd) cmdset_c.add(cmdset_b.get(cmd)) else: - new_cmds = [cmd for cmd in cmdset_a if cmd in cmdset_b] - cmdset_c.commands = new_cmds - cmdset_c.commands_by_key = {cmd.key: cmd for cmd in new_cmds} - + cmdset_c.commands = [cmd for cmd in cmdset_a if cmd in cmdset_b] return cmdset_c def _replace(self, cmdset_a, cmdset_b): @@ -299,10 +291,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ cmdset_c = cmdset_a._duplicate() - commands = cmdset_a.commands[:] - cmdset_c.commands = commands - cmdset_c.commands_by_key = {cmd.key: cmd for cmd in commands} - + cmdset_c.commands = cmdset_a.commands[:] return cmdset_c def _remove(self, cmdset_a, cmdset_b): @@ -322,10 +311,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ cmdset_c = cmdset_a._duplicate() - new_cmds = [cmd for cmd in cmdset_b if cmd not in cmdset_a] - cmdset_c.commands = new_cmds - cmdset_c.commands_by_key = {cmd.key: cmd for cmd in new_cmds} - + cmdset_c.commands = [cmd for cmd in cmdset_b if cmd not in cmdset_a] return cmdset_c def _instantiate(self, cmd): @@ -575,8 +561,6 @@ class CmdSet(object, metaclass=_CmdSetMeta): # extra run to make sure to avoid doublets self.commands = list(set(self.commands)) - self.commands_by_key = {cmd.key: cmd for cmd in self.commands} - def remove(self, cmd): """ Remove a command instance from the cmdset. @@ -587,7 +571,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = self.commands_by_key.get(cmd) + cmd = next((cmd for cmd in self.commands if cmd.key == cmd), None) + if cmd is None: + return None cmd = self._instantiate(cmd) if cmd.key.startswith("__"): @@ -599,7 +585,6 @@ class CmdSet(object, metaclass=_CmdSetMeta): pass else: self.commands = [oldcmd for oldcmd in self.commands if oldcmd != cmd] - self.commands_by_key = {cmd.key: cmd for cmd in self.commands} def get(self, cmd): """ @@ -614,7 +599,9 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = self.commands_by_key.get(cmd) + cmd = next((cmd for cmd in self.commands if cmd.key == cmd), None) + if cmd is None: + return None cmd = self._instantiate(cmd) for thiscmd in self.commands: @@ -674,9 +661,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): unique[cmd.key] = cmd else: unique[cmd.key] = cmd - self.commands = list(unique.values()) - self.commands_by_key = {cmd.key: cmd for cmd in self.commands} def get_all_cmd_keys_and_aliases(self, caller=None): """ From 2e3ce55fced81d173c8560d6e15dbe4cc76677c2 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Tue, 28 Jun 2022 15:41:43 -0600 Subject: [PATCH 03/58] remove blank-to-comma assumption --- evennia/utils/tests/test_utils.py | 13 ++++++++----- evennia/utils/utils.py | 11 +++-------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/evennia/utils/tests/test_utils.py b/evennia/utils/tests/test_utils.py index 10d23a9176..00e55db45d 100644 --- a/evennia/utils/tests/test_utils.py +++ b/evennia/utils/tests/test_utils.py @@ -57,21 +57,24 @@ class TestDedent(TestCase): class TestListToString(TestCase): """ Default function header from utils.py: - list_to_string(inlist, endsep="and", addquote=False) + list_to_string(inlist, endsep=", and", addquote=False) Examples: - no endsep: + with default endsep: + [1,2,3] -> '1, 2, and 3' + with endsep==',': [1,2,3] -> '1, 2, 3' with endsep=='and': [1,2,3] -> '1, 2 and 3' - with addquote and endsep + with addquote and endsep="and" [1,2,3] -> '"1", "2" and "3"' """ def test_list_to_string(self): - self.assertEqual("1, 2, 3", utils.list_to_string([1, 2, 3], endsep="")) - self.assertEqual('"1", "2", "3"', utils.list_to_string([1, 2, 3], endsep="", addquote=True)) self.assertEqual("1, 2, and 3", utils.list_to_string([1, 2, 3])) + self.assertEqual("1, 2, 3", utils.list_to_string([1, 2, 3], endsep=",")) + self.assertEqual("1, 2 and 3", utils.list_to_string([1, 2, 3], endsep="and")) + self.assertEqual('"1", "2", "3"', utils.list_to_string([1, 2, 3], endsep=",", addquote=True)) self.assertEqual( '"1", "2" and "3"', utils.list_to_string([1, 2, 3], endsep="and", addquote=True) ) diff --git a/evennia/utils/utils.py b/evennia/utils/utils.py index b25e8da447..b387371a84 100644 --- a/evennia/utils/utils.py +++ b/evennia/utils/utils.py @@ -372,8 +372,7 @@ def iter_to_str(iterable, endsep=", and", addquote=False): iterable (any): Usually an iterable to print. Each element must be possible to present with a string. Note that if this is a generator, it will be consumed by this operation. - endsep (str, optional): If set, the last item separator will - be replaced with this value. + endsep (str, optional): The last item separator will be replaced with this value. addquote (bool, optional): This will surround all outgoing values with double quotes. @@ -381,13 +380,12 @@ def iter_to_str(iterable, endsep=", and", addquote=False): str: The list represented as a string. Notes: - Default is to use 'Oxford comma', like 1, 2, 3, and 4. To remove, give - `endsep` as just `and`. + Default is to use 'Oxford comma', like 1, 2, 3, and 4. Examples: ```python - >>> list_to_string([1,2,3], endsep='') + >>> list_to_string([1,2,3], endsep=',') '1, 2, 3' >>> list_to_string([1,2,3], ensdep='and') '1, 2 and 3' @@ -412,9 +410,6 @@ def iter_to_str(iterable, endsep=", and", addquote=False): elif endsep: # normal space-separated end separator endsep = " " + str(endsep).strip() - else: - # no separator given - use comma - endsep = "," if len_iter == 1: return str(iterable[0]) From a957417c790a1ff84bc80909191cb659d6c9500d Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Tue, 28 Jun 2022 15:52:23 -0600 Subject: [PATCH 04/58] add separator param --- evennia/utils/tests/test_utils.py | 7 +++++-- evennia/utils/utils.py | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/evennia/utils/tests/test_utils.py b/evennia/utils/tests/test_utils.py index 00e55db45d..b48d42644c 100644 --- a/evennia/utils/tests/test_utils.py +++ b/evennia/utils/tests/test_utils.py @@ -57,13 +57,15 @@ class TestDedent(TestCase): class TestListToString(TestCase): """ Default function header from utils.py: - list_to_string(inlist, endsep=", and", addquote=False) + list_to_string(inlist, sep=",", endsep=", and", addquote=False) Examples: - with default endsep: + with defaults: [1,2,3] -> '1, 2, and 3' with endsep==',': [1,2,3] -> '1, 2, 3' + with sep==';' and endsep==';': + [1,2,3] -> '1; 2; 3' with endsep=='and': [1,2,3] -> '1, 2 and 3' with addquote and endsep="and" @@ -74,6 +76,7 @@ class TestListToString(TestCase): self.assertEqual("1, 2, and 3", utils.list_to_string([1, 2, 3])) self.assertEqual("1, 2, 3", utils.list_to_string([1, 2, 3], endsep=",")) self.assertEqual("1, 2 and 3", utils.list_to_string([1, 2, 3], endsep="and")) + self.assertEqual("1; 2; 3", utils.list_to_string([1, 2, 3], sep=";", endsep=";")) self.assertEqual('"1", "2", "3"', utils.list_to_string([1, 2, 3], endsep=",", addquote=True)) self.assertEqual( '"1", "2" and "3"', utils.list_to_string([1, 2, 3], endsep="and", addquote=True) diff --git a/evennia/utils/utils.py b/evennia/utils/utils.py index b387371a84..862feed925 100644 --- a/evennia/utils/utils.py +++ b/evennia/utils/utils.py @@ -362,7 +362,7 @@ def columnize(string, columns=2, spacing=4, align="l", width=None): return "\n".join(rows) -def iter_to_str(iterable, endsep=", and", addquote=False): +def iter_to_str(iterable, sep=",", endsep=", and", addquote=False): """ This pretty-formats an iterable list as string output, adding an optional alternative separator to the second to last entry. If `addquote` @@ -404,7 +404,7 @@ def iter_to_str(iterable, endsep=", and", addquote=False): else: iterable = tuple(str(val) for val in iterable) - if endsep.startswith(","): + if endsep.startswith(sep): # oxford comma alternative endsep = endsep[1:] if len_iter < 3 else endsep elif endsep: @@ -416,7 +416,7 @@ def iter_to_str(iterable, endsep=", and", addquote=False): elif len_iter == 2: return f"{endsep} ".join(str(v) for v in iterable) else: - return ", ".join(str(v) for v in iterable[:-1]) + f"{endsep} {iterable[-1]}" + return f"{sep} ".join(str(v) for v in iterable[:-1]) + f"{endsep} {iterable[-1]}" # legacy aliases From aeaff1d663ce246f80e60d9b6c5ff2db3358c6ef Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Tue, 28 Jun 2022 15:57:33 -0600 Subject: [PATCH 05/58] update docstring --- evennia/utils/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/evennia/utils/utils.py b/evennia/utils/utils.py index 862feed925..ec7ef37ff2 100644 --- a/evennia/utils/utils.py +++ b/evennia/utils/utils.py @@ -372,6 +372,7 @@ def iter_to_str(iterable, sep=",", endsep=", and", addquote=False): iterable (any): Usually an iterable to print. Each element must be possible to present with a string. Note that if this is a generator, it will be consumed by this operation. + sep (str, optional): The string to use as a separator for each item in the iterable. endsep (str, optional): The last item separator will be replaced with this value. addquote (bool, optional): This will surround all outgoing values with double quotes. @@ -389,7 +390,9 @@ def iter_to_str(iterable, sep=",", endsep=", and", addquote=False): '1, 2, 3' >>> list_to_string([1,2,3], ensdep='and') '1, 2 and 3' - >>> list_to_string([1,2,3], endsep=', and', addquote=True) + >>> list_to_string([1,2,3], sep=';', endsep=';') + '1; 2; 3' + >>> list_to_string([1,2,3], addquote=True) '"1", "2", and "3"' ``` From 581e491cd883c43655fdad53746dd67f1dfcf165 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Tue, 28 Jun 2022 21:34:14 -0600 Subject: [PATCH 06/58] copy options for each command --- evennia/server/sessionhandler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evennia/server/sessionhandler.py b/evennia/server/sessionhandler.py index 5e1bcf0830..36a4b83488 100644 --- a/evennia/server/sessionhandler.py +++ b/evennia/server/sessionhandler.py @@ -269,7 +269,7 @@ class SessionHandler(dict): rkwargs[key] = [_validate(data), {}] else: rkwargs[key] = [[_validate(data)], {}] - rkwargs[key][1]["options"] = options + rkwargs[key][1]["options"] = dict(options) return rkwargs From b4b05f55487e290743a7852b7da945b06051645d Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Tue, 28 Jun 2022 21:44:20 -0600 Subject: [PATCH 07/58] move text to front --- evennia/server/sessionhandler.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/evennia/server/sessionhandler.py b/evennia/server/sessionhandler.py index 36a4b83488..925e190f4c 100644 --- a/evennia/server/sessionhandler.py +++ b/evennia/server/sessionhandler.py @@ -270,6 +270,11 @@ class SessionHandler(dict): else: rkwargs[key] = [[_validate(data)], {}] rkwargs[key][1]["options"] = dict(options) + # make sure that any "text" message will be processed first + # by putting it at the beginning + if "text" in rkwargs: + text = rkwargs.pop("text") + rkwargs = { "text": text } | rkwargs return rkwargs From 67a7e6ad61413848531407d64029e5cbd7b4a840 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Sun, 3 Jul 2022 20:11:21 -0600 Subject: [PATCH 08/58] check for results and fix attr-get --- evennia/commands/default/building.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index cecc701fe4..c81c320b3e 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1927,14 +1927,11 @@ class CmdSetAttribute(ObjManipCommand): if self.rhs is None: # no = means we inspect the attribute(s) if not attrs: - attrs = [attr.key for attr in obj.attributes.get(category=None)] + attrs = [attr.key for attr in obj.attributes.get(category=None, return_obj=True)] for attr in attrs: if not self.check_attr(obj, attr, category): continue result.append(self.view_attr(obj, attr, category)) - # we view it without parsing markup. - self.caller.msg("".join(result).strip(), options={"raw": True}) - return else: # deleting the attribute(s) if not (obj.access(self.caller, "control") or obj.access(self.caller, "edit")): @@ -1979,8 +1976,12 @@ class CmdSetAttribute(ObjManipCommand): else: value = _convert_from_string(self, value) result.append(self.set_attr(obj, attr, value, category)) - # send feedback - caller.msg("".join(result).strip("\n")) + # check if anything was done + if not result: + caller.msg("No valid attributes were found. Usage: set obj/attr[:category] = value. Use empty value to clear.") + else: + # send feedback + caller.msg("".join(result).strip("\n")) class CmdTypeclass(COMMAND_DEFAULT_CLASS): From d7d4ccfe4329c1f4f9788808d4c1ad6693850859 Mon Sep 17 00:00:00 2001 From: InspectorCaracal <51038201+InspectorCaracal@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:25:53 -0600 Subject: [PATCH 09/58] change to move prompt --- evennia/server/sessionhandler.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/evennia/server/sessionhandler.py b/evennia/server/sessionhandler.py index 925e190f4c..d116fef8cb 100644 --- a/evennia/server/sessionhandler.py +++ b/evennia/server/sessionhandler.py @@ -270,11 +270,11 @@ class SessionHandler(dict): else: rkwargs[key] = [[_validate(data)], {}] rkwargs[key][1]["options"] = dict(options) - # make sure that any "text" message will be processed first - # by putting it at the beginning - if "text" in rkwargs: - text = rkwargs.pop("text") - rkwargs = { "text": text } | rkwargs + # make sure that any "prompt" message will be processed last + # by moving it to the end + if "prompt" in rkwargs: + prompt = rkwargs.pop("prompt") + rkwargs["prompt"] = prompt return rkwargs From f55959336b3bfbd5a6eb11e8ee438029eb52a07a Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Sun, 3 Jul 2022 20:31:08 -0600 Subject: [PATCH 10/58] update docs/tests --- evennia/utils/tests/test_utils.py | 3 +++ evennia/utils/utils.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/evennia/utils/tests/test_utils.py b/evennia/utils/tests/test_utils.py index b48d42644c..6fd4d65b52 100644 --- a/evennia/utils/tests/test_utils.py +++ b/evennia/utils/tests/test_utils.py @@ -68,6 +68,8 @@ class TestListToString(TestCase): [1,2,3] -> '1; 2; 3' with endsep=='and': [1,2,3] -> '1, 2 and 3' + with endsep=='': + [1,2,3] -> '1, 2 3' with addquote and endsep="and" [1,2,3] -> '"1", "2" and "3"' """ @@ -76,6 +78,7 @@ class TestListToString(TestCase): self.assertEqual("1, 2, and 3", utils.list_to_string([1, 2, 3])) self.assertEqual("1, 2, 3", utils.list_to_string([1, 2, 3], endsep=",")) self.assertEqual("1, 2 and 3", utils.list_to_string([1, 2, 3], endsep="and")) + self.assertEqual("1, 2 3", utils.list_to_string([1, 2, 3], endsep="")) self.assertEqual("1; 2; 3", utils.list_to_string([1, 2, 3], sep=";", endsep=";")) self.assertEqual('"1", "2", "3"', utils.list_to_string([1, 2, 3], endsep=",", addquote=True)) self.assertEqual( diff --git a/evennia/utils/utils.py b/evennia/utils/utils.py index ec7ef37ff2..701fad2e67 100644 --- a/evennia/utils/utils.py +++ b/evennia/utils/utils.py @@ -388,6 +388,8 @@ def iter_to_str(iterable, sep=",", endsep=", and", addquote=False): ```python >>> list_to_string([1,2,3], endsep=',') '1, 2, 3' + >>> list_to_string([1,2,3], endsep='') + '1, 2 3' >>> list_to_string([1,2,3], ensdep='and') '1, 2 and 3' >>> list_to_string([1,2,3], sep=';', endsep=';') From f12a9ac5e21f5f00efa0fe2090f7218ff2380245 Mon Sep 17 00:00:00 2001 From: aka That Davin Guy Date: Tue, 5 Jul 2022 23:43:52 -0400 Subject: [PATCH 11/58] Update evennia-docker-start.sh Fixed an unquoted shell test. This was generating a "sh: start: unknown operand" message in the startup log when the default "evennia start --log" args were passed in. --- bin/unix/evennia-docker-start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/unix/evennia-docker-start.sh b/bin/unix/evennia-docker-start.sh index 5c87052da9..2f4c6033b7 100755 --- a/bin/unix/evennia-docker-start.sh +++ b/bin/unix/evennia-docker-start.sh @@ -9,7 +9,7 @@ PS1="evennia|docker \w $ " cmd="$@" output="Docker starting with argument '$cmd' ..." -if test -z $cmd; then +if test -z "$cmd"; then cmd="bash" output="No argument given, starting shell ..." fi From 8fd19928b2553d65a2c391841bd1a5b50fb0fa88 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Wed, 6 Jul 2022 15:03:40 -0600 Subject: [PATCH 12/58] add special handling for self-references --- evennia/contrib/rpg/rpsystem/rpsystem.py | 27 +++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index f50ad88326..89e284dcb9 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -202,7 +202,7 @@ _RE_RIGHT_BRACKETS = re.compile(r"\}+", _RE_FLAGS) _RE_REF = re.compile(r"\{+\#([0-9]+[\^\~tv]{0,1})\}+") # This regex is used to quickly reference one self in an emote. -_RE_SELF_REF = re.compile(r"/me|@", _RE_FLAGS) +_RE_SELF_REF = re.compile(r"/me\b|@", _RE_FLAGS) # regex for non-alphanumberic end of a string _RE_CHAREND = re.compile(r"\W+$", _RE_FLAGS) @@ -365,6 +365,31 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ errors = [] obj = None nmatches = 0 + # first, find and replace any self-refs + for self_match in list(_RE_SELF_REF.finditer(string)): + matched = self_match.group() + case = "~" # retain original case of sdesc + if case_sensitive: + # case sensitive mode + # internal flags for the case used for the original /query + # - t for titled input (like /Name) + # - ^ for all upercase input (like /NAME) + # - v for lower-case input (like /name) + # - ~ for mixed case input (like /nAmE) + matchtext = matched.lstrip(_PREFIX) + if matchtext.istitle(): + case = "t" + elif matchtext.isupper(): + case = "^" + elif matchtext.islower(): + case = "v" + + key = f"#{sender.id}{case}" + # replaced with ref + string = string.replace(matched,f"{{{key}}}") + mapping[key] = sender + + for marker_match in reversed(list(_RE_OBJ_REF_START.finditer(string))): # we scan backwards so we can replace in-situ without messing # up later occurrences. Given a marker match, query from From 169ec4fa5949e8c3ec8c39aa98559e75c3dba4e6 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Wed, 6 Jul 2022 15:37:52 -0600 Subject: [PATCH 13/58] move the case-ref analysis to a helper --- evennia/contrib/rpg/rpsystem/rpsystem.py | 56 ++++++++++-------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index 89e284dcb9..f4db843ec0 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -235,6 +235,26 @@ class RecogError(Exception): class LanguageError(Exception): pass +def _get_case_ref(string): + """ + Helper function which parses capitalization and + returns the appropriate case-ref character for emotes. + """ + # default to retaining the original case + case = "~" + # internal flags for the case used for the original /query + # - t for titled input (like /Name) + # - ^ for all upercase input (like /NAME) + # - v for lower-case input (like /name) + # - ~ for mixed case input (like /nAmE) + if string.istitle(): + case = "t" + elif string.isupper(): + case = "^" + elif string.islower(): + case = "v" + + return case # emoting mechanisms def parse_language(speaker, emote): @@ -368,22 +388,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ # first, find and replace any self-refs for self_match in list(_RE_SELF_REF.finditer(string)): matched = self_match.group() - case = "~" # retain original case of sdesc - if case_sensitive: - # case sensitive mode - # internal flags for the case used for the original /query - # - t for titled input (like /Name) - # - ^ for all upercase input (like /NAME) - # - v for lower-case input (like /name) - # - ~ for mixed case input (like /nAmE) - matchtext = matched.lstrip(_PREFIX) - if matchtext.istitle(): - case = "t" - elif matchtext.isupper(): - case = "^" - elif matchtext.islower(): - case = "v" - + case = _get_case_ref(matched.lstrip(_PREFIX)) if case_sensitive else "~" key = f"#{sender.id}{case}" # replaced with ref string = string.replace(matched,f"{{{key}}}") @@ -481,24 +486,9 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ errors.append(_EMOTE_NOMATCH_ERROR.format(ref=marker_match.group())) elif nmatches == 1: # a unique match - parse into intermediary representation - case = "~" # retain original case of sdesc - if case_sensitive: - # case sensitive mode - # internal flags for the case used for the original /query - # - t for titled input (like /Name) - # - ^ for all upercase input (like /NAME) - # - v for lower-case input (like /name) - # - ~ for mixed case input (like /nAmE) - matchtext = marker_match.group().lstrip(_PREFIX) - if matchtext.istitle(): - case = "t" - elif matchtext.isupper(): - case = "^" - elif matchtext.islower(): - case = "v" - - key = f"#{obj.id}{case}" + case = _get_case_ref(marker_match.group()) if case_sensitive else "~" # recombine emote with matched text replaced by ref + key = f"#{obj.id}{case}" string = f"{head}{{{key}}}{tail}" mapping[key] = obj From 874c564db54e892e78bf9a4211e0e06bce62508f Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Thu, 7 Jul 2022 16:23:12 -0600 Subject: [PATCH 14/58] add namegen contrib --- .../contrib/utils/name_generator/README.md | 165 + .../utils/name_generator/btn_givennames.txt | 24215 ++++++++++++++++ .../utils/name_generator/btn_surnames.txt | 6939 +++++ .../contrib/utils/name_generator/namegen.py | 432 + evennia/contrib/utils/name_generator/tests.py | 126 + 5 files changed, 31877 insertions(+) create mode 100644 evennia/contrib/utils/name_generator/README.md create mode 100644 evennia/contrib/utils/name_generator/btn_givennames.txt create mode 100644 evennia/contrib/utils/name_generator/btn_surnames.txt create mode 100644 evennia/contrib/utils/name_generator/namegen.py create mode 100644 evennia/contrib/utils/name_generator/tests.py diff --git a/evennia/contrib/utils/name_generator/README.md b/evennia/contrib/utils/name_generator/README.md new file mode 100644 index 0000000000..bc4295553f --- /dev/null +++ b/evennia/contrib/utils/name_generator/README.md @@ -0,0 +1,165 @@ +# Random Name Generator + +Contribution by InspectorCaracal (2022) + +A module for generating random names, both real-world and fantasy. Real-world +names can be generated either as first (personal) names, family (last) names, or +full names (first, optional middles, and last). The name data is from [Behind the Name](https://www.behindthename.com/) +and used under the [CC BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0/). + +Fantasy names are generated from basic phonetic rules, using CVC syllable syntax. + +Both real-world and fantasy name generation can be extended to include additional +information via your game's `settings.py` + +## Usage + +Import the module where you need it with the following: +```py +from evennia.contrib.utils.name_generator import namegen +``` + +By default, all of the functions will return a string with one generated name. +If you specify more than one, or pass `return_list=True` as a keyword argument, +the returned value will be a list of strings. + +The module is especially useful for naming newly-created NPCs, like so: +```py +npc_name = namegen.full_name() +npc_obj = create_object(key=npc_name, typeclass="typeclasses.characters.NPC") +``` + +## Generating Real Names + +The contrib offers three functions for generating random real-world names: +`first_name()`, `family_name()`, and `full_name()`. If you want more than one name +generated at once, you can use the `num` keyword argument to specify how many. + +Example: +``` +>>> namegen.first_name(num=5) +['Genesis', 'Tali', 'Budur', 'Dominykas', 'Kamau'] +``` + +The `first_name` function also takes a `gender` keyword argument to filter names +by gender association. 'f' for feminine, 'm' for masculine, 'mf' for feminine +_and_ masculine, or the default `None` to match any gendering. + +The `full_name` function also takes the `gender` keyword, as well as `parts` which +defines how many names make up the full name. The minimum is two: a first name and +a last name. You can also generate names with the family name first by setting +the keyword arg `surname_first` to `True` + +Example: +``` +>>> namegen.full_name() +'Keeva Bernat' +>>> namegen.full_name(parts=4) +'Suzu Shabnam Kafka Baier' +>>> namegen.full_name(parts=3, surname_first=True) +'Ó Muircheartach Torunn Dyson' +>>> namegen.full_name(gender='f') +'Wikolia Ó Deasmhumhnaigh' +``` + +### Adding your own names + +You can add additional names with the settings `NAMEGEN_FIRST_NAMES` and +`NAMEGEN_LAST_NAMES` + +`NAMEGEN_FIRST_NAMES` should be a list of tuples, where the first value is the name +and then second value is the gender flag - 'm' for masculine-only, 'f' for feminine- +only, and 'mf' for either one. + +`NAMEGEN_LAST_NAMES` should be a list of strings, where each item is an available +surname. + +Examples: +```py +NAMEGEN_FIRST_NAMES = [ + ("Evennia", 'mf'), + ("Green Tea", 'f'), + ] + +NAMEGEN_LAST_NAMES = [ "Beeblebrox", "Son of Odin" ] +``` + +If you want to replace all of the built-in name lists with your own, set +`NAMEGEN_REPLACE_LISTS = True` + +## Generating Fantasy Names + +Generating completely made-up names is done with the `fantasy_name` function. The +contrib comes with three built-in styles of names which you can use, or you can +put a dictionary of custom name rules into `settings.py` + +Generating a fantasy name takes the ruleset key as the "style" keyword, and can +return either a single name or multiple names. By default, it will return a +single name in the built-in "harsh" style. + +```py +>>> namegen.fantasy_name() +'Vhon' +>>> namegen.fantasy_name(num=3, style="fluid") +['Aewalisash', 'Ayi', 'Iaa'] +``` + +### Custom Fantasy Name style rules + +The style rules are contained in a dictionary of dictionaries, where the style name +is the key and the style rules are the dictionary value. + +The following is how you would add a custom style to `settings.py`: +```py +NAMEGEN_FANTASY_RULES = { + "example_style": { + "syllable": "(C)VC", + "consonants": [ 'z','z','ph','sh','r','n' ], + "start": ['m'], + "end": ['x','n'], + "vowels": [ "e","e","e","a","i","i","u","o", ], + "length": (2,4), + } +} +``` + +Then you could generate names following that ruleset with +`namegen.fantasy_name(style="example_style")`. + +#### syllable +The "syllable" field defines the structure of each syllable. C is consonant, V is vowel, +and parentheses mean it's optional. So, the example "(C)VC" means that every syllable +will always have a vowel followed by a consonant, and will *sometimes* have another +consonant at the beginning. + +*Note:* While it's not standard, the contrib lets you nest parentheses, with each layer +being less likely to show up. Additionally, any other characters put into the syllable +structure - e.g. an apostrophe - will be read and inserted as written. Check out the +"alien" style rules in the module for an example of both. + +#### consonants +A simple list of consonant phonemes that can be chosen from. Multi-character strings are +perfectly acceptable, such as "th", but each one will be treated as a single consonant. + +The function uses a naive form of weighting, where you make a phoneme more likely to +occur by putting more copies of it into the list. + +#### start and end +These are **optional** lists for the first and last letters of a syllable, if they're +a consonant. You can add on additional consonants which can only occur at the beginning +or end of a syllable, or you can add extra copies of already-defined consonants to +increase the frequency of them at the start/end of syllables. + +They can be left out of custom rulesets entirely. + +#### vowels +Works exactly like consonants, but is instead used for the vowel selection. Single- +or multi-character strings are equally fine, and you can increase the frequency of +any given vowel by putting it into the list multiple times. + +#### length +A tuple with the minimum and maximum number of syllables a name can have. + +When setting this, keep in mind how long your syllables can get! 4 syllables might +not seem like very many, but if you have a (C)(V)VC structure with one- and +two-letter phonemes, you can get up to eight characters per syllable. \ No newline at end of file diff --git a/evennia/contrib/utils/name_generator/btn_givennames.txt b/evennia/contrib/utils/name_generator/btn_givennames.txt new file mode 100644 index 0000000000..216446c4cd --- /dev/null +++ b/evennia/contrib/utils/name_generator/btn_givennames.txt @@ -0,0 +1,24215 @@ +# +# This data is provided by behindthename.com and is licensed under CC BY-SA 4.0. +# To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0 +# +# Given names and their genders, exported from the behindthename.com database. +# Wed, 06 Apr 2022 03:17:52 -0700 +# +# name gender +Aabraham m +Aada f +Aadan m +Aadolf m +Aafje f +Aage m +Aali m +Aalis f +Aaliyah f +Aamadu m +Aamina f +Aaminah f +Aaminata f +'Aamir m +Aamir m +Aamu f +Aanakwad mf +Aang m +Aapeli m +Aapo m +Aaren mf +Aarne m +Aaro m +Aäron m +Aarón m +Aaron m +Aart m +Aarthi f +Aarti f +Aase f +Aatami m +Aatos m +Aatto m +Aatu m +Aava f +Abacuc m +Abaddon m +Abbán m +'Abbas m +Abbas m +Abbe m +Abbey f +Abbi f +Abbie f +Abby f +Abd al-Aziz m +Abd al-Hamid m +Abd al-Kader m +Abd al-Karim m +Abd Allah m +Abd al-Latif m +Abd al-Majid m +Abd al-Malik m +Abd al-Qadir m +Abd al-Rahim m +Abd al-Rahman m +Abd al-Rashid m +Abd al-Salam m +Abd al-Wali m +Abd ar-Rahim m +Abd ar-Rahman m +Abd ar-Rashid m +Abd as-Salam m +Abdastartos m +Abdastartus m +Abdelaziz m +Abdelhamid m +Abdelkader m +Abdellatif m +Abdelmajid m +Abderrahim m +Abderrahmane m +Abdeslam m +Abdessalam m +Abdias m +Abdiel m +Abdiou m +Abdolhossein m +Abdollah m +Abdolreza m +Abdou m +Abdoul m +Abdoulaye m +Abduh m +Abdul m +Abdulah m +Abdülaziz m +Abdul Aziz m +Abdulaziz m +Abdul Hamid m +Abdülhamit m +Abdülkadir m +Abdülkerim m +Abdulla m +Abdullaahi m +Abdullah m +Abdullahi m +Abdüllatif m +Abdullo m +Abdullohi m +Abdul Rahman m +Abdurakhman m +Abdur Rahim m +Abdur Rahman m +Abdur Rashid m +Abdus Salam m +Abduweli m +Abe m +Abeba f +Abednego m +Abegail f +Ábel m +Abel m +Abele m +Abelone f +Abena f +Abene f +Abeni f +Abenner m +Aberash f +Abessa m +Abessalom m +Abha f +Abhay m +Abhijeet m +Abhijit m +Abhilash m +Abhilasha f +Abhinav m +Abhishek m +Abi f +Abia mf +Abiah mf +Abiathar m +Abidan m +Abidemi mf +Abiel m +Abigaëlle f +Abigaia f +Abigaíl f +Abigaïl f +Abigail f +Abigayle f +Abigél f +Abihu m +Abijah mf +Abilene f +Abílio m +Abilio m +Abimael m +Abimbola fm +Abimelech m +Abiodun mf +Abiola fm +Abioye mf +Abiram m +Abisai m +Abishag f +Abishai m +Abital f +'Abla f +Abner m +Abolfazl m +Abosede f +Aboubacar m +Abraam m +Abraão m +Ábrahám m +Abraham m +Abrahán m +Abram m +Abramo m +Abrar fm +Abrasha m +Abril f +Absalom m +Abu m +Abu al-Fadl m +Abubakar m +Abu Bakr m +Abul-Fazl m +Aca m +Acacia f +Acacius m +Acantha f +Ace m +Achaab m +Achab m +Achaicus m +Achaikos m +Achan m +Achard m +'Ach'av m +Acheloios m +Achelous m +Achieng f +Achille m +Achilleas m +Achilles m +Achilleus m +Achim m +Achinoam f +Acke m +Aco m +Ad m +Ada f +Adad m +Adad-Nirari m +Adaeze f +Adah f +Adair mf +Adalberht m +Adalbern m +Adalbert m +Adalberto m +Adalet f +Adalfarus m +Adalfuns m +Adalgard f +Adalhard m +Adalheidis f +Adalia m +Adaline f +Adallindis f +Adalwin m +Adalwolf m +'Adalya' m +Adalyn f +Adalynn f +Ádám m +Adam m +Adamina f +Adamo m +Adamou m +Adamu m +Adán m +Adanna f +Adannaya f +Adão m +Adara f +Adawosgi m +Adde m +Addie f +Addilyn f +Addison fm +Addy fm +Addyson f +Ade mf +Adebayo m +Adebola mf +Adebowale mf +Adedayo mf +Adegoke m +Adekunle m +Adél f +Adel m +Adéla f +Adela f +Adelaida f +Adélaïde f +Adelaide f +Adelais f +Adelajda f +Adélard m +Adelardo m +Adelbert m +Adèle f +Adele f +Adelė f +Adelheid f +Adelia f +Adélie f +Adelina f +Adeline f +Adelita f +Adella f +Adelle f +Adelma f +Adelmar m +Adelmo m +Adelyn f +Adelynn f +Adem m +Ademar m +Ademaro m +Ademir m +Ademola m +Aden m +Adena f +Adenike f +Adeodatus m +Adeola fm +Aderyn f +Adetokunbo mf +Adewale m +Ádhamh m +Adhara f +Adhelm m +Adhiambo f +Adi fm +Adil m +Adila f +Adile f +Adilet m +Adin m +Adina mf +'Adinah m +Adino m +Adir m +Adisa mf +Aditi f +Aditya m +Adjoa f +Adlai m +Admir m +Adna f +Adnan m +Adolf m +Adolfito m +Adolfo m +Adolph m +Adolphe m +Adolphus m +Adomas m +Adonai m +Adonay m +Adone m +Adonijah m +Adoniram m +Adonis m +'Adoniyah m +Adora f +Adoración f +Adorinda f +Adorján m +Adrastea f +Adrasteia f +Adrastos m +Adria f +Adrià m +Adriaan m +Adrián m +Adrian m +Adriana f +Adrianna f +Adrianne f +Adriano m +Adrianus m +Adriel m +Adrien m +Adriene f +Adrienn f +Adrienne f +Adrijan m +Adrijana f +Adsila f +Adva f +Adwoa f +Adzo f +Æbbe f +Áed m +Áedán m +Áedh m +Aegidius m +Ægir m +Aegle f +Ælfflæd f +Ælfgar m +Ælfgifu f +Ælfheah m +Ælfnoð m +Ælfræd m +Ælfric m +Ælfsige m +Ælfstan m +Ælfswiþ f +Ælfþryð f +Ælfthryth f +Ælfweard m +Ælfwig m +Ælfwine m +Aelia f +Aeliana f +Aelianus m +Aelita f +Aelius m +Aella f +Ælred m +Aemilia f +Aemiliana f +Aemilianus m +Aemilius m +Aeneas m +Aengus m +Aenoheso m +Aenor f +Aeolus m +Aeron mf +Aerona f +Aeronwen f +Aeronwy f +Æsc m +Aeschylus m +Aesculapius m +Aeson m +Aesop m +Æþelbeorht m +Æðelberht m +Æðelflæd f +Æthelflæd f +Æðelfrið m +Æðelmær m +Æthelnoð m +Æðelræd m +Æþelræd m +Æthelred m +Æðelric m +Æthelric m +Æðelstan m +Æthelstan m +Æðelþryð f +Æthelthryth f +Æthelweald m +Æthelweard m +Æðelwine m +Æthelwine m +Æðelwulf m +Aetius m +Afaf f +Afan m +Afanasiy m +Afanasy m +Afërdita f +Affan m +Affraic f +Afi f +Afia f +Afif m +Afina f +Afolabi m +Afon fm +Afonso m +Afonya m +Afra f +África f +Àfrica f +Africa f +Africanus m +Afrim m +Afrodita f +Afrodite f +Afroditi f +Afsoon f +Afsoun f +Afsun f +Afua f +Afzal m +Agafon m +Agafya f +Agam fm +Agamemnon m +Agape f +Agapetos m +Agapetus m +Agapi f +Agapios m +Agapito m +Agapitos m +Agar f +Ágata f +Agáta f +Agata f +Agatha f +Agathangelos m +Agathe f +Agathi f +Agathinos m +Agathinus m +Agathon m +Agatino m +Agatka f +Agaue f +Agda f +Åge m +Age mf +Aggie f +Aghavni f +Aghi m +Aghil m +Ági f +Agi m +Agilmar m +Agilulf m +Agim m +Aglaé f +Aglaea f +Aglaia f +Aglaya f +Agmundr m +Agnar m +Agnarr m +Agnė f +Agner m +Ágnes f +Agnès f +Agnes f +Agneša f +Agnesa f +Agnese f +Agnessa f +Agneta f +Agnete f +Agnetha f +Agnethe f +Agneza f +Agni mf +Agnia f +Agnieszka f +Agnija f +Agniya f +Agostina f +Agostinho m +Agostino m +Ágoston m +Ågot f +Ágota f +Agrafena f +Agripina f +Agrippa mf +Agrippina f +Agrona f +Águeda f +Agung m +Agurne f +Agurtzane f +Agus m +Agustí m +Agustín m +Agustina f +Ah mf +Ahab m +Aharon m +Ahava f +Ahenobarbus m +Ahinoam f +Əhməd m +Ahmad m +Ahmadu m +Ahmed m +Ahmet m +Ahmose m +Ahoth m +Ahriman m +Ahtahkakoop m +Ahti m +Ahuludegi m +Ahura Mazda m +Ahuva f +Ai f +Aias m +Aibek m +Aíbinn f +Aïcha f +Aïchatou f +Aída f +Aida f +Aidan m +Aiday f +Aideen f +Aiden m +Aífe f +Aifric f +Aigerim f +Aigle f +Aignéis f +Aigul f +Aikaterine f +Aikaterini f +Aike m +Aiko f +Aila f +Ailbe mf +Ailbhe fm +Áile f +Ailean m +Aileas f +Aileen f +Ailen f +Aili f +Ailill m +Ailín m +Ailís f +Ailis f +Ailish f +Ailpean m +Ailsa f +Aiman fm +Aimé m +Aimée f +Aimee f +Aimi f +Aimilios m +Aimo m +Ain m +Aina f +Ainara f +Ainārs m +Aindrea m +Aindréas m +Aindriú m +Áine f +Aineias m +Aingeal f +Aingeru m +Ainhoa f +Aino f +Ainoa f +Ainslee f +Ainsley fm +Ainslie f +Aintza f +Aintzane f +Ainur f +Ainura f +Aiolos m +Aira f +Airi f +Aischylos m +'Aisha f +A'isha f +Aisha f +Aishah f +Aishat f +Aishath f +Aishatu f +Aishwarya f +Aislin f +Aisling f +Aislinn f +Aisopos m +Aïssa f +Aïssatou f +Aistė f +Aisyah f +Aitana f +Aithan m +Aithbhreac f +Aithne f +Aitor m +Aivar m +Aivars m +Aiza f +Aizah f +Ajax m +Ajay m +Ajda f +Ajdin m +Ajeet m +Ajei f +Ajit m +Ajith m +Ajla f +Ajna f +Ajnur m +Ajša f +Akachi mf +Akaki m +Akakios m +Akamu m +Akane f +Akanksha f +Akantha f +Akari f +Akash m +Akbar m +Åke m +Akeem m +Akemi f +Akhenaten m +Akhenaton m +Akhil m +Akhila f +Akhmad m +Áki m +Aki mf +Akiba m +Akicita m +Akihiko m +Akihito m +Akiko f +Akilah f +Akilina f +Akim m +Akimitsu m +Akinyi f +Akio m +Akira mf +Akiva m +Akmad m +Akoni m +Ákos m +Akosua f +Akpan m +Akpofure mf +Akram m +Aksana f +Aksel m +Akseli m +Akshay m +Aksinia f +Aksinya f +Aku mf +Akua f +Akuchi fm +Akulina f +Akvilė f +Al m +Ala mf +Ala ad-Din m +Ala al-Din m +Alaattin m +Alaba fm +Aladdin m +Alaia f +Alain m +Alaina f +Alaiya f +Alajos m +Al-Amir m +Alan m +Alana f +Alani f +Alanis f +Alanna f +Alannah f +Alannis f +Alaois m +Alard m +Alaric m +Alasdair m +Alassane m +Alastair m +Alastar m +Alastor m +Alastríona f +Alaya f +Alayah f +Alayna f +Alazne f +Alba f +Albaer m +Alban m +Albano m +Albanus m +Albena f +Alberic m +Alberich m +Alberico m +Albert m +Alberta f +Albertas m +Alberte mf +Albertina f +Albertine f +Alberto m +Albertus m +Albie m +Albin m +Albína f +Albina f +Albine f +Albino m +Albinus m +Alboin m +Alborz m +Albrecht m +Albus m +Alby m +Alcaeus m +Alcibiades m +Alcide m +Alcides m +Alcippe f +Alcmene f +Alcyone f +Alda f +Aldara f +Aldebrand m +Aldegar m +Aldegonda f +Aldegund f +Alden m +Aldéric m +Aldert m +Aldhard m +Aldin m +Aldina f +Aldith f +Aldo m +Aldona f +Aldous m +Aldreda f +Aldric m +Aldus mf +Aldwin m +Ale mf +Alea f +Aleah f +Alease f +Alec m +Alecia f +Aleĉjo m +Alecto f +Aled m +Aleesha f +Aleid f +Aleida f +Áleifr m +Aleix m +Aleixo m +Alejandra f +Alejandro m +Alejo m +Aleka f +Alekos m +Aleks mf +Aleksandar m +Aleksandër m +Aleksander m +Aleksandr m +Aleksandra f +Aleksandras m +Aleksandre m +Aleksandrina f +Aleksandro m +Aleksandrs m +Aleksandru m +Aleksanteri m +Aleksei m +Aleksej m +Aleksejs m +Aleksey m +Aleksi m +Aleksy m +Alekto f +Alem m +Alemayehu mf +Alen m +Alena f +Alene f +Alenka f +Aleš m +Alesander m +Alesha f +Alesia f +Alessa f +Alessandra f +Alessandro m +Alessia f +Alessio m +Alesya f +Aleta f +Aletha f +Alethea f +Alevtina f +Álex m +Àlex m +Alex mf +Alexa f +Alexander m +Alexandr m +Alexandra f +Alexandre m +Alexandrea f +Alexandria f +Alexandrie f +Alexandrina f +Alexandrine f +Alexandros m +Alexandru m +Alexei m +Alexej m +Alexey m +Alèxia f +Alexia f +Alexina f +Alexios m +Alexis mf +Alexius m +Alexsandr m +Alexus f +Aleyna f +Alf m +Alfarr m +Alfbern m +Alfeo m +Alfhard m +Alfher m +Alfhild f +Alfhildr f +Alfia f +Alfie m +Alfio m +Alfiya f +Alfons m +Alfonsina f +Alfonso m +Alfonz m +Alfr m +Alfréd m +Alfred m +Alfreda f +Alfredas m +Alfredo m +Alfvin m +Alfwin m +Algar m +Algautr m +Alger m +Algernon m +Algimantas m +Algirdas m +Algot m +Alhaji m +Al-Hasan m +Alhassan m +Alheri f +'Ali m +Əli m +Ali mf +Alia f +Aliah f +Aliaksandr m +Aliaksandra f +Aliaksei m +Alica f +Alice f +Alícia f +Alicia f +Alicja f +Alida f +Aliénor f +Alienòr f +Aliisa f +Alija m +Alik m +Alikhan m +Aliki f +Alim m +Alimjan m +Alin m +Alīna f +Alina f +Alinafe fm +Aline f +Aliona f +Aliprand m +Alis f +Alisa f +Alise f +Alisha f +Alisher m +Alishia f +Alisia f +Alison f +Alissa f +Alistair m +Alister m +Alisya f +Alita f +Alivia f +Alix fm +Aliya f +Aliyah f +Aliye f +Aliyu m +Aliyya f +Aliyyah f +Alíz f +Aliz f +Aliza f +Alizée f +Alja f +Aljaž m +Aljoša mf +Alkaios m +Alke m +Alkeides m +Alkibiades m +Alkippe f +Alkiviadis m +Alkmene f +Alkmini f +Alkyone f +Alla f +Allah m +Allan m +Allana f +Allannah f +Allard m +Alle m +Allegra f +Allegria f +Allen m +Alli f +Allie f +Allison fm +Allissa f +Allochka f +Allon m +Allovera f +Ally fm +Allycia f +Allyn mf +Allyson f +Alma f +Almas fm +Almast f +Almir m +Almira f +Almiro m +Almog mf +Álmos m +Almudena f +Alodia f +Álǫf f +Alois m +Aloisia f +Aloísio m +Aloisio m +Alojz m +Alojzia f +Alojzij m +Alojzija f +Alojzije m +Alojzy m +Alon m +Alona f +Alondra f +Alonso m +Alonzo m +Aloys m +Aloysius m +Alp m +Alparslan m +Alpaslan m +Alperen m +Alpertti m +Alpha fm +Alphaeus m +Alphaios m +Alphege m +Alphius m +Alphonse m +Alphonsine f +Alphonso m +Alphonsus m +Alphonzo m +Alpin m +Alta f +Altagracia f +Altair m +Altan m +Altansarnai f +Altantsetseg f +Alte fm +Alter m +Althea f +Alton m +Altti m +Altwidus m +Aludra f +Alun m +Alv m +Alva fm +Alvah m +Alvar m +Álvaro m +Alve m +Alvena f +Alvilda f +Alvilde f +Alvin m +Alvina f +Alvis m +Alvise m +Alvíss m +Alwilda f +Alwin m +Alwine f +Alwyn m +Alya f +Alyce f +Alycia f +Alyona f +Alyonka f +Alyosha m +Alys f +Alysa f +Alyse f +Alysha f +Alysia f +Alyson f +Alyssa f +Alyssia f +Alyx f +Alžběta f +Alžbeta f +Ama f +Amaal f +Amabel f +Amabilia f +Amabilis m +Amable mf +Amada f +Amadej m +Amadeo m +Amadeu m +Amadeus m +Amadi m +Amadioha m +Amadís m +Amadis m +Amado m +Amador m +Amadou m +Amadu m +Amahle mf +Amaia f +Amaka f +Amal fm +Amala f +Amalasuintha f +Amalbert m +Amalgaid m +Amália f +Amalia f +Amálie f +Amalie f +Amalija f +Amaliya f +Amalric m +Amalthea f +Amaltheia f +Amâncio m +Amancio m +Amand m +Amanda f +Amandeep mf +Amandine f +Amando m +Amandus m +Amani fm +Amantius m +Amar m +Amara f +Amarachi f +Amaranta f +Amarante f +Amarantha f +Amardeep mf +Amare m +Amari mf +Amariah m +Amarilis f +Amarjeet mf +Amaro m +Amaru m +Amaruq m +'Amaryahu m +Amaryllis f +Amata f +Amaterasu f +Amato m +Amator m +Amatore m +Amatus m +Amaury m +Amaya f +Ambakoum m +Ámbar f +Amber f +Amberly f +Amberlynn f +Ambra f +Ambram m +Ambre f +Ambrogino m +Ambrogio m +Ambroise m +Ambroos m +Ambrose m +Ambrosi m +Ambrosia f +Ambrosine f +Ambrósio m +Ambrosio m +Ambrosios m +Ambrosius m +Ambrož m +Ambrozije m +Ambroży m +Ambrus m +Amé m +Amedea f +Amédée m +Amedeo m +Amée f +Amel mf +Amela f +Amélia f +Amelia f +Amélie f +Amelie f +Amelija f +Amelina f +Amen m +Amenemhat m +Amenemhet m +Amenhotep m +Ameohne'e f +Ameqran m +Ameretat f +América f +America f +Américo m +Amerigo m +Amery mf +Amethyst f +Amets mf +Ameyalli f +Amhlaidh m +Amhlaoibh m +Ami mf +Amias m +Amice f +Amichai m +Amie f +Amihan f +Amika f +Amila m +Amílcar m +Amilcare m +Amilia f +Amin m +Əminə f +Amina f +Aminah f +Aminata f +Aminath f +Aminatou f +Aminda f +Amine mf +Aminta m +Aminu m +Amir m +Amira f +Amirah f +Amiran m +Amirani m +Amis m +Amista f +Amit mf +Amita f +Amitabh m +Amitai m +Amittai m +Amity f +Amiyah f +Amjad m +Amlaíb m +Amleto m +'Ammar m +Ammar m +Ammiel m +Ammon m +Amna f +Amnon m +Amon m +Amondi f +Amon-Ra m +Amor mf +Amordad f +Amore mf +Amos m +Amosis m +Amour mf +Amparo f +Ampelio m +Ampelios m +Ampelius m +Amporn f +Amram m +Amrit m +Amrita f +Amse m +Amulius m +Amun m +Amund m +Amurdad f +Amvrosiy m +Amy f +Amyas m +Amyntas m +An mf +Ana f +Anabel f +Anabela f +Ana Belén f +Anabella f +Anabelle f +Anacleto m +Anacletus m +Anaëlle f +Anah fm +Anahera f +Anahid f +Anahit f +Anahita f +Anaiah m +Anaís f +Anaïs f +Ana Isabel f +Anaitis f +Anakin m +Anakletos m +Anakoni m +Ana María f +Anamaria f +Anamarija f +Anan mf +Anand m +Ananda m +Anandi f +Anangikwe f +Anani m +Ananias m +Anano f +Anant m +Ananta mf +Ananth m +Anantha m +Anapa m +Anar mf +Anara f +Anargul f +Anargyros m +Anaru m +Anas m +Ana Sofía f +Anass m +Anastácia f +Anastacia f +Anastacio m +Anastas m +Anastasia f +Anastasie fm +Anastasija f +Anastasio m +Anastasios m +Anastasius m +Anastasiy m +Anastasiya f +Anastázia f +Anastázie f +Anastazie f +Anastazija f +Anastazja f +Anastazy m +Anasztáz m +Anasztázia f +Anat fm +Anath mf +Anatjari m +Anatol m +Anatole m +Anatoli m +Anatolia f +Anatolijs m +Anatolios m +Anatolius m +Anatoliy m +Anatoly m +Anatu f +Anaxagoras m +Anaya f +Anayeli f +Anbu m +Anca f +Anĉjo m +Ancuța f +Anđa f +Ándaras m +Andebert m +Anđela f +Anděla f +Anđelka f +Anđelko m +Anđelo m +Andeolus m +Ander m +Anders m +Anderson m +Andi f +Andie mf +Andile mf +Andjela f +Andon m +Andoni m +Andor m +Andra f +Andrada f +András m +Andras m +Andraste f +Andraž m +Andre m +André m +Andréa f +Andrea mf +Andreas m +Andrée f +Andreea f +Andrei m +Andréia f +Andreia f +Andreina f +Andrej m +Andreja fm +Andrejs m +Andrés m +Andres m +Andrés Felipe m +Andreu m +Andrew m +Andrey m +Andria m +Andriana f +Andries m +Andrija m +Andrijana f +Andrina f +Andrine f +Andris m +Andrius m +Andriy m +Andro m +Androcles m +Androkles m +Andromache f +Andromeda f +Andronicus m +Andronikos m +Andrus m +Andrzej m +Andy mf +Andżelika f +Ane fm +Aneirin m +Anej m +Anelia f +Anelie f +Aneliya f +Anemone f +Aneta f +Anett f +Anette f +Aneurin m +Anežka f +Anfisa f +Ange mf +Ángel m +Àngel m +Angel mf +Ángela f +Àngela f +Ângela f +Angéla f +Angela f +Angèle f +Ángeles f +Angelia f +Angélica f +Angelica f +Angelien f +Angelika f +Angeliki f +Angelina f +Angeline f +Angelino m +Angélique f +Angelique f +Angelita f +Angelle f +Ângelo m +Angelo m +Angelos m +Angelus m +Angerona f +Angharad f +Anghel m +Ànghela f +Ànghelu m +Angie f +Angilberct m +Angiolo m +Angjelko m +Angra Mainyu m +Angrboða f +Angus m +Angyalka f +Anh mf +Anhelina f +Ani f +Ania f +Aníbal m +Anica f +Anicetus m +Aniela f +Anielka f +Anik m +Anika f +Aniket m +Aniketos m +Anikó f +Anıl m +Anil m +Anila f +Anima f +Animikii m +Anina f +Aniol m +Aniruddha m +Anis m +Anisa f +Anise f +Anish m +Anisha f +Anisim m +Anișoara f +Anissa f +Anit m +Anita f +Aniya f +Aniyah f +Anja f +Anjali f +Anjelica f +Anjelika f +Anka f +Ankarl m +Anke f +Anker m +Ankhbayar mf +Ankica f +Ankit m +Ankita f +Ankur m +Ann f +Anna f +Annabel f +Annabella f +Annabelle f +Annabeth f +Annachiara f +Annag f +Annagül f +Annaig f +Annalee f +Annalena f +Anna-Liisa f +Annalisa f +Annalise f +Anna Maria f +Annamária f +Annamaria f +Annas m +Annbjørg f +Anne fm +Annegret f +Anneka f +Anneke f +Anne-Laure f +Anneli f +Annelie f +Annelien f +Annelies f +Anneliese f +Annelise f +Anne-Marie f +Annemarie f +Annemiek f +Annemieke f +Anne-Sophie f +Annet f +Annett f +Annetta f +Annette f +Anni f +Annibale m +Annice f +Annick f +Annie f +Anniina f +Annika f +Anniken f +Annikki f +Annis f +Annisa f +Annmarie f +Annora f +Annukka f +Annunciata f +Annunziata f +Annunziato m +Annushka f +Annuska f +Anny f +Anona f +Anong f +Anoop m +Anoubis m +Anouk f +Anoush f +Anoushka f +Anouska f +Anraí m +Anri m +Ans f +Ansa f +Ansaldo m +Ansar m +Ansehelm m +Ansel m +Anselm m +Anselma f +Anselme m +Anselmi m +Anselmo m +Ansgar m +Anshel m +Ansigar m +Ansley f +Anso m +Ansobert m +Anson m +Ansovald m +Anssi m +Antal m +Antanas m +Antanina f +Antares m +Ante m +Antea f +Antelmo m +Antero m +Anthea f +Antheia f +Anthelm m +Anthelme m +Anthony m +Anthousa f +Anti m +Antía f +Antica f +Antigone f +Antigonos m +Antigonus m +Antiman m +Antinanco m +Antiochos m +Antiochus m +Antioco m +Antiogu m +Antiope f +Antipater m +Antipatros m +Antje f +Anto m +Antoine m +Antoinette f +Antón m +Anton m +Antonela f +Antonella f +Antonello m +Antonette f +Antoni m +Antónia f +Antônia f +Antonia f +Antonie fm +Antonieta f +Antonietta f +Antonij m +Antonija f +Antonije m +Antonijo m +Antonín m +Antonin m +Antoņina f +Antonina f +Antonino m +Antoninus m +António m +Antônio m +Antonio m +Antonio Pio m +Antonios m +Antonis m +Antoniu m +Antonius m +Antoniy m +Antoniya f +Antono m +Antony m +Antoon m +Ants m +Antti m +Antton m +Anttoni m +Antun m +Antwan m +Anu fm +Anubis m +Anuj m +Anuja f +Anuki f +Anuli f +Anunciación f +Anup m +Anupam m +Anupama f +Anuradha f +Anuša f +Anuschka f +Anush f +Anushka f +Anwar m +Anwen f +Anwer m +Anxhela f +Anxo m +Anya f +Anže m +Anžej m +Anželika f +Anzhela f +Anzhelika f +Anzhelina f +Anzo m +Anzor m +Aod m +Aodh m +Aodhagán m +Aodhán m +Aoede f +Aoi fm +Aoibhe f +Aoibheann f +Aoibhín f +Aoibhinn f +Aoide f +Aoife f +Aonghas m +Aonghus m +Apanii f +Aparajita f +Aparecida f +Aparna f +Aphra f +Aphrodisia f +Aphrodisios m +Aphrodite f +Apikalia f +Apis m +Apolena f +Apolinar m +Apolinary m +Apollinaire m +Apollinaris m +Apollinariya f +Apolline f +Apollo m +Apollodoros m +Apollon m +Apollonia f +Apollonides m +Apollonios m +Apollonius m +Apolónia f +Apolônia f +Apolonia f +Apolonija f +Apoorva mf +Apostol m +Apostolis m +Apostolos m +Apphia f +Appius m +April f +Apurva mf +Aputsiaq m +Aqil m +Aqila f +Aqissiaq m +Aquila mf +Aquilina f +Aquilinus m +Ara m +Arabella f +Arabinda m +Araceli f +Aracelis f +Aracely f +Arachne f +Aradhana f +Aragorn m +Aram m +Aramazd m +Araminta f +Aramis m +Aran mf +Aranka f +Aranrhod f +Arantxa f +Arantzazu f +Aránzazu f +Ararat m +Aras m +Arash m +Arastoo m +Arata m +Arati f +Aravind m +Aravinda m +Arawn m +Arax f +Arbana f +Arcadia f +Arcadius m +Arcangelo m +Arcelia f +Archana f +Archelaos m +Archelaus m +Archembald m +Archer m +Archibald m +Archie m +Archil m +Archimedes m +Archippe f +Archippos m +Arda m +Ardal m +Ardalion m +Ardashir m +Ardath f +Arden mf +Ardeshir m +Ardgal m +Ardghal m +Ardit m +Ardita f +Ardith f +Ardito m +Arduino m +Aref m +Areg m +Arek m +Areli m +Aren m +Arend m +Ares m +Aretas m +Arete f +Aretha f +Arethousa f +Arethusa f +Areti f +Arevig f +Arevik f +Arezoo f +Arezou f +Arezu f +Argi m +Argider m +Argiñe f +Argos m +Argus m +Argyris m +Argyro f +Argyros m +Ari m +Aria fm +Ariadna f +Ariadne f +Ariah f +Ariana f +Ariane f +Arianna f +Arianne f +Arianrhod f +Aric m +Aridai m +Arie m +Arieh m +'Ari'el m +Ariel mf +Ariella f +Arielle f +Arienne f +Aries m +Arif m +Arihel m +Arij f +Arijana f +Arijit m +Arik m +Arild m +Arin fm +Arina f +Aris m +Arisha f +Arista f +Aristaeus m +Aristaios m +Aristarchos m +Aristarchus m +Aristarkh m +Aristeides m +Aristeidis m +Aristide m +Arístides m +Aristides m +Aristidis m +Aristocles m +Aristodemos m +Aristokles m +Aristomache f +Ariston m +Aristophanes m +Aristoteles m +Aristotelis m +Aristotle m +Arisztid m +Aritra m +Aritz m +Ariyah f +Arja f +Arjan m +Arjun m +Arjuna m +Arkadi m +Arkadios m +Arkadiusz m +Arkadiy m +Arkady m +Arkaitz m +Arke m +Arkhip m +Arleen f +Arlen m +Arlene f +Arlet f +Arlette f +Arlie fm +Arline f +Arlo m +Arlotto m +Arman m +Armand m +Armando m +Ármann m +Armas m +Armazi m +Armel m +Armelle f +Armen m +Armida f +Armide f +Ármin m +Armin m +Arminius m +Armo m +Arn m +Arnaldo m +Arnaq f +Arnar m +Arnau m +Arnaud m +Arnaude f +Arnbjörg f +Arnbjørg f +Arnbjǫrg f +Arnborg f +Arnd m +Arndt m +Arne m +Arnfinn m +Arnfinnr m +Arnfried m +Árni m +Arnie m +Arnifrid m +Arno m +Arnold m +Arnoldas m +Arnoldo m +Arnolds m +Arnolfo m +Arnór m +Arnórr m +Arnošt m +Arnoud m +Arnout m +Arnt m +Arnþór m +Arnþórr m +Arnulf m +Arnviðr m +Aroa f +Aroha fm +Aroldo m +Áron m +Aron m +Aronas m +Aronne m +Árpád m +Arpi f +Arran m +Arrats m +Arrigo m +Arron m +Arsen m +Arsène m +Arseni m +Arsénio m +Arsênio m +Arsenio m +Arsenios m +Arsenius m +Arseniy m +Arseny m +Arslan m +Art m +Artair m +Artakhshathra m +Artaxerxes m +Artem m +Artemi m +Artemidoros m +Artemio m +Artemios m +Artemis f +Artemisia f +Artemisios m +Artemius m +Artemiy m +Artemon m +Artemy m +Arthfael m +Arthit m +Arthmail m +Arthur m +Arti f +Artie mf +Artjoms m +Arto m +Artsiom m +Artsyom m +Arttu m +Artturi m +Artúr m +Artur m +Artūras m +Arturo m +Artūrs m +Artyom m +Arun m +Aruna mf +Arūnas m +Arundhati f +Arushi f +Aruzhan f +Arve m +Arvel m +Arvid m +Arvīds m +Arvo m +Arwa f +Arwel m +Arwen f +Arwyn m +Arya mf +Aryan m +Aryana f +Aryeh m +Arzhel m +Arzu f +Ása f +Åsa f +Asa m +Asabe f +As'ad m +Asad m +Asaf m +Asal f +Asami f +Asaph m +Asar m +Ásbjörn m +Ásbjǫrn m +Asbjörn m +Asbjørn m +Ascanio m +Ascanius m +Ascelin m +Ascensión f +Asclepiades m +Asclepius m +Asco m +Ásdís f +Asdrúbal m +Asdzáán Nádleehé f +Åse f +Aseem m +Asel f +Asen m +Asena f +'Asenat f +Asenath f +Aseneth f +Asenneth f +Aser m +Ásgeir m +Asgeir m +Ásgeirr m +Asger m +Ash mf +Asha f +Ashanti fm +Asher m +Asherah f +Ashfaq m +Åshild f +Áshildr f +Ashish m +Ashkii m +Ashlea f +Ashlee f +Ashleigh f +Ashley fm +Ashlie f +Ashling f +Ashlyn f +Ashlynn f +Ashok m +Ashoka m +Ashraqat f +Ashtad f +'Ashtart f +Ashton mf +'Ashtoret f +Ashtoreth f +Ashtyn f +Ashur m +Ashura f +Ashur-Bani-Apli m +Ashurbanipal m +Ashwin m +Asia f +Asier m +Asif m +Asih f +Asil m +Asım m +Asim m +Asiri f +Asiya f +Asja f +Ask m +Askanios m +Ásketill m +Asklepiades m +Asklepios m +Askr m +Aslan m +Aslanbek m +Áslaug f +Aslaug f +Aslı f +Aslög f +Asløg f +Asma f +Asmaa f +Asma'u f +Åsmund m +Ásmundr m +Ásmundur m +Asnappar m +Aspasia f +Aspen f +Aspyn f +Asra f +Asse m +Assia f +Assol f +Assumpció f +Assumpta f +Assunção f +Assunta f +Ásta f +Asta f +Astaroth m +Astarte f +Aster f +Astérix m +Asterix m +Aştî fm +Aston mf +Astor m +Astoria f +Astra f +Astraea f +Astraia f +Astrid f +Astride f +Ástríðr f +Ástríður f +Astrophel m +Asuka fm +Asuman f +Asun f +Asunción f +Ásvaldr m +Aswathi m +Asya f +Ata m +Ātaahua f +Atahualpa m +Atalanta f +Atalia f +Atallah m +Atalyah fm +Atanas m +Atanase m +Atanasie m +Atanasij m +Atanasija f +Atanasije m +Atanasio m +Atara f +Atarah f +Ataullah m +Atefeh f +Atem m +Aten m +Atenea f +Aðalbjörg f +Athaliah fm +Aðalsteinn m +Athanaric m +Athanas m +Athanase m +Athanasi m +Athanasia f +Athanasios m +Athanasius m +Athaulf m +Athelstan m +Athena f +Athénaïs f +Athenais f +Athene f +Athenodoros m +Athina f +Athol mf +Atieno f +Atif m +Atifa f +Atila m +Atílio m +Atilio m +Atilius m +Atilla m +Atiya mf +Atlas m +Atle m +Atli m +Aton m +Atreus m +Atropos f +Atse m +Atsuko f +Atsushi m +Atte m +Atticus m +Attikos m +Attila m +Attilio m +Atuf m +Atum m +Auberon m +Aubert m +Aubin m +Aubree f +Aubrey mf +Aubrie f +Aucaman m +Aud f +Auda f +Audamar m +Aude f +Audhild f +Audie f +Audley m +Audo m +Audovacar m +Audra f +Audrea f +Audrey f +August m +Augusta f +Augustas m +Auguste mf +Augustė f +Augustijn m +Augustín m +Augustin m +Augustina f +Augustinas m +Augustine mf +Augustinus m +Augusto m +Augusts m +Augustus m +Augustyn m +Augustyna f +Auke m +Aukusti m +Aulay m +Auli f +Aulikki f +Aulis m +Aulus m +Aune f +Aura f +Aurangzeb m +Áurea f +Aurea f +Aurél m +Aurel m +Aurèle m +Aurélia f +Aurelia f +Aurelian m +Aureliana f +Aureliano m +Aurelianus m +Aurélie f +Aurélien m +Aurelija f +Aurelijus m +Aurélio m +Aurelio m +Aurelius m +Aureliusz m +Aureole f +Aurica f +Aurică m +Aurobindo m +Aurora f +Aurore f +Ausma f +Aušra f +Austėja f +Austen m +Auster m +Austin m +Auston m +Austyn mf +Auðr fm +Auðrhildr f +Auður f +Autumn f +Auxentios m +Auxentius m +Ava f +Avag m +Avah f +Avaline f +Avalon f +Avani f +Avanti f +Avdey m +'Avdi'el m +Avdotya f +Ave f +Avedis m +Avelina f +Aveline f +Avelino m +Avenir m +Aveniru m +Averie f +Averill mf +Avery mf +Avetis m +Aveza f +Avgust m +Avgusta f +Avguštin m +Avhust m +Avi m +Avia mf +Aviaaja f +Aviâja f +Aviana f +Avianna f +Avice f +Avidan m +'Avi'el m +Aviel m +Avigail f +'Avigayil f +Avihu m +Avila f +Avilius m +'Avima'el m +'Avimelekh m +Avinash m +Aviram m +Avis f +Avishag f +Avishai m +'Avishay m +Avital fm +Avitus m +Aviv mf +Aviva f +Aviya f +'Aviyah mf +Avksenti m +Avksentiy m +Avner m +Avonlea f +Avra f +Avraamu m +Avraham m +Avram m +Avril f +Avrora f +Avrum m +'Avshalom m +Avtandil m +Avto m +Awa f +Awee fm +Āwhina f +Awilix f +Awinita f +Awiti f +Awotwi mf +Awstin m +Axel m +Axelle f +Axl m +Axmed m +Aya f +Ayaan mf +Ayah f +Ayaka f +Ayako f +Ayal m +Ayala f +Ayame f +Ayan m +Ayanda mf +Ayane f +Ayano f +Ayaulym f +Ayaz m +Aybek m +Ayberk m +Ayda f +Aydan fm +Ayden m +Aydın m +Ayelen f +Ayelet f +Ayesha f +Aygerim f +Aygol f +Aygül f +Aygul f +Aygün f +Ayishah f +Ayla f +Aylen f +Aylin f +Aylmer m +Ayman m +Aymeric m +Ayn f +Aýna f +Ayna f +Aýnabat f +Aynur f +Aynura f +Ayo fm +Ayodele mf +Ayokunle m +Ayomide fm +Ayotunde mf +Ayoub m +Ayşe f +Ayşegül f +Aysel f +Ayşenur f +Aysima f +Aysu f +Aysun f +Aytaç mf +Ayten f +Ayuba m +Ayumi f +Ayumu m +Ayün f +Ayyub m +Azad m +Azahar f +Azahara f +Azalaïs f +Azalea f +Azaliya f +Azamat m +Azar fm +Azarel m +Azaria mf +Azariah m +Azarias m +'Azaryah m +Azat m +Azazel m +Azaziah m +Azazias m +'Azazyahu m +Azel m +Azélie f +Azeneth f +Azhar m +Aziel m +'Aziz m +Əziz m +Aziz m +Aziza f +Azize f +Azra f +Azrael m +'Azri'el m +Azriel m +Azubah f +Azubuike m +Azucena f +Ąžuolas m +Azura f +Azure fm +Azzurra f +Baadur m +Baak m +Baako mf +Ba'al m +Baal m +Ba'al Hammon m +Baal-Zebub m +Ba'al Zevuv m +Baard m +Babajide m +Babak m +Babar m +Babatunde m +Baber m +Babette f +Babirye f +Babis m +Babs f +Babür m +Babur m +Babylas m +Bacchus m +Bachtiar m +Bada m +Bademus m +Badr mf +Badri m +Badulf m +Badurad m +Baer m +Bagadata m +Baggi m +Baghdasar m +Bagrat m +Bagus m +Baha m +Bahadır m +Bahador m +Bahadur m +Bahar f +Bahargül f +Bahati fm +Bahdan m +Bahiga f +Bahij m +Bahija f +Bahiyya f +Bahman m +Bahram m +Bahrom m +Bahtiyar m +Bai mf +Baihu m +Baila f +Bailee f +Bailey mf +Báirbre f +Bairre m +Bairrfhionn m +Baishan m +Bakar m +Bakari m +Bakarne f +Baker m +Bakhtiar m +Bakhtiyar m +Bakhtiyor m +Baki m +Bakır m +Bakir m +Bakr m +Baktygul f +Bala mf +Baladeva m +Balakrishna m +Balam m +Balarabe m +Balaram m +Balarama m +Balázs m +Balbina f +Balbino m +Balbinus m +Balbus m +Baldarich m +Baldassare m +Balder m +Baldev m +Baldo m +Baldomar m +Baldomero m +Baldovin m +Baldovino m +Baldr m +Baldric m +Balduíno m +Balduino m +Baldur m +Baldwin m +Balendin m +Balfour m +Bálint m +Balla f +Balor m +Balqis f +Baltasar m +Baltassar m +Baltazar m +Balthasar m +Balthazar m +Balwinder mf +Bambang m +Bambi f +Bamidele mf +Bandi m +Bandile mf +Banu f +Bảo mf +Bao fm +Baptist m +Baptista m +Baptiste m +Baqi m +Baqir m +Bára f +Bara f +Barabal f +Barack m +Barak m +Baraka m +Barakat m +Baran fm +Baraz m +Barb f +Bárbara f +Barbara f +Barbare f +Barbe f +Bärbel f +Barbie f +Barbora f +Barbra f +Barbro f +Barclay m +Bård m +Barend m +Barica f +Barış m +Barlaam m +Barna m +Barnaba m +Barnabás m +Barnabas m +Barnabé m +Barnaby m +Barney m +Barra m +Barret m +Barrett m +Barrfind m +Barrie m +Barry m +Bart m +Barta m +Bartal m +Bartek m +Bartel m +Barthélémy m +Bartholomaios m +Bartholomäus m +Bartholomei m +Bartholomeus m +Bartholomew m +Bárðr m +Bartłomiej m +Bartol m +Bartolo m +Bartolomé m +Bartoloměj m +Bartolomej m +Bartolomeo m +Bartolomeu m +Bartomeu m +Bartosz m +Baruch m +Barukh m +Barys m +Bas m +Basajaun m +Başak f +Basant m +Basemath f +Basemmath f +Bashar m +Bashe f +Bashemath f +Bashkim m +Basia f +Basil m +Basile m +Basileios m +Basilio m +Basilius m +Basim m +Basima f +Basir m +Basira f +Basit m +Basma f +Basmat f +Basmath f +Bassam m +Bassem m +Bast f +Bastet f +Bastiaan m +Bastian m +Bastien m +Basu m +Basya f +Batari f +Batbayar m +Bate m +Batel f +Bat-Erdene m +Bathsheba f +Batraz m +Bat-Sheva f +Batsheva f +Battista m +Batu m +Batuhan m +Batul f +Batya f +Batyah f +Batyr m +Baudelio m +Baudouin m +Baugulf m +Bautista m +Baxter m +Bəxtiyar m +Baxtiyor m +Bayani m +Bayard m +Baylee f +Bayley mf +Baylor mf +Bayram m +Baz m +Bazyli m +Bazza m +Bea f +Bear m +Bearach m +Beat m +Beáta f +Beata f +Beāte f +Beate f +Beathag f +Beathan m +Béatrice f +Beatrice f +Beatrise f +Beatriu f +Beatrix f +Beatriz f +Beatrycze f +Beatus m +Beau mf +Beauden m +Beaumont m +Beauregard m +Beavis m +Bébhinn f +Bébhionn f +Bébinn f +Becca f +Becci f +Becka f +Beckah f +Beckett m +Beckham m +Becky f +Bede m +Bedelia f +Bedisa f +Bedivere m +Bedřich m +Bedřiška f +Bedros m +Bedwyr m +Bee f +Beelzeboul m +Beelzebub m +Beelzebul m +Beetlejuice m +Begoña f +Begüm f +Behar m +Behiye f +Behnam m +Behram m +Behrooz m +Behrouz m +Behruz m +Béibhinn f +Beileag f +Beitris f +Bekki f +Bel m +Béla m +Běla f +Belén f +Belenos m +Belenus m +Belgin f +Beli m +Belial m +Belinay f +Belinda f +Belinha f +Bella f +Bellamy fm +Bellatrix f +Belle f +Bello m +Bellona f +Belma f +Belphoebe f +Bel-Sharra-Usur m +Belshatzzar m +Belshazzar m +Ben m +Benaiah m +Benas m +Beñat m +Benayahu m +Bence m +Bendegúz m +Bendigeidfran m +Bendik m +Bendiks m +Bendt m +Benedek m +Benedetta f +Benedetto m +Benedict m +Benedicta f +Bénédicte f +Benedicte f +Benedictus m +Benedikt m +Benedikta f +Benediktas m +Benedikte f +Benedita f +Benedito m +Benedykt m +Benedykta f +Benesh m +Benett m +Bengt m +Bengta f +Beniamin m +Beniamino m +Benigna f +Benigno m +Benignus m +Benita f +Benito m +Benj m +Benjamim m +Benjámin m +Benjamín m +Benjamin m +Benjaminas m +Benjamine f +Benji m +Benjy m +Bennett m +Bennie m +Benno m +Benny m +Benoît m +Benoîte f +Benson m +Bent m +Bente f +Benthe f +Bentley m +Bento m +Benton m +Benvenuto m +Benvolio m +Beorhtric m +Beorhtsige m +Beornræd m +Beowulf m +Beppe m +Bèr m +Ber m +Berach m +Beracha f +Berahthraban m +Berahthram m +Berard m +Berardo m +Berat m +Beren fm +Berend m +Berendina f +Berengar m +Berengaria f +Bérenger m +Bérengère f +Berenguer m +Bérénice f +Berenice f +Berenike f +Berezi f +Bergliot f +Bergljót f +Bergljot f +Berhane mf +Berhanu m +Berhta f +Berhtoald m +Beril f +Berinhard m +Berislav m +Berit f +Berjouhi f +Berk m +Berkant m +Berker m +Berko m +Berlin fm +Bermet f +Bermudo m +Berna f +Bernabé m +Bernadett f +Bernadette f +Bernadine f +Bernard m +Bernarda f +Bernardetta f +Bernardina f +Bernardine f +Bernardino m +Bernardita f +Bernardo m +Bernát m +Bernat m +Bernd m +Bernetta f +Bernhard m +Bernice f +Bernie mf +Berniece f +Bernike f +Bernt m +Berny mf +Berrak f +Berry mf +Bert m +Berta f +Bertalan m +Bertha f +Berthe f +Berthild f +Berthold m +Bertie mf +Bertil m +Bertille f +Bertilo m +Bertina f +Berto m +Bertók m +Bertoldo m +Bertram m +Bertrand m +Bertrando m +Berwyn m +Beryl f +Besarion m +Besim m +Besnik m +Beso m +Bess f +Bessarion m +Bessie f +Beste f +Bet f +Betânia f +Betania f +Betelgeuse m +Beth f +Bethan f +Bethânia f +Bethania f +Bethanie f +Bethany f +Bethari f +Bethel f +Bethney f +Bethuel m +Beti f +Betje f +Betony f +Betrys f +Betsy f +Bette f +Bettie f +Bettina f +Bettino m +Betty f +Bettye f +Bet'uel m +Betül f +Beulah f +Bev f +Bevan m +Beverley f +Beverly fm +Bevin f +Bevis m +Beyle f +Beylke f +Beyoncé f +Beyza f +Bhaltair m +Bharat m +Bharata m +Bharath m +Bhaskar m +Bhaskara m +Bhàtair m +Bhavana f +Bhavna f +Bhima m +Bhumi f +Bia f +Biaggio m +Biagino m +Biagio m +Bianca f +Bianka f +Bibek m +Bibiána f +Bibiana f +Bibigul f +Bíborka f +Bice f +Bích fm +Bidane f +Biddy f +Bidelia f +Bidziil m +Bidzina m +Bieito m +Biel m +Bienvenida f +Biff m +Bihotz f +Bihter f +Bijay m +Bijou f +Bijoy m +Bikendi m +Bila f +Bilal m +Bilbo m +Bile m +Bilge mf +Bilgüün m +Bilha f +Bilhah f +Biljana f +Bilƙisu f +Bill m +Billie mf +Billy m +Bilqis f +Bilyana f +Bima m +Binay m +Bindy f +Bine fm +Bình mf +Binyamin m +Bion m +Bipin m +Bira m +Birdie f +Birger m +Birgir m +Birgit f +Birgitta f +Birgitte f +Birita f +Birkir m +Birta f +Birte f +Birthe f +Birûsk m +Biruta f +Birutė f +Bisera f +Biserka f +Bishal m +Bishan m +Bishop m +Bistra f +Bithiah f +Bitrus m +Bittor m +Bituin f +Bityah f +Bjarke m +Bjarki m +Bjarne m +Bjarni m +Bjarte m +Bjartr m +Bjartur m +Bjoern m +Björg f +Bjørg f +Bjǫrg f +Björk f +Björn m +Bjørn m +Bjǫrn m +Bjørnar m +Björne m +Bláán m +Blaanid f +Blaga f +Blagica f +Blago m +Blagoj m +Blagoje m +Blagorodna f +Blagoslav m +Blagovest m +Blagovesta f +Blagoy m +Blagun m +Blaguna f +Blahoslav m +Blai m +Blaine m +Blair mf +Blaire f +Blaise m +Bláithín f +Blake mf +Blakely f +Blanca f +Blanch f +Blanchard m +Blanche f +Blandina f +Blandine f +Blandinus m +Blandus m +Blanid f +Blanka f +Blas m +Blasius m +Bláthíne f +Bláthnaid f +Bláthnat f +Blaž m +Blaže m +Blaze m +Błażej m +Blažej m +Blažena f +Blaženka f +Blaženko m +Blazh m +Blazhe m +Bleda m +Bleddyn m +Blejan f +Blerta f +Blessing mf +Blodeuedd f +Blodeuwedd f +Blodeuyn f +Blodwen f +Blondie f +Blong m +Blossom f +Blue mf +Bluma f +Blythe fm +Bo mf +Boadicea f +Boann f +Boaventura m +Boaz m +Bob m +Boban m +Bobbi f +Bobbie fm +Bobby m +Boda m +Bode m +Bodhi m +Bodil f +Boele m +Bogdan m +Bogdana f +Boghos m +Boglárka f +Bogna f +Bogomil m +Bogomir m +Bogumil m +Bogumił m +Bogumiła f +Bogumir m +Boguslav m +Bogusław m +Bogusława f +Bohdan m +Bohdana f +Bohort m +Bohumil m +Bohumila f +Bohumír m +Bohuslav m +Bohuslava f +Bóinn f +Boipelo mf +Boitumelo fm +Bojan m +Bojana f +Bojidar m +Bolanle f +Bolat m +Boldizsár m +Bolek m +Boleslav m +Boleslava f +Bolesław m +Bolesława f +Bolívar m +Bolormaa f +Bolortsetseg f +Bomilcar m +Bonaccorso m +Bonaventura m +Bonaventure m +Bongani m +Bonifaas m +Bonifác m +Boniface m +Bonifácio m +Bonifacio m +Bonifacy m +Bonifatius m +Bonifaz m +Bonita f +Bonitus m +Bonnie f +Bonolo f +Bontu f +Booker m +Boone m +Boos m +Booz m +Bopha f +Bor m +Bora mf +Boran m +Borbála f +Boreas m +Bořek m +Børge m +Borghild f +Borghildr f +Borghildur f +Boris m +Borislav m +Borislava f +Borisu m +Borivoi m +Bořivoj m +Borivoj m +Borivoje m +Borja m +Börje m +Borko m +Borna mf +Boro m +Boróka f +Bors m +Borut m +Borya m +Borys m +Bose f +Bosede f +Boško m +Bosmat f +Bosse m +Boštjan m +Bóthildr f +Botond m +Botros m +Botum fm +Boubacar m +Boudewijn m +Boudica f +Boudicca f +Boulos m +Bounmy mf +Boutros m +Bowen m +Bowie m +Boyan m +Boyana f +Boyce m +Boyd m +Boyka f +Boyko m +Boža m +Božena f +Bożena f +Bozhena f +Bozhidar m +Bozhidara f +Bozho m +Božica f +Božidar m +Božidarka f +Božo m +Bözsi f +Bożydar m +Braam m +Bracha f +Brad m +Brádach m +Bradamante f +Bradán m +Braden m +Bradford m +Bradley m +Brady m +Braeden m +Braelyn f +Braelynn f +Brage m +Bragi m +Brahim m +Brahma m +Braiden m +Braidy mf +Brais m +Braith m +Brajan m +Bram m +Brân m +Bran m +Branca f +Brand m +Branda f +Brande f +Brandee f +Branden m +Brandi f +Brandie f +Brando m +Brandon m +Brandr m +Brandt m +Brândușa f +Brandy f +Branimir m +Branimira f +Branislav m +Branislava f +Braňka f +Branka f +Brankica f +Branko m +Brannon m +Branson m +Brant m +Brantley m +Branwen f +Brás m +Bratislav m +Bratislava f +Bratomil m +Bratoslav m +Bratumił m +Brava f +Braxton m +Brayan m +Brayden m +Braylen m +Braylon m +Breana f +Bréanainn m +Breandán m +Breann f +Breanna f +Breanne f +Brecht m +Brechtje f +Breda f +Bree f +Breeshey f +Breindel f +Breixo m +Brenda f +Brendan m +Brendanus m +Brenden m +Brendon m +Brenna f +Brennan m +Brennus m +Breno m +Brent m +Brenton m +Bret m +Břetislav m +Brett m +Bria f +Briallen f +Brian m +Briana f +Brianna f +Brianne f +Briar mf +Brice m +Bricius m +Bríd f +Bride f +Bridger m +Bridget f +Bridgette f +Bridie f +Briella f +Brielle f +Brígh f +Brigham m +Brighid f +Brigid f +Brígida f +Brigida f +Brigit f +Brigita f +Brigitta f +Brigitte f +Brijesh m +Brijesha m +Briley f +Brin m +Brina f +Brinley f +Brion m +Briony f +Briscoe m +Briseida f +Briseis f +Bristol f +Brit f +Brita f +Britannia f +Britney f +Britt f +Britta f +Brittani f +Brittania f +Brittany f +Brittney f +Brittny f +Britton m +Broccán m +Broccomaglos m +Brochfael m +Brochmail m +Brock m +Brodie m +Brody m +Broen m +Brogán m +Brokkr m +Bron f +Brónach f +Bronagh f +Bronimir m +Bronislav m +Bronislava f +Bronisław m +Bronisława f +Bronislovas m +Bronius m +Bronte mf +Brontes m +Bronwen f +Bronwyn f +Brook mf +Brooke f +Brooklyn fm +Brooklynn f +Brooks m +Broos m +Bror m +Bróðir m +Bruce m +Bruna f +Brunella f +Brunello m +Brünhild f +Brunhild f +Brunhilda f +Brunhilde f +Brunihild f +Brunilda f +Bruno m +Brutus m +Bryan m +Bryana f +Bryanna f +Bryanne f +Bryant m +Bryce m +Brycen m +Brychan m +Brygida f +Brylee f +Bryn mf +Brynhild f +Brynhildr f +Brynhildur f +Brynja f +Brynjar m +Brynjarr m +Brynlee f +Brynmor m +Brynn f +Brynne f +Bryon m +Bryony f +Bryson m +Buana m +Buck m +Bud m +Buddha m +Buddy m +Budi m +Budur f +Buenaventura m +Buffy f +Buğlem f +Buğra m +Buhle fm +Búi m +Bukar m +Bukola f +Bulan f +Bulat m +Bülent m +Bulus m +Bulut m +Bunny f +Bünyamin m +Burak m +Burchard m +Burçin fm +Burcu f +Burgundy f +Burhan m +Burhan ad-Din m +Burhan al-Din m +Burhanettin m +Burhanuddin m +Burim m +Burke m +Burkhard m +Burkhart m +Burt m +Burton m +Buse f +Bushra f +Businge mf +Büşra f +Buster m +Butrus m +Buz m +Byelobog m +Byeong-Ho m +Byrne m +Byron m +Bysshe m +Byung-Ho m +Cabdiraxmaan m +Cabdullaahi m +Cabdulqaadir m +Cäcilia f +Cäcilie f +Cade m +Cadell m +Caden m +Cadence f +Caderina f +Cadeyrn m +Cadfael m +Cadfan m +Cadi f +Cadmus m +Cadoc m +Cadogan m +Cadwalader m +Cadwaladr m +Cadwgan m +Caecilia f +Caecilius m +Caedmon m +Cáel m +Caelan mf +Caelestinus m +Caelestis m +Cáelfind f +Caelia f +Caelie f +Caelina f +Caelinus m +Caelius m +Caerwyn m +Caesar m +Caesarius m +Caeso m +Caesonia f +Caesonius m +Caetana f +Caetano m +Caetlin f +Cəfər m +Cafer m +Çağatay m +Çağla f +Çağrı mf +Cahal m +Cahaya mf +Cahir m +Cahya mf +Cahyo mf +Cai m +Caiaphas m +Caiden m +Caietanus m +Cailean m +Caileigh f +Cailin f +Cailyn f +Cain m +Cainan m +Caíndelbán m +Cainneach m +Cainnech m +Caio m +Cairbre m +Cairistìona f +Cairo m +Caishen m +Caiside m +Cáit f +Caitlín f +Caitlin f +Caitlyn f +Caitria f +Caitríona f +Caitrìona f +Caius m +Caj m +Caja f +Cajetan m +Cajsa f +Cal m +Calafia f +Calanthe f +Calanthia f +Calbhach m +Cale m +Caleb m +Caleigh f +Calfuray f +Cali fm +Caligula m +Calista f +Calisto m +Calixta f +Calixte m +Calixto m +Calixtus m +Calla f +Callahan m +Callan m +Calleigh f +Callias m +Callie f +Callinicus m +Calliope f +Callirrhoe f +Callista f +Callisto mf +Callistus m +Callixtus m +Callum m +Calogera f +Calogero m +Calogerus m +Calpurnia f +Calpurnius m +Calum m +Calvagh m +Calvin m +Calvus m +Calypso f +Cam fm +Cambria f +Cambyses m +Camden m +Camélia f +Camelia f +Camellia f +Cameron mf +Cəmilə f +Camila f +Camilla f +Camille fm +Camillo m +Camillus m +Camilo m +Cammie f +Campbell mf +Camron m +Camryn fm +Can m +Canaan m +Canan f +Candace f +Cande fm +Candela f +Candelaria f +Candelario m +Candelas f +Candi f +Candice f +Cándida f +Cândida f +Candida f +Candide mf +Cándido m +Cândido m +Candido m +Candidus m +Candis f +Candy f +Candyce f +Caner m +Cansu f +Canute m +Caoileann f +Caoilfhionn f +Caoilinn f +Caoimhe f +Caoimhín m +Caolán m +Caomh m +Caomhán m +Caprice f +Capricia f +Caprina f +Capucine f +Cara f +Caracalla m +Caradoc m +Caradog m +Caramia f +Caratācos m +Caratacus m +Caratauc m +Carbrey m +Carbry m +Cardea f +Careen f +Carel m +Caren f +Carey mf +Cari f +Caridad f +Carin f +Carina f +Carine f +Caris f +Carissa f +Carita f +Carl m +Carla f +Carlene f +Carles m +Carleton m +Carley f +Carlie f +Carlijn f +Carlinhos m +Carlisa f +Carlisle mf +Carlito m +Carlitos m +Carlman m +Carlo m +Carloman m +Carlos m +Carlota f +Carlotta f +Carlton m +Carlu m +Carly f +Carlyle m +Carlyn f +Carme f +Carmel f +Carmela f +Carmelita f +Carmella f +Carmelo m +Carmen f +Carmi m +Carmina f +Carmine m +Carminho f +Carmo mf +Carol fm +Carola f +Carole f +Carolien f +Carolin f +Carolina f +Caroline f +Carolus m +Carolyn f +Caron fm +Carpus m +Carreen f +Carrie f +Carrol mf +Carroll m +Carry f +Carson mf +Carsten m +Carter m +Carthach m +Carver m +Carwyn m +Cary mf +Caryl f +Caryn f +Carys f +Cas m +Casandra f +Case m +Casey mf +Cash m +Casilda f +Casimir m +Casimiro m +Cason m +Caspar m +Casper m +Caspian m +Cass fm +Cassander m +Cassandra f +Cassandre f +Cassarah f +Cássia f +Cassia f +Cassian m +Cassianus m +Cassidy fm +Cassie f +Cassiel m +Cassiopea f +Cassiopeia f +Cassius m +Cassy f +Castiel m +Castor m +Cat fm +Catahecassa m +Cataleya f +Cătălin m +Cătălina f +Catalina f +Catarina f +Cate f +Cateline f +Catell m +Catello m +Catellus m +Caterina f +Catguocaun m +Cathair m +Cathal m +Cathalán m +Cathán m +Cathaoir m +Catharina f +Catharine f +Cathassach m +Catherin f +Catherina f +Catherine f +Cathleen f +Cathrin f +Cathrine f +Cathryn f +Cathy f +Cátia f +Catia f +Catina f +Cato mf +Catrin f +Catrina f +Catrine f +Catrinel f +Catriona f +Cauã m +Cavan m +Cayden m +Cayetana f +Cayetano m +Cayley f +Cayson m +Ceadda m +Ceallach m +Ceallagh m +Ceara f +Cearbhall m +Cearra f +Cebrail m +Cebrián m +Cece f +Cecelia f +Cecil m +Cécile f +Cécilia f +Cecília f +Cecilia f +Cecílie f +Cecilie f +Cecilija f +Cecílio m +Cecilio m +Cecily f +Cecylia f +Cedar fm +Čedomir m +Cédric m +Cedric m +Ceel m +Cees m +Ceferino m +Cefin m +Céfiro m +Céibhfhionn f +Ceinwen f +Celal m +Celandine f +Céleste fm +Celeste fm +Célestin m +Celestina f +Célestine f +Celestine fm +Celestino m +Celestyn m +Celestyna f +Célia f +Cèlia f +Celia f +Çelik m +Celina f +Celinda f +Céline f +Celine f +Celino m +Célio m +Celio m +Cellach m +Cellachán m +Celso m +Celsus m +Celyn mf +Cem m +Cemal m +Cemil m +Cemile f +Cemre f +Cendrillon f +Čeněk m +Cengiz m +Cenhelm m +Cenk m +Cennet f +Cennétig m +Cenric m +Ċensu m +Ceolmund m +Cephalus m +Cephas m +Cepheus m +Cerball m +Cerberus m +Cerdic m +Ceren f +Cerere f +Ceres f +Ceri fm +Ceridwen f +Cerise f +Cernunnos m +Cerridwen f +Cerridwyn f +Cerys f +Césaire m +César m +Cesare m +Cesária f +Cesarina f +Cesarino m +Cesário m +Cesc m +Čestmír m +Çetin m +Cevahir fm +Cevdet m +Ceylan f +Cézar m +Cezar m +Cezara f +Cezário m +Cezary m +Chace m +Chad m +Chadwick m +Chae-Won f +Chae-Yeong f +Chae-Young f +Chagatai m +Chaggai m +Chaggit f +Chaim m +Chalchiuhtlicue f +Chaleb m +Chalice f +Chaminda m +Chan mf +Chana f +Chanah f +Chanan m +Chananyah m +Chance m +Chand m +Chanda mf +Chandan m +Chandana fm +Chander m +Chandler mf +Chandra mf +Chandrakant m +Chandrakanta f +Chanel f +Chanelle f +Chang mf +Channah f +Channary f +Channing mf +Chanokh m +Chantal f +Chanté f +Chantel f +Chantelle f +Chantrea fm +Chao mf +Chara f +Charalambos m +Charalampos m +Chares m +Chariclea f +Charikleia f +Chariklia f +Charilaos m +Chariovalda m +Charis fm +Charisma f +Charissa f +Charisse f +Charita f +Chariton m +Charity f +Charla f +Charlee f +Charleen f +Charleigh f +Charlemagne m +Charlène f +Charlene f +Charles m +Charley mf +Charli f +Charlie mf +Charline f +Charlize f +Charlot m +Charlotta f +Charlotte f +Charlton m +Charly m +Charmaine f +Charmian f +Charmion f +Charna f +Charnette f +Charo f +Charon m +Chas m +Chase m +Chasity f +Chaska m +Chastity f +Chatzkel m +Châu fm +Chauncey m +Chausiku f +Chava f +Chavaqquq m +Chavdar m +Chawwah f +Chaya f +Chayim m +Chayyim m +Chaz m +Chaza'el m +Che m +Chea mf +Chedomir m +Cheftzi-Bah f +Chelle f +Chelo f +Chelsea f +Chelsey f +Chelsie f +Chema m +Chen mf +Chenaniah m +Chenda f +Cheng mf +Cheops m +Cher f +Cherette f +Cheri f +Cherice f +Cherie f +Cherilyn f +Cherise f +Cherish f +Chernobog m +Cherokee fm +Cherry f +Cherryl f +Cheryl f +Chesed fm +Chesley mf +Chester m +Chestibor m +Chestimir m +Chestirad m +Chestislav m +Chet m +Chetan m +Chetana f +Chevonne f +Cheyanne f +Cheyenne fm +Chi fm +Chí m +Chiamaka f +Chiara f +Chiarina f +Chibueze m +Chibuike m +Chibuzo mf +Chica f +Chichi f +Chico m +Chidi mf +Chidiebele mf +Chidiebere mf +Chidiebube mf +Chidiegwu m +Chidike m +Chidimma f +Chidinma f +Chidubem mf +Chie f +Chiemeka mf +Chifundo mf +Chifuniro mf +Chigozie mf +Chihiro fm +Chijindum mf +Chijioke m +Chika fm +Chikako f +Chike m +Chikelu mf +Chikere mf +Chikondi mf +Chikumbutso mf +Chile m +Chima mf +Chimalma f +Chimezie mf +Chimo m +Chimwala mf +Chimwemwe mf +Chin mf +China f +Chinasa f +Chinatsu f +Chinedu m +Chinenye f +Chingis m +Chinonso mf +Chinwe f +Chinweike m +Chinwendu fm +Chinweuba m +Chinyelu f +Chinyere f +Chioma f +Chip m +Chipiliro mf +Chipo f +Chiranjeevi m +Chiranjivi m +Chisom fm +Chisomo mf +Chita f +Chiumbo m +Chiyembekezo mf +Chiyo f +Chiyoko f +Chizoba fm +Chizqiyahu m +Chlodochar m +Chlodovech m +Chlodulf m +Chloe f +Chloé f +Chloë f +Chloris f +Chlothar m +Chlotichilda f +Cho f +Chō f +Chobin m +Chōko f +Cholpon f +Chou f +Chouko f +Chrestos m +Chris mf +Chrissie f +Chrissy f +Christ m +Christa f +Christabel f +Christabella f +Christabelle f +Christakis m +Christal f +Christel f +Christèle f +Christelle f +Christen mf +Christer m +Christi f +Christiaan m +Christian m +Christiana f +Christiane f +Christianne f +Christianus m +Christie fm +Christin f +Christina f +Christine f +Christmas mf +Christobel f +Christoffel m +Christoffer m +Christoforos m +Christoph m +Christophe m +Christopher m +Christophoros m +Christophorus m +Christos m +Christy fm +Chrizanne f +Chrysa f +Chrysanta f +Chrysanthe f +Chrysanthi f +Chrysanthos m +Chryseis f +Chryses m +Chrysostom m +Chrysostomos m +Chryssa f +Chrystal f +Chrystelle f +Chucho m +Chuck m +Chuckie m +Chucky m +Chuks m +Chukwu m +Chukwudi m +Chukwuebuka m +Chukwuemeka m +Chukwuma m +Chuldah f +Chun fm +Chus mf +Chuy m +Chyna f +Cian m +Cianán m +Ciannait f +Ciar mf +Ciara f +Ciarán m +Ciardha m +Cibor m +Cibrán m +Cicely f +Cicero m +Ciel fm +Ĉiela f +Ciera f +Cierra f +Çiğdem f +Cihan mf +Cihangir m +Cila f +Cili f +Cilka f +Cilla f +Cille f +Cillian m +Cillín m +Cináed m +Çınar m +Cinderella f +Cindi f +Cindra f +Cindy f +Cinta f +Cíntia f +Cintia f +Cinzia f +Cionaodh m +Ciorstaidh f +Cipactli mf +Ciprian m +Cipriano m +Circe f +Ciríaco m +Ciriaco m +Ciril m +Cirila f +Cirillo m +Cirilo m +Cirino m +Ciro m +Cismaan m +Cissy f +Citlali f +Citlalli f +Citra f +Claes m +Clair m +Claire f +Clancy mf +Clara f +Clare f +Clarence m +Claretta f +Clarette f +Claribel f +Clarice f +Clarinda f +Clarisa f +Clarissa f +Clarisse f +Claritia f +Clarity f +Clark m +Clarus m +Claud m +Claude mf +Claudette f +Cláudia f +Clàudia f +Claudia f +Claudie f +Claudina f +Claudine f +Claudinho m +Cláudio m +Claudio m +Claudiu m +Claudius m +Claus m +Clay m +Clayton m +Cléa f +Cledwyn m +Cleena f +Cleisthenes m +Cleitus m +Clelia f +Clem m +Clematis f +Clémence f +Clemence f +Clemency f +Clemens m +Clément m +Clement m +Clemente m +Clementia f +Clementina f +Clémentine f +Clementine f +Clementius m +Cléo f +Cleo fm +Cleon m +Cleopas m +Cleopatra f +Cléopâtre f +Cleophas m +Cletis m +Cleto m +Cletus m +Cleve m +Cleveland m +Clídna f +Cliff m +Clifford m +Clifton m +Clímaco m +Climacus m +Climent m +Clint m +Clinton m +Clio f +Clíodhna f +Clíona f +Clisthenes m +Clitus m +Clive m +Clodagh f +Clodovicus m +Cloe f +Cloé f +Cloelia f +Cloelius m +Clopas m +Clothilde f +Clothildis f +Clotho f +Clotilda f +Clotilde f +Clover f +Clovis m +Clyde m +Clytemnestra f +Clytia f +Cnaeus m +Cnut m +Coatlicue f +Coba f +Cobus m +Coby mf +Cochise m +Coco f +Codie mf +Codrin m +Codruț m +Cody m +Cóem m +Cóemán m +Cóemgein m +Coen m +Coenraad m +Coeus m +Cohen m +Coileán m +Coinneach m +Cokkie f +Col m +Cola m +Colbert m +Colby m +Cole m +Coleen f +Coleman m +Colene f +Colette f +Colin m +Coline f +Colleen f +Collin m +Collyn fm +Colm m +Colmán m +Colobert m +Colomba f +Colombano m +Colombe f +Colombina f +Colombo m +Colson m +Colt m +Colten m +Colton m +Colum m +Columb m +Columba mf +Columbán m +Columbanus m +Columbine f +Colwyn m +Côme m +Comfort f +Comgal m +Comgall m +Comgán m +Comhghall m +Comhghán m +Conall m +Conán m +Conan m +Conceição f +Concepción f +Concepta f +Concetta f +Concettina f +Concetto m +Concha f +Conchita f +Conchobar m +Conchobhar m +Conchúr m +Concordia f +Condoleezza f +Confucius m +Công m +Conláed m +Conlaoch m +Conleth m +Conley m +Conn m +Connell m +Conner m +Connie fm +Connla m +Connor m +Conor m +Conrad m +Conrado m +Conrí m +Consolata f +Constança f +Constance f +Constância f +Constans m +Constant m +Constanța f +Constantia f +Constantijn m +Constantin m +Constantina f +Constantine m +Constantino m +Constantinus m +Constantius m +Constanza f +Constanze f +Consuela f +Consuelo f +Consus m +Conway m +Cooper m +Coos m +Cor m +Cora f +Coral f +Coralie f +Coraline f +Corbin m +Corbinian m +Corbinianus m +Cord m +Cordeilla f +Cordelia f +Cordell m +Cordula f +Coreen f +Corentin m +Coretta f +Corey m +Cori f +Coriander f +Corie f +Corin m +Corina f +Corine f +Corinna f +Corinne f +Cormac m +Cormacc m +Corné m +Corneille m +Cornel m +Cornelia f +Cornélie f +Cornélio m +Cornelio m +Cornelis m +Corneliu m +Cornelius m +Cornell m +Corona f +Coronis f +Corradino m +Corrado m +Corraidhín m +Corrie f +Corrina f +Corrine f +Corry f +Cortney fm +Corwin m +Cory m +Corynn f +Cosette f +Cosima f +Cosimo m +Coşkun m +Cosma m +Cosmas m +Cosme m +Cosmin m +Cosmina f +Cosmo m +Costache m +Costantino m +Costanza f +Costanzo m +Costas m +Costel m +Costică m +Costin m +Coty m +Courteney f +Courtney fm +Covadonga f +Cowal m +Cowessess m +Coy m +Coyolxauhqui f +Craig m +Crawford m +Cree mf +Creiddylad f +Creighton m +Crescencia f +Crescens m +Crescentia f +Crescentius m +Crescenzo m +Cressida f +Crew m +Crina f +Críostóir m +Criseida f +Criseyde f +Crisóstomo m +Crispian m +Crispin m +Crispinus m +Crispus m +Cristal f +Cristen f +Cristi m +Cristián m +Cristian m +Cristiana f +Cristiano m +Cristina f +Cristóbal m +Cristoforo m +Cristóvão m +Cristyn f +Crius m +Crocetta f +Crocifissa f +Crofton m +Croía f +Cronus m +Črt m +Črtomir m +Cruz fm +Cruzita f +Crystal f +Csaba m +Csanád m +Csenge f +Csilla f +Csongor m +Cthulhu m +Ctibor m +Ctirad m +Cua f +Cúán m +Cuauhtémoc m +Cuauhtemoc m +Cúc f +Cú Chulainn m +Cúchulainn m +Cuidightheach m +Cuimín m +Culann m +Culhwch m +Cullen m +Cumhur m +Cunégonde f +Cüneyt m +Cunigund f +Cunmin m +Cunobelinos m +Cunobelinus m +Cupid m +Cupido m +Curran m +Curro m +Curt m +Curtis m +Cusmaan m +Custódia f +Custodia f +Custódio m +Custodio m +Cuthberht m +Cuthbert m +Cveta f +Cvetka f +Cvetko m +Cvijeta f +Cvita f +Cy m +Cyan fm +Cybele f +Cybill f +Cydney f +Cymbeline m +Cymone f +Cynbel m +Cyndi f +Cynebald m +Cyneburg f +Cyneburga f +Cynefrith m +Cynefrið m +Cyneheard m +Cynemær m +Cyneric m +Cynesige m +Cyneweard m +Cynfelyn m +Cynthia f +Cynwrig m +Cyprian m +Cyprianus m +Cyprien m +Cyra f +Cyrano m +Cyriaca f +Cyriacus m +Cyriaque m +Cyrielle f +Cyril m +Cyrilla f +Cyrille mf +Cyrillus m +Cyrus m +Cyryl m +Cystennin m +Cytherea f +Czcibor m +Czesław m +Czesława f +Da mf +Daan m +Dabid m +Dacian m +Daciana f +Dacre m +Dada mf +Dado m +Daedalus m +Dae-Jung m +Daenerys f +Dae-Seong m +Daffodil f +Dafina f +Dafna f +Dafne f +Dafni f +Dafydd m +Dag m +Dagan m +Dagda m +Dagfinn m +Dagfinnr m +Dagmær f +Dagmar f +Dagmara f +Dagney f +Dagnija f +Dagny f +Dagný f +Dagon m +Dagr m +Dagrún f +Dagrun f +Dagur m +Dahlia f +Dai m +Dáibhí m +Dàibhidh m +Daichi m +Daidalos m +Daigo m +Daiki m +Daina f +Dáire m +Daireann f +Dáirine f +Daisuke m +Daisy f +Dáithí m +Daithí m +Daiva f +Daividh m +Dajana f +Dakarai m +Dakila m +Dakota mf +Dálach m +Dalal f +Dale mf +Daler m +Daley fm +Daleyza f +Dalia f +Dalibor m +Daliborka f +Dalida f +Dalila f +Dalimil m +Dalisay f +Dalit f +Dalitso mf +Dallas mf +Dalma f +Dalton m +Daly fm +Dalya f +Damán m +Damarion m +Damaris f +Damayanti f +Damhán m +Damhnait f +Damiaan m +Damián m +Damian m +Damiana f +Damiano m +Damianos m +Damianus m +Damião m +Damien m +Damijan m +Damijana f +Damion m +Damir m +Damira f +Damjan m +Damjana f +Damla f +Damnat f +Damocles m +Damodar m +Damodara m +Damokles m +Damon m +Damyan m +Dan m +Dana fm +Danaë f +Danai f +Danail m +Dancho m +Dančo m +Dand m +Dane m +Danel m +Danette f +Dani fm +Dania f +Danial m +Danica f +Dániel m +Daníel m +Daniël m +Daniel m +Daniela f +Danièle f +Daniele m +Danielius m +Daniella f +Daniëlle f +Danielle f +Daniels m +Danihel m +Daniil m +Daniilu m +Danijel m +Danijela f +Danika f +Danila mf +Danilo m +Danique f +Danis m +Danish m +Danita f +Daniyah f +Daniyal m +Daniyyel m +Dánjal m +Ɗanjuma m +Danka f +Danko m +Ɗanladi m +Ɗanlami m +Danna f +Danne m +Danni fm +Dannie mf +Danny m +Danr m +Dante m +Danuše f +Danuška f +Dănuț m +Danuta f +Danutė f +Dany mf +Danya f +Danyal m +Danyil m +Danylo m +Daphne f +Daphné f +Daphnée f +Daquan m +Dar fm +Dara mf +Darach m +Daragh m +Darayavahush m +Darby mf +Darcey f +Darcie f +Darcy fm +Dardan m +Dardana f +Dardanos m +Darden m +Dareia f +Dareios m +Darejan f +Darejani f +Darek m +Darell m +Daren m +Daria f +Darian mf +Darien m +Darija f +Darijo m +Darijus m +Darin m +Darina f +Darinka f +Darío m +Dario m +Darion m +Daris m +Darius m +Dariush m +Dariusz m +Dariy m +Dariya f +Darja f +Darko m +Darla f +Darleen f +Darlene f +Darma m +Darnell m +Darragh m +Darrel m +Darrell m +Darren m +Darrin m +Darryl m +Darshan m +Darshana f +Dārta f +D'Artagnan m +Darwin m +Darya f +Daryawesh m +Daryl m +Daryna f +Daryush m +Dáša f +Daša f +Dash m +Dasha f +Dashawn m +Dashiell m +Dasoda-hae m +Đạt m +Dathan m +Datu m +Daud m +Dauid m +Daumantas m +Dave m +Davena f +Daveth m +Davey m +Davi m +Dávid m +David m +Davida f +Davide m +Dāvids m +Davidu m +Davie m +Davin m +Davina f +Davinia f +Davion m +Dāvis m +Davis m +Davit m +Davíð m +Daviti m +Davlat m +Davon m +Davonte m +Davor m +Davorin m +Davorka f +Davud m +Davy m +Davyd m +Daw m +Dawa mf +Dawid m +Dawit m +Dawn f +Dawood m +Dawson m +Dawud m +Dax m +Daxton m +Dayana f +Dayaram m +Dayna f +Dayo mf +Dayton m +Dazbog m +Dazhdbog m +Deacon m +Deaglán m +Dean m +Deana f +DeAndre m +DeAngelo m +Deanna f +Deanne f +Dearbháil f +Deasún m +Deb f +Debbi f +Debbie f +Debbora f +Debby f +Debdas m +Debi f +Débora f +Debora f +Déborah f +Deborah f +Debra f +Decebal m +Dechen fm +Decima f +Decimus m +Declán m +Declan m +Dederick m +Dedrick m +Dee fm +Deeann f +Deemer m +Deena f +Deep m +Deepa f +Deepak m +Deepali f +Deepika f +Deepti f +Defne f +Deforest m +Deforrest m +Degataga m +Dehgewanus f +Deianeira f +Deianira f +Deidra f +Deidre f +Deimantė f +Deimne m +Deimos m +Deina f +Deiniol m +Deion m +Deirbhile f +Deirdre f +Deitra f +Deja f +Dejan m +Dejana f +Dejen m +Dekel m +Delaiah m +Delaney f +Delano m +Delara f +Delayahu m +Delbert m +Delfina f +Délia f +Delia f +Delice f +Delicia f +Delight f +Delilah f +Dell mf +Della f +Delma f +Delmar m +Delora f +Delores f +Deloris f +Delphia f +Delphina f +Delphine f +Delphinus m +Delroy m +Delshad mf +Delta f +Delwyn m +Delyth f +Dema f +DeMarcus m +DeMario m +Demelza f +Demeter fm +Demetra f +Demetria f +Demétrio m +Demetrio m +Demetrios m +Demetrius m +Demi f +Demid m +Demir m +Democritus m +Demokritos m +Demon m +Demophon m +Demosthenes m +Demostrate f +Demyan m +Den m +Dena f +Dene mf +Deneb m +Dénes m +Denholm m +Denica f +Denice f +Deniece f +Deniel m +Dênis m +Denis m +Denisa f +Denise f +Denisse f +Denitsa f +Deniz fm +Dennis m +Denny m +Denton m +Denver m +Denys m +Denzel m +Denzil m +Deo m +Déodat m +Deodato m +Deodatus m +Deòiridh f +Deon m +Deonne f +Deonte m +Deòrsa m +Deorwine m +Derbáil f +Derbiled f +Derby mf +Derdriu f +Derek m +Derick m +Derin f +Dermid m +Dermot m +Deror m +Derorit f +Derren m +Derrick m +Derry m +Derryl m +Derval f +Dervila f +Derviş m +Dervla f +Derya f +Deryck m +Deryn fm +Des m +Desdemona f +Deshaun m +Deshawn m +Desi mf +Desiderata f +Desideratus m +Desidéria f +Desideria f +Desidério m +Desiderio m +Desiderius m +Desirae f +Désiré m +Désirée f +Desiree f +Desislav m +Desislava f +Desmond m +Despina f +Despoina f +Dessislava f +Desta fm +Destinee f +Destiny f +Detlef m +Detlev m +Detta f +Deusdedit m +Dev m +Devadas m +Devan mf +Devante m +Devaraj m +Devaraja m +Devdas m +Deven m +Devereux m +Devi f +Devika f +Devin mf +Devnet f +Devon mf +Devontae m +Devonte m +Devora f +Devorah f +Devraj m +Devrim m +Devyn fm +Dewayne m +Dewey m +Dewi mf +Dewydd m +Dex m +Dexter m +Deyan m +Dezba f +Dezi mf +Dezideriu m +Deziree f +Dezirinda f +Dezső m +Dhananjay m +Dharma m +Dhaval m +Dhimitër m +Di f +Diadumenian m +Diadumenianus m +Diadumenus m +Diamanda f +Diamantina f +Diamanto f +Diamond f +Dian mf +Diána f +Diāna f +Diana f +Diane f +Diann f +Dianna f +Dianne f +Diantha f +Diarmad m +Diarmaid m +Diarmait m +Diarmuid m +Dick m +Dicun m +Dídac m +Didacus m +Didem f +Didi m +Didier m +Dido f +Diede mf +Diederich m +Diederick m +Diederik m +Diego m +Diệp fm +Dierk m +Dieter m +Dietfried m +Diethelm m +Dietlinde f +Dietmar m +Dietrich m +Diệu fm +Dieudonné m +Dieudonnée f +Dieuwe m +Dieuwer m +Dieuwert m +Dieuwke f +Digby m +Diggory m +Diindiisi fm +Dijana f +Dike f +Dikeledi f +Dikla mf +Diklah mf +Diksha f +Dilan f +Dilara f +Dilay f +Dilbert m +Dileep m +Dilek f +Diletta f +Dilip m +Dilipa m +Dillan m +Dillon m +Dilşad fm +Dilshad mf +Dilshod m +Dilwen f +Dilwyn m +Dilys f +Dima fm +Dimas m +Dimi f +Dimitar m +Dimitra f +Dimitri m +Dimitrij m +Dimitrije m +Dimitrios m +Dimitris m +Dimka m +Dimo m +Dimos m +Dimosthenis m +Dina f +Diná f +Dinah f +Dinara f +Dinesh m +Dinesha m +Đình mf +Dinis m +Diniz m +Dinko m +Dino m +Dinu m +Diocles m +Diocletian m +Diocletianus m +Diodato m +Diodore m +Diodoros m +Diodorus m +Diodotos m +Diodotus m +Diogenes m +Diogo m +Diokles m +Diomedes m +Diomid m +Diomidis m +Dion m +Dione f +Dionísia f +Dionisia f +Dionisie m +Dionísio m +Dionisio m +Dionne f +Dionysia f +Dionysios m +Dionysius m +Dionysodoros m +Dionysos m +Dionysus m +Dionýz m +Diot f +Dip m +Dipa f +Dipak m +Dipaka m +Dipali f +Dipika f +Dipti f +Direnç m +Dirk m +Disha f +Dismas m +Dita f +Ditte f +Divina f +Divna f +Divya f +Diwata f +Dixie f +Dixon m +Diya fm +Diyan m +Dîyar mf +Diyar mf +Djamila f +Djehuti m +Djehutimesu m +Djehutimose m +Djordje m +Djuradj m +Djuradja f +Djuro m +Dmitar m +Dmitrei m +Dmitri m +Dmitrii m +Dmitriy m +Dmitry m +Dmytro m +Dobri m +Dobrila f +Dobrilo m +Dobrogost m +Dobromil m +Dobromił m +Dobromiła f +Dobromila f +Dobroslav m +Dobroslava f +Dobrosław m +Dobrosława f +Docia f +Dodie f +Doina f +Doireann f +Doirend f +Dölf m +Dölgöön mf +Dollie f +Dolly f +Dolores f +Dolors f +Dolph m +Dom m +Domagoj m +Domantas m +Domantė f +Domas m +Domen m +Domenic m +Domenica f +Domenico m +Dòmhnall m +Domhnall m +Dominga f +Domingo m +Domingos m +Dominic m +Dominica f +Dominick m +Dominicus m +Dominik m +Dominika f +Dominique fm +Dominykas m +Domitia f +Domitian m +Domitianus m +Domitila f +Domitilla f +Domitille f +Domitius m +Domna f +Domnall m +Domnika f +Domnina f +Domninus m +Domnius m +Domnus m +Domonkos m +Dömötör m +Don m +Dona f +Donagh m +Dónal m +Donal m +Donald m +Donalda f +Donaldina f +Donar m +Donát m +Donat m +Donata f +Donatas m +Donatella f +Donatello m +Donatianus m +Donatien m +Donatienne f +Donato m +Donatus m +Doncho m +Dončo m +Donella f +Donelle f +Dong m +Dong-Geun m +Donka f +Donna f +Donnacha m +Donncha m +Donnchad m +Donnchadh m +Donndubán m +Donnie m +Donny m +Donovan m +Dor mf +Dóra f +Dora f +Doran m +Dorcas f +Đorđe m +Dorean f +Doreen f +Dores f +Dorete f +Doretta f +Dori m +Doria f +Dorian m +Doriane f +Doriano m +Dorijan m +Dorin m +Dorina f +Dorinda f +Dorine f +Dorinel m +Dóris f +Doris f +Dorit f +Dorita f +Dorji fm +Dorka f +Dorofei m +Dorofey m +Doron m +Dorota f +Dorotea f +Dorotéia f +Doroteia f +Dorotėja f +Doroteja f +Doroteya f +Dorothea f +Dorothée f +Dorothee f +Dorotheos m +Dorotheus m +Dorothy f +Dorottya f +Dorris f +Dorrit f +Dorte f +Dortha f +Dörthe f +Dorthe f +Dorthea f +Dorthy f +Doru m +Doruk m +Dory f +Dosia f +Dosifey m +Dositej m +Dositheos m +Dositheus m +Dos-teh-seh f +Dot f +Dottie f +Dotty f +Doubravka f +Doug m +Dougal m +Douglas m +Douglass m +Dov m +Dove f +Dovid m +Dovydas m +Doyle m +Do-Yun m +Draco m +Dracula m +Draga f +Dragan m +Dragana f +Dragica f +Dragiša m +Drago m +Dragoljub m +Dragomir m +Dragos m +Dragoș m +Dragoslav m +Dragoslava f +Dragutin m +Draha f +Drahomír m +Drahomíra f +Drahoslav m +Drahoslava f +Drahuše f +Drake m +Drakon m +Draško m +Draupadi f +Draven m +Draža m +Dražen m +Draženka f +Drazhan m +Dre m +Drea f +Dream f +Dreda f +Dren m +Drest m +Drew m +Dries m +Drika f +Drina f +Driscoll m +Drishti f +Driskoll m +Drita f +Drogo m +Dror m +Drorit f +Drousilla f +Drummond m +Drupada m +Drusa f +Drusilla f +Drust m +Drustan m +Drusus m +Drystan m +Du m +Dua f +Duana f +Duane m +Duarte m +Dubaku mf +Dubán m +Dubgall m +Dubhán m +Dubhghall m +Dùbhghlas m +Dubhshláine m +Dubravka f +Dubravko m +Dubthach m +Đức m +Duda mf +Dudda m +Dudel m +Dudley m +Dudu m +Duff m +Dugald m +Duha fm +Duilio m +Duilius m +Dujam m +Duje m +Duke m +Dukvakha m +Dulce f +Dulcibella f +Dulcie f +Dulcinea f +Dulf m +Dumi m +Dumisani m +Dumitra f +Dumitru m +Dumnorix m +Dumuzi m +Dumuzid m +Duncan m +Dũng m +Dunja f +Dunstan m +Dunya f +Dunyasha f +Dương mf +Đurađ m +Đurađa f +Durai m +Durans m +Durante m +Đurđa f +Đurđica f +Durdona f +Durga fm +Duri fm +Durk m +Đuro m +Duru fm +Durward m +Dušan m +Dušana f +Dušanka f +Dushyant m +Dushyanta m +Dušica f +Duško m +Dustin m +Dusty mf +Dutch m +Duuk m +Duygu mf +Dvora f +Dvorah f +Dwain m +Dwayne m +Dwi mf +Dwight m +Dyan f +Dye f +Dylan m +Dylis f +Dymitr m +Dymphna f +Dympna f +Dyson m +Džafer m +Džan m +Džana f +Džejla f +Džejlana f +Dženita f +Dzhabrail m +Dzhamal m +Dzhokhar m +Dzianis m +Dzidra f +Dzidris m +Dzintars m +Dzintra f +Dzmitry m +Dzsenifer f +Dzsesszika f +Dzvezda f +Dzvezdan m +Dzvonimir m +Dzvonko m +Ea mf +Éabha f +Eachann m +Eadán f +Éadaoin f +Eadberht m +Eadbhárd m +Eadburg f +Eadburga f +Eadgar m +Eadgifu f +Eadgyð f +Eadmund m +Eadric m +Eadwald m +Eadweard m +Eadwig m +Eadwine m +Eadwulf m +Ealar m +Ealasaid f +Ealdberht m +Ealdgyð f +Ealdhelm m +Ealdræd m +Ealdwine m +Ealhhere m +Ealhstan m +Ealisaid f +Éamon m +Eamon m +Éamonn m +Ean m +Éanna m +Eanraig m +Eardwulf m +Earl m +Earle m +Earleen f +Earlene f +Earline f +Earnest m +Earnestine f +Eartha f +Easter f +Eastmund m +Easton m +Eavan f +Ebba f +Ebbe m +'Ebdulla m +'Ebdulrehman m +Ebele f +Eben m +Ebenezer m +Éber m +Eberardo m +Ebere f +Eberhard m +Ebony f +Ebrahim m +Ebrar fm +Ebrima m +Ebru f +Ebu Bekir m +Ebubekir m +Ebuka m +Eburwin m +Ecaterina f +Ece f +Ecgberht m +Echdonn m +Echo f +Echthigern m +Eckart m +Eckbert m +Eckehard m +Eckhard m +Eckhart m +Ecrin f +Ed m +Eda f +Edan m +Edana f +Edda f +Eddie mf +Eddy m +Ede m +Edelgard f +Edelmira f +Edelmiro m +Eden fm +Eder m +Ederne f +Édgar m +Edgar m +Edgaras m +Edgard m +Edgardo m +Edgars m +Edi m +Edie f +Edijs m +Edina f +Edison m +Edit f +Edita f +Edīte f +Edite f +Édith f +Edith f +Editha f +Ediz m +Edmao m +Edmé m +Edmée f +Edmond m +Edmonda f +Edmonde f +Edmondo m +Edmund m +Edmundas m +Edmundo m +Edmunds m +Edna f +'Ednah f +Edoardo m +Edom m +Edorta m +Édouard m +Edric m +Edsel m +Edu m +Eduárd m +Eduard m +Eduarda f +Eduardo m +Eduards m +Edur m +Edurne f +Edvaldo m +Edvárd m +Edvard m +Edvards m +Edvige f +Edvin m +Edvinas m +Edvīns m +Edward m +Edweena f +Edwena f +Edwige f +Edwin m +Edwina f +Edwyn m +Edwyna f +Edyta f +Edytha f +Edythe f +Eef mf +Eefje f +Eeli m +Eelis m +Eemeli m +Eemi m +Eemil m +Eerik m +Eerika f +Eerikki m +Eero m +Eesa m +Eetu m +Eeva f +Eevi f +Efa f +Efe mf +Efemena mf +Effie f +Effimia f +Effrosyni f +Efigénia f +Efigênia f +Efisio m +Efraim m +Efraín m +Efrat f +'Efrayim m +Efrem m +Efstathios m +Efthalia f +Efthimia f +Efthimios m +Efthymia f +Efthymios m +Eftychia f +Efua f +Egbert m +Egemen m +Egidijus m +Egídio m +Egidio m +Egil m +Egilhard m +Egill m +Egino m +Églantine f +Eglantine f +Eglė f +Egnatius m +Egon m +Eguzki m +Eguzkiñe f +Eha f +Ehecatl m +Ehmed m +Ehmet m +Ehsan mf +Ehud m +Éibhear m +Éibhir m +Èibhlin f +Eibhlín f +Eideard m +Eidel f +Eider f +Eifion m +Eigyr f +Eija f +Eike mf +Eileen f +Eileifr m +Eileithyia f +Eilert m +Eilidh f +Eilionoir f +Eilís f +Eilish f +Eiluned f +Eilwen f +Eimantas m +Eimantė f +Eimear f +Éimhear f +Éimhín m +Eimhir f +Einar m +Einarr m +Einārs m +Eindride m +Eindriði m +Eini f +Einion m +Eino m +Einrí m +Eir f +Eira f +Eiran m +Eireann f +Eireen f +Eirenaios m +Eirene f +Eirian fm +Eirik m +Eiríkr m +Eiríkur m +Eirini f +Eirlys f +Eirwen f +Eirwyn m +Eitan m +Eithne f +Eivind m +Eižens m +Ejder m +Ejike m +Ejiro mf +Ejiroghene mf +Ejvind m +Eka mf +Ekain m +Ekaitz m +Ekaterina f +Ekaterine f +Ekaterini f +Ekber m +Ekene mf +Ekenedilichukwu mf +Ekewaka m +Ekin fm +Ekkebert m +Ekkehard m +Ekkehardt m +Eko mf +Ekrem m +Ekua f +Ekundayo fm +Ekwueme m +El m +Ela f +Eladio m +Elagabalus m +Elah m +Elaheh f +Elain f +Elaina f +Elaine f +Elam m +Elanor f +'El'azar m +Elazar m +Elba f +Elbert m +Elchanan m +Elchin m +Elçin m +Elda f +Eldad m +Eldar m +Elder m +Eldon m +Eldor m +Eldred m +Elea f +Eleanor f +Eleanora f +Eleanore f +Eleazar m +Electra f +Eleftheria f +Eleftherios m +Elek m +Elektra f +Elemér m +Elen f +Elēna f +Elena f +Elene f +Eleni f +Elenora f +Eleonoora f +Eleonor f +Eleonóra f +Eleonora f +Eléonore f +Eleonore f +Eleri f +Elettra f +Eleutério m +Eleuterio m +Eleutherios m +Eleutherius m +Elfa f +Elfleda f +Elfreda f +Elfrida f +Elfrieda f +Elfriede f +Elham f +Elhanan m +'Elî m +Eli mf +Èlia f +Elia m +Eliab m +Eliakim m +Elián m +Elian mf +Eliana f +Éliane f +Éliás m +Elías m +Eliáš m +Elias m +Eliasz m +Eliav m +Elicia f +Elidi f +Élie m +Eliel m +'Eli'ezer m +Eliezer m +Elif f +'Elifalet m +'Elifelet m +Eligia f +Eligio m +Eligius m +Eligiusz m +Elihu m +Eliina f +Eliisa f +Eliisabet f +Elija f +Elijah m +Elijas m +Elikapeka f +Elil m +Elin f +Elīna f +Elina f +Eline f +Elinor f +Elio m +Eliodoro m +Elioenai m +Elior m +Eliora f +Eliot m +Eliott m +Eliou m +Elioud m +Eliphalet m +Eliphelet m +Elis m +Elisa f +Elisabed f +Elísabet f +Elisabet f +Elisabeta f +Elisabete f +Élisabeth f +Elisabeth f +Elisabeti f +Elisabetta f +Elisaie m +Elisavet f +Elisaveta f +Élise f +Elise f +Elisedd m +Eliseo m +Eliseu m +Eliseus m +Elisha m +Elisheba f +Elisheva f +Elishua m +Elisie m +Eliška f +Eliso f +Elissa f +Elita f +Eliud m +Elixabete f +Eliya m +Eliyahu m +Eliyyahu m +Elīza f +Eliza f +Elizabet f +Elizabeta f +Elizabete f +Elizabeth f +Elizaveta f +Eljas m +Elkan m +Elkanah m +Elke f +Ella f +Ellanher m +Ellar m +Elle f +Ellen f +Ellery mf +Elli f +Elliana f +Ellie f +Ellil m +Ellington fm +Ellinor f +Elliot m +Elliott m +Ellis mf +Elly f +Elma f +Elmar m +Elmārs m +Elmas f +Elmer m +Elmira f +Elmo m +Elna f +'Elnatan m +Elnathan m +Elnora f +Elnur m +Elo f +Elodia f +Élodie f +Elodie f +Elof m +Éloi m +Eloi m +Eloísa f +Eloisa f +Éloïse f +Eloise f +Elon m +Elora f +Elouan m +Elouise f +Elov m +Elowen f +Eloy m +Elpida f +Elpídio m +Elpidio m +Elpidios m +Elpidius m +Elpis f +Elric m +Elrond m +Elroy m +Els f +Elsa f +Elsabeth f +Elşad m +Elsdon m +Else f +Elsie f +Elsje f +Elske f +Elspet f +Elspeth f +Elton m +Eluf m +Eluned f +Eluney fm +Elva f +Elvan fm +Elvar m +Elvia f +Elviira f +Elvin m +Elvina f +Elvio m +Elvīra f +Elvira f +Elvire f +Elvis m +Elwin m +Elwira f +Elwood m +Elwyn m +Ely m +Elyse f +Elysia f +Elyzabeth f +Elžbieta f +Elżbieta f +Elzė f +Em f +Ema f +Emalee f +Eman f +Emanoil m +Emánuel m +Emanuel m +Emanuela f +Emanuele m +Emanuil m +Ember f +Emberly f +Embla f +Emeka m +Emel f +Emelia f +Emelie f +Emelina f +Émeline f +Emelrich m +Emely f +Emem mf +Emer f +Emerald f +Emerens m +Emerentius m +Émeric m +Emerie f +Emerson mf +Emersyn f +Emery mf +Emese f +Emi f +Emidio m +Emiel m +Emigdia f +Emigdio m +Emil m +Émile m +Emilee f +Emili mf +Emília f +Emilía f +Emilia f +Emilian m +Emiliana f +Emiliano m +Émilie f +Emílie f +Emilie f +Émilien m +Émilienne f +Emīlija f +Emilija f +Emílio m +Emilio m +Emilios m +Emilis m +Emiliya f +Emiliyan m +Emīls m +Emily f +Emin m +Emina f +Emine f +Emir m +Emira f +Emirhan m +Emlyn m +Emma f +Emmaline f +Emmalyn f +Emmanouel m +Emmanouil m +Emmanuel m +Emmanuele m +Emmanuelle f +Emmanuhel m +Emmanuil m +Emmeline f +Emmerich m +Emmerson mf +Emmet m +Emmett m +Emmi f +Emmie f +Emmitt m +Emmy f +Emőke f +Emory mf +Emperatriz f +Emrah m +Emre m +Emrik m +Emrys m +Emy f +Emygdius m +Emyr m +Ena f +Enara f +Encarna f +Encarnación f +Encarnita f +Enda m +Endel m +Ender m +Endika m +Endla f +Endre m +Endrit m +Endymion m +Endzela f +Ene f +Enea m +Enéas m +Eneida f +Enej m +Eneko m +Enes m +Enfys f +Engel mf +Engelbert m +Engilram m +Engin m +Enguerrand m +Enheduanna f +Enid f +Enide f +Enikő f +Eniola fm +Enis m +Enisa f +Enise f +Enitan mf +Enkhjargal f +Enkhtuya f +Enki m +Enlil m +Enn m +Énna m +Énnae m +Enni f +Enniaun m +Ennio m +Ennis m +Ennius m +Enobarbus m +Enoch m +Enok m +Enola f +Enora f +Enos m +Enosh m +Enric m +Enrica f +Enrichetta f +Enrico m +Enrique m +Enriqueta f +Ensar m +Ensio m +Enu mf +Enver m +Enya f +Enyinnaya m +Enyo f +Enyonam f +Enzo m +Eochaid m +Eochaidh m +Eoforhild f +Eoforwine m +Eógan m +Eoghan m +Eòghann m +Eòin m +Eoin m +Eos f +Éowyn f +Epaphras m +Epaphroditos m +Ephesius m +Ephraim m +Ephrath f +Epifanio m +Epiktetos m +Epimetheus m +Epiphanes m +Epiphanios m +Epiphanius m +Epiphany f +Epona f +Eponine f +Eppie f +Era f +Eraldo m +Eran m +Erasmo m +Erasmos m +Erasmus m +Erast m +Erastos m +Erastus m +Erasyl m +Erato f +Erazem m +Ercan m +Ercanbald m +Ercilia f +Ercole m +Ercwlff m +Erdem m +Erdenechimeg f +Erdmann m +Erdoğan m +Erebos m +Erebus m +Erekle m +Eren m +Ereshkigal f +Erez m +Erfan m +Erhan m +Erhard m +Éric m +Èric m +Eric m +Érica f +Erica f +Erich m +Erick m +Ericka f +Érico m +Erik m +Érika f +Ērika f +Erika f +Erikas m +Ēriks m +Erin f +Eris f +Ériu f +Erja f +Erkan m +Erkin m +Erkki m +Erland m +Erlantz m +Erle fm +Erlea f +Erlend m +Erlendr m +Erlendur m +Erling m +Erlingr m +Erlingur m +Erma f +Ermacora m +Ermanno m +Ermelinda f +Ermendrud f +Ermenegilda f +Ermenegildo m +Ermenrich m +Ermentrud f +Ermes m +Ermete m +Ermias m +Ermingard f +Erminhilt f +Erminia f +Erminigild m +Erminio m +Erminlinda f +Ermintrude f +Ermis m +Ermo m +Ermolai m +Ern m +Erna f +Ernest m +Ernesta f +Ernestas m +Ernestina f +Ernestine f +Ernesto m +Ernie m +Erno m +Ernő m +Ernst m +Ernust m +Erol m +Eros m +Erramun m +Errol m +Ersilia f +Erskine m +Ertuğrul m +Erva f +Ervin m +Ervīns m +Erwan m +Erwann m +Erwin m +Eryk m +Erykah f +Eryn f +Erzsébet f +Erzsi f +Esa m +Esaias m +Esau m +'Esaw m +Esben m +Esbjörn m +Esdras m +Ese m +Ešeeva'e f +Eseld f +Esen fm +Eseoghene mf +Eser fm +Esfir f +Esha f +Eshe f +Esi f +Esila f +Esin f +Eskandar m +Eskarne f +Eskender m +Eskil m +Esko m +Eslem fm +Esma f +Esmae f +Esmaeel m +Esmaeil m +Esmail m +Esmaralda f +Esme fm +Esmé mf +Esmée f +Esmee f +Esmeralda f +Esmond m +Esmund m +Espen m +Esperanta f +Esperanza f +Espiridión m +Esra f +Essa m +Essence f +Essi f +Essie f +Esta f +Estanislao m +Esteban m +Estebe m +Estee f +Estefânia f +Estefanía f +Estel f +Estela f +Estella f +Estelle f +'Ester f +Ester f +Estera f +Esteri f +Estevão m +Estève m +Esteve m +Estevo m +Esther f +Esthiru f +Esti f +Estienne m +Estiñe f +Estrella f +Esyllt f +Eszter f +Eszti f +Étaín f +Étan f +Etel f +Etele m +Etelka f +Etelvina f +Etenesh f +Eter f +Eteri f +Ethan m +Ethel f +Ethelbert m +Etheldred f +Etheldreda f +Ethelinda f +Ethelred m +Ethelyn f +Ethna f +Ethne f +Ethniu f +Étienne m +Étiennette f +Etna f +Etsuko f +Etta f +Ettie f +Ettore m +Etzel m +Eua f +Euadne f +Euan m +Euandros m +Euanthe f +Euaristos m +Euclid m +Euclides m +Eudes m +Eudocia f +Eudokia f +Eudokimos m +Eudora f +Eudoxia f +Eudoxos m +Eufémia f +Eufêmia f +Eufemia f +Eufrozina f +Eugen m +Eugène m +Eugene m +Eugeneia f +Eugénia f +Eugênia f +Eugenia f +Eugénie f +Eugenijus m +Eugénio m +Eugênio m +Eugenio m +Eugenios m +Eugenius m +Eugeniusz m +Eugraphios m +Eukene f +Eukleides m +Eula f +Eulália f +Eulàlia f +Eulalia f +Eulalie f +Eulogia f +Eulogio m +Eulogios m +Eulogius m +Eumelia f +Eun mf +Eun-Gyeong f +Eunice f +Eunika f +Eunike f +Eun-Jeong f +Eun-Ji f +Eun-Jung fm +Eun-Kyung f +Eunomia f +Eun-U mf +Eun-Woo mf +Eun-Yeong f +Eun-Young f +Euphemia f +Euphemios m +Euphranor m +Euphrasia f +Euphrasie f +Euphrosyne f +Eupraxia f +Euri f +Eurig m +Euripides m +Europa f +Europe f +Eurwen f +Euryalos m +Euryalus m +Eurydice f +Eurydike f +Eusebia f +Eusébio m +Eusebio m +Eusebios m +Eusebiu m +Eusebius m +Eustace m +Eustache m +Eustachio m +Eustachius m +Eustachy m +Eustachys m +Eustacia f +Eustáquio m +Eustaquio m +Eustathios m +Eustathius m +Eustorgio m +Eustorgios m +Eustorgius m +Euterpe f +Euthalia f +Euthymia f +Euthymios m +Euthymius m +Eutímio m +Eutimio m +Eutropia f +Eutropio m +Eutropios m +Eutropius m +Eutychia f +Eutychios m +Eutychius m +Eutychos m +Eutychus m +Éva f +Eva f +Evadne f +Ēvalds m +Evaline f +Evalyn f +Eva María f +Evan m +Evander m +Evandrus m +Evangelia f +Evangelija f +Evangelina f +Evangeline f +Evangeliya f +Evangelos m +Évariste m +Evaristo m +Evaristus m +Evdokia f +Evdokija f +Evdokiya f +Ève f +Eve f +Eveleen f +Evelia f +Evelien f +Eveliina f +Evelin f +Evelína f +Evelīna f +Evelina f +Eveline f +Evelyn fm +Évelyne f +Evelynn f +Even m +Ever mf +Everard m +Everett m +Everette m +Everild f +Everitt m +Everlee f +Everleigh f +Everly f +Evert m +Evette f +Evgeni m +Evgenia f +Evgenij m +Evgenija f +Evgenios m +Evgeniy m +Evgeniya f +Evgeny m +Evhen m +Evi f +Eviatar m +Evie f +Évike f +Evîn f +Evita f +Evlogi m +Evonne f +Evpraksiya f +Évrard m +Evren mf +Evridiki f +Evripidis m +Evron m +Evvie f +Evy f +Evyatar m +Evžen m +Evženie f +Ewa f +Ewald m +Ewan m +Ewart m +Ewelina f +Ewen m +Ewoud m +Ewout m +Eyal m +Eydís f +Eylül f +Eymen m +Eysteinn m +Eytan m +Eyüp m +Eyvindr m +Eyvindur m +Ezar m +Ezechias m +Ezechiel m +Ezekias m +Ezekiel m +Ezequiel m +Ezer m +Ezgi f +Ezhil mf +Ezio m +Eziz m +'Ezra' m +Ezra m +Ezras m +Eztebe m +Faarax m +Faas m +Fábia f +Fabia f +Fábián m +Fabián m +Fabian m +Fabiana f +Fabiano m +Fabianus m +Fabien m +Fabienne f +Fabijan m +Fábio m +Fabio m +Fabíola f +Fabiola f +Fabius m +Fabó m +Fabrice m +Fabricia f +Fabrício m +Fabricio m +Fabricius m +Fabrizia f +Fabrizio m +Fachtna m +Facundo m +Facundus m +Faddei m +Faddey m +Fadhili m +Fadi m +Fadia f +Fadil m +Fadila f +Faɗimatu f +Fadime f +Fadl m +Fadumo f +Fadzai f +Fae f +Fáelán m +Fahd m +Fahim m +Fahima f +Fahmida f +Fahri m +Fahriye f +Faiga f +Faigel f +Faina f +Fairuz f +Fairuza f +Faisal m +Faith f +Faithe f +Faivish m +Faiz m +Faiza f +Faizel m +Fajr f +Fajra f +Fakhri m +Fakhriyya f +Falk m +Fallon f +Famke f +Fancy f +Fane m +Fang fm +Fannar m +Fanni f +Fannie f +Fanny f +Fantine f +Faolán m +Farag m +Farah fm +Farai mf +Faraj m +Faraji m +Faramond m +Faramund m +Fareed m +Fareeha f +Fərhad m +Farhad m +Farhan m +Farhana f +Farhata m +Fərid m +Farid m +Farida f +Faridoon m +Fariha f +Faris m +Farjana f +Farley m +Farohildis f +Faron m +Farooq m +Farouk m +Farquhar m +Farrah f +Farrell m +Farrokh m +Farruh m +Farrukh m +Farrux m +Faruk m +Faruq m +Farvald m +Farzana f +Farzaneh f +Farzona f +Fatema f +Fatemah f +Fatemeh f +Fathi m +Fathima f +Fathimath f +Fathiyya f +Fatih m +Fatiha f +Fátima f +Fàtima f +Fatima f +Fatimah f +Fatimata f +Fatimatou f +Fatin fm +Fatma f +Fatmir m +Fatmire f +Fatoş f +Fatou f +Fatoumata f +Fatsani mf +Fatuma f +Fauna f +Faunus m +Faust m +Fausta f +Faustin m +Faustina f +Faustine f +Faustino m +Faustinus m +Fausto m +Faustus m +Favour mf +Fawn f +Fawzi m +Fawziya f +Fawziyya f +Fay f +Faye f +Fayiz m +Fayruz f +Faysal m +Fayvel m +Fayza f +Fazıl m +Fazl m +Fe f +Fearchar m +Feardorcha m +Fearghal m +Fearghas m +Fearghus m +Febe f +Febronia f +Féchín m +Fedde m +Fedele m +Fedelm f +Fedelma f +Fedelmid mf +Federica f +Federico m +Federigo m +Fedir m +Fedlimid mf +Fedor m +Fedora f +Fedot m +Fedya m +Fehim m +Fehime f +Féichín m +Feidelm f +Feidhelm f +Feidhlim m +Feidhlimidh m +Feidlimid mf +Feige f +Feilim m +Feivel m +Feivush m +Félagi m +Felecia f +Felice m +Felícia f +Felicia f +Feliciana f +Feliciano m +Felicianus m +Felicidad f +Felicidade f +Félicie f +Felicie f +Félicien m +Félicienne f +Felicita f +Felicitás f +Felicitas f +Félicité f +Felicity f +Felicius m +Felicja f +Felicjan m +Felicyta f +Feliks m +Felim m +Felina f +Feline f +Felinus m +Felip m +Felipa f +Felipe m +Felipinho m +Felisa f +Felisha f +Feliu m +Félix m +Felix m +Felizitas f +Femi m +Femie f +Femke f +Femme m +Fen fm +Fenella f +Fenna f +Fenne f +Fenrir m +Fenton m +Feodor m +Feodora f +Feodosiy m +Feodosiya f +Feofan m +Feofil m +Feofilakt m +Ferapont m +Feray f +Ferchar m +Ferdi m +Ferdie m +Ferdinánd m +Ferdinand m +Ferdinanda f +Ferdinando m +Ferdo m +Ferdous mf +Ferdousi f +Ferdowsi m +Ferdy m +Ferdynand m +Ferenc m +Fereshteh f +Fereydoon m +Fereydoun m +Fergal m +Fergie m +Fergus m +Ferhat m +Feri m +Ferid m +Feride f +Feridun m +Feriha f +Ferit m +Ferkó m +Fermín m +Fermin m +Fermintxo m +Fern f +Fernand m +Fernanda f +Fernande f +Fernando m +Fernão m +Ferne f +Feroz m +Feroze m +Ferran m +Ferrer m +Ferruccio m +Ferrutius m +Feruza f +Fester m +Festus m +Fevronia f +Fevzi m +Fevziye f +Ffion f +Fflur f +Ffraid f +Ffransis m +Fiachna m +Fiachra m +Fiachrae m +Fiacre m +Fiadh f +Fiamma f +Fiammetta f +Fianna f +Fidan f +Fidda f +Fidel m +Fidela f +Fidelia f +Fidelis m +Fidelma f +Fido m +Fieke f +Fien f +Fiene f +Fiera f +Fiete m +Fife m +Fifi f +Figaro m +Fihr m +Fikret m +Fikri m +Fikriye f +Fikriyya f +Filadelfo m +Filat m +Filbert m +Filemón m +Filib m +Filibert m +Filiberto m +Filimena f +Filimon m +Filip m +Filipa f +Filipe m +Filipina f +Filipp m +Filippa f +Filippo m +Filippos m +Filippu m +Filippus m +Filips m +Filiz f +Fillin m +Filomena f +Fima m +Fina f +Finbar m +Finbarr m +Findláech m +Findlay m +Finees m +Finella f +Fingal m +Finka f +Finlay m +Finley mf +Finn m +Finnán m +Finnbar m +Finnbarr m +Finnegan m +Finnén m +Finnguala f +Finnian m +Finnley m +Finnr m +Finnuala f +Finnur m +Finola f +Fintan m +Fion m +Fíona f +Fiona f +Fionn m +Fionnán m +Fionnbarra m +Fionnbharr m +Fionnghal f +Fionnghuala f +Fionnlagh m +Fionntan m +Fionnuala f +Fionola f +Fioralba f +Fiore fm +Fiorella f +Fiorenza f +Fiorenzo m +Fiorino m +Fırat m +Firdaus m +Firdausi m +Firdos m +Firdous m +Firenze f +Firmin m +Firmino m +Firminus m +Firoozeh f +Firouz m +Firouzeh f +Firoz m +Firuz m +Firuza f +Firuzə f +Firuze f +Firuzeh f +Fishel m +Fisher m +Fishke m +Fito m +Fitz m +Fitzroy m +Fitzwilliam m +Fizza f +Fjolla f +Flæmingr m +Flaithrí m +Flaka f +Flamur m +Flanagan m +Flann mf +Flannán m +Flannery f +Flávia f +Flavia f +Flavian m +Flaviana f +Flaviano m +Flavianus m +Flavie f +Flavien m +Flavienne f +Flávio m +Flavio m +Flaviu m +Flavius m +Flemming m +Fletcher m +Fleur f +Fleurette f +Flick fm +Flint m +Flip m +Flo f +Floella f +Floor mf +Floortje f +Flor f +Flóra f +Flora f +Flore f +Florence fm +Florência f +Florencia f +Florêncio m +Florencio m +Florent m +Florentia f +Florentin m +Florentina f +Florentine f +Florentino m +Florentinus m +Florentius m +Floretta f +Florette f +Flórián m +Florián m +Florian m +Floriana f +Floriane f +Florianne f +Floriano m +Florianus m +Florijan m +Florimond m +Florin m +Florina f +Florinda f +Florine f +Florinus m +Floris m +Floro m +Florrie f +Florry f +Florus m +Flossie f +Flower f +Floyd m +Flutura f +Flynn m +Foka m +Folami mf +Folant m +Folcher m +Folke m +Fólki m +Foma m +Fons m +Forbes m +Ford m +Forest m +Forrest m +Fortuna f +Fortunata f +Fortunato m +Fortunatus m +Fortune mf +Foster m +Foteini f +Fotini f +Fotios m +Fotis m +Fouad m +Fox m +Fran mf +Franc m +Franca f +France fm +Francene f +Frances f +Francesc m +Francesca f +Francesca Pia f +Francesco m +Francesco Pio m +Francescu m +Francette f +Franci m +Francine f +Francis mf +Francisca f +Francisco m +Francisco Javier m +Franciscus m +Frančišek m +Frančiška f +Franciska f +Francisque m +Franciszek m +Franciszka f +Franck m +Francka f +Franco m +François m +Françoise f +François-Marie m +Frane m +Frang m +Frangag f +Franjo m +Frank m +Franka f +Frankenstein m +Frankie mf +Franklin m +Franklyn m +Franko m +Frannie f +Franny mf +Frano m +Frans m +Frañsez m +Frañseza f +František m +Františka f +Frantzisca f +Frantziscu m +Frantziska f +Frantzisko m +Franz m +Fränze f +Franzi f +Franziska f +Franz Xaver m +Fraser m +Frauke f +Frazier m +Frea f +Fred m +Freda f +Freddie mf +Freddy m +Fredenand m +Frédéric m +Frederica f +Frederick m +Frederico m +Frederik m +Frederikke f +Frédérique f +Frediano m +Fredo m +Fredric m +Fredrick m +Fredrik m +Fredrika f +Freek m +Freeman m +Freida f +Frej m +Freja f +Frens m +Frenske m +Frey m +Freya f +Freyde f +Freyja f +Freyr m +Fricis m +Frida f +Friday m +Fridenot m +Friderik m +Frideswide f +Frīdrihs m +Fridtjof m +Friduhelm m +Friduman m +Fridumar m +Friduric m +Fridwald m +Frieda f +Friede f +Friedemann m +Friederike f +Friedhelm m +Friedhold m +Friedrich m +Frig f +Frigg f +Frigidianus m +Frigyes m +Friso m +Fríða f +Friðrik m +Friðrika f +Friðþjófr m +Friðuswiþ f +Fritiof m +Fritjof m +Frits m +Fritz m +Fritzi f +Frode m +Frodo m +Frona f +Frosina f +Fróði m +Frøya f +Fruma f +Fruzsina f +Fryderyk m +Fryderyka f +Fu mf +Fuad m +Fuat m +Fūjin m +Fulbert m +Fulco m +Fulgencio m +Fulgentius m +Fulgenzio m +Fulk m +Fulke m +Fülöp m +Fulton m +Fulvia f +Fúlvio m +Fulvio m +Fulvius m +Fumihito m +Fumnanya fm +Funda f +Fungai mf +Funke f +Funmilayo f +Funs m +Funske m +Furaha f +Furiosa f +Furkan m +Furqan m +Füsun f +Fuyuko f +Fyfe m +Fynn m +Fyodor m +Fyokla f +Gabby mf +Gabe m +Gabi fm +Gabija f +Gabin m +Gabino m +Gabinus m +Gabir m +Gábor m +Gabr m +Gábriel m +Gabriël m +Gabriel m +Gabriela f +Gabriele mf +Gabrielė f +Gabrielius m +Gabriella f +Gabriëlle f +Gabrielle f +Gabriels m +Gabrijel m +Gabrijela f +Gad m +Gadar f +Gadisa m +Gadise f +Gae f +Gaea f +Gaël m +Gael m +Gaëlle f +Gaenor f +Gaétan m +Gaëtan m +Gaetana f +Gaétane f +Gaëtane f +Gaetano m +Gafar m +Gage m +Gaheriet m +Gaheris m +Gai m +Gaia f +Gaiana f +Gaiane f +Gail f +Gaila f +Gaios m +Gaioz m +Gaius m +Gaizka m +Gaja f +Gál m +Gal fm +Gala f +Galaad m +Galadriel f +Galahad m +Galaktion m +Galal m +Galatea f +Galateia f +Gale fm +Galeazzo m +Galen m +Galena f +Galene f +Galenos m +Gali f +Galia f +Galila f +Galilahi f +Galina f +Galini f +Galip m +Galit f +Gall m +Gal·la f +Galla f +Gallagher m +Gallchobhar m +Gallcobar m +Gallo m +Gallus m +Galo m +Galvão m +Galya f +Gamal m +Gamaliel m +Gamil m +Gamila f +Gamze f +Ganbaatar m +Ganbold m +Gandalf m +Gandálfr m +Ganesh m +Ganesha m +Gang m +Gani m +Ganix m +Ganizani m +Ganna f +Gantulga m +Ganymede m +Ganymedes m +Ganzorig m +Garaile m +Garance f +Garbán m +Garbhán m +Garbi f +Garbiñe f +Gardenia f +Garegin m +Garen m +Gareth m +Garey m +Garfield m +Gargi f +Garland m +Garnet fm +Garnett mf +Garnette f +Garnier m +Garret m +Garrett m +Garrick m +Garry m +Garsea m +Garth m +Garvan m +Gary m +Gáspár m +Gaspar m +Gaspard m +Gaspare m +Gasparo m +Gašper m +Gasto m +Gastón m +Gaston m +Gastone m +Gathbiyya f +Gaubert m +Gaufrid m +Gauhar f +Gaultier m +Gauri f +Gautam m +Gautama m +Gautbert m +Gaute m +Gauthier m +Gauti m +Gautier m +Gautselin m +Gautstafr m +Gautvin m +Gauvain m +Gavin m +Gavino m +Gavrail m +Gavrel m +Gavri'el m +Gavriel m +Gavriil m +Gavriilu m +Gavril m +Gavrila f +Gavrilo m +Gawahir f +Gawain m +Gawdat m +Gaweł m +Gay f +Gayan m +Gayane f +Gayathri f +Gayatri f +Gaye f +Gayelord m +Gayla f +Gayle fm +Gaylord m +Gaynor f +Gaz m +Gazbiyya f +Gazsi m +Gbemisola f +Gearalt m +Gearóid m +Gebahard m +Gebhard m +Gedaliah m +Gedalyahu m +Gedeon m +Geena f +Geert m +Geertje f +Geertruida f +Geevarghese m +Gefen fm +Geffrey m +Geghard m +Geir m +Geirr m +Gela m +Gellért m +Gelsomina f +Geltrude f +Gema f +Gemariah m +Gemaryahu m +Gemini m +Gemma f +Gena fm +Genadi m +Genādijs m +Gene m +Genesio m +Genesis f +Genesius m +Genette f +Geneva f +Geneviève f +Genevieve f +Genevra f +Genghis m +Genie f +Genís m +Genista f +Genko m +Gennadi m +Gennadios m +Gennadius m +Gennadiy m +Gennadiya f +Gennady m +Gennarino m +Gennaro m +Geno m +Genovaitė f +Genovefa f +Genoveffa f +Genoveva f +Genowefa f +Genrikh m +Gentian m +Gentiana f +Gentius m +Genya m +Geoff m +Geoffrey m +Geoffroi m +Geoffroy m +Geordie m +Georg m +George m +Georgeanna f +Georgei m +Georgene f +Georges m +Georgeta f +Georgette f +Georgi m +Georgia f +Georgiana f +Georgie fm +Georgijs m +Georgina f +Georgine f +Georgios m +Georgius m +Georgiy m +Georgo m +Georgs m +Georgy m +Gera m +Geraint m +Gérald m +Gerald m +Géraldine f +Geraldine f +Geraldo m +Gerallt m +Gérard m +Gerard m +Gerarda f +Gerardo m +Gerasim m +Gerasimos m +Géraud m +Gerben m +Gerbern m +Gerbold m +Gerd mf +Gerda f +Gerdina f +Gerel f +Geremia m +Gereon m +Geretrudis f +Gerfrid m +Gerfried m +Gergana f +Gergely m +Gergina f +Gergő m +Gerhard m +Gerhardt m +Gerhild f +Gerhold m +Gerlach m +Gerlind f +Gerlinde f +Gerlof m +Germain m +Germaine f +Germán m +German m +Germana f +Germanicus m +Germano m +Germanus m +Germogen m +Germund m +Gernot m +Gero m +Gerolamo m +Gerold m +Gerolf m +Gerolt m +Gerónimo m +Geronimo m +Gerontius m +Gerrard m +Gerrit m +Gerry mf +Gershom m +Gershon m +Gert m +Gerðr f +Gertie f +Gertraud f +Gertrúd f +Gertrud f +Gertrúda f +Gertrūda f +Gertruda f +Gertrude f +Gertrudes f +Gertrudis f +Gertruida f +Gerulf m +Gervais m +Gervaise f +Gervas m +Gervase m +Gervásio m +Gervasio m +Gervasius m +Gerwazy m +Gesine f +Gessica f +Gethin m +Gethsemane f +Geula f +Gevorg m +Géza m +Gezabele f +Ghada f +Ghadir f +Ghalib m +Ghaliya f +Ghassan m +Ghayth m +Ghenadie m +Gheorghe m +Gherardo m +Ghislain m +Ghislaine f +Ghiță m +Ghjaseppu m +Ghjulia f +Ghjuvan m +Ghjuvanna f +Ghjuvanni m +Gholam m +Ghoncheh f +Ghufran fm +Ghulam m +Ghyslain m +Ghyslaine f +Gia f +Giacinta f +Giacinto m +Giacobbe m +Giacoma f +Giacomina f +Giacomo m +Giada f +Giambattista m +Giampaolo m +Giampiero m +Gian m +Giancarlo m +Gianfranco m +Giang fm +Gianis m +Gianluca m +Gianluigi m +Gianmarco m +Gianmaria m +Gianna f +Gian-nah-tah m +Gianni m +Giannina f +Giannino m +Giannis m +Giano m +Gianpaolo m +Gianpiero m +Gib m +Gideon m +Gidie m +Gid'on m +Gidon m +Giedrė f +Giedrius m +Giffard m +Gift mf +Gifty f +Gigi fm +Giiwedin m +Giiwedinokwe f +Gijs m +Gijsbert m +Gijsberta f +Gil m +Gilad m +Gilah f +Gilbert m +Gilberta f +Gilberte f +Gilberto m +Gilchrist m +Gilda f +Gildo m +Gilead m +Giles m +Gilgamesh m +Gili fm +Gill f +Gilla Críst m +Gilleasbaig m +Gilleasbuig m +Gille Críst m +Gilles m +Gillespie m +Gillette f +Gillian f +Gillis m +Gilroy m +Giltbert m +Gina f +Ginés m +Ginette f +Ginevra f +Ginger f +Ginka f +Ginnie f +Ginny f +Gino m +Gintaras m +Gintarė f +Gintautas m +Gio m +Giò mf +Gioacchino m +Gioachino m +Giobbe m +Gioconda f +Gioele m +Gioia f +Giona m +Gionata m +Giordano m +Giorgi m +Giorgia f +Giorgina f +Giorgino m +Giorgio m +Giorgos m +Giosetta f +Giosuè m +Giotto m +Giovanbattista m +Giovanna f +Giovannetta f +Giovanni m +Giove m +Giraldo m +Girish m +Girisha m +Girolamo m +Ģirts m +Gisa f +Gisbert m +Gisela f +Giselbert m +Gisèle f +Gisele f +Gisella f +Giselle f +Giselmund m +Gisila f +Gisilbert m +Gisilfrid m +Gislenus m +Gislin m +Gismund m +Gisselle f +Gita f +Githa f +Gitta f +Gittan f +Gitte f +Gittel f +Giuanna f +Giuanne m +Giuditta f +Giulia f +Giuliana f +Giuliano m +Giulietta f +Giulio m +Giunone f +Giuseppa f +Giuseppe m +Giuseppina f +Giusi fm +Giustina f +Giustino m +Giusto m +Giusy f +Givi m +Gizella f +Gizem f +Gizi f +Gjergj m +Gjon m +Gjord m +Gjorgji m +Gjurd m +Gladwin m +Gladwyn m +Gladys f +Glædwine m +Glafira f +Glanville m +Glaphyra f +Gláucia f +Glaucia mf +Gláucio m +Glauco m +Glaucus m +Glaukos m +Gleb m +Glebu m +Glen m +Glenda f +Glendower m +Glenice f +Glenn m +Glenna f +Glennis f +Glenys f +Gligor m +Glika f +Glikeriya f +Glinda f +Glooscap m +Glória f +Gloria f +Gloriana f +Glorinda f +Glory f +Glukel f +Glykeria f +Glyn m +Glyndwr m +Glynis f +Glynn m +Gnaeus m +Gobán m +Gobannos m +Gobbán m +Gobind m +Gobinda m +Gobnait f +Gobnat f +Gobnata f +Gobnet f +Gocha m +Goda mf +Godabert m +Godafrid m +Godascalc m +Goddard m +Godefroy m +Godehard m +Godelieve f +Godeliva f +Godfrey m +Godfried m +Godgifu f +Godiva f +Godofredo m +Godric m +Godtfred m +Godwine m +Godzilla m +Goemon m +Gofannon m +Goffredo m +Gofraidh m +Goga m +Gogi m +Gohar fm +Goibniu m +Goizane f +Goizargi f +Goizeder f +Gojira m +Gojko m +Gökçe f +Göker m +Gökhan m +Göksu mf +Goku m +Gol f +Golbahar f +Golda f +Goldie f +Goliath m +Gollum m +Golnar f +Gölnara f +Golnaz f +Golshan fm +Golyat m +Golzar mf +Goma m +Gomer mf +Gomes m +Gonca f +Gonçal m +Gonçalo m +Goneril f +Gonorilla f +Gönül f +Gonxhe f +Gonzalo m +Goodwin m +Gopal m +Gopala m +Gopinath m +Gopinatha m +Gor m +Goraidh m +Göran m +Gøran m +Goran m +Goranka f +Gord m +Gordan m +Gordana f +Gorden m +Gordian m +Gordianus m +Gordie m +Gordon m +Gordy m +Gore m +Goretti f +Ġorġ m +Gorgi m +Gorica f +Gorka m +Gormflaith f +Gormlaith f +Goro m +Gorō m +Goronwy m +Gorou m +Gosia f +Gosse m +Gösta m +Göstav m +Gostislav m +Goswin m +Göta f +Gotam m +Gotama m +Göte m +Goteleib m +Gottfrid m +Gottfried m +Gotthard m +Gotthilf m +Gotthold m +Gottlieb m +Gottlob m +Gottschalk m +Gotzon m +Gotzone f +Goutam m +Gouyen f +Govad m +Govannon m +Govind m +Govinda m +Gowri f +Goyaałé m +Góyąń f +Goyathlay m +Goyo m +Gözde f +Gozzo m +Graça f +Grace f +Gracelyn f +Gracelynn f +Gracia f +Graciana f +Graciano m +Gracie f +Graciela f +Gracília f +Gracja f +Gracjan m +Grady m +Graeme m +Graham m +Grahame m +Gráinne f +Grania f +Granit m +Grant m +Granuaile f +Granville m +Granya f +Gratia f +Gratian m +Gratiana f +Gratianus m +Gratien m +Gray mf +Graysen m +Grayson m +Grazia f +Graziana f +Graziano m +Graziella f +Gražina f +Grażyna f +Gréagóir m +Greer fm +Greet f +Greetje f +Greg m +Grega m +Greger m +Gregers m +Gregg m +Grégoire m +Gregor m +Gregoria f +Gregório m +Gregorio m +Gregorios m +Gregorius m +Grégory m +Gregory m +Greig m +Grenville m +Gresham m +Gréta f +Greta f +Gretchen f +Grete f +Gretel f +Grethe f +Gretta f +Grey mf +Greyson m +Grga m +Grgur m +Grid f +Grier fm +Griet f +Griffin m +Griffith m +Grifud m +Grigol m +Grigor m +Grigore m +Grigori m +Grigorii m +Grigorijs m +Grigorios m +Grigoris m +Grigoriy m +Grigory m +Grimaldo m +Grímhildr f +Grimhilt f +Grimwald m +Griogair m +Griselda f +Grisha m +Grishma f +Gríðr f +Grizel f +Gro f +Gróa f +Gronw m +Grosvenor m +Grover m +Grozda f +Grozdan m +Grozdana f +Gruffud m +Gruffudd m +Gruffydd m +Grusha f +Gry f +Grzegorz m +Guadalupe fm +Gualberto m +Gualguainus m +Guálter m +Gualterio m +Gualtiero m +Guanting mf +Guanyu mf +Guarin m +Guda m +Gudbrand m +Gudina m +Gudmund m +Gudrun f +Guendolen f +Guendoleu m +Guendoloena f +Guenevere f +Guenièvre f +Guerino m +Guglielmo m +Gugulethu f +Gui m +Guido m +Guifré m +Guilherme m +Guillaume m +Guillem m +Guillermo m +Guim m +Guinevere f +Guiomar fm +Guiscard m +Guiying mf +Gül f +Gul mf +Gülay f +Gulbadan f +Gülbahar f +Gulbahar fm +Gulbrand m +Gulbrandr m +Gülçin f +Gülden f +Guli f +Gulisa f +Gülistan f +Gulistan f +Gülizar f +Gull f +Gulla f +Gulmira f +Gülnar f +Gulnar f +Gülnarə f +Gulnara f +Gülnaz f +Gulnaz f +Gulnora f +Gülnur f +Gulrukh f +Gülşen f +Gulshan m +Gülten f +Gulumbu f +Gulzar mf +Gumarich m +Gun f +Gunārs m +Günay fm +Gunborg f +Gunda f +Gundahar m +Gunder m +Gundhram m +Gundisalvus m +Gundula f +Günel f +Gunhild f +Gunhilda f +Gunilla f +Gunn f +Gunna f +Gunnar m +Gunnarr m +Gunnbjǫrg f +Gunne m +Gunnel f +Gunner m +Gunnhild f +Gunnhildr f +Gunnhildur f +Gunni m +Gunnr f +Gunnvaldr m +Gunnvǫr f +Gunnvor f +Günter m +Gunter m +Günther m +Gunther m +Guntram m +Guntur m +Gunvald m +Gunvor f +Guo mf +Guorthigirn m +Gurdeep mf +Gurgen m +Gurmeet mf +Guro f +Gurpreet mf +Gürsel m +Gurutz m +Gurutze f +Gus m +Gussie f +Gust m +Gusta f +Gustaaf m +Gustaf m +Gustav m +Gustave m +Gustavo m +Gustavs m +Gustaw m +Gusti m +Gusztáv m +Guðbrandr m +Guðfriðr m +Guðini m +Guðlaug f +Guðleif f +Guðleifr m +Guðmundr m +Guðmundur m +Guðni m +Guðríðr f +Guðríður f +Guðrøðr m +Guðrún f +Gutierre m +Guto m +Guus m +Guusje f +Güvenç m +Guwisti f +Guy m +Gvidas m +Gwalchmai m +Gwalchmei m +Gwallter m +Gwandoya m +Ġwann m +Gwawl m +Gwawr f +Gwen f +Gwenaël m +Gwenaëlle f +Gwenda f +Gwendal m +Gwenddoleu m +Gwenddydd f +Gwendolen f +Gwendoline f +Gwendolyn f +Gweneth f +Gwenevere f +Gwenfrewi f +Gwenhael m +Gwenhwyfar f +Gwenith f +Gwenllian f +Gwenn f +Gwenneg m +Gwenneth f +Gwenyth f +Gwil m +Gwilherm m +Gwilim m +Gwillym m +Gwilym m +Gwladus f +Gwladys f +Gwrtheyrn m +Gwydion m +Gwyn m +Gwynedd fm +Gwyneira f +Gwyneth f +Gwynfor m +Gwynn m +Gwythyr m +Gyatso m +Gyda f +Gyeong mf +Gyeong-Hui f +Gyeong-Ja f +Gyeong-Suk f +Gyles m +Gyneth f +Gyöngyi f +Gyöngyvér f +György m +Györgyi f +Györgyike f +Győző m +Gypsy f +Gyða f +Gytha f +Gyula m +Gyuri m +Hà fm +Haakon m +Haamid m +Habacuc m +Habakkuk m +Habib m +Habiba f +Habibullah m +Hacer f +Hachiro m +Hachirō m +Hachirou m +Hacî m +Hacı m +Hadad m +Hadar fm +Hadas f +Hadasa f +Hadassah f +Hades m +Hadewidis f +Hadewig f +Hadewych f +Hadi m +Hadia f +Hadija f +Hadijah f +Hadil f +Hadiya f +Hadiye f +Hadiyya f +Hadiza f +Hadizatu f +Hadley fm +Hadrian m +Hadriana f +Hadrianus m +Hadrien m +Hadubert m +Hadufuns m +Hadya f +Hadyn mf +Haerviu m +Ha-Eun f +Haf f +Hafeez m +Hafiz m +Hafsa f +Hafsah f +Hafsat f +Hafsatu f +Hafza f +Hagano m +Hagar f +Hagen m +Haggai m +Haggith f +Hagir f +Hagit f +Hagne f +Hagop m +Hải m +Hai mf +Haidar m +Haidee f +Haider m +Haides m +Haifa f +Haig m +Haik m +Hailee f +Hailey f +Hailie f +Hailwic f +Haim m +Haimo m +Haizea f +Hajar f +Haji m +Hajime m +Hajna f +Hajnal f +Hajnalka f +Hajni f +Ha-Jun m +Håkan m +Hakan m +Hakeem m +Hakim m +Hakob m +Hákon m +Håkon m +Hákun m +Hal m +Hala f +Halcyon f +Halcyone f +Haldor m +Hale fm +Haleigh f +Haley f +Hálfdan m +Halfdan m +Halide f +Halil m +Halim m +Halima f +Halimah f +Halimat f +Halimatu f +Halime f +Halina f +Halinka f +Halit m +Halkyone f +Hall m +Hallam m +Hallbjörn m +Hallbjǫrn m +Halldór m +Halldor m +Halldóra f +Halle mf +Hallel fm +Halli m +Hallie f +Hallr m +Hallstein m +Hallsteinn m +Hallþóra f +Hallþórr m +Hallvard m +Hallvarðr m +Halsten m +Haluk m +Halvar m +Halvard m +Halvdan m +Halvor m +Halyna f +Ham m +Hama m +Haman m +Hamed m +Hameed m +Hamid m +Hamida f +Hamidah f +Hamide f +Hamideh f +Hamilcar m +Hamilton m +Hamish m +Hamisi m +Hamisu m +Hamit m +Hamlet m +Hammond m +Hammurabi m +Hammu-Rapi m +Hamnet m +Hamo m +Hamon m +Hampus m +Hamza m +Hana f +Hanaa f +Hanae f +Hanako f +Hanan mf +Hananiah m +Hananias m +Handan f +Hande f +Haneef m +Haneul mf +Hằng f +Hanga f +Hani m +Hania f +Hanif m +Hanifa f +Hanife f +Haniya f +Haniyah f +Haniyya f +Hank m +Hanke f +Hankin m +Hann m +Hanna f +Hannah f +Hannas m +Hanne fm +Hannele f +Hannelore f +Hannes m +Hannibal m +Hannie f +Hanno m +Hannu m +Hans m +Hans-Günter m +Hans-Günther m +Hansjörg m +Hans-Jürgen m +Hans-Peter m +Hanspeter m +Hanuš m +Hanzō m +Hanzou m +Hào m +Haoua f +Ha-o-zinne f +Hapi m +Happy fm +Haralamb m +Haralambi m +Haralampi m +Harald m +Haraldr m +Haraldur m +Haran m +Hardeep m +Harding m +Hardman m +Hardmod m +Harduwich m +Hardwin m +Hardy m +Haregewoin f +Harel m +Harendra m +Hari m +Haribert m +Hariman m +Harinder mf +Haris mf +Harish m +Harisha m +Harith m +Hariwald m +Hariwini m +Harkaitz m +Harlan m +Harland m +Harlee f +Harleigh f +Harley mf +Harlow fm +Harm m +Harmon m +Harmonia f +Harmonie f +Harmony f +Harold m +Haroldo m +Haroon m +Haroun m +Harouna m +Harper fm +Harpreet mf +Harri m +Harriet f +Harriett f +Harrietta f +Harriette f +Harris m +Harrison m +Harry m +Harsh m +Harsha m +Harshad m +Harshada f +Harshal m +Harta m +Hartley mf +Hartmann m +Hartmut m +Hartwig m +Hartwin m +Haru mf +Haruka fm +Haruki m +Haruko f +Harun m +Haruna fm +Harut m +Haruto m +Harutyun m +Harve m +Harvey m +Harvie m +Həsən m +Hasan m +Hasdrubal m +Haseeb m +Hashem m +Hashim m +Hasib m +Haşim m +Hasim m +Hasip m +Haskel m +Hasna f +Hassan m +Hasse m +Hasso m +Hastiin m +Hathor f +Hatice f +Hatidža f +Hatim m +Hatshepsut f +Hattie f +Hatty f +Hauke m +Haukea f +Haul m +Haunani f +Haurvatat f +Hauwa f +Hauwa'u f +Hauzini f +Hava f +Håvard m +Hávarðr m +Havel m +Haven fm +Havilah m +Havryil m +Havva f +Hawa f +Hawise f +Haya f +Hayat fm +Hayate m +Hayati m +Hayato m +Haydar m +Haydée f +Hayden mf +Hayder m +Haydn m +Hayes m +Hayfa f +Hayim m +Hayk m +Haylee f +Hayleigh f +Hayley f +Haylie f +Hayri m +Haytham m +Ha-Yun f +Haywood m +Hayyim m +Hazael m +Hazal f +Hazan f +Haze mf +Hazel f +He fm +Headley m +Heard m +Heath m +Heather f +Heaven f +Hebe f +Hebel m +Heber m +Hecate f +Heck m +Heckie m +Héctor m +Hèctor m +Hector m +Hecuba f +Hed mf +Hedda f +Heddwyn m +Hédi fm +Hediye f +Hedley m +Hedvig f +Hedviga f +Hedvika f +Hedwig f +Hedy f +Hefin m +Hefina f +Hege f +Heida f +Heide f +Heidemarie f +Heidi f +Heidrich m +Heidrun f +Heike fm +Heiki m +Heikki m +Heiko m +Heilwig f +Heilyn m +Heimdall m +Heimdallr m +Heimir m +Heimirich m +Hein m +Heiner m +Heino m +Heinrich m +Heinrike f +Heintje f +Heinz m +Heirani f +Heiðrún f +Heitiare f +Heitor m +Hekabe f +Hekate f +Hekla f +Hektor m +Hel f +Helah f +Hélder m +Helder m +Heledd f +Heleen f +Heleena f +Heleentje f +Helen f +Heléna f +Helēna f +Helena f +Hélène f +Helene f +Helenka f +Helerius m +Helewidis f +Helfried m +Helga f +Helge m +Helgi m +Heli mf +Hélia f +Helias m +Hélier m +Helier m +Helihel m +Hélio m +Helio m +Heliodoro m +Heliodoros m +Helios m +Helka f +Hella f +Hellä f +Helladios m +Helladius m +Helle f +Hellen f +Helma f +Helmfrid m +Helmfried m +Helmi f +Helmine f +Helmo m +Helmold m +Helmut m +Helmuth m +Heloísa f +Héloïse f +Helve f +Helvi f +Helvia f +Helvius m +Hema f +Hemera f +Hemi m +Hemingr m +Hemming m +Henadz m +Henda f +Hendel f +Henderson m +Hendrick m +Hendricus m +Hendrik m +Hendrika f +Hendrikje f +Hendrikus m +Hendrina f +Hendrix m +Hendry m +Hene f +Heng mf +Hengist m +Henk m +Henna f +Hennadiy m +Hennie mf +Henning m +Henny fm +Henri m +Henrich m +Henricus m +Henriett f +Henrietta f +Henriëtte f +Henriette f +Henriikka f +Henrik m +Henrika f +Henrikas m +Henrike f +Henrikki m +Henrique m +Henry m +Henryk m +Henryka f +Henye f +Heorhiy m +Hephaestus m +Hephaistos m +Hephzibah f +Hepsie f +Hepzibah f +Hera f +Heracleitus m +Heracles m +Heraclides m +Heraclio m +Heraclitus m +Heraclius m +Herais f +Herakleides m +Herakleios m +Herakleitos m +Herakles m +Herb m +Herbert m +Herberto m +Herbie m +Hercule m +Hercules m +Heremoana m +Herenui f +Hereward m +Hereweald m +Heribert m +Heriberto m +Herk m +Herkus m +Herleif m +Herleifr m +Herleva f +Hermagoras m +Herman m +Hermann m +Hermanni m +Hermanus m +Hermenegild m +Hermenegildo m +Hermes m +Hermia f +Hermina f +Hermine f +Hermínia f +Herminia f +Hermínio m +Herminio m +Herminius m +Hermione f +Hermogenes m +Hermokrates m +Hermolaos m +Hernán m +Hernando m +Hero fm +Herod m +Herodes m +Herodias f +Herodion m +Herodotos m +Herodotus m +Heroides m +Heroidias f +Heroidion m +Heron m +Herry m +Herschel m +Hersh m +Hershel m +Hersilia f +Herta f +Hertha f +Heru m +Herut f +Herve m +Hervé m +Hervey m +Hesekiel m +Hesham m +Heshel m +Hesiod m +Hesiodos m +Hesperos m +Hester f +Hestia f +Heta f +Hettie f +Heulwen f +Hevel m +Hewie m +Heydar m +Hezekiah m +Hiawatha m +Hiba f +Hibiki mf +Hibo f +Hidayat m +Hidde m +Hideaki m +Hideki m +Hideyoshi m +Hienadz m +Hieremias m +Hieremihel m +Hieronim m +Hieronym m +Hieronymos m +Hieronymus m +Hieu m +Hiezabel f +Hiezecihel m +Hifumi mf +Higini m +Higinio m +Higuel m +Hikari fm +Hikaru mf +Hikmat mf +Hikmet m +Hila f +Hilaire m +Hilal mf +Hilaria f +Hilario m +Hilarion m +Hilarius m +Hilary fm +Hilbert m +Hild f +Hilda f +Hilde f +Hildebert m +Hildebrand m +Hildefons m +Hildegard f +Hildegarde f +Hildiberht m +Hildigardis f +Hildimar m +Hilding m +Hildingr m +Hilditrut f +Hildiwara f +Hildr f +Hildræd m +Hildred fm +Hildur f +Hilja f +Hilla f +Hillar m +Hillary f +Hillel m +Hillevi f +Hilma f +Hilmar m +Hiltraud f +Hiltrud f +Hiltrude f +Hina f +Hinata fm +Hind f +Hine f +Hinnerk m +Hinrich m +Hinrik m +Hiob m +Hipolit m +Hipólito m +Hippocrates m +Hippokrates m +Hippolyta f +Hippolyte fm +Hippolytos m +Hira fm +Hirah m +Hiraku m +Hiram m +Hiranur f +Hirohito m +Hiroki m +Hiroko f +Hirom m +Hiroshi m +Hiroto m +Hirsh m +Hirshel m +Hirune f +Hisein m +Hisham m +Hitomi f +Hiwot f +Hizkiah m +Hjálmar m +Hjalmar m +Hjálmarr m +Hjördís f +Hjördis f +Hjørdis f +Hjǫrdís f +Hjörtur m +Hla mf +Hleb m +Hlengiwe f +Hlib m +Hlíf f +Hludowig m +Hlynur m +Hnub f +Hoa f +Hob m +Hodan f +Hode f +Hodei m +Hodel f +Hoder m +Hodia f +Hodiah f +Hodiyah f +Hoebaer m +Hoel m +Hohepa m +Hokolesqua m +Hōkūlani f +Holden m +Holger m +Hollie f +Hollis mf +Holly f +Hólmgeirr m +Homer m +Homeros m +Honey f +Hồng f +Hong mf +Honoka f +Honor fm +Honora f +Honorata f +Honoratus m +Honoré m +Honoria f +Honorina f +Honorine f +Honorinus m +Honorius m +Honour f +Honza m +Hooda f +Ho'otseoo'e f +Hopcyn m +Hope f +Hopkin m +Horace m +Horácio m +Horacio m +Horatia f +Horatio m +Horațiu m +Horatius m +Horea m +Horia m +Hormazd m +Hormisdas m +Hormizd m +Hormoz m +Horos m +Horsa m +Horst m +Hortense f +Hortensia f +Hortensius m +Horus m +Horymír m +Hosanna f +Hosea m +Hosee m +Hoshea m +Hoshi f +Hoshiko f +Hosni mf +Hossam m +Hossein m +Hotaru f +Hǫðr m +Houa f +Houda f +Hourig f +Houssam m +Houston m +Hovhannes m +Hovik m +Hovo m +Hovsep m +Howard m +Howell m +Howie m +Hoyt m +Hozan mf +Hrafn m +Hrafnhildr f +Hrafnhildur f +Hreiðarr m +Hreiðunn f +Hrihoriy m +Hristijan m +Hristina f +Hristiyan m +Hristo m +Hristofor m +Hróaldr m +Hróarr m +Hrodebert m +Hroderich m +Hrodger m +Hrodland m +Hrodohaidis f +Hrodpreht m +Hrodulf m +Hrœrekr m +Hrolf m +Hrólfr m +Hroðgar m +Hrothgar m +Hróðgeirr m +Hróðólfr m +Hroðulf m +Hrothulf m +Hróðvaldr m +Hrotsuitha f +Hruodnand m +Hrvoje m +Hryhoriy m +Hua fm +Huan fm +Huang mf +Huangdi m +Huanglong m +Hubert m +Hubertus m +Hubrecht m +Huckleberry m +Huda f +Hudde m +Hudson m +Huệ f +Huey m +Hug m +Hugh m +Hughard m +Hughie m +Hugleikr m +Hugo m +Hugubert m +Hugues m +Huguette f +Huguo m +Huhana f +Hui fm +Huitzilopochtli m +Huld f +Hulda f +Huldah f +Hulderic m +Hülya f +Humaira f +Humayra f +Humbert m +Humberto m +Hümeyra f +Humphrey m +Humphry m +Hunahpu m +Hunberct m +Hunfrid m +Hùng m +Hunor m +Hunter mf +Hương f +Hường f +Huri m +Hurik f +Hurşit m +Husain m +Husam m +Husayn m +Husein m +Husên m +Hüseyin m +Hüseyn m +Husna f +Husni mf +Husniya f +Hüsniye f +Hüsnü m +Hussain m +Hussein m +Hut-Heru f +Hữu m +Huub m +Huw m +Huxley m +Huy m +Hvare Khshaeta m +Hwan mf +Hyacinth mf +Hyacintha f +Hyacinthe mf +Hyacinthus m +Hyakinthos m +Hyam m +Hyder m +Hye m +Hye-Jin f +Hyeon mf +Hyeon-Jeong fm +Hyeon-Ju fm +Hyeon-U m +Hyginos m +Hyginus m +Hylda f +Hyman m +Hymie m +Hynek m +Hypatia f +Hypatos m +Hyperion m +Hyram m +Hyrum m +Hyun mf +Hyun-Joo fm +Hyun-Jung fm +Hyun-Woo m +Hywel m +Iacchus m +Iachin m +Iacob m +Iacobus m +Iacomus m +Iacopo m +Iael f +Iafeth m +Iagan m +Iago m +Iah m +Iahel f +Iahmesu m +Iain m +Iair m +Iairos m +Iairus m +Iakob m +Iakobos m +Iakopa m +Iakovos m +Iakovu m +Ian m +Iancu m +Ianeira f +Iantha f +Ianthe f +Ianto m +Ianuarius m +Ianus m +Iapetos m +Iapetus m +Iapheth m +Iara f +Iared m +Iarfhlaith m +Iarlaith m +Iarlaithe m +Iason m +Ib m +Ibai m +Ibán m +Iban m +Ibb f +Ibbie f +Iben f +Ibolya f +Ibragim m +Ibraheem m +Îbrahîm m +İbrahim m +Ibrahim m +Ibrahima m +Ibro m +Ibtihaj f +Ibtisam f +Icarus m +Ichabod m +Ichiro m +Ichirō m +Ichirou m +Icíar f +Ida f +Idalia f +Idan m +'Iddo m +Iddo m +Íde f +Idella f +Idelle f +Idida f +Idir m +Ido m +Idoia f +Idonea f +Idony f +Idowu mf +Idoya f +Idril f +İdris m +Idris m +Idrissa m +Idun f +Idunn f +Idwal m +Iedida f +Iefan m +Iekika f +Iemanjá f +Iephthae m +Iepthae m +Ierameel m +Ieremahel m +Ieremias m +Ieronim m +Ieronimus m +Iesha f +Iesous m +Iestyn m +Iesus m +Ieuan m +Ieva f +Iezabel f +Iezekiel m +Ifa m +Ifan m +Ife fm +Ifeanyi m +Ifeanyichukwu m +Ifeoma f +Ifiok mf +Ifor m +Ifunanya f +Iga f +Ige fm +Igerna f +Iggy m +Igino m +Ignaas m +Ignác m +Ignac m +Ignace m +Ignacia f +Ignacij m +Ignacio m +Ignacja f +Ignacy m +Ignas m +Ignasi m +Ignat m +Ignatia f +Ignatios m +Ignatius m +Ignatiy m +Ignatz m +Ignàtziu m +Ignaz m +Ignazio m +Igon m +Igone f +Igor m +Igraine f +Ihab mf +Ihar m +Ihintza f +Ihor m +İhsan m +Ihsan mf +Iida f +Iikka m +Iina f +Iines f +Iiris f +Iiro m +Iisa f +Iisakki m +Iivari m +Iivo m +Ijeoma f +IJsbrand m +Ikaia m +Ikaika m +Ikaros m +İkbal m +Ike m +Ikechukwu m +Ikenna m +Iker m +İkra f +Ikraam fm +Ikram fm +Ila f +Ilai m +Ilan m +Ilana f +Ilanit f +Ilar m +Ilargi f +Ilari m +Ilaria f +Ilario m +Ilarion m +Ilariy m +Ilary f +İlayda f +Ilbert m +Ilda f +İldar m +Ildar m +Ildefonso m +Ildi f +Ildikó f +Ildó f +Ile m +Ilean f +Ileana f +Ileen f +Ilene f +Ilenia f +İlham m +Ilham mf +İlhami m +İlhan m +Ili f +Ilia m +Iliana f +Ilias m +Ilie m +Ilija m +Ilike f +Ilina f +Ilinca f +Ilinka f +Ilir m +Ilithyia f +Iliya m +Iliyana f +Ilja m +Ilka f +İlkay fm +İlker m +İlkin m +İlknur f +Illarion m +Illés m +Illiam m +Illtyd m +Illuminata f +Illya m +Ilma f +Ilmar m +Ilmari m +Ilmarinen m +Ilmārs m +Ilmatar f +Ilme f +Ilmi f +Ilona f +Ilonka f +Ilsa f +Ilse f +Il-Seong m +İlshat m +Ilshat m +Ilta f +Ilu m +Ilya m +İlyas m +Ilyas m +Ilyes m +Ima f +Imaan f +Imaculada f +Imad m +Imam m +Imamu m +Iman fm +Imani fm +Imanol m +Imbi f +Ime mf +Imeda m +Imelda f +Imen f +Imhotep m +Imke f +Imma f +Immacolata f +Immaculada f +Immaculata f +Immanuel m +Imogen f +Imogene f +Impi f +Imram m +Imran m +Imre m +Imrich m +Imriška f +Imtiaz m +Imtiyaz m +Ina f +Inaaya f +Inácio m +Iñaki m +In'am f +Inanna f +Ināra f +Inas f +Inaya f +Inayat m +Inbal f +Inbar f +Indah f +Inderjeet mf +Inderjit mf +Inderpal mf +India f +Indiana fm +Indie f +Indigo fm +Indika m +Indira f +Indra m +Indrajit m +Indrani f +Indrek m +Indriķis m +Indriði m +Indu f +Indumathi f +Indy mf +Inés f +Inès f +Inês f +Ines f +Inesa f +Inese f +Inessa f +Inez f +Ing m +Inga f +Inge fm +Ingebjørg f +Ingeborg f +Ingeburg f +Ingegärd f +Ingegerd f +Ingemar m +Inger f +Ingi m +Ingibjörg f +Ingibjǫrg f +Ingigerðr f +Ingimárr m +Ingmar m +Ingo m +Ingolf m +Ingólfr m +Ingomar m +Ingram m +Íngrid f +Ingrid f +Ingrīda f +Ingríðr f +Ingulf m +Ingūna f +Ingunn f +Ingvar m +Ingvild f +Ingvildr f +Inha f +Íñigo m +Inigo m +Iniobong mf +Inja f +Inka f +Inkar f +Inkeri f +Inma f +Inmaculada f +Inna f +Innes m +Innocent m +Innocentius m +Innocenzo m +Innokenti m +Innokentiy m +Innokenty m +Inocencio m +Inola f +Inta f +Intan f +Inti m +Intira f +Into m +Ints m +Inyene mf +Inzhu f +Io f +Ioab m +Ioachim m +Ioakeim m +Ioan m +Ioana f +Ioane m +Ioann m +Ioanna f +Ioannes m +Ioannicius m +Ioannikios m +Ioannis m +Ioannu m +Iob m +Iocasta f +Iodocus m +Ioel m +Iohanna f +Iohannes m +Iohel m +Iokaste f +Iokua m +Iola f +Iolana f +Iolanda f +Iolanta f +Iolanthe f +Iole f +Iolo m +Iolyn m +Íomhar m +Iomhar m +Ion m +Iona fm +Ionas m +Ionatán m +Ionathan m +Ione f +Ionel m +Ionela f +Ionuț m +Ioram m +Iordan m +Iordanus m +Iorwerth m +Iosaphat m +Ioseb m +Ioseph m +Iosephus m +Ioses m +Iosias m +Iosif m +Iosifu m +Iosue m +Iou m +Ioubal m +Ioudas m +Ioudith f +Iounia f +Iouri m +Iovianus m +Iovis m +Iovita mf +Ipati m +Ipatiy m +İpek f +Iphigeneia f +Iphigenia f +Ippolit m +Ippolito m +Iqaluk mf +Iqbal m +Iqra f +'Ira' m +Ira mf +Iracema f +İradə f +Irakli m +Iraklis m +Irakliy m +Irati f +Ireland f +İrem f +Irén f +Irēna f +Irena f +Irenaeus m +Irène f +Irene f +Irénée mf +Ireneus m +Ireneusz m +Irenka f +İrfan m +Irfan m +Iria f +Irida f +Irīna f +Irina f +Irine f +Irinei m +Iriney m +Irini f +Irinushka f +Íris f +Iris f +Irit f +Irja f +Irma f +Irmak f +Irmentrud f +Irmgard f +Irmhild f +Irmina f +Irmingard f +Irmtraud f +Irmtrud f +Irnerius m +Iro f +Iroda f +Irune f +Irvin m +Irvine m +Irving m +Irwin m +Iryna f +İsa m +Isa mf +Isaac m +Isaak m +Isaaku m +Isabeau f +Isabèl f +Isabel f +Isabela f +Isabell f +Ísabella f +Isabella f +Isabelle f +Isac m +Isacco m +Isador m +Isadora f +Isadore m +Isagani m +Isaia m +Isaiah m +Isaías m +Isaias m +Isaija m +Ísak m +Isak m +'Isam m +Isamu m +Isapo-Muxika m +Isaque m +Isaura f +Isaure f +Isaurus m +Isay m +Isbel f +Isbrand m +Iscah f +Iseabail f +Isebel f +Isebella f +Iser m +Iset f +Iseul fm +Iseult f +Iseut f +Isha fm +Ishani f +Ishbel f +Ishild f +Ishita f +Ishkur m +Ishmael m +Ishmerai m +Ishtar f +Ishvi m +Isi mf +Isiah m +Isibéal f +Iside f +Isidor m +Isidora f +Isidore m +Isidoro m +Isidoros m +Isidorus m +Isidro m +Isingoma m +Isis f +Iskandar m +İskender m +Iskra f +Isla f +İslam m +Islam m +Islambek m +Islay fm +Islom m +Islwyn m +Ismaeel m +Ismaël m +Ismael m +Ismaele m +Ismahel m +İsmail m +Isma'il m +Ismail m +'Ismat mf +İsmayıl m +Ismene f +İsmet m +Ismet m +Ismini f +Ismo m +Isobel f +Isocrates m +Isokrates m +Isolda f +Isolde f +Isotta f +Isra f +Israa f +Israel m +Israfil m +Israhel m +Issa m +Issac m +Issachar m +Issouf m +Issoufou m +Issur m +Issy mf +István m +Ita f +Itai mf +Itala f +Italia f +Italo m +Italus m +Itamar m +Íte f +Ithai m +Ithamar m +Ithel m +Ithiel m +Iðunn f +I'tidal f +I'timad fm +Itoro mf +Itri m +Itsasne f +Itsaso f +Itsuki m +Ittai m +'Ittay m +Itumeleng mf +Itxaro f +Itxaso f +Itzal m +Itzamna m +Itzcoatl m +Itzel f +Itzhak m +Itziar f +Iucunda f +Iudas m +Iudgual m +Iudhail m +Iudicael m +Iudith f +Iudithu f +Iudocus m +Iudris m +Iúile f +Iulia f +Iulian m +Iuliana f +Iulianus m +Iuliu m +Iulius m +Iunia f +Iunius m +Iuno f +Iuppiter m +Iuri m +Iusta f +Iustina f +Iustinianus m +Iustinus m +Iustus m +Iuturna f +Iuvenalis m +Iva f +Ivah f +Ivailo m +Iván m +Ivan m +Ivana f +Ivančica f +Ivane m +Ivanka f +Ivanna f +Ivano m +Ivans m +Ivar m +Ívarr m +Ivayla f +Ivaylo m +Iver m +Ives m +Ivet f +Iveta f +Ivett f +Ivette f +Ivica m +Ivka f +Ivo m +Ivona f +Ivone f +Ivonette f +Ivonne f +Ivor m +Ivory mf +Ivy f +Iwan m +Iwo m +Iwona f +Ixchel f +Iya f +Iyabo f +Iyov m +'Iyyov m +Iza f +Izaäk m +Izaak m +Izabel f +Izabela f +Izabella f +Izabelle f +Izak m +Izan m +Izanagi m +Izanami f +Izar fm +Izaro f +Izdihar f +Izebel f +Izem m +'Izevel f +Izidor m +Izidóra f +Izolda f +Izotz m +Izrail m +Izsák m +Iztok m +Izudin m +Izumi f +Izydor m +Izz ad-Din m +Izz al-Din m +İzzet m +Izz ud-Din m +Izzy mf +Jaagup m +Jaak m +Jaakkima m +Jaakko m +Jaakob m +Jaakoppi m +Jaala m +Jaan m +Jaana f +Jaap m +Jaasau m +Jabbar m +Jabez m +Jabin m +Jabir m +Jabr m +Jabril m +Jace m +Jacek m +Jacenty m +Jacey fm +Jachin m +Jáchym m +Jaci fm +Jacinda f +Jácint m +Jacinta f +Jacinth f +Jacintha f +Jacinthe f +Jacinto m +Jacira f +Jack m +Jackalyn f +Jacki f +Jackie mf +Jackin m +Jacklyn f +Jackson m +Jacky m +Jaclyn f +Jacó m +Jacob m +Jacoba f +Jacobina f +Jacobine f +Jacobo m +Jacobus m +Jacomina f +Jacopo m +Jacqueline f +Jacquelyn f +Jacques m +Jacquetta f +Jacquette f +Jacqui f +Jad m +Jada fm +Jade fm +Jaden mf +Jadon m +Jadran m +Jadranka f +Jadranko m +Jadvyga f +Jadwiga f +Jadyn fm +Jadzia f +Jae mf +Jael f +Jae-Seong m +Jafar m +Jafet m +Jaffar m +Jaffe mf +Jaffer m +Jaga f +Jagadish m +Jagadisha m +Jagannath m +Jagannatha m +Jagdish m +Jagienka f +Jagjit m +Jagna f +Jago m +Jagoda f +Jagusia f +Jahan m +Jahanara f +Jahangir m +Jahel f +Jahleel m +Jahzeel m +Jai m +Jaida f +Jaiden mf +Jaidev m +Jaime mf +Jaimie f +Jaír m +Jair m +Jairus m +Jaka m +Jakab m +Jake m +Jakes m +Jaki f +Jakki f +Jákob m +Jakob m +Jakov m +Jakša m +Jakub m +Jákup m +Jalə f +Jalal m +Jale f +Jaleh f +Jalen m +Jalil m +Jalila f +Jaliyah f +Jalmari m +Jalo m +Jam m +Jamaal m +Jamaar m +Jamal m +Jamal ad-Din m +Jamal al-Din m +Jamaluddin m +Jamar m +JaMarcus m +Jamari m +Jamarion m +Jameel m +Jameela f +James m +Jamesina f +Jameson m +Jamey mf +Jami fm +Jamie mf +Jamil m +Jamila f +Jamilah f +Jamileh f +Jamillah f +Jamin m +Jamison m +Jamshed m +Jamsheed m +Jamshid m +Jamyang mf +Ján m +Jan mf +Jana f +Janae f +Janaína f +Janaka m +Janan f +Jancsi m +Jane f +Janek m +Janeka f +Janel f +Janele f +Janella f +Janelle f +Janene f +Janessa f +Janet f +Janeth f +Janetta f +Janette f +Janey f +Janez m +Jani m +Janice f +Janička f +Janie f +Janika f +Janīna f +Janina f +Janine f +Jānis m +Janis f +Janiya f +Janiyah f +Janja f +Janka f +Jankin m +Janko m +Janna f +Jannah f +Jannat f +Jannatul Ferdous f +Janne mf +Janneke f +Jannette f +Jannick m +Jannicke f +Jannik m +Jannike f +Jannine f +János m +Jantine f +Jantje f +Januarius m +Janus m +Janusz m +Janvier m +Jaouad m +Japheth m +Japik m +Jaquan m +Jaqueline f +Jaquelyn f +Jarah m +Jared m +Jarek m +Jaren m +Jareth m +Jari m +Jarka f +Jarkko m +Jarl m +Jarlath m +Jarle m +Jarmil m +Jarmila f +Jarmo m +Jarod m +Jarogniew m +Jaromír m +Jaromir m +Jaromíra f +Jaron m +Jaropełk m +Jaroslav m +Jaroslava f +Jaroslavas m +Jarosław m +Jarosława f +Jarred m +Jarrett m +Jarrod m +Jaruška f +Jarvis m +Jaša m +Jase m +Jaska m +Jaslene f +Jaslyn f +Jasmijn f +Jasmin fm +Jasmína f +Jasmina f +Jasmine f +Jasminka f +Jasmyn f +Jasna f +Jason m +Jasper m +Jasur m +Jasvinder mf +Jaswinder mf +Jatau m +Jathbiyya f +Jathibiyya f +Jaume m +Jaumet m +Javad m +Javaid m +Javan m +Javed m +Javi m +Javier m +Javiera f +Javion m +Javohir m +Javon m +Javonte m +Javor m +Jawad m +Jawahir f +Jawdat mf +Jax m +Jaxon m +Jaxson m +Jaxton m +Jaxtyn m +Jaxx m +Jaxxon m +Jay m +Jaya fm +Jayadev m +Jayadeva m +Jayant m +Jayanta m +Jayanthi f +Jayanti f +Jayashri f +Jayce m +Jaycee fm +Jayceon m +Jaycob m +Jayda f +Jayde f +Jayden mf +Jaydon m +Jaye fm +Jayendra m +Jayesh m +Jayla f +Jaylaani m +Jaylah f +Jaylee f +Jaylen mf +Jaylene f +Jaylin mf +Jaylinn f +Jaylon m +Jaylyn f +Jaylynn f +Jayma f +Jayme fm +Jaymes m +Jayna f +Jayne f +Jaynie f +Jayson m +Jaywant m +Jāzeps m +Jazlyn f +Jázmin f +Jazmín f +Jazmin f +Jazmine f +Jazmyn f +Jean mf +Jeana f +Jean-Baptiste m +Jean-Charles m +Jean-Christophe m +Jean-Claude m +Jeane f +Jeanette f +Jean-François m +Jeanie f +Jeanine f +Jean-Jacques m +Jean-Louis m +Jean-Luc m +Jean-Marc m +Jean-Marie m +Jean-Michel m +Jeanna f +Jeanne f +Jeannette f +Jeannie f +Jeannine f +Jeannot m +Jean-Paul m +Jean-Philippe m +Jean-Pierre m +Jeb m +Jeconiah m +Jed m +Jedidah f +Jedidiah m +Jędrzej m +Jeetendra m +Jef m +Jeff m +Jefferson m +Jeffery m +Jeffrey m +Jeffry m +Jefimija f +Jehan m +Jehanne f +Jehiel m +Jehoash m +Jehohanan m +Jehoiachin m +Jehoiakim m +Jehona f +Jehonathan m +Jehoram m +Jehoshaphat m +Jehosheba f +Jehovah m +Jehu m +Jehudi m +Jēkabs m +Jekaterina f +Jela f +Jelani m +Jeļena f +Jelena f +Jelica f +Jelisaveta f +Jelka f +Jelle m +Jeltje f +Jeltsje f +Jem m +Jemima f +Jemma f +Jemmy m +Jen f +Jena f +Jenae f +Jenaro m +Jenci m +Jenelle f +Jenessa f +Jengo m +Jeni f +Jenifer f +Jenn f +Jenna f +Jenni f +Jennica f +Jennie f +Jennifer f +Jennigje f +Jenny f +Jenný f +Jenő m +Jens m +Jensen m +Jenson m +Jeong fm +Jeong-Ho m +Jeong-Hui fm +Jeong-Hun m +Jeong-Suk f +Jep m +Jephtha m +Jephthah m +Jeppe m +Jepson m +Jeptha m +Jerahmeel m +Jerald m +Jere m +Jeremi m +Jeremiah m +Jeremías m +Jeremias m +Jeremiasz m +Jérémie m +Jeremiel m +Jérémy m +Jeremy m +Jeri f +Jeriah m +Jericho m +Jerk m +Jerker m +Jerko m +Jermaine m +Jernej m +Jerneja f +Jeroboam m +Jeroen m +Jerold m +Jérôme m +Jerome m +Jeronim m +Jerónimo m +Jerônimo m +Jeroným m +Jerrard m +Jerred m +Jerri f +Jerrie f +Jerrik m +Jerrod m +Jerrold m +Jerry mf +Jerusha f +Jeruti f +Jervis m +Jerzy m +Jescha f +Jesenia f +Jésica f +Jesper m +Jess mf +Jessa f +Jessalyn f +Jessamine f +Jessamyn f +Jesse m +Jessé m +Jessenia f +Jessi f +Jéssica f +Jessica f +Jessie fm +Jessika f +Jessy mf +Jessye f +Jesús m +Jesus m +Jesusa f +Jet f +Jethro m +Jett m +Jetta f +Jette f +Jeunesse f +Jevgēņija f +Jevgeņija f +Jevgēņijs m +Jevgeņijs m +Jevrem m +Jewel fm +Jewell fm +Jez m +Jézabel f +Jezabel f +Jezebel f +Jezza m +Ji mf +Jia mf +Jiahao m +Jian mf +Jiang mf +Jianhong m +Jibril m +Jie mf +Ji-Eun f +Ji-Ho m +Ji-Hoon m +Ji-Hu mf +Ji-Hun m +Ji-Hye f +Jilani m +Jill f +Jillian f +Jillie f +Jilly f +Jim m +Jimena f +Jimeno m +Jimi m +Ji-Min fm +Jimmie mf +Jimmu m +Jimmy m +Jin mf +Jinan mf +Jindra fm +Jindřich m +Jindřiška f +Jing mf +Jingyi mf +Jinny f +Jip mf +Jirair m +Jiří m +Jiřina f +Jiro m +Jirō m +Jirou m +Ji-Soo fm +Ji-Su fm +Jitender m +Jitendra m +Jitka f +Ji-U fm +Ji-Won fm +Ji-Woo fm +Ji-Yeong fm +Ji-Young fm +Ji-Yu f +Jo fm +Joab m +Joachim m +Joah m +Joakim m +Joan fm +Joana f +Joandra f +Joanie f +Joaninha f +Joann f +Joanna f +Jo-Anne f +Joanne f +Jóannes m +Joannes m +Joannicius m +Joan Pau m +João m +João Paulo m +Joãozinho m +Joaquim m +Joaquima f +Joaquín m +Joaquin m +Joaquina f +Joash m +Joasia f +Job m +JoBeth f +Joby m +Jocasta f +Jocelin mf +Joceline f +Jocelyn fm +Jocelyne f +Jochebed f +Jochem m +Jochen m +Jochim m +Joĉjo m +Jock m +Jockel m +Jockie m +Jocky m +Jocosa f +Jodene f +Jodi f +Jodie f +Jodoc m +Jodocus m +Jody fm +Joe m +Joël m +Joel m +Joele m +Joella f +Joëlle f +Joelle f +Joep m +Joeri m +Joetta f +Joey mf +Joffrey m +Jofre m +Jógvan m +Johan m +Johana f +Johanan m +Jóhann m +Johann m +Jóhanna f +Johanna f +Johann Baptist m +Johanne f +Johanneke f +Jóhannes m +Johannes m +Johano m +John m +Johna f +Johnathan m +Johnathon m +Johnie mf +Johnna f +Johnnie mf +Johnny m +John Paul m +Jóhonaa'éí m +Joi f +Joisse f +Jojo mf +Jokin m +Joktan m +Jokūbas m +Jökull m +Jokum m +Jola f +Jolán f +Jolana f +Jolanda f +Jolánka f +Jolanta f +Jolanthe f +Joleen f +Jolene f +Jolie f +Joline f +Jolyon m +Jón m +Jon m +Jóna f +Jonah m +Jónás m +Jónas m +Jonás m +Jonáš m +Jonas m +Jónatan m +Jonatán m +Jonatan m +Jónatas m +Jônatas m +Jonathan m +Jonathon m +Jone fm +Jonelle f +Jonette f +Jong fm +Jong-Su m +Joni fm +Jonie f +Jonna f +Jonny m +Jonquil f +Jöns m +Jonty m +Jooa m +Jools mf +Joon m +Joona m +Joonas m +Joon-Ho m +Joop m +Joord m +Joos m +Joosep m +Jooseppi m +Joost m +Joo-Won mf +Jorah m +Joram m +Jöran m +Jordà m +Jordaan m +Jordán m +Jordan mf +Jordana f +Jordane mf +Jordanes m +Jordão m +Jordi m +Jördis f +Jordon m +Jordyn f +Jor-El m +Jörg m +Jørg m +Jorge m +Jörgen m +Jørgen m +Jorginho m +Jorie f +Joris m +Jorja f +Jorma m +Jörmungandr m +Jǫrmungandr m +Jørn m +Jorrit m +Jorun f +Jorunn f +Jórunnr f +Jory m +Jos m +Josaphat m +Joscelin m +Josceline f +Joschka m +Jose m +José mf +José Ángel m +José Antonio m +Joseba m +Josée f +Jósef m +Josef m +Josefa f +Josefien f +Josefiina f +Josefin f +Josefína f +Josefina f +Josefine f +José Luis m +Joselyn f +José Manuel m +José Mari m +José María m +José Maria m +Josèp m +Josep m +Josepe m +Joseph m +Josepha f +Josèphe f +Josephina f +Joséphine f +Josephine f +Josephus m +Josep Maria m +Joses m +Josette f +Josey m +Josh m +Joshua m +Josiah m +Josiane f +Josias m +Josie f +Josif m +Josip m +Josipa f +Jóska m +Joško m +Joslyn f +Joso m +Joss fm +Josse m +Josselin m +Josseline f +Josslyn f +Jošt m +Jost m +Jostein m +Jósteinn m +Josu m +Josué m +Josune f +Jotham m +Jothi fm +Joukahainen m +Jouko m +Jouni m +Jourdain m +Journee f +Journey f +Jovan m +Jovana f +Jovanka f +Jove m +Jovian m +Jovica m +Jovita f +Jovka f +Jowan m +Jowita f +Joy f +Joyce fm +Joye f +Jozafat m +Jože m +Józef m +Jožef m +Jozef m +Józefa f +Jožefa f +Jozefa f +Jozefien f +Józefina f +Jozefína f +Jozefina f +Jozefo m +Jožica f +Jozo m +József m +Józsi m +Józsua m +Jozua m +Ju fm +Juan mf +Juana f +Juan Bautista m +Juan Carlos m +Juancho m +Juanfran m +Juan Francisco m +Juanita f +Juanito m +Juan José m +Juanma m +Juan Manuel m +Juanne m +Juan Pablo m +Juantxo m +Jubal m +Juda m +Judah m +Judas m +Judd m +Judda f +Jude mf +Judi f +Judicaël m +Judie f +Judikael m +Judit f +Judita f +Judite f +Judith f +Judoc m +Judocus m +Judy f +Judyta f +Juha m +Juhán m +Juhan m +Juhana m +Juhani m +Juho m +Jukka m +Julek m +Julen m +Jules mf +Juli f +Júlia f +Julia f +Julià m +Julián m +Julian m +Juliāna f +Juliana f +Juliane f +Julianna f +Julianne f +Juliano m +Julie f +Julien m +Julienne f +Juliet f +Julieta f +Juliette f +Julij m +Jūlija f +Julija f +Julijana f +Julinha f +Júlio m +Julio m +Júlio César m +Julio César m +Juliska f +Julissa f +Julita f +Julitta f +Július m +Julius m +Juliusz m +Juliya f +July fm +Julyan m +Juma m +Jumana f +Jumanah f +Jumanne m +Jummai f +Jun mf +Junaid m +Junayd m +June f +Jung fm +Jung-Hee fm +Jung-Hoon m +Jung-Sook f +Jun-Ho m +Juni f +Junia f +Jun'ichi m +Junior m +Juniper f +Junípero m +Junius m +Junko f +Juno f +Junon f +Junpei m +Jun-Seo m +Juozapas m +Juozas m +Júpiter m +Jupiter m +Jupp m +Juraj m +Jūratė f +Jure m +Jurek m +Jürgen m +Jurgen m +Jurģis m +Jurgis m +Jurgita f +Jüri m +Jurian m +Jurica m +Jurij m +Juris m +Jūrō m +Juro m +Jurou m +Jurre m +Jurriaan m +Jurryt m +Jussi m +Justa f +Justas m +Juste m +Justice mf +Justiina f +Justin m +Justína f +Justina f +Justinas m +Justīne f +Justine f +Justinian m +Justino m +Justo m +Justus m +Justy mf +Justyn m +Justýna f +Justyna f +Jusuf m +Jusztina f +Juta f +Jutta f +Juturna f +Juul fm +Juurou m +Juuso m +Juvela f +Juvenal m +Juventas f +Ju-Won mf +Jyothi fm +Jyoti fm +Jyotsana f +Jyotsna f +Jyrgal mf +Jyri m +Jyrki m +Jytte f +Kaan m +Kaapo m +Kaapro m +Kaarel m +Kaarina f +Kaarle m +Kaarlo m +Kabelo m +Kacey f +Kacie f +Kacper m +Kade m +Kadek mf +Kaden m +Kader mf +Kadi f +Kadiatou f +Kadir m +Kadmos m +Kadri fm +Kadriye f +Kae f +Kaede fm +Kaeden m +Kaelea f +Kaelee f +Kaelyn f +Kaety f +Kağan m +Kagiso mf +Kahina f +Kahurangi fm +Kai mf +Kaia f +Kaiden m +Kaidi f +Kaija f +Kaila f +Kailani f +Kailash m +Kailee f +Kailey f +Kailyn f +Kaimana mf +Kain m +Kainan m +Kaipo mf +Kairo m +Kais m +Kaisa f +Kaiser m +Kaison m +Kaiti f +Kaitlin f +Kaitlyn f +Kaitlynn f +Kaito m +Kaj m +Kája f +Kaja f +Kajal fm +Kajetán m +Kajetan m +Kajsa f +Kajus m +Kakalina f +Kala f +Kalani mf +Kale m +Kalea f +Kaleb m +Kalei mf +Kaleigh f +Kal-El m +Kalena f +Kaleo m +Kalev m +Kaleva m +Kalevi m +Kaley f +Kálfr m +Kali fm +Kalidas m +Kalidasa m +Kalie f +Kalin m +Kalina f +Kalisha f +Kaliyah f +Kalju m +Kalla f +Kalle m +Kallias m +Kallie f +Kallikrates m +Kallinikos m +Kalliope f +Kallippos m +Kallirrhoe f +Kallirroi f +Kallisto f +Kallistos m +Kallistrate f +Kálmán m +Kaloyan m +Kalpana f +Kaltrina f +Kalyan m +Kalyana m +Kalyani f +Kalyn f +Kalyna f +Kalypso f +Kalysta f +Kam mf +Kama m +Kamakshi f +Kəmal m +Kamal m +Kəmalə f +Kamala fm +Kamal ad-Din m +Kamalani fm +Kamal ud-Din m +Kamari mf +Kamaria f +Kamatchi f +Kamau m +Kambiz m +Kambujiya m +Kamden m +Kamen m +Kameron mf +Kamil m +Kamila f +Kamilė f +Kamilla f +Kamini f +Kamiyah f +Kamoliddin m +Kamon mf +Kamryn fm +Kanako f +Kanani f +Kanchana f +Kanda f +Kandace f +Kandaĵa f +Kandake f +Kandi f +Kāne m +Kane m +Kaneonuskatew m +Kaniehtiio f +Kanna f +Kannan m +Kanon f +Kanstantsin m +Kanta fm +Kanti fm +Kantuta f +Kanya f +Kanye m +Kaolin m +Kaori f +Kaoru fm +Kapel m +Kapena m +Kapil m +Kapila m +Kapka f +Kapono m +Kapua fm +Kára f +Kara fm +Karabo mf +Karam mf +Karan m +Karaugh f +Karcsi m +Kåre m +Kareem m +Karekin m +Karel m +Karen fm +Karena f +Karenza f +Karesinda f +Kári m +Kari fm +Karim m +Karima f +Karin f +Karīna f +Karina f +Karine f +Karishma f +Karissa f +Karita f +Kariuki m +Karl m +Karla f +Karlee f +Karlene f +Karl-Heinz m +Karlheinz m +Karlijn f +Kārlis m +Karlmann m +Karlo m +Karly f +Karma mf +Karme f +Karmela f +Karmen f +Karna m +Karol m +Karola f +Karoliina f +Karolína f +Karolina f +Karoline f +Karolis m +Karolos m +Károly m +Karolyn f +Karp m +Karpos m +Karrie f +Karson m +Karsten m +Karsyn fm +Kärt f +Karter m +Karthik m +Karthika f +Karthikeyan m +Kartik m +Kartikeya m +Karyn f +Karyna f +Kasandra f +Kasen m +Kasey mf +Kash m +Kashi f +Kashton m +Kasi f +Kasia f +Kasih f +Kasım m +Kasimir m +Kasimira f +Kason m +Kašpar m +Kaspar m +Kasparas m +Kaspars m +Kasper m +Kassandra f +Kassandros m +Kassia f +Kassidy f +Kassie f +Kassiopeia f +Kassy f +Kastor m +Kasumi f +Kasun m +Kat f +Kata f +Katalin f +Katalinka f +Katar f +Katariina f +Katarin f +Katarína f +Katarina f +Katarine f +Katarzyna f +Katashi m +Katayoun f +Katayun f +Kate f +Katee f +Katelijn f +Katelijne f +Katelin f +Katell f +Katelyn f +Katelynn f +Katenka f +Kateri f +Kateřina f +Katerina f +Kateryna f +Katey f +Katharina f +Katharine f +Katharyn f +Käthe f +Katherina f +Katherine f +Katheryn f +Katheryne f +Kathi f +Kathie f +Kathleen f +Kathlyn f +Kathrin f +Kathrine f +Kathryn f +Kathy f +Kati f +Katia f +Katica f +Katida f +Katie f +Katina f +Katinka f +Katiuscia f +Katja f +Katka f +Katla f +Katlego mf +Katleho mf +Katlyn f +Katniss f +Kato m +Kató f +Katrė f +Katri f +Katrien f +Katriina f +Katrijn f +Katrín f +Katrin f +Katrīna f +Katrina f +Katrine f +Katriona f +Katsiaryna f +Katsu m +Katsuhito m +Katsuo m +Katsuro m +Katsurō m +Katsurou m +Kattalin f +Katy f +Katya f +Katyusha f +Kauʻi fm +Kauko m +Kaulana mf +Kaur f +Kauri m +Kausalya f +Kaveh m +Kaveri f +Kavi m +Kavita f +Kavitha f +Kawacatoose m +Kawehi fm +K'awiil m +K'awil m +Kawisenhawe f +Kay fm +Kaya mf +Kaycee f +Kayden mf +Kaydence f +Kaye f +Kayin mf +Kayla f +Kaylani f +Kayleah f +Kaylee f +Kayleen f +Kayleigh f +Kayley f +Kaylie f +Kaylin f +Kayly f +Kaylyn f +Kaylynn f +Kayode m +Kayson m +Kazia f +Kazik m +Kazimiera f +Kazimieras m +Kazimierz m +Kazimír m +Kazimir m +Kázmér m +Kazue f +Kazuki m +Kazuko f +Kazuo m +Kazuya m +Kazuyuki m +Keahi fm +Keala fm +Kealoha fm +Kean m +Keane m +Keanna f +Keano m +Keanu mf +Keara f +Keaton m +Keavy f +Keefe m +Keegan m +Keelan m +Keeleigh f +Keeley f +Keelin f +Keely f +Keenan m +Kees m +Keeva f +Kefilwe mf +Kegan m +Keghart m +Kehinde mf +Kehlani f +Kei mf +Keighley f +Keijo m +Keiko f +Keila f +Keinan m +Keir m +Keira f +Keiran m +Keisha f +Keith m +Keitha f +Kekepania f +Kekoa m +Kelan m +Kelcey mf +Keld m +Kelda f +Kelebek f +Kelebogile fm +Kelechi mf +Kelemen m +Kelia f +Kelila f +Kellan m +Kelleigh f +Kellen m +Kelley fm +Kelli f +Kellie f +Kelly mf +Kelsey fm +Kelsi f +Kelsie f +Kelvin m +Kemal m +Kemalettin m +Kemen m +Kemp m +Kemuel m +Ken m +Kenan m +Kenaniah m +Kenanyahu m +Kendal mf +Kendall mf +Kende m +Kendra f +Kendrick m +Kenelm m +Ken'ichi m +Kenina f +Kenith m +Kenji m +Kenna f +Kennard m +Kennedi f +Kennedy fm +Kennet m +Kenneth m +Kennith m +Kenny m +Kenojuak fm +Kenrick m +Kenshin m +Kent m +Kenta m +Kentarō m +Kentigern m +Kenton m +Kenya f +Kenyon m +Kenzie mf +Kenzo m +Kenzō m +Kenzou m +Keone mf +Keoni m +Kepa m +Kephalos m +Kephas m +Kepheus m +Kerberos m +Kerem m +Keren f +Kerena f +Keren-Happuch f +Keren Happukh f +Kerensa f +Kerenza f +Keri f +Kerîm m +Kerim m +Kerime f +Kerman m +Kermit m +Kerneels m +Kerr m +Kerri f +Kerrie f +Kerry mf +Kersti f +Kerstin f +Kerttu f +Kertu f +Kesha m +Keshaun m +Keshawn m +Keshet mf +Keshia f +Kęstas m +Kester m +Kestrel f +Kęstutis m +Ketevan f +Keti f +Ketil m +Ketill m +Ketilriðr f +Keto f +Kettil m +Keturah f +Ketut mf +Ketzi'ah f +Kev m +Kevan m +Kévin m +Kevin m +Kevork m +Kevyn mf +Kewin m +Keysha f +Kezia f +Keziah f +Kfir m +Kgosi m +Khachatur m +Khadiga f +Khadija f +Khadijah f +Khadijeh f +Khafra m +Khaing fm +Khajag m +Khaled m +Khaleel m +Khaleesi f +Khalid m +Khalida f +Khalifa m +Khalil m +Khalilah f +Khaliq m +Kham mf +Khamis m +Khamphet mf +Khan m +Khánh mf +Khanpasha m +Khariton m +Khasan m +Khatijah f +Khatuna f +Khava f +Khayrat mf +Khayri m +Khayriyya f +Khayyam m +Khazhak m +Khine fm +Khloe f +Khnum m +Khnum-Khufu m +Khodadad m +Khordad f +Khorshid mf +Khristofor m +Khrystyna f +Khshayarsha m +Khubilai m +Khufu m +Khulan f +Khumbo mf +Khurshid mf +Khushi f +Khwaja m +Ki f +Kia f +Kian m +Kiana f +Kianna f +Kianoush m +Kiara f +Kiaran m +Kiarra f +Kibwe m +Kichiro m +Kichirō m +Kichirou m +Kidist f +Kidlat m +Kiefer m +Kielo f +Kiera f +Kieran m +Kieron m +Kierra f +Kiersten f +Kiira f +Kike m +Kiki f +Kiko m +Kiku f +Kiley f +Kilian m +Kilie f +Kilikina f +Killa f +Killian m +Kim fm +Kimball m +Kimber f +Kimberlee f +Kimberleigh f +Kimberley f +Kimberly f +Kimberlyn f +Kimbra f +Kimi m +Kimiko f +Kimimela f +Kimmie f +Kimmo m +Kimmy f +Kimo m +Kinborough f +Kincső f +Kine f +Kineret f +King m +Kinga f +Kinge f +Kingsley m +Kingston m +K'inich m +Kinich m +Kinley f +Kinneret f +Kinsey f +Kinslee f +Kinsley f +Kip m +Kipling m +Kir m +Kíra f +Kira f +Kirabo mf +Kiran fm +Kiraz f +Kirby mf +Kire m +Kiri f +Kiril m +Kirill m +Kirils m +Kirk m +Kirke f +Kiro m +Kirsi f +Kirsikka f +Kirsteen f +Kirsten f +Kirsti f +Kirstie f +Kirstin f +Kirstine f +Kirsty f +Kirtida f +Kisecawchuck m +Kisembo mf +Kisha f +Kishan m +Kishor m +Kishore m +Kishori f +Kısmet f +Kistiñe f +Kit mf +Kito m +Kitti f +Kitty f +Kıvanç m +Kiyoko f +Kiyoshi m +Kizzie f +Kizzy f +Kjeld m +Kjell m +Kjellfrid f +Kjersti f +Kjerstin f +Kjetil m +Klaas m +Klaes m +Klah m +Klahan m +Klaos m +Klára f +Klāra f +Klara f +Klas m +Klasina f +Klaudia f +Klaudie f +Klaudija f +Klaudijs m +Klaudio m +Klaudiusz m +Klaus m +Klaus-Peter m +Klava f +Klavdia f +Klavdija f +Klavdiya f +Klāvs m +Klazina f +Kleio f +Kleisthenes m +Kleitos m +Klemen m +Klemens m +Klement m +Klementina f +Klementyna f +Kleon m +Kleopas m +Kleopatra f +Kleopatros m +Klim m +Kliment m +Klimentina f +Klio f +Klopas m +Klotho f +Klotild f +Klym m +Klyment m +Klytaimnestra f +Klytië f +Knox m +Knud m +Knut m +Knute m +Knútr m +Koa m +Koba m +Kobe m +Kobina m +Kobus m +Koby m +Kodey m +Kodjo m +Kody m +Koen m +Koenraad m +Koert m +Koffi m +Kofi m +Kohaku fm +Kohar f +Koharu f +Kohinoor f +Koios m +Koit m +Kōji m +Koji m +Kojo m +Kōki m +Kokoro f +Kokou m +Kolab f +Kolby m +Koldo m +Koldobika m +Kole m +Kolleen f +Kolman m +Koloman m +Kolos m +Kolton m +Kolya m +Komang mf +Komi m +Kōnane mf +Kondrat m +Kondwani m +Konjit f +Konnor m +Konrád m +Konrad m +Konsta m +Konstadina f +Konstadinos m +Konstancja f +Konstantin m +Konstantina f +Konstantinas m +Konstantine m +Konstantinos m +Konstantīns m +Konstanty m +Konstantyn m +Konstanze f +Könül f +Koos m +Koppány m +Koppel m +Kora f +Koralia f +Koraljka f +Koralo m +Koray m +Korbin m +Korbinian m +Körbl m +Kord m +Kore f +Korë f +Koresh m +Korey m +Kóri m +Kori f +Korina f +Korinna f +Kornél m +Kornel m +Korneli m +Kornélia f +Kornelia f +Kornélie f +Kornelija f +Korneliya f +Koronis f +Korrine f +Kortney f +Kory m +Kosmas m +Kossi m +Kosta m +Kostadin m +Kostakis m +Kostandin m +Kostas m +Kostis m +Kostya m +Kostyantyn m +Kōsuke m +Kosuke m +Kōta m +Kotone f +Kotryna f +Kou m +Kouji m +Kouki m +Kourosh m +Kourtney f +Kousuke m +Kouta m +Krasimir m +Krasimira f +Krastio m +Krastyo m +Krastyu m +Kratos m +Kreindel f +Kreine f +Kreios m +Kreka f +Krešimir m +Kresimir m +Krešimira f +Kreskes m +Krešo m +Kresten m +Kreszentia f +Kreszenz f +Kriemhild f +Kriemhilde f +Krikor m +Krimhilde f +Kris mf +Krishna m +Krišjānis m +Krisna m +Krišs m +Krista f +Kristal f +Kristapor m +Kristaps m +Kristaq m +Kristeen f +Kristel f +Kristen mf +Krister m +Kristi f +Kristia f +Kristián m +Kristian m +Kristiāna f +Kristiane f +Kristiāns m +Kristie f +Kristiina f +Kristijan m +Kristijonas m +Kristín f +Kristin f +Kristína f +Kristīna f +Kristina f +Kristīne f +Kristine f +Kristiyan m +Kristján m +Kristjan m +Kristjana f +Kristo m +Krištof m +Kristóf m +Kristófer m +Kristofer m +Kristoffer m +Kristofor m +Kristopher m +Kristupas m +Kristy f +Kristýna f +Krisztián m +Krisztina f +Krisztofer m +Kronos m +Krste m +Krsto m +Kruno m +Krunoslav m +Krysia f +Kryspin m +Krystal f +Krystelle f +Krysten f +Krystian m +Krystiana f +Krystina f +Krystine f +Krystle f +Kryštof m +Krystyn m +Krystyna f +Krzesimir m +Krzyś m +Krzysiek m +Krzysztof m +Krzysztofa f +Ksawery m +Ksenia f +Ksenija f +Kseniya f +Kshathra Vairya m +Kshitij m +Kshitija f +Ksyusha f +Kuba m +Kubilay m +Kublai m +Kübra f +Kubra f +Kudret m +Kukka f +K'uk'ulkan m +Kulap fm +Kuldeep m +Külli f +Küllike f +Külliki f +Kumar m +Kumara m +Kumaran m +Kumari f +Kumbukani mf +Kumiko f +Kun fm +Kunal m +Kunala m +Kunegunda f +Kunibert m +Kunigunde f +Kuno m +Kunthea f +Kunthear f +Kunti f +Kunto f +Kunzang mf +Kuro m +Kurō m +Kurosh m +Kurou m +Kurt m +Kurtis m +Kurush m +Kustaa m +Kusti m +Kusuma mf +Kuwat m +Kuzey m +Kuzma m +Kuzman m +Květa f +Kveta f +Květoslav m +Kvetoslav m +Květoslava f +Kvetoslava f +Květuše f +Kwabena m +Kwadwo m +Kwaku m +Kwame m +Kwasi m +Kweku m +Kwesi m +Kyauta mf +Kybele f +Kyla f +Kylan m +Kyle m +Kylee f +Kyleigh f +Kyler m +Kylian m +Kylie f +Kylli f +Kyllian m +Kyllikki f +Kylo m +Kym f +Kynaston m +Kynthia f +Kyo mf +Kyō mf +Kyōko f +Kyoko f +Kyösti m +Kyou mf +Kyouko f +Kyra f +Kyran m +Kyree m +Kyriake f +Kyriaki f +Kyriakos m +Kyrie mf +Kyrillos m +Kyrilu m +Kyro m +Kyros m +Kyrsten f +Kyrylo m +Kyson m +Kythereia f +Kyung mf +Kyung-Hee f +Kyung-Ja f +Kyung-Sook f +Kyveli f +Laarni f +Laban m +Labhrann m +Labhrás m +Laboni f +Lacey fm +Lachesis f +Lachie m +LaChina f +Lachlan m +Lachlann m +Lachtna m +Lachtnae m +Laci mf +Lacie f +Lacy fm +Lada f +Ladi f +Ladislao m +Ladislas m +Ladislau m +Ladislaus m +Ladislav m +Ladislava f +Lado m +LaDonna f +Lady f +Lael m +Laelia f +Laelius m +Lærke f +Laëtitia f +Lætitia f +Laetitia f +Lage m +Lagina f +Lagle f +Lahja f +Laia f +Láilá f +Laïla f +Laila f +Lailoken m +Laima f +Laimutė f +Laine f +Lainey f +Laios m +Laird m +Laius m +Lajos m +Lake mf +Lakeisha f +Lakeshia f +Lakisha f +Lakshman m +Lakshmana m +Lakshmi fm +Lal m +Lala f +Lalage f +Lalawethika m +Lale f +Laleh f +Lali f +Lalia f +Lalit m +Lalita f +Lalitha f +Lalka f +Lalla f +Lallie f +Lally f +Lalo m +Laloecen m +Lamar m +Lambaer m +Lambert m +Lamberto m +Lamech m +Lamia f +Lamija f +Lamis f +Lammert m +Lamont m +Lamprecht m +Lamya f +Lan fm +Lana f +Lance m +Lancelot m +Landebert m +Landen m +Lando m +Landon m +Landulf m +Landyn m +Lane m +Laney f +Lanford m +Langdon m +Lành mf +Lani f +Lanny m +Lanre m +Lanzo m +Laocoön m +Laoghaire m +Laoise f +Laokoon m +Lapo m +Laquan m +Lára f +Lara f +Laraine f +Lari m +Larisa f +Larissa f +Lark f +Larkin m +Larrie m +Larry m +Lars m +Larunda f +Lárus m +Laryn f +Larysa f +Lasha m +LaShawn fm +Lashay f +Lashonda f +Lāsma f +Lassana m +Lasse m +Lassi m +Lassie f +László m +Lata f +Latanya f +Latasha f +Lateefah f +Latheef m +Lətif m +Latif m +Latifa f +Latifah f +Latife f +Latisha f +Latona f +LaTonya f +LaToya f +Lau m +Lauchlan m +Laudine f +Lauge m +Lauma f +Launce m +Launo m +Laura f +Lauraine f +Laure f +Laureen f +Laurel f +Laurelle f +Lauren fm +Laurena f +Laurence mf +Laurencia f +Laurene f +Laurens m +Laurent m +Laurentia f +Laurentin m +Laurentina f +Laurentine f +Laurentino m +Laurentinus m +Laurențiu m +Laurentius m +Laurenz m +Lauressa f +Lauretta f +Laurette f +Lauri m +Laurie fm +Laurinda f +Laurine f +Laurissa f +Laurita f +Laurits m +Lauritz m +Lauro m +Laurus m +Lauryn f +Laurynas m +Lavanya f +Lavena f +Lavender f +Lavern mf +Laverna f +Laverne fm +Lavi m +Lavina f +Lavinia f +Lavone f +Lavonne f +Lavr m +Lavra f +Lavrenti m +Lavrentios m +Lavrentiy m +Lavrenty m +Law m +Lawahiz f +Lawal m +Lawali m +Lawan f +LaWanda f +Lawrence m +Lawrie m +Lawson m +Laxman m +Laxmi fm +Layla f +Layne m +Layton m +Laz m +Lázár m +Lazăr m +Lazar m +Lazare m +Lázaro m +Lazaros m +Lazarus m +Lazer m +Lazzaro m +Léa f +Lea f +Leachlainn m +Leah f +Léan f +Léana f +Leander m +Leandra f +Léandre m +Leandro m +Leandros m +Léane f +Leanid m +Leann f +Leanna f +Leanne f +Leanora f +Lear m +Leary m +Leatrice f +Lebanah m +Leberecht m +Lebogang mf +Lebohang mf +LeBron m +Lech m +Lechosław m +Lechosława f +Lecia f +Leda f +Lee mf +Leeann f +Leeba f +Leela f +Leelo f +Leena f +Leesa f +Leevi m +Lefteris m +Legend m +Legolas m +Lehi m +Lehua fm +Lei mf +Leia f +Leida f +Leif m +Leifr m +Leifur m +Leigh fm +Leighton fm +Leigong m +Leila f +Leilah f +Leilani fm +Leili f +Leimomi f +Leir m +Leire f +Leith mf +Leiv m +Lėja f +Lejla f +Lekan m +Lela f +Leland m +Lelia f +Lelio m +Lelisa m +Lelise f +Lelle m +Lemminkäinen m +Lemoine m +Lempi f +Lemuel m +Len m +Léna f +Lena f +Lénárd m +Lenard m +Lenart m +Lencho m +Lene f +Leni f +Lenka f +Lenn m +Lennard m +Lennart m +Lenni m +Lennie mf +Lennon mf +Lennox mf +Lenny m +Lenora f +Lenore f +Lenox m +Lenuța f +Lenz m +Léo m +Leo m +Leobwin m +Leocádia f +Leocadia f +Leocadio m +Leocadius m +Leofdæg m +Leofflæd f +Leofgyð f +Leofric m +Leofsige m +Leofstan m +Leofwine m +Leokadia f +Leola f +Leolin m +Leoluca m +Léon m +León m +Leon m +Leona f +Léonard m +Leonard m +Leonarda f +Leonardas m +Leonardo m +Leonas m +Léonce mf +Leoncio m +Léone f +Leone mf +Léonel m +Leonel m +Leonhard m +Leonia f +Leonid m +Leonida m +Leonidas m +Léonide mf +Leonīds m +Léonie f +Leonie f +Leonius m +Léonne f +Leonor f +Leonora f +Leonore f +Leonti m +Leontia f +Leontina f +Léontine f +Leontios m +Leontius m +Leontiy m +Leonty m +Leontýna f +Leontyne f +Leonzio m +Léopold m +Leopold m +Léopoldine f +Leopoldo m +Leoš m +Ler m +Lera f +Lerato fm +Leroi m +Leroy m +Les m +Lesedi f +Lesego mf +Lesia f +Lesław m +Lesława f +Lesleigh f +Lesley fm +Leslie fm +Lesly f +Lessie f +Lestari f +Lestat m +Lester m +Lesya f +Leszek m +Leta f +Letha f +Letícia f +Leticia f +Letîf m +Letitia f +Letizia f +Leto f +Lettice f +Lettie f +Letty f +Leucippus m +Leudagar m +Leudbald m +Leudoberct m +Leui m +Leukippos m +Leutgard f +Leuthar m +Leutwin m +Lev m +Levan m +Levana f +Levar m +Levent m +Levente m +Levi m +Levin m +Levon m +Lew m +Lewi m +Lewin m +Lewis m +Lex m +Lexa f +Lexi f +Lexia f +Lexie f +Lexine f +Lexus f +Lexy f +Leyla f +Leyre f +Leyton m +Lhamo fm +Li fm +Lía f +Lia f +Líadain f +Líadan f +Liam m +Lian mf +Liāna f +Liana f +Liane f +Lianne f +Lias m +Liat f +Liba f +Libbie f +Libby f +Liběna f +Liber m +Liberata f +Liberato m +Liberatore m +Liberatus m +Liberia f +Liberius m +Liberty f +Libi f +Libitina f +Libor m +Liboria f +Liborio m +Liborius m +Libuše f +Licarayen f +Lída f +Liddy f +Lídia f +Lidia f +Lidija f +Lidiya f +Lidka f +Lidmila f +Lidochka f +Lidziya f +Lieber m +Lieke f +Liêm m +Liên f +Lien f +Liepa f +Lies f +Liesa f +Liesbeth f +Liese f +Liesel f +Lieselotte f +Liesje f +Liesl f +Lieve f +Lieven m +Lievin m +Līga f +Ligaya f +Ligeia f +Lígia f +Ligia f +Ligita f +Lihi f +Lihuén mf +Liidia f +Liina f +Liis f +Liisa f +Liisi f +Liisu f +Lijsbeth f +Lila f +Lilac f +Lilach f +Lilah f +Lilavati f +Lile f +Lileas f +Lili f +Lilia f +Lílian f +Lilian fm +Liliána f +Liliana f +Liliane f +Lilianna f +Lilianne f +Lilias f +Lilibet f +Lilibeth f +Lilien f +Lilija f +Lilijana f +Lilit f +Lilita f +Lilith f +Liliya f +Lilja f +Liljana f +Lilla f +Lilli f +Lillia f +Lillian f +Lilliana f +Lillias f +Lillie f +Lilly f +Lilo f +Lilou f +Lily f +Lilya f +Lilyana f +Lim mf +Limbani m +Limbikani m +Lin mf +Līna f +Lina f +Linas m +Lincoln m +Linda f +Linde f +Linden m +Lindita f +Lindiwe f +Lindon m +Lindsay fm +Lindsey fm +Lindsie f +Lindy mf +Line f +Linet f +Linette f +Linford m +Ling fm +Linh fm +Linn f +Linnaea f +Linnéa f +Linnea f +Linnet f +Linnette f +Linnie f +Lino m +Linos m +Linsay f +Linsey f +Linton m +Linus m +Linwood m +Linza f +Linzi f +Lionel m +Lionesse f +Lionors f +Lior mf +Liora f +Liorit f +Liouba f +Lioubov f +Lir m +Liraz mf +Liron mf +Lis f +Lisa f +Lisandro m +Lisanne f +Lisbet f +Lisbeth f +Lise f +Liselot f +Liselott f +Liselotte f +Lisette f +Lisha f +Lishan fm +Liss f +Lissa f +Lissi f +Lita f +Lital f +Liubou f +Liubov f +Liucija f +Liudevit m +Liudmila f +Liudmyla f +Liudvika f +Liudvikas m +Liupold m +Liùsaidh f +Liv f +Līva f +Liva f +Live f +Lívia f +Livia f +Liviana f +Livianus m +Livie f +Livio m +Liviu m +Livius m +Livna f +Livnat f +Livvy f +Livy mf +Liwen mf +Liwia f +Liz f +Liza f +Lizaveta f +Lizbeth f +Lize f +Lizette f +Lizzie f +Lizzy f +Ljerka f +Ljilja f +Ljiljana f +Ljuba mf +Ljuban m +Ljube m +Ljuben m +Ljubena f +Ljubica f +Ljubinka f +Ljubiša m +Ljubo m +Ljubomir m +Ljudevit m +Ljudmil m +Ljudmila f +Ljupcho m +Ljupčo m +Lleu m +Lleucu f +Llew m +Llewela f +Llewella f +Llewellyn m +Llewelyn m +Llinos f +Llorenç m +Lloyd m +Lluc m +Llúcia f +Lludd m +Lluís m +Lluïsa f +Llŷr m +Llyr m +Llywellyn m +Llywelyn m +Lo f +Loan mf +Loane f +Loann m +Lochan m +Lochana f +Lochlainn m +Lochlann m +Lockie m +Lodewijk m +Lodovico m +Lóegaire m +Loek m +Loes f +Logan mf +Lohan m +Lohengrin m +Loherangrin m +Loïc m +Loida f +Loís m +Lois fm +Lojze m +Loke m +Loki m +Lola f +Lolicia f +Lolita f +Lomán m +Lommán m +Lon m +Lonán m +London fm +Londyn f +Lone f +Long m +Longin m +Longina f +Longinus m +Longwang m +Lonnie m +Lonny m +Lope m +Lopo m +Lor m +Lora f +Loraine f +Lorainne f +Loránd m +Lóránt m +Lorayne f +Lorcán m +Lorccán m +Lore f +Lorea f +Loredana f +Loreen f +Lorelai f +Lorelei f +Lorelle f +Loren mf +Lorena f +Lorencio m +Lorene f +Lorens m +Lorenz m +Lorenza f +Lorenzo m +Loreta f +Loreto fm +Loretta f +Lorette f +Lori f +Lorie f +Lorin mf +Lőrinc m +Lorinda f +Lorine f +Loris m +Lorita f +Lorn m +Lorna f +Lorne m +Lorraine f +Lorri f +Lorrie f +Lorrin mf +Lot m +Lotario m +Lothair m +Lothaire m +Lothar m +Lotta f +Lotte f +Lotti f +Lottie f +Lotus f +Lou fm +Louane f +Louella f +Louhi f +Loui m +Louie m +Louis m +Louisa f +Louise f +Louisette f +Louiza f +Louka m +Loukas m +Loukianos m +Loukios m +Louna f +Loup m +Lourdes f +Lourenço m +Lourens m +Lova f +Love mf +Lovel m +Lovell m +Lovemore m +Loviatar f +Loviisa f +Loviise f +Lovis f +Lovisa f +Lovise f +Lovorka f +Lovre m +Lovrenc m +Lovrenco m +Lovro m +Lowe m +Lowell m +Lowie m +Lowri f +Loyd m +Lú m +Luan m +Luana f +Luann f +Luanna f +Luanne f +Ľuba f +Luba f +Lubbert m +Luben m +Ľubica f +Lubna f +Lubomierz m +Ľubomír m +Lubomír m +Lubomir m +Ľubomíra f +Lubomíra f +Ľuboš m +Luboš m +Lubov f +Ļubova f +Luc m +Luca mf +Lucan m +Lucanus m +Lúcás m +Lucas m +Lucasta f +Luce f +Lucero fm +Lucetta f +Lucette f +Lucho m +Lúcia f +Lucía f +Lucia f +Lucian m +Luciana f +Luciano m +Lucianus m +Lucie f +Lucien m +Lucienne f +Lucifer m +Lūcija f +Lucija f +Lucijan m +Lucila f +Lucile f +Lucília f +Lucilia f +Lucilio m +Lucilius m +Lucilla f +Lucille f +Lucina f +Lucinda f +Lucinde f +Lucine f +Lucineh f +Lúcio m +Lucio m +Lucius m +Łucja f +Łucjan m +Lucjan m +Luĉjo m +Lucjusz m +Lucky mf +Lucrèce fm +Lucrécia f +Lucrecia f +Lucretia f +Lucretius m +Lucrezia f +Lucy f +Lucyna f +Ludde m +Luděk m +Ludger m +Ludis m +Ludivine f +Ludmiła f +Ludmila f +Ludmilla f +Ludo m +Ludolf m +Ludovic m +Ludovica f +Ludovico m +Ludovicus m +Ludoviko m +Ľudovít m +Ludvig m +Ludvigs m +Ludvík m +Ludvik m +Ludwig m +Ludwik m +Ludwika f +Luella f +Lug m +Lugaid m +Lugalbanda m +Lugh m +Lughaidh m +Lugos m +Lugubelinos m +Lugus m +Luigi m +Luigia f +Luigina f +Luigino m +Luigsech f +Luís m +Luis m +Luísa f +Luisa f +Luis Ángel m +Luise f +Luíseach f +Luisella f +Luisina f +Luisinho m +Luisita f +Luisito m +Luitgard f +Luitger m +Luitpold m +Luiz m +Luiza f +Lujayn f +Lujza f +Luka m +Lukács m +Lukáš m +Lukas m +Łukasz m +Luke m +Luken m +Luknė f +Luksa f +Lukyan m +Lula fm +Lule f +Lulit f +Luljeta f +Lulu f +Lumi f +Luminița f +Lumír m +Lumusi f +Luna f +Luned f +Lunete f +Lungile fm +Luningning f +Lupe fm +Lupita f +Lupus m +Lurdes f +Lusine f +Lusineh f +Lütfi m +Lutfi m +Lütfiye f +Lütfü m +Lutgard f +Lutgarde f +Lutgardis f +Luther m +Lúðvík m +Lutz m +Luuk m +Luukas m +Luule f +Luus f +Luvenia f +Luvinia f +Lux fm +Luz f +Luzia f +Luzviminda f +Lya f +Lyall m +Lyam m +Lyana f +Lyanna f +Lycurgus m +Lycus m +Lyda f +Lýdia f +Lydia f +Lýdie f +Lydie f +Lydos m +Lygia f +Lykke f +Lykos m +Lykourgos m +Lyla f +Lylah f +Lyle m +Lylou f +Lyn f +Lyna f +Lynda f +Lyndi f +Lyndon m +Lyndsay f +Lyndsea f +Lyndsey f +Lynet f +Lynette f +Lynn fm +Lynna f +Lynne f +Lynnette f +Lynsay f +Lynsey f +Lynton m +Lynwood m +Lyones f +Lyonesse f +Lyonors f +Lyosha m +Lyov m +Lyra f +Lyric fm +Lys f +Lysander m +Lysandra f +Lysandros m +Lysanne f +Lysette f +Lysimachos m +Lysimachus m +Lysistrata f +Lysistrate f +Lyssa f +Lyuba f +Lyuben m +Lyubochka f +Lyubomir m +Lyubov f +Lyudmil m +Lyudmila f +Lyudmyla f +Lyydia f +Lyyti f +Maacah fm +Maachah fm +Maaike f +Ma'akhah fm +Maala f +Maalik m +Maan m +Maaria f +Maarika f +Maarit f +Maarja f +Maarten m +Maartje f +Maas m +Maata f +Maayan fm +Mabel f +Mabella f +Mabelle f +Mable f +Mabon m +Mabyn f +Macarena f +Macaria f +Macario m +Macarius m +Macaulay m +Macauley m +Mac Beatha m +Macbeth m +Macdara m +Macey f +Machalat f +Machlah fm +Machli m +Machteld f +Maci f +Macie f +Maciej m +Mack m +Mackenzie fm +Macsen m +Macy f +Madai m +Madailéin f +Madalena f +Mădălina f +Madalitso mf +Madalyn f +Madara f +Mädchen f +Maddalena f +Maddie f +Maddison f +Maddox m +Maddy f +Made mf +Madelaine f +Madeleine f +Madelief f +Madelina f +Madeline f +Madelon f +Madelyn f +Madelynn f +Madge f +Madhav m +Madhava m +Madhavi f +Madhu fm +Madhukar m +Madhur mf +Madhuri f +Madilyn f +Madilynn f +Mədinə f +Madina f +Madis m +Madison fm +Madisyn f +Madlenka f +Madlyn f +Madoc m +Madog m +Madoline f +Madona f +Madonna f +Mads m +Madyson f +Mae f +Máedóc m +Maegan f +Maeghan f +Mæja f +Maël m +Mael m +Maela f +Máel Coluim m +Maeleachlainn m +Maeleth f +Maelgwn m +Maëlie f +Máel Ísu m +Maëlle f +Máel Máedóc m +Máel Sechlainn m +Máel Sechnaill m +Maëlys f +Mærwine m +Maeva f +Maeve f +Ma'evehpota'e f +Mafalda f +Magahet m +Magali f +Magalie f +Magaly f +Magda f +Magdalen f +Magdaléna f +Magdalena f +Magdalene f +Magdalina f +Magdalini f +Magdi fm +Magdolna f +Magdy m +Maggie f +Mághnus m +Maglocunos m +Magne m +Magnhild f +Magnhildr f +Magni m +Magnolia f +Magnús m +Magnus m +Mago m +Magomed m +Magomedkhan m +Magomet m +Maha f +Mahala f +Mahalah m +Mahalath f +Mahali m +Mahalia f +Mahamadou m +Məhəmməd m +Mahammad m +Mahatma m +Mahaut f +Mahavir m +Mahavira m +Mahdi m +Mahendra m +Mahershala m +Mahesh m +Mahesha m +Mahfuz m +Mahihkan m +Mahin f +Mahinder mf +Mahine f +Mahir m +Mahlah fm +Mahli m +Mahmood m +Mahmoud m +Mahmud m +Mahmut m +Mahomet m +Mahometus m +Mahon m +Mahpiya mf +Mahsa f +Mahtab f +Mahthildis f +Mahulena f +Mahvash f +Mahzun m +Mai f +Maïa f +Maia f +Maialen f +Maiara f +Maider f +Maie f +Máighréad f +Maighread f +Maija f +Maike f +Maikel m +Maiken f +Mailcun m +Maile f +Mailys f +Maimu f +Maimunah f +Maina m +Mainchín m +Mainchíne m +Mainio m +Mair f +Máire f +Maire f +Máiréad f +Mairéad f +Mairead f +Mairenn f +Màiri f +Máirín f +Máirtín m +Mairwen f +Maisie f +Maisy f +Maite f +Maitiú m +Maitland mf +Maïwenn f +Maiwenn f +Maj mf +Maja f +Majda f +Majdi m +Majid m +Majken f +Major m +Makaio m +Makana mf +Makar m +Makara mf +Makari m +Makarios m +Makariy m +Makayla f +Makbule f +Makeda f +Makena fm +Makenna f +Makenzie f +Makhamat m +Makhmud m +Makoto mf +Makram m +Maks m +Maksim m +Maksimilian m +Maksimilijan m +Maksym m +Maksymilian m +Makvala f +Mala f +Malachi m +Malachy m +Malai f +Malaika f +Malak fm +Malakai m +Mal'akhi m +Malalai f +Malandra f +Malati f +Malcolm m +Malcom m +Maldwyn m +Maleah f +Maleficent f +Maleko m +Malena f +Malene f +Małgorzata f +Małgosia f +Mali f +Malia f +Mālie f +Malik m +Malika f +Malin f +Malina f +Malinalli f +Malinda f +Malini f +Malka f +Malkhaz m +Malkhazi m +Mallaidh f +Malle f +Mallory f +Mallt f +Malo m +Malone mf +Malou f +Malte m +Malthe m +Malvina f +Malvolio m +Malwina f +Mamadou m +Mamadu m +Mamen f +Mami f +Mamie f +Məmməd m +Mammad m +Mamman m +Mamoun m +Mamuka m +Mamun m +Manaem m +Managold m +Manahem m +Manaia fm +Manami f +Manana f +Manannán m +Manas m +Manasseh m +Manasses m +Manawydan m +Manca f +Manda f +Mandawuy m +Mandeep mf +Mandi f +Mandica f +Mandla m +Mandlenkosi m +Mandy f +Mane f +Manel m +Manfred m +Manfredi m +Manfredo m +Manfried m +Mangatjay m +Mani m +Maninder mf +Manish m +Manisha f +Manius m +Manjeet mf +Manju f +Manjula f +Manjusha f +Manley m +Manlio m +Manlius m +Mannes m +Mannix m +Manno m +Manny m +Manoel m +Manoela f +Manoj m +Manoja m +Manola f +Manolo m +Manon f +Manouel m +Manpreet fm +Måns m +Mansel m +Mansoor m +Mansur m +Mantas m +Mantvydas m +Manu mf +Manuel m +Manuela f +Manuele m +Manuelita f +Manus m +Manvel m +Manya f +Manyara f +Mao fm +Maoilios m +Maol Chaluim m +Maolsheachlann m +Ma'ome m +Maor m +Maple f +Maponos m +Maqsood m +Maqsud m +Maquinna m +Mar f +Māra f +Mara f +Maraĵa f +Maral f +Maralyn f +Maram fm +Marama f +Marat m +Marc m +Marcas m +Marceau m +Marcel m +Marcela f +Marceli m +Marcelin m +Marcelina f +Marceline f +Marcelinho m +Marcelino m +Marcell m +Marcella f +Marcelle f +Marcellette f +Marcellin m +Marcellina f +Marcelline f +Marcellino m +Marcellinus m +Marcello m +Marcellus m +Marcelo m +Marcelyn f +Marci f +Márcia f +Marcia f +Marcial m +Marciana f +Marciane f +Marciano m +Marcianus m +Marcie f +Marcin m +Márcio m +Marcio m +Mārcis m +Marcius m +Marco m +Marcos m +Marcus m +Marcy f +Marduk m +Mare f +Mared f +Maredudd m +Maree f +Mareike f +Marek m +Mareks m +Maren f +Maret f +Marfa f +Marga f +Margaid f +Margalit f +Margalita f +Marganita f +Margareeta f +Margaret f +Margaréta f +Margareta f +Margarete f +Margaretha f +Margarethe f +Margaretta f +Margarid f +Margarida f +Margarit f +Margarita f +Margaux f +Marge f +Marged f +Margery f +Margetud m +Margh m +Margherita f +Margie f +Margit f +Margita f +Margitta f +Margo f +Margot f +Margreet f +Margrét f +Margrete f +Margrethe f +Margriet f +Margrit f +Marguerite f +Margus m +Marharyta f +Mari f +Mária f +María fm +Maria fm +María Ángeles f +María Belén f +Mariabella f +María Carmen f +Maria Chiara f +María Cristina f +María de Jesús f +María del Carmen f +María de los Ángeles f +María Dolores f +María Fernanda f +Maria Francesca f +Maria Grazia f +María Guadalupe f +Mariah f +María Isabel f +María Jesús f +Maria João f +María José f +Maria José f +María Josefa f +Maria Josep f +María Luisa f +Mariam f +Mariama f +María Manuela f +Mariami f +Mariamne f +Mariamu f +Marián m +Marian fm +Mariana f +Marianela f +Mariangela f +Marianita f +Mariann f +Marianna f +Marianne f +Mariano m +Marianus m +Maria Pia f +Mariapia f +María Pilar f +Mariasole f +María Teresa f +Maria Vittoria f +Mariazinha f +Maribel f +Marica f +Maricel f +Maricela f +Maricica f +Maricruz f +Marie fm +Marie-Ange f +Marie-Christine f +Marie-Claire f +Marie-Claude f +Marie-France f +Marie-Françoise f +Marie-Hélène f +Marie-José f +Marieke f +Mariel f +Mariela f +Marie-Laure f +Mariele f +Mariella f +Mariëlle f +Marielle f +Marie-Louise f +Marie-Madeleine f +Marie-Noëlle f +Marie-Pierre f +Marie-Rose f +Marie-Thérèse f +Marietjie f +Marietta f +Mariëtte f +Mariette f +Marigold f +Marija f +Marijan m +Marijana f +Marijani m +Marijeta f +Marijke f +Marijn mf +Marijo m +Marijona f +Marijse f +Marijus m +Marika f +Marike f +Marikit f +Mariko f +Marilag f +Marilena f +Marilène f +Marilou f +Marilyn f +Marilynn f +Marin m +Marína f +Marina f +Marinda f +Marine f +Marinela f +Marinella f +Marinette f +Marinho m +Marinka f +Marinko m +Marino m +Marinos m +Marinus m +Mário m +Mario m +Marion fm +Mariona f +Marios m +Māris m +Maris f +Marisa f +Marise f +Marisela f +Mariska f +Marisol f +Marissa f +Maristela f +Maristella f +Marit f +Marita f +Mārīte f +Maritta f +Maritza f +Màriu m +Marius m +Mariusz m +Mariya f +Mariyam f +Mariyan m +Mariyana f +Mariyka f +Márjá f +Marja f +Marjaana f +Marjan fm +Marjana f +Marjatta f +Marje f +Marjeta f +Marjo f +Marjolaine f +Marjolein f +Marjolijn f +Marjorie f +Marjory f +Marju f +Marjukka f +Marjut f +Márk m +Mark m +Markas m +Markel m +Markéta f +Marketta f +Markiyan m +Markku m +Marko m +Markos m +Markus m +Markuss m +Marla f +Marlee f +Marleen f +Marlen mf +Marlena f +Marlène f +Marlene f +Marley fm +Marlies f +Marlin m +Marlis f +Marloes f +Marlon m +Marlowe fm +Marly f +Marlyn fm +Marmaduke m +Marna f +Marni f +Marnie f +Marnix m +Marques m +Marquinhos m +Marquis m +Marquise m +Marquita f +Mars m +Marsaili f +Marsha f +Marshal m +Marshall m +Mart m +Márta f +Märta f +Marta f +Marte fm +Mårten m +Marten m +Martha f +Marthe f +Marthese f +Martí m +Martial m +Martialis m +Martie mf +Martijn m +Martim m +Martín m +Martîn m +Martin m +Martina f +Martine f +Martinho m +Martino m +Mārtiņš m +Martins m +Martinus m +Martirio f +Martita f +Márton m +Martta f +Martti m +Mártuska f +Marty m +Martyn m +Martyna f +Martynas m +Martzel m +Maruf m +Maruša f +Marusya f +Maruxa f +Marva f +Marvin m +Marvyn m +Marwa f +Marwin m +Mary f +Marya f +Maryam f +Maryamu f +Maryana f +Mary Ann f +Maryann f +Mary Anne f +Maryanne f +Mary Beth f +Marybeth f +Maryia f +Mary Jane f +Mary Jo f +Maryla f +Marylène f +Mary Lou f +Marylou f +Marylu f +Marylyn f +Maryna f +Maryse f +Marysia f +Maryvonne f +Marzanna f +Marzell m +Marzena f +Marzia f +Marzio m +Máša f +Maša f +Masahiko m +Masako f +Masal f +Masamba m +Masami fm +Masao m +Masaru m +Masashi m +Masego f +Masha f +Mason m +Masood m +Masoomeh f +Masoud m +Masoumeh f +Masozi mf +Massimiliano m +Massimo m +Massoud m +Masterman m +Mas'ud m +Masud m +Masuma f +Masuyo f +Mat m +Matan m +Ma'tano m +Matas m +Matauc m +Máté m +Mate m +Matea f +Matei m +Matěj m +Matej m +Mateja fm +Matéo m +Mateo m +Mateu m +Mateus m +Mateusz m +Matevos m +Matevž m +Matey m +Matfey m +Math m +Mathea f +Mathéo m +Matheo m +Matheus m +Mathew m +Mathgamain m +Mathghamhain m +Mathias m +Mathieu m +Mathijs m +Mathilda f +Mathilde f +Mathis m +Mathúin m +Mathusalam m +Mathusalem m +Mathys m +Mati m +Matia m +Matías m +Matias m +Matic m +Matija mf +Matild f +Matilda f +Matilde f +Matis m +Matīss m +Matjaž m +Matko m +Matleena f +Mato m +Matouš m +Matrona f +Matryona f +Mats m +Matt m +Mattan m +Mattaniah m +Mattanyahu m +Mattea f +Mattéo m +Matteo m +Matteus m +Matthaios m +Matthan m +Matthäus m +Matthei m +Mattheus m +Matthew m +Matthia m +Matthías m +Matthias m +Matthieu m +Matthijs m +Matti m +Mattia m +Mattias m +Mattie fm +Mattin m +Mattis m +Mattithiah m +Mattithyahu m +Mattityahu m +Matts m +Matty mf +Matúš m +Matusalemme m +Matusalén m +Matvei m +Matvey m +Matviy m +Matxin m +Mátyás m +Matyáš m +Matylda f +Maud f +Maude f +Maudie f +Māui mf +Mauno m +Maunu m +Maura f +Maureen f +Maurene f +Mauri m +Maurice m +Mauricette f +Maurício m +Mauricio m +Maurie m +Maurine f +Mauritius m +Maurits m +Maurizia f +Maurizio m +Mauro m +Maurus m +Maurycy m +Mave f +Maverick m +Mavis f +Mavourneen f +Mavuto m +Mawar f +Mawuli m +Mawunyo mf +Max m +Maxamed m +Maxen m +Maxence m +Maxene f +Maxentius m +Maxi mf +Màxim m +Maxim m +Máxima f +Maxima f +Maxime m +Maximian m +Maximiano m +Maximianus m +Maximiliaan m +Maximilián m +Maximilian m +Maximiliana f +Maximiliane f +Maximiliano m +Maximilianus m +Maximilien m +Maximilienne f +Maximillian m +Maximino m +Maximinus m +Máximo m +Maximón m +Maximus m +Maxine f +Maxmilián m +Maxton m +Maxwell m +May f +Maya f +Mayamiko mf +Maybelle f +Maybelline f +Mayeso mf +Maylis f +Mayme f +Maymunah f +Maynard m +Maynerd m +Mayra f +Mayrbek m +Mayson m +Maytal f +Mayte f +Mayu f +Mayumi f +Mayur m +Mazhar m +Mazikeen f +Mazin m +Mbalenhle f +Mbali f +Mckayla f +McKenna f +McKenzie fm +McKinley fm +Méabh f +Meade mf +Meadhbh f +Meadow f +Meagan f +Meaghan f +Meallán m +Meave f +Mechislav m +Mechteld f +Mechthild f +Mechtilde f +Mecit m +Medad m +Medb f +Medea f +Medeia f +Medhat m +Medina f +Medine f +Medora f +Medousa f +Medraut m +Medrod m +Medusa f +Meeli f +Meelis m +Meena f +Meera f +Mees m +Mefodiy m +Meg f +Mega fm +Megaera f +Megaira f +Megan f +Mégane f +Meggy f +Meghan f +Meginfrid m +Meginhard m +Meginrat m +Megumi f +Mehdi m +Meheitav'el f +Mehetabel f +Mehitabel f +Mehmed m +Mehmet m +Mehmood m +Mehmûd m +Mehmud m +Mehmut m +Mehr mf +Mehrab m +Mehrdad m +Mehrnaz f +Mehtap f +Mehveş f +Mei f +Meical m +Meike f +Meinard m +Meindert m +Meine m +Meinhard m +Meinir f +Meino m +Meinrad m +Meint m +Meintje f +Meinwen f +Meir m +Meira f +Meirion m +Meiriona f +Meirit f +Meital f +Meja f +Mekaisto m +Meklit f +Mel mf +Melaina f +Melánia f +Melania f +Mélanie f +Melánie f +Melanie f +Melanija f +Melaniya f +Melano f +Melantha f +Melanthios m +Melany f +Melati f +Melba f +Melcha f +Melchior m +Melchiorre m +Melchol f +Melchor m +Mele f +Melech m +Melek mf +Melesina f +Melete f +Melia f +Melicent f +Melik m +Melika f +Melike f +Mélina f +Melina f +Melinda f +Méline f +Meliora f +Melis f +Melisa f +Mélisande f +Melisende f +Melisizwe m +Mélissa f +Melissa f +Melissza f +Melita f +Melite f +Meliton m +Melitta f +Melker m +Mellán m +Mellan m +Melle m +Mellony f +Mélodie f +Mélody f +Melody f +Melor m +Melpomene f +Melpomeni f +Melqart m +Meltem f +Melusine f +Melva f +Melville m +Melvin m +Melvyn m +Melyssa f +Memphis m +Menachem m +Menahem m +Menander m +Menandros m +Menashe m +Menashsheh m +Mendel m +Menelaos m +Menelaus m +Menes m +Menna f +Mennatullah f +Menno m +Menodora f +Mensur m +Mentor m +Menuha f +Meona'hane m +Merab fm +Meral f +Merari m +Meraud f +Merav f +Mercè f +Mercedes f +Mercédesz f +Merche f +Mercia f +Mercurio m +Mercurius m +Mercury m +Mercy f +Merdan m +Mere f +Meredith mf +Meredydd m +Merel f +Mererid f +Meresankh f +Merete f +Merfyn m +Mergen m +Meri f +Merida f +Merideth f +Meridith f +Meriel f +Meriem f +Merike f +Merilyn f +Merit mf +Merita f +Meritites f +Meritxell f +Meriwether m +Merja f +Merjem f +Merjema f +Merla f +Merle fm +Merletta f +Merlin m +Merlyn mf +Mermin m +Merob f +Merope f +Merrick m +Merrill m +Merrilyn f +Merrion f +Merritt m +Merry fm +Merryn f +Mert m +Merten m +Merton m +Merv m +Merve f +Mervi f +Mervin m +Mervyn m +Meryem f +Meryl f +Meshach m +Meshulam m +Meshullam m +Messiah m +Messias m +Mesud m +Mesut m +Meta f +Mete m +Metehan m +Methoataske f +Methodios m +Methodius m +Methusalem m +Methuselah m +Meti f +Metin m +Metis f +Metod m +Metoděj m +Metodij m +Metodija m +Metody m +Metrodora f +Metrophanes m +Mette f +Metushelach m +Metztli fm +Meuric m +Meurig m +Meyer m +Meztli fm +Mhairi f +Mía f +Mia f +Mica f +Micael m +Micaela f +Micah m +Micaiah mf +Micajah mf +Micha mf +Michaeas m +Michaël m +Michael m +Michaela f +Michaiah mf +Michaias m +Michail m +Michal mf +Michał m +Michala f +Michalina f +Michalis m +Michayla f +Mícheál m +Mìcheal m +Micheal m +Micheas m +Mìcheil m +Michel m +Michela f +Michelangela f +Michelangelo m +Michèle f +Michele mf +Michelina f +Micheline f +Michelle f +Michelyne f +Michi mf +Michiel m +Michiko f +Michol f +Miĉjo m +Mick m +Mickaël m +Mickey mf +Micky m +Micol f +Mictlantecuhtli m +Midas m +Midge f +Midha f +Midhat m +Midori f +Mie f +Mieczysław m +Mieczysława f +Mieke f +Miela f +Mielikki f +Mien f +Miep f +Miervaldis m +Mies fm +Mieszko m +Miglė f +Mignon f +Miguel m +Miguela f +Miguel Ángel m +Miguelito m +Mi-Gyeong f +Miha m +Mihael m +Mihaela f +Miĥaelo m +Mihai m +Mihail m +Mihaila f +Mihailo m +Mihails m +Mihăiță m +Mihajlo m +Mihalis m +Mihály m +Mihammad m +Mihangel m +Mihemed m +Mihkel m +Mihkkal m +Miho mf +Mihovil m +Miia f +Miigwan fm +Miina f +Mija f +Mijo m +Mika mf +Mikael m +Mikaela f +Mikaere m +Mikail m +Mikala m +Mikalai m +Mikalay m +Mikayel m +Mikayla f +Mike m +Mikel m +Miķelis m +Mikelo m +Mikey m +Mikha'el m +Mikhael m +Mikhah m +Mikha'il m +Mikhail m +Mikhaila f +Mikhailo m +Mikhailu m +Mikhal f +Mikhayahu mf +Mikheil m +Miki f +Mikiel m +Mikita m +Mikkel m +Mikkeline f +Mikki f +Mikkjal m +Mikko m +Miklavž m +Miklós m +Miko m +Mikołaj m +Mikoláš m +Miksa m +Miku f +Mikula m +Mikuláš m +Mi-Kyung f +Mila f +Milada f +Milagros f +Milán m +Milan m +Milana f +Milani f +Milanka f +Milburga f +Milburn m +Milcah f +Milda f +Mildburg f +Mildgyð f +Mildred f +Mildþryð f +Mile m +Milen m +Miléna f +Milena f +Milenko m +Miles m +Mileva f +Miley f +Milford m +Milian m +Milica f +Militsa f +Milivoj m +Milja f +Miljana f +Miljenko m +Milka f +Milkah f +Milko m +Milla f +Millaray f +Millard m +Mille fm +Millicent f +Millie f +Milly f +Milo m +Milodrag m +Miłogost m +Milogost m +Miloje m +Milojica m +Milomir m +Milorad m +Miloš m +Milosh m +Miloslav m +Miloslava f +Miłosław m +Miłosz m +Milou f +Milovan m +Miltiades m +Milton m +Miluše f +Miluška f +Milvi f +Mimi f +Mimmi f +Min mf +Mina f +Minako f +Minakshi f +Minali f +Minato mf +Mincho m +Mindaugas m +Mindy f +Minea f +Minenhle fm +Minerva f +Ming mf +Minh mf +Min-Ji f +Min-Jun mf +Minke mf +Minko m +Minna f +Minnie f +Minodora f +Minoo f +Minoru mf +Minos m +Min-Seo f +Min-Su mf +Minta f +Minttu f +Mintxo m +Minty f +Minu f +Mio f +Miodrag m +Miomir m +Miquel m +Míra f +Mira f +Mirabella f +Mirabelle f +Miraç m +Miracle f +Miraj m +Miran m +Miranda f +Miray f +Mirče m +Mircea m +Mirche m +Mirco m +Mireia f +Mireille f +Mirèio f +Mirek m +Mirela f +Mirele f +Mirèlha f +Mirella f +Mirembe f +Miren f +Mireya f +Miri f +Míriam f +Miriam f +Miriama f +Miriana f +Mirica f +Mirinda f +Mirit f +Mirja f +Mirjam f +Mirjami f +Mirjana f +Mirka f +Mirko m +Mirna f +Miro m +Miron m +Miroslav m +Miroslava f +Mirosław m +Mirosława f +Mirsad m +Mirsada f +Mirta f +Mirte f +Mirthe f +Miruna f +Mirza m +Míša f +Miša mf +Misaki f +Misha m +Mishka m +Misho m +Misi m +Mis'id m +Miska m +Miski f +Miško m +Mislav m +Missie f +Missy f +Mistawasis m +Mistefa m +Misti f +Misty f +Mi-Suk f +Mitch m +Mitchell m +Mithat m +Mithra m +Mithradatha m +Mithras m +Mithridates m +Mitică m +Mitja m +Mitko m +Mitra mf +Mitre m +Mitrodora f +Mitrofan m +Mitsuaki m +Mitsuko f +Mitul m +Mitxel m +Mitya m +Mitzi f +Miu f +Miyako f +Miyu f +Mizuki f +Mladen m +Mladenka f +Mnason m +Mneme f +Mnemosyne f +Mo fm +Moa f +Moab m +Moacir m +Moana fm +Mochán m +Moctezuma m +Modest m +Modesta f +Modestas m +Modeste mf +Modestine f +Modesto m +Modestus m +Modesty f +Modou m +Modred m +Modron f +Modu m +Moe mf +Moema f +Moerani mf +Mogens m +Mohamad m +Mohamed m +Mohammad m +Mohammed m +Mohan m +Mohana mf +Mohandas m +Mohinder mf +Mohini f +Moimir m +Moira f +Moire f +Móirín f +Moirrey f +Moïse m +Moisés m +Moisey m +Moishe m +Mojca f +Mojdeh f +Mojgan f +Mojisola f +Mojmír m +Mokee'e f +Mokhammad m +Mokhammat m +Mokhmad m +Mokhtar m +Mokosh f +Molle f +Mollie f +Molly f +Momchil m +Momi f +Momir m +Momoka f +Momoko f +Mona f +Monat f +Moncho m +Monday mf +Monet fm +Mongkut m +Mónica f +Mònica f +Mônica f +Monica f +Monifa f +Mónika f +Monika f +Monique f +Mönkhtsetseg f +Monna f +Monroe mf +Monserrat f +Monta f +Montague m +Montana fm +Monte m +Montezuma m +Montgomery m +Montse f +Montserrat f +Monty m +Moonika f +Moos m +Mór fm +Mòr f +Mor fm +Mora f +Mòrag f +Moran fm +Morana f +Moray m +Morcant m +Mordad f +Mordecai m +Mordechai m +Mordokhay m +Mordred m +Moreen f +Morena f +Moreno m +Morgaine f +Morgan mf +Morgana f +Morgane f +Morgen f +Moriah f +Móric m +Moriko f +Moritz m +Morley m +Morna f +Morpheus m +Morrígan f +Mórríghan f +Mór-Ríoghain f +Morris m +Mort m +Morta f +Morten m +Morteza m +Morticia f +Mortimer m +Morton m +Morty m +Morvarid f +Morven f +Morwen f +Morwenna f +Mose m +Moses m +Moshe m +Mosi fm +Moss m +Mostafa m +Mostyn m +Mot m +Motecuhzoma m +Motel m +Moti m +Motiejus m +Motke m +Motya mf +Mouna f +Mouric m +Mouses m +Moussa m +Moustafa m +Moustapha m +Mowgli m +Moyna f +Moyra f +Moysei m +Moyses m +Mozelle f +Mózes m +Mozes m +Mozhdeh f +Mozhgan f +Mphatso mf +Mpho mf +Mridula f +Mścisław m +Mstislav m +Mtendere mf +Mu mf +Muadhnait f +Muadnat f +Mubin m +Mubina f +Mubiru m +Mücahit m +Mudiwa fm +Mufaddal m +Müge f +Muhamad m +Muhamadkhan m +Muhamed m +Muhamet m +Muhammad m +Muhammadu m +Muhammed m +Muhammet m +Muhemmet m +Muhsin m +Muhsina f +Muhtar m +Muir m +Muirchertach m +Muire f +Muireadhach m +Muireall f +Muireann f +Muiredach m +Muirenn f +Muirgel f +Muirgen f +Muirgheal f +Muirín f +Muiris m +Muirne f +Müjde f +Müjgan f +Mujo m +Mukami f +Mukesh m +Mukesha m +Mukhamed m +Mukhammed m +Mukhtaar m +Mukhtar m +Mukta f +Mukul m +Mulan f +Mumbi f +Mümin m +Mumin m +Mumina f +Mümine f +Mümtaz m +Mumtaz mf +Muna f +Munashe mf +Mundi m +Mundzuk m +Mungo m +Münir m +Munir m +Munira f +Münire f +Munkhtsetseg f +Munro m +Munroe m +Munya f +Munyaradzi m +Mupitsukupʉ m +Murad m +Murali m +Murat m +Murchad m +Murchadh m +Murdag f +Murdo m +Murdoch m +Muriel f +Murielle f +Murna f +Murphy mf +Murray m +Murron f +Murrough m +Murtada m +Murtagh m +Murtaz m +Murtaza m +Murugan m +Musa m +Mus'ad m +Muscowequan m +Mustafa m +Mustapha m +Mu'tamid m +Mu'tasim m +Muthoni f +Mwajuma f +Mwanahamisi f +Mwanahawa f +Mwanaidi f +Mwanaisha f +Mwanajuma f +Mwangi m +Mwayi fm +Mwenya fm +My f +Mỹ f +Mya f +Myeong mf +Myeong-Suk f +Myf f +Myfanwy f +Myghal m +Mykhail m +Mykhaila f +Mykhailo m +Mykhaylo m +Mykola m +Mykolas m +Mykyta m +Myla f +Mylène f +Myles m +Mynte f +Myra f +Myranda f +Myrddin m +Myrgjǫl f +Myriam f +Myrna f +Myron m +Myroslav m +Myroslava f +Myrrhine f +Myrthe f +Myrtie f +Myrtle f +Myrto f +Mysie f +Myung mf +Mzia f +Na f +Naa f +Naaji m +Naama f +Na'amah f +Naamah f +Nabil m +Nabila f +Nabopolassar m +Nabouchodonosor m +Nabu m +Nabu-Apla-Usur m +Nabuchodonosor m +Nabu-Kudurri-Usur m +Nace m +Nacho m +Nachum m +Naci m +Nacio m +Naďa f +Nada f +Nadab m +Nadav m +Nadeem m +Nadège f +Nadejda f +Nader m +Naděžda f +Nadežda f +Nadezhda f +Nádia f +Nadia f +Nadica f +Nadiia f +Nadim m +Nadine f +Nadir m +Nadira f +Nadire f +Nadiya f +Nadiye f +Nadiyya f +Nadja f +Nadra f +Nadya f +Nadzeya f +Nadzieja f +Naël m +Naenia f +Naevius m +Nafisa f +Nafiset f +Naftali m +Nafula f +Nagendra m +Nagi m +Nagib m +Nagore f +Nahal f +Naheed f +Nahia f +Nahid f +Nahor m +Nahuel m +Nahum m +Naia f +Naiara f +Naiche m +Naida f +Nail m +Naila f +Naile f +Na'im m +Naim m +Na'ima f +Naïma f +Naime f +Nainsí f +Naira f +Nairyosangha m +Naja f +Najden m +Naji m +Najib m +Najla f +Najm m +Najma f +Najwa f +Nakato f +Nakeisha f +Nakisha f +Nala mf +Nālani fm +Naldo m +Naliaka f +Nalini f +Nam m +Namrata f +Nan f +Nana fm +Nanabah f +Nanabozho m +Nanaea f +Nanaia f +Nanako f +Nanami f +Nanaya f +Nance f +Nancy f +Nand m +Nanda m +Nandag f +Nandita f +Nando m +Nándor m +Nanette f +Nani f +Nanjala f +Nanna fm +Nannie f +Nanny f +Nanook m +Nanuk m +Nanuli f +Nanuq m +Nao fm +Naoise m +Naoki m +Naoko f +Naomh f +Naomhán m +Na'omi f +Naomi fm +Naoum m +Naphtali m +Napier m +Napoléon m +Napoleon m +Napoleone m +Naqi m +Naram-Sin m +Naranbaatar m +Narangerel f +Narantsetseg f +Narayan m +Narayana m +Narayanan m +Narcís m +Narcisa f +Narciso m +Narcissa f +Narcisse mf +Narcissus m +Narcyz m +Nare f +Narek m +Narelle f +Narendra m +Narges f +Nərgiz f +Nargiza f +Nari f +Narinder mf +Narine f +Narkissos m +Nərmin f +Nərminə f +Narseh m +Narses m +Naruhito m +Nascimbene m +Naseem mf +Naseer m +Nash m +Nashwa f +Nasib m +Nasim mf +Nasimiyu f +Nasir m +Nasira f +Nasrin f +Nasser m +Nassim mf +Nastasia f +Nastassia f +Nastasya f +Nastia f +Nastja f +Nastya f +Nat mf +Nata f +Natacha f +Natale m +Natalee f +Natali f +Natália f +Natàlia f +Natalia f +Natálie f +Natalie f +Natālija f +Natalija f +Natalina f +Natalino m +Natalio m +Natalius m +Nataliya f +Natalka f +Natallia f +Natalya f +Natan m +Natanael m +Natanaele m +Natanail m +Nataniel m +Nataša f +Natasa f +Natasha f +Natasja f +Natasza f +Nate m +Natela f +Nathália f +Nathalie f +Nathan m +Nathanaël m +Nathanael m +Nathanahel m +Nathaniel m +Natia f +Natille f +Natisha f +Natividad f +Natsuki f +Natsuko f +Natsumi f +Nauja f +Naum m +Nausicaa f +Nausikaa f +Nava f +Navdeep mf +Naveed m +Naveen m +Navid m +Navin m +Navneet mf +Nawal f +Nawel m +Nawra f +Nayara f +Nayden m +Nayeli f +Naz f +Nazaire m +Nazar m +Nazarenus m +Nazaret fm +Nazario m +Nazarius m +Nazariy m +Nazgul f +Nazia f +Nazih m +Naziha f +Nazım m +Nazim m +Nazli f +Nazlı f +Nazzareno m +Ndidi fm +Ndubuisi m +Nea f +Neacel m +Neal m +Neas f +Neasa f +Neassa f +Nebet-Hut f +Nebil m +Nebile f +Nebo m +Nebojša m +Nebrod m +Nebuchadnezzar m +Nechemyah m +Nechtan m +Necla f +Neculai m +Ned m +Neda f +Nedelcho m +Nedeljka f +Nedeljko m +Nedelka f +Nedelko m +Nedelya f +Nediljka f +Nediljko m +Nedim m +Nedjeljka f +Nedjeljko m +Nedyalka f +Nedyalko m +Neea f +Neela f +Neelam fm +Neelima f +Neeltje f +Neely mf +Neema f +Neemias m +Neer m +Neeraj m +Nefeli f +Neferkare m +Nefertari f +Nefertiti f +Nefes f +Nefise f +Negar f +Negin f +Neha f +Nehemiah m +Nehir f +Nehuén m +Neifion m +Neil m +Neilina f +Neilos m +Neirin m +Neith f +Neizan m +Neja f +Nejc m +Nejla f +Nekane f +Nekesa f +Nekoda m +Nektaria f +Nektarios m +Nela f +Nelda f +Nele f +Neli f +Nélida f +Nelinha f +Nelinho m +Nell f +Nella f +Nelle f +Nelli f +Nellie f +Nello m +Nelly f +Nels m +Nélson m +Nelson m +Nelu m +Nemanja m +Nemesis f +Nemo m +Nena f +Nenad m +Nennius m +Neno m +Nensi f +Neo fm +Neofit m +Neofytos m +Neohne'e f +Neon m +Neophytos m +Neoptolemos m +Neoptolemus m +Nephele f +Nephthys f +Neptune m +Neptuno m +Neptunus m +Nere f +Nerea f +Nereida f +Nereo m +Nereus m +Nergis f +Nergüi mf +Neriah m +Nerida f +Nerina f +Nerio m +Nerissa f +Nermin mf +Nermina f +Nero m +Nerses m +Nerthus f +Nerva m +Nerys f +Nes f +Neşe f +Nesim mf +Neske f +Nesrîn f +Nesrin f +Ness f +Nessa f +Nest f +Nesta f +Nestan f +Nestan-Darejan f +Nestani f +Néstor m +Nestor m +Nestore m +Nestori m +Neta fm +Netan'el m +Netanel m +Netanyahu m +Nethaneel m +Nethanel m +Nethaniah m +Netsai f +Netta f +Nettie f +Nettuno m +Netuno m +Neus f +Neva f +Nevada fm +Nevaeh f +Nevan m +Neve f +Neven m +Nevena f +Nevenka f +Neves f +Nevil m +Neville m +Nevio m +Nevra f +Nevukhadnetztzar m +Newen m +Newt m +Newton m +Neža f +Nezih m +Nezihe f +Ngải m +Ngaio f +Ngaire f +Ngawang mf +Ngọc fm +Ngozi f +Nguyên m +Nguyệt f +Nhung fm +Nia f +Niall m +Níam f +Niamh f +Nic m +Nicander m +Nicanor m +Niccolò m +Nicéphore m +Nichol m +Nichola f +Nicholas m +Nichole f +Niĉjo m +Nick m +Nicklas m +Nickolas m +Nickolaus m +Nicky mf +Niclas m +Nico m +Nicodème m +Nicodemo m +Nicodemus m +Nicol mf +Nicola mf +Nicolaas m +Nicolae m +Nicolai m +Nicolao m +Nicolaos m +Nicolás m +Nicolas m +Nicolasa f +Nicolau m +Nicolaus m +Nicole f +Nicolet f +Nicoleta f +Nicoletta f +Nicolette f +Nicolina f +Nicoline f +Nicolò m +Nicomachus m +Nicomede m +Nicomedes m +Nicostrato m +Nicostratus m +Nicte f +Nicu m +Nicușor m +Nida f +Nidia f +Niek m +Niels m +Nienke f +Nieve f +Nieves f +Nîga f +Nigar f +Nigel m +Nigella f +Nigellus m +Nigina f +Nigora f +Nigul m +Nihal fm +Nii m +Niillas m +Niilo m +Niina f +Nijolė f +Nik m +Nika fm +Nikandr m +Nikandros m +Nikanor m +Nīkau m +Nike f +Nikeisha f +Nikephoros mf +Niketa f +Niketas m +Nikhil m +Nikhila f +Niki f +Nikias m +Nikica m +Nikifor m +Nikisha f +Nikita mf +Nikitha f +Nikki f +Nikkole f +Niklas m +Niklaus m +Niklāvs m +Niko m +Nikodem m +Nikodemos m +Nikodim m +Nikol f +Nikola mf +Nikolaas m +Nikolai m +Nikolaj m +Nikolajs m +Nikolao m +Nikolaos m +Nikolas m +Nikolasz m +Nikolaus m +Nikolay m +Nikolče m +Nikolche m +Nikole f +Nikoleta f +Nikolett f +Nikoletta f +Nikolina f +Nikollë m +Nikoloz m +Nikomachos m +Nikomedes m +Nikon m +Nikora mf +Nikos m +Nikostratos m +Nikša m +Nikusha m +Nil mf +Nila f +Nilam fm +Nilas m +Nilda f +Niles m +Nili f +Nilima f +Nilo m +Nilofar f +Nilofer f +Niloofar f +Niloufar f +Nils m +Nilufar f +Nilüfer f +Nilus m +Nima fm +Nimat fm +Nimet f +Nimród m +Nimrod m +Nimue f +Ņina f +Nina f +Ninad m +Nindaanis f +Nine f +Ninel f +Ninette f +Ninfa f +Ning fm +Ningal f +Ninhursag f +Ninian m +Ninlil f +Ninniau m +Nino mf +Ninochka f +Ninon f +Ninos m +Ninoslav m +Ninoslava f +Ninsumun f +Ninsun f +Ninurta m +Niobe f +Nioclás m +Nîpisiy f +Nir m +Niraj m +Nirav m +Nirmal m +Nirmala f +Nirupama f +Nis m +Nisa f +Nisanur f +Nisha f +Nishant m +Nishat mf +Nissa f +Nisus m +Nit f +Nita f +Nithin m +Nithya f +Nitika f +Nitin m +Nitya fm +Nitza f +Nitzan mf +Niusha f +Niv m +Niven m +Nives f +Niviarsiaq f +Nixon m +Nizar m +Nizhóní f +Njål m +Njála f +Njáll m +Njeri f +Njinga mf +Njord m +Njǫrðr m +Nkauj f +Nkechi f +Nkechinyere f +Nkemdilim f +Nkiru f +Nkiruka f +Nkosana m +Nkosazana f +Nkruma mf +Nnamdi m +Nneka f +Nnenna f +Nnenne f +Noa fm +Noach m +No'ah f +Noah mf +Noak m +Noam mf +Noble m +Noboru m +Nobu m +Nobuko f +Noburu m +Nobutoshi m +Nobuyuki m +Nodens m +Noe m +Noé m +Noè m +Noël m +Noel mf +Noela f +Noelani f +Noèle f +Noelene f +Noelia f +Noëlla f +Noëlle f +Noelle f +Noémi f +Noemi f +Noemí f +Noémia f +Noêmia f +Noémie f +Noemin f +Noga fm +Nogah m +Noham m +Nohemi f +Nóirín f +Noíse m +Nojus m +Nokomis f +Nöl m +Nola f +Nolan m +Nolene f +Nölke m +Noll m +Nollaig fm +Nolwenn f +Nomiki f +Nomusa f +Non f +Nona f +Nonhelema f +Nonhle f +Nonie f +Nonna f +Nonnos m +Nonso m +Nontle f +Nonus m +Nooa m +Noodin m +Noor fm +Noora f +Noor-Ali m +Noortje f +Nor fm +Nóra f +Nora f +Norah f +Norbaer m +Norbert m +Norberto m +Norbu m +Noreen f +Norene f +Nori m +Noriaki m +Noriko f +Norina f +Norm m +Norma f +Norman m +Normand m +Normina f +Norris m +Norton m +Norwood m +Nosipho f +Nosizwe f +Nosson m +Notah m +Notos m +Notus m +Nou f +Noud m +Nour fm +Noura f +Noureddin m +Noureddine m +Nousha f +Nout m +Nova f +Novak m +Novella f +Nowell m +Noxolo f +Noy fm +Noya f +Noyabrina f +Nsia mf +Nsonowa mf +Nthanda mf +Ntombi f +Ntombifuthi f +Ntombizodwa f +Ntsuab f +Nuada m +Nuadha m +Nuadu m +Nuala f +Nuallán m +Nuan f +Nubia f +Nudd m +Nuh m +Nuha f +Nuka mf +Numitor m +Nuño m +Nuno m +Nunzia f +Nunziatina f +Nunzio m +Nur fm +Nura f +Nur ad-Din m +Nurasyl m +Nuray f +Nurbek m +Nurcan f +Nurettin m +Nurgül f +Nuri m +Núria f +Nuria f +Nurislam m +Nurit f +Nurlan m +Nurmagomed m +Nurmuhamad m +Nursultan m +Nurten f +Nuru f +Nuruddin m +Nurul mf +Nurullah m +Nurzhan m +Nuša f +Nuur m +Nuwan m +Nwanneka f +Nyah f +Nyala f +Nyambura f +Nyarai f +Nyazik f +Nydia f +Nye m +Nyla f +Nylah f +Nympha f +Nymphe f +Nymphodora f +Nynke f +Nynniaw m +Nyoman mf +Nyongesa m +Nyree f +Nyssa f +Nyx f +Nyyrikki m +Nzinga mf +Oakley mf +Oaklyn f +Oaklynn f +Oana f +Oanez f +Obadiah m +Ọbatala m +Obdulia f +Obed m +Oberon m +Obi mf +Obinna m +Obrad m +Ocean mf +Océane f +Oceanus m +Ochieng m +Octave m +Octávia f +Octavia f +Octavian m +Octavianus m +Octávio m +Octavio m +Octavius m +Oda f +Odalis fm +Odalric m +Odalys f +Odarka f +Odarnat f +Odd m +Oddbjørn m +Oddbjǫrn m +Oddmund m +Oddo m +Oddr m +Oddvar m +Oddvarr m +Ode m +Oded m +Odelia f +Odell mf +Oden m +Odeserundiye m +Odessa f +Odeta f +Odetta f +Odette f +Odharnait f +Odhiambo m +Odhrán m +Ödi m +Odila f +Odile f +Odilia f +Odilie f +Odilo m +Odilon m +Odin m +Odissey m +Odo m +Odoacer m +Odoacre m +Ödön m +Odovacar m +Odrán m +Odran m +Odtsetseg f +Odysseus m +Oébfinn f +Oedipus m +Óengus m +Oenone f +Ofek m +Ofélia f +Ofelia f +Ofeliya f +Ofer m +Ofir mf +Ofira f +Ofra mf +'Ofrah m +Ofri fm +Ofydd m +Ogden m +Ogechi f +Ogechukwu f +Ogechukwukamma f +Oghenekaro mf +Oghenekevwe mf +Oghenero mf +Ognen m +Ognena f +Ognian m +Ognjan m +Ognjen m +Ognyan m +Ognyana f +Ogochukwu fm +Oğuzhan m +Ohad m +Ohannes m +Ohiyesa m +Oidipous m +Õie f +Oier m +Oighrig f +Oihana f +Oili f +Oinone f +Oisín m +Oissíne m +Oiva m +Øivind m +Ojigkwanong m +Okafor m +Okan m +Okeanos m +Okechukwu m +Okeke m +Okonkwo m +Okorie m +Okoro m +Okropir m +Oksana f +Oktawia f +Oktawian m +Oktawiusz m +Oktyabrina f +Ōkuninushi m +Ola mf +Olabode m +Olaf m +Ólafur m +Olalekan m +Olalla f +Olamide mf +Olamilekan m +Olanrewaju m +Ólaug f +Olaug f +Olav m +Olavi m +Olavo m +Ólavur m +Olawale m +Olaya f +Olayinka fm +Oldřich m +Oldrich m +Oldřiška f +Ole m +Oleg m +Olegário m +Olegario m +Oļegs m +Oleh m +Olek m +Oleksander m +Oleksandr m +Oleksandra f +Oleksiy m +Olena f +Oles m +Olesya f +Olev m +Olexiy m +Oľga f +Olga f +Olgica f +Olha f +Oli m +Oliga f +Olim m +Olimpia f +Olimpiada f +Olindo m +Oline f +Oliva f +Olive f +Olivér m +Oliver m +Olivera f +Olivette f +Olívia f +Olivia f +Olivie f +Olivier m +Oliviero m +Oliwer m +Oliwia f +Oliwier m +Olja f +Olle m +Olli m +Ollie mf +Olly m +Ólöf f +Olof m +Ọlọrun m +Olov m +Olu m +Olubunmi f +Oluchi f +Oluf m +Olufemi m +Olufunke f +Olufunmilayo f +Olufunmilola f +Olujimi m +Olukayode m +Olumide m +Olusegun m +Olusola mf +Oluwafemi m +Oluwafunmilayo f +Oluwakanyinsola f +Oluwasegun m +Oluwaseun mf +Oluwaseyi fm +Oluwatoyin fm +Oluwayemisi f +Olve m +Olvido f +Ölvir m +Ǫlvir m +Olwen f +Olwin f +Olwyn f +Olya f +Olympe f +Olympia f +Olympias f +Olympiodoros m +Olympos m +Olyvia f +Om m +Omar m +Omari m +Omega mf +Ömer m +Omer mf +Ömer Faruk m +Omid mf +Omiros m +Omobolanle f +Omolara f +Omondi m +Omran m +Omri m +Ona f +Onangwatgo m +Ondina f +Ondřej m +Ondrej m +Oneida f +Onésime m +Onesimos m +Onesimus m +Onesiphoros m +Onesiphorus m +Onfroi m +Oni fm +Onisim m +Onisimu m +Onni m +Onnophris m +Onofre m +Onofrio m +Onóra f +Onouphrios m +Onufriy m +Onuphrius m +Onur m +Onyebuchi m +Onyeka mf +Onyekachi mf +Onyekachukwu mf +Onyinye f +Onyinyechi f +Onyx mf +Oona f +Oonagh f +Opal f +Opaline f +Opeyemi fm +Ophelia f +Ophélie f +Ophir mf +Ophiuchus m +Ophrah m +Oprah f +Or mf +Ora fm +Orabela f +Orah f +Oral m +Oralee f +Oralie f +Oran m +Orazio m +Orbán m +Orel m +Oren m +Oreste m +Orestes m +Orfeas m +Orfeo m +Órfhlaith f +Orhan m +Ori mf +Oria f +Oriana f +Oriane f +Orianne f +Orietta f +Origen m +Origenes m +Orinda f +Orinthia f +Oriol m +Orion m +Oriṣanla m +Orit f +Örjan m +Ørjan m +Orla fm +Orlagh f +Órlaith f +Orlanda f +Orlando m +Orli f +Orly f +Ormazd m +Ormond m +Ormonde m +Orna f +Ornat f +Ornella f +Oroitz m +'Orpah f +Orpah f +Orpha f +Orpheus m +Orrell m +Orrin m +Orsina f +Orsino m +Orso m +Orsola f +Orsolya f +Orson m +Ortrun f +Ortwin m +Ortzi m +Orval m +Ǫrvar m +Orvar m +Orville m +Orvokki f +Osama m +Osamu m +Osane f +Osanna f +Osanne f +Osbeorn m +Osberht m +Osbert m +Osborn m +Osborne m +Osbourne m +Óscar m +Òscar m +Oscar m +Osee m +Osgar m +Oshea m +Osheen m +Osher mf +Oshrat f +Osip m +Osiris m +Óskar m +Oskar m +Oskari m +Oskars m +Osku m +Osman m +Osmond m +Osmund m +Ossian m +Ostap m +Östen m +Ọṣun f +Osvald m +Osvaldo m +Oswald m +Oswin m +Oswine m +Oszkár m +Ota m +Otakar m +Otar m +Otávia f +Otávio m +Otello m +Otgonbayar mf +Othello m +Óðinn m +Othman m +Othmane m +Othmar m +Othniel m +Otho m +Otieno m +Otília f +Otilia f +Otis m +Otmar m +Oto m +Otobong mf +Otokar m +Otso m +Ott m +Ottavia f +Ottaviano m +Ottavio m +Ottilia f +Ottilie f +Ottmar m +Otto m +Ottó m +Ottokar m +Ottoline f +Ottomar m +Ottone m +Ottorino m +Otylia f +Oualid m +Ougein m +Ouida f +Oumar m +Oumarou m +Ourania f +Ouranos m +Ourbanos m +Ouri m +Ourias m +Ousmane m +Ovadia m +'Ovadyah m +Ove m +Oved m +Ovid m +Ovide m +Ovidia f +Ovídio m +Ovidio m +Ovidiu m +Ovidius m +Owain m +Owen m +Owena f +Oxalá m +Oxana f +Oxum f +Øydis f +Oyibo mf +Öykü f +Øystein m +Oyunchimeg f +Oyuunchimeg f +Øyvind m +Oz m +Ozan m +Ozana f +Ozazias m +Ožbalt m +Ožbej m +Özge f +Özgür mf +Ozi m +Ozias m +Oziel m +Ozihel m +Özlem f +Öztürk m +Ozzie m +Ozzy m +Pa f +Paaie f +Paavali m +Paavo m +Pablo m +Paca f +Pace m +Pacey mf +Pachacútec m +Pachakutiq m +Pachamama f +Pacífica f +Paĉjo m +Paco m +Paddy m +Paden m +Padma fm +Padmavati f +Padmini f +Pádraic m +Pádraig m +Pàdraig m +Pádraigín fm +Padrig m +Pæga m +Pafnutiy m +Page mf +Paget fm +Pahoevotona'e f +Páidí m +Paige f +Paislee f +Paisley f +Päivä f +Päivi f +Pakpao f +Pál m +Pàl m +Pål m +Pal m +Pála f +Palesa f +Pali m +Palina f +Páll m +Pallab m +Pallabi f +Pallas fm +Pallav m +Pallavi f +Palle m +Pallu m +Palmer mf +Palmira f +Palmiro m +Paloma f +Pam f +Pamela f +Pamelia f +Pamella f +Pamila f +Pamphilos m +Pan m +Panagiota f +Panagiotakis m +Panagiotis m +Panayiotis m +Pancho m +Pancras m +Pancratius m +Pancrazio m +Pandeli m +Pandora f +Pánfilo m +Panfilo m +Pangu m +Paniz f +Panka f +Pankaj m +Pankaja m +Pankrati m +Pankratios m +Pankratiy m +Pankraz m +Panna f +Panni f +Panos m +Pansy f +Pantaleon m +Pantaleone m +Panteleimon m +Panteley m +Pantelis m +Panther m +Pantheras m +Panu m +Paol m +Paola f +Paolina f +Paolino m +Paolo m +Paora m +Papa f +Papak m +Paphnoutios m +Paphnutius m +Paquita f +Paquito m +Pär m +Paramonos m +Paraskeva f +Paraskevas m +Paraskeve f +Paraskevi f +Paraskevoula f +Parastoo f +Parastu f +Pari f +Paride m +Paris mf +Parisa f +Parker mf +Parminder mf +Parnel f +Parris mf +Parry m +Parsifal m +Parth m +Partha m +Parthalán m +Parthenia f +Parthenope f +Partholón m +Parvaiz m +Parvan m +Pərvanə f +Parvana f +Parvaneh f +Parvati f +Parveen fm +Pərvin f +Parvin f +Pərviz m +Parviz m +Parwiz m +Parzival m +Pascal m +Pascale f +Pascaline f +Paschal m +Paschalis m +Pasco m +Pascual m +Pascuala f +Pasha m +Pasi m +Paškal m +Paskal m +Paško m +Pasquale m +Pasqualina f +Pasqualino m +Passang mf +Pastor m +Pastora f +Pat mf +Patariki m +Pate m +Patience f +Patigül f +Patime f +Patka f +Pátraic m +Patrice mf +Patrícia f +Patricia f +Patricie f +Patrīcija f +Patricija f +Patrício m +Patricio m +Patricius m +Patrick m +Patrik m +Patritsiya f +Patrizia f +Patrizio m +Patrocinia f +Patrocinio fm +Patroclus m +Patroklos m +Patrycja f +Patryk m +Patsy fm +Patti f +Pattie f +Patton m +Patty f +Patxi m +Patya m +Pau m +Paul m +Pàula f +Paula f +Paule f +Pauleen f +Paulene f +Pauletta f +Paulette f +Pauli m +Paulie m +Paulien f +Pauliina f +Paulína f +Paulina f +Pauline f +Paulinha f +Paulinho m +Paulino m +Paulinus m +Paulius m +Paŭlo m +Paulo m +Paulos m +Pauls m +Pàulu m +Paulu m +Paulus m +Pauwel m +Paval m +Pavao m +Pavel m +Pāvels m +Pavelu m +Pavica f +Paviel m +Pāvils m +Pavla f +Pavle m +Pavli m +Pavlin m +Pavlína f +Pavlina f +Pavlo m +Pavlos m +Pavo m +Pavol m +Paweł m +Pawlu m +Pax f +Paxton m +Payam m +Payne fm +Payton fm +Paz fm +Peace f +Peadar m +Pearce m +Pearl f +Pearle f +Pearlie f +Pece m +Peđa m +Peder m +Pedja m +Pedr m +Pedram m +Pedrinho m +Pedro m +Pedru m +Peer m +Peers m +Peeter m +Peetu m +Peg f +Pegasus m +Peggie f +Peggy f +Pehr m +Peigi f +Peio m +Pèire m +Pejo m +Pekka m +Pekko m +Pelageya f +Pelagia f +Pelagios m +Pelagius m +Pelagiya f +Pelayo m +Pele f +Peleg m +Pelle m +Pellegrino m +Pëllumb m +Pema mf +Pembe f +Pemphero mf +Pen f +Pencho m +Pendo f +Pene f +Pénélope f +Penelope f +Peni m +Peninnah f +Penjani mf +Penka f +Penko m +Penny f +Pentti m +Penuel m +Peony f +Pepca f +Pepe m +Pepijn m +Pépin m +Pepita f +Pepito m +Peppe m +Peppi mf +Peppino m +Per m +Perce m +Perceval m +Perchuhi f +Percival m +Percy m +Perdita f +Pere m +Peredur m +Peregrine m +Peregrinus m +Perele f +Peretz m +Perez m +Peri f +Perica m +Pericles m +Perig m +Perikles m +Periklis m +Perla f +Perle f +Perlie f +Perlita f +Permelia f +Pernel f +Pernilla f +Pernille f +Pero m +Peronel f +Përparim m +Perpétua f +Perpetua f +Perrine f +Perry m +Persefoni f +Persephone f +Perseus m +Persis f +Pertti m +Perttu m +Peru m +Perun m +Pervin f +Perwîn f +Péťa mf +Peťa mf +Peta f +Petal f +Petar m +Pete m +Péter m +Peter m +Petera m +Pēteris m +Peti m +Petia mf +Petko m +Petr m +Petra f +Petrana f +Petras m +Petre m +Petri m +Petrică m +Petřík m +Petrina f +Petrit m +Petro m +Petrona f +Petronel f +Petronela f +Petronella f +Petronia f +Petronila f +Petronilla f +Pétronille f +Petronius m +Petros m +Petroula f +Petru m +Petruccio m +Petrus m +Petruška f +Petruț m +Petter m +Petteri m +Petula f +Petunia f +Pétur m +Petur m +Petya mf +Peyton fm +Phaedra f +Phaedrus m +Phaenna f +Phaidra f +Phaidros m +Phanouel m +Phanuel m +Phanuhel m +Pharaildis f +Pharamond m +Phares m +Pharez m +Phebe f +Phelan m +Phelim m +Phelix m +Phemie f +Pheobe f +Pherenike f +Pherick m +Phestos m +Phil m +Philadelphia f +Philadelphos m +Philadelphus m +Philander m +Philandros m +Philbert m +Phile f +Philémon m +Philemon m +Philetos m +Philetus m +Philibert m +Philip m +Philipa f +Philipp m +Philippa f +Philippe m +Philippina f +Philippine f +Philippos m +Philippus m +Philis f +Phillida f +Phillip m +Phillipa f +Phillis f +Philo m +Philokrates m +Philomel f +Philomela f +Philomele f +Philomena f +Philomène f +Philon m +Philotheos m +Philoumene f +Phineas m +Phinees m +Phinehas m +Phineus m +Phirun m +Phobos m +Phocas m +Phoebe f +Phoebus m +Phoenix mf +Phoibe f +Phoibos m +Phokas m +Photina f +Photine f +Photios m +Phraates m +Phrixos m +Phrixus m +Phúc mf +Phunihel m +Phuntso mf +Phuntsok mf +Phương f +Phượng f +Phuong fm +Phyliss f +Phyllida f +Phyllis f +Pía f +Pia f +Piaras m +Pich fm +Piedad f +Pien f +Pier m +Piera f +Pierce m +Pierina f +Pierino m +Pierluigi m +Piero m +Pierpaolo m +Pièrre m +Pierre m +Pierrette f +Pierrick m +Piers m +Piet m +Pietari m +Pieter m +Pietra f +Pietrina f +Pietro m +Pietronella f +Piety f +Pihla f +Piia f +Pika mf +Pikachu m +Pilar f +Pili f +Pilib m +Pilirani mf +Pille f +Piloqutinnguaq f +Pilvi f +Pilypas m +Pim m +Pina f +Pınar f +Pinchas m +Pinelopi f +Ping mf +Pinhas m +Pinja f +Pino m +Pinocchio m +Pío m +Pio m +Piotr m +Pip mf +Pipaluk f +Piper f +Pipin m +Pippa f +Pippi f +Pippin m +Pipra f +Piran m +Piret f +Piri f +Piripi m +Piritta f +Pirjo f +Pirkko f +Pirooz m +Piroska f +Pirouz m +Piruz m +Pista m +Pisti m +Pistis f +Pit m +Pitambar m +Pitambara m +Pitikwahanapiwiyin m +Pitseolak fm +Pitsiulaaq fm +Pitter m +Pittiulaaq fm +Pius m +Pjetër m +Placid m +Plácida f +Placida f +Placide mf +Plácido m +Placido m +Placidus m +Plamen m +Plato m +Platon m +Pleasance f +Pleione f +Pleun mf +Plínio m +Plinio m +Plinius m +Pliny m +Ploutarchos m +Plouton m +Plutarch m +Pluto m +Pocahontas f +Poghos m +Pól m +Pòl m +Pol m +Pola f +Polat m +Poldi m +Polikarp m +Polina f +Polissena f +Pollie f +Pollux m +Polly f +Pollyanna f +Polona f +Polya f +Polycarp m +Polydeukes m +Polyhymnia f +Polykarpos m +Polymnia f +Polyxena f +Polyxene f +Polyxeni f +Pomare mf +Pomona f +Pompeius m +Pompeo m +Pompey m +Pompiliu m +Pompilius m +Pomponia f +Pomponius m +Poncio m +Pons m +Pontius m +Pontos m +Pontus m +Ponzio m +Pooja f +Poornima f +Popeye m +Poppy f +Porcia f +Porcius m +Porfirio m +Porfiriy m +Porfyriy m +Porntip f +Porphyrios m +Porsche f +Porter m +Portia f +Poseidon m +Posie f +Postumus m +Posy f +Potsʉnakwahipʉ m +Poul m +Poyraz m +Prabhakar m +Prabhakara m +Prabhat m +Prabhu m +Prabodh m +Prachi f +Pradeep m +Pradip m +Praise fm +Prakash m +Pramod m +Pramoda m +Pran m +Pranav m +Pranay m +Pranciškus m +Pranee f +Pranvera f +Prasad m +Prasanna m +Prasenjit m +Prasert m +Prashant m +Prashanth m +Praskovia f +Praskoviya f +Praskovya f +Pratap m +Prateek m +Pratibha f +Pratik m +Pratima f +Praveen m +Praveena f +Pravin m +Pravina f +Praxis f +Praxiteles m +Preben m +Precious f +Predrag m +Preecha m +Preethi f +Preeti f +Prem m +Prema f +Přemek m +Premislav m +Přemysl m +Premysl m +Presley fm +Preston m +Priam m +Priamos m +Priapos m +Priapus m +Price m +Pridbjørn m +Pridbor m +Pridon m +Pridoni m +Priidik m +Priit m +Priita f +Primitiva f +Primitivo m +Primitivus m +Primo m +Primož m +Primrose f +Primula f +Primus m +Prince m +Princess f +Pris f +Prisca f +Priscila f +Priscilla f +Priscille f +Priscus m +Priska f +Priskilla f +Prissy f +Pritha f +Priti f +Priya f +Priyanka f +Prochoros m +Prochorus m +Proinsias m +Prokhor m +Prokop m +Prokopios m +Prokopis m +Prokopiy m +Prokopy m +Prometheus m +Promise fm +Prosdocimus m +Prosdokimos m +Prosenjit m +Proserpina f +Proserpine f +Prosper m +Próspero m +Prospero m +Prosperus m +Proteus m +Pru f +Prudence fm +Prudencia f +Prudencio m +Prudentia f +Prudentius m +Prudenzio m +Prue f +Prune f +Prunella f +Pryce m +Pryderi m +Przemek m +Przemko m +Przemo m +Przemysł m +Przemysław m +Psamathe f +Psyche f +Ptah m +Ptolemaios m +Ptolemais f +Ptolemy m +Pua fm +Puabi f +Pualani f +Puanani f +Publius m +Puck mf +Puja f +Puk f +Puleng f +Puneet m +Punit m +Punita f +Pura f +Purdie mf +Purificación f +Purnama fm +Purnima f +Purushottam m +Purushottama m +Pushpa fm +Putera m +Puteri f +Putra m +Putri f +Putu mf +Pwyll m +Pylyp m +Pyong-Ho m +Pyotr m +Pyrrhos m +Pyrrhus m +Pyry m +Pythagoras m +Pythios m +Qadir m +Qaftzi'el m +Qamar mf +Qasim m +Qays m +Qemal m +Qemu'el m +Qiana f +Qiang m +Qillaq m +Qing fm +Qinglong m +Qinnuajuaq fm +Qismat m +Qiu mf +Quân m +Quanah m +Quang m +Quanna f +Quasimodo m +Queen f +Queenie f +Quentin m +Queralt f +Quetzalcoatl m +Quetzalli f +Quiana f +Quianna f +Quidel m +Quim m +Quin mf +Quincey m +Quinctilianus m +Quinctilius m +Quinctius m +Quinctus m +Quincy m +Quinlan mf +Quinn mf +Quintella f +Quinten m +Quintilian m +Quintilianus m +Quintilius m +Quintillus m +Quintín m +Quintin m +Quintina f +Quintino m +Quintinus m +Quintius m +Quinto m +Quinton m +Quintus m +Quique m +Quirijn m +Quirin m +Quirina f +Quirine f +Quirino m +Quirinus m +Quispe mf +Quitéria f +Quiteria f +Qulu m +Q'uq'umatz m +Qusay m +Quý fm +Quyên f +Quyền m +Quỳnh fm +Ra m +Raabi'a f +Raakel f +Raanan m +Rab m +Rabab f +Raban m +Rabbie m +Rabi m +Rabi'a f +Rabia f +Rabindra m +Rabiu m +Rachael f +Rachana f +Racheal f +Rachel f +Rachele f +Rachelle f +Rachid m +Rachida f +Rachna f +Rachyl f +Racław m +Racquel f +Ra'd m +Rada f +Radana f +Radboud m +Radcliff m +Radclyffe m +Rade m +Radek m +Radha fm +Radhika f +Radim m +Radimir m +Radinka f +Radka f +Radko m +Radmila f +Radmilo m +Radmir m +Radobod m +Radojka f +Radomil m +Radomił m +Radomiła f +Radomila f +Radomír m +Radomir m +Radomíra f +Radomira f +Radoš m +Radoslav m +Radoslava f +Radosław m +Radosława f +Radovan m +Radu m +Radulf m +Radúz m +Radzim m +Radzimierz m +Rae f +Raeburn m +Raegan f +Raelene f +Raelyn f +Raelynn f +Raf m +Rafa m +Rafa'el m +Rafaël m +Rafael m +Rafaela f +Rafail m +Rafał m +Rafayel m +Rafe m +Raffael m +Raffaela f +Raffaele m +Raffaella f +Raffaello m +Rafferty m +Rafinha m +Rafiq m +Rafiqa f +Raganhar m +Raganhildis f +Ragemprand m +Raghnaid f +Raghnailt f +Raghnall m +Raghu m +Raginald m +Raginhard m +Raginmar m +Raginmund m +Ragna f +Ragnailt f +Ragnall m +Ragnar m +Ragnarr m +Ragnbjǫrg f +Ragnfríðr f +Ragnheiðr f +Ragnheiður f +Ragnhild f +Ragnhildr f +Ragnhildur f +Ragnvald m +Ragnvaldr m +Raguel m +Raguhel m +Rahab f +Raharjo m +Rahat mf +Raheem m +Ráhel f +Rahel f +Rahela f +Rahim m +Rahma f +Rahman m +Rahmi m +Rahul m +Raibeart m +Ráichéal f +Raiden m +Raijin m +Raimo m +Raimon m +Raimond m +Raimonda f +Raimondas m +Raimondo m +Raimonds m +Raimund m +Raimunde f +Raimundo m +Rain fm +Raina f +Rainard m +Rainbow f +Raine fm +Rainer m +Rainerio m +Rainier m +Rais m +Raisa f +Raisel f +Raivo m +Raj m +Raja fm +Rajab m +Rajabu m +Rajani fm +Rajaram m +Rajeev m +Rajender m +Rajendra m +Rajesh m +Rajib m +Rajinder mf +Rajiv m +Rajiya f +Rajko m +Rajkumari f +Rajmund m +Rajneesh m +Rajni f +Rajnish m +Raju m +Rajya f +Rakel f +Rakesh m +Rakhi f +Rakiya f +Raleigh mf +Ralf m +Ralitsa f +Ralph m +Ralphie m +Raluca f +Ram m +Rama mf +Ramachandra m +Ramadan m +Ramadevi f +Ramadhani m +Ramakant m +Ramakanta m +Ramakrishna m +Raman m +Ramana m +Ramaz m +Ramazan m +Ramazi m +Rambabu m +Rambert m +Ramchandra m +Ramdas m +Rameses m +Ramesh m +Ramesha m +Rameshvara m +Rameshwar m +Ramesses m +Ramessu m +Ramiel m +Ramiro m +Ramirus m +Ramiz m +Ramkrishna m +Ramla f +Ramlah f +Ramón m +Ramon m +Ramóna f +Ramona f +Ramprasad m +Ramsay m +Ramses m +Ramsey m +Ramūnas m +Ramzan m +Ran f +Rana fm +Ranald m +Randa f +Randal m +Randall m +Randel m +Randell m +Randi f +Randolf m +Randolph m +Randulf m +Randúlfr m +Randy mf +Rangi m +Rani fm +Raniero m +Raniya f +Ranj m +Ranjeet m +Ranjit m +Ranka f +Ranko m +Ransu m +Ranulf m +Ranulph m +Ranya f +Raoul m +Raphaël m +Raphael m +Raphaela f +Raphaëlle f +Rapunzel f +Raquel f +Rareș m +Rasa f +Rəşad m +Raschelle f +Rasel m +Rasha f +Rashad m +Rashaun m +Rashawn m +Rashed m +Rasheed m +Rashid m +Rashida f +Räshit m +Rashmi fm +Rashn m +Rashnu m +Rasim m +Rasima f +Rasmus m +Rasoul m +Rastus m +Rasul m +Ratan m +Rathna fm +Rathnait f +Rathnat f +Ráðúlfr m +Rati f +Ratimir m +Ratislav m +Ratko m +Ratna fm +Ratnam mf +Ratomir m +Ratree f +Ratu f +Rauf m +Rauha f +Rauhel m +Raúl m +Raül m +Raul m +Rava f +Raven fm +Ravenna f +Ravi m +Ravid mf +Ravil m +Ravinder mf +Ravindra m +Ravza f +Rawda f +Rawiya f +Rawya f +Ray m +Raya f +Rayan mf +Rayen f +Rayhana f +Rayko m +Raylene f +Raymond m +Raymonde f +Raymund m +Raymundo m +Rayna f +Raynard m +Rayner m +Rayno m +Rayyan mf +Raz mf +Raza m +Raziel m +Raziela f +Răzvan m +Re m +Read m +Reagan fm +Réamann m +Réamonn m +Reanna f +Reannon f +Rearden m +Reba f +Rebeca f +Rébecca f +Rebecca f +Rebeccah f +Rebeccanne f +Rebecka f +Rebeckah f +Rebeka f +Rebekah f +Rebekka f +Recep m +Red m +Redd m +Redmond m +Redmund m +Reece m +Reed m +Reem f +Reena f +Reene f +Reenie f +Rees m +Reese mf +Reet f +Reeta f +Reetta f +Refik m +Refilwe mf +Reg m +Regan fm +Regana f +Regena f +Reggie m +Regin m +Regīna f +Regina f +Reginald m +Régine f +Regine f +Régis m +Regla f +Regula f +Régulo m +Regulus m +Rehav'am m +Rehema f +Rehman m +Rehoboam m +Řehoř m +Rei f +Reid m +Reidar m +Reidun f +Reign fm +Reigo m +Reijo m +Reilly mf +Reima m +Reimund m +Rein m +Reina f +Reinald m +Reinaldo m +Reindert m +Reine f +Reiner m +Reinhard m +Reinhardt m +Reinhild f +Reinhilde f +Reinhold m +Reinier m +Reino m +Reinoud m +Reinout m +Reis m +Réka f +Reko m +Rémann m +Remao m +Rembrandt m +Remedios f +Remei f +Rémi m +Remiel m +Remigio m +Remigius m +Remigiusz m +Remington mf +Remo m +Remus m +Rémy m +Remy mf +Ren mf +Rena f +Renae f +Renard m +Renārs m +Renat m +Renáta f +Renata f +Renatas m +Renāte f +Renate f +Renato m +Renatus m +Renaud m +Rene mf +René m +Renée f +Renee f +Reneer m +Renesmee f +Renia f +Renie f +Renita f +Rens m +Renske f +Renza f +Renzo m +Reşat m +Reshma f +Reshmi f +Reşide f +Reşit m +Retha f +Reto m +Reuben m +Reuel m +Reut f +Reuven m +Reva f +Revaz m +Revazi m +Reverie f +Rex m +Rexana f +Rexanne f +Reyes fm +Reyhan f +Reyhangül f +Reyna f +Reynaldo m +Reynard m +Reynaud m +Reynold m +Reza m +Reziko m +Rezső m +Rhachel f +Rhagouel m +Rhamesses m +Rhaphael m +Rhea f +Rheanna f +Rhebekka f +Rheie f +Rheinallt m +Rhett m +Rhetta f +Rhian f +Rhianna f +Rhiannon f +Rhianon f +Rhisiart m +Rhoda f +Rhode f +Rhodopis f +Rhodri m +Rhona f +Rhonda f +Rhonwen f +Rhosyn f +Rhouben m +Rhouth f +Rhoxane f +Rhydderch m +Rhys m +Ria f +Riacán m +Riad m +Riagán m +Rian m +Rianne f +Riannon f +Riaz m +Rica f +Ricard m +Ricarda f +Ričardas m +Ricardo m +Ričards m +Riccarda f +Riccardo m +Rich m +Richa f +Richárd m +Richard m +Richardine f +Richelle f +Richie m +Richmal f +Rick m +Rickard m +Rickey m +Ricki mf +Rickie m +Ricky m +Ricmod fm +Rico m +Ricohard m +Rida m +Riderch m +Ridge m +Ridha m +Ridley mf +Rıdvan m +Ridwan m +Ridwana f +Rien m +Rıfat m +Rifat m +Rifka f +Rígán m +Rigantona f +Rígbarddán m +Rigby m +Rigel m +Ríghnach f +Rigmor f +Rihanna f +Rihard m +Rihards m +Riika f +Riikka f +Riin f +Riina f +Riitta f +Rik m +Rika f +Rikard m +Rikárdó m +Rike f +Rikhard m +Rikke f +Rikki f +Riko f +Riku m +Rikuto m +Riley mf +Rilla f +Rim f +Rimantas m +Rin fm +Rina f +Rinaldo m +Rinat mf +Rini mf +Rino m +Rinus m +Riny mf +Rio mf +Ríoghán m +Ríoghnach f +Ríona f +Ríonach f +Riordan m +Ripley fm +Ris m +Rishi m +Riško m +Rišo m +Risteárd m +Risto m +Rīta f +Rita f +Ritchie m +Ritika f +Ritu f +Ritva f +Riva f +River mf +Rivka f +Rivqah f +Riya f +Rıza m +Rızvan m +Rizvan m +Rizwan m +Rizwana f +Roald m +Roan m +Roar m +Rob m +Robbe m +Robbie mf +Robby m +Robena f +Róbert m +Robert m +Roberta f +Robertas m +Roberte f +Robertina f +Roberto m +Roberts m +Robi m +Robin mf +Robina f +Robrecht m +Robyn f +Robynne f +Roc m +Rocco m +Roch m +Rochel f +Rochelle f +Rochus m +Rocío f +Rocky m +Rod m +Roddy m +Roderic m +Roderick m +Rodge m +Rodger m +Rodica f +Rodina f +Rodion m +Rodney m +Rodolf m +Rodolfito m +Rodolfo m +Rodolph m +Rodolphe m +Rodrigo m +Rodrigue m +Rodya m +Roel m +Roeland m +Roelof m +Roffe m +Rogelio m +Roger m +Rogério m +Roghayeh f +Rogier m +Rohan mf +Rohese f +Rohesia f +Rohit m +Roi m +Roibeárd m +Roimata f +Róis f +Róise f +Róisín f +Rok m +Rokas m +Roko m +Roksana f +Roksolana f +Rokuro m +Rokurō m +Rokurou m +Rokus m +Rolan m +Roland m +Rolande f +Rolando m +Roldán m +Roldão m +Rolf m +Rolland m +Rollo m +Rolo m +Rolph m +Roly m +Roma mf +Romà m +Romaeus m +Romain m +Romaine f +Román m +Roman m +Romána f +Romana f +Romane f +Romano m +Romanos m +Romāns m +Romanus m +Romão m +Romayne f +Romein m +Romeo m +Romeu m +Romey f +Romi f +Romilda f +Romilius m +Romilly mf +Romina f +Romola f +Romolo m +Romuald m +Romualda f +Romualdas m +Romualdo m +Romualds m +Rómulo m +Rômulo m +Romulus m +Romy f +Ron m +Rona f +Ronald m +Ronalda f +Ronaldo m +Rónán m +Ronan m +Ronda f +Ronen m +Rong fm +Roni fm +Ronit f +Ronja f +Ronne m +Ronnette f +Ronnie mf +Ronny m +Roope m +Roopertti m +Roos f +Roosevelt m +Roosje f +Roparzh m +Roque m +Rorie fm +Rory mf +Rós f +Ros f +Rósa f +Rosa f +Rosabel f +Rosabella f +Rosaire m +Rosalba f +Rosalee f +Rosaleen f +Rosália f +Rosalía f +Rosalia f +Rosalie f +Rosalin f +Rosalina f +Rosalind f +Rosalinda f +Rosaline f +Rosalva f +Rosalyn f +Rosalynne f +Rosa María f +Rosamond f +Rosamund f +Rosana f +Rosângela f +Rosangela f +Rosanna f +Rosannah f +Rosanne f +Rosaria f +Rosário f +Rosario fm +Rosaura f +Roscoe m +Rose f +Roseann f +Roseanne f +Roseline f +Rosella f +Roselle f +Roselyn f +Rose-Marie f +Rosemarie f +Rosemary f +Rosemonde f +Rosenda f +Rosendo m +Roser f +Rosetta f +Rosette f +Roshan mf +Roshanak f +Roshanara f +Rosheen f +Roshni f +Rosica f +Rosie f +Rosina f +Rosine f +Rosinha f +Rosita f +Rositsa f +Roslindis f +Roslyn f +Rosmarie f +Rosmunda f +Ross m +Rossa f +Rossana f +Rossella f +Röstäm m +Rostam m +Rostislav m +Rostom m +Roswell m +Roswitha f +Rosy f +Rotem mf +Rothaid f +Rotri m +Rouben m +Roul m +Rowan mf +Rowanne f +Rowen m +Rowena f +Rowina f +Rowland m +Rowley m +Röwşen m +Roxana f +Roxane f +Roxanna f +Roxanne f +Roxelana f +Roxie f +Roxy f +Roy m +Royal mf +Royale fm +Royalty f +Royce m +Roydon m +Royle m +Royse f +Royston m +Roz f +Róża f +Róza f +Roza f +Rozabela f +Rozália f +Rozalia f +Rozálie f +Rozālija f +Rozalija f +Rozaliya f +Rozanne f +Rozárie f +Rožė f +Rozenn f +Rozika f +Rozina f +Rózsa f +Rózsi f +Ru mf +Rúadán m +Ruadh m +Ruadhán m +Ruaidhrí m +Ruaidrí m +Ruairi m +Ruairí m +Ruairidh m +Ruaraidh m +Ruarc m +Ruarcc m +Ruaridh m +Ruba f +Rubab f +Rube m +Rubem m +Rúben m +Rubén m +Rubèn m +Ruben m +Rubena f +Rubens m +Rubina f +Rubinho m +Ruby f +Rubye f +Rudesind m +Rudi m +Rüdiger m +Rudīte f +Rudo mf +Rudolf m +Rūdolfs m +Rudolph m +Rudy m +Rudyard m +Rue f +Ruedi m +Ruf f +Rufaro f +Rufina f +Rufino m +Rufinus m +Rufus m +Ruggero m +Ruggiero m +Rugilė f +Ruh m +Rui m +Ruiha f +Rukiye f +Rukmini f +Rumbidzai f +Rumen m +Rumena f +Rumhilt f +Rumiana f +Rumpelstiltskin m +Rumpelstilzchen m +Rumyana f +Rúna f +Runa f +Rúnar m +Runar m +Rune m +Rúni m +Rupa f +Rupert m +Ruperta f +Ruperto m +Rupinder mf +Ruprecht m +Ruqayya f +Ruqayyah f +Rurik m +Ruşen mf +Rusiko f +Ruska f +Ruslan m +Ruslana f +Russ m +Russel m +Russell m +Rüstəm m +Rustam m +Rüstem m +Rusticus m +Rustik m +Rusty m +Rusudan f +Rusudani f +Rusul m +Rút f +Rut f +Rūta f +Ruta f +Rute f +Rutendo fm +Rutger m +Ruth fm +Ruthi f +Ruthie f +Rutt f +Ruuben m +Ruud m +Ruut f +Ruvim m +Ruvimu m +Ruwa f +Ruwan m +Ruxandra f +Ruy m +Ruya f +Ruža f +Ruzan f +Ruzanna f +Růžena f +Ružena f +Rüzgar m +Ruzha f +Ružica f +Ry m +Ryan m +Ryana f +Ryann f +Ryanne f +Ryder m +Ryhor m +Ryker m +Rylan m +Ryland m +Rylee fm +Ryleigh f +Ryley mf +Rylie fm +Ryo m +Ryō m +Ryōichi m +Ryoichi m +Ryōsuke m +Ryōta m +Ryota m +Ryou m +Ryouichi m +Ryousuke m +Ryouta m +Ryszard m +Ryū m +Ryūji m +Ryūnosuke m +Ryuu m +Ryuuji m +Ryuunosuke m +Sa'adah f +Saam m +Saana f +Saar fm +Saara f +Saba m +Sabah fm +Sabah ad-Din m +Sabahattin m +Sabahudin m +Şaban m +Šaban m +Sabas m +Sabbas m +Sabeen f +Sabela f +Sabella f +Sabellius m +Sabia f +Sabien f +Sabina f +Sabīne f +Sabine f +Sabino m +Sabinus m +Sable f +Sabri m +Sabrina f +Sabriye f +Sabriyya f +Sabryna f +Saburo m +Saburō m +Saburou m +Sacagawea f +Sacha mf +Sachairi m +Sacheverell m +Sachie f +Sachiko f +Sachin m +Sacnicte f +Sacnite f +Sa'd m +Sadaf f +Sadb f +Sadbh f +Saddam m +Säde f +Sadegh m +Sadeq m +Sadhbh f +Şadi m +Sa'di m +Sadi m +Sa'dia f +Sadia f +Sadie f +Sadık m +Sadiq m +Şadiye f +Saeed m +Saeeda f +Saeid m +Sæwine m +Safa mf +Safaa fm +Safaa' fm +Saffira f +Saffron f +Safi m +Safira f +Safiya f +Safiye f +Safiyyah f +Sága f +Saga f +Sage fm +Sagi m +Sagit f +Sahak m +Sahar f +Şahin m +Şahnaz f +Saibh f +Sa'id m +Sa'ida f +Saif m +Saif al-Din m +Saiful m +Saifullah m +Saige f +Saija f +Saima f +Saira f +Sait m +Sajjad m +Sajra f +Sakari m +Sakchai m +Sakhr m +Saki f +Sakiko f +Səkinə f +Sakina f +Sakine f +Sakineh f +Şakir m +Sakke m +Sakshi f +Saku m +Sakura f +Sakurako f +Sal fm +Salacia f +Saladin m +Salah m +Salah ad-Din m +Salah al-Din m +Salama mf +Salamatu f +Salambek m +Salamon m +Salathiel m +Salathihel m +Saldís f +Saleem m +Saleh m +Salem mf +Salena f +Salha f +Salih m +Saliha f +Salil m +Salim m +Salima f +Salina f +Salisu m +Salka f +Salli f +Sallie f +Sally f +Salma f +Salman m +Salme f +Salomão m +Salome f +Salomé f +Salomè f +Salomea f +Salomo m +Salomón m +Salomon m +Salomone m +Saltanat f +Salud f +Salut f +Salvador m +Salvator m +Salvatore m +Salvatrice f +Salvatrix f +Salvio m +Salvius m +Salvo m +Salwa f +Sam mf +Samad m +Samael m +Samanta f +Samantha f +Samar fm +Samara f +Samed m +Sameer m +Sameera fm +Samet m +Sami m +Samia f +Şamil m +Samina f +Samir m +Samira f +Samiya f +Samiye f +Sammi f +Sammie fm +Sammy mf +Samnang mf +Samo m +Samoil m +Samouel m +Sampath m +Sampo m +Samppa m +Sampson m +Samra f +Samson m +Samu m +Sámuel m +Samuel m +Samuela fm +Samuele m +Samuhel m +Samuil m +Samuilu m +Samuli m +Samvel m +Samwel m +Samwise m +Şan mf +Sana f +Sanaa f +Sanaz f +Sancha f +Sancheriv m +Sancho m +Sanctius m +Sanda f +Sandalio m +Sandeep m +Sander m +Sandford m +Sandhya f +Sandi m +Sandie f +Sandile m +Sandip m +Sándor m +Sandra f +Sandrine f +Sandro m +Sandu m +Sandy mf +Sanel m +Sanela f +Sanem f +Sanford m +Sang mf +Sang-Hun m +Sango f +Sani m +Saniyya f +Sanja f +Sanjana f +Sanjay m +Sanjaya m +Sanjeet m +Sanjeev m +Sanjib m +Sanjica f +Sanjin m +Sanjit m +Sanjiv m +Sankar m +Sanna f +Sanne f +Sanni f +Sans m +Sansa f +Sansone m +Santa f +Sante m +Santeri m +Santi m +Santiago m +Santina f +Santino m +Santo m +Santos m +Santtu m +Santuzza f +Sanya fm +Sanyi m +Saodat f +Saoirse f +Saori f +Saoul m +Sapir f +Sappheire f +Sapphira f +Sapphire f +Sappho f +Sára f +Sara f +Sarah f +Sarai f +Saraid f +Sárait f +Saral m +Sarala f +Saramama f +Sarangerel f +Saranna f +Saraswati f +Sarava m +Saray f +Sardar m +Sargis m +Sargon m +Sári f +Sari f +Sariah f +Sárika f +Sarika f +Sarina f +Sarit f +Sarita f +Šárka f +Sarkis m +Šarlota f +Sarmīte f +Sarnai f +Sarolt f +Sarolta f +Sarosh m +Sarpedon m +Sarra f +Sarrha f +Sarvesh m +Saša mf +Sascha mf +Sasha mf +Sashenka f +Sashi mf +Sashka f +Sasho m +Sashok m +Sasithorn f +Saška f +Saskia f +Saško m +Sašo m +Sassa f +Satan m +Satchel m +Sati f +Satish m +Satisha m +Satomi f +Satu f +Saturn m +Saturnina f +Saturnino m +Saturninus m +Saturnus m +Sauda f +Saúl m +Saul m +Saule f +Saulė f +Sauli m +Sauliā f +Saulius m +Saundra f +Sauron m +Sava m +Savanna f +Savannah f +Savaş m +Saveli m +Saveliy m +Savely m +Saveria f +Saverio m +Saveriu m +Savina f +Savino m +Savio m +Savitr m +Savitri f +Savva m +Savvas m +Sawda f +Sawney m +Sawsan f +Sawyer mf +Sawyl m +Saxa f +Saxon m +Sayaka f +Sayen f +Sayf ad-Din m +Sayfullah m +Saylor f +Saynab f +Sayuri f +Sayyid m +Sayyida f +Scaevola m +Scarlet f +Scarlett f +Scáthach f +Scevola m +Scheherazade f +Scholastica f +Scholastique f +Schuyler mf +Schwanhild f +Scilla f +Scot m +Scott m +Scottie m +Scotty m +Scout fm +Sé m +Seachlann m +Seachnall m +Sead m +Séafra m +Seaghdh m +Séaghdha m +Séamas m +Séamus m +Seán m +Sean m +Seanán m +Seanna f +Séarlait f +Séarlas m +Sebastiaan m +Sebastián m +Sebastian m +Sebastiana f +Sebastiano m +Sebastianus m +Sebastião m +Sébastien m +Sébastienne f +Sebastijan m +Sebastjan m +Šebestián m +Sebestyén m +Sébire f +Seble f +Şebnem f +Sechnall m +Secundinus m +Secundus m +Seda f +Sedef f +Sedna f +Seela f +Seema f +Seeta f +Seetha f +Sefa mf +Seffora f +Sefton m +Sefu m +Ségdae m +Segismundo m +Ségolène f +Segun m +Seher f +Şehrazad f +Şehrazat f +Şehzade m +Seija f +Seisyll m +Sejad m +Sekai f +Sekani m +Sekar m +Sekhar m +Sela f +Selah f +Selâhattin m +Selahattin m +Selby mf +Selena f +Selene f +Seleucus m +Seleukos m +Selig m +Selim m +Selima f +Selina f +Selini f +Selma f +Selman m +Selvaggia f +Selwyn m +Sem m +Semele f +Semen m +Semih m +Semiha f +Semion m +Semir m +Semiramis f +Semra f +Şemsettin m +Semyon m +Senán m +Senan m +Şenay f +Sence f +Sender m +Sendoa m +Seneca m +Şener m +Senga f +Sengphet fm +Senja f +Senka f +Senn m +Senna fm +Sennacherib m +Senne m +Şenol mf +Sens f +Senta f +Seo-A f +Seoc m +Seo-Hyeon f +Seo-Hyun f +Seoirse m +Seo-Joon m +Seo-Jun m +Seok m +Seona f +Seonag f +Seònaid f +Seong mf +Seong-Ho m +Seong-Hun m +Seong-Hyeon mf +Seong-Jin m +Seong-Min mf +Seong-Su m +Seòras m +Seòsaidh m +Seosamh m +Seo-Yeon f +Seo-Yun f +Sepeteus m +Séphora f +Sepi m +Sepp m +Seppe m +Seppel m +Sepphora f +Seppo m +September fm +Septima f +Septimius m +Septimus m +Sequoia fm +Sequoyah m +Sera f +Serafeim m +Serafim m +Serafima f +Serafin m +Serafina f +Serafino m +Seraiah m +Séraphin m +Seraphina f +Séraphine f +Seraphinus m +Serapion m +Serapis m +Serdar m +Seren f +Serena f +Serenity f +Serge m +Sergei m +Sergej m +Sergejs m +Sergey m +Serghei m +Sergi m +Sergine f +Sérgio m +Sergio m +Sergiu m +Sergius m +Sergiusz m +Sergo m +Serhan m +Serhat m +Serhii m +Serhiy m +Şerif m +Şerife f +Serik m +Serina f +Serkan m +Şermin f +Serpil f +Serrena f +Servaas m +Servaos m +Servatius m +Servius m +Sesto m +Set m +Setare f +Setareh f +Seth m +Sethunya f +Seti m +Setiawan m +Setsuko f +Settimio m +Settimo m +Seumas m +Seung mf +Seva m +Sevan fm +Sevara f +Sevastian m +Sevastyan m +Sevda f +Seve m +Sévère m +Severi m +Severiano m +Severianus m +Séverin m +Severin m +Severina f +Sévérine f +Séverine f +Severino m +Severinus m +Severo m +Severus m +Sevgi f +Sevil f +Sevim f +Sevinc f +Sevinç f +Sevinj f +Şevket m +Şevval f +Seward m +Seweryn m +Seweryna f +Sextilius m +Sextus m +Seydou m +Seyed m +Seyfettin m +Seyfullah m +Şeyma f +Seymour m +Seynabou f +Seyyed m +Seyyid m +Seyyit m +Sezim f +Sganyodaiyo m +Shaban m +Shabana f +Shabani m +Shabnam f +Shachar fm +Shad m +Shadi mf +Shadiya f +Shadrach m +Shadya f +Shae fm +Shaelyn f +Shafaqat mf +Shafiq m +Shafiqa f +Shahar fm +Shahd f +Shaheen m +Shahid m +Shahin m +Shahira f +Shahjahan m +Shahnaz fm +Shahnoza f +Shahram m +Shahrazad f +Shahriar m +Shahrivar m +Shahriyar m +Shahrizad f +Shahrokh m +Shahrukh m +Shahrzad f +Shahzad m +Shahzada m +Shai mf +Shailaja f +Shaima f +Shaimaa f +Shaina f +Shaindel f +Shaka m +Shaked fm +Shakeel m +Shakil m +Shakila f +Shakir m +Shakira f +Shakti fm +Shakuntala f +Shakur m +Shakura f +Shalev mf +Shalim m +Shalmaneser m +Shalom m +Shalva m +Sham'a f +Shamash m +Shameka f +Shamgar m +Shamika f +Shamil m +Shamira f +Shammuramat f +Shams fm +Shams ad-Din m +Shams al-Din m +Shamsuddin m +Shamus m +Shan f +Shana f +Shanae f +Shandar m +Shandiin fm +Shane m +Shaneka f +Shanelle f +Shanene f +Shanequa f +Shani fm +Shania f +Shanice f +Shanika f +Shaniqua f +Shaniya f +Shankar m +Shankara m +Shanna f +Shannah f +Shannen f +Shannon fm +Shanon fm +Shanta f +Shantae f +Shantanu m +Shantel f +Shantelle f +Shanthi f +Shanti f +Shapour m +Shapur m +Shaquila f +Shaquille m +Sharalyn f +Sharar m +Shareef m +Shari f +Shariah m +Sharif m +Sharifa f +Sharifah f +Sharise f +Sharla f +Sharleen f +Sharlene f +Sharma m +Sharmaine f +Sharmila f +Sharon f +Sharona f +Sharron f +Sharru-Ukin m +Sharyl f +Sharyn f +Shashi mf +Sha'ul m +Shaul m +Shaun m +Shauna f +Shavon f +Shavonne f +Shaw m +Shawn mf +Shawna f +Shawnda f +Shawnee f +Shay mf +Shaye fm +Shayla f +Shaylyn f +Shayma f +Shayna f +Shaynah f +Shayne m +Shazi f +Shazia f +Shea mf +She'alti'el m +Shealtiel m +Sheamus m +Sheard m +Sheba m +Sheela f +Sheelagh f +Sheena f +Sheenagh f +Shefqet m +Sheherazade f +Shehu m +Sheila f +Sheine f +Shekhar m +Shekinah f +Shel m +Shelach m +Shelagh f +Shelah m +Shelby mf +Sheldon m +Shelena f +Shelia f +Shell f +Shelley fm +Shelly fm +Shelomoh m +Shelton m +Shem m +Shemaiah m +Shema'yah m +Shemer m +Shemu'el m +Shena f +Shenandoah m +Sheona f +Shepherd m +Sher m +Sheraga m +Sherah f +Sherali m +Sheree f +Shereen f +Sheri f +Sheridan mf +Sherie f +Sherif m +Sherill f +Sherilyn f +Sherisse f +Sherley f +Sherlock m +Sherlyn f +Sherman m +Sherri f +Sherrie f +Sherry f +Sherwood m +Sheryl f +Sheryll f +Sherzod m +Shet m +Shevaun f +Shevon f +Shi mf +Shib m +Shichiro m +Shichirō m +Shichirou m +Shideh f +Shifra f +Shigeru m +Shihab m +Shikha f +Shikoba mf +Shila f +Shiloh mf +Shimmel m +Shimon m +Shimshon m +Shin m +Shingo m +Shin'ichi m +Shinju f +Shinobu mf +Shinsuke m +Shinta f +Shin'ya m +Shion fm +Shiori fm +Shiphrah f +Shir fm +Shira f +Shireen f +Shiri f +Shirin f +Shirlee f +Shirley fm +Shirli f +Shiro m +Shirō m +Shirou m +Shiv m +Shiva mf +Shivali f +Shivani f +Shizuka f +Shlomit f +Shlomo m +Shmuel m +Sho m +Shō m +Shobha f +Shōhei m +Shohre f +Shohreh f +Shokoufeh f +Shokufeh f +Sholto m +Shon m +Shona f +Shonda f +Shoshana f +Shoshannah f +Shōta m +Shota m +Shou m +Shouhei m +Shouta m +Shpresa f +Shprintza f +Shprintze f +Shprintzel f +Shqipe f +Shraga m +Shresth m +Shreya f +Shri f +Shridevi f +Shrinivas m +Shripati m +Shriram m +Shrivatsa m +Shu f +Shubham m +Shufen f +Shug m +Shuhrat m +Shui mf +Shukhrat m +Shukri m +Shukriya f +Shukriyya f +Shula f +Shulamit f +Shulamite f +Shulamith f +Shulammit f +Shulammite f +Shulmanu m +Shulmanu-Ashared m +Shun fm +Shura fm +Shweta f +Shyam m +Shyama mf +Shyamal m +Shyamala f +Shyla f +Siamion m +Siân f +Siana f +Siani f +Siarhei m +Siarl m +Siavash m +Siavush m +Sib m +Sibéal f +Sibilla f +Sibonakaliso mf +Sibongile f +Sibusisiwe f +Sibusiso m +Sibyl f +Sibylla f +Sibylle f +Sid m +Siddharth m +Siddhartha m +Siddhi f +Sıdıka f +Sidney mf +Sidonia f +Sidonie f +Sidónio m +Sidonius m +Sidony f +Sidsel f +Sieffre m +Siegbert m +Sieger m +Siegfried m +Sieghard m +Sieghild f +Sieglinde f +Siegmar m +Siegmund m +Siegward m +Siem m +Siemen m +Siemowit m +Siena f +Sienna f +Sierra f +Siet m +Sietse m +Sietske f +Sieuwerd m +Sievert m +Sif f +Sifiso m +Sigal f +Sigalit f +Sigdag m +Sigeberht m +Sigeweard m +Sigfrid mf +Sigfrido m +Sigfrøðr m +Sigge m +Sigi mf +Sigibert m +Sigifrid m +Sigihard m +Sigiheri m +Sigihild f +Sigilina f +Sigilind f +Sigimar m +Sigimund m +Sigismondo m +Sigismund m +Sigivald m +Sigiward m +Sigmund m +Sigmundr m +Sigmundur m +Signe f +Signy f +Signý f +Sigrid f +Sigríðr f +Sigrún f +Sigrun f +Sigsteinn m +Sigurd m +Sigurðr m +Sigurður m +Sigvard m +Siim m +Siiri f +Sikandar m +Sikke m +Sıla f +Silas m +Síle f +Sìleas f +Silja f +Silje f +Silke f +Sille f +Silouanos m +Silpa f +Silva f +Silvana f +Silvano m +Silvanus m +Silver mf +Silvester m +Silvestr m +Silvestra f +Silvestre m +Silvestro m +Sílvia f +Silvia f +Silvie f +Silvija f +Silvijo m +Sílvio m +Silvio m +Silviu m +Silvius m +Silviya f +Sima f +Simão m +Simas m +Simba m +Simcha fm +Šime m +Sime m +Simen m +Simeon m +Simge f +Simin f +Simion m +Simisola f +Simiyu m +Šimo m +Simo m +Šimon m +Simón m +Simon m +Šimona f +Simona f +Simonas m +Simone fm +Simonetta f +Simonette f +Simoni m +Simonides m +Simonne f +Simonu m +Simran fm +Šimun m +Sin m +Sin-Ahhi-Eriba m +Sinann f +Sinclair mf +Sindre m +Sindri m +Sindy f +Síne f +Sìne f +Sinéad f +Sìneag f +Sinem f +Singh m +Sini f +Sinikka f +Siniša m +Sinjin m +Sinta f +Siobhán f +Síofra f +Síomha f +Siôn m +Sionann f +Sione m +Sioned f +Siôr m +Siors m +Siorus m +Siothrún m +Sipho m +Siqiniq f +Siran f +Siranush f +Siri f +Siria f +Şirîn f +Şirin f +Siriporn f +Sirius m +Sirje f +Sirpa f +Sirvard f +Sirvart f +Sisay m +Sisel f +Sisko f +Sissel f +Sissie f +Sissinnguaq f +Sissy f +Sisto m +Sisu m +Sita f +Sitara f +Sitaram m +Sítheach m +Sithembile fm +Síthmaith f +Siti f +Sitora f +Sitti f +Si-U m +Siv f +Siva m +Şivan m +Sivan f +Sive f +Sivert m +Šiwa f +Siwan f +Siward m +Si-Woo m +Sixta f +Sixte m +Sixten m +Sixtine f +Sixto m +Sixtus m +Siyabonga m +Sizwe m +Sjaak m +Sjakie m +Sjang m +Sjarel m +Sjef m +Sjeng m +Sjoerd m +Sjors m +Sjra m +Sjurd m +Skadi f +Skaidrīte f +Skaistė f +Skanda m +Skaði f +Skenandoa m +Skënder m +Skender m +Skuld f +Sky fm +Skye f +Skyla f +Skylar fm +Skyler mf +Slađana f +Slade m +Sladjana f +Sláine fm +Slàine f +Slamet m +Slava mf +Slaven m +Slavěna f +Slavica f +Slavitsa f +Slávka f +Slavka f +Slavko m +Slavomír m +Slavomir m +Slavomíra f +Sławomir m +Sławomira f +Sloan fm +Sloane f +Slobodan m +Slobodanka f +Sluaghadhán m +Sly m +Smadar f +Smaragda f +Smaragdos m +Sméagol m +Smiljana f +Smiltė f +Smith m +Sneha f +Snežana f +Snezhana f +Snježana f +Snorre m +Snorri m +Snow f +Soan m +Sobeslav m +Sobiesław m +Sobiesława f +Socheat mf +Socheata fm +Socorro f +Sócrates m +Socrates m +Soffía f +Sofi f +Sofía f +Sofia f +Sofie f +Sofija f +Sofiya f +Sofoklis m +Sofron m +Sofronio m +Sofya f +Sohail m +Sohan m +Soheil m +Soheila f +Sohrab m +Sohvi f +Soile f +Soili f +Soini m +Sok mf +Sokha mf +Sokol m +Sokrates m +Sokratis m +Sol fm +Solange f +Sóldís f +Sole f +Soledad f +Soleil f +Solène f +Sóley f +Solfrid f +Soline f +Sólja f +Sollemnia f +Solly m +Solomiya f +Solomon m +Solon m +Solongo f +Sólveig f +Solveig f +Solveiga f +Solvej f +Sølvi f +Solvig f +Sōma m +Soma m +Somaya f +Somayeh f +Somboon m +Somchai m +Somerled m +Somhairle m +Sommer f +Somporn m +Somsak m +Sơn m +Soňa f +Sona f +Sonal f +Sonam fm +Sondra f +Sondre m +Soner m +Songül f +Sonia f +Sonic m +Sonja f +Sonje f +Sonnie m +Sonny m +Sons-ee-ah-ray f +Sonsoles f +Sonya f +Soodeh f +Soo-Jin fm +Sophea fm +Sopheap fm +Sophia f +Sophie f +Sophocles m +Sophokles m +Sophonisba f +Sophos m +Sophron m +Sophronia f +Sophronios m +Sophronius m +Sophus m +Sophy f +Sopio f +Sora fm +Soraia f +Soraya f +Sorcha f +Sören m +Søren m +Soren m +Sorin m +Sorina f +Sorley m +Sorne f +Soroush m +Sorrel f +Sosigenes m +Sosimo m +Soslan m +Soso m +Sosruko m +Sostrate f +Sōta m +Sota m +Soterios m +Soth m +Sothy mf +Sotiria f +Sotirios m +Sotiris m +Sotiroula f +Sotos m +Souad f +Soudeh f +Souleymane m +Souma m +Sousanna f +Souta m +Sovann mf +Sovanna fm +Sparrow mf +Spartacus m +Spartak m +Spas m +Špela f +Spencer m +Sperantia f +Spike m +Spiridon m +Spirit f +Spiro m +Spiros m +Spock m +Spomenka f +Spring f +Sprita f +Spurius m +Spyridon m +Spyridoula f +Spyro m +Spyros m +Sraosha m +Srećko m +Srečko m +Sree mf +Sri mf +Sridevi f +Srinivas m +Sriyani f +Sroel m +Ssanyu f +Staas m +Stace mf +Stacee f +Stacey fm +Staci f +Stacia f +Stacie f +Stacy fm +Staffan m +Stafford m +Ståle m +Stáli m +Stamatia f +Stamatios m +Stamatis m +Stamen m +Stan m +Stáňa f +Stana f +Stane m +Stanford m +Stanimir m +Stanislao m +Stanislas m +Stanislau m +Stanislav m +Stanislava f +Staņislavs m +Stanisław m +Stanisława f +Stanislova f +Stanislovas m +Stanka f +Stanko m +Stanley m +Star f +Starla f +Starr f +Stas m +Staša f +Stasė f +Stasia f +Stasya f +Stasys m +Stathis m +Stav fm +Stavros m +Stavroula f +Ste m +Steafán m +Steaphan m +Steen m +Steenie m +Stef m +Štefa f +Štefan m +Ștefan m +Stefán m +Stefan m +Ștefana f +Stefana f +Stefani f +Štefánia f +Ștefania f +Stefánia f +Stefania f +Stefanie f +Štefanija f +Stefanija f +Stefaniya f +Stefano m +Stefanos m +Stefans m +Stefanu m +Stefanus m +Stefcia f +Stefek m +Steffan m +Steffen m +Steffi f +Steffie f +Štefica f +Štefka f +Stefka f +Stein m +Steinar m +Steinarr m +Steingrímr m +Steingrímur m +Steinn m +Steinunn f +Stela f +Stelara f +Stelian m +Steliana f +Stelios m +Stella f +Stellan m +Sten m +Štěpán m +Stepan m +Stepane m +Štěpánka f +Steph fm +Stephan m +Stéphane m +Stephani f +Stephania f +Stéphanie f +Stephanie f +Stephanos m +Stephanus m +Stephany f +Stephen m +Steponas m +Steren f +Sterling m +Sterre f +Stevan m +Steve m +Steven m +Stevie mf +Stevo m +Stew m +Stewart m +Stian m +Stien f +Stig m +Stígandr m +Stigr m +Stiina f +Stijn m +Stina f +Stine f +Stiofán m +Stipan m +Stipe m +Stipo m +Stirling m +Stithulf m +Stjepan m +St John m +Stoja f +Stojan m +Stojko m +Stone m +Storm mf +Stormy f +Stošija f +Stoyan m +Stoyanka f +Stoyko m +Straton m +Stribog m +Stu m +Stuart m +Sture m +Styliani f +Stylianos m +Su fm +Su'ad f +Suad fm +Suada f +Subhash m +Su-Bin fm +Subira f +Subrahmanya m +Subramaniam m +Subramanian m +Suchart m +Sudarshan m +Sudarshana f +Sude f +Sudenaz f +Sudheer m +Sudhir m +Sue f +Suellen f +Su'en m +Suerius m +Suero m +Suha f +Suhail m +Suhaila f +Suharto m +Suhayl m +Süheyl m +Süheyla f +Suibhne m +Suibne m +Suijin m +Sujata f +Sujatha f +Sujay m +Su-Jin fm +Suk m +Sukarno m +Sukhbir m +Sukhdeep mf +Sukhon f +Sukhrab m +Sukhwinder mf +Sukie f +Suk-Ja f +Şükri m +Şükriye f +Sulabha f +Sulaiman m +Sulayman m +Şule f +Suleiman m +Süleýman m +Süleyman m +Sulisław m +Suljo m +Sullivan m +Sully m +Sulo m +Sultan mf +Sultana f +Sumaiya f +Suman mf +Sumantra m +Sumarliði m +Sumati f +Sumaya f +Sumayya f +Sumeet m +Sumeja f +Sümeyye f +Sumiko f +Sumire f +Sumit m +Summanus m +Summer f +Sumon m +Suna f +Sunan mf +Sunčana f +Sunčica f +Sundar m +Sundara m +Sunday mf +Sunder m +Sundri m +Sune m +Sung mf +Sung-Ho m +Sung-Hoon m +Sung-Hyun mf +Sung-Jin m +Sung-Min mf +Sung-Soo m +Suni m +Sunil m +Sunita f +Sunitha f +Suniti f +Sunngifu f +Sunnifa f +Sunniva f +Sunny fm +Sunshine f +Suoma f +Suraj m +Suraya f +Surayya f +Surendra m +Suresh m +Suresha m +Süreyya f +Suri f +Surinder mf +Suriya m +Surya m +Susan f +Susana f +Susanita f +Susann f +Susanna f +Susannah f +Susanne f +Susanoo m +Suse f +Susheela f +Sushil m +Sushila fm +Susi f +Susie f +Susila m +Susilo m +Susumu m +Sutekh m +Suus f +Suvi f +Suz f +Suzan f +Suzana f +Suzanna f +Suzanne f +Suze f +Suzette f +Suzi f +Suzie f +Suzu f +Suzume f +Suzy f +Svajonė f +Svana f +Svanhild f +Svanhildr f +Svanhildur f +Svante m +Svantepolk m +Svantovit m +Svarog m +Svatava f +Svätopluk m +Svatopluk m +Svatoslav m +Svatoslava f +Svea f +Svein m +Sveinn m +Sven m +Svend m +Svenja f +Sverre m +Sverrir m +Sveta f +Svetka f +Svetla f +Světlana f +Svetlana f +Svetomir m +Svetopolk m +Svetoslav m +Svetovid m +Sveva f +Sviatlana f +Sviatoslav m +Svit m +Svitlana f +Svjetlana f +Svyatopolk m +Svyatoslav m +Swanahilda f +Swanhild f +Swanhilda f +Swanhilde f +Swapan m +Swapna f +Swapnil m +Swaran mf +Swarna mf +Swathi f +Swati f +Sweeney m +Świętomierz m +Świętopełk m +Świętosław m +Swiðhun m +Swithin m +Swithun m +Syarhey m +Sybella f +Sybil f +Sybilla f +Sybille f +Syd mf +Sydne f +Sydnee f +Sydney fm +Sydnie f +Syed m +Syeda f +Sylva f +Sylvain m +Sylvaine f +Sylvan m +Sylvana f +Sylvanus m +Sylvester m +Sylvestre m +Sylvette f +Sylvi f +Sylvia f +Sylviane f +Sylvianne f +Sylvie f +Sylwester m +Sylwia f +Symeon m +Symeonu m +Symon m +Symphony f +Synne f +Synnöve f +Synnøve f +Syntyche f +Syuzanna f +Szabina f +Szabolcs m +Szandra f +Szczepan m +Szczęsny m +Szebasztián m +Szilárd m +Szilveszter m +Szilvia f +Szofi f +Szófia f +Szonja f +Szymon m +Taalay m +Taaniel m +Taavet m +Taavetti m +Taavi m +Tabassum mf +Tabatha f +Tabby f +Tabea f +Tabita f +Tabitha f +Tacey f +Tacita f +Tácito m +Tacito m +Tacitus m +Tad m +Tadala f +Tadas m +Taddeo m +Tadeáš m +Tadej m +Tadeja f +Tadeo m +Tadesse m +Tadeu m +Tadeusz m +Tadg m +Tadgán m +Tadgh m +Tadhg m +Tadhgán m +Tadija m +Taegan f +Tafadzwa mf +Tafari m +Taffy m +Tage m +Taguhi f +Tagwanibisan f +Taha m +Tahel f +Taher m +Tahir m +Tahira f +Tahirə f +Tahire f +Táhirih f +Tahlako m +Tahlia f +Tahmasp m +Tahmid m +Tahmina f +Tahmineh f +Tahmuras m +Tahnee f +Tähti f +Tahvo m +Tai mf +Taichi m +Taide f +Taika f +Taiki m +Taimi f +Taimo m +Taina f +Tairdelbach m +Taís f +Taisa f +Taisia f +Taisiya f +Taisto m +Taiwo mf +Taj m +Taja f +Tajana f +Tajda f +Tajeddigt f +Tajra f +Tajuana f +Takahiro m +Takako f +Takara mf +Takashi m +Takehiko m +Takeshi m +Takhmaspa m +Takhma Urupi m +Taki m +Takis m +Takondwa mf +Takouhi f +Takuma m +Takumi m +Takuto m +Takuya m +Tal mf +Talaat m +Tal'at m +Talât m +Talat m +Talatu f +Talbot m +Talfryn m +Tälgat m +Talgat m +Talha m +Tali f +Talia f +Talib m +Taliba f +Taliesin m +Talin f +Taline f +Talip m +Talisha f +Talita f +Talitha f +Tallak m +Tallulah f +Talmai m +Talon m +Talulla f +Talya f +Tam mf +Tama m +Tamandani mf +Tamanna f +Tamar f +Tamāra f +Tamara f +Tamari f +Tamás m +Tamati m +Tamatoa m +Tamaz m +Tamazi m +Tambudzai f +Tameka f +Tamela f +Tamera f +Tamerlane m +Tàmhas m +Tami f +Tamia f +Tamid m +Tamika f +Tamiko f +Tamila f +Tamir m +Tammara f +Tammaro m +Tammi f +Tammie f +Tammuz m +Tammy f +Tamra f +Tamrat m +Tamsen f +Tamsin f +Tamsyn f +Tamya f +Tamzen f +Táňa f +Tancred m +Tancredi m +Tancredo m +Tāne m +Taneka f +Tanel m +Taneli m +Taner m +Tanesha f +Tangaroa m +Tangi m +Tanguy m +Tangwystl f +Tânia f +Tania f +Taniel m +Tanika f +Taniqua f +Tanis f +Tanisha f +Tanit f +Tanith f +Taniya f +Tanja f +Tanner m +Tansy f +Tanu f +Tanvi f +Tanya f +Tanzi f +Tao m +Taonga fm +Tapani m +Tapio m +Tapiwa f +Taqqiq mf +Tara f +Tarah f +Təranə f +Tarana f +Taranis m +Taras m +Tarasios m +Tarben m +Tarek m +Tarhunna m +Tarhunz m +Tariel m +Tarık m +Tarik m +Tariku m +Tarina f +Tariq m +Tariro f +Tarja f +Tarmo m +Taro m +Tarō m +Taron m +Tarou m +Tarqik mf +Tarquin m +Tarquinius m +Taru f +Taryn f +Tarzan m +Tase m +Tasgall m +Tasha f +Tashi mf +Tashina f +Tashlultum f +Tasi fm +Tasia f +Taskill m +Tasnim f +Tasoula f +Tasunka m +Tata m +Taťána f +Tatanka m +Tate m +Tatenda mf +Tatev f +Tatiana f +Tatianna f +Tatianus m +Tatienne f +Tatius m +Tatjana f +Tatsiana f +Tatsuya m +Tatton m +Tatu mf +Tatum fm +Tatyana f +Tatyanna f +Tau m +Taufik m +Tauno m +Taurai mf +Tautvydas m +Tavish m +Tavita m +Tavon m +Tawfiq m +Tawnee f +Tawnie f +Tawny f +Tawnya f +Tayanita f +Tayeb m +Tayla f +Taylan m +Tayler fm +Taylor mf +Taymuraz m +Tayyib m +Tayyip m +T'Challa m +Tea f +Teagan f +Teague m +Teal f +Teale f +Teàrlach m +Teàrlag f +Teasag f +Tebogo fm +Teboho m +Teca f +Tecla f +Tecumseh m +Ted m +Teddie mf +Teddy m +Tedore m +Teemu m +Tegan f +Tegid m +Tegwen f +Tehila f +Teige m +Teigue m +Teija f +Teimuraz m +Teimurazi m +Teja f +Tejal f +Tekakwitha f +Tekla f +Tekoa m +Tel m +Telesforo m +Télesphore m +Telesphoros m +Telesphorus m +Tellervo f +Telma f +Telman m +Telmo m +Teman m +Temel m +Temir m +Temitope fm +Temo m +Temperance f +Tempest f +Temple mf +Temüjin m +Temujin m +Temür m +Temur m +Temuri m +Temüülen mf +Tena f +Tendai mf +Tengiz m +Tenney m +Tennyson m +Tenskwatawa m +Tenzin mf +Tenzing mf +Téo m +Teo mf +Teobaldo m +Teodor m +Teodóra f +Teodora f +Teodoro m +Teodors m +Teodosija f +Teodósio m +Teodosio m +Teodozja f +Teódulo m +Teofil m +Teófila f +Teofila f +Teófilo m +Teofilo m +Te'oma m +Teona f +Teppo m +Tera f +Terach m +Terah m +Terance m +Tercero m +Tércia f +Tércio m +Tere f +Terell m +Terence m +Terenti m +Terentius m +Terentiy m +Terenzio m +Teresa f +Terese f +Teresia f +Teresinha f +Teresita f +Teréz f +Tereza f +Terézia f +Terezie f +Terezija f +Terezinha f +Terhi f +Terho m +Teri f +Terje mf +Terminus m +Tero m +Terpsichore f +Terra f +Terrance m +Terrell m +Terrence m +Terri f +Terrie f +Terry mf +Tertia f +Tertius m +Terttu f +Terzo m +Tesfaye m +Teshub m +Tesni f +Tess f +Tessa f +Tessan f +Tessie f +Tessouat m +Tethys f +Tetiana f +Tetsuya m +Tetty f +Tetyana f +Teun m +Teuna f +Teunis m +Teuta f +Teuvo m +Tevfik m +Tevin m +Tevita m +Tevye m +Tewodros m +Tex m +Tezcatlipoca m +Thabang mf +Thabani m +Thabo m +Thad m +Thaddaeus m +Thaddaios m +Thaddeus m +Thaís f +Thaïs f +Thais f +Thaksin m +Thaleia f +Thales m +Thalia f +Thalita f +Thamar f +Thamarai f +Thamina f +Thamir m +Thana f +Thanasis m +Thanatos m +Thancmar m +Thandeka f +Thandi f +Thandiwe f +Thando mf +Thane m +Thanh fm +Thankarat m +Thankful f +Thanos m +Thảo fm +Tharindu m +Thatcher m +Thato mf +Théa f +Thea f +Theano f +Thecla f +Theda f +Thei m +Theia f +Thekla f +Thelma f +Thelonius m +Thema f +Themar f +Themba m +Themis f +Themistocles m +Themistokles m +Themistoklis m +Théo m +Theo m +Theobald m +Theocritus m +Theoderich m +Theodoar m +Theodoard m +Theodoor m +Theodor m +Théodora f +Theódóra f +Theodora f +Théodore m +Theodore m +Theodoric m +Theodoricus m +Theodoros m +Theodorus m +Theodosia f +Theodosios m +Theodosius m +Theodotos m +Theodotus m +Theodoulos m +Theodulus m +Theofania f +Theofanis m +Theofilos m +Theofilus m +Theofylaktos m +Theognostos m +Theokleia f +Theokritos m +Theophanes m +Theophania f +Theophil m +Theophila f +Théophile m +Theophile f +Theophilos m +Theophilus m +Theophylaktos m +Theothelm m +Théotime m +Theotimos m +Theotimus m +Theotleip m +Theotman m +Thera f +Therapon m +Therasia f +Theresa f +Thérèse f +Therese f +Theresia f +Theron m +Thersa f +Theseus m +Theudelinda f +Theudemar m +Theudhar m +Theudobald m +Theudofrid m +Theudoricus m +Theun m +Theunis m +Theutrich m +Thi f +Thị f +Thiago m +Thibaud m +Thibault m +Thibaut m +Thiemo m +Thierry m +Thietmar m +Thiha m +Thijmen m +Thijs m +Thilini f +Thilo m +Thiri f +Thirza f +Thisbe f +Þiudreiks m +Thoko mf +Thokozani mf +Thom m +Thoma m +Thomas m +Thomasina f +Þone f +Þór m +Thor m +Þóra f +Thora f +Þórarinn m +Thorben m +Þórbjǫrg f +Þorbjörg f +Þórbjǫrn m +Þorbjörn m +Thorbjörn m +Thorbjørn m +Thorborg f +Thorburn m +Þórdís f +Thore m +Þórfastr m +Þórfinnr m +Þórfreðr m +Þórfríðr f +Þórgeirr m +Þórgísl m +Þórgnýr m +Þórhildr f +Þórhildur f +Þórir m +Þórketill m +Þórleifr m +Þórleikr m +Thorley m +Þórmóðr m +Thornton m +Þórný f +Þórr m +Thorstein m +Þórsteinn m +Þorsteinn m +Thorsten m +Þórunn f +Thorvald m +Þórvaldr m +Þórveig f +Þórví f +Thoth m +Thoukydides m +Thracius m +Þróndr m +Thrud f +Þrúðr f +Þrúður f +Þrymr m +Thu f +Thuần m +Thucydides m +Thulani m +Thulile f +Þunor m +Thurayya f +Thurstan m +Thusitha fm +Thutmose m +Thùy f +Thyge m +Thyra f +Þýri f +Thyrza f +Tia f +Tiago m +Tiamat f +Tian m +Tiana f +Tianna f +Tiara f +Tiare f +Tiarnach m +Tiarnán m +Tibby fm +Tiberiu m +Tiberius m +Tibor m +Tiborc m +Tibúrcio m +Tiburcio m +Tiburtius m +Tichaona m +Tidir f +Tiede m +Tiedemann m +Tielo m +Tiên f +Tiernan m +Tierney m +Tierra f +Ties m +Tifawt f +Tiffani f +Tiffany f +Tiffiny f +Tiger m +Tigernach m +Tigernán m +Tighe m +Tighearnach m +Tighearnán m +Tiglath-Pileser m +Tigran m +Tigranes m +Tihana f +Tihomir m +Tihomira f +Tiia f +Tiidrik m +Tiina f +Tiit m +Tiitus m +Tiiu f +Tijan m +Tijana f +Tijmen m +Tijn m +Tijs m +Tikhomir m +Tikhon m +Tikva f +Til f +Tilda f +Tilde f +Tilen m +Till m +Tillie f +Tillo m +Tilly f +Tilo m +Tim m +Timaeus m +Timaios m +Tímea f +Timée m +Timéo m +Timeo m +Timeus m +Timmy m +Timo mf +Timofei m +Timofey m +Timon m +Timotei m +Timotej m +Timoteo m +Timoteus m +Timotha f +Timothé m +Timothea f +Timothée m +Timothei m +Timotheos m +Timotheus m +Timothy m +Timoti m +Timour m +Timuçin m +Timur m +Tin m +Tina f +Tinashe mf +Tinatin f +Tinatini f +Tindra f +Tine fm +Tinek m +Tineke f +Tinkara f +Tino m +Tintin m +Tinuviel f +Tionge fm +Tipene m +Tiphaine f +Tiphanie f +Tiras m +Tiriaq fm +Tiril f +Tirta mf +Tirto m +Tirtza f +Tirtzah f +Tirzah f +Tisha f +Tisiphone f +Tit m +Titania f +Titas m +Titian m +Titiana f +Titianus m +Titilayo f +Tito m +Titos m +Titrit f +Titty f +Titu m +Titus m +Tivadar m +Tivoli mf +Tiw m +Tiwonge fm +Tiyamike fm +Tiziana f +Tiziano m +Tjaard m +Tjaart m +Tjaša f +Tjaž m +Tjeerd m +Tlalli f +Tlaloc m +Toal m +Tobia m +Tobiah m +Tobiáš m +Tobias m +Tobiasz m +Tobin m +Tobit m +Tobith m +Toby mf +Tochukwu mf +Tod m +Todd m +Tódor m +Todor m +Todorka f +Tófa f +Tófi m +Tögöldör m +Tohil m +Toiba f +Toinette f +Toini f +Toirdhealbhach m +Toiréasa f +Toivo m +Tóki m +Tola mf +Tolga m +Tollak m +Tolly m +Tom mf +Toma fm +Tómas m +Tòmas m +Tomás m +Tomáš m +Tomàs m +Tomas m +Tomasa f +Tomaso m +Tomass m +Tomasz m +Tomaž m +Tomé m +Tomek m +Tomer m +Tomi m +Tomica m +Tomiko f +Tomila f +Tomine f +Tomislav m +Tomislava f +Tommaso m +Tommi m +Tommie mf +Tommy m +Tomo m +Tomoko f +Tomomi fm +Tömörbaatar m +Tomos m +Toms m +Ton m +Tonalli mf +Tonatiuh m +Tonći m +Tonči m +Tondra f +Tone mf +Tóni m +Toni mf +Tonia f +Tonina f +Toninho m +Tonino m +Tonio m +Tõnis m +Tonje f +Tonka f +Toño m +Tõnu m +Tony m +Tonya f +Toomas m +Toon m +Tooru m +Topaz f +Topher m +Topi m +Topias m +Topsy f +Topʉsana f +Tor m +Tora f +Torben m +Torbjørg f +Torbjörn m +Torbjørn m +Torborg f +Torcall m +Torcuil m +Torcull m +Tordis f +Tore m +Torfinn m +Torgeir m +Torger m +Torgils m +Torgny m +Torhild f +Tori f +Toria f +Toribio m +Toril f +Torild f +Torill f +Torin m +Torkel m +Torleif m +Tormod m +Tornike m +Torny f +Torø f +Toros m +Torquil m +Torstein m +Torsten m +Torsti m +Tōru m +Torunn f +Torvald m +Tory mf +Tosahwi m +Toše m +Toshe m +Toshiaki m +Toshiko f +Tosia f +Tottie f +Totty f +Toufik m +Toussaint m +Toutatis m +Touthmosis m +Toutorīxs m +Tova f +Tovah f +Tove f +Tovi m +Tovia mf +Toviyyah m +Toya f +Toygar m +Toyin fm +Trace m +Tracee f +Tracey fm +Traci f +Tracie f +Tracy fm +Trafford m +Trahaearn m +Trahern m +Trai m +Traian m +Traianus m +Trajan m +Trajanka f +Trajko m +Trang f +Tranter m +Traudl f +Traugott m +Travers m +Travis m +Trayan m +Treasa f +Treasach m +Treasure f +Trecia f +Trees f +Trefor m +Trena f +Trendafilka f +Trent m +Trenton m +Tresha f +Tressach m +Trev m +Trevelyan m +Trevon m +Trevor m +Trey m +Tri mf +Trí m +Tria f +Triana f +Tricia f +Trifon m +Triin f +Triinu f +Trijntje f +Trina f +Trine f +Trinh fm +Trini f +Trinidad fm +Trinity f +Tríona f +Trish f +Trisha f +Trishna f +Trista f +Tristán m +Tristan m +Tristão m +Tristen mf +Tristin mf +Triston m +Tristram m +Trix f +Trixie f +Troels m +Trofim m +Troilos m +Troilus m +Trokhym m +Trond m +Trophimos m +Trophimus m +Troy m +Trúc mf +Trude f +Trudi f +Trudie f +Trudy f +Trueman m +Truls m +Truman m +Truus f +Tryfon m +Tryggve m +Tryggvi m +Trygve m +Trym m +Tryphaina f +Tryphena f +Tryphon m +Tryphosa f +Trystan m +Tsagadai m +Tsering mf +Tsetseg f +Tsetsiliya f +Tshepo mf +Tshering mf +Tsholofelo f +Tsila f +Tsimafei m +Tsisana f +Tsisia f +Tsiuri f +Tsubaki f +Tsubame f +Tsubasa mf +Tsukiko f +Tsukuyomi m +Tsveta f +Tsvetan m +Tsvetana f +Tsvetanka f +Tsvetko m +Tswb m +Tu mf +Tú mf +Tuân m +Tuana f +Túathal m +Tuathflaith f +Tuba f +Tucker m +Tudful f +Tudor m +Tudur m +Tudwal m +Tue m +Tufayl m +Tugay m +Tuğba f +Tuğçe f +Tuğrul m +Tʉhʉyakwahipʉ m +Tuija f +Tuileflaith f +Tukulti-Apil-Esharra m +Tukulti-Ninurta m +Tülay f +Túlio m +Tulio m +Tullia f +Tullio m +Tullius m +Tullus m +Tully m +Tulugaq mf +Tumaini fm +Tumelo mf +Tunç m +Tuncay m +Tünde f +Tunde m +Tündér f +Tuomas m +Tuomo m +Tuor m +Tupaarnaq f +Túpac m +Tupac m +Tupaq m +Tural m +Ture m +Turgay m +Turibius m +Turid f +Turin m +Turlough m +Turnus m +Tushar m +Tuta f +Tutankhamon m +Tutgual m +Tutku fm +Tuukka m +Tuula f +Tuule f +Tuuli f +Tuulikki f +Tuur m +Tuure m +Tuva f +Tuvya m +Tuyến f +Tuyết f +Tvrtko m +Twila f +Twm m +Twyla f +Txomin m +Ty m +Tybalt m +Tyberiy m +Tyche f +Tycho m +Tychon m +Tydfil f +Tye m +Tyge m +Tygo m +Tyko m +Tyla f +Tylar m +Tyler m +Tylor m +Tymek m +Tymofiy m +Tymon m +Tymoteusz m +Tyoma m +Tyquan m +Týr m +Tyr m +Tyra f +Tyree m +Tyreek m +Tyrell m +Tyrese m +Tyrik m +Tyriq m +Tyrique m +Tyron m +Tyrone m +Tyrrell m +Tyshawn m +Tyson m +Tytus m +Tyyne f +Tzafrir m +Tzefanyah m +Tzeitel f +Tzidkiyahu m +Tzila f +Tzillah f +Tzion m +Tzipora f +Tziporah f +Tzipporah f +Tzivah m +Tzivia f +Tzivya f +Tzivyah f +Tzofiya f +Tzufit f +Tzuri'el m +Tzvi m +Tzvia f +Uaithne m +Ualan m +Uberto m +Ubirajara m +Ubon f +Uche mf +Uchenna mf +Udane f +Udi m +Udo mf +Uduak mf +Uduakobong mf +Ueli m +Uffe m +Ufuk m +Ufuoma mf +Ugène m +Ugnė f +Ugo m +Ugochi f +Ugochukwu m +Uğur m +Uhtric m +Uhuru m +Uiara f +Uʻilani fm +Uilleag m +Uilleam m +Uilliam m +Uinseann m +Ùisdean m +Ujarak mf +Ujaraq m +U-Jin m +Uju f +Ukaleq f +Ukko m +Ula f +Uladzimir m +Ulderico m +Ulf m +Úlfr m +Úlfur m +Uliana f +Ulick m +Ulises m +Ulisse m +Ulisses m +Ülkü f +Ulla f +Ülle f +Ulli mf +Ulloriaq mf +Ülo m +Ulric m +Ulrica f +Ulrich m +Ulriikka f +Ulrik m +Ulrika f +Ulrike f +Ulrikke f +Ultán m +Ülvi m +Ulvi m +Ulviye f +Ülviyyə f +Ulya f +Ulyana f +Ulyssa f +Ulysse m +Ulysses m +Uma f +Umar m +Umaru m +Umberto m +Ume f +Umeko f +Umid m +Umida f +Ümit m +Ümran m +Umran m +Umukoro m +Umut mf +Úna f +Ùna f +Unai m +Unathi mf +Undine f +Uni m +Unice f +Unique f +Unity f +Unn f +Unni f +Unnr f +Unnur f +Uno m +Uolevi m +Upasana f +Upendo f +Upton m +Ural m +Urania f +Uranus m +Urbain m +Urban m +Urbana f +Urbano m +Urbanus m +Urbgen m +Urbonas m +Urd f +Urh m +Urho m +'Uri m +Uri m +Uria mf +Uriah m +Urias m +Uriasz m +Uriel m +Urien m +Urijah m +'Uriyah m +'Uriy'el m +Urmas m +Urmazd m +Uros m +Uroš m +Urpi f +Urs m +Ursa f +Ursel f +Ursella f +Ursinus m +Urška f +Úrsula f +Uršula f +Ursula f +Ursule f +Ursus m +Urszula f +Urtė f +Urðr f +Urve f +Urvi f +Usagi f +Usama m +Uschi f +Usha f +Ushas f +Usko m +Usman m +Usoa f +Ustinya f +Uta f +Utari f +Ute f +Uther m +Uthman m +Uthyr m +Utku m +Uttar m +Uttara mf +Utu m +Utz m +Uwe m +Uxía f +Uxío m +Uxue f +Uyanga f +Uzi m +Uzma f +Uzochi mf +Uzoma mf +Uzzi m +Uzziah m +Uzziel m +'Uzziyyah m +Vaast m +Václav m +Václava f +Vadik m +Vadim m +Vadimir m +Vahagn m +Vahan m +Vahid m +Vahide f +Vahit m +Vaihere f +Vaike f +Vaimiti f +Väinämöinen m +Väinö m +Vaishnavi f +Vaitiare f +Vaiva f +Vakha m +Vakhtang m +Val mf +Valarie f +Valary f +Valda f +Valdas m +Valdemar m +Valdemaras m +Valdimárr m +Valdís f +Valdis m +Vale f +Valencia f +Valens m +Valent m +Valente m +Valentijn m +Valentim m +Valentín m +Valentin m +Valentína f +Valentīna f +Valentina f +Valentinas m +Valentine mf +Valentinian m +Valentinianus m +Valentino m +Valentīns m +Valentinus m +Valentyn m +Valentýna f +Valentyna f +Valère m +Valeri m +Valéria f +Valèria f +Valeria f +Valérian m +Valerian m +Valeriana f +Valériane f +Valeriano m +Valerianus m +Valérie f +Valerie f +Valērija f +Valerija f +Valērijs m +Valério m +Valerio m +Valeriu m +Valerius m +Valeriy m +Valeriya f +Valero m +Valéry m +Valery m +Valeryia f +Valeska f +Vali m +Valiantsina f +Valko m +Valkyrie f +Valli f +Valora f +Valorie f +Valpuri f +Valquíria f +Válter m +Valter m +Valþjófr m +Valto m +Valtteri m +Valya fm +Vân fm +Văn m +Van m +Vana f +Vanadís f +Vanaheo'o f +Vanamo f +Vance m +Vancho m +Vančo m +Vanda f +Vanesa f +Vanessa f +Vanessza f +Vangel m +Vangelija f +Vangelis m +Vanja mf +Vanna fm +Vanni m +Vano m +Vanya m +Vappu f +Varda f +Vardah f +Vardan m +Vardo f +Varduhi f +Varfolomei m +Varfolomey m +Varg m +Varghese m +Varinia f +Varinius m +Varius m +Varlaam m +Varlam m +Varnava m +Varpu f +Varsha f +Vartan m +Vartolomej m +Vartouhi f +Varuna m +Varvara f +Varya f +Vasa f +Vasant m +Vasanta m +Vasanti f +Vasco m +Vašek m +Vashti f +Vasia f +Vasil m +Vasile m +Vasileios m +Vasili m +Vasilica f +Vasilică m +Vasilii m +Vasilija f +Vasilije m +Vasilijus m +Vasiliki f +Vasilios m +Vasilis m +Vasilisa f +Vasiliy m +Vasilka f +Vasily m +Vaska mf +Vasko m +Vaso mf +Vassiliki f +Vassilis m +Vassily m +Vasso f +Vasu m +Vasuda f +Vasudha f +Vasundhara f +Vasya m +Vasyl m +Vasylyna f +Vatroslav m +Vatslav m +Vaughan m +Vaughn m +Vauquelin m +Vavřinec m +Vavrinec m +Vayu m +Vazgen m +Vazha m +Veaceslav m +Veasna mf +Veca f +Veceslav m +Vecheslav m +Veda f +Vedad m +Vedast m +Vedastus m +Vedat m +Vedran m +Vedrana f +Veer f +Veera f +Veerke f +Veerle f +Veeti m +Vega f +Vegard m +Végarðr m +Veikko m +Veiko m +Veit m +Ve'keseha'e f +Ve'keseheveho m +Velasco m +Velda f +Veles m +Veli m +Velia f +Velibor m +Velichko m +Velimir m +Veljko m +Vellamo f +Vello m +Velma f +Velta f +Velvel m +Velvela f +Velvet f +Vena m +Vencel m +Venceslao m +Venceslás m +Venceslaus m +Věnceslav m +Věnceslava f +Vendel m +Vendela f +Vendelín m +Vendula f +Vendulka f +Venera f +Venere f +Venetia f +Veniamin m +Veniaminu m +Venijamin m +Venka f +Venkat m +Venkata m +Venla f +Ventseslav m +Ventsislav m +Ventsislava f +Vénus f +Vênus f +Venus f +Venuše f +Venyamin m +Vepkhia m +Věra f +Vera f +Verbena f +Vercingetorix m +Verdandi f +Vere m +Vered f +Veremund m +Verena f +Vérène f +Verethragna m +Vergil m +Vergilius m +Verginia f +Verginius m +Verica f +Veriko f +Veríssimo m +Verissimus m +Verity f +Vern m +Verna f +Verner m +Vernon m +Verochka f +Verona f +Verónica f +Verônica f +Veronica f +Veronika f +Véronique f +Věroslav m +Verðandi f +Vertti m +Verusha f +Verusya f +Vesa mf +Vesela f +Veselin m +Veselko m +Veslemøy f +Vesna f +Vespasian m +Vespasiano m +Vespasianus m +Vespasien m +Vesper mf +Vespera f +Vesta f +Vester m +Veta f +Vetle m +Vetrliði m +Veva f +Vi f +Viachaslau m +Vianne f +Viator m +Viatrix f +Vibeke f +Vibiana f +Vibianus m +Vibius m +Vibol m +Vic mf +Vicenç m +Vicent m +Vicenta f +Vicente m +Vicki f +Vickie f +Vicky f +Vico m +Victoire f +Víctor m +Victor m +Victòria f +Victoria f +Victoriano m +Victorianus m +Victorina f +Victorine f +Victorino m +Victorinus m +Victorius m +Vid m +Vida mf +Vidal m +Vidar m +Vidas m +Vide m +Vidmantas m +Vidya f +Viên m +Viện m +Vienna f +Vienne f +Vieno fm +Viera f +Vígdís f +Vigdís f +Vigdis f +Vigga f +Viggo m +Vígi m +Vihaan m +Vihtori m +Viivi f +Vija f +Vijay m +Vijaya mf +Vikenti m +Vikentije m +Vikentiy m +Viking m +Víkingr m +Vikki f +Vikram m +Vikrama m +Viktar m +Viktor m +Viktoras m +Viktória f +Viktoria f +Viktorie f +Viktoriia f +Viktorija f +Viktoriya f +Viktors m +Viktorya f +Viktoryia f +Vilĉjo m +Vilde f +Vilém m +Vilen m +Vilfred m +Vilfredo m +Vilgot m +Vilhelm m +Vilhelmas m +Vilhelmi m +Vilhelmiina f +Vilhelmina f +Vilhelmo m +Vilhelms m +Vilhjálmur m +Vilho m +Vili m +Viliam m +Viliame m +Viliami m +Vilim m +Vilis m +Vilja f +Viljam m +Viljami m +Viljar m +Viljem m +Viljo m +Vilko m +Villads m +Ville m +Villem m +Villum m +Vilma f +Vilmantas m +Vilmantė f +Vilmar m +Vilmos m +Vilppu m +Viltautas m +Viltautė f +Viltė f +Vimal m +Vimala f +Vin m +Vina f +Vinal m +Vinay m +Vincas m +Vince m +Vincenc m +Vincent m +Vincentas m +Vincente f +Vincentius m +Vincenza f +Vincenzo m +Vinh mf +Vinicio m +Vinícius m +Vinicius m +Vinka f +Vinko m +Vinnie mf +Vinny m +Vinzent m +Vinzenz m +Viola f +Violante f +Violet f +Violeta f +Violetta f +Violette f +Viona f +Viorel m +Viorela f +Viorica f +Vipin m +Vipul m +Vira f +Viracocha m +Virág f +Viraj m +Viraja m +Virgee f +Virgie f +Virgil m +Virgile m +Virgilijus m +Virgílio m +Virgilio m +Virgiliu m +Virgilius m +Virginia f +Virginie f +Virginija f +Virginio m +Viriato m +Virna f +Virtudes f +Virva f +Virve f +Višeslav m +Vishal m +Vishnu m +Visitación f +Višnja f +Vissarion m +Vissenta f +Vissente m +Visvaldas m +Visvaldis m +Vít m +Vita f +Vital m +Vitale m +Vitali m +Vitalia f +Vitaliano m +Vitalianus m +Vitalija f +Vitālijs m +Vitalijus m +Vitalik m +Vitalis m +Vitaliy m +Vitaliya f +Vitaly m +Vítek m +Vítězslav m +Víðarr m +Víðir m +Vitilsav m +Vito m +Vitold m +Vitomir m +Vítor m +Vitória f +Vitorino m +Vittore m +Vittoria f +Vittorino m +Vittorio m +Vitus m +Vitya m +Vivek m +Viveka f +Vivi f +Vivian mf +Viviana f +Viviane f +Vivianne f +Viviano m +Vivianus m +Vivien mf +Vivienne f +Viviette f +Vivyan f +Viyan f +Vjeko m +Vjekoslav m +Vjekoslava f +Vjera f +Vlad m +Vladan m +Vladana f +Vladas m +Vladěna f +Vladik m +Vladilen m +Vladimer m +Vladimeru m +Vladimír m +Vladimir m +Vladimíra f +Vladimira f +Vladimiras m +Vladimirs m +Vladislav m +Vladislava f +Vladlen m +Vladlena f +Vlado m +Vladyslav m +Vladyslava f +Vlaho m +Vlas m +Vlasi m +Vlasis m +Vlasiy m +Vlassis m +Vlasta f +Vlastimil m +Vlastimila f +Vlastimír m +Vlastimir m +Vlastislav m +Vlatka f +Vlatko m +Voestaa'e f +Vohu Manah m +Voirrey f +Voislav m +Voitsekh m +Voitto m +Vojislav m +Vojislava f +Vojta m +Vojtěch m +Vojtech m +Voldemaras m +Voldemārs m +Voldemort m +Volha f +Volkan m +Volker m +Volodimeru m +Volodislavu m +Volodya m +Volodymyr m +Volos m +Völund m +Vǫlundr m +Volya m +Vonahe'e f +Vonda f +Vortigern m +Vosgi fm +Voski fm +Voula f +Vova m +Vragi m +Vratislav m +Vratislava f +Vreni f +Vsevolod m +Vugar m +Vuk m +Vukašin m +Vulcan m +Vulcanus m +Vulferam m +Vulfgang m +Vuokko f +Vüqar m +Vural m +Vüsal m +Vüsala f +Vüsalə f +Vyacheslav m +Vyara f +Vydmantas m +Vygantas m +Vytautas m +Vytautė f +Wacław m +Wacława f +Wade m +Wadud m +Wael m +Wafai m +Wafi m +Wafiya f +Wafula m +Waheed m +Waheeda f +Wahid m +Wahida f +Wahunsenacawh m +Wahyu m +Wail m +Waimarie f +Wairimu f +Wakana f +Walahfrid m +Walburga f +Walchelin m +Waldeburg f +Waldedrudis f +Waldek m +Waldemar m +Waldhar m +Waldo m +Waldobert m +Waldomar m +Waleed m +Walela f +Walenty m +Walentyna f +Waleria f +Walerian m +Walery m +Walganus m +Walhberct m +Walherich m +Walid m +Walker m +Wallace m +Wallis mf +Wally m +Walt m +Wálter m +Walter m +Waltheof m +Walther m +Walton m +Waltraud f +Waltraut f +Wamalwa m +Waman m +Wambdi mf +Wambli mf +Wambui f +Wanangwa mf +Wanda f +Wandal m +Wandalin m +Wanessa f +Wangari f +Wangchuk mf +Wangi f +Wangui f +Wanjala m +Wanjiku f +Wanjiru f +Wanyonyi m +Wâpanacâhkos f +Wapasha m +Waqar m +Waramunt m +Warcisław m +Ward m +Warda f +Wardah f +Wardell m +Warin m +Warinhari m +Warner m +Warren m +Warrick m +Warwick m +Washington m +Washti f +Wasi m +Wasim m +Wassa f +Wassily m +Wassim m +Wasswa m +Wasyl m +Wasylyna f +Wat m +Wate m +Wati f +Watse m +Watson m +Wattana fm +Waverly fm +Wawatam m +Wawrzyniec m +Wayan mf +Wayland m +Waylon m +Wayna m +Wayne m +Wayra m +Wazo m +Wealdmær m +Wealhmær m +Webster m +Wedad f +Wednesday f +Wei mf +Wekesa m +Weland m +Weldon m +Wemba m +Wen mf +Wenceslao m +Wenceslas m +Wenceslaus m +Wenche f +Wenda f +Wendel m +Wendelin m +Wendell m +Wendi f +Wendy f +Wenke f +Wenona f +Wenonah f +Wenzel m +Wenzeslaus m +Wera f +Werdheri m +Werknesh f +Werner m +Weronika f +Werther m +Wes m +Wesley m +Wessel m +Westley m +Weston m +Wetzel m +Whetū fm +Whitaker m +Whitney fm +Wibke f +Wibo m +Wickaninnish m +Widad f +Widald m +Wide m +Wido m +Widogast m +Widukind m +Widya f +Wiebe m +Wiebke f +Więcesław m +Wiegand m +Wieland m +Wielisław m +Wiesław m +Wiesława f +Wigand m +Wigberht m +Wigbrand m +Wigburg f +Wighard m +Wigheard m +Wigmar m +Wigmund m +Wigstan m +Wikolia f +Wiktor m +Wiktoria f +Wil mf +Wilbert m +Wilbur m +Wilburg f +Wilburh f +Wilburn m +Wilda f +Wilder m +Wiley m +Wilf m +Wilford m +Wilfred m +Wilfreda f +Wilfredo m +Wilfrid m +Wilfried m +Wilfrith m +Wilfrið m +Wilheard m +Wilhelm m +Wilhelmina f +Wilhelmine f +Wilhelmus m +Wilkie m +Wilkin m +Wilky m +Will m +Willa f +Willabert m +Willahelm m +Willamar m +Willard m +Willem m +Willemijn f +Willemina f +Willi m +William m +Willibald m +Willidrud f +Willie mf +Willifrid m +Willihad m +Willihard m +Williric m +Willis m +Willka m +Willoughby m +Willow f +Willy mf +Wilma f +Wilmǣr m +Wilmer m +Wilmot mf +Wilson m +Wilt m +Wilton m +Wiltrud f +Wim m +Win mf +Wina f +Wincenty m +Windsor mf +Wine m +Winefride f +Winfield m +Winfred m +Winfried m +Winfrith m +Winfrið m +Winifred f +Winifreda f +Winifrid m +Winnie f +Winnifred f +Winoc m +Winona f +Winslow m +Winston m +Winter f +Winthrop m +Winton m +Wiola f +Wioleta f +Wioletta f +Wira m +Wiremu m +Wischard m +Wisdom fm +Wisław m +Wisława f +Wit m +Witek m +Witołd m +Witold m +Władek m +Władysław m +Władysława f +Włodek m +Włodzimierz m +Włodzisław m +Wob m +Wobbe mf +Wodan m +Woden m +Wojciech m +Wojciecha f +Wojsław m +Wojtek m +Wolf m +Wolfe m +Wolfgang m +Wolfram m +Wöllem m +Wolodymyr m +Wolter m +Wongani mf +Woodie m +Woodrow m +Woody m +Woo-Jin m +Workneh m +Worknesh f +Wotan m +Wout m +Wouter m +Wren f +Wright m +Wu mf +Wubbe m +Wukong m +Wulan f +Wulf m +Wulfflæd f +Wulfgifu f +Wulfnoð m +Wulfric m +Wulfrun f +Wulfruna f +Wulfsige m +Wulfstan m +Wulfwynn f +Wullem m +Wum m +Wyatt m +Wybert m +Wymond m +Wyn m +Wynn m +Wynne mf +Wynnflæd f +Wynnstan m +Wynona f +Wynonna f +Wynter f +Wyot m +Wystan m +Xaawo f +Xabi m +Xabier m +Xacobe m +Xaime m +Xaliima f +Xande m +Xander m +Xandinho m +Xandra f +Xanthe f +Xanthi f +Xanthia f +Xanthippe f +Xanthippi f +Xanthippos m +Xanthos m +Xanti m +Xasan m +Xaver m +Xavi m +Xavia f +Xavier m +Xaviera f +Xavior m +Xbalanque m +Xena f +Xenagoras m +Xene f +Xeni f +Xènia f +Xenia f +Xenie f +Xeno f +Xenocrates m +Xenofon m +Xenokrates m +Xenon m +Xenophon m +Xerxes m +Xesús m +Xhafer m +Xhelal m +Xhemal m +Xhesika f +Xia mf +Xiadani f +Xián m +Xiana f +Xiang mf +Ximena f +Ximeno m +Ximo m +Ximun m +Xinyi mf +Xiomara f +Xitlalli f +Xiu f +Xiulan f +Xiuying f +Xoán m +Xoana f +Xóchilt f +Xochipilli m +Xochiquetzal f +Xóchitl f +Xochitl f +Xoel m +Xolani m +Xolotl m +Xosé m +Xquenda fm +Xquic f +Xuân mf +Xuan m +Xue fm +Xulia f +Xulio m +Xun mf +Xurxo m +Xwm m +Xystos m +Xzavier m +Ya f +Yaa f +Yaakov m +Yaara f +Yachin mf +Yachle'el m +Yachna f +Yachtze'el m +Yacoub m +Yacouba m +Yadira f +Yadon m +Yaeko f +Yael f +Yaen f +Yafa f +Yafe mf +Yaffa f +Yaffe mf +Yağız m +Yağmur fm +Yago m +Yahui fm +Yahveh m +Yahweh m +Yahya m +Yair m +Yaiza f +Yakau m +Yakim m +Yakira f +Yakiv m +Yakov m +Yakub m +Yaƙubu m +Yakup m +Yalçın m +Yale m +Yaling f +Yalwa fm +Yam m +Yama m +Yamaç m +Yamanu m +Yamato m +Yami f +Yamikani mf +Yamila f +Yamilé f +Yamilet f +Yamileth f +Yamin m +Yamuna f +Yan mf +Yana f +Yancy mf +Yang mf +Yanick mf +Yanina f +Yanira f +Yanis m +Yaniv m +Yanka f +Yankel m +Yanko m +Yann m +Yanna f +Yanni m +Yannic mf +Yannick mf +Yannig mf +Yannis m +Yao m +Yaqoob m +Yaqub m +Yara f +Ya'rah m +Yaraslau m +Yarav'am m +Yarden mf +Yardena f +Yared m +Yaren f +Yaretzi f +Yarik m +Yaritza f +Yarognev m +Yaromil m +Yaromir m +Yaron m +Yarona f +Yaropolk m +Yaroslav m +Yaroslava f +Yasaman f +Yasamin f +Yaşar m +Yasemin f +Yasen m +Yaser m +Yash m +Yasha m +Yasin m +Yasir m +Yasmeen f +Yasmin f +Yasmina f +Yasmine f +Yasser m +Yasu fm +Yating fm +Yatzil f +Yauhen m +Yauheniya f +Yavor m +Yavuz m +Yaw m +Yawan m +Yawen f +Yaxkin fm +Yazhu fm +Yazmin f +Yechezkel m +Yechi'el m +Yechiel m +Yedidah f +Yedidia m +Yedidya m +Yedidyah m +Yefet m +Yefim m +Yefrem m +Yegor m +Yehiel m +Yeho'ash m +Yehochanan m +Yehonatan m +Yehoram m +Yehoshafat m +Yehosheva f +Yehoshua m +Yehowah m +Yehoyakhin m +Yehoyakim m +Yehu' m +Yehuda m +Yehudah m +Yehudi m +Yehudit f +Yejide f +Ye-Jun m +Yekaterina f +Yekonyah m +Yelena f +Yelisey m +Yelizaveta f +Yelysaveta f +Yelyzaveta f +Yemanjá f +Yemayá f +Yemelyan m +Yemima f +Yemọja f +Yên f +Yenifer f +Yenny f +Yente f +Yentl f +Yeong fm +Yeong-Cheol m +Yeong-Gi m +Yeong-Ho m +Yeong-Hui f +Yeong-Hwan m +Yeong-Ja f +Yeong-Su m +Yeong-Suk f +Yerachme'el m +Yeray m +Yered m +Yeriyahu m +Yermolai m +Yermolay m +Yerushah f +Yeruslan m +Yeruti f +Yesenia f +Yeseniya f +Yesfir f +Yesha'yahu m +Yeshayahu m +Yeshua m +Yésica f +Yeşim f +Yessenia f +Yéssica f +Yeter f +Yetunde f +Yeva f +Yevdokim m +Yevdokiya f +Yevfimiy m +Yevfrosiniya f +Yevgen m +Yevgeni m +Yevgeniy m +Yevgeniya f +Yevgeny m +Yevgraf m +Yevhen m +Yevheniy m +Yevheniya f +Yevlogiy m +Yevpraksiya f +Yevstakhiy m +Yewande f +Yewubdar f +Yezekael m +Yi fm +Yianna f +Yianni m +Yiannis m +Yidel m +Yiftach m +Yiğit m +Yijun mf +Yıldırım m +Yıldız f +Yılmaz m +Yima m +Yima Kshaeta m +Yin fm +Yiorgos m +Yirmiyahu m +Yishai m +Yishma'el m +Yishmeray m +Yiskah f +Yisra'el m +Yisrael m +Yisroel m +Yissakhar m +Yitro m +Yitzhak m +Ylenia f +Ylfa f +Ylli m +Yllka f +Ylva f +Yngvar m +Yngvarr m +Yngve m +Yngvi m +Yngvildr f +Yo'ach m +Yoan m +Yoana f +Yoann m +Yo'ash m +Yoav m +Yochanan m +Yocheved f +Yoel m +Yohan m +Yohanes m +Yohann m +Yohannes m +Yōko f +Yoko f +Yolanda f +Yolande f +Yolonda f +Yolotl fm +Yolotli fm +Yolotzin fm +Yoloxochitl f +Yona mf +Yonaguska m +Yonah mf +Yonatan m +Yonca f +Yong mf +Yoni m +Yonina f +Yonit f +Yorah m +Yoram m +Yorath m +Yordan m +Yordana f +Yordanka f +Yorgos m +Yori m +Yorick m +York m +Yosef m +Yoselin f +Yoshi mf +Yoshie fm +Yoshiko f +Yoshiro m +Yoshirō m +Yoshirou m +Yoshiyahu m +Yosif m +Yossel m +Yōsuke m +Yosuke m +Yosyp m +Yōta m +Yotam m +Youcef m +Youko f +Younes m +Young fm +Young-Gi m +Young-Hee f +Young-Ho m +Young-Ja f +Young-Soo m +Young-Sook f +Younus m +Youri m +Yousaf m +Yousef m +Youssef m +Yousuke m +Youta m +Yrian m +Yrjänä m +Yrjö m +Ysabel f +Ysapy f +Ysbrand m +Yseult f +Yseut f +Ysolt f +Yu fm +Yū mf +Yua f +Yuda m +Yūdai m +Yudel m +Yudes f +Yudif f +Yuhanna m +Yui f +Yuina f +Yūka f +Yuka f +Yūki mf +Yuki fm +Yukiko f +Yūko f +Yuko f +Yulduz f +Yuli m +Yulia f +Yulian m +Yuliana f +Yulianna f +Yuliy m +Yuliya f +Yūma m +Yume f +Yu-Mi f +Yumi f +Yumiko f +Yun fm +Yūna f +Yun-Seo fm +Yunuen fm +Yunus m +Yunus Emre m +Yura m +Yuraq mf +Yurena f +Yūri f +Yuri mf +Yuriy m +Yury m +Yusef m +Yusha m +Yusif m +Yusra f +Yustina f +Yusuf m +Ýusup m +Yusup m +Yūta m +Yutke f +Yūto m +Yuu mf +Yuudai m +Yuuka f +Yuuki mf +Yuuko f +Yuuma m +Yuuna f +Yuuri f +Yuusuf m +Yuuta m +Yuuto m +Yuval mf +Yuzuki f +Yvain m +Yvan m +Yves m +Yveta f +Yvette f +Yvo m +Yvon m +Yvona f +Yvonne f +Ywain m +Zaahir m +Zaahira f +Zaal m +Zabel f +Zaboulon m +Zabulon m +Zac m +Zacarías m +Zacarias m +Zaccai m +Zacchaeus m +Zaccharias m +Zaccheus m +Zach m +Zachariah m +Zacharias m +Zachariasz m +Zacharie m +Zachary m +Zachery m +Zack m +Zackary m +Zackery m +Zadkiel m +Zadok m +Zafar m +Zafer m +Zahara f +Zahari m +Zaharina f +Zaharinka f +Zaheer m +Zaher m +Zahi m +Zahia f +Zahid m +Zahida f +Zahide f +Zahir m +Zahira f +Zahra f +Zahrah f +Zaid m +Zaida f +Zaiden m +Zain m +Zaina f +Zainab f +Zainabu f +Zainuddin m +Zaira f +Zaïre f +Zaire m +Zak m +Zakaria m +Zakariya m +Zakariyya m +Zakchaios m +Zakhar m +Zaki m +Zakiah f +Zakiya f +Zakiyya f +Zakkai m +Žaklina f +Żaklina f +Zal m +Zala f +Zalán m +Zalman m +Zalmon m +Zaman m +Žan m +Zan fm +Žana f +Zander m +Zandra f +Zane mf +Žaneta f +Żaneta f +Žanna f +Zanna f +Zara f +Zarah m +Zarathushtra m +Zarathustra m +Zaray f +Zareen f +Zaria f +Zarina f +Zarja f +Žarko m +Zartosht m +Zaur m +Zaurbek m +Zavanna f +Zavia f +Zavier m +Záviš m +Zawadi fm +Zawar m +Zawisza m +Zaxaria m +Zaya f +Zayd m +Zayden m +Zayn m +Zayna f +Zaynab f +Zayn ad-Din m +Zayne m +Zazil f +Zbignev m +Zbigniew m +Zbygněv m +Zbyněk m +Zdena f +Zdeněk m +Zdeňka f +Zdenka f +Zdenko m +Zdeno m +Zdeslav m +Zdislav m +Zdislava f +Zdravka f +Zdravko m +Zdzisław m +Zdzisława f +Zé m +Zebadiah m +Zebedaios m +Zebedee m +Zebulon m +Zebulun m +Zechariah m +Zed m +Zedekiah m +Zedong mf +Zeenat f +Zeev m +Zef m +Zeferino m +Zehra f +Zeinab f +Zejd m +Zejneb f +Zeke m +Zekeriya m +Zekharyah m +Zeki m +Zekiye f +Zelda f +Zelde f +Zélie f +Zelig m +Želimir m +Zelimkhan m +Željka f +Željko m +Zella f +Zelma f +Zelophehad m +Zelpha f +Zeltzin f +Zé Manel m +Zé Maria m +Zemfira f +Zena f +Zenaida f +Zénaïde f +Zenais f +Zendaya f +Zenia f +Zeno m +Zenobia f +Zenobios m +Zenon m +Zenovia f +Zente m +Zenzi f +Zeph m +Zephania m +Zephaniah m +Zephaniel m +Zephyr m +Zéphyrine f +Zephyrinus m +Zephyros m +Zephyrus m +Zerach m +Zerachiel m +Zerah m +Zerina f +Zeru m +Zétény m +Zeus m +Zev m +Zevadyah m +Zevulun m +Zeynəb f +Zeynab f +Zeynep f +Zezé m +Zhaklina f +Zhaleh f +Zhanna f +Zhannochka f +Zharko m +Zhelimir m +Zhelyazko m +Zhen fm +Zheng mf +Zhenya fm +Zhi mf +Zhihao mf +Zhirayr m +Zhivka f +Zhivko m +Zhong mf +Zhou mf +Zhubin m +Zhuldyz f +Zhyrgal mf +Zia m +Ziad m +Ziaeddin m +Ziauddin m +Ziba fm +Zibiah f +Ziemowit m +Zifa f +Žiga m +Zigmārs m +Žigmund m +Zigor m +Zikmund m +Zikomo mf +Zilla f +Zillah f +Zilpa f +Zilpah f +Zimri m +Zina f +Zinaida f +Zinat f +Zinedine m +Zinnia f +Zinon m +Zinovia f +Zinoviy m +Zinoviya f +Zinovy m +Zion m +Zipporah f +Zisel f +Ziska f +Zita f +Zitkala f +Ziv mf +Živa f +Ziva f +Zivit f +Živka f +Živko m +Ziya m +Ziya ad-Din m +Ziya al-Din m +Ziyad m +Ziyaeddin m +Ziyaettin m +Ziya ur-Rahman m +Ziynet f +Zlata f +Zlatan m +Zlatica f +Zlatka f +Zlatko m +Zlatuše f +Zlota f +Zodwa f +Zoe f +Zoé f +Zoè f +Zoë f +Zoey f +Žofia f +Zofia f +Žofie f +Zohar mf +Zohreh f +Zoi f +Zoie f +Zoilos m +Zoilus m +Zoja f +Zola fm +Zoltán m +Zona f +Zopyros m +Zora f +Zoraida f +Zoran m +Zorana f +Zorica f +Zorion m +Zorione f +Zorka f +Zornitsa f +Zoroaster m +Zorro m +Zosia f +Zosime f +Zosimos m +Zosimus m +Zoticus m +Zotikos m +Zoubida f +Zowie f +Zoya f +Zrinka f +Zrinko m +Zsanett f +Zsazsa f +Zselyke f +Zsiga m +Zsigmond m +Zsófia f +Zsófika f +Zsóka f +Zsolt m +Zsombor m +Zsuzsa f +Zsuzsanna f +Zsuzsi f +Zuan m +Zubaida f +Zubair m +Zuberi m +Zübeyde f +Zubin m +Zuhura f +Zula f +Zulaykha f +Zuleika f +Zuleima f +Zulekha f +Zulema f +Züleyha f +Zulfaqar m +Zülfikar m +Zulfikar m +Zulfiqar m +Zümra f +Zurab m +Zuri f +Zuriel m +Zuriñe f +Zusa f +Zusman m +Zuza f +Zuzana f +Zuzanka f +Zuzanna f +Zuzen m +Zuzia f +Zuzka f +Zvezdana f +Zvi m +Zviad m +Zviadi m +Zvjezdana f +Zvonimir m +Zvonimira f +Zvonko m +Zyanya f +Žydrė f +Žydrūnas m +Zygfryd m +Zygmunt m +Zyta f diff --git a/evennia/contrib/utils/name_generator/btn_surnames.txt b/evennia/contrib/utils/name_generator/btn_surnames.txt new file mode 100644 index 0000000000..0cfa5d8770 --- /dev/null +++ b/evennia/contrib/utils/name_generator/btn_surnames.txt @@ -0,0 +1,6939 @@ +# +# This data is provided by behindthename.com and is licensed under CC BY-SA 4.0. +# To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0 +# +# Surnames, exported from the behindthename.com database. +# Wed, 06 Apr 2022 03:19:46 -0700 +# +Aafjes +Aaij +Aakster +Aaldenberg +Aalders +Aalfs +Aalmers +Aaltink +Aalto +Aaltonen +Aarden +Aarens +Aarle +Aaron +Aarse +Aarts +Aartsen +Aartsma +Abadjiev +Abano +Abarca +Abaroa +Abascal +Abasolo +Abatangelo +Abatantuono +Abate +Abategiovanni +Abatescianni +Abbà +Abbadelli +Abbandonato +Abbas +Abbascia +Abbasi +Abbatangelo +Abbatantuono +Abbate +Abbatelli +Abbaticchio +Abbes +Abbey +Abbiati +Abbing +Abbingh +Abbink +Abbott +Abdullah +Abdullayev +Abdulrashid +Abe +Abel +Abelen +Abelli +Abelló +Abeln +Abels +Aben +Åberg +Abiodun +Abney +Abraham +Abrahams +Abrahamsen +Abrahamson +Abrahamsson +Abram +Abrami +Abramo +Abrams +Abramsen +Abramson +Abramsson +Abreu +Abspoel +Abt +Acardi +Accardi +Accardo +Acciai +Acciaio +Acciaioli +Acconci +Acconcio +Accorsi +Accorso +Accursio +Acerbi +Acheson +Achilles +Achterberg +Achterkamp +Achterop +Achthoven +Acker +Ackerman +Ackermann +Acone +Acosta +Acqua +Acquafredda +Acquarone +Acquati +Adair +Ádám +Adam +Adamczak +Adamczyk +Adami +Adamić +Adamík +Adamo +Adamoli +Adams +Adamsen +Adamson +Adamsson +Adcock +Addario +Addens +Addicks +Addison +Adebayo +Adelardi +Adema +Adenauer +Adesso +Adimari +Adkins +Adler +Admiraal +Adolfs +Adolfsson +Adolvsson +Adomaitis +Adriaans +Adriaansen +Adriatico +Adrichem +Aerssens +Aerts +Affini +Afolabi +Afolayan +Africani +Africano +Agani +Agema +Aggio +Agli +Agnarsson +Agnelli +Agnellini +Agnusdei +Agócs +Agosti +Agostini +Agramunt +Agresta +Agricola +Agthoven +Agua +Aguado +Aguilar +Ahearn +Ahearne +Ahlberg +Ahlers +Ahlgren +Ahlström +Ahmad +Əhmədov +Ahmed +Aiello +Aikema +Aiken +Ainsley +Ainsworth +Aiolfi +Airaldi +Airò +Aita +Aitken +Aiza +Ajam +Ajello +Akai +Åkerman +Akerman +Akers +Åkesson +Akiyama +Akker +Akkerman +Akkermans +Akkersdijk +Akselsen +Aksoy +Alagona +Alamanni +Alamilla +Al-Amin +Alan +Albanesi +Albani +Albano +Alberda +Alberdingk +Alberghi +Alberghini +Alberici +Alberighi +Alberink +Albero +Albers +Albert +Alberts +Albertsen +Albertson +Albertsson +Albescu +Albini +Albinson +Albinsson +Albrecht +Albrechtsson +Albrecktsson +Albrektson +Albrektsson +Albricci +Albrici +Albring +Albronda +Albu +Albuquerque +Aldana +Aldebrandi +Alden +Aldenberg +Aldenkamp +Alderisi +Alderliesten +Alders +Aldershof +Alduino +Aleksandrov +Alekseev +Alemagna +Aleppo +Alesci +Alescio +Aleshire +Alesi +Alesini +Alesio +Alessandri +Alessi +Alexander +Alexandersen +Alexanderson +Alexandersson +Alexandrescu +Alfaro +Alfarsi +Alferink +Alfero +Alfons +Alfredson +Alfredsson +Alfson +Alfsson +Alger +Al-Ghazzawi +Al-Hashim +Ali +Aliberti +Alinari +Alinejad +Aling +Alink +Aliprandi +Əliyev +Aliyev +Alkema +Allan +Allard +Allaway +Allegri +Allegro +Allen +Alles +Allison +Allsopp +Alma +Almássy +Almeida +Almstedt +Al-Mufti +Alò +Aloi +Aloia +Aloisi +Alonso +Alscher +Alserda +Altamura +Altena +Althaus +Althuis +Altimari +Alting +Altink +Altoviti +Alunni +Alvarado +Álvarez +Alvarsson +Alves +Alvey +Alvin +Amadei +Amador +Amadori +Amalberti +Amano +Amantea +Amato +Amatore +Ambrogi +Ambrosi +Amerighi +Amjad +Amoretto +Amos +Amsel +Amsing +Amundsen +Anand +Ananias +Anaya +Andela +Andersen +Anderson +Andersson +Andonov +André +Andreas +Andreasen +Andreassen +Andréasson +Andreasson +Andreev +Andrés +Andres +Andreu +Andrews +Andrewson +Andries +Andriessen +Andringa +Andrysiak +Anema +Angelov +Angenent +Anghelescu +Angioli +Angus +Anholts +Anjema +Anker +Annema +Annevelink +Ansaldi +Ansel +Anselmetti +Anselmi +Anson +Antal +Antall +Antema +Anthonsen +Anthonyson +Antić +Antonelli +Antonescu +Antonini +Antonino +Antonio +Antoniou +Antonis +Antonise +Antonisen +Antonov +Antonsen +Antov +Antuma +Antúnez +Aoki +Aoyama +Apeldoorn +Apostolov +Appeldoorn +Appelhof +Appelo +Apperlo +Appleby +Appleton +Apted +Aquila +Aquino +Arany +Arap +Araújo +Araujo +Araullo +Araya +Arbeid +Arbeider +Arbeit +Arbore +Arce +Archambault +Archer +Ardelean +Ardiccioni +Ardizzone +Ardovini +Arechavaleta +Arena +Arenas +Arendonk +Arends +Arendse +Arendsen +Arents +Arentz +Argall +Argyris +Arias +Ariesen +Arima +Arissen +Aritza +Arkema +Arkes +Arkwright +Arlotti +Armando +Armani +Ármannsson +Armati +Armbrüster +Armbruster +Armistead +Armstrong +Arnaud +Arnesen +Arnold +Arnolfi +Arnoni +Arntz +Arntzen +Arntzenius +Arreola +Arrighetti +Arrighi +Arrigucci +Arrington +Arriola +Arterberry +Arterbury +Arthur +Arthurson +Arthursson +Arts +Artz +Årud +Arvidsson +Arzt +Asano +Asanuma +Asenov +Ash +Ashley +Ashton +Ashworth +Asís +Asjes +Askes +Aslan +Asselman +Assenberg +Assendorp +Assies +Assink +Aston +Astor +Astrauskas +Asturias +Atanasov +Atchison +Ateljević +Atkins +Atkinson +Atsma +Attar +Attaway +Atteberry +Atterberry +Attwater +Attwood +Atwater +Atwood +Aubert +Audley +Aue +Auer +Augustin +Augustine +Aukema +Aukes +Aust +Austin +Auteberry +Avagyan +Avakian +Avcı +Avellino +Averesch +Averill +Avery +Aveskamp +Avraham +Axelsen +Axelsson +Ayers +Aylmer +Ayodele +Ayton +Azarola +Azzarà +Baaiman +Baak +Baanders +Baar +Baarda +Baardsen +Baardwijk +Baars +Baarsma +Baart +Baas +Baasch +Babatunde +Babcock +Babić +Babič +Babin +Babineaux +Bach +Bachchan +Bachman +Bachmann +Bachmeier +Bachvarov +Bäcker +Backus +Badcock +Badem +Bader +Bager +Baggi +Baggins +Baggio +Baghdasaryan +Baghdassarian +Bagley +Baglio +Bagni +Bagnoli +Bähr +Bai +Baier +Bailey +Bain +Baines +Baird +Bajusz +Bakalov +Bakema +Baker +Bakhuizen +Bakke +Bakken +Bakker +Bakó +Bălan +Baláž +Balázs +Balboni +Baldi +Baldini +Baldinotti +Baldovini +Baldwin +Balfour +Balık +Bálint +Ball +Ballerini +Balodis +Balog +Balogh +Bambach +Bancroft +Banderas +Bandini +Bandoni +Bandyopadhyay +Banerjee +Banes +Baník +Banister +Banks +Banner +Bannerman +Bannister +Baran +Bárány +Baráth +Barber +Barbier +Barbieri +Barclay +Bardakçı +Bardsley +Barends +Barış +Barker +Barlow +Barna +Barnes +Barnet +Barnett +Barone +Barr +Barre +Barret +Barrett +Barros +Barsamian +Barsotti +Bárta +Barta +Bartalotti +Bartha +Bartolomei +Bartolomeo +Barton +Bartos +Bartoš +Bartosz +Bartram +Barwegen +Barzetti +Basile +Bass +Bassanelli +Bassani +Bassi +Basso +Basurto +Bates +Bateson +Báthory +Bátori +Battaglia +Battle +Batts +Baudin +Bauer +Bauers +Baum +Baumann +Baumbach +Baumer +Baumgarten +Baumgärtner +Baumgartner +Baumhauer +Bautista +Baxter +Bayer +Baylor +Bazzoli +Beake +Bean +Beasley +Beattie +Beatty +Beauchêne +Beaufort +Beaulieu +Beaumont +Beck +Becke +Beckenbauer +Becker +Beckert +Becket +Beckett +Beckham +Becskei +Bedrosian +Begam +Begbie +Begum +Behrend +Behrends +Behringer +Beiler +Beirne +Beitel +Bélanger +Belanger +Belcher +Bell +Bellamy +Bellandi +Bellandini +Bellerose +Bellincioni +Bellini +Bello +Bellomi +Bellomo +Belloni +Belluomo +Belmont +Belmonte +Belo +Belrose +Beltz +Benbow +Bencivenni +Bendtsen +Benedetti +Benenati +Benes +Beneš +Benetton +Bengochea +Bengoechea +Bengoetxea +Bengtsdotter +Bengtsson +Benini +Benítez +Benjaminson +Benn +Bennet +Bennett +Bennington +Benoit +Benscoter +Benson +Bentley +Benton +Bentsen +Benvenuti +Beran +Beránek +Béranger +Berardi +Berg +Bergamaschi +Berge +Berger +Bergfalk +Berggren +Berglund +Bergman +Bergmann +Bergström +Beridze +Béringer +Beringer +Berkovich +Berkowicz +Berkowitz +Berlusconi +Bermúdez +Bernard +Bernardi +Bernat +Berne +Bernhard +Bernhardsson +Berntsen +Berntsson +Berry +Berti +Bertolini +Bertrand +Bērziņš +Best +Beulen +Beulens +Beumer +Beumers +Beutel +Bevan +Beverley +Beverly +Beyer +Beyersdorf +Bezuidenhout +Bhattacharya +Biagi +Biancardi +Bianchi +Bianco +Bicchieri +Bieber +Biermann +Binici +Biondi +Biondo +Bird +Bíró +Bischoffs +Bishop +Biskup +Bisset +Bissette +Bjarnesen +Björk +Björklund +Björkman +Björnsson +Black +Blackbourne +Blackburn +Blackman +Blackwood +Bláha +Blain +Blaine +Blair +Blaise +Blake +Blakeley +Blakely +Blakeslee +Blakesley +Blanc +Blanchard +Blanchet +Blanchett +Blanco +Blanxart +Blau +Blažek +Blažević +Blecher +Bleier +Blevins +Blom +Blomgren +Blomqvist +Bloodworth +Bloxam +Bloxham +Blue +Blum +Blumenthal +Blumstein +Blythe +Boatwright +Bobal +Böcker +Bodilsen +Bodnár +Bodrogi +Boehler +Boelens +Boels +Boer +Boerefijn +Boerio +Boesch +Bogdanić +Bogdanov +Bogdanović +Bognár +Bogomolov +Böhler +Böhm +Böhme +Böhmer +Bohn +Boivin +Bokor +Bokori +Bolívar +Bolkvadze +Bologna +Bolton +Bonaccorsi +Bonaccorso +Bonaventura +Bond +Bondarenko +Bondesan +Bone +Bonfils +Bonham +Bonheur +Bonhomme +Bonnaire +Bonnay +Bonner +Bonnet +Bonney +Bonomo +Boon +Boone +Booth +Boothman +Bootsma +Borbély +Borchard +Borchardt +Borde +Borg +Borghi +Borgia +Borgnino +Borgogni +Borislavov +Borisov +Borja +Boros +Borst +Borysov +Bos +Bösch +Bosch +Bosco +Bosko +Bosque +Botello +Both +Botha +Bothe +Böttcher +Botterill +Botwright +Bouchard +Boucher +Boulos +Bourdillon +Bourke +Bourne +Bourreau +Bousaid +Bouvier +Bouwmeester +Bove +Bover +Boveri +Bowen +Bowie +Bowman +Boyadjiev +Boyadzhiev +Boyanov +Boyce +Boyd +Boyer +Boyko +Boyle +Bozhidarov +Božić +Braam +Braband +Braddock +Braden +Bradford +Bradley +Brady +Brahms +Brambilla +Brams +Bramson +Brand +Brändle +Brandon +Brandt +Branković +Brankovič +Brankovich +Brannon +Branson +Brant +Brantley +Brasher +Brassington +Brauer +Braun +Braune +Braxton +Bray +Breckenridge +Breckinridge +Breda +Breen +Breiner +Breisacher +Breitbarth +Brennan +Brent +Bret +Brett +Bretz +Brewer +Brewster +Brice +Bridges +Brierley +Brigham +Briley +Brinkerhoff +Brinley +Brioschi +Brisbois +Bristol +Bristow +Brittain +Britton +Brivio +Broadbent +Brock +Brodbeck +Brodeur +Brodie +Brody +Brogan +Bronson +Brontë +Brook +Brooke +Brooks +Brose +Brotz +Brown +Browne +Brownlow +Broz +Brož +Broż +Bruce +Bruhn +Brun +Brune +Brunet +Brunetti +Bruno +Brunty +Bryan +Bryant +Bryce +Bryson +Brzezicki +Buchanan +Buchholz +Buchvarov +Buckholtz +Buckley +Budai +Buday +Budny +Buffone +Buhr +Bùi +Büki +Bukoski +Bukowski +Bul +Bulgarelli +Bulgari +Bull +Bullard +Bulle +Bullens +Bullock +Bumgarner +Bunker +Bunnag +Bunschoten +Buonarroti +Burakgazi +Bureau +Bureš +Burgess +Burgstaller +Burke +Burnham +Burns +Burrell +Burton +Busch +Bush +Bustillo +Busto +Bustos +Butcher +Butkus +Butler +Butts +Byquist +Byqvist +Byrd +Byrne +Byrnes +Byström +Caballero +Cabello +Cabral +Cabrera +Caden +Cadwallader +Cəfərov +Caiazzo +Caito +Caivano +Calabrese +Caldwell +Calhoun +Callaghan +Callahan +Callan +Calligaris +Calvin +Calvo +Cameron +Campana +Campbell +Campo +Campos +Cannon +Cano +Cantrell +Cantú +Cantù +Cao +Caomhánach +Capela +Capella +Capello +Capilla +Capitani +Carbone +Carboni +Cardona +Cardoso +Cardozo +Carey +Carideo +Carl +Carlevaro +Carlisle +Carlsen +Carlson +Carlsson +Carlyle +Carman +Carmody +Carnevale +Caro +Caron +Carpenter +Carpentier +Carr +Carran +Carrara +Carrasco +Carroll +Carson +Carstensen +Carter +Cartwright +Caruso +Carvalho +Carver +Cary +Casal +Casale +Casales +Case +Casey +Cash +Cason +Cassano +Cassidy +Castell +Castellano +Castelo +Castilla +Castillo +Castle +Castro +Catalán +Catalano +Cattaneo +Caulfield +Causer +Causey +Cavalcante +Cavallo +Cavan +Cavanagh +Cavanah +Cavanaugh +Cavey +Čech +Cecil +Ceelen +Čermák +Cermak +Černík +Černý +Cervantes +Červenka +Červeny +Chadwick +Chai +Chaikin +Chalupa +Chalupník +Chamberlain +Chambers +Chan +Chance +Chancellor +Chandler +Chang +Chaplin +Chapman +Chaput +Charbonneau +Charles +Charmchi +Charpentier +Charron +Chase +Chastain +Chaudhari +Chaudhary +Chaudhri +Chaudhuri +Chauvin +Chavarría +Chavdarov +Chaves +Chávez +Chayka +Chaykovsky +Chen +Cheng +Cheshire +Chester +Cheung +Chevalier +Chevrolet +Chey +Chia +Chiba +Chilikov +Chiu +Chlebek +Chmela +Chmiel +Cho +Choe +Choi +Chong +Chou +Choudhary +Choudhury +Chow +Chowdhury +Christensen +Christian +Christians +Christiansen +Christianson +Christinsen +Christison +Christoffersen +Christopher +Christophers +Christopherson +Chu +Chung +Church +Chvátal +Čiernik +Cinege +Cingolani +Cino +Ciobanu +Cipriani +Cisternino +Čížek +Čížik +Claasen +Clacher +Claes +Claesson +Clancy +Clark +Clarke +Clarkson +Clausen +Clay +Clayton +Cleary +Clemens +Clemensen +Clément +Clement +Clery +Cleveland +Clifford +Clifton +Cline +Clinton +Cloet +Close +Cloutier +Cobb +Coburn +Cock +Cockburn +Cocks +Cody +Coelho +Coello +Coeman +Coemans +Coenen +Coghlan +Cohen +Coiro +Cojocaru +Coke +Cokes +Cola +Colbert +Colby +Cole +Coleman +Colijn +Colin +Collingwood +Collins +Colombera +Colombo +Colón +Colquhoun +Colson +Colt +Colton +Columbo +Combs +Como +Comstock +Comtois +Confortola +Connell +Connelly +Conner +Connery +Connolly +Connor +Conroy +Constable +Constantin +Constantinescu +Constantino +Conti +Contreras +Cook +Cooke +Cookson +Coolen +Coombs +Cooney +Cooper +Copperfield +Coppola +Corcoran +Corey +Corleone +Corna +Cornell +Cornett +Corrà +Correa +Correia +Cortés +Cortez +Corti +Corvi +Corwin +Cory +Ćosić +Costa +Costantini +Costanzo +Coste +Côté +Cotterill +Couch +Coughlan +Coughlin +Coumans +Coupe +Courtemanche +Courtenay +Courtney +Courtois +Cousineau +Coutts +Couture +Cowden +Cox +Coy +Cracchiolo +Craig +Crawford +Cremaschi +Cremona +Cremonesi +Crespi +Crespo +Crewe +Crisp +Crnčević +Croce +Crocetti +Croft +Cropper +Cross +Crouch +Cruickshank +Crusan +Cruyssen +Cruz +Császár +Cseh +Csintalan +Csizmadia +Csonka +Csorba +Čtvrtník +Cucinotta +Cuéllar +Cuesta +Cuevas +Cuijper +Cuijpers +Cullen +Cummings +Cummins +Cunningham +Cuocco +Cuoco +Curran +Curry +Curtis +Cuyler +Cuyper +Cuypers +Cvetkov +Czajka +Czajkowski +Czinege +Daalman +Daalmans +Dabney +Da Costa +Daelman +Daelmans +D'Agostino +Dahl +Dahlman +Dahlmans +Dalca +Dale +Daley +Dalgaard +Dalí +Dallas +Dalton +Daly +Dam +D'Ambrosio +Damiani +D'Amore +Damyanov +Danailov +Danchev +Dane +Danell +D'Angelo +Daniau +Daniel +Daniell +Danielov +Daniels +Danielsen +Danielson +Danielsson +Dannel +Danniel +Danniell +D'Antonio +D'Aramitz +Darbinian +Darbinyan +Darby +Darcy +Darnell +Darrell +Darrow +Darwin +Darzi +Das +Daskalov +Daube +Daubney +Daugherty +Daviau +Dávid +David +Davidović +Davids +Davidsen +Davidson +Davidyan +Davies +Davin +Davis +Davison +Davtyan +Dawson +Day +Dayton +D'Cruz +D'Cruze +Deacon +Deadman +Deák +Dean +De Angelis +Debenham +De Campo +De Clerc +De Clercq +De Cloet +Dedrick +Deering +De Felice +De Filippis +De Fiore +Deforest +de Fresel +DeGarmo +Değirmenci +De Groot +Deighton +De Jong +De Jonker +De Klerk +De Kloet +Delacroix +De la Cruz +Dela Cruz +De La Fontaine +De la Fuente +Delaney +De Lang +De Lange +Delany +De Laurentis +Del Bosque +De León +Delgado +Del Olmo +De Lorenzo +Del Río +De Luca +Demetriou +Demir +Demirci +Demirović +Dempsey +Deng +Deniau +Deniaud +Deniel +Denis +Denman +Dennel +Dennell +Dennis +Denzel +Denzil +De Palma +Derby +De Rege +Derichs +Dermott +Derrick +Derricks +Derrickson +De Santiago +De Santis +Deschamps +Descoteaux +Desjardins +De Smet +Desmond +De Snaijer +Desroches +Desrosiers +De Veen +De Ven +Devereux +Devi +Devin +Devine +De Vitis +De Vito +Devlin +De Vos +Devos +De Vries +De Vroom +De Vroome +De Wit +De With +De Witt +De Witte +Dexter +Di Antonio +Dias +Díaz +Dibra +Di Caprio +Dick +Dickens +Dickenson +Dickinson +Dickman +Dickson +Diefenbach +Dierickx +Dieter +Dietrich +Díez +Dijkstra +Di Mercurio +Dimitriou +Dimitrov +Dimov +Di Napoli +Dinapoli +Dioli +Di Pasqua +Di Pietro +Dirchs +Dircks +Dircksens +Dirckx +Dirix +Dirks +Dirkse +Dirksen +Dirkx +Disney +Di Stefano +Dittmar +Dixon +Đỗ +Dobbs +Dobos +Dobrev +Dobson +Doctor +Dodge +Doherty +Dohman +Dolan +Doležal +Domínguez +Donaghue +Donalds +Donaldson +Donati +Dong +Donne +Donnell +Donnelly +D'Onofrio +Donoghue +Donohoe +Donohue +Donovan +Doran +Đorđević +Dorsey +Doubek +Dougherty +Douglas +Douglass +D'Ovidio +Downer +Doyle +Draganov +Dragić +Drago +Dragomirov +Dragov +Dragović +Drake +Draper +Drechsler +Drees +Dreesen +Dreesens +Dreessen +Dreher +Dreier +Dreschner +Dresdner +Dressler +Dreyer +Dries +Driessen +Driscoll +Droit +Drummond +Du +Duane +Duarte +Dubanowski +Dùbhghlas +Dubicki +Dubois +Duchamp +Duchamps +Dudley +Duerr +Duff +Duffy +Dufort +Dufour +Duguay +Duke +Dukes +Dumas +Dumbledore +Dumitrescu +Dumitru +Dumont +Dunai +Dunajski +Dunbar +Duncan +Duncanson +Dunkel +Dunn +Dunst +Dupond +Dupont +Dupuis +Dupuy +Durán +Durand +Durant +Durante +Đurić +Durnin +Dürr +Dušek +Dustin +Duval +Dvořák +Dwerryhouse +Dwight +Dyer +Dykstra +Dyson +Dziedzic +Eads +Eady +Earl +Earls +Easom +Eason +Easton +Eaton +Eberhardt +Ebner +Ebrahimi +Eccleston +Ecclestone +Echevarría +Echeverría +Eckstein +Edgar +Edison +Edvardsen +Edwards +Edwardson +Eerkens +Egawa +Egger +Eglītis +Eichel +Eide +Eikenboom +Eilerts +Einarsson +Ek +Eklund +Ekmekçi +El-Amin +Eld +Elder +Eldred +Eldridge +Elena +El-Ghazzawy +El-Hashem +Eliassen +Eliasson +Eliot +Eliott +Elizondo +Ellery +Ellington +Elliot +Elliott +Ellis +Ellison +Ellisson +Elliston +Ellsworth +Elmer +Elmersson +El-Mofty +Elvis +Elwes +Elwin +Elwyn +Ely +Elzinga +Emerson +Émile +Emmet +Emmett +Emmitt +Endicott +Engberg +Engel +English +Engman +Engström +Ennis +Enns +Episcopo +Erckens +Erdős +Erickson +Ericson +Ericsson +Eriksen +Eriksson +Erkens +Ermacora +Erős +Escamilla +Escárcega +Escarrà +Esparza +Espensen +Espenson +Espina +Espino +Espinosa +Espinoza +Esposito +Esser +Essert +Esteban +Esteves +Estévez +Estrada +Eszes +Étienne +Etxebarria +Etxeberria +Eustis +Evangelista +Evans +Evanson +Evelyn +Evensen +Evered +Everett +Everhart +Everill +Everly +Evers +Ewart +Expósito +Ezra +Fabbri +Fabbro +Fabel +Fábián +Fabian +Fabien +Fabre +Fabron +Faerber +Fairbairn +Fairburn +Fairchild +Fairclough +Falco +Falconer +Falk +Falkenrath +Fallon +Fan +Fannon +Faragó +Faraldo +Färber +Farina +Farkas +Farmer +Farnham +Farran +Farrell +Farro +Fashingbauer +Fattore +Faucher +Faucheux +Faulkner +Faure +Faust +Fausti +Fava +Favager +Favero +Favre +Favreau +Fay +Fazekas +Fear +Fedorov +Fehér +Feigenbaum +Fejes +Fekete +Feld +Feldt +Feliciano +Félix +Feng +Fenn +Fenstermacher +Ferber +Ferguson +Fermi +Fernandes +Fernández +Ferrara +Ferrari +Ferraro +Ferreira +Ferreiro +Ferrer +Ferrero +Ferreyra +Ferri +Ferro +Fertig +Fèvre +Fiala +Fiddler +Fiedler +Field +Fields +Fierro +Figueroa +Filep +Filipek +Filipov +Filipović +Filipowski +Filippi +Filippov +Finch +Findlay +Fini +Finlay +Finley +Finn +Finnegan +Finnin +Fiore +Firmin +Fiscella +Fischer +Fisher +Fishman +Fisker +Fitzgerald +Fitzpatrick +Fitzroy +Fitzsimmons +Fitzwilliam +Flanagan +Flanagon +Flannery +Flater +Fleischer +Fleming +Fletcher +Flintstone +Flipse +Flipsen +Flores +Floros +Floyd +Flynn +Fodor +Foerstner +Foley +Fonda +Fonseca +Fontaine +Fontana +Ford +Forest +Forester +Forestier +Forney +Forrest +Forsberg +Forst +Förstner +Fortier +Fortuin +Fortunato +Fortune +Fortuyn +Foss +Fosse +Foster +Foth +Fournier +Fowler +Fox +Francis +Franco +François +Franić +Franjić +Frank +Franke +Frankenstein +Franklin +Franklyn +Fransson +Franzese +Fraser +Frazier +Frederiksen +Fredriksen +Fredriksson +Freeman +Frei +Freitas +Freud +Freudenberger +Freund +Fried +Friedrich +Friel +Friseal +Frisk +Fromm +Frost +Fry +Frye +Fuchs +Fuentes +Fuhrmann +Fujimori +Fujimoto +Fujimura +Fujioka +Fujisawa +Fujita +Fujiwara +Fukui +Fukuzawa +Fuller +Fülöp +Fulton +Funar +Furlan +Furnadjiev +Fürst +Furukawa +Fusco +Fux +Fylan +Fyodorov +Gaál +Gabler +Gábor +Gabor +Gabrielli +Gabriels +Gabrielson +Gadhavi +Gadsby +Gaertner +Gage +Gagliardi +Gagne +Gagneux +Gagnier +Gagnon +Gajos +Gál +Gallagher +Gallego +Galli +Gallo +Gang +Ganza +Gao +Garb +Garber +Garbo +Garbutt +García +Garcia +Garçon +Gardener +Gardiner +Gardinier +Gardner +Gárdonyi +Garey +Garfagnini +Garfield +Garland +Garner +Garnet +Garnett +Garnier +Garofalo +Garrard +Garrastazu +Garret +Garrett +Garrido +Garrod +Garry +Gärtner +Garver +Gary +Garza +Gáspár +Gaspar +Gaspard +Gaspari +Gašper +Gass +Gates +Gatsby +Gatti +Gauthier +Gautier +Gavrilović +Gavrilyuk +Geary +Gebara +Geelen +Geels +Gehrig +Gehring +Geier +Geiger +Geisler +Geißler +Geissler +Geiszler +Gelashvili +Gelens +Genadiev +Genkov +Genov +Genovese +Gensch +Gentile +George +Georgeson +Georgiev +Georgiou +Gérard +Gerber +Gereben +Gerhard +Gerhardsson +Gerhardt +Gerig +Germain +Germano +Géroux +Gerst +Gerstle +Gerver +Gevorgian +Gevorgyan +Ghasabyan +Gheorghe +Giannino +Giannopoulos +Gibb +Gibbs +Gibson +Giehl +Giese +Giffard +Gil +Gilbert +Gilchrist +Giles +Gill +Gilliam +Gilroy +Gim +Giménez +Gimondi +Giordano +Giorgadze +Girard +Giraud +Giroux +Gismondi +Giugovaz +Giuliani +Giunta +Gjorgiev +Gladwin +Gladwyn +Glas +Glass +Glazier +Glen +Glenn +Glöckner +Glover +Glynn +Gniewek +Göbel +Goddard +Godfrey +Goebel +Goffe +Gold +Goldhirsch +Goldschmidt +Golob +Golub +Gomes +Gómez +Gomółka +Gomułka +Gonçalves +Gonzales +González +Good +Goode +Goodman +Goodwin +Goossens +Goranov +Göransson +Gorbold +Gordon +Gore +Gorecki +Goretti +Gori +Górka +Gorman +Görög +Górski +Gosse +Gosselin +Gott +Gotti +Gottlieb +Gottschalk +Gough +Gouveia +Grabowski +Grady +Graeme +Graf +Graham +Grahame +Grahn +Graner +Granger +Grant +Granville +Graves +Gray +Grayson +Grbić +Grec +Greco +Green +Greenberg +Greene +Greenspan +Greenwood +Greer +Gregory +Grenville +Grey +Grgić +Grier +Grieve +Griffin +Griffith +Griffiths +Grigorescu +Grigorov +Grigoryan +Grillo +Grimaldi +Gronchi +Groos +Gros +Gross +Groß +Große +Grosse +Größel +Großel +Großer +Grosser +Grossi +Grosso +Grósz +Grover +Groves +Gruber +Grünberg +Grünewald +Grünspan +Grześkiewicz +Guadarrama +Guan +Guarneri +Guérin +Guerra +Guerrero +Guerriero +Guidi +Guillaume +Guillory +Guillot +Guinness +Gujić +Gulbrandsen +Guldbrandsen +Guliyev +Gully +Gulyás +Gump +Gundersen +Gunnarsen +Gunnarsson +Günther +Gunther +Gunvaldsen +Guo +Gupta +Gustafsson +Gustavsson +Gutermuth +Gutiérrez +Gutierrez +Guttuso +Guzmán +Gwerder +Gwózdek +Gynt +Haak +Haakonsson +Haanraads +Haanraadts +Haanraats +Haas +Haase +Haber +Haberkorn +Habich +Habicht +Hackett +Hadaway +Haden +Hadjiev +Hadzhiev +Hadžić +Haenraets +Hafner +Hagen +Haggard +Hagihara +Hagopian +Hahn +Haig +Haight +Hailey +Haines +Hájek +Hajós +Håkansson +Hakim +Hakobyan +Halász +Hale +Haley +Hall +Halle +Hallman +Halloran +Halmi +Halvorsen +Hamaguchi +Hämäläinen +Hamasaki +Hambleton +Hamilton +Hamm +Hammond +Hampson +Hampton +Han +Hancock +Hanegan +Hanigan +Hanley +Hannigan +Hannigen +Hanraets +Hansen +Hanson +Hanssen +Hansson +Haraguchi +Haralampiev +Haraldsen +Haraldsson +Harden +Hardie +Harding +Hardwick +Hardy +Harel +Harford +Hargrave +Harlan +Harland +Harley +Harlow +Harmaajärvi +Harman +Harmon +Haroldson +Harper +Harrell +Harrelson +Harris +Harrison +Hart +Hartell +Hartley +Hartmann +Harutyunyan +Harvey +Həsənov +Hase +Hasegawa +Hasek +Hasenkamp +Hashemi +Hashiguchi +Hashimoto +Hass +Hathaway +Hatheway +Hathway +Hauer +Haugen +Haumann +Haupt +Häusler +Havel +Havelka +Havener +Havlíček +Havrylyuk +Haward +Hawk +Hawking +Hawkins +Hawthorne +Hayashi +Hayden +Hayes +Hayley +Haynes +Hayter +Hayward +Haywood +He +Head +Headley +Hearn +Heath +Hébert +Hedley +Heeren +Heffernan +Hegedűs +Heidrich +Heijman +Heijmans +Heikki +Heikkilä +Heikkinen +Heiman +Heimans +Heimisson +Heinonen +Heinrich +Heinrichs +Heintze +Heinz +Hellström +Henderson +Hendrickx +Hendriks +Hendrikx +Hendrix +Hendry +Hennessy +Hennig +Henningsen +Henriksen +Henriksson +Henriques +Henry +Henryson +Henson +Hepburn +Heppenheimer +Herbert +Herberts +Herbertson +Herbertsson +Herceg +Herczeg +Herczog +Herman +Hermann +Hermans +Hermansen +Hermanson +Hermansson +Hernández +Herrema +Herrera +Herrero +Herriot +Herrmann +Hersch +Herschel +Hershey +Hertz +Herzog +Hewitt +Hext +Heyman +Heymans +Hibbert +Hickey +Hicks +Hidaka +Hidalgo +Hiedler +Hier +Hierro +Higashi +Higgins +Hightower +Hildebrand +Hill +Hillam +Hilmarsson +Hilton +Himura +Hines +Hino +Hinrichs +Hintzen +Hiramatsu +Hirano +Hirata +Hirsch +Hirschel +Hisakawa +Hitler +Hjort +Hlaváč +Hlaváček +Ho +Hoàng +Hobbes +Hobbs +Hobson +Hoch +Hochberg +Hodges +Hodgson +Hodson +Hodžić +Hoedemaeker +Hoedemaekers +Hoedemaker +Hoedemakers +Hoefler +Hoek +Hoekstra +Hofer +Hoffman +Hoffmann +Höfler +Hofmann +Hofmeister +Hofwegen +Hogan +Hogarth +Hoggard +Holgersen +Holgersson +Holguín +Holland +Hollands +Hollins +Holm +Holmberg +Holme +Holmes +Holmström +Holmwood +Holst +Holt +Holtman +Holtz +Holub +Hölzer +Holzer +Holzknecht +Holzmann +Homewood +Honda +Honeycutt +Honeysett +Hooker +Hooper +Hoover +Hope +Hopkins +Hopper +Hopson +Horáček +Horák +Horn +Horne +Hornick +Horník +Horowitz +Horsfall +Horton +Horvat +Horváth +Horvatinčić +Hoshino +Hou +Houben +Houk +House +Houston +Houtkooper +Houtman +Hovanesian +Hovhannisyan +Howard +Howe +Howell +Howland +Howse +Hoxha +Hrabě +Hristov +Hrubý +Hruška +Hsieh +Hsu +Hu +Huang +Hubbard +Hüber +Huber +Hubert +Huddleson +Huddleston +Hudnall +Hudson +Huerta +Huff +Huffman +Huffmann +Hughes +Hull +Hult +Hume +Hummel +Humphrey +Hunnicutt +Hunnisett +Hunt +Hunter +Hurst +Hüseynov +Hussain +Hutchinson +Hutmacher +Hutson +Huxley +Huxtable +Huỳnh +Hyde +Hyland +Hynes +I +I'Anson +Ibáñez +Ibarra +Ibbot +Ibbott +Ibrahimović +Ibsen +Idowu +Iglesias +Ignácz +Ignatiev +Ignatov +Ihejirika +Ikeda +Ikin +Ilbert +Ilić +Iliescu +Iliev +Illés +Ilves +Im +Imai +Inaba +Inada +Ingersleben +Ingesson +Ingham +Ingólfsson +Ingram +Íñiguez +Iñíguez +Innes +Innocenti +Inoue +Ioannidis +Ionesco +Ionescu +Iordanou +Irvin +Irvine +Irving +Irwin +Isaacson +Isaev +Isaksen +Isaksson +Ishida +Ishikawa +İsmayılov +Ito +Itō +Itou +Iturburua +Ivankov +Ivanković +Ivanoŭ +Ivanov +Ivanović +Ivanovski +Ivanow +Ivarsson +Ivers +Iversen +Ivov +Iwai +Iwamoto +Iwasaki +Iwata +Iyer +Izumi +Jack +Jackman +Jackson +Jacobs +Jacobse +Jacobsen +Jacobson +Jacques +Jacquet +Jaeger +Jäger +Jager +Jagoda +Jahn +Jahoda +Jain +Jakab +Jakeman +Jakobsen +Jakobsson +James +Jameson +Jamison +Jamshidi +Janda +Jandáček +Janíček +Jankauskas +Jankovic +Janković +Jankovič +Jankovics +Jankowski +Janowski +Jans +Jansen +Jansens +Jansing +Jansingh +Jansink +Janson +Jansons +Janssen +Janssens +Jansson +Janvier +Janz +Janzen +Jardine +Jarrett +Järvi +Järvinen +Jarvis +Jaskólski +Jaskulski +Jaso +Jasso +Jean +Jeanes +Jedlička +Jedynak +Jeffers +Jefferson +Jeffery +Jeffries +Jehlička +Jekyll +Jelen +Jeleń +Jelínek +Jenkins +Jennings +Jensen +Jenson +Jenssen +Jensson +Jeong +Jephson +Jeppesen +Jepson +Jerković +Jernigan +Jérôme +Jerome +Jervis +Jespersen +Jesus +Jewel +Jewell +Jež +Jeż +Ježek +Jiang +Jiménez +Jin +Jinks +Jo +Jó +Johannessen +Jóhannsson +Johansen +Johansson +John +Johns +Johnsen +Johnson +Johnsson +Johnston +Joiner +Jokela +Jokinen +Jokumsen +Jöllenbeck +Joly +Jonaitis +Jónás +Jonasen +Jonasson +Jonckers +Jones +Jonker +Jonkers +Jonkheer +Jönsson +Jonsson +Joó +Joossens +Joosten +Jordà +Jordan +Jørgensen +Joseph +Josephs +Josephson +Joshi +Joubert +Jovanović +Jovanovski +Joyce +Joyner +Juárez +Judd +Jughashvili +Jugovac +Juhász +Julien +Jundt +Jung +Junge +Jurić +Juriša +Jusić +Kaczka +Kaczmarek +Kádár +Kader +Kadeř +Kadlec +Kafka +Kahler +Kaiser +Kalb +Kalbfleisch +Kalmár +Kalniņš +Kaloyanchev +Kaloyanov +Kałuża +Kaluža +Kamau +Kamiński +Kamiya +Kanda +Kane +Kaneko +Kang +Kanzaki +Kapanadze +Kappel +Karamazov +Kardos +Karga +Karim +Karimi +Kariuki +Karjalainen +Karl +Karlsen +Karlsson +Kárpáthy +Kárpáti +Kárpáty +Karppinen +Karstensen +Kartal +Kasabian +Kask +Kašpar +Kaspar +Kaspersen +Kasprzak +Kästner +Kasun +Katırcı +Kato +Kató +Katō +Katona +Katou +Katsaros +Katz +Kaube +Käufer +Kaufer +Kauffmann +Kaufman +Kaufmann +Kaur +Kavaliauskas +Kavalioŭ +Kavalyow +Kavanagh +Kavanah +Kavanaugh +Kawa +Kawaguchi +Kawakami +Kawasaki +Kay +Kayode +Kazama +Kazlauskas +Kazloŭ +Kazlow +Kean +Keane +Kearney +Kecskeméti +Kedves +Kędzierski +Keefe +Keegan +Keeley +Keely +Keen +Keighley +Keil +Keir +Keith +Kelemen +Keller +Kelley +Kellogg +Kelly +Kelsey +Kemény +Kemp +Kempf +Kendal +Kendall +Kendrick +Kennard +Kennedy +Keo +Kerekes +Kermit +Kermode +Kerner +Kerper +Kerr +Kerry +Kersey +Kertész +Kevorkian +Key +Keyes +Keys +Khachaturian +Khachaturyan +Khan +Khoroushi +Kidd +Kiefer +Kijek +Kikkert +Kilduff +Killam +Killough +Kilpatrick +Kim +Kimball +Kimberley +Kimberly +Kimura +King +Kingsley +Kingston +Kinley +Kinnaird +Kinsey +Kinsley +Kipling +Király +Kirby +Kirch +Kirchner +Kirk +Kis +Kishimoto +Kiss +Kistler +Kistner +Kita +Kitagawa +Kitchen +Kitchens +Kjær +Kjeldsen +Kjellsson +Klaasen +Kladivo +Klassen +Klasson +Klausen +Kleid +Klein +Klement +Klerk +Klerken +Klerks +Klerkse +Klerkx +Klerx +Klíma +Klímek +Klimek +Kloet +Kloeten +Klossner +Knaggs +Knef +Kneib +Kneller +Knepp +Knežević +Knight +Knochenmus +Knopf +Knopp +Knowles +Knox +Knudsen +Knutsen +Knutson +Knutsson +Ko +Kobayashi +Kóbor +Koç +Koch +Kock +Kocsis +Koeman +Koemans +Koenig +Koenigsmann +Köhl +Kohl +Köhler +Kohler +Kohout +Kohut +Koizumi +Kokkinos +Kokot +Kolář +Kolar +Kolarić +Kolbe +Kolen +Kolijn +Kollen +König +Königsmann +Koning +Konishi +Konstantinov +Kontos +Kool +Koole +Koolen +Kools +Koopman +Kopecký +Kopitar +Kopp +Koppel +Korhonen +Korošec +Korrapati +Kos +Košar +Koskinen +Kosmatka +Kostelecký +Koszorús +Koumans +Kováč +Kovac +Kovač +Kovačević +Kovačevič +Kovách +Kovachev +Kovačić +Kovačič +Kovács +Kovalchuk +Kovalenko +Kovalev +Kovalyov +Kovář +Kováts +Kövér +Kowalczyk +Kowalski +Kozel +Kozieł +Kozioł +Kozlov +Kozłow +Kozłowski +Kraemer +Krajnc +Krakowski +Král +Kráľ +Kralj +Krall +Kramář +Krämer +Kramer +Krantz +Kranz +Krastev +Kratochvil +Kraus +Krause +Krauss +Krauß +Kravchenko +Kravitz +Krawczyk +Krawiec +Krebs +Krejči +Krikorian +Kristensen +Kristiansen +Kristoffersen +Kříž +Križman +Kröger +Król +Kron +Krstevski +Krückel +Krüger +Kruger +Krūmiņš +Krupa +Krupin +Kruse +Krusen +Kuang +Kubo +Kučera +Küchler +Küçük +Kudrna +Kuhn +Kuijlaars +Kuijpers +Kuiper +Kuipers +Kukk +Kulkarni +Kulmala +Kumagai +Kumar +Kumięga +Kundakçı +Kundert +Kunkel +Kunkle +Kuntz +Kunz +Kunze +Kurata +Kuroda +Kuroki +Kurosawa +Kurucz +Kurz +Kurzmann +Kusumoto +Kuznetsov +Kwan +Kwiatkowski +Kwok +Kyle +Kyler +Kyles +Kynaston +Kyselý +Laakkonen +Laaksonen +Labelle +Labriola +Lacey +Lachance +Lachapelle +Làconi +Lacroix +Lacy +Lafrentz +Lafrenz +Laganà +Lager +Lagomarsino +Lagorio +Lagounov +Laguardia +Lagunov +Lahti +Lahtinen +Laine +Laird +Laitinen +Lakatos +Lam +Lama +Lamar +Lamarre +Lamb +Lambert +Lamberti +Lamon +Lamont +Landau +Landi +Lando +Landolfi +Landon +Landvik +Lane +Lång +Lang +Langbroek +Langdon +Lange +Langenberg +Langer +Langlais +Langley +Langlois +Láník +Laninga +Lannon +Lantos +Lapointe +Larsen +Larson +Larsson +Larue +Łaska +Láska +László +Laterza +Lau +Laukkanen +Laurens +Laurent +Laurenz +Laurito +Lauritsen +Laursen +Lauwens +Lauwers +Lavigne +Lavoie +Law +Ławniczak +Lawrence +Lawrenz +Lawson +Layton +Lázár +Lazarov +Lazzari +Lê +Leach +Léandre +Leary +Leavitt +Lebeau +Lebedev +Leblanc +Lebrun +Lecce +Leccese +Leclair +Leclerc +Leclercq +Lécuyer +Ledford +Lee +Leeuwenhoek +Lefebvre +Lefèvre +Leggièri +Legrand +Lehmann +Lehr +Lehrer +Lehtinen +Lehtonen +Leifsson +Leigh +Leighton +Leitner +Leitz +Leitzke +Lemaire +Lémieux +Lemmi +Lemoine +Lengyel +Lenin +Lennartsson +Lennon +Lennox +Lenox +Lenz +Léon +León +Leon +Leonard +Leonardi +Leonardsen +Leonardson +Leonardsson +Leone +Leoni +Leroux +Leroy +Lesauvage +Lesley +Leslie +Lester +Lestrange +Leung +Lévêque +Leverenz +Lévesque +Levi +Levine +Levitt +Lewandowski +Lewerentz +Lewerenz +Lewin +Lewis +Leyton +Li +Liang +Liao +Lichtenberg +Lie +Lien +Liepiņš +Lim +Lin +Lincoln +Lind +Lindbeck +Lindberg +Linden +Lindgren +Lindholm +Lindon +Lindquist +Lindqvist +Lindsay +Lindsey +Lindström +Linna +Linton +Linville +Linwood +Lippi +Lis +Lister +Lithgow +Little +Liu +Ljung +Ljungborg +Ljunggren +Ljungman +Ljungstrand +Llewellyn +Lloyd +Llywelyn +Lo +Lobo +Locatelli +Lockwood +Loewe +Löfgren +Logan +Lohrenz +Loman +Lombardi +Lombardo +Lomidze +Lončar +London +Long +Longo +Longstaff +Lopes +López +Lopez +Lorentz +Lorenz +Lorenzen +Lorenzo +Loris +Loritz +Losa +Losnedahl +Louis +Lovász +Love +Lovel +Lovell +Lovrić +Low +Löwe +Lowe +Lowell +Lowry +Loyola +Lozano +Lu +Lucas +Lucassen +Lučić +Ludvigsen +Ludwig +Lukács +Lukeson +Lukić +Lum +Luna +Lund +Lundberg +Lunde +Lundgren +Lundin +Lundquist +Lundqvist +Lundström +Lungu +Luo +Lupei +Lupo +Lupu +Lusk +Luther +Luzzatto +Lyall +Lykke +Lyle +Lynch +Lyndon +Lyne +Lynn +Lynton +Lynwood +Lyon +Lyons +Ma +Maas +Mac Alastair +MacAlastair +Mac Amhalghaidh +MacAmhalghaidh +Mac an Aba +Mac an Baird +Mac an Bhaird +Mac an Fhilidh +Mac an Fleisdeir +Mac an Ghoill +MacAngus +Mac an tSagairt +Mac an tSaoir +Mac Aodha +Mac Aodhagáin +MacAoidh +MacAonghais +Macar +Macaulay +Macauley +MacBay +MacBeth +Mac Branáin +MacBride +Mac Cába +MacCàba +Mac Cadáin +MacCailein +MacCallion +MacCallum +MacCarrick +Mac Cárthaigh +MacCarthy +MacChruim +Mac Cionaodha +MacCionaodha +Mac Cléirich +MacClellan +MacClelland +MacClery +Mac Cnáimhín +MacCoinnich +MacColuim +Mac Conmara +MacConnell +Mac Cormaic +MacCormaic +MacCoughlan +MacCrum +MacCrumb +Mac Daibhéid +MacDaniel +MacDermott +MacDhòmhnaill +MacDhubhghaill +MacDhubhshìth +Mac Dhuibh +Mac Dhuibhinse +Mac Dhuibhshíthe +Mac Diarmada +Mac Domhnaill +MacDonald +MacDougall +MacDuff +Mac Eachairn +MacEachern +MacEalair +MacEanruig +Macek +MacEntire +Mac Eoghain +MacEòghainn +Macey +MacFarland +MacFarlane +MacFhionnlaigh +Mac Fhlannchaidh +Mac Ghabhann +MacGillEain +MacGilleChrìosd +MacGilleFhaolain +MacGinnis +Mac Giolla Bhrighde +Mac Giolla Dhuibh +Mac Giolla Eoin +Mac Giolla Fhaoláin +Mac Giolla Phádraig +Mac Giolla Rí +Mac Giolla Ruaidh +MacGowan +MacGregor +MacGriogair +MacGrory +MacGuinness +MacGuire +Machado +Macháň +Macías +MacInnes +MacIntyre +Mac Íomhair +MacIomhair +MacIver +MacKay +MacKenna +MacKenny +MacKenzie +MacLean +MacLeod +MacLeòid +Mac Maghnuis +MacMathan +Mac Mathghamhna +Mac Naoimhín +MacNeachdainn +Mac Neachtain +MacNeil +Mac Néill +MacNèill +MacNevin +Mac Niadh +MacNiven +Mac Óda +Maçon +Mac Pharlain +MacPhàrlain +MacQueen +MacRae +Mac Reachtain +Mac Ruaidhrí +MacRuaraidh +Mac Shuibhne +Mac Síthigh +Mac Suibhne +MacTàmhais +Mac Thaidhg +MacThaoig +Mac Uileagóid +MacWilliam +Macy +Madden +Maddison +Maddox +Madeira +Madigan +Madison +Madsen +Maeda +Maekawa +Maes +Maessen +Maestri +Magalhães +Mag Aonghuis +Magee +Mag Eochadha +Mägi +Magnusson +Magorian +Mag Raith +Magro +Mag Shamhradháin +Mag Uidhir +Maguire +Magyar +Mah +Mahoney +Maier +Maina +Maisuradze +Majewski +Mäkelä +Maki +Mäkinen +Maksimov +Maldonado +Malinowski +Malley +Mallon +Mallory +Malloye +Malone +Mały +Malý +Məmmədov +Man +Mancini +Manco +Mancuso +Mandel +Mandelbaum +Manfredi +Manfredonia +Mangold +Mann +Mantovani +Manz +Maradona +Marangoz +Marchand +Marchegiano +Marchesi +Marchetti +Marchi +Marchioni +Marco +Marconi +Mårdh +Marek +Mari +María +Maria +Mariani +Marić +Marie +Marín +Marin +Marini +Marino +Marinos +Marinov +Marion +Marjanović +Mark +Markey +Markó +Markov +Marković +Markusson +Markwardt +Marley +Marlow +Marlowe +Marmo +Marquardt +Marquering +Marques +Márquez +Marsden +Marsh +Marshall +Marston +Marszałek +Martel +Martell +Martelli +Martens +Mårtensson +Martí +Martikainen +Martín +Martin +Martínek +Martinek +Martinelli +Martínez +Martinez +Martini +Martinov +Martinović +Martins +Martinsen +Martinson +Martinsson +Márton +Martz +Marušić +Maruška +Maruska +Marvin +Mas +Mašek +Máselník +Masi +Masin +Maślanka +Mason +Massey +Masson +Masters +Masterson +Mata +Mataracı +Mateev +Matei +Matějka +Mateu +Mateus +Matevosian +Matevosyan +Mathers +Matheson +Mathews +Mathewson +Mathiasen +Mathieson +Mathieu +Mathisen +Matić +Matijević +Matos +Matoušek +Matsson +Matsubara +Matsuda +Matsumoto +Matsumura +Matsuoka +Matsushita +Matthews +Matthewson +Matthiasen +Mattsson +Matveev +Maurer +Maus +Maxwell +May +Mayer +Mayes +Maynard +Mazur +Mazza +McAdams +McAfee +McAlister +McArthur +McBride +McCabe +McCaig +McCallum +McCarthy +McCauley +McCleary +McClellan +McClelland +McConnell +McCormick +McCoy +McCracken +McCrae +McCreery +McCrory +McCrum +McCune +McDaniel +McDermott +McDevitt +McDonald +McDougall +McEachern +McElligott +McEwan +McFarland +McFarlane +McFee +McFly +McGee +McGill +McGinnis +McGough +McGovern +McGowan +McGregor +McGuinness +McGuire +McInnes +McIntyre +McIver +McKay +McKee +McKeever +McKellar +McKendrick +McKenna +McKenzie +McKinley +McKinney +McKowen +McLain +McLean +McLeod +McMahon +McManus +McNab +McNabb +McNamara +McNaughton +McNeal +McNee +McNeil +McNeill +McNeilly +McNiel +McNiven +McPhee +McQueen +McRae +McReynolds +McSheehy +McTaggart +McTavish +McWilliam +Meadows +Meaney +Medeiros +Medina +Medved +Medveď +Meeuwes +Meeuwessen +Meeuwis +Meeuwissen +Meeuwsen +Megalos +Meggyesfalvi +Mehmedović +Meier +Meijer +Mein +Meindl +Meinhardt +Meir +Meisner +Meissner +Mejía +Meléndez +Melnik +Melnyk +Melo +Melsbach +Melville +Melvin +Mencher +Mendel +Mendelsohn +Mendelssohn +Mendes +Méndez +Mendoza +Menéndez +Mercer +Merchant +Mercier +Merckx +Merkel +Merle +Merlo +Merrick +Merricks +Merrill +Merritt +Mertens +Merx +Messana +Messer +Messerli +Messina +Messmann +Messner +Mészáros +Metaxas +Metharom +Metz +Metzger +Meunier +Meyer +Meyrick +Mhasalkar +Miazga +Michael +Michaelis +Michaels +Michaelson +Michalak +Michalski +Michaud +Michel +Michelakakis +Michelakis +Michelakos +Micheli +Michiels +Midgley +Mihailović +Mihajlović +Mihaljević +Mihaylov +Mihov +Mikaelsson +Mikhailov +Mikkelsen +Mikolajczak +Milani +Milano +Milburn +Miles +Milford +Milić +Millard +Miller +Millhouse +Milligan +Mills +Millward +Milne +Milojević +Milošević +Milovanović +Milton +Minami +Minett +Mingo +Minkov +Miranda +Mishra +Misra +Mitchell +Mittelman +Miura +Miyagawa +Miyajima +Miyake +Miyamoto +Miyashita +Miyata +Miyazaki +Mizuno +Mizushima +Mizutani +Mladenovski +Mlakar +Mlynář +Mlynárik +Mochizuki +Modugno +Moe +Moen +Moffett +Mogensen +Mohammad +Mohammed +Mohan +Mohren +Moles +Molina +Möller +Møller +Mollown +Molloy +Molnár +Moloney +Monaghan +Monahan +Mondadori +Monday +Mondo +Mondy +Monet +Monette +Monk +Monroe +Montagna +Montagne +Montague +Montaña +Montana +Montanari +Monte +Montero +Montgomery +Monti +Moon +Mooney +Moore +Mooren +Moores +Moors +Mooshian +Mora +Morales +Moralez +Morandi +Moravec +Moray +Morce +Moreau +Morel +Morello +Moreno +Moretti +Morgan +Morgenstern +Mori +Moriarty +Morikawa +Morimoto +Morin +Morishita +Morison +Morita +Moriyama +Morozov +Morra +Morris +Morrish +Morrison +Morriss +Morse +Mortensen +Mortimer +Morton +Moschella +Mosconi +Moser +Moses +Moss +Moto +Motta +Mottershead +Mould +Moulin +Mounce +Moździerz +Mueller +Muggia +Muhammad +Muhlfeld +Muir +Mulder +Mullane +Mullen +Müller +Muller +Mulligan +Mullins +Mulloy +Mulrennan +Mulryan +Mun +Muñoz +Munro +Munroe +Munson +Muraro +Muratović +Murdoch +Murdock +Murgatroyd +Murgia +Murphy +Murray +Murtas +Mushyan +Musiał +Musil +Mussolini +Mustonen +Mutō +Mutton +Muyskens +Mwangi +Myers +Myles +Mynatt +Myška +Naaji +Nacar +Næss +Naess +Nagarkar +Nagasawa +Nagel +Naggi +Naggia +Nagi +Nagy +Najjar +Najm +Nakagawa +Nakahara +Nakai +Nakajima +Nakamura +Nakano +Nakashima +Naldi +Namgung +Nana +Nani +Nanni +Nannini +Naoumov +Napoleoni +Napoletani +Napoli +Napoliello +Narang +Nardi +Nardo +Nardovino +Narváez +Nasato +Nascimbene +Nascimbeni +Nash +Nass +Natale +Nathans +Nathanson +Naumov +Navarro +Nave +Navrátil +Nazaretian +Nazaretyan +Nazarian +Nazario +Nazaryan +Neal +Necchi +Nedbálek +Nedvěd +Neely +Negrescu +Negri +Negrini +Neil +Nejem +Nelissen +Nelli +Nelson +Němec +Němeček +Nemes +Német +Németh +Nenci +Nepi +Neri +Neroni +Nervetti +Nervi +Nespola +Nespoli +Ness +Neuman +Neumann +Neuville +Neville +Nevin +Newell +Newman +Newport +Newton +Ng +Ngo +Ngô +Nguyễn +Nguyen +Nibhanupudi +Nicastro +Nicchi +Nicholls +Nichols +Nicholson +Nickleby +Nicodemo +Nicolai +Nicolas +Nicolescu +Nicolosi +Nicolson +Nicosia +Nicotera +Nieddu +Nielsen +Nielson +Niemczyk +Niemec +Niemi +Nieminen +Nieri +Nieto +Nieves +Nifterick +Nifterik +Niftrik +Nigel +Nigro +Niklasson +Nikolaev +Nikolajsen +Nikolić +Nikolov +Nikolovski +Nikula +Niles +Nilsen +Nilsson +Nishikawa +Nishimura +Nishiyama +Nisi +Nissen +Niven +Nixon +Nizzola +Noel +Noguchi +Nogueira +Noguera +Nolan +Nordskov +Nordström +Norling +Norman +Normand +Norris +North +Northrop +Norton +Nørup +Norup +Norwood +Noschese +Nosek +Notaro +Nováček +Novák +Novak +Novik +Novikov +Novosad +Novotný +Nowak +Nowakowski +Nowell +Nowicki +Noyer +Nozawa +Nunes +Núñez +Nuremberg +Nurmi +Nussbaum +Nussenbaum +Nyberg +Nye +Nyilas +Nyitrai +Nykvist +Nylund +Nyquist +Nyqvist +Nyström +O +Oakley +Obama +Obando +Ó Baoghill +O'Beirne +O'Berne +Oberst +Oberti +Oberto +O'Boyle +Ó Brádaigh +Ó Bradáin +Ó Braoin +Ó Braonáin +Ó Briain +O'Brian +O'Brien +Ó Broin +Ó Buachalla +O'Byrne +Ó Caiside +O'Callaghan +Ó Caoimh +Ó Caoimháin +Ó Caoindealbháin +Ó Caolaidhe +Ó Catháin +Ó Cathaláin +Ó Cathasaigh +Ó Ceallacháin +Ó Ceallaigh +Ó Cearmada +Ó Ceithearnaigh +Ochoa +Ó Ciardha +Ó Cinnéidigh +Ó Cléirigh +O'Clery +Ó Cnáimhín +Ó Cochláin +Ó Coigligh +Ó Coileáin +Ó Comhraidhe +Ó Conaill +Ó Conaire +Ó Conchobhair +Ó Conghalaigh +O'Connell +O'Connor +Ó Corcráin +Ó Corra +Ó Corraidhín +Ó Cuaig +Ó Cuana +Ó Cuidighthigh +Ó Cuilinn +Ó Cuinn +Ó Cuinneagáin +Ó Cuirc +Ó Dálaigh +Ó Damháin +Ó Deasmhumhnaigh +Odell +Ó Deoradháin +Ó Díomasaigh +Ó Dochartaigh +Ó Doibhilin +Ó Doirnáin +Ó Domhnaill +Ó Donnchadha +Ó Donndubháin +O'Donnell +Ó Donnghaile +O'Doyle +Ó Dubháin +Ó Dubhghaill +Ó Dubhshláin +Ó Dubhshláine +Ó Dubhthaigh +Ó Duibh +Oelberg +Ó Fallamháin +Ó Faoláin +Ó Fearghail +Offermans +Ó Fionnagáin +Ó Fionnáin +Ó Flannagáin +Ó Flannghaile +Ó Floinn +Ó Foghladha +Ó Frighil +Ó Gallchobhair +Ogawa +Ogden +Ognianov +Ognyanov +Ó Gormáin +O'Gorman +Ó Gráda +Ogtrop +Oh +Ó hAllmhuráin +O'Hanegan +O'Hanigan +O'Hannagain +Ó hAnnagáin +O'Hannagan +O'Hannegan +O'Hannigain +O'Hannigan +Ó hAodha +Ó hAonghuis +O'Hara +Ó hEachthighearna +Ó hEaghra +O'Hearn +Ó hÉideáin +Ó hEidhin +Ó hÉidín +Ó hEidirsceóil +Ó hÍcidhe +Ó hIfearnáin +Ohme +Ó hÓgáin +Ó hUiginn +Ojeda +Okabe +Okafor +Okamoto +Okamura +O'Kane +Okazaki +O'Keefe +Okeke +Okonkwo +Okorie +Okumura +Ola +Oláh +Olander +Ó Laoghaire +Olasz +Olayinka +Ó Leannáin +O'Leary +Oleastro +Olesen +Olguín +Oliveira +Oliver +Oliversen +Oliverson +Oliversson +Olivier +Oliynyk +Olmo +Olmos +Olofsdotter +Olofsson +Ó Loingsigh +Olsen +Olson +Olsson +Ó Luain +Ölvirsson +Ó Madaidhín +Ó Máille +O'Malley +Öman +Ó Manacháin +Ó Maoil Eoin +Ó Maoil Riain +Ó Maoilsheachlainn +Ó Maolagáin +Ó Maoláin +Ó Maol Aodha +Ó Maol Bhréanáin +Ó Maol Dhomhnaigh +Ó Maolmhuaidh +Ó Maonaigh +Ó Marcaigh +Ó Mathghamhna +Omdahl +Ó Meadhra +Ó Meara +Ó Mocháin +O'Mooney +Ó Muircheartach +Ó Muireadhaigh +Ó Murchadha +O'Neal +O'Neill +Ó Néill +Ong +Ongaro +O'Niall +Ono +Ó Nualláin +Oomen +Oorschot +Opeyemi +Oppenheimer +Ó Proinntigh +Oquendo +Ó Rabhartaigh +Ó Raghailligh +Orbán +O'Reilly +Orellana +Orenstein +Ó Riagáin +Ó Riain +Ó Rinn +Ó Ríoghbhárdáin +Oriol +Orlando +Orlov +Orman +Ormond +Ormonde +Ó Rodagh +Orosz +Orsini +Ortega +Ortiz +Ó Ruadháin +Ó Ruaidh +Osborne +Osbourne +Ó Scolaidhe +Ó Seachnasaigh +Ó Séaghdha +Ó Seanáin +Ó Seighin +O'Shaughnessy +O'Shea +Ōshiro +Ó Síoda +Ó Sirideáin +Ó Sluaghadháin +Östberg +Østberg +Øster +Østergaard +Østergård +Ostrowski +Ó Suaird +Ó Súileabháin +O'Sullivan +Ó Tadhgáin +Ó Taidhg +Ó Téacháin +Otero +Otieno +Ó Tíghearnaigh +Otis +O'Toole +Ó Treasaigh +Ott +Otten +Otto +Ottosen +Ottosson +Ó Tuathail +Otxoa +Oursler +Outlaw +Outterridge +Overton +Ovesen +Owen +Owens +Owston +Ozoliņš +Ozolinsh +Ozols +Pabst +Pace +Pachis +Paddon +Padilla +Padmore +Padovan +Padovano +Pagani +Pagano +Page +Paget +Pahlke +Paige +Pain +Paisley +Pajari +Pakulski +Pál +Palazzo +Palencia +Palladino +Pallesen +Palmeiro +Palmer +Palmisano +Palomer +Palomo +Palumbo +Pan +Pander +Panders +Pandev +Panossian +Panosyan +Pantoja +Panza +Panzavecchia +Papadimitriou +Papadopoulos +Papageorgiou +Papaioannou +Pape +Papke +Papoutsis +Papp +Paquet +Pardo +Paredes +Parent +Paris +Parish +Parisi +Park +Parker +Parkins +Parkinson +Parks +Parma +Pärn +Parodi +Parri +Parrino +Parris +Parrish +Parry +Parsamyan +Parsons +Partanen +Pascal +Pascual +Passerini +Pasternack +Pasternak +Pastor +Pastore +Paszek +Pásztor +Pataki +Patel +Patenaude +Paternoster +Paterson +Patil +Patrick +Patrickson +Patriksson +Patterson +Patton +Paul +Paulauskas +Paulis +Paulissen +Paulsen +Paulson +Pauwels +Pavesi +Pavía +Pavia +Pavić +Pavičić +Pavletić +Pavlov +Pavlović +Pavlovski +Pavlovsky +Pavone +Pavoni +Pawlak +Pawlitzki +Pawłowski +Paxton +Payne +Payton +Paz +Peacock +Peak +Pearce +Pearson +Pecháček +Peck +Pecora +Pedersen +Pedrotti +Peel +Peerenboom +Peeters +Pei +Pék +Pekkanen +Peláez +Pellé +Pellegrino +Pelletier +Pelley +Peltonen +Pemberton +Peña +Pender +Penders +Peng +Penn +Penner +Penners +Penny +Pensak +Pentti +Penzak +Penzig +Penzik +Pereira +Pereiro +Pereyra +Pérez +Perez +Perić +Périgord +Perkins +Perko +Perković +Perrault +Perreault +Perrin +Perrot +Perry +Persson +Perugia +Pesaresi +Pesaro +Pesce +Pešek +Pesti +Pesty +Péter +Peter +Peters +Petersen +Peterson +Petersson +Pethes +Petit +Pető +Petőcs +Petőfi +Petran +Petrauskas +Petrescu +Petri +Petrić +Petrosyan +Petrov +Petrović +Petrovski +Pettersen +Pettersson +Pettigrew +Peura +Peusen +Peynirci +Peyton +Pfaff +Pfeiffer +Pfenning +Phạm +Phan +Phelps +Pherigo +Philippe +Philips +Phillips +Piątek +Piazza +Picard +Picasso +Piccirillo +Piccoli +Pichler +Pickering +Pickle +Pierce +Pierno +Pierre +Pierson +Pietri +Pilgrim +Pilkvist +Pinheiro +Pinho +Pini +Pintér +Pinto +Piontek +Piotrowski +Piovene +Piper +Piraino +Pisani +Pitt +Pittaluga +Pitts +Plamondon +Planche +Planck +Plank +Planque +Plaskett +Platt +Plešec +Pleško +Pletcher +Pletscher +Plourde +Pocock +Podsedník +Poggi +Poggio +Pohl +Poindexter +Poingdestre +Poirier +Poirot +Pokorni +Pokorny +Pokorný +Polák +Poletti +Polley +Pollock +Pololáník +Polzin +Pond +Pontecorvo +Poole +Pop +Popa +Pope +Popescu +Popławski +Popov +Popovski +Poppins +Porcher +Porra +Porras +Porsche +Portelli +Porter +Portner +Porto +Portoghese +Pospíšil +Post +Potenza +Potočnik +Potter +Pottinger +Poulin +Poulsen +Pound +Powell +Power +Powers +Pozzi +Pratt +Pražak +Prebensen +Prescott +Presley +Pressley +Preston +Pretorius +Price +Prichard +Priddy +Priestley +Prieto +Prifti +Prinsen +Prinz +Pritchard +Probert +Procházka +Profeta +Prohászka +Prosdocimi +Protz +Proudfoot +Proulx +Provenza +Provenzano +Prunty +Pryce +Pryor +Puerta +Puga +Pugh +Pugliese +Puig +Pulkrábek +Purcell +Puskás +Pusztai +Putin +Putnam +Qadir +Quaranta +Quattrocchi +Queen +Quesada +Quick +Quickley +Quigg +Quigley +Quijada +Quijano +Quijote +Quincey +Quincy +Quinlan +Quinn +Quiñones +Quintana +Quirk +Quirke +Quirós +Quixada +Quixano +Quixote +Quliyev +Rácz +Radcliff +Radclyffe +Rademacher +Rademaker +Rademakers +Radev +Radić +Radkov +Radu +Rae +Rafferty +Ragno +Ragnvaldsson +Raimondi +Raines +Rains +Rais +Rake +Rakes +Ralston +Ramaker +Ramakers +Rameckers +Ramires +Ramírez +Ramos +Ramsay +Ramsey +Rana +Randal +Randall +Randell +Randrup +Raneri +Ranta +Rantanen +Rao +Rapallino +Rapp +Raptis +Rasch +Rask +Raskob +Raskop +Raskopf +Rasmussen +Rasputin +Ratti +Rattray +Rautio +Ravenna +Ravn +Ray +Rayne +Ré +Read +Readdie +Ready +Reagan +Reardon +Rebane +Redondo +Reece +Reed +Reenberg +Rees +Reese +Reeve +Reeves +Regan +Regenbogen +Řeha +Reich +Reid +Reier +Reiher +Reijnders +Reilly +Reinders +Reis +Reiter +Remington +Ren +Renard +Renaud +Renault +Rendón +Rennell +Rennold +Rennoll +Resnik +Rettig +Reuter +Revie +Rey +Reyer +Reyes +Reynders +Reynell +Reynolds +Řezníček +Řezník +Rhee +Rhodes +Rhydderch +Ribeiro +Riber +Ricchetti +Ricci +Rice +Richard +Richards +Richardson +Richelieu +Richter +Rickard +Rider +Ridge +Ridley +Rieck +Riese +Rietveld +Rigby +Riggi +Righi +Rigó +Rijnders +Riker +Riley +Rimmer +Rinaldi +Rinne +Riordan +Ríos +Rios +Ripley +Ritter +Riva +Rivas +Rivera +Rivero +Rivers +Rivière +Rizzo +Roach +Robbins +Robert +Roberts +Robertsen +Robertson +Róbertsson +Robertsson +Robin +Robinson +Robledo +Robles +Robson +Robustelli +Rocca +Rocchi +Rocco +Rocha +Roche +Roderick +Rodgers +Rodney +Rodrigues +Rodríguez +Rodriquez +Róg +Roger +Rogers +Rogerson +Roggeveen +Roig +Roijackers +Roijakkers +Rojas +Rojo +Roldán +Rolland +Rollins +Rolvsson +Roma +Romà +Romagna +Romagnoli +Romano +Romanov +Romão +Rome +Romeijn +Romeijnders +Romeijnsen +Romero +Romijn +Romijnders +Romijnsen +Romilly +Rompa +Roncalli +Ronchi +Rooijakkers +Roosa +Roosevelt +Rosa +Rosales +Rosário +Rosario +Roscoe +Rose +Rosenberg +Rosenberger +Rosenfeld +Ross +Rossi +Rossini +Rostami +Rot +Roth +Rothbauer +Rothenberg +Rothschild +Rotolo +Rounds +Rousseau +Roussel +Roux +Rovigatti +Rowan +Rowbottom +Rowe +Rowland +Rowntree +Roxas +Roy +Royce +Royceston +Roydon +Royer +Royle +Royston +Rózsa +Ruan +Ruane +Rubio +Rudaski +Rudawski +Ruf +Ruff +Ruggeri +Ruggiero +Ruggles +Ruiz +Rundström +Ruoho +Ruotsalainen +Rush +Ruskin +Rusnak +Russel +Russell +Russo +Rustici +Rusu +Rutgers +Rutherford +Rutherfurd +Rutkowski +Rutten +Ruud +Růžička +Ruzsa +Ruzzier +Ryan +Ryba +Rybár +Rybář +Ryder +Rye +Ryer +Ryland +Ryley +Ryskamp +Saab +Saar +Saari +Saarinen +Sabbadin +Sacco +Sachs +Sackville +Sadık +Sadler +Sadowski +Saito +Saitō +Saitou +Sakamoto +Sala +Salamanca +Salamon +Salazar +Salcedo +Salihović +Salinas +Saller +Salminen +Salmon +Salo +Salomon +Salonen +Salucci +Salvage +Salvaggi +Salvatici +Salvi +Salzwedel +Samara +Samaras +Sampson +Sams +Samsa +Samson +Samuel +Samuels +Samuelson +Samuelsson +Sanada +Sánchez +Sanchez +Sandberg +Sander +Sanders +Sanderson +Sandford +Sándor +Sandoval +Sands +Sandström +Sanford +Sangster +Sanna +San Nicolás +Sano +Sansone +Santana +Santiago +Santini +Santo +Santoro +Santos +Sanz +Sapienti +Sappington +Saqqaf +Sargent +Sargsyan +Sarka +Sarkisian +Sarkissian +Sarkisyan +Sárközi +Sarkozi +Sárközy +Sarkozy +Sarno +Sarti +Sartini +Sarto +Sartor +Sartore +Sartre +Sas +Sasaki +Sass +Sastre +Sato +Satō +Satou +Sauber +Sauer +Sault +Saunders +Sauter +Sauvage +Sauvageau +Sauvageon +Sauvageot +Sauveterre +Savage +Savatier +Savege +Savidge +Savona +Sawyer +Sayer +Saylor +Scarlett +Scarpa +Scarsi +Scavo +Schäfer +Scheer +Scheinberg +Schenck +Schenk +Scherer +Schermer +Schindler +Schirmer +Schlender +Schlimme +Schlösser +Schlosser +Schmeling +Schmid +Schmidt +Schmitt +Schmitz +Schneider +Schneiders +Schneijder +Schnell +Schnoor +Schnur +Schofield +Scholz +School +Schoorel +Schoorl +Schorel +Schöttmer +Schovajsa +Schräder +Schrader +Schreck +Schreiber +Schreier +Schrijnemakers +Schröder +Schroeder +Schroeter +Schröter +Schubert +Schuchard +Schuchardt +Schuchert +Schuhart +Schuhmacher +Schuler +Schult +Schulte +Schultes +Schultheis +Schultheiss +Schultheiß +Schultz +Schultze +Schulz +Schulze +Schumacher +Schuster +Schüttmann +Schuyler +Schwangau +Schwartz +Schwarz +Schwarzenberg +Schwarzenegger +Schweitzer +Schwenke +Schwinghammer +Sciacca +Sciacchitano +Sciarra +Scola +Scordato +Scott +Scotti +Scriven +Scrivener +Scrivenor +Scrivens +Scrooge +Scully +Seabrook +Seabrooke +Seaver +Sebastiani +Sedláček +Sedlák +Seeger +Seegers +Seelen +Seelenfreund +Segal +Segers +Seghers +Segreti +Seidel +Seki +Selby +Selvaggio +Sempers +Senft +Senior +Sepp +Seppä +Seppänen +Sepúlveda +Serafim +Serafin +Serafini +Șerban +Seres +Sergeant +Serizawa +Serpico +Serra +Serrano +Sessa +Sessions +Ševčík +Severijns +Séverin +Severins +Sevriens +Seward +Sexton +Seymour +Sgro +Shafir +Shah +Shain +Shakespeare +Shannon +Shapiro +Sharma +Sharman +Sharp +Sharpe +Sharrow +Shaughnessy +Shaw +Shea +Sheach +Shearer +Sheedy +Sheehy +Sheenan +Shehu +Sheinfeld +Shelby +Shelton +Shen +Shepard +Shepherd +Sheppard +Sherazi +Sherburn +Sherburne +Sheridan +Sherman +Shevchenko +Shevchuk +Shibuya +Shimada +Shimamura +Shimizu +Shin +Shine +Shinkawa +Shinoda +Shinohara +Shinozaki +Shirai +Shiraishi +Shiratori +Shirazi +Shirley +Short +Shriver +Shvets +Shwetz +Siddall +Sidney +Siebert +Siegel +Sieger +Siegert +Siekert +Siemon +Siena +Sienkiewicz +Sierra +Sierżant +Sigurdsson +Sigurðsson +Sikora +Silje +Silva +Silveira +Silver +Silverstein +Silvestri +Šimek +Simen +Simeonov +Simmon +Simmons +Simms +Simões +Šimon +Simón +Simon +Simoneit +Šimonis +Simonis +Simons +Simonsen +Simonson +Simonsson +Simpkin +Simpson +Sims +Šimunović +Sinagra +Sinclair +Singh +Sipos +Siskin +Siskind +Sitko +Sitz +Sjöberg +Sjögren +Skála +Skała +Skalický +Skeates +Skinner +Skjeggestad +Skov +Skovgaard +Skywalker +Slade +Slane +Śląski +Slater +Slávik +Slavík +Slavkov +Ślązak +Slezák +Sloan +Sloane +Slootmaekers +Slováček +Slovák +Ślusarczyk +Ślusarski +Slusser +Small +Smalls +Smedley +Smeets +Smets +Smirnov +Smit +Smith +Smits +Smola +Smolak +Smolarek +Smythe +Snaaijer +Snaijer +Sneiders +Sneijder +Sneijders +Sneijer +Sneijers +Snel +Snell +Snelling +Snider +Sniders +Śniegowski +Snijder +Snijders +Snyder +Snyders +Soares +Sobel +Soból +Sobol +Söderberg +Sokal +Sokół +Sokol +Sokoll +Sokolof +Sokoloff +Sokolov +Sokolovsky +Sokołowski +Sokolsky +Solak +Solberg +Soldati +Soler +Solo +Solomon +Solos +Sólyom +Somma +Sommer +Somogyi +Son +Song +Sonnen +Sordi +Sörensen +Sørensen +Sorenson +Sörensson +Sorg +Sorge +Soriano +Sörös +Sorrentino +Sosa +Soto +Souček +Soucy +Soun +Sourd +Sousa +Southers +Southgate +Souza +Sovány +Sowards +Sówka +Spada +Spalding +Spannagel +Spanò +Sparacello +Sparks +Spear +Spearing +Spears +Specht +Speight +Spellmeyer +Spence +Spencer +Speziale +Spijker +Spiker +Spillum +Spini +Spiros +Spitz +Spitznagel +Spitznogle +Sponaugle +Spooner +Spurling +Spyros +Stabile +Stablum +Stacey +Stack +Stacks +Stacy +Stafford +Stainthorpe +Stamp +Stan +Stanek +Stanev +Stanford +Stankevičius +Stankić +Stankiewicz +Stanković +Stanley +Stanton +Stárek +Starek +Stark +Starosta +Starr +Starrett +Stasiuk +Statham +Stauss +Stavros +Stawski +Steed +Steele +Steen +Steensen +Stefanidis +Stefanov +Stefanović +Stefansen +Stefánsson +Stefansson +Steffen +Steffensen +Stein +Steiner +Steinmann +Steinsson +Stenberg +Stendahl +Stenger +Štěpánek +Stephanidis +Stephens +Stephenson +Sterling +Stern +Sternberg +Steube +Steuben +Stevens +Stevenson +Stewart +Stidolph +Stieber +Stigsson +Stilo +Stirling +Stjepanić +St John +St Martin +Stoddard +Stoica +Stojanov +Stojanović +Stojanovski +Stolarz +Stone +Stoppelbein +Storstrand +Stoyanov +St Pierre +Strand +Strange +Straub +Street +Strickland +Stringer +Strnad +Strobel +Strohkirch +Ström +Strøm +Stroman +Strong +Stroud +Strudwick +Struna +Stuart +Stuber +Stück +Stueck +Stumpf +Sturm +Styles +Suárez +Suchý +Sudworth +Suen +Suero +Suess +Suggitt +Sugimoto +Sugita +Sugiura +Sugiyama +Sullivan +Sultan +Sultana +Sulzbach +Summerfield +Summers +Sumner +Sun +Sundberg +Sundén +Sundström +Sung +Süss +Süß +Susskind +Sutherland +Sutton +Suzuki +Svéd +Svendsen +Svensen +Svenson +Svensson +Svoboda +Swallow +Swango +Swanson +Sweeney +Sweet +Swift +Swindlehurst +Switzer +Sydney +Sýkora +Symonds +Symons +Szabó +Szabolcsi +Szántó +Szarka +Szarvas +Szczepański +Székely +Szekeres +Szép +Szewc +Szilágyi +Szőke +Szombathy +Szűcs +Szwarc +Szwed +Szweda +Szwedko +Szymański +Tachibana +Tadić +Tafani +Taft +Taggart +Tahirović +Tähtinen +Tailler +Tailor +Takács +Takahashi +Takala +Takeda +Takenaka +Takeuchi +Tamaro +Tamás +Tamboia +Tamboli +Tamm +Tamura +Tan +Tanaka +Tang +Tangeman +Tani +Taniguchi +Tanner +Tanzer +Tanzi +Tapia +Tar +Tarantino +Targaryen +Tarpinian +Tarr +Tash +Tasker +Tasse +Tate +Tatham +Tatton +Tatum +Taube +Taverna +Tawfeek +Tawfiq +Taylor +Tchaikovsky +Teagan +Teague +Teahan +Tedesco +Teel +Tehrani +Teixeira +Teke +Temitope +Tennfjord +Tennison +Tennyson +Ter Avest +Terranova +Terrazas +Terrell +Terry +Terzi +Terzić +Tesař +Tesařik +Tessaro +Testa +Teufel +Teunissen +Thacker +Thälmann +Thatcher +Thayer +Theunissen +Thibault +Thomas +Thomassen +Thompkins +Thompsett +Thompson +Thomson +Thorburn +Þórirsson +Thorley +Thorn +Thorne +Thornton +Thorpe +Thorsen +Thrussell +Thurstan +Thwaite +Tian +Tiedeman +Tiedemann +Tierney +Tifft +Tighe +Tilki +Tillens +Tímár +Timberlake +Tindall +Tinker +Tipton +Tiraboschi +Tirrell +Tiryaki +Tisza +Tittensor +Tivoli +Tjäder +Tkachenko +Tkachuk +Tobias +Tobin +Tod +Todaro +Todd +Todorov +Toft +Toivonen +Tolbert +Toledano +Tolkien +Tollemache +Toller +Toloni +Tolvaj +Tomàs +Tómasson +Tomasson +Tomčić +Tomczak +Tomić +Tomov +Tong +Toole +Tordai +Tornincasa +Török +Torosian +Torosyan +Torres +Tos +Tosell +Toselli +Toset +Tosetti +Tosi +Tosto +Tót +Tóth +Towner +Townsend +Toyoda +Tracey +Tracy +Trajkovski +Trần +Tran +Trapani +Trask +Traver +Travere +Travers +Traversa +Traverse +Traversi +Traversini +Traverso +Travert +Traves +Travieso +Travis +Traviss +Traylor +Treacy +Treloar +Tremblay +Tremble +Trengove +Trent +Trevis +Trevor +Trifonov +Triggs +Tritten +Troelsen +Troy +Trucco +Trudeau +Trudu +Trueman +Trujillo +Truman +Trumbauer +Trump +Tsang +Tschida +Tse +Tso +Tsui +Tsukuda +Tsunoda +Tsvetanov +Tsvetkov +Tucker +Tuff +Tuft +Tumicelli +Tunison +Tuominen +Tupper +Turati +Turchi +Turnbull +Turner +Tveit +Twist +Tyler +Tyree +Tyrell +Tyrrell +Tyson +Uberti +Ubiña +Uccello +Uchiyama +Ueda +Uehara +Ueno +Uesugi +Uggeri +Ughi +Ulfsson +Underhill +Underwood +Ungaretti +Ungaro +Ungur +Unkle +Unruh +Unterbrink +Upton +Urbina +Urbonas +Ureña +Urquhart +Utkin +Uzun +Vacca +Vaccaro +Vacek +Vacík +Vadas +Văduva +Valdez +Vale +Valencia +Valenta +Valenti +Valentini +Valentinov +Valeriev +Valerio +Valiente +Valjean +Vámos +Văn +Van Aalsburg +Van Aalst +Van Aarle +Van Achteren +Van Achthoven +Van Adrichem +Van Aggelen +Van Agteren +Van Agthoven +Van Akkeren +Van Aller +Van Alphen +Van Alst +Van Altena +Van Althuis +Van Amelsvoort +Van Amersvoort +Van Amstel +Van Andel +Van Ankeren +Van Antwerp +Van Antwerpen +Van Apeldoorn +Van Arendonk +Van As +Van Asch +Van Assen +Van Baarle +Van Bokhoven +Van Breda +Van Bueren +Van Buggenum +Van Buren +Van Can +Van Cann +Vance +Vanchev +Vančura +Van Daal +Van Daalen +Van Dael +Van Daele +Van Dale +Vandale +Van Dalen +Van de Laar +Van den Akker +Van den Andel +Van den Berg +Van der Aart +Van der Beek +Van der Berg +Van der Hout +Van der Laar +Van der Stoep +Van der Veen +Van der Ven +Van der Venne +Van der Vennen +Van der Zee +Van de Vliert +Van Dijk +Van Donk +Vandroogenbroeck +Vaněk +Vanev +Vång +Vang +Vanhanen +Van Hassel +Van Hautum +Van Heel +Van Herten +Van Hofwegen +Van Hoorn +Van Horn +Van Hout +Van Houte +Van Houtem +Van Houten +Van Houttum +Van Houtum +Van Kan +Van Kann +Vankov +Van Laar +Van Laren +Van Leeuwenhoek +Van Middelburg +Van Middlesworth +Vann +Van Nifterick +Van Nifterik +Van Niftrik +Van Ogtrop +Van Oirschot +Van Oorschot +Van Ophoven +Van Peij +Van Pey +Van Rompa +Van Rompaey +Van Rompay +Van Rompaye +Van Rompu +Van Rompuy +Van Rossem +Van Rossum +Van Schoorl +Vantchev +Van 't Hout +Van Tonder +Van Veen +Van Veenen +Van Wegberg +Van Wieren +Van Willigen +Varano +Vardanyan +Varela +Varga +Vargas +Vargha +Varley +Varnham +Vartanian +Vašek +Vasile +Vasilescu +Vasilev +Vasiliauskas +Vasilyev +Vásquez +Vass +Vastag +Vastagh +Vasylyk +Vasylyshyn +Vaughan +Vaughn +Vávra +Vázquez +Vega +Vela +Velasco +Velásquez +Velázquez +Velichkov +Velitchkov +Vemulakonda +Venäläinen +Vencel +Venczel +Venner +Ventimiglia +Ventura +Verboom +Veres +Vergoossen +Verhoeven +Verity +Vermeulen +Vernersen +Vernon +Verona +Veronesi +Ververs +Vervloet +Vescovi +Vesela +Veselý +Vespa +Vestergaard +Vestri +Vicario +Vicente +Vico +Victor +Victors +Victorsson +Vida +Vidal +Vidović +Vieth +Vigo +Viktorov +Vilar +Vilaró +Vilhjálmsson +Villa +Villalobos +Villanueva +Villar +Villaverde +Villeneuve +Vincent +Vinci +Vincze +Vinković +Vinogradov +Vinter +Viola +Vipond +Virág +Virgo +Virtanen +Visscher +Visser +Vitale +Vitali +Viteri +Vivas +Vives +Vladimirescu +Vlahović +Vlasák +Vlašić +Vlašič +Vlček +Võ +Voclain +Vodenicharov +Vogel +Vogels +Vogt +Vogts +Voigt +Voigts +Volk +Volkov +Voll +Vollan +Voltolini +Von Brandt +Von Essen +Von Grimmelshausen +Von Ingersleben +Vonnegut +Voronin +Vörös +Vos +Voss +Voß +Vossen +Vroom +Vroomen +Vrubel +Vũ +Vukoja +Vuković +Wada +Wade +Wägner +Wagner +Wähner +Wahner +Wakefield +Waldfogel +Waldo +Waldroup +Waldvogel +Walentowicz +Walkenhorst +Walker +Wallace +Wallach +Waller +Wallis +Walmsley +Walsh +Walter +Walters +Walterson +Waltersson +Walther +Walton +Waltz +Wang +Ward +Wardrobe +Ware +Warner +Warren +Warrick +Warshawsky +Warszawski +Warwick +Wash +Washington +Wasilewski +Watanabe +Waterman +Waters +Watkins +Watson +Watt +Wattana +Watts +Wauters +Wawrzaszek +Waxweiler +Way +Wayne +Weasley +Weaver +Webb +Weber +Webster +Wechsler +Wedekind +Weeber +Weekes +Wegener +Wegner +Wehner +Wehnert +Wehunt +Weigand +Weimann +Weiner +Weiss +Weiß +Welch +Wells +Welter +Wembley +Wen +Wendel +Wendell +Werner +Wernher +Wescott +Wesley +West +Westbrook +Westcott +Westenberg +Westerberg +Westley +Weston +Wetzel +Wexler +Whalen +Wheatley +Wheeler +Wheelock +Whelan +Whinery +Whitaker +White +Whitehead +Whitney +Whittemore +Whittle +Wiater +Wibawa +Wibowo +Wickham +Wieck +Wiegand +Wilbur +Wilcox +Wild +Wilder +Wildgrube +Wiley +Wilk +Wilkerson +Wilkie +Wilkins +Wilkinson +Willard +Willems +Willemse +Willemsen +Willey +William +Williams +Williamson +Willis +Willoughby +Wilmer +Wilms +Wilson +Wilton +Winchester +Windsor +Winfield +Winkler +Winograd +Winogrodzki +Winship +Winslow +Winston +Winter +Winterbottom +Winther +Winthrop +Winton +Wirner +Wirnhier +Wirt +Wirth +Wiśniewski +Witherspoon +Wojciechowski +Wójcik +Wojda +Wojewoda +Wojewódka +Wojewódzki +Wolanski +Wolf +Wolfe +Wolff +Wolter +Wolters +Womack +Wong +Wood +Woodcock +Woodham +Woodhams +Woodrow +Woods +Woodward +Woolf +Wootton +Wörner +Wörnhör +Wortham +Wouters +Woźniak +Wragge +Wray +Wright +Wrona +Wronski +Wruck +Wu +Wuopio +Wyatt +Wyman +Wyndham +Wynne +Wyrick +Wyrzyk +Wyrzykowski +Xanthopoulos +Xiao +Xie +Xu +Xun +Xylander +Yakovlev +Yamada +Yamagishi +Yamaguchi +Yamamoto +Yamasaki +Yamashita +Yamauchi +Yamazaki +Yancy +Yanev +Yang +Yankov +Yap +Yasuda +Yates +Ybarra +Yeung +Yi +Yılmaz +Yokota +Yong +Yonker +Yonkers +Yoon +Yordanov +York +Yoshida +Yoshino +Yoshioka +Young +Younge +Yount +Yoxall +Yu +Yuan +Yuen +Yukimura +Yun +Zaal +Zabala +Ząbek +Zahariev +Zahradník +Zając +Zaman +Zambrano +Zamorano +Zanetti +Zangari +Zapatero +Zappa +Zariņš +Zavala +Zawisza +Żbikowski +Zdravkov +Zdunowski +Zeegers +Zeelen +Zegers +Zelenka +Zelenko +Zellweger +Zeman +Zeng +Zeni +Zentai +Zhang +Zhao +Zheng +Zhivkov +Zhou +Zhu +Ziegler +Zieliński +Ziemniak +Zientek +Ziętek +Zilberschlag +Zilberstein +Zima +Zimman +Zimmerman +Zimmermann +Zingel +Zini +Zino +Ziskind +Žitnik +Živković +Zlatkov +Zoltánfi +Zorić +Zsoldos +Zubizarreta +Zuiderduin +Žukauskas +Żukowski +Zuñiga +Zunino +Župan +Zupan +Zupančič +Żuraw +Zyma diff --git a/evennia/contrib/utils/name_generator/namegen.py b/evennia/contrib/utils/name_generator/namegen.py new file mode 100644 index 0000000000..8f1a3f1c49 --- /dev/null +++ b/evennia/contrib/utils/name_generator/namegen.py @@ -0,0 +1,432 @@ +""" +# Random Name Generator + +Contribution by InspectorCaracal (2022) + +A module for generating random names, both real-world and fantasy. Real-world +names can be generated either as first (personal) names, family (last) names, or +full names (first, optional middles, and last). The name data is from [Behind the Name](https://www.behindthename.com/) +and used under the [CC BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0/). + +Fantasy names are generated from basic phonetic rules, using CVC syllable syntax. + +Both real-world and fantasy name generation can be extended to include additional +information via your game's `settings.py` + +## Usage + +Import the module where you need it with the following: +```py +from evennia.contrib.utils.name_generator import namegen +``` + +By default, all of the functions will return a string with one generated name. +If you specify more than one, or pass `return_list=True` as a keyword argument, +the returned value will be a list of strings. + +The module is especially useful for naming newly-created NPCs, like so: +```py +npc_name = namegen.full_name() +npc_obj = create_object(key=npc_name, typeclass="typeclasses.characters.NPC") +``` + +## Generating Real Names + +The contrib offers three functions for generating random real-world names: +`first_name()`, `family_name()`, and `full_name()`. If you want more than one name +generated at once, you can use the `num` keyword argument to specify how many. + +Example: +``` +>>> namegen.first_name(num=5) +['Genesis', 'Tali', 'Budur', 'Dominykas', 'Kamau'] +``` + +The `first_name` function also takes a `gender` keyword argument to filter names +by gender association. 'f' for feminine, 'm' for masculine, 'mf' for feminine +_and_ masculine, or the default `None` to match any gendering. + +The `full_name` function also takes the `gender` keyword, as well as `parts` which +defines how many names make up the full name. The minimum is two: a first name and +a last name. You can also generate names with the family name first by setting +the keyword arg `surname_first` to `True` + +Example: +``` +>>> namegen.full_name() +'Keeva Bernat' +>>> namegen.full_name(parts=4) +'Suzu Shabnam Kafka Baier' +>>> namegen.full_name(parts=3, surname_first=True) +'Ó Muircheartach Torunn Dyson' +>>> namegen.full_name(gender='f') +'Wikolia Ó Deasmhumhnaigh' +``` + +### Adding your own names + +You can add additional names with the settings `NAMEGEN_FIRST_NAMES` and +`NAMEGEN_LAST_NAMES` + +`NAMEGEN_FIRST_NAMES` should be a list of tuples, where the first value is the name +and then second value is the gender flag - 'm' for masculine-only, 'f' for feminine- +only, and 'mf' for either one. + +`NAMEGEN_LAST_NAMES` should be a list of strings, where each item is an available +surname. + +Examples: +```py +NAMEGEN_FIRST_NAMES = [ + ("Evennia", 'mf'), + ("Green Tea", 'f'), + ] + +NAMEGEN_LAST_NAMES = [ "Beeblebrox", "Son of Odin" ] +``` + +If you want to replace all of the built-in name lists with your own, set +`NAMEGEN_REPLACE_LISTS = True` + +## Generating Fantasy Names + +Generating completely made-up names is done with the `fantasy_name` function. The +contrib comes with three built-in styles of names which you can use, or you can +put a dictionary of custom name rules into `settings.py` + +Generating a fantasy name takes the ruleset key as the "style" keyword, and can +return either a single name or multiple names. By default, it will return a +single name in the built-in "harsh" style. + +```py +>>> namegen.fantasy_name() +'Vhon' +>>> namegen.fantasy_name(num=3, style="fluid") +['Aewalisash', 'Ayi', 'Iaa'] +``` + +### Custom Fantasy Name style rules + +The style rules are contained in a dictionary of dictionaries, where the style name +is the key and the style rules are the dictionary value. + +The following is how you would add a custom style to `settings.py`: +```py +NAMEGEN_FANTASY_RULES = { + "example_style": { + "syllable": "(C)VC", + "consonants": [ 'z','z','ph','sh','r','n' ], + "start": ['m'], + "end": ['x','n'], + "vowels": [ "e","e","e","a","i","i","u","o", ], + "length": (2,4), + } +} +``` + +Then you could generate names following that ruleset with +`namegen.fantasy_name(style="example_style")`. + +#### syllable +The "syllable" field defines the structure of each syllable. C is consonant, V is vowel, +and parentheses mean it's optional. So, the example "(C)VC" means that every syllable +will always have a vowel followed by a consonant, and will *sometimes* have another +consonant at the beginning. + +*Note:* While it's not standard, the contrib lets you nest parentheses, with each layer +being less likely to show up. Additionally, any other characters put into the syllable +structure - e.g. an apostrophe - will be read and inserted as written. Check out the +"alien" style rules in the module for an example of both. + +#### consonants +A simple list of consonant phonemes that can be chosen from. Multi-character strings are +perfectly acceptable, such as "th", but each one will be treated as a single consonant. + +The function uses a naive form of weighting, where you make a phoneme more likely to +occur by putting more copies of it into the list. + +#### start and end +These are **optional** lists for the first and last letters of a syllable, if they're +a consonant. You can add on additional consonants which can only occur at the beginning +or end of a syllable, or you can add extra copies of already-defined consonants to +increase the frequency of them at the start/end of syllables. + +They can be left out of custom rulesets entirely. + +#### vowels +Works exactly like consonants, but is instead used for the vowel selection. Single- +or multi-character strings are equally fine, and you can increase the frequency of +any given vowel by putting it into the list multiple times. + +#### length +A tuple with the minimum and maximum number of syllables a name can have. + +When setting this, keep in mind how long your syllables can get! 4 syllables might +not seem like very many, but if you have a (C)(V)VC structure with one- and +two-letter phonemes, you can get up to eight characters per syllable. +""" + +import random +import re +from os import path +from django.conf import settings + +# Load name data from Behind the Name lists +dirpath = path.dirname(path.abspath(__file__)) +_FIRSTNAME_LIST = [] +with open(path.join(dirpath, "btn_givennames.txt"),'r', encoding='utf-8') as file: + _FIRSTNAME_LIST = [ line.strip().rsplit(" ") for line in file if line and not line.startswith("#") ] + +_SURNAME_LIST = [] +with open(path.join(dirpath, "btn_surnames.txt"),'r', encoding='utf-8') as file: + _SURNAME_LIST = [ line.strip() for line in file if line and not line.startswith("#") ] + +# Define phoneme structure for built-in fantasy name generators. +_FANTASY_NAME_STRUCTURES = { + "harsh": { + "syllable": "CV(C)", + "consonants": [ "k", "k", "k", "z", "zh", "g", "v", "t", "th", "w", "n", "d", "d", ], + "start": ["dh", "kh", "kh", "kh", "vh", ], + "end": ["n", "x", ], + "vowels": [ "o", "o", "o", "a", "y", "u", "u", "u", "ä", "ö", "e", "i", "i", ], + "length": (1,3), + }, + "fluid": { + "syllable": "V(C)", + "consonants": [ 'r','r','l','l','l','l','s','s','s','sh','m','n','n','f','v','w','th' ], + "start": [], + "end": [], + "vowels": [ "a","a","a","a","a","e","i","i","i","y","u","o", ], + "length": (3,5), + }, + "alien": { + "syllable": "C(C(V))(')(C)", + "consonants": [ 'q','q','x','z','v','w','k','h','b' ], + "start": ['x',], + "end": [], + "vowels": [ 'y','w','o','y' ], + "length": (1,5), + }, + +} + +_RE_DOUBLES = re.compile(r'(\w)\1{2,}') + +# Load in optional settings + +custom_first_names = settings.NAMEGEN_FIRST_NAMES if hasattr(settings, "NAMEGEN_FIRST_NAMES") else [] +custom_last_names = settings.NAMEGEN_LAST_NAMES if hasattr(settings, "NAMEGEN_LAST_NAMES") else [] + +if hasattr(settings, "NAMEGEN_FANTASY_RULES"): + _FANTASY_NAME_STRUCTURES |= settings.NAMEGEN_FANTASY_RULES + +if hasattr(settings, "NAMEGEN_REPLACE_LISTS") and settings.NAMEGEN_REPLACE_LISTS: + _FIRSTNAME_LIST = custom_first_names or _FIRSTNAME_LIST + _SURNAME_LIST = custom_last_names or _SURNAME_LIST + +else: + _FIRSTNAME_LIST += custom_first_names + _SURNAME_LIST += custom_last_names + + + +def fantasy_name(num=1, style="harsh", return_list=False): + """ + Generate made-up names in one of a number of "styles". + + Keyword args: + num (int) - How many names to return. + style (string) - The "style" of name. This references an existing algorithm. + return_list (bool) - Whether to always return a list. `False` by default, + which returns a string if there is only one value and a list if more. + """ + # validate num first + num = int(num) + if num < 1: + raise ValueError("Number of names to generate must be positive.") + + if style not in _FANTASY_NAME_STRUCTURES: + raise ValueError(f"Invalid style name: '{style}'.") + style_dict = _FANTASY_NAME_STRUCTURES[style] + + syllable = [] + weight = 8 + # parse out the syllable structure with weights + for key in style_dict["syllable"]: + # parentheses mean optional - allow nested parens + if key == "(": + weight = weight/2 + elif key == ")": + weight = weight*2 + else: + if key == "C": + type = "consonants" + elif key == "V": + type = "vowels" + else: + type = key + # append the sound type and weight + syllable.append( (type, int(weight)) ) + + name_list = [] + + # time to generate a name! + for n in range(num): + # build a list of syllables + length = random.randint(*style_dict['length']) + name = "" + for i in range(length): + # build the syllable itself + syll = "" + for sound, weight in syllable: + # random chance to skip this key; lower weights mean less likely + if random.randint(0,8) > weight: + continue + + if sound not in style_dict: + # extra character, like apostrophes + syll += sound + continue + + # get a random sound from the sound list + choices = list(style_dict[sound]) + + if sound == "consonants": + # if it's a starting consonant, add starting-sounds to the options + if not len(syll): + choices += style_dict.get('start',[]) + # if it's an ending consonant, add ending-sounds to the options + elif i+1 == length: + choices += style_dict.get('end',[]) + + syll += random.choice(choices) + + name += syll + + # condense repeating letters down to a maximum of 2 + name = _RE_DOUBLES.sub(lambda m: m.group(1)*2, name) + # capitalize the first letter + name = name[0].upper() + name[1:] if len(name) > 1 else name.upper() + name_list.append(name) + + if len(name_list) == 1 and not return_list: + return name_list[0] + return name_list + +def first_name(num=1, gender=None, return_list=False, ): + """ + Generate first names, also known as personal names. + + Keyword args: + num (int) - How many names to return. + gender (str) - Restrict names by gender association. `None` by default, which selects from + all possible names. Set to "m" for masculine, "f" for feminine, "mf" for androgynous + return_list (bool) - Whether to always return a list. `False` by default, + which returns a string if there is only one value and a list if more. + """ + # validate num first + num = int(num) + if num < 1: + raise ValueError("Number of names to generate must be positive.") + + if gender: + # filter the options by gender + name_options = [ name_data[0] for name_data in _FIRSTNAME_LIST if all([gender_key in gender for gender_key in name_data[1]])] + if not len(name_options): + raise KeyError(f"Invalid gender key '{gender}'.") + else: + name_options = [ name_data[0] for name_data in _FIRSTNAME_LIST ] + + # take a random selection of `num` names, without repeats + results = random.sample(name_options,num) + + if len(results) == 1 and not return_list: + # return single value as a string + return results[0] + + return results + + +def family_name(num=1, return_list=False): + """ + Generate family names, also known as surnames or last names. + + Keyword args: + num (int) - How many names to return. + return_list (bool) - Whether to always return a list. `False` by default, + which returns a string if there is only one value and a list if more. + """ + # validate num first + num = int(num) + if num < 1: + raise ValueError("Number of names to generate must be positive.") + + # take a random selection of `num` names, without repeats + results = random.sample(_SURNAME_LIST,num) + + if len(results) == 1 and not return_list: + # return single value as a string + return results[0] + + return results + +def full_name(num=1, parts=2, gender=None, return_list=False, surname_first=False): + """ + Generate complete names with a personal name, family name, and optionally middle names. + + Keyword args: + num (int) - How many names to return. + parts (int) - How many parts the name should have. By default two: first and last. + gender (str) - Restrict names by gender association. `None` by default, which selects from + all possible names. Set to "m" for masculine, "f" for feminine, "mf" for androgynous + return_list (bool) - Whether to always return a list. `False` by default, + which returns a string if there is only one value and a list if more. + surname_first (bool) - Default `False`. Set to `True` if you want the family name to be + placed at the beginning of the name instead of the end. + """ + # validate num first + num = int(num) + if num < 1: + raise ValueError("Number of names to generate must be positive.") + # validate parts next + parts = int(parts) + if parts < 2: + raise ValueError("Number of name parts to generate must be at least 2.") + + name_lists = [] + + middle = parts-2 + if middle: + # calculate "middle" names. + # we want them to be an intelligent mix of personal names and family names + # first, split the total number of middle-name parts into "personal" and "family" at a random point + total_mids = middle*num + personals = random.randint(1,total_mids) + familys = total_mids - personals + # then get the names for each + personal_mids = first_name(num=personals, gender=gender, return_list=True) + family_mids = family_name(num=familys, return_list=True) if familys else [] + # splice them together according to surname_first.... + middle_names = family_mids+personal_mids if surname_first else personal_mids+family_mids + # ...and then split into `num`-length lists to be used for the final names + name_lists = [ middle_names[num*i:num*(i+1)] for i in range(0,middle) ] + + # get personal and family names + personal_names = first_name(num=num, gender=gender, return_list=True) + family_names = family_name(num=num, return_list=True) + + # attach personal/family names to the list of name lists, according to surname_first + if surname_first: + name_lists = [family_names] + name_lists + [personal_names] + else: + name_lists = [personal_names] + name_lists + [family_names] + + # lastly, zip them all up and join them together + names = list(zip(*name_lists)) + names = [ " ".join(name) for name in names ] + + if len(names) == 1 and not return_list: + # return single value as a string + return names[0] + + return names diff --git a/evennia/contrib/utils/name_generator/tests.py b/evennia/contrib/utils/name_generator/tests.py new file mode 100644 index 0000000000..7f7a8ab128 --- /dev/null +++ b/evennia/contrib/utils/name_generator/tests.py @@ -0,0 +1,126 @@ + +""" +Tests for the Random Name Generator +""" + +from evennia.utils.test_resources import BaseEvenniaTest +from . import namegen + + +class TestNameGenerator(BaseEvenniaTest): + def test_fantasy_name(self): + """ + Verify output types and lengths. + + fantasy_name() - str + fantasy_name(style="fluid") - str + fantasy_name(num=3) - list of length 3 + fantasy_name(return_list=True) - list of length 1 + + raises KeyError on missing style or ValueError on num + """ + single_name = namegen.fantasy_name() + self.assertEqual(type(single_name), str) + + fluid_name = namegen.fantasy_name(style="fluid") + self.assertEqual(type(fluid_name), str) + + three_names = namegen.fantasy_name(num=3) + self.assertEqual(type(three_names), list) + self.assertEqual(len(three_names), 3) + + single_list = namegen.fantasy_name(return_list=True) + self.assertEqual(type(single_list), list) + self.assertEqual(len(single_list), 1) + + with self.assertRaises(ValueError): + namegen.fantasy_name(num=-1) + + with self.assertRaises(ValueError): + namegen.fantasy_name(style="dummy") + + + def test_first_name(self): + """ + Verify output types and lengths. + + first_name() - str + first_name(num=3) - list of length 3 + first_name(gender='f') - str + first_name(return_list=True) - list of length 1 + """ + single_name = namegen.first_name() + self.assertEqual(type(single_name), str) + + three_names = namegen.first_name(num=3) + self.assertEqual(type(single_name), list) + self.assertEqual(len(single_name), 3) + + gendered_name = namegen.first_name(gender='f') + self.assertEqual(type(gendered_name), str) + + single_list = namegen.first_name(return_list=True) + self.assertEqual(type(single_list), list) + self.assertEqual(len(single_list), 1) + + with self.assertRaises(ValueError): + namegen.first_name(gender='x') + + with self.assertRaises(ValueError): + namegen.first_name(num=-1) + + def test_family_name(self): + """ + Verify output types and lengths. + + family_name() - str + family_name(num=3) - list of length 3 + family_name(return_list=True) - list of length 1 + """ + single_name = namegen.family_name() + self.assertEqual(type(single_name), str) + + three_names = namegen.family_name(num=3) + self.assertEqual(type(single_name), list) + self.assertEqual(len(single_name), 3) + + single_list = namegen.family_name(return_list=True) + self.assertEqual(type(single_list), list) + self.assertEqual(len(single_list), 1) + + with self.assertRaises(ValueError): + namegen.family_name(num=-1) + + def test_full_name(self): + """ + Verify output types and lengths. + + full_name() - str + full_name(num=3) - list of length 3 + full_name(gender='f') - str + full_name(return_list=True) - list of length 1 + """ + single_name = namegen.full_name() + self.assertEqual(type(single_name), str) + + three_names = namegen.full_name(num=3) + self.assertEqual(type(single_name), list) + self.assertEqual(len(single_name), 3) + + gendered_name = namegen.full_name(gender='f') + self.assertEqual(type(gendered_name), str) + + single_list = namegen.full_name(return_list=True) + self.assertEqual(type(single_list), list) + self.assertEqual(len(single_list), 1) + + parts_name = namegen.full_name(parts=4) + # a name made of 4 parts must have at least 3 spaces, but may have more + parts = parts_name.split(" ") + self.assertGreaterEqual(len(parts), 3) + + with self.assertRaises(ValueError): + namegen.full_name(parts=1) + + with self.assertRaises(ValueError): + namegen.full_name(num=-1) From 7887ad487b5552be3dc106b0270cd32ce0e56a9c Mon Sep 17 00:00:00 2001 From: Avalon Hope <96471977+avalonhope@users.noreply.github.com> Date: Fri, 8 Jul 2022 11:16:06 +0100 Subject: [PATCH 15/58] Update test_search.py --- evennia/utils/tests/test_search.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/evennia/utils/tests/test_search.py b/evennia/utils/tests/test_search.py index 63515d6754..ed017bfe25 100644 --- a/evennia/utils/tests/test_search.py +++ b/evennia/utils/tests/test_search.py @@ -48,3 +48,17 @@ class TestSearch(EvenniaTest): script.db.an_attribute = "some value" found = search_script_attribute(key="an_attribute", value="wrong value") self.assertEqual(len(found), 0, errors) + + def test_search_script_key(self): + """Check that a script can be found by its key value.""" + script, errors = DefaultScript.create("a-script") + found = search_script("a-script") + self.assertEqual(len(found), 1, errors) + self.assertEqual(script.key, found[0].key, errors) + + def test_search_script_wrong_key(self): + """Check that a script cannot be found by a wrong key value.""" + script, errors = DefaultScript.create("a-script") + found = search_script("wrong_key") + self.assertEqual(len(found), 0, errors) + From 1bd32800ee2b48e6e4d76573db69e3a9f0ef2ea0 Mon Sep 17 00:00:00 2001 From: Avalon Hope <96471977+avalonhope@users.noreply.github.com> Date: Fri, 8 Jul 2022 11:51:00 +0100 Subject: [PATCH 16/58] Update test_search.py --- evennia/utils/tests/test_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evennia/utils/tests/test_search.py b/evennia/utils/tests/test_search.py index ed017bfe25..a892203e0c 100644 --- a/evennia/utils/tests/test_search.py +++ b/evennia/utils/tests/test_search.py @@ -1,6 +1,6 @@ from evennia.scripts.scripts import DefaultScript from evennia.utils.test_resources import EvenniaTest -from evennia.utils.search import search_script_attribute, search_script_tag +from evennia.utils.search import search_script_attribute, search_script_tag, search_script class TestSearch(EvenniaTest): From f4272bd9525a043694da955ac2323a0525e89021 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 11 Jul 2022 09:07:08 +0200 Subject: [PATCH 17/58] Update docs with contrib auto-generated content --- docs/source/Coding/Changelog.md | 8 + docs/source/Components/Attributes.md | 4 +- docs/source/Components/Tags.md | 2 +- docs/source/Contribs/Contrib-Components.md | 198 ++++++++++++++++++ docs/source/Contributing-Docs.md | 2 +- ...ntrib.base_systems.components.component.md | 10 + ...contrib.base_systems.components.dbfield.md | 10 + ....contrib.base_systems.components.holder.md | 10 + ...evennia.contrib.base_systems.components.md | 21 ++ ...contrib.base_systems.components.signals.md | 10 + ...a.contrib.base_systems.components.tests.md | 10 + 11 files changed, 281 insertions(+), 4 deletions(-) create mode 100644 docs/source/Contribs/Contrib-Components.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.component.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.dbfield.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.holder.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.signals.md create mode 100644 docs/source/api/evennia.contrib.base_systems.components.tests.md diff --git a/docs/source/Coding/Changelog.md b/docs/source/Coding/Changelog.md index 6268fa57ec..be0527668a 100644 --- a/docs/source/Coding/Changelog.md +++ b/docs/source/Coding/Changelog.md @@ -160,6 +160,14 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 - Attribute storage support defaultdics (Hendher) - Add ObjectParent mixin to default game folder template as an easy, ready-made way to override features on all ObjectDB-inheriting objects easily. +- Add `TagProperty`, `AliasProperty` and `PermissionProperty` to assign these + data in a similar way to django fields. +- The db pickle-serializer now checks for methods `__serialize_dbobjs__` and `__deserialize_dbobjs__` + to allow custom packing/unpacking of nested dbobjs, to allow storing in Attribute. +- Optimizations to rpsystem contrib performance. Breaking change: `.get_sdesc()` will + now return `None` instead of `.db.desc` if no sdesc is set; fallback in hook (inspectorCaracal) +- Reworked text2html parser to avoid problems with stateful color tags (inspectorCaracal) +- Simplified `EvMenu.options_formatter` hook to use `EvColumn` and f-strings (inspectorcaracal) ## Evennia 0.9.5 diff --git a/docs/source/Components/Attributes.md b/docs/source/Components/Attributes.md index 978fcdf39d..3d0cdda131 100644 --- a/docs/source/Components/Attributes.md +++ b/docs/source/Components/Attributes.md @@ -367,8 +367,8 @@ obj.db.mydata = container # will raise error! By adding two methods `__serialize_dbobjs__` and `__deserialize_dbobjs__` to the object you want to save, you can pre-serialize and post-deserialize all 'hidden' objects before Evennia's main serializer gets to work. Inside these methods, use Evennia's -[evennia.utils.dbserialize.dbserialize](api:evennia.utils.dbserialize.dbserialize) and -[dbunserialize](api:evennia.utils.dbserialize.dbunserialize) functions to safely +[evennia.utils.dbserialize.dbserialize](evennia.utils.dbserialize.dbserialize) and +[dbunserialize](evennia.utils.dbserialize.dbunserialize) functions to safely serialize the db-objects you want to store. ```{code-block} python diff --git a/docs/source/Components/Tags.md b/docs/source/Components/Tags.md index 488bab577f..c3f7ce3b30 100644 --- a/docs/source/Components/Tags.md +++ b/docs/source/Components/Tags.md @@ -22,7 +22,7 @@ class Sword(DefaultObject): ``` -_Tags_ are short text lables one can 'hang' on objects in order to organize, group and quickly find out their properties. An Evennia entity can be tagged by any number of tags. They are more efficient than [Attributes](Attributes) since on the database-side, Tags are _shared_ between all objects with that particular tag. A tag does not carry a value in itself; it either sits on the entity +_Tags_ are short text lables one can 'hang' on objects in order to organize, group and quickly find out their properties. An Evennia entity can be tagged by any number of tags. They are more efficient than [Attributes](./Attributes.md) since on the database-side, Tags are _shared_ between all objects with that particular tag. A tag does not carry a value in itself; it either sits on the entity Above, the tags inform us that the `Sword` is both sharp and can be wielded. If that's all they do, they could just be a normal Python flag. When tags become important is if there are a lot of objects with different combinations of tags. Maybe you have a magical spell that dulls _all_ sharp-edged objects in the castle - whether sword, dagger, spear or kitchen knife! You can then just grab all objects with the `has_sharp_edge` tag. Another example would be a weather script affecting all rooms tagged as `outdoors` or finding all characters tagged with `belongs_to_fighter_guild`. diff --git a/docs/source/Contribs/Contrib-Components.md b/docs/source/Contribs/Contrib-Components.md new file mode 100644 index 0000000000..63932e24bf --- /dev/null +++ b/docs/source/Contribs/Contrib-Components.md @@ -0,0 +1,198 @@ +# Components + +_Contrib by ChrisLR 2021_ + +# The Components Contrib + +This contrib introduces Components and Composition to Evennia. +Each 'Component' class represents a feature that will be 'enabled' on a typeclass instance. +You can register these components on an entire typeclass or a single object at runtime. +It supports both persisted attributes and in-memory attributes by using Evennia's AttributeHandler. + +# Pros +- You can reuse a feature across multiple typeclasses without inheritance +- You can cleanly organize each feature into a self-contained class. +- You can check if your object supports a feature without checking its instance. + +# Cons +- It introduces additional complexity. +- A host typeclass instance is required. + +# How to install + +To enable component support for a typeclass, +import and inherit the ComponentHolderMixin, similar to this +```python +from evennia.contrib.base_systems.components import ComponentHolderMixin +class Character(ComponentHolderMixin, DefaultCharacter): +# ... +``` + +Components need to inherit the Component class directly and require a name. +```python +from evennia.contrib.components import Component + +class Health(Component): + name = "health" +``` + +Components may define DBFields or NDBFields at the class level. +DBField will store its values in the host's DB with a prefixed key. +NDBField will store its values in the host's NDB and will not persist. +The key used will be 'component_name::field_name'. +They use AttributeProperty under the hood. + +Example: +```python +from evennia.contrib.base_systems.components import Component, DBField + +class Health(Component): + health = DBField(default=1) +``` + +Note that default is optional and will default to None. + +Adding a component to a host will also a similarly named tag with 'components' as category. +A Component named health will appear as key="health, category="components". +This allows you to retrieve objects with specific components by searching with the tag. + +It is also possible to add Component Tags the same way, using TagField. +TagField accepts a default value and can be used to store a single or multiple tags. +Default values are automatically added when the component is added. +Component Tags are cleared from the host if the component is removed. + +Example: +```python +from evennia.contrib.base_systems.components import Component, TagField + +class Health(Component): + resistances = TagField() + vulnerability = TagField(default="fire", enforce_single=True) +``` + +The 'resistances' field in this example can be set to multiple times and it will keep the added tags. +The 'vulnerability' field in this example will override the previous tag with the new one. + + + +Each typeclass using the ComponentHolderMixin can declare its components +in the class via the ComponentProperty. +These are components that will always be present in a typeclass. +You can also pass kwargs to override the default values +Example +```python +from evennia.contrib.base_systems.components import ComponentHolderMixin +class Character(ComponentHolderMixin, DefaultCharacter): + health = ComponentProperty("health", hp=10, max_hp=50) +``` + +You can then use character.components.health to access it. +The shorter form character.cmp.health also exists. +character.health would also be accessible but only for typeclasses that have +this component defined on the class. + +Alternatively you can add those components at runtime. +You will have to access those via the component handler. +Example +```python +character = self +vampirism = components.Vampirism.create(character) +character.components.add(vampirism) + +... + +vampirism_from_elsewhere = character.components.get("vampirism") +``` + +Keep in mind that all components must be imported to be visible in the listing. +As such, I recommend regrouping them in a package. +You can then import all your components in that package's __init__ + +Because of how Evennia import typeclasses and the behavior of python imports +I recommend placing the components package inside the typeclass package. +In other words, create a folder named components inside your typeclass folder. +Then, inside the 'typeclasses/__init__.py' file add the import to the folder, like +```python +from typeclasses import components +``` +This ensures that the components package will be imported when the typeclasses are imported. +You will also need to import each components inside the package's own 'typeclasses/components/__init__.py' file. +You only need to import each module/file from there but importing the right class is a good practice. +```python +from typeclasses.components.health import Health +``` +```python +from typeclasses.components import health +``` +Both of the above examples will work. + +# Full Example +```python +from evennia.contrib.base_systems import components + + +# This is the Component class +class Health(components.Component): + name = "health" + + # Stores the current and max values as Attributes on the host, defaulting to 100 + current = components.DBField(default=100) + max = components.DBField(default=100) + + def damage(self, value): + if self.current <= 0: + return + + self.current -= value + if self.current > 0: + return + + self.current = 0 + self.on_death() + + def heal(self, value): + hp = self.current + hp += value + if hp >= self.max_hp: + hp = self.max_hp + + self.current = hp + + @property + def is_dead(self): + return self.current <= 0 + + def on_death(self): + # Behavior is defined on the typeclass + self.host.on_death() + + +# This is how the Character inherits the mixin and registers the component 'health' +class Character(ComponentHolderMixin, DefaultCharacter): + health = ComponentProperty("health") + + +# This is an example of a command that checks for the component +class Attack(Command): + key = "attack" + aliases = ('melee', 'hit') + + def at_pre_cmd(self): + caller = self.caller + targets = self.caller.search(args, quiet=True) + valid_target = None + for target in targets: + # Attempt to retrieve the component, None is obtained if it does not exist. + if target.components.health: + valid_target = target + + if not valid_target: + caller.msg("You can't attack that!") + return True +``` + + +---- + +This document page is generated from `evennia/contrib/base_systems/components/README.md`. Changes to this +file will be overwritten, so edit that file rather than this one. diff --git a/docs/source/Contributing-Docs.md b/docs/source/Contributing-Docs.md index 49524a358f..a20ebb1074 100644 --- a/docs/source/Contributing-Docs.md +++ b/docs/source/Contributing-Docs.md @@ -728,4 +728,4 @@ available at https://evennia.github.io/evennia/latest/. [linkdemo]: #Links [retext]: https://github.com/retext-project/retext [grip]: https://github.com/joeyespo/grip -[pycharm]: https://www.jetbrains.com/pycharm/ \ No newline at end of file +[pycharm]: https://www.jetbrains.com/pycharm/ diff --git a/docs/source/api/evennia.contrib.base_systems.components.component.md b/docs/source/api/evennia.contrib.base_systems.components.component.md new file mode 100644 index 0000000000..c2666e69a3 --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.component.md @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.base\_systems.components.component +========================================================= + +.. automodule:: evennia.contrib.base_systems.components.component + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/source/api/evennia.contrib.base_systems.components.dbfield.md b/docs/source/api/evennia.contrib.base_systems.components.dbfield.md new file mode 100644 index 0000000000..6069eb28b6 --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.dbfield.md @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.base\_systems.components.dbfield +======================================================= + +.. automodule:: evennia.contrib.base_systems.components.dbfield + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/source/api/evennia.contrib.base_systems.components.holder.md b/docs/source/api/evennia.contrib.base_systems.components.holder.md new file mode 100644 index 0000000000..d5c5452932 --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.holder.md @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.base\_systems.components.holder +====================================================== + +.. automodule:: evennia.contrib.base_systems.components.holder + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/source/api/evennia.contrib.base_systems.components.md b/docs/source/api/evennia.contrib.base_systems.components.md new file mode 100644 index 0000000000..c72406ab4d --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.md @@ -0,0 +1,21 @@ +```{eval-rst} +evennia.contrib.base\_systems.components +================================================ + +.. automodule:: evennia.contrib.base_systems.components + :members: + :undoc-members: + :show-inheritance: + + + +.. toctree:: + :maxdepth: 6 + + evennia.contrib.base_systems.components.component + evennia.contrib.base_systems.components.dbfield + evennia.contrib.base_systems.components.holder + evennia.contrib.base_systems.components.signals + evennia.contrib.base_systems.components.tests + +``` \ No newline at end of file diff --git a/docs/source/api/evennia.contrib.base_systems.components.signals.md b/docs/source/api/evennia.contrib.base_systems.components.signals.md new file mode 100644 index 0000000000..64260b780b --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.signals.md @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.base\_systems.components.signals +======================================================= + +.. automodule:: evennia.contrib.base_systems.components.signals + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file diff --git a/docs/source/api/evennia.contrib.base_systems.components.tests.md b/docs/source/api/evennia.contrib.base_systems.components.tests.md new file mode 100644 index 0000000000..699b208fb0 --- /dev/null +++ b/docs/source/api/evennia.contrib.base_systems.components.tests.md @@ -0,0 +1,10 @@ +```{eval-rst} +evennia.contrib.base\_systems.components.tests +===================================================== + +.. automodule:: evennia.contrib.base_systems.components.tests + :members: + :undoc-members: + :show-inheritance: + +``` \ No newline at end of file From dbaaf80e5e29e3408bfa62f635014a69c9134bcf Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Mon, 11 Jul 2022 10:42:50 -0600 Subject: [PATCH 18/58] quick patch to be consistent with test expectations --- evennia/contrib/rpg/rpsystem/rpsystem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index f4db843ec0..1e79af0b04 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -388,7 +388,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ # first, find and replace any self-refs for self_match in list(_RE_SELF_REF.finditer(string)): matched = self_match.group() - case = _get_case_ref(matched.lstrip(_PREFIX)) if case_sensitive else "~" + case = _get_case_ref(matched.lstrip(_PREFIX)) if case_sensitive else "" key = f"#{sender.id}{case}" # replaced with ref string = string.replace(matched,f"{{{key}}}") @@ -486,7 +486,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ errors.append(_EMOTE_NOMATCH_ERROR.format(ref=marker_match.group())) elif nmatches == 1: # a unique match - parse into intermediary representation - case = _get_case_ref(marker_match.group()) if case_sensitive else "~" + case = _get_case_ref(marker_match.group()) if case_sensitive else "" # recombine emote with matched text replaced by ref key = f"#{obj.id}{case}" string = f"{head}{{{key}}}{tail}" From add1518c95c4917444764116adb6f84dff749642 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Mon, 11 Jul 2022 11:12:40 -0600 Subject: [PATCH 19/58] match punctuated self-ref cases with regex --- evennia/contrib/rpg/rpsystem/rpsystem.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index 1e79af0b04..8592feb108 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -202,7 +202,7 @@ _RE_RIGHT_BRACKETS = re.compile(r"\}+", _RE_FLAGS) _RE_REF = re.compile(r"\{+\#([0-9]+[\^\~tv]{0,1})\}+") # This regex is used to quickly reference one self in an emote. -_RE_SELF_REF = re.compile(r"/me\b|@", _RE_FLAGS) +_RE_SELF_REF = re.compile(r"(/me|@)(?=\W+)", _RE_FLAGS) # regex for non-alphanumberic end of a string _RE_CHAREND = re.compile(r"\W+$", _RE_FLAGS) @@ -359,7 +359,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ """ # build a list of candidates with all possible referrable names # include 'me' keyword for self-ref - candidate_map = [(sender, "me")] + candidate_map = [] for obj in candidates: # check if sender has any recogs for obj and add if hasattr(sender, "recog"): @@ -391,10 +391,9 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ case = _get_case_ref(matched.lstrip(_PREFIX)) if case_sensitive else "" key = f"#{sender.id}{case}" # replaced with ref - string = string.replace(matched,f"{{{key}}}") + string = _RE_SELF_REF.sub(f"{{{key}}}", string, count=1) mapping[key] = sender - - + for marker_match in reversed(list(_RE_OBJ_REF_START.finditer(string))): # we scan backwards so we can replace in-situ without messing # up later occurrences. Given a marker match, query from From 303f836fa19b2785ad9832c1f9d861379fde6819 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Mon, 11 Jul 2022 11:23:17 -0600 Subject: [PATCH 20/58] update tests --- evennia/contrib/rpg/rpsystem/tests.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/tests.py b/evennia/contrib/rpg/rpsystem/tests.py index bd2ea32896..b8c7048c8d 100644 --- a/evennia/contrib/rpg/rpsystem/tests.py +++ b/evennia/contrib/rpg/rpsystem/tests.py @@ -97,6 +97,7 @@ recog02 = "Mr Receiver2" recog10 = "Mr Sender" emote = 'With a flair, /me looks at /first and /colliding sdesc-guy. She says "This is a test."' case_emote = "/Me looks at /first. Then, /me looks at /FIRST, /First and /Colliding twice." +poss_emote = "/Me frowns at /first for trying to steal /me's test." class TestRPSystem(BaseEvenniaTest): @@ -140,7 +141,7 @@ class TestRPSystem(BaseEvenniaTest): ), ) - def parse_sdescs_and_recogs(self): + def test_parse_sdescs_and_recogs(self): speaker = self.speaker speaker.sdesc.add(sdesc0) self.receiver1.sdesc.add(sdesc1) @@ -149,9 +150,9 @@ class TestRPSystem(BaseEvenniaTest): result = ( 'With a flair, {#9} looks at {#10} and {#11}. She says "This is a test."', { - "#11": "Another nice colliding sdesc-guy for tests", - "#10": "The first receiver of emotes.", - "#9": "A nice sender of emotes", + "#11": self.receiver2, + "#10": self.receiver1, + "#9": speaker, }, ) self.assertEqual( @@ -164,6 +165,24 @@ class TestRPSystem(BaseEvenniaTest): result, ) + def test_possessive_selfref(self): + speaker = self.speaker + speaker.sdesc.add(sdesc0) + self.receiver1.sdesc.add(sdesc1) + self.receiver2.sdesc.add(sdesc2) + candidates = (self.receiver1, self.receiver2) + result = ( + "{#9} frowns at {#10} for trying to steal {#9}'s test.", + { + "#10": self.receiver1, + "#9": speaker, + }, + ) + self.assertEqual( + rpsystem.parse_sdescs_and_recogs(speaker, candidates, poss_emote, case_sensitive=False), + result, + ) + def test_get_sdesc(self): looker = self.speaker # Sender target = self.receiver1 # Receiver1 From c9772e199fd8b2fb2af2e6ffaf4acfdf2dc5b8c8 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Mon, 11 Jul 2022 11:54:18 -0600 Subject: [PATCH 21/58] actually update tests --- evennia/contrib/rpg/rpsystem/tests.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/tests.py b/evennia/contrib/rpg/rpsystem/tests.py index b8c7048c8d..f62c77f63b 100644 --- a/evennia/contrib/rpg/rpsystem/tests.py +++ b/evennia/contrib/rpg/rpsystem/tests.py @@ -146,13 +146,16 @@ class TestRPSystem(BaseEvenniaTest): speaker.sdesc.add(sdesc0) self.receiver1.sdesc.add(sdesc1) self.receiver2.sdesc.add(sdesc2) + id0 = f"#{speaker.id}" + id1 = f"#{self.receiver1.id}" + id2 = f"#{self.receiver2.id}" candidates = (self.receiver1, self.receiver2) result = ( - 'With a flair, {#9} looks at {#10} and {#11}. She says "This is a test."', + 'With a flair, {'+id0+'} looks at {'+id1+'} and {'+id2+'}. She says "This is a test."', { - "#11": self.receiver2, - "#10": self.receiver1, - "#9": speaker, + id2: self.receiver2, + id1: self.receiver1, + id0: speaker, }, ) self.assertEqual( @@ -170,12 +173,15 @@ class TestRPSystem(BaseEvenniaTest): speaker.sdesc.add(sdesc0) self.receiver1.sdesc.add(sdesc1) self.receiver2.sdesc.add(sdesc2) + id0 = f"#{speaker.id}" + id1 = f"#{self.receiver1.id}" + id2 = f"#{self.receiver2.id}" candidates = (self.receiver1, self.receiver2) result = ( - "{#9} frowns at {#10} for trying to steal {#9}'s test.", + "{"+id0+"} frowns at {"+id1+"} for trying to steal {"+id0+"}'s test.", { - "#10": self.receiver1, - "#9": speaker, + id1: self.receiver1, + id0: speaker, }, ) self.assertEqual( From c99cd45f93a7dfdc6a424f115af35c70649e94db Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Sun, 10 Jul 2022 19:36:57 -0400 Subject: [PATCH 22/58] Added move_type to obj.move_to and its many hooks and what calls it. --- docs/source/Howtos/NPC-shop-Tutorial.md | 2 +- docs/source/Howtos/Tutorial-Vehicles.md | 4 +- evennia/commands/default/building.py | 5 ++- evennia/commands/default/general.py | 8 ++-- .../full_systems/evscaperoom/commands.py | 2 +- .../contrib/game_systems/clothing/clothing.py | 6 +-- evennia/contrib/grid/slow_exit/slow_exit.py | 2 +- .../contrib/tutorials/tutorial_world/rooms.py | 10 ++--- .../contrib/tutorials/tutorial_world/tests.py | 4 +- evennia/objects/objects.py | 42 ++++++++++++------- 10 files changed, 48 insertions(+), 37 deletions(-) diff --git a/docs/source/Howtos/NPC-shop-Tutorial.md b/docs/source/Howtos/NPC-shop-Tutorial.md index db37508f95..209f2d17f3 100644 --- a/docs/source/Howtos/NPC-shop-Tutorial.md +++ b/docs/source/Howtos/NPC-shop-Tutorial.md @@ -130,7 +130,7 @@ def menunode_inspect_and_buy(caller, raw_string): if wealth >= value: rtext = f"You pay {value} gold and purchase {ware.key}!" caller.db.gold -= value - ware.move_to(caller, quiet=True) + ware.move_to(caller, quiet=True, move_type="buy") else: rtext = f"You cannot afford {value} gold for {ware.key}!" caller.msg(rtext) diff --git a/docs/source/Howtos/Tutorial-Vehicles.md b/docs/source/Howtos/Tutorial-Vehicles.md index a62aa485f3..acb074de6a 100644 --- a/docs/source/Howtos/Tutorial-Vehicles.md +++ b/docs/source/Howtos/Tutorial-Vehicles.md @@ -86,7 +86,7 @@ class CmdEnterTrain(Command): def func(self): train = self.obj self.caller.msg("You board the train.") - self.caller.move_to(train) + self.caller.move_to(train, move_type="board") class CmdLeaveTrain(Command): @@ -107,7 +107,7 @@ class CmdLeaveTrain(Command): def func(self): train = self.obj parent = train.location - self.caller.move_to(parent) + self.caller.move_to(parent, move_type="disembark") class CmdSetTrain(CmdSet): diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index c81c320b3e..feac9de984 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -603,7 +603,7 @@ class CmdCreate(ObjManipCommand): if "drop" in self.switches: if caller.location: obj.home = caller.location - obj.move_to(caller.location, quiet=True) + obj.move_to(caller.location, quiet=True, move_type="drop") if string: caller.msg(string) @@ -993,7 +993,7 @@ class CmdDig(ObjManipCommand): ) caller.msg("%s%s%s" % (room_string, exit_to_string, exit_back_string)) if new_room and "teleport" in self.switches: - caller.move_to(new_room) + caller.move_to(new_room, move_type="teleport") class CmdTunnel(COMMAND_DEFAULT_CLASS): @@ -3709,6 +3709,7 @@ class CmdTeleport(COMMAND_DEFAULT_CLASS): quiet="quiet" in self.switches, emit_to_obj=caller, use_destination="intoexit" not in self.switches, + move_type="teleport" ): if obj_to_teleport == caller: diff --git a/evennia/commands/default/general.py b/evennia/commands/default/general.py index ca66727d94..98ad671e7a 100644 --- a/evennia/commands/default/general.py +++ b/evennia/commands/default/general.py @@ -49,7 +49,7 @@ class CmdHome(COMMAND_DEFAULT_CLASS): caller.msg("You are already home!") else: caller.msg("There's no place like home ...") - caller.move_to(home) + caller.move_to(home, move_type="teleport") class CmdLook(COMMAND_DEFAULT_CLASS): @@ -434,7 +434,7 @@ class CmdGet(COMMAND_DEFAULT_CLASS): if not obj.at_pre_get(caller): return - success = obj.move_to(caller, quiet=True) + success = obj.move_to(caller, quiet=True, move_type="get") if not success: caller.msg("This can't be picked up.") else: @@ -484,7 +484,7 @@ class CmdDrop(COMMAND_DEFAULT_CLASS): if not obj.at_pre_drop(caller): return - success = obj.move_to(caller.location, quiet=True) + success = obj.move_to(caller.location, quiet=True, move_type="drop") if not success: caller.msg("This couldn't be dropped.") else: @@ -538,7 +538,7 @@ class CmdGive(COMMAND_DEFAULT_CLASS): return # give object - success = to_give.move_to(target, quiet=True) + success = to_give.move_to(target, quiet=True, move_type="get") if not success: caller.msg("This could not be given.") else: diff --git a/evennia/contrib/full_systems/evscaperoom/commands.py b/evennia/contrib/full_systems/evscaperoom/commands.py index 15695e7caa..16a5706ecf 100644 --- a/evennia/contrib/full_systems/evscaperoom/commands.py +++ b/evennia/contrib/full_systems/evscaperoom/commands.py @@ -236,7 +236,7 @@ class CmdGiveUp(CmdEvscapeRoom): # manually call move hooks self.room.msg_room(self.caller, f"|r{self.caller.key} gave up and was whisked away!|n") self.room.at_object_leave(self.caller, self.caller.home) - self.caller.move_to(self.caller.home, quiet=True, move_hooks=False) + self.caller.move_to(self.caller.home, quiet=True, move_hooks=False, move_type="teleport") # back to menu run_evscaperoom_menu(self.caller) diff --git a/evennia/contrib/game_systems/clothing/clothing.py b/evennia/contrib/game_systems/clothing/clothing.py index 04554f7580..8c11f27d4e 100644 --- a/evennia/contrib/game_systems/clothing/clothing.py +++ b/evennia/contrib/game_systems/clothing/clothing.py @@ -611,7 +611,7 @@ class CmdDrop(MuxCommand): if obj.db.worn: obj.remove(caller, quiet=True) - obj.move_to(caller.location, quiet=True) + obj.move_to(caller.location, quiet=True, move_type="drop") caller.msg("You drop %s." % (obj.name,)) caller.location.msg_contents("%s drops %s." % (caller.name, obj.name), exclude=caller) # Call the object script's at_drop() method. @@ -664,10 +664,10 @@ class CmdGive(MuxCommand): # Remove clothes if they're given. if to_give.db.worn: to_give.remove(caller) - to_give.move_to(caller.location, quiet=True) + to_give.move_to(caller.location, quiet=True, move_type="remove") # give object caller.msg("You give %s to %s." % (to_give.key, target.key)) - to_give.move_to(target, quiet=True) + to_give.move_to(target, quiet=True, move_type="give") target.msg("%s gives you %s." % (caller.key, to_give.key)) # Call the object script's at_give() method. to_give.at_give(caller, target) diff --git a/evennia/contrib/grid/slow_exit/slow_exit.py b/evennia/contrib/grid/slow_exit/slow_exit.py index 2b4ff0f003..e5050e3f76 100644 --- a/evennia/contrib/grid/slow_exit/slow_exit.py +++ b/evennia/contrib/grid/slow_exit/slow_exit.py @@ -82,7 +82,7 @@ class SlowExit(DefaultExit): def move_callback(): "This callback will be called by utils.delay after move_delay seconds." source_location = traversing_object.location - if traversing_object.move_to(target_location): + if traversing_object.move_to(target_location, move_type="traverse"): self.at_post_traverse(traversing_object, source_location) else: if self.db.err_traverse: diff --git a/evennia/contrib/tutorials/tutorial_world/rooms.py b/evennia/contrib/tutorials/tutorial_world/rooms.py index 8f23363134..620f8c0ce4 100644 --- a/evennia/contrib/tutorials/tutorial_world/rooms.py +++ b/evennia/contrib/tutorials/tutorial_world/rooms.py @@ -225,7 +225,7 @@ class CmdTutorialGiveUp(default_cmds.MuxCommand): ) return - self.caller.move_to(outro_room) + self.caller.move_to(outro_room, move_type="teleport") class TutorialRoomCmdSet(CmdSet): @@ -523,7 +523,7 @@ class CmdEast(Command): # Move to the east room. eexit = search_object(self.obj.db.east_exit) if eexit: - caller.move_to(eexit[0]) + caller.move_to(eexit[0], move_type="traverse") else: caller.msg("No east exit was found for this room. Contact an admin.") return @@ -570,7 +570,7 @@ class CmdWest(Command): # Move to the west room. wexit = search_object(self.obj.db.west_exit) if wexit: - caller.move_to(wexit[0]) + caller.move_to(wexit[0], move_type="traverse") else: caller.msg("No west exit was found for this room. Contact an admin.") return @@ -658,7 +658,7 @@ class CmdLookBridge(Command): fall_exit = search_object(self.obj.db.fall_exit) if fall_exit: self.caller.msg("|r%s|n" % FALL_MESSAGE) - self.caller.move_to(fall_exit[0], quiet=True) + self.caller.move_to(fall_exit[0], quiet=True, move_type="fall") # inform others on the bridge self.obj.msg_contents( "A plank gives way under %s's feet and " @@ -1130,7 +1130,7 @@ class TeleportRoom(TutorialRoom): else: character.msg(self.db.failure_teleport_msg) # teleport quietly to the new place - character.move_to(results[0], quiet=True, move_hooks=False) + character.move_to(results[0], quiet=True, move_hooks=False, move_type="teleport") # we have to call this manually since we turn off move_hooks # - this is necessary to make the target dark room aware of an # already carried light. diff --git a/evennia/contrib/tutorials/tutorial_world/tests.py b/evennia/contrib/tutorials/tutorial_world/tests.py index 07f4391a72..8a0b722cf9 100644 --- a/evennia/contrib/tutorials/tutorial_world/tests.py +++ b/evennia/contrib/tutorials/tutorial_world/tests.py @@ -160,7 +160,7 @@ class TestTutorialWorldRooms(BaseEvenniaCommandTest): def test_bridgeroom(self): room = create_object(tutrooms.BridgeRoom, key="bridgeroom") room.update_weather() - self.char1.move_to(room) + self.char1.move_to(room, move_type="teleport") self.call( tutrooms.CmdBridgeHelp(), "", @@ -181,7 +181,7 @@ class TestTutorialWorldRooms(BaseEvenniaCommandTest): def test_darkroom(self): room = create_object(tutrooms.DarkRoom, key="darkroom") - self.char1.move_to(room) + self.char1.move_to(room, move_type="teleport") self.call(tutrooms.CmdDarkHelp(), "", "Can't help you until") def test_teleportroom(self): diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index d2a2b6e8a4..0497152258 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -836,6 +836,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): use_destination=True, to_none=False, move_hooks=True, + move_type="move", **kwargs, ): """ @@ -857,6 +858,10 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): move_hooks (bool): If False, turn off the calling of move-related hooks (at_pre/post_move etc) with quiet=True, this is as quiet a move as can be done. + move_type (str): Will be used for generating the text tuple {"type": move_type}, + and can be used for log filtering in hooks. Evennia has only a few + move_types for move_to to start with, like "teleport", "traverse", + "get", "give", and "drop". Keyword Args: Passed on to announce_move_to and announce_move_from hooks. @@ -906,7 +911,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # Before the move, call eventual pre-commands. if move_hooks: try: - if not self.at_pre_move(destination, **kwargs): + if not self.at_pre_move(destination, move_type=move_type, **kwargs): return False except Exception as err: logerr(errtxt.format(err="at_pre_move()"), err) @@ -918,7 +923,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # Call hook on source location if move_hooks and source_location: try: - source_location.at_object_leave(self, destination, **kwargs) + source_location.at_object_leave(self, destination, move_type=move_type, **kwargs) except Exception as err: logerr(errtxt.format(err="at_object_leave()"), err) return False @@ -926,7 +931,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): if not quiet: # tell the old room we are leaving try: - self.announce_move_from(destination, **kwargs) + self.announce_move_from(destination, move_type=move_type, **kwargs) except Exception as err: logerr(errtxt.format(err="announce_move_from()"), err) return False @@ -941,7 +946,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): if not quiet: # Tell the new room we are there. try: - self.announce_move_to(source_location, **kwargs) + self.announce_move_to(source_location, move_type=move_type, **kwargs) except Exception as err: logerr(errtxt.format(err="announce_move_to()"), err) return False @@ -950,7 +955,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # Perform eventual extra commands on the receiving location # (the object has already arrived at this point) try: - destination.at_object_receive(self, source_location, **kwargs) + destination.at_object_receive(self, source_location, move_type=move_type, **kwargs) except Exception as err: logerr(errtxt.format(err="at_object_receive()"), err) return False @@ -959,7 +964,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # (usually calling 'look') if move_hooks: try: - self.at_post_move(source_location, **kwargs) + self.at_post_move(source_location, move_type=move_type, **kwargs) except Exception as err: logerr(errtxt.format(err="at_post_move"), err) return False @@ -1020,7 +1025,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # Famous last words: The account should never see this. string = "This place should not exist ... contact an admin." obj.msg(_(string)) - obj.move_to(home) + obj.move_to(home, move_type="teleport") @classmethod def create(cls, key, account=None, **kwargs): @@ -1472,13 +1477,14 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # hooks called when moving the object - def at_pre_move(self, destination, **kwargs): + def at_pre_move(self, destination, move_type="move", **kwargs): """ Called just before starting to move this object to destination. Args: destination (Object): The object we are moving to + move_type (str): The type of move. "give", "traverse", etc. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1496,7 +1502,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # deprecated alias at_before_move = at_pre_move - def announce_move_from(self, destination, msg=None, mapping=None, **kwargs): + def announce_move_from(self, destination, msg=None, mapping=None, move_type="move", **kwargs): """ Called if the move is to be announced. This is called while we are still standing in the old @@ -1506,6 +1512,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): destination (Object): The place we are going to. msg (str, optional): a replacement message. mapping (dict, optional): additional mapping objects. + move_type (str): The type of move. "give", "traverse", etc. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1541,9 +1548,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - location.msg_contents(string, exclude=(self,), from_obj=self, mapping=mapping) + location.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) - def announce_move_to(self, source_location, msg=None, mapping=None, **kwargs): + def announce_move_to(self, source_location, msg=None, mapping=None, move_type="move", **kwargs): """ Called after the move if the move was not quiet. At this point we are standing in the new location. @@ -1552,6 +1559,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): source_location (Object): The place we came from msg (str, optional): the replacement message if location. mapping (dict, optional): additional mapping objects. + move_type (str): The type of move. "give", "traverse", etc. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1605,7 +1613,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - destination.msg_contents(string, exclude=(self,), from_obj=self, mapping=mapping) + destination.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) def at_post_move(self, source_location, **kwargs): """ @@ -1624,20 +1632,21 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): # deprecated at_after_move = at_post_move - def at_object_leave(self, moved_obj, target_location, **kwargs): + def at_object_leave(self, moved_obj, target_location, move_type="move", **kwargs): """ Called just before an object leaves from inside this object Args: moved_obj (Object): The object leaving target_location (Object): Where `moved_obj` is going. + move_type (str): The type of move. "give", "traverse", etc. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). """ pass - def at_object_receive(self, moved_obj, source_location, **kwargs): + def at_object_receive(self, moved_obj, source_location, move_type="move", **kwargs): """ Called after an object has been moved into this object. @@ -1645,6 +1654,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): moved_obj (Object): The object moved into this one source_location (Object): Where `moved_object` came from. Note that this could be `None`. + move_type (str): The type of move. "give", "traverse", etc. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -2381,7 +2391,7 @@ class DefaultCharacter(DefaultObject): # add the default cmdset self.cmdset.add_default(settings.CMDSET_CHARACTER, persistent=True) - def at_post_move(self, source_location, **kwargs): + def at_post_move(self, source_location, move_type="move", **kwargs): """ We make sure to look around after a move. @@ -2859,7 +2869,7 @@ class DefaultExit(DefaultObject): """ source_location = traversing_object.location - if traversing_object.move_to(target_location): + if traversing_object.move_to(target_location, move_type="traverse"): self.at_post_traverse(traversing_object, source_location) else: if self.db.err_traverse: From 93aae906bff10ae3b9119cc08f0074e063e1622f Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Mon, 11 Jul 2022 21:52:52 -0400 Subject: [PATCH 23/58] Improving documentation. --- evennia/objects/objects.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 0497152258..b5a2c8d338 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -858,10 +858,11 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): move_hooks (bool): If False, turn off the calling of move-related hooks (at_pre/post_move etc) with quiet=True, this is as quiet a move as can be done. - move_type (str): Will be used for generating the text tuple {"type": move_type}, - and can be used for log filtering in hooks. Evennia has only a few - move_types for move_to to start with, like "teleport", "traverse", - "get", "give", and "drop". + move_type (str): The "kind of move" being performed, such as "teleport", "traverse", + "get", "give", or "drop". The value can be arbitrary. By default, it only affects + the text message generated by announce_move_to and announce_move_from by defining + their {"type": move_type} for outgoing text. This can be used for altering + messages and/or overloaded hook behaviors. Keyword Args: Passed on to announce_move_to and announce_move_from hooks. @@ -1513,6 +1514,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): msg (str, optional): a replacement message. mapping (dict, optional): additional mapping objects. move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1560,6 +1564,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): msg (str, optional): the replacement message if location. mapping (dict, optional): additional mapping objects. move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1655,6 +1662,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): source_location (Object): Where `moved_object` came from. Note that this could be `None`. move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). From 2fd8afa2faabe8ecc1bd85c4c8a7149a515709a8 Mon Sep 17 00:00:00 2001 From: Griatch Date: Thu, 14 Jul 2022 00:01:18 +0200 Subject: [PATCH 24/58] Fix nesting errors when serializing hidden dbobjs with de/serializer magic methods --- evennia/utils/dbserialize.py | 18 ++++++++--- evennia/utils/tests/test_dbserialize.py | 42 ++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index 0fbec4c9e3..11321d8dfd 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -18,19 +18,20 @@ in-situ, e.g `obj.db.mynestedlist[3][5] = 3` would never be saved and be out of sync with the database. """ +from collections import OrderedDict, defaultdict, deque +from collections.abc import MutableMapping, MutableSequence, MutableSet from functools import update_wrapper -from collections import deque, OrderedDict, defaultdict -from collections.abc import MutableSequence, MutableSet, MutableMapping try: - from pickle import dumps, loads, UnpicklingError + from pickle import UnpicklingError, dumps, loads except ImportError: from pickle import dumps, loads -from django.core.exceptions import ObjectDoesNotExist + from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist from django.utils.safestring import SafeString -from evennia.utils.utils import uses_database, is_iter, to_bytes from evennia.utils import logger +from evennia.utils.utils import is_iter, to_bytes, uses_database __all__ = ("to_pickle", "from_pickle", "do_pickle", "do_unpickle", "dbserialize", "dbunserialize") @@ -786,6 +787,13 @@ def from_pickle(data, db_obj=None): dat = _SaverList(_parent=parent) dat._data.extend(process_tree(val, dat) for val in item) return dat + + if hasattr(item, "__deserialize_dbobjs__"): + try: + item.__deserialize_dbobjs__() + except (TypeError, UnpicklingError): + pass + return item if db_obj: diff --git a/evennia/utils/tests/test_dbserialize.py b/evennia/utils/tests/test_dbserialize.py index d4fd101ef0..8d7950baef 100644 --- a/evennia/utils/tests/test_dbserialize.py +++ b/evennia/utils/tests/test_dbserialize.py @@ -2,10 +2,11 @@ Tests for dbserialize module """ -from collections import deque +from collections import defaultdict, deque + from django.test import TestCase -from evennia.utils import dbserialize from evennia.objects.objects import DefaultObject +from evennia.utils import dbserialize from parameterized import parameterized @@ -93,8 +94,6 @@ class TestDbSerialize(TestCase): self.assertEqual(self.obj.db.test, {"a": True, "b": False}) def test_defaultdict(self): - from collections import defaultdict - # baseline behavior for a defaultdict _dd = defaultdict(list) _dd["a"] @@ -164,12 +163,45 @@ class DbObjWrappers(TestCase): con = _ValidContainer(self.dbobj2) self.dbobj1.db.testarg = con - # accessing the same data twice + # accessing the same data multiple times res1 = self.dbobj1.db.testarg res2 = self.dbobj1.db.testarg + res3 = self.dbobj1.db.testarg self.assertEqual(res1, res2) + self.assertEqual(res1, res3) self.assertEqual(res1, con) self.assertEqual(res2, con) self.assertEqual(res1.hidden_obj, self.dbobj2) self.assertEqual(res2.hidden_obj, self.dbobj2) + self.assertEqual(res3.hidden_obj, self.dbobj2) + + def test_dbobj_hidden_dict(self): + con1 = _ValidContainer(self.dbobj2) + con2 = _ValidContainer(self.dbobj2) + + self.dbobj1.db.dict = {} + + self.dbobj1.db.dict["key1"] = con1 + self.dbobj1.db.dict["key2"] = con2 + + self.assertEqual(self.dbobj1.db.dict["key1"].hidden_obj, self.dbobj2) + self.assertEqual(self.dbobj1.db.dict["key1"].hidden_obj, self.dbobj2) + self.assertEqual(self.dbobj1.db.dict["key2"].hidden_obj, self.dbobj2) + self.assertEqual(self.dbobj1.db.dict["key2"].hidden_obj, self.dbobj2) + + def test_dbobj_hidden_defaultdict(self): + + con1 = _ValidContainer(self.dbobj2) + con2 = _ValidContainer(self.dbobj2) + + self.dbobj1.db.dfdict = defaultdict(dict) + + self.dbobj1.db.dfdict["key"]["con1"] = con1 + self.dbobj1.db.dfdict["key"]["con2"] = con2 + + self.assertEqual(self.dbobj1.db.dfdict["key"]["con1"].hidden_obj, self.dbobj2) + + self.assertEqual(self.dbobj1.db.dfdict["key"]["con1"].hidden_obj, self.dbobj2) + self.assertEqual(self.dbobj1.db.dfdict["key"]["con2"].hidden_obj, self.dbobj2) + self.assertEqual(self.dbobj1.db.dfdict["key"]["con2"].hidden_obj, self.dbobj2) From 60296a8554e0d258392b9be41c5bd6ef69dcaee5 Mon Sep 17 00:00:00 2001 From: Griatch Date: Thu, 14 Jul 2022 12:50:01 +0200 Subject: [PATCH 25/58] Recommend bytes-check to deserialize_dbobjs example --- docs/source/Components/Attributes.md | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/source/Components/Attributes.md b/docs/source/Components/Attributes.md index 3d0cdda131..ed277e33a7 100644 --- a/docs/source/Components/Attributes.md +++ b/docs/source/Components/Attributes.md @@ -325,14 +325,15 @@ values into a string representation before storing it to the database. This is d ### Storing single objects -With a single object, we mean anything that is *not iterable*, like numbers, strings or custom class -instances without the `__iter__` method. +With a single object, we mean anything that is *not iterable*, like numbers, +strings or custom class instances without the `__iter__` method. * You can generally store any non-iterable Python entity that can be _pickled_. -* Single database objects/typeclasses can be stored, despite them normally not being possible - to pickle. Evennia will convert them to an internal representation using theihr classname, - database-id and creation-date with a microsecond precision. When retrieving, the object - instance will be re-fetched from the database using this information. +* Single database objects/typeclasses can be stored, despite them normally not + being possible to pickle. Evennia will convert them to an internal + representation using theihr classname, database-id and creation-date with a + microsecond precision. When retrieving, the object instance will be re-fetched + from the database using this information. * If you 'hide' a db-obj as a property on a custom class, Evennia will not be able to find it to serialize it. For that you need to help it out (see below). @@ -389,13 +390,23 @@ class Container: def __deserialize_dbobjs__(self): """This is called after deserialization and allows you to restore the 'hidden' dbobjs you serialized before""" - self.mydbobj = dbserialize.dbunserialize(self.mydbobj) + if isinstance(self.mydbobj, bytes): + # make sure to check if it's bytes before trying dbunserialize + self.mydbobj = dbserialize.dbunserialize(self.mydbobj) # let's assume myobj is a db-object container = Container(myobj) obj.db.mydata = container # will now work fine! ``` +> Note the extra check in `__deserialize_dbobjs__` to make sure the thing you +> are deserializing is a `bytes` object. This is needed because the Attribute's +> cache reruns deserializations in some situations when the data was already +> once deserialized. If you see errors in the log saying +> `Could not unpickle data for storage: ...`, the reason is +> likely that you forgot to add this check. + + ### Storing multiple objects This means storing objects in a collection of some kind and are examples of *iterables*, pickle-able From 641811ec1cd9b6ab0c95f8e8a92e40987eaf80b3 Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Thu, 14 Jul 2022 19:43:08 -0400 Subject: [PATCH 26/58] Added msg_type to rpsystem.send_emote() --- evennia/contrib/rpg/rpsystem/rpsystem.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index f50ad88326..1089f38ed2 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -513,7 +513,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ return string, mapping -def send_emote(sender, receivers, emote, anonymous_add="first", **kwargs): +def send_emote(sender, receivers, emote, msg_type = "pose", anonymous_add="first", **kwargs): """ Main access function for distribute an emote. @@ -523,6 +523,9 @@ def send_emote(sender, receivers, emote, anonymous_add="first", **kwargs): will also form the basis for which sdescs are 'valid' to use in the emote. emote (str): The raw emote string as input by emoter. + msg_type (str): The type of emote this is. "say" or "pose" + for example. This is arbitrary and used for generating + extra data for .msg(text) tuple. anonymous_add (str or None, optional): If `sender` is not self-referencing in the emote, this will auto-add `sender`'s data to the emote. Possible values are @@ -599,7 +602,7 @@ def send_emote(sender, receivers, emote, anonymous_add="first", **kwargs): ) # do the template replacement of the sdesc/recog {#num} markers - receiver.msg(sendemote.format(**receiver_sdesc_mapping), from_obj=sender, **kwargs) + receiver.msg(text=(sendemote.format(**receiver_sdesc_mapping), {"type": msg_type}), from_obj=sender, **kwargs) # ------------------------------------------------------------ @@ -910,7 +913,7 @@ class CmdSay(RPCommand): # replaces standard say # calling the speech modifying hook speech = caller.at_pre_say(self.args) targets = self.caller.location.contents - send_emote(self.caller, targets, speech, anonymous_add=None) + send_emote(self.caller, targets, speech, msg_type="say", anonymous_add=None) class CmdSdesc(RPCommand): # set/look at own sdesc From 22353b2e92ce28c53e08c57385e67aac3f9ba378 Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Thu, 14 Jul 2022 19:46:49 -0400 Subject: [PATCH 27/58] Added msg_type to rpsystem.send_emote() --- evennia/contrib/rpg/rpsystem/rpsystem.py | 41 ++++++++++++------------ 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/rpsystem.py b/evennia/contrib/rpg/rpsystem/rpsystem.py index 1089f38ed2..5c10cc9a0b 100644 --- a/evennia/contrib/rpg/rpsystem/rpsystem.py +++ b/evennia/contrib/rpg/rpsystem/rpsystem.py @@ -213,6 +213,7 @@ _RE_REF_LANG = re.compile(r"\{+\##([0-9]+)\}+") # this regex returns in groups (langname, say), where langname can be empty. _RE_LANGUAGE = re.compile(r"(?:\((\w+)\))*(\".+?\")") + # the emote parser works in two steps: # 1) convert the incoming emote into an intermediary # form with all object references mapped to ids. @@ -375,7 +376,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ match_index = marker_match.start() # split the emote string at the reference marker, to process everything after it head = string[:match_index] - tail = string[match_index + 1 :] + tail = string[match_index + 1:] if search_mode: # match the candidates against the whole search string after the marker @@ -421,7 +422,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ # save search string matched_text = "".join(tail[1:iend]) # recombine remainder of emote back into a string - tail = "".join(tail[iend + 1 :]) + tail = "".join(tail[iend + 1:]) nmatches = len(bestmatches) @@ -513,7 +514,7 @@ def parse_sdescs_and_recogs(sender, candidates, string, search_mode=False, case_ return string, mapping -def send_emote(sender, receivers, emote, msg_type = "pose", anonymous_add="first", **kwargs): +def send_emote(sender, receivers, emote, msg_type="pose", anonymous_add="first", **kwargs): """ Main access function for distribute an emote. @@ -1256,19 +1257,19 @@ class ContribRPObject(DefaultObject): self.sdesc.add("Something") def search( - self, - searchdata, - global_search=False, - use_nicks=True, - typeclass=None, - location=None, - attribute_name=None, - quiet=False, - exact=False, - candidates=None, - nofound_string=None, - multimatch_string=None, - use_dbref=None, + self, + searchdata, + global_search=False, + use_nicks=True, + typeclass=None, + location=None, + attribute_name=None, + quiet=False, + exact=False, + candidates=None, + nofound_string=None, + multimatch_string=None, + use_dbref=None, ): """ Returns an Object matching a search string/condition, taking @@ -1352,10 +1353,10 @@ class ContribRPObject(DefaultObject): ) if global_search or ( - is_string - and searchdata.startswith("#") - and len(searchdata) > 1 - and searchdata[1:].isdigit() + is_string + and searchdata.startswith("#") + and len(searchdata) > 1 + and searchdata[1:].isdigit() ): # only allow exact matching if searching the entire database # or unique #dbrefs From 8ae1650b05b99c49e2b6c70dea9a15bdff4c5677 Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Thu, 14 Jul 2022 20:02:47 -0400 Subject: [PATCH 28/58] Added msg_type to rpsystem.send_emote() --- evennia/contrib/rpg/rpsystem/tests.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/evennia/contrib/rpg/rpsystem/tests.py b/evennia/contrib/rpg/rpsystem/tests.py index bd2ea32896..370ba2e8aa 100644 --- a/evennia/contrib/rpg/rpsystem/tests.py +++ b/evennia/contrib/rpg/rpsystem/tests.py @@ -197,17 +197,17 @@ class TestRPSystem(BaseEvenniaTest): receiver2.msg = lambda text, **kwargs: setattr(self, "out2", text) rpsystem.send_emote(speaker, receivers, emote, case_sensitive=False) self.assertEqual( - self.out0, + self.out0[0], "With a flair, |mSender|n looks at |bThe first receiver of emotes.|n " 'and |bAnother nice colliding sdesc-guy for tests|n. She says |w"This is a test."|n', ) self.assertEqual( - self.out1, + self.out1[0], "With a flair, |bA nice sender of emotes|n looks at |mReceiver1|n and " '|bAnother nice colliding sdesc-guy for tests|n. She says |w"This is a test."|n', ) self.assertEqual( - self.out2, + self.out2[0], "With a flair, |bA nice sender of emotes|n looks at |bThe first " 'receiver of emotes.|n and |mReceiver2|n. She says |w"This is a test."|n', ) @@ -226,19 +226,19 @@ class TestRPSystem(BaseEvenniaTest): receiver2.msg = lambda text, **kwargs: setattr(self, "out2", text) rpsystem.send_emote(speaker, receivers, case_emote) self.assertEqual( - self.out0, + self.out0[0], "|mSender|n looks at |bthe first receiver of emotes.|n. Then, |mSender|n " "looks at |bTHE FIRST RECEIVER OF EMOTES.|n, |bThe first receiver of emotes.|n " "and |bAnother nice colliding sdesc-guy for tests|n twice.", ) self.assertEqual( - self.out1, + self.out1[0], "|bA nice sender of emotes|n looks at |mReceiver1|n. Then, " "|ba nice sender of emotes|n looks at |mReceiver1|n, |mReceiver1|n " "and |bAnother nice colliding sdesc-guy for tests|n twice.", ) self.assertEqual( - self.out2, + self.out2[0], "|bA nice sender of emotes|n looks at |bthe first receiver of emotes.|n. " "Then, |ba nice sender of emotes|n looks at |bTHE FIRST RECEIVER OF EMOTES.|n, " "|bThe first receiver of emotes.|n and |mReceiver2|n twice.", From e0dc224d088f59f34c6803b7df1f7d0e41bbb91b Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Thu, 14 Jul 2022 22:53:37 -0400 Subject: [PATCH 29/58] Fixed remaining issues. All tests pass. --- .../base_systems/ingame_python/typeclasses.py | 24 +++++++++---------- .../contrib/full_systems/evscaperoom/room.py | 4 ++-- evennia/contrib/grid/wilderness/wilderness.py | 2 +- .../contrib/tutorials/tutorial_world/rooms.py | 18 +++++++------- evennia/objects/objects.py | 16 ++++++++++--- 5 files changed, 37 insertions(+), 27 deletions(-) diff --git a/evennia/contrib/base_systems/ingame_python/typeclasses.py b/evennia/contrib/base_systems/ingame_python/typeclasses.py index de70631218..804b4c4a93 100644 --- a/evennia/contrib/base_systems/ingame_python/typeclasses.py +++ b/evennia/contrib/base_systems/ingame_python/typeclasses.py @@ -189,7 +189,7 @@ class EventCharacter(DefaultCharacter): """Return the CallbackHandler.""" return CallbackHandler(self) - def announce_move_from(self, destination, msg=None, mapping=None): + def announce_move_from(self, destination, msg=None, move_type="move", mapping=None, **kwargs): """ Called if the move is to be announced. This is called while we are still standing in the old @@ -234,9 +234,9 @@ class EventCharacter(DefaultCharacter): if not string: return - super().announce_move_from(destination, msg=string, mapping=mapping) + super().announce_move_from(destination, msg=string, move_type=move_type, mapping=mapping, **kwargs) - def announce_move_to(self, source_location, msg=None, mapping=None): + def announce_move_to(self, source_location, msg=None, move_type="move", mapping=None, **kwargs): """ Called after the move if the move was not quiet. At this point we are standing in the new location. @@ -292,9 +292,9 @@ class EventCharacter(DefaultCharacter): if not string: return - super().announce_move_to(source_location, msg=string, mapping=mapping) + super().announce_move_to(source_location, msg=string, move_type=move_type, mapping=mapping, **kwargs) - def at_pre_move(self, destination): + def at_pre_move(self, destination, move_type="move", **kwargs): """ Called just before starting to move this object to destination. @@ -334,7 +334,7 @@ class EventCharacter(DefaultCharacter): return True - def at_post_move(self, source_location): + def at_post_move(self, source_location, move_type="move", **kwargs): """ Called after move has completed, regardless of quiet mode or not. Allows changes to the object due to the location it is @@ -644,7 +644,7 @@ class EventExit(DefaultExit): """Return the CallbackHandler.""" return CallbackHandler(self) - def at_traverse(self, traversing_object, target_location): + def at_traverse(self, traversing_object, target_location, **kwargs): """ This hook is responsible for handling the actual traversal, normally by calling @@ -665,7 +665,7 @@ class EventExit(DefaultExit): if not allow: return - super().at_traverse(traversing_object, target_location) + super().at_traverse(traversing_object, target_location, **kwargs) # After traversing if is_character: @@ -732,7 +732,7 @@ class EventObject(DefaultObject): """Return the CallbackHandler.""" return CallbackHandler(self) - def at_get(self, getter): + def at_get(self, getter, **kwargs): """ Called by the default `get` command when this object has been picked up. @@ -745,10 +745,10 @@ class EventObject(DefaultObject): permissions for that. """ - super().at_get(getter) + super().at_get(getter, **kwargs) self.callbacks.call("get", getter, self) - def at_drop(self, dropper): + def at_drop(self, dropper, **kwargs): """ Called by the default `drop` command when this object has been dropped. @@ -761,7 +761,7 @@ class EventObject(DefaultObject): permissions from that. """ - super().at_drop(dropper) + super().at_drop(dropper, **kwargs) self.callbacks.call("drop", dropper, self) diff --git a/evennia/contrib/full_systems/evscaperoom/room.py b/evennia/contrib/full_systems/evscaperoom/room.py index 9b4a8205e8..934f363ecc 100644 --- a/evennia/contrib/full_systems/evscaperoom/room.py +++ b/evennia/contrib/full_systems/evscaperoom/room.py @@ -185,7 +185,7 @@ class EvscapeRoom(EvscaperoomObject, DefaultRoom): # Evennia hooks - def at_object_receive(self, moved_obj, source_location): + def at_object_receive(self, moved_obj, source_location, move_type="move", **kwargs): """ Called when an object arrives in the room. This can be used to sum up the situation, set tags etc. @@ -195,7 +195,7 @@ class EvscapeRoom(EvscaperoomObject, DefaultRoom): self.log(f"JOIN: {moved_obj} joined room") self.state.character_enters(moved_obj) - def at_object_leave(self, moved_obj, target_location, **kwargs): + def at_object_leave(self, moved_obj, target_location, move_type="move", **kwargs): """ Called when an object leaves the room; if this is a Character we need to clean them up and move them to the menu state. diff --git a/evennia/contrib/grid/wilderness/wilderness.py b/evennia/contrib/grid/wilderness/wilderness.py index 7ad043240d..418ad4253d 100644 --- a/evennia/contrib/grid/wilderness/wilderness.py +++ b/evennia/contrib/grid/wilderness/wilderness.py @@ -538,7 +538,7 @@ class WildernessRoom(DefaultRoom): # This object wasn't in the wilderness yet. Let's add it. itemcoords[moved_obj] = self.coordinates - def at_object_leave(self, moved_obj, target_location): + def at_object_leave(self, moved_obj, target_location, move_type="move", **kwargs): """ Called just before an object leaves from inside this object. This is a default Evennia hook. diff --git a/evennia/contrib/tutorials/tutorial_world/rooms.py b/evennia/contrib/tutorials/tutorial_world/rooms.py index 620f8c0ce4..54a46c3fea 100644 --- a/evennia/contrib/tutorials/tutorial_world/rooms.py +++ b/evennia/contrib/tutorials/tutorial_world/rooms.py @@ -259,7 +259,7 @@ class TutorialRoom(DefaultRoom): ) self.cmdset.add_default(TutorialRoomCmdSet) - def at_object_receive(self, new_arrival, source_location): + def at_object_receive(self, new_arrival, source_location, move_type="move", **kwargs): """ When an object enter a tutorial room we tell other objects in the room about it by trying to call a hook on them. The Mob object @@ -451,7 +451,7 @@ class IntroRoom(TutorialRoom): "the account." ) - def at_object_receive(self, character, source_location): + def at_object_receive(self, character, source_location, move_type="move", **kwargs): """ Assign properties on characters """ @@ -770,7 +770,7 @@ class BridgeRoom(WeatherRoom): # send a message most of the time self.msg_contents("|w%s|n" % random.choice(BRIDGE_WEATHER)) - def at_object_receive(self, character, source_location): + def at_object_receive(self, character, source_location, move_type="move", **kwargs): """ This hook is called by the engine whenever the player is moved into this room. @@ -796,7 +796,7 @@ class BridgeRoom(WeatherRoom): character.db.tutorial_bridge_position = 0 character.execute_cmd("look") - def at_object_leave(self, character, target_location): + def at_object_leave(self, character, target_location, move_type="move", **kwargs): """ This is triggered when the player leaves the bridge room. """ @@ -1038,7 +1038,7 @@ class DarkRoom(TutorialRoom): # put players in darkness char.msg("The room is completely dark.") - def at_object_receive(self, obj, source_location): + def at_object_receive(self, obj, source_location, move_type="move", **kwargs): """ Called when an object enters the room. """ @@ -1048,7 +1048,7 @@ class DarkRoom(TutorialRoom): # in case the new guy carries light with them self.check_light_state() - def at_object_leave(self, obj, target_location): + def at_object_leave(self, obj, target_location, move_type="move", **kwargs): """ In case people leave with the light, we make sure to clear the DarkCmdSet if necessary. This also works if they are @@ -1103,7 +1103,7 @@ class TeleportRoom(TutorialRoom): self.db.failure_teleport_msg = "You fail!" self.db.failure_teleport_to = "dark cell" - def at_object_receive(self, character, source_location): + def at_object_receive(self, character, source_location, move_type="move", **kwargs): """ This hook is called by the engine whenever the player is moved into this room. @@ -1167,7 +1167,7 @@ class OutroRoom(TutorialRoom): "character." ) - def at_object_receive(self, character, source_location): + def at_object_receive(self, character, source_location, move_type="move", **kwargs): """ Do cleanup. """ @@ -1183,6 +1183,6 @@ class OutroRoom(TutorialRoom): obj.delete() character.tags.clear(category="tutorial_world") - def at_object_leave(self, character, destination): + def at_object_leave(self, character, destination, move_type="move", **kwargs): if character.account: character.account.execute_cmd("unquell") diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index b5a2c8d338..7ae296bf2c 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -1486,6 +1486,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): Args: destination (Object): The object we are moving to move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1622,7 +1625,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): destination.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) - def at_post_move(self, source_location, **kwargs): + def at_post_move(self, source_location, move_type="move", **kwargs): """ Called after move has completed, regardless of quiet mode or not. Allows changes to the object due to the location it is @@ -1630,6 +1633,10 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): Args: source_location (Object): Wwhere we came from. This may be `None`. + move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -1647,6 +1654,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): moved_obj (Object): The object leaving target_location (Object): Where `moved_obj` is going. move_type (str): The type of move. "give", "traverse", etc. + This is an arbitrary string provided to obj.move_to(). + Useful for altering messages or altering logic depending + on the kind of movement. **kwargs (dict): Arbitrary, optional arguments for users overriding the call (unused by default). @@ -2668,9 +2678,9 @@ class ExitCommand(_COMMAND_DEFAULT_CLASS): """ if self.obj.destination: - return " (exit to %s)" % self.obj.destination.get_display_name(caller) + return " (exit to %s)" % self.obj.destination.get_display_name(caller, **kwargs) else: - return " (%s)" % self.obj.get_display_name(caller) + return " (%s)" % self.obj.get_display_name(caller, **kwargs) # From db41063cceff5507a72f83ecb00866e075cf941c Mon Sep 17 00:00:00 2001 From: Greg Taylor Date: Fri, 15 Jul 2022 21:12:52 -0700 Subject: [PATCH 30/58] EGI: Remove unused import of warning module --- evennia/server/game_index_client/client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/evennia/server/game_index_client/client.py b/evennia/server/game_index_client/client.py index 36f8bf99c4..6cf978621a 100644 --- a/evennia/server/game_index_client/client.py +++ b/evennia/server/game_index_client/client.py @@ -4,7 +4,6 @@ The client for sending data to the Evennia Game Index """ import urllib.request, urllib.parse, urllib.error import platform -import warnings import django from django.conf import settings From 9c7d3c6fc7957d8d3857bb5cecc8fe110bd4d9f3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 24 Jul 2022 08:49:31 +0200 Subject: [PATCH 31/58] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be0527668a..e85f54ba8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -168,6 +168,8 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 now return `None` instead of `.db.desc` if no sdesc is set; fallback in hook (inspectorCaracal) - Reworked text2html parser to avoid problems with stateful color tags (inspectorCaracal) - Simplified `EvMenu.options_formatter` hook to use `EvColumn` and f-strings (inspectorcaracal) +- Added `move_type` str kwarg to `move_to()` calls, optionally identifying the type of + move being done ('teleport', 'disembark', 'give' etc). (volund) ## Evennia 0.9.5 From 99d300799e8dc74be9f451b2157b6495001ca94a Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 24 Jul 2022 08:58:44 +0200 Subject: [PATCH 32/58] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e85f54ba8b..3fef5c9181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -170,6 +170,8 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 - Simplified `EvMenu.options_formatter` hook to use `EvColumn` and f-strings (inspectorcaracal) - Added `move_type` str kwarg to `move_to()` calls, optionally identifying the type of move being done ('teleport', 'disembark', 'give' etc). (volund) +- Made RPSystem contrib msg calls pass `pose` or `say` as msg-`type` for use in + e.g. webclient pane filtering where desired. (volund) ## Evennia 0.9.5 From ca819b9b00d311a22f0a4b9ef4bf72d5143c07d0 Mon Sep 17 00:00:00 2001 From: ChrisLR Date: Sun, 24 Jul 2022 10:51:19 -0400 Subject: [PATCH 33/58] Avoid potential shadowing issue --- evennia/commands/cmdset.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evennia/commands/cmdset.py b/evennia/commands/cmdset.py index 98dc999e22..9d8877a679 100644 --- a/evennia/commands/cmdset.py +++ b/evennia/commands/cmdset.py @@ -571,7 +571,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = next((cmd for cmd in self.commands if cmd.key == cmd), None) + cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) if cmd is None: return None @@ -599,7 +599,7 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = next((cmd for cmd in self.commands if cmd.key == cmd), None) + cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) if cmd is None: return None From 3de1773c01dc765ca27d052f8d8039f6de511129 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 25 Jul 2022 09:07:18 +0200 Subject: [PATCH 34/58] Update LICENSE.txt Just make github recognize the license name --- LICENSE.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 30c47bbed0..da0f2fb1bc 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,4 @@ -BSD license -=========== +BSD 3-Clause License Evennia MU* creation system Copyright (c) 2012-, Griatch (griatch gmail com), Gregory Taylor @@ -9,12 +8,14 @@ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -- Neither the name of the Copyright Holders nor the names of its + +3. Neither the name of the Copyright Holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. From 7126b6284fd9a7728271c9a39679c391848094c5 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 25 Jul 2022 09:10:07 +0200 Subject: [PATCH 35/58] Update LICENSE.txt More cleanup for github to detect license. --- LICENSE.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index da0f2fb1bc..be794e6ece 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,5 @@ BSD 3-Clause License -Evennia MU* creation system Copyright (c) 2012-, Griatch (griatch gmail com), Gregory Taylor All rights reserved. @@ -33,4 +32,3 @@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - From fa302d6bdfbd8fe146aa8e0437972b9ecc0ece1b Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 25 Jul 2022 09:16:09 +0200 Subject: [PATCH 36/58] More cleanup Hopefully this will make github recognize the license text. --- LICENSE.txt | 33 ++++++--------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index be794e6ece..1085c29c56 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,34 +1,13 @@ BSD 3-Clause License -Copyright (c) 2012-, Griatch (griatch gmail com), Gregory Taylor -All rights reserved. +Copyright 2012- Griatch (griatch gmail com), Gregory Taylor -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -3. Neither the name of the Copyright Holders nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 18990b52c014d91edcc9cbec2f6cef4f7abf2319 Mon Sep 17 00:00:00 2001 From: Griatch Date: Mon, 25 Jul 2022 09:18:20 +0200 Subject: [PATCH 37/58] More cleanup again --- LICENSE.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 1085c29c56..0daabf80bb 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -6,8 +6,14 @@ Redistribution and use in source and binary forms, with or without modification, 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 894ae978b9272b60330c70b82cb775e3919b8f9b Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Mon, 25 Jul 2022 15:22:26 -0400 Subject: [PATCH 38/58] ObjectDB.objects.get_objs_with_key_or_alias() now uses icontains instead of istartswith for inexact searches against db_key to match behavior with alias. --- evennia/objects/manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evennia/objects/manager.py b/evennia/objects/manager.py index 9dc451a496..e6ae9164eb 100644 --- a/evennia/objects/manager.py +++ b/evennia/objects/manager.py @@ -324,7 +324,7 @@ class ObjectDBManager(TypedObjectManager): search_candidates = ( self.filter( type_restriction - & (Q(db_key__istartswith=ostring) | Q(db_tags__db_key__istartswith=ostring)) + & (Q(db_key__icontains=ostring) | Q(db_tags__db_key__icontains=ostring)) ) .distinct() .order_by("id") From 8b696ed2b58c61dba9c9493127243d8a10acde1f Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Tue, 26 Jul 2022 12:29:40 -0400 Subject: [PATCH 39/58] object.at_traverse() now passes the exit being traversed as a kwarg --- evennia/objects/objects.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 7ae296bf2c..aac2204541 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -866,6 +866,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): Keyword Args: Passed on to announce_move_to and announce_move_from hooks. + Exits will set the "exit" kwarg to themselves. Returns: result (bool): True/False depending on if there were problems with the move. @@ -2889,7 +2890,7 @@ class DefaultExit(DefaultObject): """ source_location = traversing_object.location - if traversing_object.move_to(target_location, move_type="traverse"): + if traversing_object.move_to(target_location, move_type="traverse", exit=self): self.at_post_traverse(traversing_object, source_location) else: if self.db.err_traverse: From f60bb650c640194d36e8c48d315315a27211440e Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Mon, 25 Jul 2022 11:51:11 +0200 Subject: [PATCH 40/58] parallel tests --- .../workflows/github_action_test_suite.yml | 58 ++++++++++++++++--- 1 file changed, 50 insertions(+), 8 deletions(-) diff --git a/.github/workflows/github_action_test_suite.yml b/.github/workflows/github_action_test_suite.yml index c39be50e4b..3650414c13 100644 --- a/.github/workflows/github_action_test_suite.yml +++ b/.github/workflows/github_action_test_suite.yml @@ -33,6 +33,7 @@ jobs: postgresql db: 'evennia' postgresql user: 'evennia' postgresql password: 'password' + - name: Set up MySQL server uses: mirromutth/mysql-action@v1.1 if: ${{ matrix.TESTING_DB == 'mysql'}} @@ -46,16 +47,48 @@ jobs: mysql database: 'evennia' mysql user: 'evennia' mysql password: 'password' + mysql root password: root_password - # wait for db to activage, get logs from their start - - name: Wait / sleep - uses: jakejarvis/wait-action@v0.1.0 - if: ${{ matrix.TESTING_DB == 'postgresql' || matrix.TESTING_DB == 'mysql' }} - with: - time: '10s' + # wait for db to activate + - name: wait for db to activate + if: matrix.TESTING_DB == 'postgresql' || matrix.TESTING_DB == 'mysql' + run: | + + if [ ${{ matrix.TESTING_DB }} = mysql ] + then + while ! mysqladmin ping -h 127.0.0.1 -u root -proot_password -s >/dev/null 2>&1 + do + sleep 1 + echo -n . + done + echo + else + while ! pg_isready -h 127.0.0.1 -q >/dev/null 2>&1 + do + sleep 1 + echo -n . + done + echo + fi + + - name: mysql privileges + if: matrix.TESTING_DB == 'mysql' + run: | + + cat < Date: Mon, 25 Jul 2022 14:05:00 +0200 Subject: [PATCH 41/58] 4 processes! --- .github/workflows/github_action_test_suite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_action_test_suite.yml b/.github/workflows/github_action_test_suite.yml index 3650414c13..a8d7919cc5 100644 --- a/.github/workflows/github_action_test_suite.yml +++ b/.github/workflows/github_action_test_suite.yml @@ -127,7 +127,7 @@ jobs: ../bin/unix/evennia test \ --settings=settings \ --keepdb \ - --parallel auto \ + --parallel 4 \ --timing \ evennia coverage xml From dbde966947a84b9a3cf7b32a7096831f9274864f Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Thu, 21 Jul 2022 17:37:52 +0200 Subject: [PATCH 42/58] fix https://github.com/evennia/evennia/issues/2808 --- evennia/typeclasses/tests.py | 24 +++++++++++++++++++++- evennia/utils/dbserialize.py | 30 +++++++++++++++++++++++++++- evennia/utils/tests/test_gametime.py | 2 ++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/evennia/typeclasses/tests.py b/evennia/typeclasses/tests.py index d97e7c3b5e..d4761638f9 100644 --- a/evennia/typeclasses/tests.py +++ b/evennia/typeclasses/tests.py @@ -3,8 +3,8 @@ Unit tests for typeclass base system """ from django.test import override_settings -from evennia.utils.test_resources import BaseEvenniaTest, EvenniaTestCase from evennia.typeclasses import attributes +from evennia.utils.test_resources import BaseEvenniaTest, EvenniaTestCase from mock import patch from parameterized import parameterized @@ -13,6 +13,10 @@ from parameterized import parameterized # ------------------------------------------------------------ +class DictSubclass(dict): + pass + + class TestAttributes(BaseEvenniaTest): def test_attrhandler(self): key = "testattr" @@ -22,6 +26,14 @@ class TestAttributes(BaseEvenniaTest): self.obj1.db.testattr = value self.assertEqual(self.obj1.db.testattr, value) + value = DictSubclass({"fo": "foo", "bar": "bar"}) + self.obj1.db.testattr = value + self.assertEqual(self.obj1.db.testattr, value) + + value = DictSubclass({"fo": "foo", "bar": "bar", "obj": self.obj2}) + self.obj1.db.testattr = value + self.assertEqual(self.obj1.db.testattr, value) + @override_settings(TYPECLASS_AGGRESSIVE_CACHE=False) @patch("evennia.typeclasses.attributes._TYPECLASS_AGGRESSIVE_CACHE", False) def test_attrhandler_nocache(self): @@ -35,6 +47,16 @@ class TestAttributes(BaseEvenniaTest): self.assertEqual(self.obj1.db.testattr, value) self.assertFalse(self.obj1.attributes.backend._cache) + value = DictSubclass({"fo": "foo", "bar": "bar"}) + self.obj1.db.dict_subclass = value + self.assertEqual(self.obj1.db.dict_subclass, value) + self.assertFalse(self.obj1.attributes.backend._cache) + + value = DictSubclass({"fo": "foo", "bar": "bar", "obj": self.obj2}) + self.obj1.db.dict_subclass = value + self.assertEqual(self.obj1.db.dict_subclass, value) + self.assertFalse(self.obj1.attributes.backend._cache) + def test_weird_text_save(self): "test 'weird' text type (different in py2 vs py3)" from django.utils.safestring import SafeText diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index 11321d8dfd..dba21c63a2 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -644,7 +644,15 @@ def to_pickle(data): # classmethods) and instances pass - if hasattr(item, "__iter__"): + if hasattr(item, "items"): + # we try to conserve the iterable class, if not convert to dict + try: + return item.__class__( + (process_item(key), process_item(val)) for key, val in item.items() + ) + except (AttributeError, TypeError): + return {process_item(key): process_item(val) for key, val in item.items()} + elif hasattr(item, "__iter__"): # we try to conserve the iterable class, if not convert to list try: return item.__class__([process_item(val) for val in item]) @@ -712,6 +720,14 @@ def from_pickle(data, db_obj=None): return OrderedDict((process_item(key), process_item(val)) for key, val in item.items()) elif dtype == deque: return deque(process_item(val) for val in item) + elif hasattr(item, "items"): + # we try to conserve the iterable class, if not convert to dict + try: + return item.__class__( + (process_item(key), process_item(val)) for key, val in item.items() + ) + except (AttributeError, TypeError): + return {process_item(key): process_item(val) for key, val in item.items()} elif hasattr(item, "__iter__"): try: # we try to conserve the iterable class if @@ -778,6 +794,18 @@ def from_pickle(data, db_obj=None): dat = _SaverDeque(_parent=parent) dat._data.extend(process_item(val) for val in item) return dat + elif hasattr(item, "items"): + # we try to conserve the iterable class, if not convert to dict + try: + return item.__class__( + (process_item(key), process_tree(val, parent)) for key, val in item.items() + ) + except (AttributeError, TypeError): + dat = _SaverDict(_parent=parent) + dat._data.update( + (process_item(key), process_tree(val, dat)) for key, val in item.items() + ) + return dat elif hasattr(item, "__iter__"): try: # we try to conserve the iterable class if it diff --git a/evennia/utils/tests/test_gametime.py b/evennia/utils/tests/test_gametime.py index 9060546cbf..c9d7801ea8 100644 --- a/evennia/utils/tests/test_gametime.py +++ b/evennia/utils/tests/test_gametime.py @@ -86,6 +86,7 @@ class TestGametime(TestCase): def test_schedule(self): callback = Mock() + del callback.items script = gametime.schedule(callback, day=19) self.timescripts.append(script) self.assertIsInstance(script, gametime.TimeScript) @@ -94,6 +95,7 @@ class TestGametime(TestCase): def test_repeat_schedule(self): callback = Mock() + del callback.items script = gametime.schedule(callback, repeat=True, min=32) self.timescripts.append(script) self.assertIsInstance(script, gametime.TimeScript) From f9b17d25d1208e3de465a77870875f6c615d5b16 Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Sun, 24 Jul 2022 18:50:52 +0200 Subject: [PATCH 43/58] new de/serialization logic --- evennia/typeclasses/tests.py | 37 ++++++++-- evennia/utils/dbserialize.py | 133 ++++++++++++++++++++++------------- 2 files changed, 115 insertions(+), 55 deletions(-) diff --git a/evennia/typeclasses/tests.py b/evennia/typeclasses/tests.py index d4761638f9..41ddaa41d5 100644 --- a/evennia/typeclasses/tests.py +++ b/evennia/typeclasses/tests.py @@ -2,6 +2,7 @@ Unit tests for typeclass base system """ + from django.test import override_settings from evennia.typeclasses import attributes from evennia.utils.test_resources import BaseEvenniaTest, EvenniaTestCase @@ -26,13 +27,24 @@ class TestAttributes(BaseEvenniaTest): self.obj1.db.testattr = value self.assertEqual(self.obj1.db.testattr, value) + # "plain" subclasses value = DictSubclass({"fo": "foo", "bar": "bar"}) self.obj1.db.testattr = value self.assertEqual(self.obj1.db.testattr, value) - value = DictSubclass({"fo": "foo", "bar": "bar", "obj": self.obj2}) - self.obj1.db.testattr = value + self.obj1.db.testattr["fo"] = "foo2" + value.update({"fo": "foo2"}) self.assertEqual(self.obj1.db.testattr, value) + self.assertEqual(self.obj1.attributes.get("testattr"), value) + + # nested subclasses + value = DictSubclass({"nested": True, "deep": DictSubclass({"fo": "foo", "bar": "bar"})}) + self.obj1.db.testattr = value + + self.obj1.db.testattr["deep"]["fo"] = "nemo" + value["deep"].update({"fo": "nemo"}) + self.assertEqual(self.obj1.db.testattr, value) + self.assertEqual(self.obj1.attributes.get("testattr"), value) @override_settings(TYPECLASS_AGGRESSIVE_CACHE=False) @patch("evennia.typeclasses.attributes._TYPECLASS_AGGRESSIVE_CACHE", False) @@ -47,14 +59,25 @@ class TestAttributes(BaseEvenniaTest): self.assertEqual(self.obj1.db.testattr, value) self.assertFalse(self.obj1.attributes.backend._cache) + # "plain" subclasses value = DictSubclass({"fo": "foo", "bar": "bar"}) - self.obj1.db.dict_subclass = value - self.assertEqual(self.obj1.db.dict_subclass, value) + self.obj1.db.testattr = value + self.assertEqual(self.obj1.db.testattr, value) + + self.obj1.db.testattr["fo"] = "foo2" + value.update({"fo": "foo2"}) + self.assertEqual(self.obj1.db.testattr, value) + self.assertEqual(self.obj1.attributes.get("testattr"), value) self.assertFalse(self.obj1.attributes.backend._cache) - value = DictSubclass({"fo": "foo", "bar": "bar", "obj": self.obj2}) - self.obj1.db.dict_subclass = value - self.assertEqual(self.obj1.db.dict_subclass, value) + # nested subclasses + value = DictSubclass({"nested": True, "deep": DictSubclass({"fo": "foo", "bar": "bar"})}) + self.obj1.db.testattr = value + + self.obj1.db.testattr["deep"]["fo"] = "nemo" + value["deep"].update({"fo": "nemo"}) + self.assertEqual(self.obj1.db.testattr, value) + self.assertEqual(self.obj1.attributes.get("testattr"), value) self.assertFalse(self.obj1.attributes.backend._cache) def test_weird_text_save(self): diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index dba21c63a2..136d182a7b 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -263,7 +263,7 @@ class _SaverList(_SaverMutable, MutableSequence): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self._data = list() + self._data = kwargs.pop("_class", list)() @_save def __iadd__(self, otherlist): @@ -307,7 +307,7 @@ class _SaverDict(_SaverMutable, MutableMapping): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self._data = dict() + self._data = kwargs.pop("_class", dict)() def has_key(self, key): return key in self._data @@ -644,20 +644,21 @@ def to_pickle(data): # classmethods) and instances pass - if hasattr(item, "items"): - # we try to conserve the iterable class, if not convert to dict + if hasattr(item, "__iter__"): try: - return item.__class__( - (process_item(key), process_item(val)) for key, val in item.items() - ) - except (AttributeError, TypeError): - return {process_item(key): process_item(val) for key, val in item.items()} - elif hasattr(item, "__iter__"): - # we try to conserve the iterable class, if not convert to list - try: - return item.__class__([process_item(val) for val in item]) - except (AttributeError, TypeError): - return [process_item(val) for val in item] + # we try to conserve the iterable class, if not convert to dict + try: + return item.__class__( + (process_item(key), process_item(val)) for key, val in item.items() + ) + except (AttributeError, TypeError): + return {process_item(key): process_item(val) for key, val in item.items()} + except: + # we try to conserve the iterable class, if not convert to list + try: + return item.__class__([process_item(val) for val in item]) + except (AttributeError, TypeError): + return [process_item(val) for val in item] elif hasattr(item, "sessid") and hasattr(item, "conn_time"): return pack_session(item) try: @@ -720,21 +721,22 @@ def from_pickle(data, db_obj=None): return OrderedDict((process_item(key), process_item(val)) for key, val in item.items()) elif dtype == deque: return deque(process_item(val) for val in item) - elif hasattr(item, "items"): - # we try to conserve the iterable class, if not convert to dict - try: - return item.__class__( - (process_item(key), process_item(val)) for key, val in item.items() - ) - except (AttributeError, TypeError): - return {process_item(key): process_item(val) for key, val in item.items()} elif hasattr(item, "__iter__"): try: - # we try to conserve the iterable class if - # it accepts an iterator - return item.__class__(process_item(val) for val in item) - except (AttributeError, TypeError): - return [process_item(val) for val in item] + # we try to conserve the iterable class, if not convert to dict + try: + return item.__class__( + (process_item(key), process_item(val)) for key, val in item.items() + ) + except (AttributeError, TypeError): + return {process_item(key): process_item(val) for key, val in item.items()} + except: + try: + # we try to conserve the iterable class if + # it accepts an iterator + return item.__class__(process_item(val) for val in item) + except (AttributeError, TypeError): + return [process_item(val) for val in item] if hasattr(item, "__deserialize_dbobjs__"): # this allows the object to custom-deserialize any embedded dbobjs @@ -794,27 +796,32 @@ def from_pickle(data, db_obj=None): dat = _SaverDeque(_parent=parent) dat._data.extend(process_item(val) for val in item) return dat - elif hasattr(item, "items"): - # we try to conserve the iterable class, if not convert to dict - try: - return item.__class__( - (process_item(key), process_tree(val, parent)) for key, val in item.items() - ) - except (AttributeError, TypeError): - dat = _SaverDict(_parent=parent) - dat._data.update( - (process_item(key), process_tree(val, dat)) for key, val in item.items() - ) - return dat elif hasattr(item, "__iter__"): try: - # we try to conserve the iterable class if it - # accepts an iterator - return item.__class__(process_tree(val, parent) for val in item) - except (AttributeError, TypeError): - dat = _SaverList(_parent=parent) - dat._data.extend(process_tree(val, dat) for val in item) - return dat + # we try to conserve the iterable class, if not convert to dict + try: + dat = _SaverDict(_parent=parent, _class=item.__class__) + dat._data.update( + (process_item(key), process_tree(val, dat)) for key, val in item.items() + ) + return dat + except (AttributeError, TypeError): + dat = _SaverDict(_parent=parent) + dat._data.update( + (process_item(key), process_tree(val, dat)) for key, val in item.items() + ) + return dat + except: + try: + # we try to conserve the iterable class if it + # accepts an iterator + dat = _SaverList(_parent=parent, _class=item.__class__) + dat._data.extend(process_tree(val, dat) for val in item) + return dat + except (AttributeError, TypeError): + dat = _SaverList(_parent=parent) + dat._data.extend(process_tree(val, dat) for val in item) + return dat if hasattr(item, "__deserialize_dbobjs__"): try: @@ -828,7 +835,9 @@ def from_pickle(data, db_obj=None): # convert lists, dicts and sets to their Saved* counterparts. It # is only relevant if the "root" is an iterable of the right type. dtype = type(data) - if dtype == list: + if dtype in (str, int, float, bool, bytes, SafeString, tuple): + return process_item(data) + elif dtype == list: dat = _SaverList(_db_obj=db_obj) dat._data.extend(process_tree(val, dat) for val in data) return dat @@ -858,6 +867,34 @@ def from_pickle(data, db_obj=None): dat = _SaverDeque(_db_obj=db_obj) dat._data.extend(process_item(val) for val in data) return dat + elif hasattr(data, "__iter__"): + try: + # we try to conserve the iterable class, if not convert to dict + try: + dat = _SaverDict(_db_obj=db_obj, _class=data.__class__) + dat._data.update( + (process_item(key), process_tree(val, dat)) for key, val in data.items() + ) + return dat + except (AttributeError, TypeError): + dat = _SaverDict(_db_obj=db_obj) + dat._data.update( + (process_item(key), process_tree(val, dat)) for key, val in data.items() + ) + return dat + except: + try: + # we try to conserve the iterable class if it + # accepts an iterator + dat = _SaverList(_db_obj=db_obj, _class=data.__class__) + dat._data.extend(process_tree(val, dat) for val in data) + return dat + + except (AttributeError, TypeError): + dat = _SaverList(_db_obj=db_obj) + dat._data.extend(process_tree(val, dat) for val in data) + return dat + return process_item(data) From 1794457b575ccda316fc1c90521aa24fe62ad25d Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Mon, 25 Jul 2022 17:13:31 +0200 Subject: [PATCH 44/58] no longer needed --- evennia/utils/tests/test_gametime.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/evennia/utils/tests/test_gametime.py b/evennia/utils/tests/test_gametime.py index c9d7801ea8..9060546cbf 100644 --- a/evennia/utils/tests/test_gametime.py +++ b/evennia/utils/tests/test_gametime.py @@ -86,7 +86,6 @@ class TestGametime(TestCase): def test_schedule(self): callback = Mock() - del callback.items script = gametime.schedule(callback, day=19) self.timescripts.append(script) self.assertIsInstance(script, gametime.TimeScript) @@ -95,7 +94,6 @@ class TestGametime(TestCase): def test_repeat_schedule(self): callback = Mock() - del callback.items script = gametime.schedule(callback, repeat=True, min=32) self.timescripts.append(script) self.assertIsInstance(script, gametime.TimeScript) From d91b4ecaff15c1732d2a38e23c52b2b636b84dad Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Mon, 25 Jul 2022 16:30:44 +0200 Subject: [PATCH 45/58] implement _SaverDict | _SaverDict --- evennia/utils/dbserialize.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index 11321d8dfd..0b8b0e63b8 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -243,6 +243,9 @@ class _SaverMutable(object): def __or__(self, other): return self._data | other + def __ror__(self, other): + return self._data | other + @_save def __setitem__(self, key, value): self._data.__setitem__(key, self._convert_mutables(value)) From 1691906401f26a7a64dab7687509b96599543480 Mon Sep 17 00:00:00 2001 From: Andrew Bastien Date: Tue, 26 Jul 2022 21:07:24 -0400 Subject: [PATCH 46/58] Improved CmdParser to invert control of matching largely to Command class. Streamlined related code. --- evennia/commands/cmdparser.py | 40 +++++++---------------------------- evennia/commands/command.py | 24 ++++++++++++++++++--- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/evennia/commands/cmdparser.py b/evennia/commands/cmdparser.py index e2c470b456..5bcbd6651f 100644 --- a/evennia/commands/cmdparser.py +++ b/evennia/commands/cmdparser.py @@ -61,38 +61,14 @@ def build_matches(raw_string, cmdset, include_prefixes=False): """ matches = [] try: - if include_prefixes: - # use the cmdname as-is - l_raw_string = raw_string.lower() - for cmd in cmdset: - matches.extend( - [ - create_match(cmdname, raw_string, cmd, cmdname) - for cmdname in [cmd.key] + cmd.aliases - if cmdname - and l_raw_string.startswith(cmdname.lower()) - and (not cmd.arg_regex or cmd.arg_regex.match(l_raw_string[len(cmdname) :])) - ] - ) - else: - # strip prefixes set in settings - raw_string = ( - raw_string.lstrip(_CMD_IGNORE_PREFIXES) if len(raw_string) > 1 else raw_string - ) - l_raw_string = raw_string.lower() - for cmd in cmdset: - for raw_cmdname in [cmd.key] + cmd.aliases: - cmdname = ( - raw_cmdname.lstrip(_CMD_IGNORE_PREFIXES) - if len(raw_cmdname) > 1 - else raw_cmdname - ) - if ( - cmdname - and l_raw_string.startswith(cmdname.lower()) - and (not cmd.arg_regex or cmd.arg_regex.match(l_raw_string[len(cmdname) :])) - ): - matches.append(create_match(cmdname, raw_string, cmd, raw_cmdname)) + orig_string = raw_string + if not include_prefixes and len(raw_string) > 1: + raw_string = raw_string.lstrip(_CMD_IGNORE_PREFIXES) + search_string = raw_string.lower() + for cmd in cmdset: + cmdname, raw_cmdname = cmd.match(search_string, include_prefixes=include_prefixes) + if cmdname: + matches.append(create_match(cmdname, raw_string, cmd, raw_cmdname)) except Exception: log_trace("cmdhandler error. raw_input:%s" % raw_string) return matches diff --git a/evennia/commands/command.py b/evennia/commands/command.py index 4c9c24d403..b1522d6210 100644 --- a/evennia/commands/command.py +++ b/evennia/commands/command.py @@ -221,6 +221,7 @@ class Command(metaclass=CommandMeta): """ if kwargs: _init_command(self, **kwargs) + self._optimize() @lazy_property def lockhandler(self): @@ -297,10 +298,15 @@ class Command(metaclass=CommandMeta): Optimize the key and aliases for lookups. """ # optimization - a set is much faster to match against than a list - self._matchset = set([self.key] + self.aliases) + matches = [self.key.lower()] + matches.extend(x.lower() for x in self.aliases) + + self._matchset = set(matches) # optimization for looping over keys+aliases self._keyaliases = tuple(self._matchset) + self._noprefix_aliases = {x.lstrip(CMD_IGNORE_PREFIXES): x for x in matches} + def set_key(self, new_key): """ Update key. @@ -336,7 +342,7 @@ class Command(metaclass=CommandMeta): self.aliases = list(set(alias for alias in aliases if alias != self.key)) self._optimize() - def match(self, cmdname): + def match(self, cmdname, include_prefixes=True): """ This is called by the system when searching the available commands, in order to determine if this is the one we wanted. cmdname was @@ -345,11 +351,23 @@ class Command(metaclass=CommandMeta): Args: cmdname (str): Always lowercase when reaching this point. + Kwargs: + include_prefixes (bool): If false, will compare against the _noprefix + variants of commandnames. + Returns: result (bool): Match result. """ - return cmdname in self._matchset + if include_prefixes: + for cmd_key in self._keyaliases: + if cmdname.startswith(cmd_key) and (not self.arg_regex or self.arg_regex.match(cmdname[len(cmd_key) :])): + return cmd_key, cmd_key + else: + for k, v in self._noprefix_aliases.items(): + if cmdname.startswith(k) and (not self.arg_regex or self.arg_regex.match(cmdname[len(k) :])): + return k, v + return None, None def access(self, srcobj, access_type="cmd", default=False): """ From 9f4de7bd1c0d749b78a23657ef68090b25b3f9a4 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Wed, 27 Jul 2022 12:02:50 -0600 Subject: [PATCH 47/58] add validation, update docs --- .../contrib/utils/name_generator/README.md | 57 +++++- .../contrib/utils/name_generator/namegen.py | 181 +++++------------- 2 files changed, 99 insertions(+), 139 deletions(-) diff --git a/evennia/contrib/utils/name_generator/README.md b/evennia/contrib/utils/name_generator/README.md index bc4295553f..866fa63928 100644 --- a/evennia/contrib/utils/name_generator/README.md +++ b/evennia/contrib/utils/name_generator/README.md @@ -12,6 +12,10 @@ Fantasy names are generated from basic phonetic rules, using CVC syllable syntax Both real-world and fantasy name generation can be extended to include additional information via your game's `settings.py` +## Installation + +This is a stand-alone utility. Just import this module (`from evennia.contrib.utils import name_generator`) and use its functions wherever you like. + ## Usage Import the module where you need it with the following: @@ -20,8 +24,7 @@ from evennia.contrib.utils.name_generator import namegen ``` By default, all of the functions will return a string with one generated name. -If you specify more than one, or pass `return_list=True` as a keyword argument, -the returned value will be a list of strings. +If you specify more than one, or pass `return_list=True` as a keyword argument, the returned value will be a list of strings. The module is especially useful for naming newly-created NPCs, like so: ```py @@ -29,6 +32,37 @@ npc_name = namegen.full_name() npc_obj = create_object(key=npc_name, typeclass="typeclasses.characters.NPC") ``` +## Available Settings + +These settings can all be defined in your game's `server/conf/settings.py` file. + +- `NAMEGEN_FIRST_NAMES` adds a new list of first (personal) names. +- `NAMEGEN_LAST_NAMES` adds a new list of last (family) names. +- `NAMEGEN_REPLACE_LISTS` - set to `True` if you want to use only the names defined in your settings. +- `NAMEGEN_FANTASY_RULES` lets you add new phonetic rules for generating entirely made-up names. See the section "Custom Fantasy Name style rules" for details on how this should look. + +Examples: +```py +NAMEGEN_FIRST_NAMES = [ + ("Evennia", 'mf'), + ("Green Tea", 'f'), + ] + +NAMEGEN_LAST_NAMES = [ "Beeblebrox", "Son of Odin" ] + +NAMEGEN_FANTASY_RULES = { + "example_style": { + "syllable": "(C)VC", + "consonants": [ 'z','z','ph','sh','r','n' ], + "start": ['m'], + "end": ['x','n'], + "vowels": [ "e","e","e","a","i","i","u","o", ], + "length": (2,4), + } +} +``` + + ## Generating Real Names The contrib offers three functions for generating random real-world names: @@ -84,8 +118,7 @@ NAMEGEN_FIRST_NAMES = [ NAMEGEN_LAST_NAMES = [ "Beeblebrox", "Son of Odin" ] ``` -If you want to replace all of the built-in name lists with your own, set -`NAMEGEN_REPLACE_LISTS = True` +Set `NAMEGEN_REPLACE_LISTS = True` if you want your custom lists above to entirely replace the built-in lists rather than extend them. ## Generating Fantasy Names @@ -123,19 +156,23 @@ NAMEGEN_FANTASY_RULES = { } ``` -Then you could generate names following that ruleset with -`namegen.fantasy_name(style="example_style")`. +Then you could generate names following that ruleset with `namegen.fantasy_name(style="example_style")`. + +The keys `syllable`, `consonants`, `vowels`, and `length` must be present, and `length` must be the minimum and maximum syllable counts. `start` and `end` are optional. + #### syllable The "syllable" field defines the structure of each syllable. C is consonant, V is vowel, -and parentheses mean it's optional. So, the example "(C)VC" means that every syllable +and parentheses mean it's optional. So, the example `(C)VC` means that every syllable will always have a vowel followed by a consonant, and will *sometimes* have another -consonant at the beginning. +consonant at the beginning. e.g. `en`, `bak` *Note:* While it's not standard, the contrib lets you nest parentheses, with each layer being less likely to show up. Additionally, any other characters put into the syllable -structure - e.g. an apostrophe - will be read and inserted as written. Check out the -"alien" style rules in the module for an example of both. +structure - e.g. an apostrophe - will be read and inserted as written. The +"alien" style rules in the module gives an example of both: the syllable structure is `C(C(V))(')(C)` +which results in syllables such as `khq`, `xho'q`, and `q'` with a much lower frequency of vowels than +`C(C)(V)(')(C)` would have given. #### consonants A simple list of consonant phonemes that can be chosen from. Multi-character strings are diff --git a/evennia/contrib/utils/name_generator/namegen.py b/evennia/contrib/utils/name_generator/namegen.py index 8f1a3f1c49..e506ec6331 100644 --- a/evennia/contrib/utils/name_generator/namegen.py +++ b/evennia/contrib/utils/name_generator/namegen.py @@ -1,5 +1,5 @@ """ -# Random Name Generator +Random Name Generator Contribution by InspectorCaracal (2022) @@ -13,157 +13,57 @@ Fantasy names are generated from basic phonetic rules, using CVC syllable syntax Both real-world and fantasy name generation can be extended to include additional information via your game's `settings.py` -## Usage -Import the module where you need it with the following: -```py -from evennia.contrib.utils.name_generator import namegen -``` +Available Methods: -By default, all of the functions will return a string with one generated name. -If you specify more than one, or pass `return_list=True` as a keyword argument, -the returned value will be a list of strings. + first_name - Selects a random a first (personal) name from the name lists. + last_name - Selects a random last (family) name from the name lists. + full_name - Generates a randomized full name, optionally including middle names, by selecting first/last names from the name lists. + fantasy_name - Generates a completely new made-up name based on phonetic rules. -The module is especially useful for naming newly-created NPCs, like so: -```py -npc_name = namegen.full_name() -npc_obj = create_object(key=npc_name, typeclass="typeclasses.characters.NPC") -``` +Method examples: -## Generating Real Names - -The contrib offers three functions for generating random real-world names: -`first_name()`, `family_name()`, and `full_name()`. If you want more than one name -generated at once, you can use the `num` keyword argument to specify how many. - -Example: -``` >>> namegen.first_name(num=5) ['Genesis', 'Tali', 'Budur', 'Dominykas', 'Kamau'] -``` -The `first_name` function also takes a `gender` keyword argument to filter names -by gender association. 'f' for feminine, 'm' for masculine, 'mf' for feminine -_and_ masculine, or the default `None` to match any gendering. - -The `full_name` function also takes the `gender` keyword, as well as `parts` which -defines how many names make up the full name. The minimum is two: a first name and -a last name. You can also generate names with the family name first by setting -the keyword arg `surname_first` to `True` - -Example: -``` ->>> namegen.full_name() -'Keeva Bernat' ->>> namegen.full_name(parts=4) -'Suzu Shabnam Kafka Baier' >>> namegen.full_name(parts=3, surname_first=True) 'Ó Muircheartach Torunn Dyson' >>> namegen.full_name(gender='f') 'Wikolia Ó Deasmhumhnaigh' -``` -### Adding your own names +>>> namegen.fantasy_name(num=3, style="fluid") +['Aewalisash', 'Ayi', 'Iaa'] -You can add additional names with the settings `NAMEGEN_FIRST_NAMES` and -`NAMEGEN_LAST_NAMES` -`NAMEGEN_FIRST_NAMES` should be a list of tuples, where the first value is the name -and then second value is the gender flag - 'm' for masculine-only, 'f' for feminine- -only, and 'mf' for either one. +Available Settings (define these in your `settings.py`) -`NAMEGEN_LAST_NAMES` should be a list of strings, where each item is an available -surname. + NAMEGEN_FIRST_NAMES - Option to add a new list of first (personal) names. + NAMEGEN_LAST_NAMES - Option to add a new list of last (family) names. + NAMEGEN_REPLACE_LISTS - Set to True if you want to use ONLY your name lists and not the ones that come with the contrib. + NAMEGEN_FANTASY_RULES - Option to add new fantasy-name style rules. + Must be a dictionary that includes "syllable", "consonants", "vowels", and "length" - see the example. + "start" and "end" keys are optional. + +Settings examples: -Examples: -```py NAMEGEN_FIRST_NAMES = [ ("Evennia", 'mf'), ("Green Tea", 'f'), ] NAMEGEN_LAST_NAMES = [ "Beeblebrox", "Son of Odin" ] -``` -If you want to replace all of the built-in name lists with your own, set -`NAMEGEN_REPLACE_LISTS = True` - -## Generating Fantasy Names - -Generating completely made-up names is done with the `fantasy_name` function. The -contrib comes with three built-in styles of names which you can use, or you can -put a dictionary of custom name rules into `settings.py` - -Generating a fantasy name takes the ruleset key as the "style" keyword, and can -return either a single name or multiple names. By default, it will return a -single name in the built-in "harsh" style. - -```py ->>> namegen.fantasy_name() -'Vhon' ->>> namegen.fantasy_name(num=3, style="fluid") -['Aewalisash', 'Ayi', 'Iaa'] -``` - -### Custom Fantasy Name style rules - -The style rules are contained in a dictionary of dictionaries, where the style name -is the key and the style rules are the dictionary value. - -The following is how you would add a custom style to `settings.py`: -```py NAMEGEN_FANTASY_RULES = { - "example_style": { + "example_style": { "syllable": "(C)VC", "consonants": [ 'z','z','ph','sh','r','n' ], "start": ['m'], "end": ['x','n'], "vowels": [ "e","e","e","a","i","i","u","o", ], "length": (2,4), + } } -} -``` -Then you could generate names following that ruleset with -`namegen.fantasy_name(style="example_style")`. - -#### syllable -The "syllable" field defines the structure of each syllable. C is consonant, V is vowel, -and parentheses mean it's optional. So, the example "(C)VC" means that every syllable -will always have a vowel followed by a consonant, and will *sometimes* have another -consonant at the beginning. - -*Note:* While it's not standard, the contrib lets you nest parentheses, with each layer -being less likely to show up. Additionally, any other characters put into the syllable -structure - e.g. an apostrophe - will be read and inserted as written. Check out the -"alien" style rules in the module for an example of both. - -#### consonants -A simple list of consonant phonemes that can be chosen from. Multi-character strings are -perfectly acceptable, such as "th", but each one will be treated as a single consonant. - -The function uses a naive form of weighting, where you make a phoneme more likely to -occur by putting more copies of it into the list. - -#### start and end -These are **optional** lists for the first and last letters of a syllable, if they're -a consonant. You can add on additional consonants which can only occur at the beginning -or end of a syllable, or you can add extra copies of already-defined consonants to -increase the frequency of them at the start/end of syllables. - -They can be left out of custom rulesets entirely. - -#### vowels -Works exactly like consonants, but is instead used for the vowel selection. Single- -or multi-character strings are equally fine, and you can increase the frequency of -any given vowel by putting it into the list multiple times. - -#### length -A tuple with the minimum and maximum number of syllables a name can have. - -When setting this, keep in mind how long your syllables can get! 4 syllables might -not seem like very many, but if you have a (C)(V)VC structure with one- and -two-letter phonemes, you can get up to eight characters per syllable. """ import random @@ -171,6 +71,8 @@ import re from os import path from django.conf import settings +from evennia.utils.utils import is_iter + # Load name data from Behind the Name lists dirpath = path.dirname(path.abspath(__file__)) _FIRSTNAME_LIST = [] @@ -181,6 +83,7 @@ _SURNAME_LIST = [] with open(path.join(dirpath, "btn_surnames.txt"),'r', encoding='utf-8') as file: _SURNAME_LIST = [ line.strip() for line in file if line and not line.startswith("#") ] +_REQUIRED_KEYS = { "syllable", "consonants", "vowels", "length" } # Define phoneme structure for built-in fantasy name generators. _FANTASY_NAME_STRUCTURES = { "harsh": { @@ -208,7 +111,7 @@ _FANTASY_NAME_STRUCTURES = { "length": (1,5), }, -} +} _RE_DOUBLES = re.compile(r'(\w)\1{2,}') @@ -240,14 +143,34 @@ def fantasy_name(num=1, style="harsh", return_list=False): return_list (bool) - Whether to always return a list. `False` by default, which returns a string if there is only one value and a list if more. """ + + def _validate(style_name): + if style_name not in _FANTASY_NAME_STRUCTURES: + raise ValueError(f"Invalid style name: '{style_name}'. Available style names: {' '.join(_FANTASY_NAME_STRUCTURES.keys())}") + style_dict = _FANTASY_NAME_STRUCTURES[style_name] + + if type(style_dict) is not dict: + raise ValueError(f"Style {style_name} must be a dictionary.") + + keys = set(style_dict.keys()) + missing_keys = _REQUIRED_KEYS - keys + if len(set): + raise KeyError(f"Style dictionary {style_name} is missing required keys: {' '.join(missing_keys)}") + + if not (is_iter(style_dict['consonants']) and is_iter(style_dict['vowels'])): + raise ValueError(f"'consonants' and 'vowels' keys for style {style_name} must have iterable values.") + + if not (is_iter(style_dict['length']) and len(style_dict['length']) == 2): + raise ValueError(f"'length' key for {style_name} must have a minimum and maximum number of syllables.") + + return style_dict + # validate num first num = int(num) if num < 1: raise ValueError("Number of names to generate must be positive.") - if style not in _FANTASY_NAME_STRUCTURES: - raise ValueError(f"Invalid style name: '{style}'.") - style_dict = _FANTASY_NAME_STRUCTURES[style] + style_dict = _validate(style) syllable = [] weight = 8 @@ -347,7 +270,7 @@ def first_name(num=1, gender=None, return_list=False, ): return results -def family_name(num=1, return_list=False): +def last_name(num=1, return_list=False): """ Generate family names, also known as surnames or last names. @@ -405,7 +328,7 @@ def full_name(num=1, parts=2, gender=None, return_list=False, surname_first=Fals familys = total_mids - personals # then get the names for each personal_mids = first_name(num=personals, gender=gender, return_list=True) - family_mids = family_name(num=familys, return_list=True) if familys else [] + family_mids = last_name(num=familys, return_list=True) if familys else [] # splice them together according to surname_first.... middle_names = family_mids+personal_mids if surname_first else personal_mids+family_mids # ...and then split into `num`-length lists to be used for the final names @@ -413,13 +336,13 @@ def full_name(num=1, parts=2, gender=None, return_list=False, surname_first=Fals # get personal and family names personal_names = first_name(num=num, gender=gender, return_list=True) - family_names = family_name(num=num, return_list=True) + last_names = last_name(num=num, return_list=True) # attach personal/family names to the list of name lists, according to surname_first if surname_first: - name_lists = [family_names] + name_lists + [personal_names] + name_lists = [last_names] + name_lists + [personal_names] else: - name_lists = [personal_names] + name_lists + [family_names] + name_lists = [personal_names] + name_lists + [last_names] # lastly, zip them all up and join them together names = list(zip(*name_lists)) From 3b039fdaff2e567aab852480f961d7a938e659f8 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Wed, 27 Jul 2022 13:24:32 -0600 Subject: [PATCH 48/58] update tests and docs --- .../contrib/utils/name_generator/README.md | 77 ++++++++++++++++++- .../contrib/utils/name_generator/namegen.py | 8 +- evennia/contrib/utils/name_generator/tests.py | 34 +++++++- 3 files changed, 109 insertions(+), 10 deletions(-) diff --git a/evennia/contrib/utils/name_generator/README.md b/evennia/contrib/utils/name_generator/README.md index 866fa63928..d368a9d7f5 100644 --- a/evennia/contrib/utils/name_generator/README.md +++ b/evennia/contrib/utils/name_generator/README.md @@ -128,15 +128,80 @@ put a dictionary of custom name rules into `settings.py` Generating a fantasy name takes the ruleset key as the "style" keyword, and can return either a single name or multiple names. By default, it will return a -single name in the built-in "harsh" style. +single name in the built-in "harsh" style. The contrib also comes with "fluid" and "alien" styles. ```py >>> namegen.fantasy_name() 'Vhon' +>>> namegen.fantasy_name(num=3, style="harsh") +['Kha', 'Kizdhu', 'Godögäk'] >>> namegen.fantasy_name(num=3, style="fluid") ['Aewalisash', 'Ayi', 'Iaa'] +>>> namegen.fantasy_name(num=5, style="alien") +["Qz'vko'", "Xv'w'hk'hxyxyz", "Wxqv'hv'k", "Wh'k", "Xbx'qk'vz"] ``` +### Multi-Word Fantasy Names + +The `fantasy_name` function will only generate one name-word at a time, so for multi-word names +you'll need to combine pieces together. Depending on what kind of end result you want, there are +several approaches. + + +#### The simple approach + +If all you need is for it to have multiple parts, you can generate multiple names at once and `join` them. + +```py +>>> name = " ".join(namegen.fantasy_name(num=2) +>>> print(name) +Dezhvözh Khäk +``` + +If you want a little more variation between first/last names, you can also generate names for +different styles and then combine them. + +```py +>>> name = "{first} {last}".format( first=namegen.fantasy_name(style="fluid"), last=namegen.fantasy_name(style="harsh") ) +>>> print(name) +Ofasa Käkudhu +``` + +#### "Nakku Silversmith" + +One common fantasy name practice is profession- or title-based surnames. To achieve this effect, +you can use the `last_name` function with a custom list of last names and combine it with your generated +fantasy name. + +Example: +```py +NAMEGEN_LAST_NAMES = [ "Silversmith", "the Traveller", "Destroyer of Worlds" ] +NAMEGEN_REPLACE_LISTS = True + +>>> name = "{first} {last}".format( first=namegen.fantasy_name(), last=namegen.last_name() ) +>>> print(name) +Tözhkheko the Traveller +``` + +#### Elarion d'Yrinea, Thror Obinson + +Another common flavor of fantasy names is to use a surname suffix or prefix. For that, you'll +need to add in the extra bit yourself. + +Examples: +```py +>>> names = namegen.fantasy_name(num=2) +>>> name = f"{names[0]} za'{names[1]}" +>>> print(name) +Tithe za'Dhudozkok + +>>> names = namegen.fantasy_name(num=2) +>>> name = f"{names[0]} {names[1]}son" +>>> print(name) +Kön Ködhöddoson +``` + + ### Custom Fantasy Name style rules The style rules are contained in a dictionary of dictionaries, where the style name @@ -187,12 +252,16 @@ a consonant. You can add on additional consonants which can only occur at the be or end of a syllable, or you can add extra copies of already-defined consonants to increase the frequency of them at the start/end of syllables. +For example, in the `example_style` above, we have a `start` of m, and `end` of x and n. +Taken with the rest of the consonants/vowels, this means you can have the syllables of `mez` +but not `zem`, and you can have `phex` or `phen` but not `xeph` or `neph`. + They can be left out of custom rulesets entirely. #### vowels -Works exactly like consonants, but is instead used for the vowel selection. Single- -or multi-character strings are equally fine, and you can increase the frequency of -any given vowel by putting it into the list multiple times. +Vowels is a simple list of vowel phonemes - exactly like consonants, but instead used for the +vowel selection. Single-or multi-character strings are equally fine. It uses the same naive weighting system +as consonants - you can increase the frequency of any given vowel by putting it into the list multiple times. #### length A tuple with the minimum and maximum number of syllables a name can have. diff --git a/evennia/contrib/utils/name_generator/namegen.py b/evennia/contrib/utils/name_generator/namegen.py index e506ec6331..e205e702c3 100644 --- a/evennia/contrib/utils/name_generator/namegen.py +++ b/evennia/contrib/utils/name_generator/namegen.py @@ -71,8 +71,6 @@ import re from os import path from django.conf import settings -from evennia.utils.utils import is_iter - # Load name data from Behind the Name lists dirpath = path.dirname(path.abspath(__file__)) _FIRSTNAME_LIST = [] @@ -157,9 +155,9 @@ def fantasy_name(num=1, style="harsh", return_list=False): if len(set): raise KeyError(f"Style dictionary {style_name} is missing required keys: {' '.join(missing_keys)}") - if not (is_iter(style_dict['consonants']) and is_iter(style_dict['vowels'])): - raise ValueError(f"'consonants' and 'vowels' keys for style {style_name} must have iterable values.") - + if not (type(style_dict['consonants']) is list and type(style_dict['vowels']) is list): + raise TypeError(f"'consonants' and 'vowels' for style {style_name} must be lists.") + if not (is_iter(style_dict['length']) and len(style_dict['length']) == 2): raise ValueError(f"'length' key for {style_name} must have a minimum and maximum number of syllables.") diff --git a/evennia/contrib/utils/name_generator/tests.py b/evennia/contrib/utils/name_generator/tests.py index 7f7a8ab128..b8b0f7354d 100644 --- a/evennia/contrib/utils/name_generator/tests.py +++ b/evennia/contrib/utils/name_generator/tests.py @@ -6,6 +6,26 @@ Tests for the Random Name Generator from evennia.utils.test_resources import BaseEvenniaTest from . import namegen +_INVALID_STYLES = { + "missing_keys": { + "consonants": ['c','d'], + "length": (1,2), + }, + "invalid_vowels": { + "syllable": "CVC", + "consonants": ['c','d'], + "vowels": "aeiou", + "length": (1,2), + }, + "invalid_length": { + "syllable": "CVC", + "consonants": ['c','d'], + "vowels": ['a','e'], + "length": 2, + }, +} + +namegen._FANTASY_NAME_STRUCTURES |= _INVALID_STYLES class TestNameGenerator(BaseEvenniaTest): def test_fantasy_name(self): @@ -38,7 +58,19 @@ class TestNameGenerator(BaseEvenniaTest): with self.assertRaises(ValueError): namegen.fantasy_name(style="dummy") - + + def test_structure_validation(self): + """ + Verify that validation raises the correct errors for invalid inputs. + """ + with self.assertRaises(KeyError): + namegen.fantasy_name(style="missing_keys") + + with self.assertRaises(TypeError): + namegen.fantasy_name(style="invalid_vowels") + + with self.assertRaises(ValueError): + namegen.fantasy_name(style="invalid_length") def test_first_name(self): """ From ed252246999e749b0f848ca59bff3055a118fac0 Mon Sep 17 00:00:00 2001 From: InspectorCaracal Date: Wed, 27 Jul 2022 13:51:28 -0600 Subject: [PATCH 49/58] clean up docs, fix tests --- .../contrib/utils/name_generator/README.md | 34 +++++++++++-------- .../contrib/utils/name_generator/namegen.py | 14 ++++---- evennia/contrib/utils/name_generator/tests.py | 30 ++++++++-------- 3 files changed, 43 insertions(+), 35 deletions(-) diff --git a/evennia/contrib/utils/name_generator/README.md b/evennia/contrib/utils/name_generator/README.md index d368a9d7f5..ac45d52ae0 100644 --- a/evennia/contrib/utils/name_generator/README.md +++ b/evennia/contrib/utils/name_generator/README.md @@ -66,13 +66,15 @@ NAMEGEN_FANTASY_RULES = { ## Generating Real Names The contrib offers three functions for generating random real-world names: -`first_name()`, `family_name()`, and `full_name()`. If you want more than one name +`first_name()`, `last_name()`, and `full_name()`. If you want more than one name generated at once, you can use the `num` keyword argument to specify how many. Example: ``` >>> namegen.first_name(num=5) ['Genesis', 'Tali', 'Budur', 'Dominykas', 'Kamau'] +>>> namegen.first_name(gender='m') +'Blanchard' ``` The `first_name` function also takes a `gender` keyword argument to filter names @@ -153,18 +155,20 @@ several approaches. If all you need is for it to have multiple parts, you can generate multiple names at once and `join` them. ```py ->>> name = " ".join(namegen.fantasy_name(num=2) ->>> print(name) -Dezhvözh Khäk +>>> name = " ".join(namegen.fantasy_name(num=2)) +>>> name +'Dezhvözh Khäk' ``` If you want a little more variation between first/last names, you can also generate names for different styles and then combine them. ```py ->>> name = "{first} {last}".format( first=namegen.fantasy_name(style="fluid"), last=namegen.fantasy_name(style="harsh") ) ->>> print(name) -Ofasa Käkudhu +>>> first = namegen.fantasy_name(style="fluid") +>>> last = namegen.fantasy_name(style="harsh") +>>> name = f"{first} {last}" +>>> name +'Ofasa Käkudhu' ``` #### "Nakku Silversmith" @@ -178,9 +182,11 @@ Example: NAMEGEN_LAST_NAMES = [ "Silversmith", "the Traveller", "Destroyer of Worlds" ] NAMEGEN_REPLACE_LISTS = True ->>> name = "{first} {last}".format( first=namegen.fantasy_name(), last=namegen.last_name() ) ->>> print(name) -Tözhkheko the Traveller +>>> first = namegen.fantasy_name() +>>> last = namegen.last_name() +>>> name = f"{first} {last}" +>>> name +'Tözhkheko the Traveller' ``` #### Elarion d'Yrinea, Thror Obinson @@ -192,13 +198,13 @@ Examples: ```py >>> names = namegen.fantasy_name(num=2) >>> name = f"{names[0]} za'{names[1]}" ->>> print(name) -Tithe za'Dhudozkok +>>> name +"Tithe za'Dhudozkok" >>> names = namegen.fantasy_name(num=2) >>> name = f"{names[0]} {names[1]}son" ->>> print(name) -Kön Ködhöddoson +>>> name +'Kön Ködhöddoson' ``` diff --git a/evennia/contrib/utils/name_generator/namegen.py b/evennia/contrib/utils/name_generator/namegen.py index e205e702c3..b415afe406 100644 --- a/evennia/contrib/utils/name_generator/namegen.py +++ b/evennia/contrib/utils/name_generator/namegen.py @@ -71,6 +71,8 @@ import re from os import path from django.conf import settings +from evennia.utils.utils import is_iter + # Load name data from Behind the Name lists dirpath = path.dirname(path.abspath(__file__)) _FIRSTNAME_LIST = [] @@ -152,7 +154,7 @@ def fantasy_name(num=1, style="harsh", return_list=False): keys = set(style_dict.keys()) missing_keys = _REQUIRED_KEYS - keys - if len(set): + if len(missing_keys): raise KeyError(f"Style dictionary {style_name} is missing required keys: {' '.join(missing_keys)}") if not (type(style_dict['consonants']) is list and type(style_dict['vowels']) is list): @@ -181,13 +183,13 @@ def fantasy_name(num=1, style="harsh", return_list=False): weight = weight*2 else: if key == "C": - type = "consonants" + sound_type = "consonants" elif key == "V": - type = "vowels" + sound_type = "vowels" else: - type = key + sound_type = key # append the sound type and weight - syllable.append( (type, int(weight)) ) + syllable.append( (sound_type, int(weight)) ) name_list = [] @@ -254,7 +256,7 @@ def first_name(num=1, gender=None, return_list=False, ): # filter the options by gender name_options = [ name_data[0] for name_data in _FIRSTNAME_LIST if all([gender_key in gender for gender_key in name_data[1]])] if not len(name_options): - raise KeyError(f"Invalid gender key '{gender}'.") + raise ValueError(f"Invalid gender '{gender}'.") else: name_options = [ name_data[0] for name_data in _FIRSTNAME_LIST ] diff --git a/evennia/contrib/utils/name_generator/tests.py b/evennia/contrib/utils/name_generator/tests.py index b8b0f7354d..5dba57f8f3 100644 --- a/evennia/contrib/utils/name_generator/tests.py +++ b/evennia/contrib/utils/name_generator/tests.py @@ -4,7 +4,7 @@ Tests for the Random Name Generator """ from evennia.utils.test_resources import BaseEvenniaTest -from . import namegen +from evennia.contrib.utils.name_generator import namegen _INVALID_STYLES = { "missing_keys": { @@ -85,8 +85,8 @@ class TestNameGenerator(BaseEvenniaTest): self.assertEqual(type(single_name), str) three_names = namegen.first_name(num=3) - self.assertEqual(type(single_name), list) - self.assertEqual(len(single_name), 3) + self.assertEqual(type(three_names), list) + self.assertEqual(len(three_names), 3) gendered_name = namegen.first_name(gender='f') self.assertEqual(type(gendered_name), str) @@ -101,27 +101,27 @@ class TestNameGenerator(BaseEvenniaTest): with self.assertRaises(ValueError): namegen.first_name(num=-1) - def test_family_name(self): + def test_last_name(self): """ Verify output types and lengths. - family_name() - str - family_name(num=3) - list of length 3 - family_name(return_list=True) - list of length 1 + last_name() - str + last_name(num=3) - list of length 3 + last_name(return_list=True) - list of length 1 """ - single_name = namegen.family_name() + single_name = namegen.last_name() self.assertEqual(type(single_name), str) - three_names = namegen.family_name(num=3) - self.assertEqual(type(single_name), list) - self.assertEqual(len(single_name), 3) + three_names = namegen.last_name(num=3) + self.assertEqual(type(three_names), list) + self.assertEqual(len(three_names), 3) - single_list = namegen.family_name(return_list=True) + single_list = namegen.last_name(return_list=True) self.assertEqual(type(single_list), list) self.assertEqual(len(single_list), 1) with self.assertRaises(ValueError): - namegen.family_name(num=-1) + namegen.last_name(num=-1) def test_full_name(self): """ @@ -136,8 +136,8 @@ class TestNameGenerator(BaseEvenniaTest): self.assertEqual(type(single_name), str) three_names = namegen.full_name(num=3) - self.assertEqual(type(single_name), list) - self.assertEqual(len(single_name), 3) + self.assertEqual(type(three_names), list) + self.assertEqual(len(three_names), 3) gendered_name = namegen.full_name(gender='f') self.assertEqual(type(gendered_name), str) From 2cda5b44d6919e83e2c42fd7d58266b381130aef Mon Sep 17 00:00:00 2001 From: InspectorCaracal <51038201+InspectorCaracal@users.noreply.github.com> Date: Wed, 27 Jul 2022 22:09:34 -0600 Subject: [PATCH 50/58] always return list --- evennia/commands/default/building.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index feac9de984..ccfe33f5b0 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -1927,7 +1927,7 @@ class CmdSetAttribute(ObjManipCommand): if self.rhs is None: # no = means we inspect the attribute(s) if not attrs: - attrs = [attr.key for attr in obj.attributes.get(category=None, return_obj=True)] + attrs = [attr.key for attr in obj.attributes.get(category=None, return_obj=True, return_list=True)] for attr in attrs: if not self.check_attr(obj, attr, category): continue From 78735baadca498a8787022d0e592695b3fb68f73 Mon Sep 17 00:00:00 2001 From: InspectorCaracal <51038201+InspectorCaracal@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:45:46 -0600 Subject: [PATCH 51/58] don't overwrite destination --- evennia/objects/objects.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 7ae296bf2c..ec4be68e2c 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -2846,8 +2846,8 @@ class DefaultExit(DefaultObject): ) ) - # an exit should have a destination (this is replaced at creation time) - if self.location: + # an exit should have a destination - try to make sure it does + if self.location and not self.destination: self.destination = self.location def at_cmdset_get(self, **kwargs): From 32ac772930e9572d870acc343ba68e559e4af3b7 Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Mon, 1 Aug 2022 23:46:00 +0200 Subject: [PATCH 52/58] add missing f-strings prefix --- evennia/accounts/accounts.py | 2 +- evennia/commands/default/help.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/evennia/accounts/accounts.py b/evennia/accounts/accounts.py index 4b566c7238..d8509e5937 100644 --- a/evennia/accounts/accounts.py +++ b/evennia/accounts/accounts.py @@ -298,7 +298,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase): return if not obj.access(self, "puppet"): # no access - self.msg("You don't have permission to puppet '{obj.key}'.") + self.msg(f"You don't have permission to puppet '{obj.key}'.") return if obj.account: # object already puppeted diff --git a/evennia/commands/default/help.py b/evennia/commands/default/help.py index bdbc62d2ad..0f98dc2685 100644 --- a/evennia/commands/default/help.py +++ b/evennia/commands/default/help.py @@ -874,14 +874,14 @@ class CmdSetHelp(CmdHelp): if isinstance(match, HelpCategory): warning = ( f"'{querystr}' matches (or partially matches) the name of " - "help-category '{match.key}'. If you continue, your help entry will " + f"help-category '{match.key}'. If you continue, your help entry will " "take precedence and the category (or part of its name) *may* not " "be usable for grouping help entries anymore." ) elif inherits_from(match, "evennia.commands.command.Command"): warning = ( f"'{querystr}' matches (or partially matches) the key/alias of " - "Command '{match.key}'. Command-help take precedence over other " + f"Command '{match.key}'. Command-help take precedence over other " "help entries so your help *may* be impossible to reach for those " "with access to that command." ) From c737c055747ffd08207574ea78e4baf64dbdd0e1 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 2 Aug 2022 13:19:23 +0200 Subject: [PATCH 53/58] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fef5c9181..632a9c5dc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -172,6 +172,10 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 move being done ('teleport', 'disembark', 'give' etc). (volund) - Made RPSystem contrib msg calls pass `pose` or `say` as msg-`type` for use in e.g. webclient pane filtering where desired. (volund) +- Fixed bug in `cmdset.remove()` where a command could not be deleted by `key`, + even though doc suggested one could (ChrisLR) +- New contrib `name_generator` for building random real-world based or fantasy-names + based on phonetic rules. ## Evennia 0.9.5 From 7a06db9ffb3c6909a52bf6ba6056ebfc84ecd047 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 2 Aug 2022 13:53:08 +0200 Subject: [PATCH 54/58] Fix naked except clauses; update CHANGELOG --- CHANGELOG.md | 1 + evennia/utils/dbserialize.py | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 632a9c5dc4..46b71c5f58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -176,6 +176,7 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 even though doc suggested one could (ChrisLR) - New contrib `name_generator` for building random real-world based or fantasy-names based on phonetic rules. +- Enable proper serialization of dict subclasses in Attributes (aogier) ## Evennia 0.9.5 diff --git a/evennia/utils/dbserialize.py b/evennia/utils/dbserialize.py index 136d182a7b..3d406b3172 100644 --- a/evennia/utils/dbserialize.py +++ b/evennia/utils/dbserialize.py @@ -653,7 +653,7 @@ def to_pickle(data): ) except (AttributeError, TypeError): return {process_item(key): process_item(val) for key, val in item.items()} - except: + except Exception: # we try to conserve the iterable class, if not convert to list try: return item.__class__([process_item(val) for val in item]) @@ -730,7 +730,7 @@ def from_pickle(data, db_obj=None): ) except (AttributeError, TypeError): return {process_item(key): process_item(val) for key, val in item.items()} - except: + except Exception: try: # we try to conserve the iterable class if # it accepts an iterator @@ -811,7 +811,7 @@ def from_pickle(data, db_obj=None): (process_item(key), process_tree(val, dat)) for key, val in item.items() ) return dat - except: + except Exception: try: # we try to conserve the iterable class if it # accepts an iterator @@ -882,7 +882,7 @@ def from_pickle(data, db_obj=None): (process_item(key), process_tree(val, dat)) for key, val in data.items() ) return dat - except: + except Exception: try: # we try to conserve the iterable class if it # accepts an iterator From 155965c4d119764ee13d6911909f5654e36aec47 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 2 Aug 2022 14:30:00 +0200 Subject: [PATCH 55/58] Update CHANGELOG --- CHANGELOG.md | 2 ++ evennia/objects/objects.py | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46b71c5f58..96fa32b3d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -177,6 +177,8 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 - New contrib `name_generator` for building random real-world based or fantasy-names based on phonetic rules. - Enable proper serialization of dict subclasses in Attributes (aogier) +- `object.search` fuzzy-matching now uses `icontains` instead of `istartswith` + to better match how search works elsewhere (volund) ## Evennia 0.9.5 diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 7ae296bf2c..5b012000f3 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -13,7 +13,6 @@ from collections import defaultdict import inflect from django.conf import settings from django.utils.translation import gettext as _ - from evennia.commands import cmdset from evennia.commands.cmdsethandler import CmdSetHandler from evennia.objects.manager import ObjectManager @@ -1555,7 +1554,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - location.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) + location.msg_contents( + (string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping + ) def announce_move_to(self, source_location, msg=None, mapping=None, move_type="move", **kwargs): """ @@ -1623,7 +1624,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - destination.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) + destination.msg_contents( + (string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping + ) def at_post_move(self, source_location, move_type="move", **kwargs): """ From 69cf0a2be301104131a37eaf24431a1c4817dfe6 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 2 Aug 2022 14:32:47 +0200 Subject: [PATCH 56/58] Change to use `exit_obj` in `at_traverse` hook kwargs instead --- CHANGELOG.md | 2 ++ evennia/objects/objects.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46b71c5f58..10780a0a22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -177,6 +177,8 @@ Up requirements to Django 4.0+, Twisted 22+, Python 3.9 or 3.10 - New contrib `name_generator` for building random real-world based or fantasy-names based on phonetic rules. - Enable proper serialization of dict subclasses in Attributes (aogier) +- The `.at_traverse` hook now receives a `exit_obj` kwarg, linking back to the + exit triggering the hook (volund) ## Evennia 0.9.5 diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index aac2204541..0bebac8487 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -13,7 +13,6 @@ from collections import defaultdict import inflect from django.conf import settings from django.utils.translation import gettext as _ - from evennia.commands import cmdset from evennia.commands.cmdsethandler import CmdSetHandler from evennia.objects.manager import ObjectManager @@ -866,7 +865,7 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): Keyword Args: Passed on to announce_move_to and announce_move_from hooks. - Exits will set the "exit" kwarg to themselves. + Exits will set the "exit_obj" kwarg to themselves. Returns: result (bool): True/False depending on if there were problems with the move. @@ -1556,7 +1555,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - location.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) + location.msg_contents( + (string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping + ) def announce_move_to(self, source_location, msg=None, mapping=None, move_type="move", **kwargs): """ @@ -1624,7 +1625,9 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase): } ) - destination.msg_contents((string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping) + destination.msg_contents( + (string, {"type": move_type}), exclude=(self,), from_obj=self, mapping=mapping + ) def at_post_move(self, source_location, move_type="move", **kwargs): """ @@ -2890,7 +2893,7 @@ class DefaultExit(DefaultObject): """ source_location = traversing_object.location - if traversing_object.move_to(target_location, move_type="traverse", exit=self): + if traversing_object.move_to(target_location, move_type="traverse", exit_obj=self): self.at_post_traverse(traversing_object, source_location) else: if self.db.err_traverse: From 9fb5af5c8956360c130e2b90b8d53bb8f7257309 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 2 Aug 2022 16:06:40 +0200 Subject: [PATCH 57/58] Fix syscommand regression (see #2755) --- evennia/commands/cmdset.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/evennia/commands/cmdset.py b/evennia/commands/cmdset.py index 9d8877a679..8607a4a372 100644 --- a/evennia/commands/cmdset.py +++ b/evennia/commands/cmdset.py @@ -27,6 +27,7 @@ Set theory. """ from weakref import WeakKeyDictionary + from django.utils.translation import gettext as _ from evennia.utils.utils import inherits_from, is_iter @@ -571,9 +572,13 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) - if cmd is None: - return None + _cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) + if _cmd is None: + if not cmd.startswith("__"): + # if a syscommand, keep the original string and instantiate on it + return None + else: + cmd = _cmd cmd = self._instantiate(cmd) if cmd.key.startswith("__"): @@ -599,9 +604,13 @@ class CmdSet(object, metaclass=_CmdSetMeta): """ if isinstance(cmd, str): - cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) - if cmd is None: - return None + _cmd = next((_cmd for _cmd in self.commands if _cmd.key == cmd), None) + if _cmd is None: + if not cmd.startswith("__"): + # if a syscommand, keep the original string and instantiate on it + return None + else: + cmd = _cmd cmd = self._instantiate(cmd) for thiscmd in self.commands: From 07ebb4a60b7cf8c5ae7b2d0311f196ad67485699 Mon Sep 17 00:00:00 2001 From: Alessandro Ogier Date: Wed, 27 Jul 2022 19:01:32 +0200 Subject: [PATCH 58/58] case sensitive set dict keys --- evennia/commands/default/building.py | 25 ++++++++++++++++++++- evennia/commands/default/tests.py | 33 ++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index ccfe33f5b0..cc2e5d24bf 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -35,6 +35,8 @@ COMMAND_DEFAULT_CLASS = class_from_module(settings.COMMAND_DEFAULT_CLASS) _FUNCPARSER = None _ATTRFUNCPARSER = None +_KEY_REGEX = re.compile(r"(?P.*?)(?P(\[.*\]\ *)+)?$") + # limit symbol import for API __all__ = ( "ObjManipCommand", @@ -126,7 +128,28 @@ class ObjManipCommand(COMMAND_DEFAULT_CLASS): aliases = [alias.strip() for alias in aliases.split(";") if alias.strip()] if "/" in objdef: objdef, attrs = [part.strip() for part in objdef.split("/", 1)] - attrs = [part.strip().lower() for part in attrs.split("/") if part.strip()] + _attrs = [] + + # Should an attribute key is specified, ie. we're working + # on a dict, what we want is to lowercase attribute name + # as usual but to preserve dict key case as one would + # expect: + # + # set box/MyAttr = {'FooBar': 1} + # Created attribute box/myattr [category:None] = {'FooBar': 1} + # set box/MyAttr['FooBar'] = 2 + # Modified attribute box/myattr [category:None] = {'FooBar': 2} + for match in ( + match + for part in map(str.strip, attrs.split("/")) + if part and (match := _KEY_REGEX.match(part.strip())) + ): + attr = match.group("attr").lower() + # reappend untouched key, if present + if match.group("key"): + attr += match.group("key") + _attrs.append(attr) + attrs = _attrs # store data obj_defs[iside].append({"name": objdef, "option": option, "aliases": aliases}) obj_attrs[iside].append({"name": objdef, "attrs": attrs}) diff --git a/evennia/commands/default/tests.py b/evennia/commands/default/tests.py index 32f4a882f5..3d677e978e 100644 --- a/evennia/commands/default/tests.py +++ b/evennia/commands/default/tests.py @@ -957,6 +957,39 @@ class TestBuilding(BaseEvenniaCommandTest): "{'one': 99, 'three': 3, '+': 42, '+1': 33}", ) + # dict - case sensitive keys + + self.call( + building.CmdSetAttribute(), + "Obj/test_case = {'FooBar': 1}", + "Created attribute Obj/test_case [category:None] = {'FooBar': 1}", + ) + self.call( + building.CmdSetAttribute(), + "Obj/test_case['FooBar'] = 2", + "Modified attribute Obj/test_case [category:None] = {'FooBar': 2}", + ) + self.call( + building.CmdSetAttribute(), + "Obj/test_case", + "Attribute Obj/test_case [category:None] = {'FooBar': 2}", + ) + self.call( + building.CmdSetAttribute(), + "Obj/test_case['FooBar'] = {'BarBaz': 1}", + "Modified attribute Obj/test_case [category:None] = {'FooBar': {'BarBaz': 1}}", + ) + self.call( + building.CmdSetAttribute(), + "Obj/test_case['FooBar']['BarBaz'] = 2", + "Modified attribute Obj/test_case [category:None] = {'FooBar': {'BarBaz': 2}}", + ) + self.call( + building.CmdSetAttribute(), + "Obj/test_case", + "Attribute Obj/test_case [category:None] = {'FooBar': {'BarBaz': 2}}", + ) + # tuple self.call( building.CmdSetAttribute(),