Repository: joke2k/faker
Pull request #1891 (2023-07-16 20:05:37)

Add support for South African Zulu (zu_ZA) names and last names
### What does this change

Adds support for South African Zulu first names and last names

### What was wrong

This was currently missing.

### How this fixes it

This adds the missing person provider



Patch:
diff --git a/faker/providers/person/zu_ZA/__init__.py b/faker/providers/person/zu_ZA/__init__.py
new file mode 100644
index 00000000..3661d207
--- /dev/null
+++ b/faker/providers/person/zu_ZA/__init__.py
@@ -0,0 +1,934 @@
+from .. import Provider as PersonProvider
+
+
+class Provider(PersonProvider):
+    """
+    A Faker provider for generating fake Zulu names in South Africa.
+    """
+
+    formats = (
+        "{{first_name_male}} {{last_name_male}}",
+        "{{first_name_male}} {{last_name_male}}",
+        "{{first_name_male}} {{last_name_male}}",
+        "{{first_name_male}} {{last_name_male}}",
+        "{{first_name_male}} {{last_name_male}}-{{last_name_male}}",
+        "{{first_name_female}} {{last_name_female}}",
+        "{{first_name_female}} {{last_name_female}}",
+        "{{first_name_female}} {{last_name_female}}",
+        "{{first_name_female}} {{last_name_female}}",
+        "{{first_name_female}} {{last_name_female}}-{{last_name_female}}",
+        "{{prefix_male}} {{first_name_male}} {{last_name_male}}",
+        "{{prefix_female}} {{first_name_female}} {{last_name_female}}",
+        "{{prefix_male}} {{first_name_male}} {{last_name_male}}",
+        "{{prefix_female}} {{first_name_female}} {{last_name_female}}",
+    )
+
+    # first names sourced from:
+    # 1. https://briefly.co.za/35929-230-zulu-names-boys-girls.html
+    # 2. https://en.wiktionary.org/wiki/Appendix:Zulu_given_names
+    first_names_male = (
+        "Andile",
+        "Bandile",
+        "Bhekani",
+        "Jabulani",
+        "Langalibalele",
+        "Lungile",
+        "Luyanda",
+        "Lwandile",
+        "Mandla",
+        "Mandlakhe",
+        "Mcebisi",
+        "Minenhle",
+        "Mlungisi",
+        "Mthokozisi",
+        "Musa",
+        "Mzamo",
+        "Nhlanhla",
+        "Njabulo",
+        "S'fiso",
+        "Sandile",
+        "Sibonelo",
+        "Sibusiso",
+        "SimphiweyiNkosi",
+        "Siyabonga",
+        "Sphiwe",
+        "Thabani",
+        "Thalente",
+        "Thando",
+        "Vusumuzi",
+        "Zenzele",
+    )
+    first_names_female = (
+        "Amahle",
+        "Bhekisisa",
+        "Bhekizizwe",
+        "Bhekokwakhe",
+        "Busisiwe",
+        "Dumisani",
+        "Dumisile",
+        "Gugu",
+        "Gugulethu",
+        "Khanyisile",
+        "Londisizwe",
+        "Londiwe",
+        "Mnqobi",
+        "Ndumiso",
+        "Nkazimulo",
+        "Nobantu",
+        "Nobuhle",
+        "Nokulunga",
+        "Nomagugu",
+        "Nomalanga",
+        "Nomasonto",
+        "Nomathalente",
+        "Nomathemba",
+        "Nomcebo",
+        "Nomthandazo",
+        "Nomusa",
+        "Nomvula",
+        "Nonhlanhla",
+        "Nonjabulo",
+        "Nothando",
+        "Noxolo",
+        "Nozibusiso",
+        "Nozizwe",
+        "Nqobizitha",
+        "Olwethu",
+        "Owethu",
+        "Sibongile",
+        "Sibusisiwe",
+        "Sihawukele",
+        "Silondile",
+        "Simphiwe",
+        "Siphesihle",
+        "Sithembiso",
+        "Thabisa",
+        "Thabisile",
+        "Thalente",
+        "Thandazile",
+        "Thandeka",
+        "Thandiwe",
+        "Thembeka",
+        "Thembekile",
+        "Thembile",
+        "Thembisile",
+        "Thuthukile",
+        "Zakhele",
+        "Zenzile",
+        "Zibuyile",
+        "Zinhle",
+    )
+
+    first_names = first_names_male + first_names_female
+
+    # last names sourced from :
+    # 1. https://briefly.co.za/27255-izithakazelo-zakwazulu-zulu-surnames-zulu-clan-names-list.html
+    last_names_male = (
+        "Amahle",
+        "Andile",
+        "Anele",
+        "Ayanda",
+        "Ayize",
+        "Bantwini",
+        "Bayeni",
+        "Bhedleni",
+        "Bele",
+        "Bhebhe",
+        "Bhejelibomvu",
+        "Bhembe",
+        "Bhengu",
+        "Bhensela",
+        "Bhovungana",
+        "Bhungane",
+        "Bikelwayo",
+        "Bikwayo",
+        "Binda",
+        "Biyase",
+        "Biyela",
+        "Blose",
+        "Bophela",
+        "Boyabenyathi",
+        "Bukhosini",
+        "Caluza",
+        "Cebisa",
+        "Cebekhulu",
+        "Cenge",
+        "Chagwe",
+        "Chamane",
+        "Chibi",
+        "Chibini",
+        "Chiliza",
+        "Cibane",
+        "Chonco",
+        "Cwalile",
+        "Delwayo",
+        "Dikane",
+        "Dimba",
+        "Dimbane",
+        "Dimbani",
+        "Dinabantu",
+        "Dinangwe",
+        "Dindela",
+        "Dingila",
+        "Dindi",
+        "Dinwa",
+        "Dlabane",
+        "Dlabazane",
+        "Dladla",
+        "Dlakadla",
+        "Dlakela",
+        "Dlamane",
+        "Dlambula",
+        "Dlamdaka",
+        "Dlamini",
+        "Dlamlenze",
+        "Dlangamandla",
+        "Dlawuza",
+        "Dlebenkomo",
+        "Dlodlo",
+        "Dlomo",
+        "Dludla",
+        "Dludlu",
+        "Dlungwana",
+        "Doncabe",
+        "Donda",
+        "Dubandlela",
+        "Dubazane",
+        "Dube",
+        "Dukada",
+        "Duma",
+        "Dumakude",
+        "Dumisa",
+        "Dunge",
+        "Duyaza",
+        "Duze",
+        "Dwala",
+        "Fihlela",
+        "Fakazi",
+        "Fakude",
+        "Fanisa",
+        "Fenya",
+        "Gabadela",
+        "Gabela",
+        "Gabhezi",
+        "Gabhisa",
+        "Gadlela",
+        "Gazu",
+        "Galu",
+        "Gagashe",
+        "Gama",
+        "Gambu",
+        "Gambuse",
+        "Gamede",
+        "Gasa",
+        "Gasela",
+        "Gatsheni",
+        "Gcaba",
+        "Gcaleka",
+        "Gcugcwa",
+        "Gcumisa",
+        "Gcwabe",
+        "Gcwensa",
+        "Gebashe",
+        "Gebhezi",
+        "Gedeza",
+        "Gence",
+        "Gengeshe",
+        "Gigaba",
+        "Gina",
+        "Gininda",
+        "Goba",
+        "Gobhozi",
+        "Godide",
+        "Goje",
+        "Gotsholo",
+        "Gubeshe",
+        "Gubhela",
+        "Gubhuza",
+        "Gubulundu",
+        "Gugushe",
+        "Gule",
+        "Guliwe",
+        "Guma",
+        "Gumede",
+        "Gumbi",
+        "Gwacela",
+        "Gwagwa",
+        "Gwala",
+        "Gwamanda",
+        "Gwanyana",
+        "Gwija",
+        "Gxabhashe",
+        "Hadebe",
+        "Hangala",
+        "Hhoyiyane",
+        "Hlabisa",
+        "Hlabangane",
+        "Hlatshwayo",
+        "Hlela",
+        "Hlengwa",
+        "Hlomuka",
+        "Hlongwa",
+        "Hlongwane",
+        "Hlophe",
+        "Hlubi",
+        "Hlumakazi",
+        "Jali",
+        "Jama",
+        "Jamasijadu",
+        "Jamile",
+        "Jele",
+        "Jibela",
+        "Jili",
+        "Jiyane",
+        "Jobe",
+        "Jokiwe",
+        "Juqula",
+        "Khaba",
+        "Khabalidaka",
+        "Khambule",
+        "Khanyeza",
+        "Khanyile",
+        "Khaphela",
+        "Khathi",
+        "Khathini",
+        "Khathide",
+        "Khawula",
+        "Kheswa",
+        "Khezokhulu",
+        "Kholose",
+        "Khomo",
+        "Khonjwayo",
+        "Khosini",
+        "Khoza",
+        "Khuba",
+        "Khubisa",
+        "Khuboni",
+        "Khukhuza",
+        "Khulu",
+        "Khuluse",
+        "Khumalo",
+        "Khumbuza",
+        "Khuyameni",
+        "Khuzwayo",
+        "Khwela",
+        "Khwane",
+        "Kubheka",
+        "Kunene",
+        "Kweyama",
+        "Lakaza",
+        "Lamula",
+        "Langa",
+        "Lange",
+        "Langeni",
+        "Lembede",
+        "Longode",
+        "Lubelo",
+        "Ludonga",
+        "Lukhele",
+        "Luqe",
+        "Lutholoni",
+        "Luthuli",
+        "Luvuno",
+        "Lwandle",
+        "Mabanga",
+        "Mabaso",
+        "Mabhena",
+        "Mabhoko",
+        "Mabizela",
+        "Mabika",
+        "Mabhodla",
+        "Mbutho",
+        "Mabuya",
+        "Mabuyakhulu",
+        "Mabuza",
+        "Macingwane",
+        "Made",
+        "Madela",
+        "Madi",
+        "Madiba",
+        "Madide",
+        "Madinane",
+        "Madlala",
+        "Madlanduna",
+        "Madondo",
+        "Madonsela",
+        "Mdotshana",
+        "Maduma",
+        "Maduna",
+        "Malembe",
+        "Madlula",
+        "Madziba",
+        "Mafobo",
+        "Mafulela",
+        "Mafuleka",
+        "Magagula",
+        "Magubane",
+        "Magutshwa",
+        "Magwaza",
+        "Mageba",
+        "Mahaye",
+        "Mahamba",
+        "Mahlaba",
+        "Mahlalela",
+        "Mahlangu",
+        "Mahlase",
+        "Mahlinza",
+        "Mahlobo",
+        "Mahulube",
+        "Majoka",
+        "Majola",
+        "Majozi",
+        "Makhanya",
+        "Makhaye",
+        "Makhathini",
+        "Makhaza",
+        "Makhedama",
+        "Makhoba",
+        "Makhubo",
+        "Makhulukhulu",
+        "Makhunga",
+        "Malambule",
+        "Malevu",
+        "Malinga",
+        "Maluleka",
+        "Mamba",
+        "Manana",
+        "Mangcamane",
+        "Mantshinga",
+        "Mangede",
+        "Mangena",
+        "Mangethe",
+        "Manyoni",
+        "Mnqamu",
+        "Manqele",
+        "Mnquhe",
+        "Manzi",
+        "Manzini",
+        "Manzezulu",
+        "Maphalala",
+        "Maphindela",
+        "Maphanga",
+        "Maphisa",
+        "Mapholoba",
+        "Maphumulo",
+        "Masango",
+        "Maseko",
+        "Mashaba",
+        "Mashasha",
+        "Mashinini",
+        "Mashimane",
+        "Mashiya",
+        "Masibekela",
+        "Masikane",
+        "Masina",
+        "Masinga",
+        "Masilela",
+        "Masondo",
+        "Masuku",
+        "Mathaba",
+        "Mathebela",
+        "Mathebula",
+        "Mathebula",
+        "Mathenjwa",
+        "Mathetha",
+        "Mathula",
+        "Mathunjwa",
+        "Mathibela",
+        "Mathonsi",
+        "Mathwasa",
+        "Mavela",
+        "Mavundla",
+        "Mavuso",
+        "Mawanda",
+        "Mawewe",
+        "Mayeza",
+        "Mayise",
+        "Mayisela",
+        "Mazalankosi",
+        "Mazibuko",
+        "Mazwi",
+        "Mbamali",
+        "Magoza",
+        "Magolwana",
+        "Magononde",
+        "Maziya",
+        "Mbanjwa",
+        "Mbatha",
+        "Mbatshazwa",
+        "Magujwa",
+        "Mbembe",
+        "Mbekwa",
+        "Mbende",
+        "Mbeje",
+        "Mbhele",
+        "Mbhense",
+        "Mbhodwe",
+        "Mbhobho",
+        "Mbhulangwe",
+        "Mbili",
+        "Mbokazi",
+        "Mboko",
+        "Mbonambi",
+        "Mbongwa",
+        "Mbongwe",
+        "Mbotho",
+        "Mbonane",
+        "Mboyisa",
+        "Mbulazi",
+        "Mbulaze",
+        "Mbuli",
+        "Mbungela",
+        "Mbunjwa",
+        "Mbuyazi",
+        "Mbuyisa",
+        "Mbuyise",
+        "Mcambe",
+        "Mcambi",
+        "Mcanco",
+        "Mcanyana",
+        "Mchunu",
+        "Mcoyi",
+        "Mcwaye",
+        "Mcusi",
+        "Mdaka",
+        "Mdakane",
+        "Mdladla",
+        "Mdlalose",
+        "Mdlanyoka",
+        "Mdletshe",
+        "Mdlenevu",
+        "Mdluli",
+        "Mdlumbi",
+        "Mdonswa",
+        "Mdunge",
+        "Mehloluhlaza",
+        "Memela",
+        "Nenzi",
+        "Menziwa",
+        "Meyiwa",
+        "Mfeka",
+        "Mfusi",
+        "Mgabhi",
+        "Mgabadeli",
+        "Mgasela",
+        "Mgazi",
+        "Mgcaleka",
+        "Mgenge",
+        "Mgobhozi",
+        "Mgilija",
+        "Mhayise",
+        "Mhlabandlovu",
+        "Mhlambo",
+        "Mhlanga",
+        "Mhlangu",
+        "Mhlanya",
+        "Mhlongo",
+        "Mhlongwane",
+        "Mhlophe",
+        "Mhlungu",
+        "Mgwaba",
+        "Miya",
+        "Mjadu",
+        "Mjoli",
+        "Mjwara",
+        "Mkhabela",
+        "Mkhandlela",
+        "Mkhathini",
+        "Mkhatshwa",
+        "Mkhithi",
+        "Mkhize",
+        "Mkhokeleleki",
+        "Mkholo",
+        "Mkhumbuzi",
+        "Mkhungo",
+        "Mkhonza",
+        "Mkhwananzi",
+        "Mlaba",
+        "Mlalane",
+        "Mlalazi",
+        "Mlambo",
+        "Mlangatshe",
+        "Mlangeni",
+        "Mlawula",
+        "Mlungisi",
+        "Mlungwana",
+        "Mlondo",
+        "Mlotshwa",
+        "Mncube",
+        "Mncwabe",
+        "Mncwanga",
+        "Mngadi",
+        "Mngoma",
+        "Mngomezulu",
+        "Mngwemkhulu",
+        "Mngwengwe",
+        "Mnguni",
+        "Mnikathi",
+        "Mnisi",
+        "Mnomiya",
+        "Mnqayi",
+        "Mqungebe",
+        "Mnyandu",
+        "Mnyoni",
+        "Mondise",
+        "Motha",
+        "Mnangwe",
+        "Mntambo",
+        "Mntimande",
+        "Mtolo",
+        "Mntungwa",
+        "Mnyamande",
+        "Mpangazitha",
+        "Mpanza",
+        "Mphankomo",
+        "Mphahlwa",
+        "Mphazima",
+        "Mphephethwa",
+        "Mphemba",
+        "Mpila",
+        "Mpikela",
+        "Mpofana",
+        "Mpungose",
+        "Mpumuza",
+        "Mpunzana",
+        "Mqadi",
+        "Msane",
+        "Msani",
+        "Msamkhulu",
+        "Mshazi",
+        "Mshengu",
+        "Mshibe",
+        "Msibi",
+        "Mshikela",
+        "Mshikila",
+        "Mshiyane",
+        "Mseleku",
+        "Msimang",
+        "Msindazwe",
+        "Msokazi",
+        "Msomi",
+        "Msweli",
+        "Msuthu",
+        "Mthabela",
+        "Mthalane",
+        "Mthanti",
+        "Mthembu",
+        "Mthethwa",
+        "Mtimande",
+        "Mthimkhulu",
+        "Mthinti",
+        "Mthiya",
+        "Mthiyane",
+        "Mthombeni",
+        "Mthonti",
+        "Mtshali",
+        "Mtumaseli",
+        "Mtuswa",
+        "Musi",
+        "Mvelase",
+        "Mveni",
+        "Mvubu",
+        "Mvuyana",
+        "Myeza",
+        "Mwandla",
+        "Mwelase",
+        "Myeni",
+        "Mzila",
+        "Mzileni",
+        "Mzilankatha",
+        "Mzimela",
+        "Mzizi",
+        "Mzobe",
+        "Mzolo",
+        "Mzomba",
+        "Mzoneli",
+        "Mzukase",
+        "Mzulwini",
+        "Nala",
+        "Nandisa",
+        "Ncala",
+        "Ncwaba",
+        "Ncwane",
+        "Ndandali",
+        "Ntenga",
+        "Ncama",
+        "Ngcamane",
+        "Ncanana",
+        "Ncongwane",
+        "Ncube",
+        "Ncusi",
+        "Ndaba",
+        "Ndabandaba",
+        "Ndabase",
+        "Ndabansele",
+        "Ndawo",
+        "Njomane",
+        "Nkundlande",
+        "Ndabezitha",
+        "Ndawonde",
+        "Ndima",
+        "Ndimande",
+        "Ndinisa",
+        "Ndiyema",
+        "Ndlala",
+        "Ndlandla",
+        "Ndlangamandla",
+        "Ndlanzi",
+        "Ndlanya",
+        "Ndlela",
+        "Ndlondlo",
+        "Ndosi",
+        "Ndlovu",
+        "Ndondakusuka",
+        "Ndonga",
+        "Nduli",
+        "Ndwandwe",
+        "Nene",
+        "Ngazitha",
+        "Ngcamu",
+        "Ngcemu",
+        "Ngcobo",
+        "Ngcolosi",
+        "Ngema",
+        "Ngiba",
+        "Zikhungwini",
+        "Ngidi",
+        "Ngobese",
+        "Ngobisi",
+        "Ngomane",
+        "Ngonini",
+        "Ngotsha",
+        "Ngubane",
+        "Ngubeni",
+        "Ngungunyana",
+        "Ngwane",
+        "Ngwazi",
+        "Ngwenya",
+        "Ngwekazi",
+        "Nhlabathi",
+        "Nhlanhla",
+        "Nhlanhlampofu",
+        "Nhlane",
+        "Nhlapho",
+        "Nhleko",
+        "Nhlengethwa",
+        "Nkala",
+        "Nkamzwayo",
+        "Njiki",
+        "Njinji",
+        "Nkabinde",
+        "Nkonyeni",
+        "Nkosi",
+        "Nkumane",
+        "Nkomo",
+        "Nkomose",
+        "Nkomoye",
+        "Nkwakha",
+        "Nkwali",
+        "Nkwaliyenkosi",
+        "Nkwanyana",
+        "Njapha",
+        "Nodanga",
+        "Nodlomo",
+        "Nogantshi",
+        "Nombela",
+        "Nombhoco",
+        "Nomndayi",
+        "Nomvuma",
+        "Nondaba",
+        "Nondlela",
+        "Nonduma",
+        "Nongalaza",
+        "Nongalo",
+        "Nonkosi",
+        "Nonkululeko",
+        "Nontanda",
+        "Nontuli",
+        "Nonyana",
+        "Nowanqa",
+        "Nozulu",
+        "Nqumela",
+        "Nsele",
+        "Nsibande",
+        "Nsibanyoni",
+        "Nsindane",
+        "Nsukuza",
+        "Ntaka",
+        "Ntanzi",
+        "Ntenga",
+        "Ntsele",
+        "Ntamonde",
+        "Ntshangase",
+        "Ntshalintshali",
+        "Ntshingila",
+        "Ntshiza",
+        "Ntombela",
+        "Ntuli",
+        "Nxamalala",
+        "Nxasana",
+        "Nxele",
+        "Nxumalo",
+        "Nyazitla",
+        "Nyambose",
+        "Nyanda",
+        "Nyandeni",
+        "Nyathi",
+        "Nyawo",
+        "Nyawokhulu",
+        "Nyawose",
+        "Nyembe",
+        "Nyembezi",
+        "Nyide",
+        "Nyokayebululu",
+        "Nyongwana",
+        "Nzama",
+        "Nzamela",
+        "Nzima",
+        "Nzimande",
+        "Nzimase",
+        "Nzuza",
+        "Onjengenyamazane",
+        "Phakathi",
+        "Phakathwayo",
+        "Phathwayo",
+        "Phetha",
+        "Phethela",
+        "Phewa",
+        "Phikela",
+        "Phingoshe",
+        "Phoseka",
+        "Phoswa",
+        "Phungula",
+        "Phuthini",
+        "Qomazitha",
+        "Qwabe",
+        "Sabela",
+        "Sabelo",
+        "Sameya",
+        "Sangwani",
+        "Sangweni",
+        "Sembathwa",
+        "Sengwayo",
+        "Shabane",
+        "Shabane",
+        "Shabalala",
+        "Shabangu",
+        "Shamase",
+        "Shandu",
+        "Shange",
+        "Shangase",
+        "Shazi",
+        "Shengele",
+        "Shelembe",
+        "Shezi",
+        "Dlaba",
+        "Shibase",
+        "Shinga",
+        "Shoba",
+        "Shombela",
+        "Shoyisa",
+        "Shozi",
+        "Sibanda",
+        "Sibalukhulu",
+        "Sibaya",
+        "Sibeko",
+        "Sibisi",
+        "Sibiya",
+        "Sigagu",
+        "Sigegede",
+        "Sibhene",
+        "Sibindi",
+        "Sijadu",
+        "Sikhakhane",
+        "Sikhosana",
+        "Sikobi",
+        "Sikhunyana",
+        "Sikwayo",
+        "Silangwe",
+        "Simelane",
+        "Sithenjwa",
+        "Sithole",
+        "Sithombo",
+        "Sithuli",
+        "Sitolotolo",
+        "Sishangwe",
+        "Sishi",
+        "Sishiya",
+        "Siwele",
+        "Siyaya",
+        "Siyeshe",
+        "Soduba",
+        "Sokhela",
+        "Sokhulu",
+        "Sokhwebula",
+        "Somboni",
+        "Somfula",
+        "Sompisi",
+        "Sandanezwe",
+        "Sondini",
+        "Sondisa",
+        "Sontuli",
+        "Songiya",
+        "Sonqandile",
+        "Sothole",
+        "Sotobe",
+        "Swazi",
+        "Tiba",
+        "Thabethe",
+        "Thabizolo",
+        "Thango",
+        "Thabekhulu",
+        "Thela",
+        "Thembekwayo",
+        "Thembela",
+        "Thenjwayo",
+        "Thobeni",
+        "Thole",
+        "Thoyana",
+        "Tukane",
+        "Thuliswayo",
+        "Thumbela",
+        "Thumbeza",
+        "Thusi",
+        "Thusini",
+        "Thwala",
+        "Wanda",
+        "Wasendlunkulu",
+        "Wela",
+        "Weza",
+        "Vilakazi",
+        "Vabaza",
+        "Vangisa",
+        "Vezi",
+        "Vumisa",
+        "Vundla",
+        "Vunisa",
+        "Xaba",
+        "Xala",
+        "Xhakaza",
+        "Ximba",
+        "Xolo",
+        "Xulu",
+        "Yengwa",
+        "Yengwayo",
+        "Yei",
+        "Yeyeye",
+    )
+
+    # last names are not sex dependant
+    last_names_female = last_names_male
+    last_names = last_names_male + last_names_female
+
+    prefixes_female = (
+        "Mrs.",
+        "Ms.",
+        "Miss",
+        "Dr.",
+        "Nkosikazi",
+        "Nkosazana",
+        "Mama",
+        "Dade",
+    )
+
+    prefixes_male = ("Mr.", "Dr.", "Mnumzane", "Baba", "Bhuti")


Test patch:
diff --git a/tests/providers/test_person.py b/tests/providers/test_person.py
index 2ca83a43..5002f5a9 100644
--- a/tests/providers/test_person.py
+++ b/tests/providers/test_person.py
@@ -33,6 +33,7 @@ from faker.providers.person.ta_IN import Provider as TaINProvider
 from faker.providers.person.th_TH import Provider as ThThProvider
 from faker.providers.person.zh_CN import Provider as ZhCNProvider
 from faker.providers.person.zh_TW import Provider as ZhTWProvider
+from faker.providers.person.zu_ZA import Provider as ZuZAProvider
 
 
 class TestAr(unittest.TestCase):
@@ -1190,3 +1191,86 @@ class TestGaIE(TestEnIE):
         self.fake = Faker("ga-ie")
         self.provider = GaIEProvider
         Faker.seed(0)
+
+
+class TestZuZa(unittest.TestCase):
+    def setUp(self):
+        self.fake = Faker("zu_ZA")
+        Faker.seed(0)
+
+    def test_last_name(self):
+        """
+        Test the generation of Zulu last names.
+        """
+        # There's no gender-specific last name in Zulu.
+        self.assertTrue(hasattr(ZuZAProvider, "last_names_male"))
+        self.assertTrue(hasattr(ZuZAProvider, "last_names_female"))
+
+        # All last names apply to all genders.
+        self.assertTrue(hasattr(ZuZAProvider, "last_names"))
+
+        # General last name.
+        name = self.fake.last_name()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.last_names)
+
+        # Females last name.
+        name = self.fake.last_name_female()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.last_names)
+
+        # Male last name.
+        name = self.fake.last_name_male()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.last_names)
+
+    def test_first_name(self):
+        """
+        Test the generation of Zulu first names.
+        """
+        # General first name.
+        name = self.fake.first_name()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.first_names)
+
+        # Female first name.
+        name = self.fake.first_name_female()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.first_names)
+        self.assertIn(name, ZuZAProvider.first_names_female)
+
+        # Male first name.
+        name = self.fake.first_name_male()
+        self.assertIsInstance(name, str)
+        self.assertIn(name, ZuZAProvider.first_names)
+        self.assertIn(name, ZuZAProvider.first_names_male)
+
+    def test_full_name(self):
+        """
+        Test the generation of full Zulu names.
+        """
+        # Full name.
+        name = self.fake.name()
+        self.assertIsInstance(name, str)
+
+        full_name_parts = name.split()
+
+        if len(full_name_parts) == 2:
+            first_name = full_name_parts[0]
+            last_name = full_name_parts[1]
+            self.assertIn(first_name, ZuZAProvider.first_names)
+            self.assertIn(last_name, ZuZAProvider.last_names)
+        elif len(full_name_parts) == 3:
+            prefix = full_name_parts[0]
+            first_name = full_name_parts[1]
+            last_name = full_name_parts[2]
+
+            self.assertIn(prefix, ZuZAProvider.prefixes_female + ZuZAProvider.prefixes_male)
+            self.assertIn(first_name, ZuZAProvider.first_names)
+            self.assertIn(last_name, ZuZAProvider.last_names)
+        else:
+            raise AssertionError("Invalid number of name parts. Expected 2 or 3.")
+
+
+if __name__ == "__main__":
+    unittest.main()