From f8ad97c4289a6800f990cdfbe876028dcab55628 Mon Sep 17 00:00:00 2001 From: Karl F Date: Sun, 30 May 2021 21:59:56 +0200 Subject: [PATCH] First attempt to hook "culture names" into NameGen --- data/culture/common.lua | 57 ++++++ data/culture/culture.lua | 139 +++++++++++++ data/culture/da.lua | 17 +- data/culture/de.lua | 17 +- data/culture/el.lua | 26 ++- data/culture/es.lua | 17 +- data/culture/fi.lua | 19 +- data/culture/fr.lua | 17 +- data/culture/gd.lua | 20 +- data/culture/hu.lua | 17 +- data/culture/is.lua | 67 ++++++- data/culture/it.lua | 15 +- data/culture/ja.lua | 17 +- data/culture/nb.lua | 16 +- data/culture/nl.lua | 342 ++++++++++++++++++++++---------- data/culture/pl.lua | 419 ++++++++++++++++++++------------------- data/culture/ru.lua | 26 ++- data/culture/sv.lua | 15 +- data/culture/tr.lua | 15 +- data/culture/zh.lua | 17 +- data/libs/NameGen.lua | 172 +--------------- 21 files changed, 928 insertions(+), 539 deletions(-) create mode 100644 data/culture/common.lua create mode 100644 data/culture/culture.lua diff --git a/data/culture/common.lua b/data/culture/common.lua new file mode 100644 index 00000000000..a44e050dd82 --- /dev/null +++ b/data/culture/common.lua @@ -0,0 +1,57 @@ +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details +-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt + +local utils = require 'utils' + +local CultureName = { + male = {}, -- List of 100 most common male first names + female = {}, -- List of 100 most common female first names + surname = {}, -- List of 100 most common last names + name = "Name", -- Name of language / culture + code = "xx", -- ISO ISO 639-1 language code +} + +-- local ascii_replacement = {} +--- xxx todo / fix +ascii_replacement = {} +ascii_replacement["ä"] = "ae" +ascii_replacement["è"] = "e" +ascii_replacement["à"] = "a" +ascii_replacement["ò"] = "o" +ascii_replacement["ò"] = "o" +ascii_replacement["à"] = "a" +ascii_replacement["ù"] = "u" +ascii_replacement["è"] = "e" +ascii_replacement["ì"] = "i" +ascii_replacement["ì"] = "i" +ascii_replacement["ù"] = "u" +ascii_replacement["ü"] = "u" +ascii_replacement["å"] = "aa" +ascii_replacement["ä"] = "ae" +ascii_replacement["ö"] = "o" +ascii_replacement["ø"] = "o" +ascii_replacement["æ"] = "ae" + + +function CultureName:New (o) + o = o or {} + setmetatable(o, self) + self.__index = self + return o +end + +function CultureName:FirstName (isFemale, rand) + local array = isFemale and self.female or self.male + return utils.chooseEqual(array, rand) +end + +-- Some cultures have gender specific surnames +function CultureName:Surname (isFemale, rand) + return utils.chooseEqual(self.surname, rand) +end + +function CultureName:FullName (isFemale, rand) + return self:FirstName(isFemale, rand) .. " " .. self:Surname(isFemale, rand) +end + +return CultureName diff --git a/data/culture/culture.lua b/data/culture/culture.lua new file mode 100644 index 00000000000..ed171015d7b --- /dev/null +++ b/data/culture/culture.lua @@ -0,0 +1,139 @@ +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details +-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt + +-- give name, first and last name functions + +local utils = require 'utils' + +local de = require './de' -- german +local da = require './da' -- danish +local es = require './es' -- spanish +local en = require './en' -- english +local fi = require './fi' -- finish +local fr = require './fr' -- french +local gd = require './gd' -- gaelic +local el = require './el' -- greek +local hu = require './hu' -- hungarian +local is = require './is' -- islandic +local it = require './it' -- italian +local ja = require './ja' -- japanese +local nl = require './nl' -- netherlands +local nb = require './nb' -- norwegian bokmål +local pl = require './pl' -- polish +local ro = require './ro' -- romanian +local ru = require './ru' -- russian +local sv = require './sv' -- swedish +-- local us = require './us' -- USA +local tr = require './tr' -- turkish +local zh = require './zh' -- chinese/mandarin +-- local misc = require './misc' -- mixed / developer's names + +-- +-- Class: Culture +-- + +local Culture = {} + +Culture.weights = { + {lang = da, weight = 1.0}, + {lang = de, weight = 3.0}, + {lang = el, weight = 1.0}, + {lang = en, weight = 6.0}, + {lang = es, weight = 3.0}, + {lang = fi, weight = 1.0}, + {lang = fr, weight = 3.0}, + {lang = gd, weight = 0.5}, + {lang = hu, weight = 1.0}, + {lang = is, weight = 0.5}, + {lang = it, weight = 3.0}, + {lang = ja, weight = 3.0}, + {lang = nb, weight = 1.0}, + {lang = nl, weight = 2.0}, + {lang = pl, weight = 1.0}, + {lang = ru, weight = 3.0}, + {lang = sv, weight = 1.0}, + {lang = tr, weight = 1.0}, + -- {lang = us, weight = 5.0}, + {lang = zh, weight = 3.0}, + -- {lang = misc, weight = 1.0}, +} + +-- Normalize weights to sum to 1 +utils.normWeights(Culture.weights) + +-- Map language string to module table +Culture.lookup = {} +print("Random generated names from:") +for k, v in pairs(Culture.weights) do + Culture.lookup[v.lang.name] = v.lang + print("* ", k, v.lang.code, v.lang.name, v.lang, v.weight) +end + +-- +-- Function: FirstName +-- +-- Create first name, from specified culture, or default to weighted +-- probability from pre-set list of available cultures. See parameter +-- and return documentation from Culture:FullName() +-- +-- > name = Culture:FirstName(isfemale, rand, culture) +-- +function Culture:FirstName (isFemale, rand, culture) + local c = self.lookup[culture] or utils.chooseNormalized(self.weights, rand).lang + return c:FirstName(isFemale) +end + +-- +-- Function: Surname +-- +-- Create surname, from specified culture, or default to weighted +-- probability from pre-set list of available cultures. See parameter +-- and return documentation from Culture:FullName(). +-- +-- > name = Culture:Surname(isfemale, rand, culture) +-- +function Culture:Surname (isFemale, rand, culture) + local c = self.lookup[culture] or utils.chooseNormalized(self.weights, rand).lang + return c:Surname(isFemale, rand) +end + + +-- +-- Function: FullName +-- +-- Create a full name, where first and last match the same +-- language/culture. If no culture is specified, one is randomly +-- selected according to pre-set weights. Valid input is one of the +-- following (capitalized) strings: +-- +-- Danish German Greek English Spanish Finish French Gaelic Hungarian +-- Icelandic Italian Japanese Norwegian Dutch Polish Russian Swedish +-- Turkish Chinese +-- +-- > name = Culture:FullName(isfemale, rand, culture) +-- +-- Parameters: +-- +-- isfemale - whether to generate a male or female name. true for female, +-- false for male +-- +-- rand - the object to use to generate the name +-- +-- culture - optional string +-- +-- Return: +-- +-- name - a string containing matching first and last name +-- +-- Return full name from the same culture/language +function Culture:FullName (isFemale, rand, culture) + -- if 'culture' given as a string, e.g. "Russian" use that + local c = self.lookup[culture] or utils.chooseNormalized(self.weights, rand).lang + + local debug_code = "(".. c.code .. ") " + return debug_code .. c:FullName(isFemale, rand) + -- return c:FullName(isFemale) +end + + +return Culture diff --git a/data/culture/da.lua b/data/culture/da.lua index 29f95911cb9..d3feb7a103c 100644 --- a/data/culture/da.lua +++ b/data/culture/da.lua @@ -3,7 +3,14 @@ -- https://www.dst.dk/da/Statistik/emner/befolkning-og-valg/navne/navne-i-hele-befolkningen -local male = { +local CultureName = require './common' + +local Danish = CultureName:New() + +Danish.name = "Danish" +Danish.code = "da" + +Danish.male = { "Peter", "Michael", "Jens", @@ -26,7 +33,7 @@ local male = { "Ole" } -local female = { +Danish.female = { "Anne", "Kirsten", "Mette", @@ -49,7 +56,7 @@ local female = { "Karen" } -local surnames = { +Danish.surname = { "Nielsen", "Jensen", "Hansen", @@ -69,5 +76,7 @@ local surnames = { "Poulsen", "Johansen", "Møller", - "Mortensen", + "Mortensen" } + +return Danish diff --git a/data/culture/de.lua b/data/culture/de.lua index d9897d047e1..71bf7dbbcb9 100644 --- a/data/culture/de.lua +++ b/data/culture/de.lua @@ -1,7 +1,14 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male={ +local CultureName = require './common' + +local German = CultureName:New() + +German.name = "German" +German.code = "de" + +German.male = { 'Adrian', 'Albert', 'Alexander', @@ -211,7 +218,7 @@ local male={ 'Zacharias' } -local female={ +German.female = { 'Agnes', 'Alessa', 'Alexa', @@ -434,7 +441,7 @@ local female={ 'Yvonne' } -local surname={ +German.surname = { 'Albrecht', 'Althaus', 'Altmann', @@ -581,3 +588,5 @@ local surname={ 'Ziegler', 'Zimmermann' } + +return German diff --git a/data/culture/el.lua b/data/culture/el.lua index 01089fd6416..e9262e443ad 100644 --- a/data/culture/el.lua +++ b/data/culture/el.lua @@ -1,7 +1,16 @@ -- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male = { +local utils = require 'utils' +local CultureName = require './common' + +local Greek = CultureName:New() + +Greek.name = "Greek" +Greek.code = "el" +Greek.surname = nil -- not using this for Greek + +Greek.male = { "Achaeus", "Adeimantus", "Agapetus", @@ -115,7 +124,7 @@ local male = { "Zenobios"} -local female = { +Greek.female = { "Agariste", "Agatha", "Agne", @@ -228,7 +237,7 @@ local female = { } -local female_surnames = { +Greek.female_surname = { "Afroudaki", "Agathangelou", "Aggeloniti", @@ -458,7 +467,7 @@ local female_surnames = { "Zografaki", } -local male_surname = { +Greek.male_surname = { "Achilleos", "Afroudakis", "Aggelonitis", @@ -818,3 +827,12 @@ local male_surname = { "Zografakis", "Zografos" } + +-- Greek surnames are gender specific +function Greek:Surname (isFemale, rand) + -- print("OVERLOADED", self.name) xxx + local array = isFemale and self.female_surname or self.male_surname + return utils.chooseEqual(array, rand) +end + +return Greek diff --git a/data/culture/es.lua b/data/culture/es.lua index 6d0de2a4283..7286a760ec8 100644 --- a/data/culture/es.lua +++ b/data/culture/es.lua @@ -1,9 +1,16 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- source http://www.studentsoftheworld.info/penpals/stats.php3?Pays=ESP -local male={ +local CultureName = require './common' + +local Spanish = CultureName:New() + +Spanish.name = "Spanish" +Spanish.code = "es" + +Spanish.male={ "Adrian", "Aitor", "Albert", @@ -106,7 +113,7 @@ local male={ "Óscar" } -local female={ +Spanish.female={ "Aida", "Aina", "Ainhoa", @@ -208,7 +215,7 @@ local female={ "Yaiza" } -local surname={ +Spanish.surname={ "Aguilar", "Alonso", "Alvarez", @@ -310,3 +317,5 @@ local surname={ "Vidal", "Vila" } + +return Spanish diff --git a/data/culture/fi.lua b/data/culture/fi.lua index 8dd7c79a278..0cab0a1b4f1 100644 --- a/data/culture/fi.lua +++ b/data/culture/fi.lua @@ -1,10 +1,17 @@ --- Copyright © 2008-2017 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- source: http://vrk.fi/sv/namntjanst, specifically: -- http://verkkopalvelu.vrk.fi/Nimipalvelu/default.asp?L=2 -local male={ +local CultureName = require './common' + +local Finish = CultureName:New() + +Finish.name = "Finish" +Finish.code = "fi" + +Finish.male = { "Juhani", "Olavi", "Antero", @@ -208,7 +215,7 @@ local male={ "Aarre" } -local female={ +Finish.female = { "Maria", "Helena", "Anneli", @@ -409,10 +416,10 @@ local female={ "Tuuli", "Juulia", "Iina", - "Marie", + "Marie" } -local surname={ +Finish.surname = { "Korhonen", "Virtanen", "Mäkinen", @@ -615,3 +622,5 @@ local surname={ "Huotari", "Riikonen" } + +return Finish diff --git a/data/culture/fr.lua b/data/culture/fr.lua index 0f78e77fd0b..9230809efe2 100644 --- a/data/culture/fr.lua +++ b/data/culture/fr.lua @@ -1,7 +1,14 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male={ +local CultureName = require './common' + +local French = CultureName:New() + +French.name = "French" +French.code = "fr" + +French.male = { 'Adrien', 'André', 'Anselme', @@ -125,7 +132,7 @@ local male={ 'Èmerick', } -local female={ +French.female = { 'Adéle', 'Agathe', 'Aimée', @@ -245,7 +252,7 @@ local female={ 'Èmilie', } -local surname={ +French.surname = { 'Adam', 'Andre', 'Arnaud', @@ -365,3 +372,5 @@ local surname={ 'Vidal', 'Vincent', } + +return French diff --git a/data/culture/gd.lua b/data/culture/gd.lua index d778f48e01d..4fc01e9a36c 100644 --- a/data/culture/gd.lua +++ b/data/culture/gd.lua @@ -1,9 +1,18 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- source: http://pioneerspacesim.net/forum/viewtopic.php?f=3&t=466 -local male={ +local CultureName = require './common' + +local Gaelic = CultureName:New() + +Gaelic.name = "Gaelic" +Gaelic.code = "gd" + +-- {'È', 'À', 'ò', 'Ò', 'à', 'Ù', 'è', 'ì', 'Ì', 'ù'} + +Gaelic.male = { 'Aaron', 'Adaidh', 'Àdhamh', @@ -289,7 +298,7 @@ local male={ 'Ùspaig' } -local female={ +Gaelic.female = { 'Aigneas', 'Ailean', 'Aileas', @@ -405,8 +414,7 @@ local female={ 'Ùna' } --- male surnames -local surname={ +Gaelic.surname = { 'à Monadh Teith', 'Abarach', 'Achadh Leac', @@ -757,3 +765,5 @@ local surname={ 'Sutharlanach', 'Urchardain' } + +return Gaelic diff --git a/data/culture/hu.lua b/data/culture/hu.lua index 5d7758d5803..d85a1be3c69 100644 --- a/data/culture/hu.lua +++ b/data/culture/hu.lua @@ -1,7 +1,14 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male={ +local CultureName = require './common' + +local Hungarian = CultureName:New() + +Hungarian.name = "Hungarian" +Hungarian.code = "hu" + +Hungarian.male={ 'Ábel', 'Ádám', 'Adrián', @@ -91,7 +98,7 @@ local male={ 'Zsombor' } -local female={ +Hungarian.female={ 'Adrienn', 'Andrea', 'Anett', @@ -180,7 +187,7 @@ local female={ 'Éva' } -local surname={ +Hungarian.surname={ 'Antal', 'Bakos', 'Balassa', @@ -292,3 +299,5 @@ local surname={ 'Váradi', 'Vörös' } + +return Hungarian diff --git a/data/culture/is.lua b/data/culture/is.lua index 5dd5547d089..48326139aaa 100644 --- a/data/culture/is.lua +++ b/data/culture/is.lua @@ -1,15 +1,72 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- Data source -- https://forebears.io/iceland/forenames -- https://forebears.io/iceland/surnames +-- https://www.nordicnames.de/wiki/List_of_approved_Icelandic_male_names +-- https://www.nordicnames.de/wiki/Category:Icelandic_Female_Names -local male = {} +-- used: +-- https://adventures.is/blog/icelandic-names/ -local female = {} -local surname = { +local CultureName = require './common' + +local Islandic = CultureName:New() + +Islandic.name = "Icelandic" +Islandic.code = "is" + +-- {'é', 'Þ', 'ó', 'ö', 'Ó', 'í', 'ð', 'ú', 'á', 'Á'} + +Islandic.male = { + "Jón", + "Sigurður", + "Guðmundur", + "Gunnar", + "Ólafur", + "Einar", + "Kristján", + "Magnús", + "Stefán", + "Jóhann", + "Björn", + "Arnar", + "Árni", + "Bjarni", + "Helgi", + "Halldór", + "Pétur", + "Daníel", + "Kristinn", + "Ragnar", +} + +Islandic.female = { + "Guðrún", + "Anna", + "Kristín", + "Sigríður", + "Margrét", + "Helga", + "Sigrún", + "Ingibjörg", + "María", + "Jóhanna", + "Elín", + "Katrín", + "Hildur", + "Eva", + "Lilja", + "Ragnheiður", + "Ásta", + "Guðbjörg", + "Elísabet", + "Erla", +} + +Islandic.surname = { "Jónsdóttir", "Jónsson", "Sigurðardóttir", @@ -111,3 +168,5 @@ local surname = { "Aðalsteinsdóttir", "Þórisdóttir" } + +return Islandic diff --git a/data/culture/it.lua b/data/culture/it.lua index 8a612ecd3bc..37af220e54a 100644 --- a/data/culture/it.lua +++ b/data/culture/it.lua @@ -3,7 +3,14 @@ -- Source: From pioneer music contributor franzopow[m] on IRC. -local male={ +local CultureName = require './common' + +local Italian = CultureName:New() + +Italian.name = "Italian" +Italian.code = "it" + +Italian.male={ 'Alberto', 'Alessandro', 'Alessio', @@ -111,7 +118,7 @@ local male={ 'Vittorio', } -local female={ +Italian.female={ 'Agnella', 'Agnese', 'Alba', @@ -215,7 +222,7 @@ local female={ 'Veronica' } -local surname={ +Italian.surname={ 'Abbate', 'Agnelli', 'Albano', @@ -326,3 +333,5 @@ local surname={ 'Visconti', 'Zingaretti', } + +return Italian diff --git a/data/culture/ja.lua b/data/culture/ja.lua index 6c5c36841e9..95799455d6c 100644 --- a/data/culture/ja.lua +++ b/data/culture/ja.lua @@ -1,11 +1,18 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- Source surnames: http://www.japantimes.co.jp/life/2009/10/11/lifestyle/japans-top-100-most-common-family-names/ -- Source (fe)male: http://www.studentsoftheworld.info/penpals/stats.php3?Pays=JAP -- Note: female and male names Looks suspiciously much like being mixed. -local male={ +local CultureName = require './common' + +local Japanese = CultureName:New() + +Japanese.name = "Japanese" +Japanese.code = "ja" + +Japanese.male = { 'Aki', 'Akira', 'Alex', @@ -108,7 +115,7 @@ local male={ 'Yuuki' } -local female={ +Japanese.female = { 'Ai', 'Aika', 'Airi', @@ -211,7 +218,7 @@ local female={ 'Yuri' } -local surname={ +Japanese.surname = { 'Abe', 'Ando', 'Aoki', @@ -313,3 +320,5 @@ local surname={ 'Yokoyama', 'Yoshida' } + +return Japanese diff --git a/data/culture/nb.lua b/data/culture/nb.lua index 5f5bf0998b7..b19118ff09a 100644 --- a/data/culture/nb.lua +++ b/data/culture/nb.lua @@ -1,4 +1,4 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- Sources: @@ -8,8 +8,14 @@ -- https://www.ssb.no/a/navn/historisk-utvikling-av-guttenavn/ -- https://www.ssb.no/a/navn/historisk-utvikling-av-jentenavn/ +local CultureName = require './common' -local male={ +local Norwegian = CultureName:New() + +Norwegian.name = "Norwegian" +Norwegian.code = "nb" + +Norwegian.male = { 'Adrian', 'Aksel', 'Alexander', @@ -83,7 +89,7 @@ local male={ 'Øyvind', } -local female={ +Norwegian.female = { 'Anette', 'Anita', 'Ann', @@ -172,7 +178,7 @@ local female={ 'Åse', } -local surname={ +Norwegian.surname = { 'Aamodt', 'Aas', 'Aase', @@ -374,3 +380,5 @@ local surname={ 'Øien', 'Østby', } + +return Norwegian diff --git a/data/culture/nl.lua b/data/culture/nl.lua index 08df97326f4..f1a18f2fc32 100644 --- a/data/culture/nl.lua +++ b/data/culture/nl.lua @@ -1,119 +1,243 @@ --- Copyright © 2008-2020 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt --- Data soruces: --- used: https://en.wikipedia.org/wiki/List_of_Dutch_family_names --- interesting: http://www.meertens.knaw.nl/nfb/index.php?taal=eng +-- Data soruces used (took intersection of first two links with all the rest): +-- http://www.top-names.info/names.php?S=M&P=NED +-- http://www.top-names.info/names.php?S=F&P=NED +-- https://en.wikipedia.org/wiki/List_of_Dutch_family_names -- http://www.studentsoftheworld.info/penpals/stats.php?Pays=NED +-- https://www.babynamewizard.com/name-list/dutch-girls-names-most-popular-names-for-girls-in-the-netherlands +-- https://www.momjunction.com/articles/dutch-baby-names-for-boys-and-girls_00397951/ +-- https://suggesname.com/dutch-boy-names/ --- Data soruces used: --- https://forebears.io/netherlands/forenames +-- interesting: -- https://forebears.io/netherlands/forenames +-- http://www.meertens.knaw.nl/nfb/index.php?taal=eng +-- https://en.wikipedia.org/wiki/Category:Dutch_masculine_given_names + +local CultureName = require './common' + +local Dutch = CultureName:New() -local male = {} +Dutch.name = "Dutch" +Dutch.code = "nl" -local female = {} +Dutch.male = { + "Jesse", + "Julian", + "Dirk", + "Berend", + "Dennis", + "Hans", + "Willem", + "Jan", + "Max", + "Sem", + "Daan", + "Stefan", + "Rick", + "Timo", + "Bart", + "Bram", + "Jeroen", + "Nick", + "Vincent", + "Gerrit", + "Abel", + "Peter", + "Cas", + "Sven", + "Luuk", + "David", + "Lars", + "Remco", + "Tim", + "Thomas", + "Sam", + "Liam", + "Patrick", + "Johan", + "Stijn", + "Kees", + "Jasper", + "Jordy", + "Robert", + "Noah", + "Floris", + "Niels", + "Milan", + "Ruben", + "Levi", + "Alexander", + "Bas", + "Lucas", + "Coen", + "Erik", + "Henk", +} +Dutch.female = { + "Sophie", + "Jade", + "Nikki", + "Lois", + "Emily", + "Fenna", + "Femke", + "Ilse", + "Amber", + "Eva", + "Lotte", + "Lauren", + "Merel", + "Evi", + "Lynn", + "Sara", + "Rosalie", + "Amy", + "Lina", + "Lena", + "Roos", + "Marit", + "Jasmijn", + "Tess", + "Maud", + "Sarah", + "Lisa", + "Julia", + "Anne", + "Sanne", + "Sofie", + "Noor", + "Bente", + "Veerle", + "Anna", + "Senna", + "Iris", + "Sophia", + "Lola", + "Linde", + "Emma", + "Eline", + "Isa", + "Elise", + "Sofia", + "Esmee", + "Charlotte", + "Hannah", + "Mila", + "Lara", + "Tessa", + "Naomi", + "Noa", + "Doortje", + "Ella", + "Gwen", + "Nina", + "Nova", +} -local surname={ - "de Jong", - "Jansen", - "de Vries", - "Bakker", - "Janssen", - "van Dijk", - "Visser", - "Smit", - "de Boer", - "de Groot", - "Mulder", - "Meijer", - "Bos", - "Vos", - "Peters", - "van der Berg", - "Hendriks", - "Dekker", - "van Leeuwen", - "Brouwer", - "van den Berg", - "Dijkstra", - "de Wit", - "Smits", - "Kok", - "Vermeulen", - "de Graaf", - "van der Meer", - "Jacobs", - "de Haan", - "van der Linden", - "Schouten", - "van der Veen", - "de Bruin", - "van Vliet", - "Willems", - "Hoekstra", - "van Beek", - "Koster", - "Maas", - "van Dam", - "Prins", - "Verhoeven", - "Huisman", - "Blom", - "Peeters", - "Kuipers", - "de Bruijn", - "van der Heijden", - "de Jonge", - "Kramer", - "Post", - "van der Wal", - "Kuiper", - "van Veen", - "Boer", - "Groot", - "Scholten", - "Klein", - "van Wijk", - "Martens", - "Veenstra", - "Groen", - "Vink", - "Postma", - "Bosch", - "de Ruiter", - "Koning", - "Smeets", - "de Lange", - "Timmermans", - "Jonker", - "de Vos", - "de Koning", - "Hermans", - "Gerritsen", - "Schipper", - "Van Loon", - "Willemsen", - "Evers", - "Driessen", - "Sanders", - "Molenaar", - "van Dongen", - "Mol", - "Bosman", - "van Doorn", - "van der Laan", - "Verbeek", - "de Leeuw", - "van der Velden", - "van der Meulen", - "van der Horst", - "Roos", - "van der Heuvel", - "Stam", - "Hofman", - "Muller", - "Kroon", - "Wolters", +Dutch.surname = { + "de Jong", + "Jansen", + "de Vries", + "Bakker", + "Janssen", + "van Dijk", + "Visser", + "Smit", + "de Boer", + "de Groot", + "Mulder", + "Meijer", + "Bos", + "Vos", + "Peters", + "van der Berg", + "Hendriks", + "Dekker", + "van Leeuwen", + "Brouwer", + "van den Berg", + "Dijkstra", + "de Wit", + "Smits", + "Kok", + "Vermeulen", + "de Graaf", + "van der Meer", + "Jacobs", + "de Haan", + "van der Linden", + "Schouten", + "van der Veen", + "de Bruin", + "van Vliet", + "Willems", + "Hoekstra", + "van Beek", + "Koster", + "Maas", + "van Dam", + "Prins", + "Verhoeven", + "Huisman", + "Blom", + "Peeters", + "Kuipers", + "de Bruijn", + "van der Heijden", + "de Jonge", + "Kramer", + "Post", + "van der Wal", + "Kuiper", + "van Veen", + "Boer", + "Groot", + "Scholten", + "Klein", + "van Wijk", + "Martens", + "Veenstra", + "Groen", + "Vink", + "Postma", + "Bosch", + "de Ruiter", + "Koning", + "Smeets", + "de Lange", + "Timmermans", + "Jonker", + "de Vos", + "de Koning", + "Hermans", + "Gerritsen", + "Schipper", + "Van Loon", + "Willemsen", + "Evers", + "Driessen", + "Sanders", + "Molenaar", + "van Dongen", + "Mol", + "Bosman", + "van Doorn", + "van der Laan", + "Verbeek", + "de Leeuw", + "van der Velden", + "van der Meulen", + "van der Horst", + "Roos", + "van der Heuvel", + "Stam", + "Hofman", + "Muller", + "Kroon", + "Wolters", } + +return Dutch diff --git a/data/culture/pl.lua b/data/culture/pl.lua index d406df3476e..b9fbbb0111b 100644 --- a/data/culture/pl.lua +++ b/data/culture/pl.lua @@ -1,4 +1,4 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- Data source @@ -7,213 +7,220 @@ -- http://www.studentsoftheworld.info/penpals/stats.php?Pays=POL - local male = { - "Bartek", - "Kacper", - "Adam", - "Mateusz", - "Szymon", - "Kamil", - "Dawid", - "Tomek", - "Przemek", - "Antek", - "Wojtek", - "Patryk", - "Jakub", - "Maciej", - "Kuba", - "Jan", - "Marcin", - "Sebastian", - "Piotr", - "Adrian", - "dominik", - "Bartosz", - "Max", - "Paweł", - "Marcel", - "Marek", - "Igor", - "Pawel", - "Maciek", - "Peter", - "Hubert", - "Wojciech", - "Michael", - "Karol", - "Oskar", - "Michał", - "Łukasz", - "Chris", - "Pawel", - "Krzysztof", - "Milosz", - "Darek", - "Damian", - "Stuart", - "Michal", - "Konrad", - "Filip", - "Krystian", - "Tymon", - "Andrzej", - "Matthew", - "Milosz", - "Krzy", - "Michal", - "Wiktor", - "Mark", - "robert", - "Tom", - "Olaf", - "Jerry", - "Gustaw", - "Pavel", - "Simon", - "Paul", - "Mikołaj", - "Stasiek", - "Mariusz", - "£ukasz", - "Eryk", - "Daniel", - "Jacek", - "Artur", - "Ignacy", - "david", - "Tomasz", - "Micha", - "Casper", - "Maksymilian", - "Kuba(Jacob)", - "zxz", - "maslo", - "Patrick", - "Bartłomiej", - "Matt", - "Stanislaw", - "Julia", - "edek", - "bolek", - "Maurycy", - "Tacettin", - "Przemyslaw", - "nikolaus", - "Alan", - "arun", - "Mikolaj", - "Ismail", - "danny", - "Mary", - "Kuba", - "Basia", - } +local CultureName = require './common' - local female = { - "Julia", - "Wiktoria", - "Natalia", - "Karolina", - "Dominika", - "Kasia", - "Aleksandra", - "weronika", - "Paulina", - "Ola", - "Oliwia", - "Anna", - "Magdalena", - "Agnieszka", - "Klaudia", - "Magda", - "Martyna", - "Maria", - "Maja", - "Alicja", - "Agata", - "Marta", - "Kinga", - "Ania", - "Monika", - "Amelia", - "Joanna", - "Gosia", - "Zuzia", - "Emilia", - "Ewa", - "Patrycja", - "Michalina", - "Ada", - "Milena", - "Olga", - "Victoria", - "Basia", - "Marysia", - "Gabriela", - "Zuzanna", - "Hania", - "Zuza", - "Kate", - "Sandra", - "Izabela", - "Dorota", - "Justyna", - "Nina", - "Paula", - "Kamila", - "Julka", - "Ula", - "Lena", - "Aga", - "Olivia", - "Mary", - "Jagoda", - "Nikola", - "Hanna", - "Nadia", - "Zosia", - "Amelka", - "Sylwia", - "Sabina", - "Katarzyna", - "Iza", - "lila", - "Claudia", - "Eliza", - "Sonia", - "Iwona", - "Natalie", - "Laura", - "Emily", - "Angela", - "Aneta", - "Alexandra", - "Ewelina", - "Roksana", - "beata", - "Ilona", - "Daria", - "Kaja", - "Sara", - "Wera", - "Jadzia", - "Urszula", - "Estera", - "Martna", - "Zofia", - "Pola", - "Natalka", - "Karen", - "Jessika", - "Anastasia", - "Agatha", - "Alex", - "Bianka", - "Klara", +local Polish = CultureName:New() + +Polish.name = "Polish" +Polish.code = "pl" + +Polish.male = { + "Bartek", + "Kacper", + "Adam", + "Mateusz", + "Szymon", + "Kamil", + "Dawid", + "Tomek", + "Przemek", + "Antek", + "Wojtek", + "Patryk", + "Jakub", + "Maciej", + "Kuba", + "Jan", + "Marcin", + "Sebastian", + "Piotr", + "Adrian", + "dominik", + "Bartosz", + "Max", + "Paweł", + "Marcel", + "Marek", + "Igor", + "Pawel", + "Maciek", + "Peter", + "Hubert", + "Wojciech", + "Michael", + "Karol", + "Oskar", + "Michał", + "Łukasz", + "Chris", + "Pawel", + "Krzysztof", + "Milosz", + "Darek", + "Damian", + "Stuart", + "Michal", + "Konrad", + "Filip", + "Krystian", + "Tymon", + "Andrzej", + "Matthew", + "Milosz", + "Krzy", + "Michal", + "Wiktor", + "Mark", + "robert", + "Tom", + "Olaf", + "Jerry", + "Gustaw", + "Pavel", + "Simon", + "Paul", + "Mikołaj", + "Stasiek", + "Mariusz", + "£ukasz", + "Eryk", + "Daniel", + "Jacek", + "Artur", + "Ignacy", + "david", + "Tomasz", + "Micha", + "Casper", + "Maksymilian", + "Kuba(Jacob)", + "zxz", + "maslo", + "Patrick", + "Bartłomiej", + "Matt", + "Stanislaw", + "Julia", + "edek", + "bolek", + "Maurycy", + "Tacettin", + "Przemyslaw", + "nikolaus", + "Alan", + "arun", + "Mikolaj", + "Ismail", + "danny", + "Mary", + "Kuba", + "Basia", } -local surname = { +Polish.female = { + "Julia", + "Wiktoria", + "Natalia", + "Karolina", + "Dominika", + "Kasia", + "Aleksandra", + "weronika", + "Paulina", + "Ola", + "Oliwia", + "Anna", + "Magdalena", + "Agnieszka", + "Klaudia", + "Magda", + "Martyna", + "Maria", + "Maja", + "Alicja", + "Agata", + "Marta", + "Kinga", + "Ania", + "Monika", + "Amelia", + "Joanna", + "Gosia", + "Zuzia", + "Emilia", + "Ewa", + "Patrycja", + "Michalina", + "Ada", + "Milena", + "Olga", + "Victoria", + "Basia", + "Marysia", + "Gabriela", + "Zuzanna", + "Hania", + "Zuza", + "Kate", + "Sandra", + "Izabela", + "Dorota", + "Justyna", + "Nina", + "Paula", + "Kamila", + "Julka", + "Ula", + "Lena", + "Aga", + "Olivia", + "Mary", + "Jagoda", + "Nikola", + "Hanna", + "Nadia", + "Zosia", + "Amelka", + "Sylwia", + "Sabina", + "Katarzyna", + "Iza", + "lila", + "Claudia", + "Eliza", + "Sonia", + "Iwona", + "Natalie", + "Laura", + "Emily", + "Angela", + "Aneta", + "Alexandra", + "Ewelina", + "Roksana", + "beata", + "Ilona", + "Daria", + "Kaja", + "Sara", + "Wera", + "Jadzia", + "Urszula", + "Estera", + "Martna", + "Zofia", + "Pola", + "Natalka", + "Karen", + "Jessika", + "Anastasia", + "Agatha", + "Alex", + "Bianka", + "Klara", +} + +Polish.surname = { "Nowak", "Kowalski", "Lewandowski", @@ -315,3 +322,5 @@ local surname = { "Mikołajczyk", "Markowski", } + +return Polish diff --git a/data/culture/ru.lua b/data/culture/ru.lua index 7d6b2ff9164..90e283627a7 100644 --- a/data/culture/ru.lua +++ b/data/culture/ru.lua @@ -1,7 +1,15 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male={ +local utils = require 'utils' +local CultureName = require './common' + +local Russian = CultureName:New() + +Russian.name = "Russian" +Russian.code = "ru" + +Russian.male = { 'Afanasy', 'Alexander', 'Alexey', @@ -54,7 +62,7 @@ local male={ 'Yaroslav' } -local female={ +Russian.female = { 'Alexandra', 'Alina', 'Alla', @@ -107,7 +115,7 @@ local female={ 'Zoya' } -local surname={ +Russian.surname = { 'Abramtsev', 'Aleksandrov', 'Baranov', @@ -159,3 +167,13 @@ local surname={ 'Zakharov', 'Zhuravlev' } + +-- Russian surnames are gender specific +function Russian:Surname (isFemale, rand) + local lastname = utils.chooseEqual(self.surname, rand) + + -- Append "a" to end of surname + return isFemale and lastname .. "a" or lastname +end + +return Russian diff --git a/data/culture/sv.lua b/data/culture/sv.lua index c02f4687178..1be08b9a508 100644 --- a/data/culture/sv.lua +++ b/data/culture/sv.lua @@ -1,9 +1,11 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -- Data from 2014. -- http://www.scb.se/sv_/Hitta-statistik/Statistik-efter-amne/Befolkning/Amnesovergripande-statistik/Namnstatistik/ +local CultureName = require './common' + local male={ 'Adam', 'Albin', @@ -309,3 +311,14 @@ local surname={ 'Åström', 'Öberg', } + + +local Swedish = CultureName:New() + +Swedish.name = "Swedish" +Swedish.code = "sv" +Swedish.male = male +Swedish.female = female +Swedish.surname = surname + +return Swedish diff --git a/data/culture/tr.lua b/data/culture/tr.lua index 4eaa9643555..4cafa7d81a4 100644 --- a/data/culture/tr.lua +++ b/data/culture/tr.lua @@ -3,7 +3,14 @@ -- From WKFO -local male = { +local CultureName = require './common' + +local Turkish = CultureName:New() + +Turkish.name = "Turkish" +Turkish.code = "tr" + +Turkish.male = { "Ahmet", "Akif", "Ali", @@ -107,7 +114,7 @@ local male = { } -local female = { +Turkish.female = { "Ada", "Adile", "Asli", @@ -211,7 +218,7 @@ local female = { } -local surname = { +Turkish.surname = { "Acar", "Akac", "Aksoy", @@ -315,3 +322,5 @@ local surname = { "Yilmaz", "Zaman" } + +return Turkish diff --git a/data/culture/zh.lua b/data/culture/zh.lua index 6b1d1293ad2..838b3d413f2 100644 --- a/data/culture/zh.lua +++ b/data/culture/zh.lua @@ -1,7 +1,14 @@ --- Copyright © 2008-2016 Pioneer Developers. See AUTHORS.txt for details +-- Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details -- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt -local male={ +local CultureName = require './common' + +local Chinese = CultureName:New() + +Chinese.name = "Chinese" +Chinese.code = "zh" + +Chinese.male = { 'Aiguo', 'Bai', 'Bingwen', @@ -144,7 +151,7 @@ local male={ 'Zongmeng' } -local female={ +Chinese.female = { 'Baozhai', 'Biyu', 'Changchang', @@ -287,7 +294,7 @@ local female={ 'Zongying' } -local surname={ +Chinese.surname = { 'Ang', 'Au-Yong', 'Bui', @@ -428,3 +435,5 @@ local surname={ 'Zhong', 'Zhou' } + +return Chinese diff --git a/data/libs/NameGen.lua b/data/libs/NameGen.lua index 870ec0b6175..eb04fbcc5b2 100644 --- a/data/libs/NameGen.lua +++ b/data/libs/NameGen.lua @@ -8,17 +8,12 @@ -- local Engine = require 'Engine' +local Culture = require 'culture/culture' local r = function (t, rand) return t[rand:Integer(1,#t)] end local NameGen NameGen = { - firstNames = { - male = {}, - female = {}, - }, - surnames = {}, - outdoorPlanetFormats = {}, rockPlanetFormats = {}, @@ -38,7 +33,7 @@ NameGen = { -- false for male -- -- rand - optional, the object to use to generate the name. if --- omitted, will be used +-- omitted/nil, will be used -- -- Return: -- @@ -56,14 +51,7 @@ NameGen = { FullName = function (isfemale, rand) if not rand then rand = Engine.rand end - local firstname - if isfemale then - firstname = r(NameGen.firstNames.female, rand) - else - firstname = r(NameGen.firstNames.male, rand) - end - - return firstname .. " " .. NameGen.Surname(rand) + return Culture:FullName(isfemale, rand) end, -- @@ -94,7 +82,11 @@ NameGen = { Surname = function (rand) if not rand then rand = Engine.rand end - return r(NameGen.surnames, rand) + -- xxx + -- need to ad a "isfemale" arg to Surname, will it work from C++? + local isfemale = Engine.rand:Integer(1) == 1 + + return Culture:Surname(isfemale, rand) end, -- @@ -151,154 +143,6 @@ NameGen = { end } -NameGen.firstNames.male = { - 'Aaron', 'Abram', 'Adam', 'Adrian', 'Agustin', 'Alan', 'Albert', 'Alberto', - 'Alejandro', 'Alessandro', 'Alex', 'Alexander', 'Alfonso', 'Alfredo', - 'Alistair', 'Andres', 'Andrew', 'Angel', 'Antonio', 'Antti', 'Arda', 'Arthur', - 'Asier', 'Barry', 'Ben', 'Benjamin', 'Benoit', 'Bernard', 'Bill', - 'Blaga', 'Bob', 'Brian', 'Bruce', 'Byron', 'Carl', 'Carlos', 'Chip', - 'Chris', 'Christopher', 'Clive', 'Connor', 'Craig', 'Dan', 'Daniel', 'Darren', - 'Dave', 'David', 'Denis', 'Dennis', 'Derek', 'Diego', 'Dmitry', 'Dionisis', 'Domingo', 'Donald', - 'Eduardo', 'Eliott', 'Emery', 'Emilio', 'Enric', 'Enrique', 'Eren', 'Felipe', 'Felix', - 'Fernando', 'Florian', 'Fran', 'Francisco', 'Francisco Javier', 'Frank', - 'Gareth', 'Gary', 'Gaz', 'Gene', 'Geoffrey', 'George', 'Gernot', 'Graham', 'Gregorio', - 'Guy', 'Henry', 'Herbert', 'Ian', 'Ignacio', 'Isaac', 'Jackie', 'Jaime', - 'Jake', 'James', 'Jan', 'Javier', 'Jeremy', 'Jesus', 'Jim', 'Jimmy', - 'Joaquin', 'John', 'Jorge', 'Jose', 'Jose Antonio', 'Jose Luis', - 'Jose Manuel', 'Jose Maria', 'Jose Ramon', 'Josh', 'Juan', - 'Antonio', 'Juan Carlos', 'Juan Jose', 'Juan Manuel', 'Julian', 'Karl', - 'Keith', 'Kenneth', 'Kimmo', 'Konrad', 'Krzysztof', 'Lance', 'Lars', - 'Lee', 'Leon', 'Leonardo', 'Luca', 'Luis', 'Maksim', 'Malcolm', 'Manuel', - 'Marcel', 'Marcus', 'Mariano', 'Mark', 'Matthew', 'Mete', 'Michael', - 'Michele', 'Miguel', 'Miha', 'Morgan', 'Muhammad', 'Neil', 'Nic', 'Nick', 'Nicholas', 'Non', 'Oleg', 'Pablo', 'Patrick', - 'Paul', 'Pedro', 'Peter', 'Phil', 'Philip', 'Piotr', 'Radek', 'Rafael', - 'Ralph', 'Ramon', 'Rémi', 'Ricardo', 'Richard', 'Rob', 'Robert', 'Roger', 'Roland', - 'Roy', 'Salvador', 'Santiago', 'Sean', 'Sergey', 'Simon', 'Stefan', 'Stephen', - 'Steve', 'Subaru', 'Sung', 'Szilárd', 'Taiki', 'Teoman', 'Thierry', 'Thomas', 'Tim', 'Timothy', 'Tom', 'Tomas', 'Tony', - 'Tristram', 'Ulf', 'Vaughan', 'Vincent', 'Vladimir', 'Wayne', 'Wernher', 'Will', 'William', 'Xi', - 'Yeong', 'Yuri', -} --- SAVEBUMP add: - -NameGen.firstNames.female = { - 'Jen', 'Steph', 'Hannah', 'Alison', 'Amanda', 'Angela', 'Ann', 'Anne', 'Ashley', - 'Audrey', 'Barbara', 'Beryl', 'Betty', 'Beth', 'Beyza', 'Brenda', 'Carol', - 'Caroline', 'Catherine', 'Cathy', 'Celia', 'Cheryl', 'Christine', 'Claire', - 'Daphne', 'Diana', 'Dorothy', 'Elise', 'Elaine', 'Edith', 'Emma', 'Ella', - 'Erica', 'Esther', 'Eva', 'Fran', 'Frances', 'Fiona', 'Gill', 'Gillian', - 'Hazel', 'Heather', 'Helen', 'Hilary', 'Irena', 'Isobel', 'Jane', 'Janet', - 'Janice', 'Jeanette', 'Jenny', 'Jennifer', 'Jill', 'Jo', 'Joan', 'Joanna', - 'Joy', 'Juliette', 'Judy', 'Julia', 'Kara', 'Karen', 'Kate', 'Kathy', 'Katherine', - 'Laura', 'Linda', 'Lisa', 'Louise', 'Lucy', 'Luna', 'Maggie', 'Margaret', - 'Maria', 'Mariam', 'Marilyn', 'Marion', 'Maureen', 'Melis', 'Molly', 'Miriam', - 'Morag', 'Monica', 'Nat', 'Natalia', 'Nicola', 'Nuan', 'Pam', 'Pamela', 'Patricia', - 'Pauline', 'Penny', 'Rachel', 'Rose', 'Rosemary', 'Rosie', 'Sally', - 'Sandra', 'Sarah', 'Stella', 'Sue', 'Sally', 'Susan', 'Susanne', 'Suzy', - 'Tracy', 'Valerie', 'Vicky', 'Vivian', 'Violet', 'Wendy', 'Yvonne', 'Zoe', - 'Maria', 'Carmen', 'Josefa', 'Isabel', 'Dolores', 'Francisca', 'Antonia', - 'Pilar', 'Ana Maria', 'Ana', 'Maria Luisa', 'Mercedes', 'Manuela', 'Juana', - 'Rosario', 'Tanaka', 'Teresa', 'Maria Jose', 'Margarita', 'Maria Angeles', 'Angeles', - 'Maria Pilar', -} - -NameGen.surnames = { - 'Acevedo', 'Adams', 'Aguilar', 'Aguirre', 'Albert', 'Alexander', - 'Alford', 'Allen', 'Allnutt', 'Alston', 'Alvarez', 'Anderson', - 'Andrews', 'Armstrong', 'Arnold', 'Ashley', 'Ashworth', 'Asimov', 'Atkinson', 'Austin', - 'Avery', 'Bailey', 'Baird', 'Baker', 'Ashworth', 'Bálint', 'Banks', 'Barlow', 'Barnes', - 'Barron', 'Barry', 'Bartholomew', 'Basagoiti', 'Bean', 'Bell', - 'Bender', 'Benjamin', 'Bennet', 'Bennett', 'Bentley', 'Berg', - 'Berger', 'Bernard', 'Berry', 'Best', 'Bishop', 'Black', 'Blackburn', - 'Blanchard', 'Blevins', 'Bolton', 'Bonner', 'Botticelli', 'Boutemy', 'Boyd', - 'Boyle', 'Branch', 'Bray', 'Brennan', 'Briggs', 'Bright', 'Britt', 'Brooks', - 'Brown', 'Bryant', 'Buckley', 'Buckner', 'Bumgardner', 'Burch', - 'Burks', 'Burns', 'Burris', 'Burton', 'Butcher', 'Butler', 'Byers', - 'Cabrera', 'Calderon', 'Campbell', 'Campos', 'Cantrell', 'Cardenas', - 'Carney', 'Carpenter', 'Carr', 'Carrol', 'Carter', 'Carver', 'Case', - 'Castillo', 'Castropena', 'Cervantes', 'Chan', 'Chandler', 'Chaney', - 'Chang', 'Chao', 'Chapman', 'Chavez', 'Chen', 'Cheng', 'Cherry', - 'Chia', 'Chiang', 'Chin', 'Chopin', 'Chou', 'Chu', 'Chung', 'Church', 'Clarke', - 'Clements', 'Clemons', 'Cleveland', 'Cole', 'Coleman', 'Collin', 'Collins', - 'Compton', 'Conrad', 'Cook', 'Cooke', 'Cooley', 'Cooper', 'Copland', - 'Cosmin', 'Cote', 'Cotton', 'Cox', 'Craft', 'Crane', 'Crawford', - 'Crosby', 'Cruz', 'Cunningham', 'Daniels', 'Daugherty', 'Davidson', - 'Davis', 'de Craen', 'De La Cruz', 'de Roos', 'Dean', 'Dennett', - 'Diaz', 'Dickson', 'Dillard', 'Dillon', 'Dixon', 'Donaldson', - 'Donovan', 'Dotson', 'Dudley', 'Duke', 'Duncan', 'Dunlap', 'Dunn', - 'Dupré', 'Dyson', 'Edwards', 'Elliott', 'Ellis', 'Emerson', 'Espinoza', - 'Estes', 'Evans', 'Ewing', 'Fan', 'Fang', 'Farley', 'Farrell', - 'Faulkner', 'Feng', 'Ferguson', 'Fernandez', 'Ferrel', 'Fields', - 'Findley', 'Finley', 'Fisher', 'Fitzpatrick', 'Flores', 'Fogelmark', 'Foley', - 'Forbes', 'Ford', 'Foster', 'Fox', 'Franco', 'Franklin', 'Frederick', - 'Freeman', 'Frost', 'Fry', 'Frye', 'Fuentes', 'Fuller', 'Fulton', 'Gagarin', - 'Galloway', 'Gamble', 'Ganzerla', 'Garcia', 'Gardner', 'Garza', 'Gay', 'George', - 'Giachi', 'Gibbs', 'Gibson', 'Gilbert', 'Giles', 'Gimeno', 'Glark', 'Goff', - 'Gomez', 'Gonzales', 'Gonzalez', 'Goodwin', 'Gordon', 'Gould', - 'Graham', 'Grant', 'Gray', 'Gredka', 'Green', 'Greene', 'Griffin', - 'Guerra', 'Guthrie', 'Gutierrez', 'Hahn', 'Haley', 'Hall', 'Hamilton', - 'Han', 'Hansen', 'Hao', 'Hard', 'Harding', 'Hardy', 'Harper', - 'Harris', 'Harrison', 'Harvey', 'Hawkins', 'Hayden', 'Hays', 'Hemingway', - 'Henderson', 'Hendricks', 'Hendrix', 'Henry', 'Herbert', 'Herman', - 'Hernandez', 'Hester', 'Hicks', 'Hill', 'Hills', 'Hindle', 'Hinton', 'Hodgetts', - 'Holden', 'Holman', 'Holmes', 'Hooper', 'Hopper', 'Horne', 'Hou', - 'Howard', 'Howe', 'Howell', 'Howlett', 'Hsai', 'Hsiao', 'Hsieh', - 'Hsiung', 'Hsu', 'Hu', 'Huang', 'Hubble', 'Huber', 'Hudson', 'Hughes', 'Hung', - 'Hunt', 'Hunter', 'Hurley', 'Hurst', 'Ibarrez', 'Irwin', 'Jackson', - 'Jacobs', 'Jacobson', 'James', 'Jarvis', 'Jenkins', 'Johnson', - 'Johnston', 'Jones', 'Jordan', 'Joyce', 'Joyner', 'Juarez', 'Justice', - 'Kane', 'Kang', 'Kao', 'Kapusniak', 'Kelley', 'Kelly', 'Kennedy', - 'Kerr', 'Key', 'Khrushchev', 'Kidd', 'Kim', 'King', 'Kinney', 'Kirkland', 'Kline', - 'Klippenberg', 'Knapp', 'Knight', 'Koch', 'Kontominas', 'Kotajärvi', 'Kranz', - 'Kulikov', 'Kung', 'Kuo', 'Kurucz', 'Lancaster', 'Lane', 'Langley', - 'Larson', 'Lawrence', 'Lawson', 'Lee', 'Lei', 'Levine', 'Levy', - 'Lewis', 'Li', 'Liang', 'Liao', 'Lin', 'Little', 'Liu', 'Livingston', - 'Lo', 'Long', 'Lopez', 'Lowery', 'Lucas', 'Lung', 'Lynch', 'Ma', - 'Macdonald', 'Macias', 'Madden', 'Mahol', 'Manna', 'Manley', 'Mao', 'Marakasov', 'Marshall', - 'Martin', 'Martinez', 'Mas', 'Mason', 'Matthews', 'Maxwell', 'Mayer', - 'Maynard', 'Mayo', 'Mays', 'Mcconnell', 'Mccoy', 'Mccray', - 'Mccullough', 'Mcdonald', 'Mcfadden', 'Mcfarland', 'Mcgowan', - 'Mcintosh', 'Mckay', 'Mcleod', 'Mcmillan', 'Mcneil', 'Mcpherson', - 'Meadows', 'Mejia', 'Melendez', 'Mercer', 'Merrill', 'Meyer', - 'Middleton', 'Miles', 'Miller', 'Mills', 'Miranda', 'Mitchell', - 'Montgomery', 'Moon', 'Mooney', 'Moore', 'Morales', 'Morgan', 'Morin', - 'Morris', 'Morrison', 'Morse', 'Morton', 'Moss', 'Mruk', 'Mullen', - 'Munoz', 'Murphy', 'Murray', 'Musk', 'Myers', 'Neil', 'Nelson', 'Newton', - 'Nichols', 'Niedźwiecki', 'Nielsen', 'Niu', 'Nixon', 'Noel', 'Nolan', - 'Norris', 'Ochoa', 'Odom', 'Odonnell', 'Oliver', 'Olsina', 'Olson', - 'Oneill', 'Ortiz', 'Osborn', 'Ovcharenko', 'Owens', 'Ozmen', 'Pallier', 'Palmer', 'Pan', 'Parker', - 'Patterson', 'Payne', 'Peck', 'Pennington', 'Perez', 'Perry', - 'Peters', 'Peterson', 'Pettersson', 'Phillips', 'Pickett', 'Pierce', - 'Porter', 'Potts', 'Powell', 'Powers', 'Pretty', 'Price', 'Qing', 'Ramirez', - 'Ramos', 'Rasmussen', 'Ray', 'Raymond', 'Reed', 'Reese', 'Reid', - 'Reilly', 'Reyes', 'Reynolds', 'Rhodes', 'Rice', 'Richards', - 'Richardson', 'Richmond', 'Riddle', 'Riggs', 'Riley', 'Rivas', - 'Rivera', 'Rivers', 'Roach', 'Roberts', 'Robertson', 'Robinson', - 'Rocha', 'Roddenberry', 'Rodriguez', 'Rogers', 'Rollins', 'Romero', 'Ronald', 'Rosa', - 'Rosales', 'Rosario', 'Rose', 'Ross', 'Rowe', 'Rowland', 'Ruiz', - 'Russel', 'Rutsky', 'Ryan', 'Sagan', 'Salas', 'Salazar', 'Salonen', 'Salt', 'Sampson', 'Sanchez', - 'Sanders', 'Sanford', 'Santana', 'Santiago', 'Sawyer', 'Schmidt', - 'Schneider', 'Schultz', 'Scott', 'Sears', 'Senese', 'Shao', 'Sharpe', - 'Shaw', 'Shen', 'Shepard', 'Sheppard', 'Shih', 'Simmons', 'Simpson', - 'Sims', 'Slater', 'Sloan', 'Smith', 'Snider', 'Snyder', 'Solis', - 'Solomon', 'Sosa', 'Soto', 'Spears', 'Spence', 'Spencer', 'Stanley', - 'Stanton', 'Stark', 'Stein', 'Stephens', 'Stevens', 'Stewart', - 'Stone', 'Stout', 'Su', 'Suarez', 'Sullivan', 'Sun', 'Sung', 'Sykes', - 'Tai', 'Talley', 'Tang', 'Tate', 'Taylor', 'Teerling', 'Teng', - 'Terrell', 'Thomas', 'Thompson', 'Thomson', 'Tillman', 'Ting', - 'Torres', 'Townsend', 'Travis', 'Tsaipeng', 'Tsao', 'Tseng', 'Tsou', - 'Tuan', 'Tucker', 'Tulloh', 'Turner', 'Tyler', 'Tyson', 'Valášek', 'Valdez', - 'Valencia', 'Valenzuela', 'Vang', 'Vasquez', 'Vazquez', 'Vega', - 'Velazquez', 'Vitorovi', 'Volk', 'Wagner', 'Walker', 'Wallace', 'Walls', 'Walter', 'Wan', - 'Wang', 'Wanstall', 'Ward', 'Warner', 'Warren', 'Washington', 'Watkins', - 'Watson', 'Watts', 'Weaver', 'Webb', 'Weeks', 'Wei', 'Weiss', 'Welch', - 'Wells', 'West', 'Westerhoff', 'Wheeler', 'White', 'Whitfield', - 'Wilder', 'William', 'Williams', 'Williamson', 'Willis', 'Wilson', - 'Wise', 'Witt', 'Wolfe', 'Wong', 'Wood', 'Woods', 'Woodward', - 'Wooten', 'Wright', 'Wu', 'Wynn', 'Yang', 'Yen', 'Yin', 'Young', 'Yu', - 'Yuan', 'Yung', 'Zamora', 'Zimmerman', -} --- SAVEBUMP add: - NameGen.outdoorPlanetFormats = { "{name}", "{name}'s World",