Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve et_EE locale (add Address, Company, Payment, Internet) #847

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 149 additions & 0 deletions src/Provider/et_EE/Address.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
<?php

namespace Faker\Provider\et_EE;

class Address extends \Faker\Provider\Address
{
protected static $buildingNumber = ['%##', '%#', '%', '%/%', '%#[abc]', '%[abc]'];

protected static $streetSuffixLong = [
'tänav', 'puiestee', 'maantee', 'tee',
];
protected static $streetSuffixShort = [
'tn.', 'pst.', 'mnt.'
];

/**
* @var array
*
* @see https://et.wikipedia.org/wiki/Eesti_linnad#Eesti_omavalitsuslike_linnade_loend
*/
protected static $cityNames = [
'Abja-Paluoja', 'Antsla',
'Elva',
'Haapsalu',
'Jõgeva', 'Jõhvi',
'Kallaste', 'Karksi-Nuia', 'Kehra', 'Keila', 'Kilingi-Nõmme', 'Kiviõli', 'Kohtla-Järve', 'Kunda', 'Kuressaare', 'Kärdla',
'Lihula', 'Loksa',
'Maardu', 'Mustvee', 'Mõisaküla',
'Narva', 'Narva-Jõesuu',
'Otepää',
'Paide', 'Paldiski', 'Pärnu', 'Põltsamaa', 'Põlva', 'Püssi',
'Rakvere', 'Rapla', 'Räpina',
'Saue', 'Sillamäe', 'Sindi',
'Tallinn', 'Tamsalu', 'Tapa', 'Tartu', 'Tõrva', 'Türi',
'Valga', 'Viljandi', 'Võhma', 'Võru'
];

/**
* @var array
*
* @see https://et.wikipedia.org/wiki/Maakond
*/
protected static $state = [
'Harjumaa', 'Hiiumaa',
'Ida-Virumaa',
'Järvamaa', 'Jõgevamaa',
'Läänemaa', 'Lääne-Virumaa',
'Pärnumaa', 'Põlvamaa',
'Raplamaa',
'Saaremaa',
'Tartumaa',
'Valgamaa', 'Viljandimaa', 'Võrumaa'
];

/**
* @var array
*
* @see https://et.wikipedia.org/wiki/Riikide_loend
*/
protected static $country = [
"Afganistan", "Ahvenamaa", "Albaania", "Alžeeria", "Ameerika Samoa", "Ameerika Ühendriigid", "Andorra", "Angola", "Anguilla", "Antarktika", "Antigua ja Barbuda", "Araabia Ühendemiraadid", "Argentina", "Armeenia", "Aruba", "Ascensioni saar", "Aserbaidžaan", "Austraalia", "Austria",
"Bahama", "Bahrein", "Bangladesh", "Barbados", "Belau", "Belgia", "Belize", "Benin", "Bermuda", "Bhutan", "Boliivia", "Bosnia ja Hertsegoviina", "Botswana", "Bouvet’ saar", "Brasiilia", "Briti India ookeani ala", "Briti Neitsisaared", "Brunei", "Bulgaaria", "Burkina Faso", "Burundi",
"Ceuta ja Melilla", "Clippertoni saar", "Colombia", "Cooki saared", "Costa Rica", "Côte d’Ivoire", "Curaçao",
"Diego Garcia", "Djibouti", "Dominica", "Dominikaani Vabariik",
"Ecuador", "Eesti", "Egiptus", "Ekvatoriaal-Guinea", "El Salvador", "Eritrea", "Etioopia",
"Falklandi saared", "Fidži", "Filipiinid", "Fääri saared",
"Gabon", "Gambia", "Ghana", "Gibraltar", "Grenada", "Gruusia", "Gröönimaa", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana",
"Haiti", "Heardi ja McDonaldi saared", "Hiina", "Hispaania", "Holland", "Hollandi Kariibi mere saared", "Honduras", "Hongkongi erihalduspiirkond", "Horvaatia",
"Ida-Timor", "Iirimaa", "Iisrael", "India", "Indoneesia", "Iraak", "Iraan", "Island", "Itaalia",
"Jaapan", "Jamaica", "Jeemen", "Jersey", "Jordaania", "Jõulusaar",
"Kaimanisaared", "Kambodža", "Kamerun", "Kanaari saared", "Kanada", "Kasahstan", "Katar", "Keenia", "Kesk-Aafrika Vabariik", "Kiribati", "Komoorid", "Kongo DV", "Kongo Vabariik", "Kookossaared", "Kosovo", "Kreeka", "Kuuba", "Kuveit", "Kõrgõzstan", "Küpros",
"Laos", "Leedu", "Lesotho", "Libeeria", "Liechtenstein", "Liibanon", "Liibüa", "Luksemburg", "Lõuna-Aafrika Vabariik", "Lõuna-Georgia ja Lõuna-Sandwichi saared", "Lõuna-Korea", "Lõuna-Sudaan", "Läti", "Lääne-Sahara",
"Macau erihalduspiirkond", "Madagaskar", "Malaisia", "Malawi", "Maldiivid", "Mali", "Malta", "Mani saar", "Maroko", "Marshalli Saared", "Martinique", "Mauritaania", "Mauritius", "Mayotte", "Mehhiko", "Mikroneesia", "Moldova", "Monaco", "Mongoolia", "Montenegro", "Montserrat", "Mosambiik", "Myanmar (Birma)",
"Namiibia", "Nauru", "Nepal", "Nicaragua", "Nigeeria", "Niger", "Niue", "Norfolk", "Norra",
"Omaan",
'Paapua Uus-Guinea', 'Pakistan', 'Palestiina alad', 'Panama', 'Paraguay', 'Peruu', 'Pitcairni saared', 'Poola', 'Portugal', 'Prantsuse Guajaana', 'Prantsuse Lõunaalad', 'Prantsuse Polüneesia', 'Prantsusmaa', 'Puerto Rico', 'Põhja-Korea', 'Põhja-Makedoonia', 'Põhja-Mariaanid',
'Réunion', 'Roheneemesaared', 'Rootsi', 'Rumeenia', 'Rwanda',
'Saalomoni Saared', 'Saint Helena', 'Saint Kitts ja Nevis', 'Saint Lucia', 'Saint Vincent ja Grenadiinid', 'Saint-Barthélemy', 'Saint-Martin', 'Saint-Pierre ja Miquelon', 'Saksamaa', 'Sambia', 'Samoa', 'San Marino', 'São Tomé ja Príncipe', 'Saudi Araabia', 'Seišellid', 'Senegal', 'Serbia', 'Sierra Leone', 'Singapur', 'Sint Maarten', 'Slovakkia', 'Sloveenia', 'Somaalia', 'Soome', 'Sri Lanka', 'Sudaan', 'Suriname', 'Svaasimaa', 'Svalbard ja Jan Mayen', 'Süüria',
'Šveits',
'Zimbabwe', 'Taani', 'Tadžikistan', 'Tai', 'Taiwan', 'Tansaania', 'Togo', 'Tokelau', 'Tonga', 'Trinidad ja Tobago', 'Tristan da Cunha', 'Tšaad', 'Tšehhi', 'Tšiili', 'Tuneesia', 'Turks ja Caicos', 'Tuvalu', 'Türgi', 'Türkmenistan',
'Uganda', 'Ukraina', 'Ungari', 'Uruguay', 'USA Neitsisaared', 'Usbekistan', 'Uus-Kaledoonia', 'Uus-Meremaa',
'Valgevene', 'Vanuatu', 'Vatikan', 'Venemaa', 'Venezuela', 'Vietnam',
'Wallis ja Futuna',
'Ühendkuningriik', 'Ühendriikide hajasaared'
];

/**
* @var array
*
* @see subset of https://et.wikipedia.org/wiki/Kategooria:Eesti_t%C3%A4navate_loendid
*/
protected static array $street = [
'Pikk', 'Lai', 'Rüütli', 'Vabaduse', 'Narva',
'Tartu', 'Mustamäe', 'Pärnu', 'Viru', 'Harju',
'Uus', 'Kinga', 'Aia', 'Mere', 'Supeluse', 'Hommiku', 'Päikese',
'Juhkentali', 'Kadriorg', 'Magdaleena', 'Tondi', 'Sõle',
'Kopli', 'Telliskivi', 'Suur-Karja', 'Väike-Karja', 'Roosikrantsi',
'Gonsiori', 'Tõnismägi', 'Liivalaia', 'Luise', 'Tatari'
];

protected static $cityFormats = [
'{{cityName}}',
];

protected static $streetAddressFormats = [
'{{streetName}} talu',
'{{streetName}} {{buildingNumber}}',
'{{streetName}} {{streetSuffixShort}} {{buildingNumber}}',
'{{streetName}} {{streetSuffixLong}} {{buildingNumber}}',
];

protected static $addressFormats = [
"{{streetAddress}}\n{{postcode}} {{city}}",
"{{streetAddress}}\n{{postcode}} {{state}}",
];

public function cityName()
{
return static::randomElement(static::$cityNames);
}

public function streetName()
{
return static::randomElement(static::$street);
}

public function streetSuffixShort()
{
return static::randomElement(static::$streetSuffixShort);
}

public function streetSuffixLong()
{
return static::randomElement(static::$streetSuffixLong);
}

/**
* @example 'Harjumaa'
*/
public static function state()
{
return static::randomElement(static::$state);
}

public static function buildingNumber(): string
{
return static::regexify(self::numerify(static::randomElement(static::$buildingNumber)));
}
}
236 changes: 236 additions & 0 deletions src/Provider/et_EE/Company.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
<?php

namespace Faker\Provider\et_EE;

class Company extends \Faker\Provider\Company
{
protected static $formats = [
'{{lastName}} {{companySuffix}}',
'{{lastName}} {{companyNameElement}} {{companySuffix}}',
'FIE {{firstName}} {{lastName}}',
'{{companySuffix}} {{lastName}} {{companyNameElement}}',
'{{companySuffix}} {{firstName}} {{lastName}} {{companyNameElement}}',
];

protected static array $companyNameElements = [
'Agentuur', 'Arendus',
'Disain',
'Grupp',
'Haldus', 'Holding', 'Hooldus',
'Invest', 'Investeeringud',
'Kauplused', 'Kinnistud',
'Majutus', 'Marketing', 'Mets', 'Müük',
'Paber',
'Reklaam', 'Remont',
'Teenused',
'Tooted', 'Tsement', 'Tööstus', 'Turundus',
'Ühing', 'Ühistu',
'Valdus', 'Valdused'
];

protected static $companySuffix = ['AS', 'OÜ', 'MTÜ', 'UÜ', 'TÜ', 'SA'];

public static function companyNameElement(): string
{
return static::randomElement(static::$companyNameElements);
}

/**
* @example 'Edasijõudnud 4.põlvkonna adapter'
*/
protected static $catchPhraseWords = [
[
'Avatud arhitektuuriga', 'Avatud lähtekoodiga', 'Automatiseeritud',
'Eelajalooline', 'Edasijõudnud', 'Eesrindlik',
'Funktsioonipõhine',
'Hajutatud', 'Horisontaalne',
'Innovatiivne', 'Integreeritud', 'Intuitiivne', 'Iseseisev',
'Jagatav', 'Juhtiv', 'Jälgitav',
'Kasutajasõbralik', 'Kasutajakeskne', 'Keskendunud', 'Kliendikeskne', 'Kloonitud', 'Kohandatav', 'Kohanduv', 'Kohustuslik', 'Konfigureeritav', 'Kuluefektiivne', 'Kvaliteetne', 'Kvaliteedikeskne',
'Laiendatud', 'Lukustatav',
'Mitmekanaliline', 'Mitmekesine', 'Mitmekihiline', 'Mitmepoolne', 'Mitmetasandiline',
'Näost-näkku',
'Optimeeritud', 'Orgaaniline', 'Organiseeritud',
'Pikendatud', 'Polariseeritud', 'Prognoositav', 'Proaktiivne', 'Progressiivne', 'Püsiv', 'Põhiline',
'Rakendatud', 'Ristplatvormiline', 'Rohujuure tasandil',
'Sujuv', 'Suurendatud', 'Sügav', 'Sisuline',
'Tasakaalustatud', 'Täielikult seadistatav', 'Töökorras', 'Tsentraliseeritud', 'Turvaline',
'Universaalne',
'Valikuline', 'Visioonipõhine', 'Vähendatud',
'Ühilduv', 'Ühtlane', 'Üldine',
'Äriklassi',
],
[
'24-tunnine', '24/7', '3. põlvkonna', '4. põlvkonna', '5. põlvkonna', '6. põlvkonna',
'aktiveeriv', 'analüüsiv', 'asümmeetriline', 'asünkroonne',
'eraldi', 'esiplaanil', 'esitav',
'globaalne',
'heuristiline', 'hõlmav', 'hübriid',
'interaktiivne',
'järkjärguline', 'juhtiv', 'juhtivkant',
'kahepoolne', 'klient-server', 'klienti juhtiv', 'koherentne', 'koosnev', 'kontekstipõhine', 'kohalik',
'logistiline',
'mahe', 'maksimeeritud', 'meetodiline', 'mobiilne', 'modulaarne', 'motiveeriv', 'multimeedia', 'mitmetahuline', 'mitmikseisundiline', 'mõjukas', 'mõõdetamatu',
'neutraalne', 'nulltolerantsiga',
'objektipõhine', 'optimaalne', 'optimeeriv',
'pühendunud',
'radikaalne', 'reaalajas', 'regionaalne', 'reageeriv', 'riiklik', 'selge mõtlemisega', 'sisupõhine', 'skaleeritav', 'suhtumispõhine', 'suunduv',
'täisulatuses', 'täppishäälestatud', 'tõusuteel', 'tühistamata',
'vajaduspõhine', 'vastastikkune', 'värsket mõtlemisega', 'võimendav', 'võrgustikuga ühendatud', 'ühtlane',
],
[
'adapter', 'ahel', 'algatus', 'algoritm', 'analüsaator', 'analüüs', 'andmebaas', 'andmehoidla', 'arhitektuur', 'arhiiv', 'avatud arhitektuur', 'avatud süsteem', 'ekstranet', 'ekstranet', 'emulatsioon',
'funktsioon',
'grupitarkvara',
'hierarhia', 'hinnakujundusstruktuur',
'hübriid',
'internetilahendus',
'juhtum',
'kasutamine', 'kasutajaliides', 'käsukogumik', 'käsurida', 'käsitöö', 'kliendilojaalsus', 'klienditugi', 'kohtvõrk', 'kompleks', 'kontseptsioon', 'konglomeraat', 'krüpteerimine',
'lahendus', 'lähenemine', 'liides', 'ligipääs', 'logistika',
'maatriks', 'massiiv', 'migratsioon', 'moderaator', 'mudel', 'mõjuanalüüs', 'mõõdik', 'mõõdistus',
'neuraalvõrk', 'navigatsioon', 'nulltolerants',
'orkestreerimine',
'paigaldus', 'paindlikkus', 'paradigma', 'paralleel', 'plokiahel', 'poliitika', 'portaal', 'programmeerimine', 'progress', 'projekt', 'projektsioon', 'protokoll', 'protsessi parandamine', 'püsivara',
'raam', 'raamistik', 'rakendus', 'riistvara', 'sisevõrk', 'strateegia', 'struktuur', 'sünergia', 'süsteemi mootor', 'süsteem',
'tarkvara', 'teenindustugi', 'tugi', 'turvatud ühendus',
'valik', 'väljakutse', 'võimekus', 'võrguühendus',
],
];

/**
* @example 'turgude skaleeritav arendamine'
*/
protected static $bsWords = [
[
'algatuste', 'arhitektuuri',
'e-kaubanduse', 'e-kaubanduse', 'e-teenuste', 'e-äri',
'funktsioonide',
'kasutajate', 'kogemuste', 'kogukondade', 'kokkupuute', 'lahenduste',
'liidese',
'metoodika', 'mudelite', 'mõõdikute',
'niši',
'paradigmade', 'platvormi', 'portaali',
'rakenduste', 'ribalaiuse',
'sisu', 'skeemide', 'suhete', 'sünergia', 'süsteemide',
'taristu', 'tarneahelate', 'tegevuskava', 'tehnoloogia', 'tulemuste', 'turgude',
'väravate',
'veebiteenuse', 'veebivalmiduse', 'võrgu',
],
[
'24/365', '24/7',
'avatud lähtekoodiga',
'B2B', 'B2C',
'dünaamiline',
'eesrindlik', 'efektiivne',
'granulaarne',
'hajutatud', 'holistiline',
'integreeritud', 'intuitiivne', 'interaktiivne',
'juhtmevaba', 'järgmise põlvkonna',
'kaasahaarav', 'karbist välja', 'kasutajakeskne', 'kleepuv', 'koostööpõhine', 'kohandatud',
'laiendatav', 'läbipaistev', 'lisandväärtuse', 'lõplik',
'mahe', 'maailmatasemel', 'magnetiline', 'missioonikriitiline', 'mõjukas',
'parim', 'puust ja punaseks', 'proaktiivne',
'reaalajas', 'revolutsiooniline', 'ristmeedia', 'ristplatvormiline',
'sünergiline', 'skaleeritav', 'strateegiline',
'tipptasemel', 'tipptehnoloogiline', 'tugev',
'üks-ühele', 'üldlevinud', 'ülemaailmne',
'virtuaalne', 'viiruslik', 'võrgupõhine', 'võtmed-kätte', 'vertikaalne',
],
[
'arendamine', 'arhitektuur',
'brändimine',
'genereerimine',
'hõlbustamine',
'inkubatsioon', 'integreerimine', 'iteratsioon',
'kasutamine', 'kasvamine', 'kiirendamine', 'koondamine', 'kujundamine',
'lahendus', 'lahendamine', 'leiutamine',
'maksimeerimine', 'maatriks', 'määratlemine',
'omaksvõtmine', 'optimeerimine', 'orkestreerimine',
'rahaks tegemine', 'rakendamine',
'sihtimine', 'skaala', 'strateegia planeerimine', 'sündikaat', 'sünteesimine',
'taaskasutus', 'tegelemine', 'tulemus', 'toimetamine', 'toode', 'tootmine',
'uuendamine', 'uuendus',
'vahendamine', 'võimaldamine', 'võrdlus', 'võrk', 'visualiseerimine', 'volitamine', 'voogedastamine',
'üleminek', 'ümbertöötlemine',
],
];

/**
* @example 'Robust full-range hub'
*/
public function catchPhrase()
{
$result = [];

foreach (static::$catchPhraseWords as &$word) {
$result[] = static::randomElement($word);
}

return implode(' ', $result);
}

/**
* @example 'integrate extensible convergence'
*/
public function bs()
{
$result = [];

foreach (static::$bsWords as &$word) {
$result[] = static::randomElement($word);
}

return implode(' ', $result);
}

public static function registrationCode() : string
{
return static::randomNumber(8, true);
}

/**
* EE + 8 numbers + a modulus 7-3-1 check digit
*
* @see https://www.riigiteataja.ee/akt/186654
*
* @return string
*/
public static function vat() : string
{
$baseNumber = static::randomNumber(8, true);

return 'EE' . $baseNumber . static::calculateModulus731($baseNumber);
}

/**
* Calculates the last check digit of a reference number.
*
* This is done according to a 7-3-1 algorithm.
*/
protected static function calculateModulus731(string $number): int
{
$multipliers = [7, 3, 1];
$multiplierIndex = 0;
$sum = 0;

$baseNumber = (string) $number;

for ($i = strlen($baseNumber) - 1; $i >= 0; $i--) {
if ($multiplierIndex === 3) {
$multiplierIndex = 0;
}

$sum += ((int) ($baseNumber[$i])) * $multipliers[$multiplierIndex];
$multiplierIndex++;
}

$checkDigit = 10 - $sum % 10;

if ($checkDigit === 10) {
$checkDigit = 0;
}

return $checkDigit;
}
}
9 changes: 9 additions & 0 deletions src/Provider/et_EE/Internet.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace Faker\Provider\et_EE;

class Internet extends \Faker\Provider\Internet
{
protected static $freeEmailDomain = ['gmail.com', 'yahoo.com', 'hotmail.com', 'hot.ee', 'email.ee'];
protected static $tld = ['com', 'com', 'com', 'com', 'com', 'com', 'biz', 'info', 'net', 'org', 'ee'];
}
Loading