Skip to content
This repository has been archived by the owner on Dec 11, 2020. It is now read-only.

Swedish translation #346

Closed
wants to merge 24 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
153 changes: 153 additions & 0 deletions src/Faker/Provider/sv_SE/Address.php

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions src/Faker/Provider/sv_SE/Company.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Faker\Provider\sv_SE;

/**
* @author Nathanael Björkgård
*/
class Company extends \Faker\Provider\Company
{
protected static $formats = array(
'{{lastName}} {{companySuffix}}',
'{{lastName}} {{companySuffix}}',
'{{lastName}} {{companySuffix}}',
'{{firstName}} {{lastName}} {{companySuffix}}',
'{{lastName}} & {{lastName}} {{companySuffix}}',
'{{lastName}} & {{lastName}}',
'{{lastName}} och {{lastName}}',
'{{lastName}} och {{lastName}} {{companySuffix}}'
);

protected static $companySuffix = array('AB', 'HB');
}
68 changes: 68 additions & 0 deletions src/Faker/Provider/sv_SE/Internet.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

namespace Faker\Provider\sv_SE;

/**
* @author Nathanael Björkgård
*/
class Internet extends \Faker\Provider\Internet
{
/**
* @var array Some safe email TLD.
*/
protected static $safeEmailTld = array(
'org', 'com', 'net', 'se', 'se', 'se',
);

/**
* @var array Some email domains in Denmark.
*/
protected static $freeEmailDomain = array(
'gmail.com', 'yahoo.com', 'yahoo.se', 'hotmail.com', 'hotmail.se', 'mail.se', 'live.se'
);

/**
* @var array Some TLD.
*/
protected static $tld = array(
'com', 'com', 'com', 'biz', 'info', 'net', 'org', 'se', 'se', 'se',
);

/**
* Converts Danish characters to their ASCII representation
*
* @return string
*/
private static function toAscii($string)
{
$from = array('å', 'ö', 'ä', 'Å', 'Ö', 'Ä');
$to = array('a', 'o', 'a', 'A', 'O', 'A');

return str_replace($from, $to, $string);
}

/**
* @example 'jeppe'
* @return string
*/
public function userName()
{
$format = static::randomElement(static::$userNameFormats);

return static::toLower(static::toAscii(static::bothify($this->generator->parse($format))));
}

/**
* @example 'jensen.se'
* @return string
*/
public function domainWord()
{
$company = $this->generator->format('company');
$companyElements = explode(' ', $company);
$company = $companyElements[0];
$company = preg_replace('/\W/u', '', $company);

return static::toLower(static::toAscii($company));
}
}
22 changes: 22 additions & 0 deletions src/Faker/Provider/sv_SE/Payment.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Faker\Provider\sv_SE;

/**
* @author Nathanael Björkgård
*/
class Payment extends \Faker\Provider\Payment
{
/**
* International Bank Account Number (IBAN)
* @link http://en.wikipedia.org/wiki/International_Bank_Account_Number
* @param string $prefix for generating bank account number of a specific bank
* @param string $countryCode ISO 3166-1 alpha-2 country code
* @param integer $length total length without country code and 2 check digits
* @return string
*/
public static function bankAccountNumber($prefix = '', $countryCode = 'SE', $length = null)
{
return static::iban($countryCode, $prefix, $length);
}
}
181 changes: 181 additions & 0 deletions src/Faker/Provider/sv_SE/Person.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
<?php

namespace Faker\Provider\sv_SE;

/**
* @author Nathanael Björkgård
*/
class Person extends \Faker\Provider\Person
{
/**
* @var array Swedish person name formats.
*/
protected static $maleNameFormats = array(
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{lastName}} {{lastName}}',
'{{firstName}} {{lastName}}-{{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}-{{lastName}}',
);

protected static $femaleNameFormats = array(
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}',
'{{firstName}} {{lastName}} {{lastName}}',
'{{firstName}} {{lastName}}-{{lastName}}',
'{{firstName}} {{firstName}} {{lastName}}-{{lastName}}',
);

/**
* @var array Danish first names.
*/
protected static $firstNameMale = array(
'Abraham', 'Adam', 'Adolf', 'Adrian', 'Agaton', 'Agne', 'Albert', 'Albin', 'Aldor', 'Alex', 'Alexander', 'Alexis', 'Alexius', 'Alf', 'Alfons', 'Alfred', 'Algot', 'Allan', 'Alrik', 'Alvar', 'Alve', 'Amandus', 'Anders', 'André', 'Andreas', 'Anselm', 'Anshelm', 'Antero', 'Anton', 'Antonius', 'Arne', 'Arnold', 'Aron', 'Arthur', 'Artur', 'Arvid', 'Assar', 'Astor', 'August', 'Augustin', 'Axel',
'Bengt', 'Bengt-Göran', 'Bengt-Olof', 'Bengt-Åke', 'Benny', 'Berndt', 'Berne', 'Bernhard', 'Bernt', 'Bert', 'Berth', 'Berthold', 'Bertil', 'Bill', 'Billy', 'Birger', 'Bjarne', 'Björn', 'Bo', 'Boris', 'Bror', 'Bruno', 'Brynolf', 'Börje',
'Carl', 'Carl-Axel', 'Carl-Erik', 'Carl-Gustaf', 'Carl-Gustav', 'Carl-Johan', 'Charles', 'Christer', 'Christian', 'Claes', 'Claes-Göran', 'Clarence', 'Clas', 'Conny', 'Crister', 'Curt',
'Dag', 'Dan', 'Daniel', 'David', 'Dennis', 'Dick', 'Donald', 'Douglas',
'Ebbe', 'Eddie', 'Eddy', 'Edgar', 'Edmund', 'Edvard', 'Edvin', 'Efraim', 'Egon', 'Eilert', 'Einar', 'Eje', 'Ejnar', 'Elias', 'Elis', 'Ellert', 'Elmer', 'Elof', 'Elon', 'Elov', 'Elving', 'Elvir', 'Emanuel', 'Emil', 'Enar', 'Engelbert', 'Engelbrekt', 'Enok', 'Erhard', 'Eric', 'Erik', 'Erland', 'Erling', 'Ernfrid', 'Ernst', 'Esbjörn', 'Eskil', 'Eugén', 'Eugen', 'Evald', 'Eve', 'Evert',
'Fabian', 'Felix', 'Ferdinand', 'Filip', 'Fingal', 'Finn', 'Folke', 'Frank', 'Frans', 'Franz', 'Fred', 'Fredrik', 'Fridolf', 'Friedrich', 'Fritiof', 'Fritjof', 'Frits', 'Fritz',
'Gabriel', 'Georg', 'George', 'Gerhard', 'Gert', 'Gideon', 'Gilbert', 'Gillis', 'Glenn', 'Gottfrid', 'Gotthard', 'Greger', 'Gudmund', 'Gunder', 'Gunnar', 'Gustaf', 'Gustav', 'Göran', 'Görgen', 'Gösta', 'Göte',
'Hadar', 'Halvar', 'Halvard', 'Hans', 'Hans-Erik', 'Hans-Olof', 'Hans-Åke', 'Harald', 'Hardy', 'Harry', 'Hartvig', 'Hasse', 'Heinrich', 'Heinz', 'Helge', 'Helmer', 'Henning', 'Henric', 'Henrik', 'Henry', 'Herbert', 'Heribert', 'Herman', 'Hilbert', 'Hilding', 'Hilmer', 'Hjalmar', 'Holger', 'Holmfrid', 'Hubert', 'Hugo', 'Håkan',
'Inge', 'Ingemar', 'Ingmar', 'Ingvald', 'Ingvar', 'Isak', 'Isidor', 'Ivan', 'Ivar',
'Jack', 'Jacob', 'Jakob', 'James', 'Jan', 'Janne', 'Jan-Eric', 'Jan-Erik', 'Jan-Olof', 'Jan-Olov', 'Jan-Ove', 'Jan-Åke', 'Jarl', 'Jean', 'Jens', 'Jerker', 'Jerry', 'Jesper', 'Jim', 'Jimmy', 'Joachim', 'Joacim', 'Joakim', 'Joel', 'Johan', 'Johannes', 'John', 'Johnny', 'Johny', 'Jon', 'Jonas', 'Jonny', 'Josef', 'Juhani', 'Julius', 'Justus', 'Jöns', 'Jörgen',
'Kai', 'Kaj', 'Kalevi', 'Karl', 'Karl-Axel', 'Karl-Erik', 'Karl-Gunnar', 'Karl-Gustaf', 'Karl-Gustav', 'Karl-Johan', 'Kennert', 'Kennet', 'Kenneth', 'Kenny', 'Kent', 'Kenth', 'Kjell', 'Kjell-Åke', 'Klas', 'Knut', 'Konrad', 'Konstantin', 'Krister', 'Kristian', 'Kristoffer', 'Kurt', 'Kåre',
'Lage', 'Lambert', 'Lars', 'Lars-Eric', 'Lars-Erik', 'Lars-Gunnar', 'Lars-Göran', 'Lars-Olof', 'Lars-Olov', 'Lars-Ove', 'Lars-Åke', 'Laurentius', 'Leander', 'Leif', 'Lennart', 'Leo', 'Leon', 'Leonard', 'Leopold', 'Levi', 'Levin', 'Linné', 'Linus', 'Lorentz', 'Louis', 'Ludvig',
'Magni', 'Magnus', 'Malkolm', 'Malte', 'Manfred', 'Manne', 'Marcus', 'Markus', 'Martin', 'Mathias', 'Mats', 'Matti', 'Mattias', 'Matts', 'Maurits', 'Mauritz', 'Max', 'Melker', 'Micael', 'Michael', 'Mickael', 'Mikael', 'Morgan', 'Måns', 'Mårten',
'Napoleon', 'Natanael', 'Nicklas', 'Niclas', 'Niklas', 'Nikolaus', 'Nils', 'Nils-Erik', 'Nore',
'Odd', 'Ola', 'Olaus', 'Olav', 'Olavi', 'Ole', 'Oliver', 'Olle', 'Olof', 'Olov', 'Orvar', 'Oscar', 'Oskar', 'Ossian', 'Osvald', 'Otto', 'Ove', 'Owe',
'Patric', 'Patrick', 'Patrik', 'Paul', 'Peder', 'Per', 'Percy', 'Per-Anders', 'Per-Arne', 'Per-Erik', 'Per-Ola', 'Per-Olof', 'Per-Olov', 'Per-Åke', 'Peter', 'Petrus', 'Petter', 'Pierre', 'Pontus', 'Pär',
'Ragnar', 'Ragnvald', 'Ralf', 'Ralph', 'Raymond', 'Reidar', 'Reine', 'Reinhold', 'Reino', 'Richard', 'Rickard', 'Rikard', 'Robert', 'Roger', 'Roine', 'Roland', 'Rolf', 'Ronald', 'Ronnie', 'Ronny', 'Roy', 'Ruben', 'Rudolf', 'Runar', 'Rune', 'Runo', 'Rutger',
'Salomon', 'Sam', 'Samuel', 'Sanfrid', 'Sebastian', 'Set', 'Seth', 'Seved', 'Severin', 'Sigfrid', 'Sigmund', 'Signar', 'Sigurd', 'Sigvard', 'Simon', 'Sivert', 'Sixten', 'Sonny', 'Staffan', 'Stanley', 'Stefan', 'Stellan', 'Sten', 'Stephan', 'Steve', 'Stig', 'Sture', 'Sune', 'Svante', 'Sven', 'Sven-Erik', 'Sven-Olof', 'Sven-Olov', 'Sven-Åke', 'Sverker', 'Sölve', 'Sören',
'Tage', 'Ted', 'Teodor', 'Theodor', 'Thomas', 'Thor', 'Thorbjörn', 'Thord', 'Thore', 'Thorsten', 'Thorvald', 'Thure', 'Tobias', 'Toivo', 'Tom', 'Tomas', 'Tommy', 'Tonny', 'Tony', 'Tor', 'Torbjörn', 'Tord', 'Tore', 'Torgny', 'Torkel', 'Torsten', 'Torvald', 'Tryggve', 'Ture', 'Tyko',
'Ulf', 'Ulrik', 'Uno', 'Urban',
'Valdemar', 'Valentin', 'Valfrid', 'Vallentin', 'Valter', 'Veine', 'Verner', 'Victor', 'Vidar', 'Viggo', 'Viking', 'Viktor', 'Vilgot', 'Vilhelm', 'Villiam', 'Villy', 'Vincent', 'Vitalis',
'Waldemar', 'Walter', 'Werner', 'Wilhelm', 'William', 'Willy',
'Yngve',
'Åke',
'Örjan', 'Östen'
);

protected static $firstNameFemale = array(
'Ada', 'Adela', 'Adele', 'Adéle', 'Adelia', 'Adina', 'Adolfina', 'Agda', 'Agnes', 'Agneta', 'Aina', 'Aino', 'Albertina', 'Alexandra', 'Alfhild', 'Alfrida', 'Alice', 'Alida', 'Ally', 'Alma', 'Alva', 'Amalia', 'Amanda', 'Andrea', 'Anette', 'Angela', 'Anita', 'Anja', 'Ann', 'Anna', 'Anna-Carin', 'Anna-Greta', 'Anna-Karin', 'Anna-Lena', 'Anna-Lisa', 'Anna-Maria', 'Anna-Stina', 'Anne', 'Anneli', 'Annelie', 'Annette', 'Anne-Charlotte', 'Anne-Marie', 'Anni', 'Annica', 'Annie', 'Annika', 'Annikki', 'Anny', 'Ann-Britt', 'Ann-Charlott', 'Ann-Charlotte', 'Ann-Christin', 'Ann-Christine', 'Ann-Katrin', 'Ann-Kristin', 'Ann-Louise', 'Ann-Margret', 'Ann-Mari', 'Ann-Marie', 'Ann-Sofi', 'Ann-Sofie', 'Antonia', 'Arvida', 'Asta', 'Astrid', 'Augusta', 'Aurora', 'Axelia', 'Axelina',
'Barbro', 'Beata', 'Beatrice', 'Beda', 'Berit', 'Bernhardina', 'Berta', 'Betty', 'Birgit', 'Birgitta', 'Blenda', 'Bodil', 'Boel', 'Borghild', 'Brita', 'Britt', 'Britta', 'Britt-Inger', 'Britt-Louise', 'Britt-Mari', 'Britt-Marie',
'Camilla', 'Carin', 'Carina', 'Carita', 'Carola', 'Carolina', 'Caroline', 'Catarina', 'Catharina', 'Cathrine', 'Catrin', 'Cecilia', 'Charlott', 'Charlotta', 'Charlotte', 'Christel', 'Christin', 'Christina', 'Christine', 'Clara', 'Clary', 'Constance', 'Cristina',
'Daga', 'Dagmar', 'Dagny', 'Daisy', 'Davida', 'Desideria', 'Desirée', 'Diana', 'Disa', 'Dora', 'Doris', 'Dorotea',
'Ebba', 'Edit', 'Edith', 'Edla', 'Eira', 'Eivor', 'Ejvor', 'Elaine', 'Eleonor', 'Eleonora', 'Elfrida', 'Elida', 'Elin', 'Elina', 'Elinor', 'Elisabet', 'Elisabeth', 'Elise', 'Ella', 'Ellen', 'Ellinor', 'Elly', 'Elma', 'Elna', 'Elsa', 'Else', 'Else-Marie', 'Elsi', 'Elsie', 'Elsy', 'Elvi', 'Elvira', 'Elvy', 'Emelia', 'Emerentia', 'Emilia', 'Emma', 'Emmy', 'Erika', 'Erna', 'Ester', 'Estrid', 'Ethel', 'Eufemia', 'Eugenia', 'Eva', 'Eva-Britt', 'Eva-Lena', 'Eva-Lotta', 'Eva-Marie', 'Evelina', 'Evelyn', 'Evy', 'Ewa',
'Fanny', 'Florence', 'Fredrika', 'Frida', 'Frideborg',
'Gabriella', 'Gerd', 'Gerda', 'Gertie', 'Gertrud', 'Gisela', 'Greta', 'Gudrun', 'Gull', 'Gullan', 'Gullbritt', 'Gulli', 'Gullvi', 'Gully', 'Gull-Britt', 'Gun', 'Gunborg', 'Gunbritt', 'Gunda', 'Gunhild', 'Gunilla', 'Gunn', 'Gunnel', 'Gunni', 'Gunvor', 'Gun-Britt', 'Gurli', 'Gustava', 'Gärd', 'Görel', 'Göta',
'Hanna', 'Harriet', 'Hedvig', 'Helen', 'Helén', 'Helena', 'Helene', 'Heléne', 'Helfrid', 'Helga', 'Helmi', 'Helny', 'Henny', 'Henrietta', 'Henriette', 'Herta', 'Hilda', 'Hildegard', 'Hildur', 'Hillevi', 'Hilma', 'Hjördis', 'Hulda',
'Ida', 'Ines', 'Inez', 'Inga', 'Ingalill', 'Inga-Britt', 'Inga-Lena', 'Inga-Lill', 'Inga-Lisa', 'Inga-Maj', 'Ingbritt', 'Ingeborg', 'Ingegerd', 'Ingegärd', 'Ingela', 'Inger', 'Ingrid', 'Ingvor', 'Ing-Britt', 'Ing-Mari', 'Ing-Marie', 'Iréne', 'Irene', 'Iris', 'Irma', 'Isabella',
'Jane', 'Janet', 'Jeanette', 'Jenny', 'Jessica', 'Johanna', 'Josefina', 'Judit', 'Judith', 'Julia', 'Juliana', 'Justina',
'Kaarina', 'Kajsa', 'Karin', 'Karina', 'Karla', 'Karola', 'Karolina', 'Katarina', 'Katharina', 'Katrin', 'Katrina', 'Kersti', 'Kerstin', 'Klara', 'Konstantia', 'Kornelia', 'Kristin', 'Kristina', 'Kristine',
'Laila', 'Laura', 'Leila', 'Lena', 'Leontina', 'Liisa', 'Lilian', 'Lill', 'Lillemor', 'Lillian', 'Lilly', 'Linda', 'Linnéa', 'Linnea', 'Lisa', 'Lisbet', 'Lisbeth', 'Liselott', 'Liselotte', 'Lise-Lott', 'Lise-Lotte', 'Lizzie', 'Lola', 'Louise', 'Lovisa', 'Lucia', 'Lydia',
'Madeleine', 'Madelene', 'Magda', 'Magdalena', 'Magnhild', 'Maj', 'Maja', 'Majbritt', 'Majken', 'Majlis', 'Majvor', 'Maj-Britt', 'Maj-Lis', 'Malin', 'Malvina', 'Margaret', 'Margareta', 'Margareth', 'Margaretha', 'Margit', 'Margita', 'Margot', 'Margret', 'Margreta', 'Mari', 'Maria', 'Mariana', 'Mariann', 'Marianne', 'Marie', 'Mariette', 'Marie-Louise', 'Marika', 'Marina', 'Marion', 'Marit', 'Marita', 'Mari-Ann', 'Marja', 'Marjatta', 'Marlene', 'Marta', 'Martha', 'Martina', 'Mary', 'Mathilda', 'Matilda', 'Maud', 'May', 'Mia', 'Mildred', 'Mimmi', 'Mirjam', 'Mona', 'Monica', 'Monika', 'Märit', 'Märta', 'Märtha',
'Naemi', 'Naima', 'Nancy', 'Nanna', 'Nanny', 'Natalia', 'Nelly', 'Nina', 'Nora',
'Olga', 'Olivia', 'Ottilia',
'Paula', 'Paulina', 'Pauline', 'Pernilla', 'Petra', 'Petronella', 'Pia',
'Ragna', 'Ragnhild', 'Rakel', 'Rebecka', 'Regina', 'Renée', 'Rigmor', 'Rita', 'Rosa', 'Rose', 'Rose-Marie', 'Rosita', 'Ros-Mari', 'Ros-Marie', 'Runa', 'Rut', 'Ruth',
'Sabina', 'Saga', 'Sally', 'Sara', 'Selma', 'Serafia', 'Sibylla', 'Sigbritt', 'Signe', 'Signhild', 'Sigrid', 'Siri', 'Siv', 'Sofi', 'Sofia', 'Sofie', 'Solbritt', 'Solveig', 'Solvig', 'Sonja', 'Stina', 'Susann', 'Susanna', 'Susanne', 'Suzanne', 'Svea', 'Sylvia', 'Synnöve', 'Syster',
'Tea', 'Tekla', 'Terese', 'Teresia', 'Therése', 'Therese', 'Theresia', 'Thyra', 'Tina', 'Tora', 'Torborg', 'Tove', 'Tyra',
'Ulla', 'Ulla-Britt', 'Ulla-Britta', 'Ulrica', 'Ulrika', 'Ursula',
'Valborg', 'Vanja', 'Vega', 'Vendela', 'Vendla', 'Vera', 'Veronica', 'Veronika', 'Victoria', 'Viktoria', 'Vilhelmina', 'Vilma', 'Viola', 'Virginia', 'Vivan', 'Viveca', 'Viveka', 'Vivi', 'Vivian', 'Viviann', 'Vivianne', 'Vivi-Ann', 'Vivi-Anne',
'Wilhelmina',
'Ylva', 'Yvonne',
'Åsa', 'Åse'
);



/**
* @var array Swedish last names.
*/
protected static $lastName = array(
'Abrahamsson', 'Andersson', 'Andreasson', 'Arvidsson', 'Axelsson',
'Bengtsson', 'Berg', 'Berggren', 'Berglund', 'Bergman', 'Bergqvist', 'Bergström', 'Björk', 'Björklund', 'Blom', 'Blomqvist',
'Claesson',
'Dahlberg', 'Danielsson',
'Engström', 'Ek', 'Eklund', 'Ekström', 'Eliasson', 'Eriksson',
'Falk', 'Forsberg', 'Fransson', 'Fredriksson',
'Gunnarsson', 'Gustafsson',
'Hansen', 'Hansson', 'Hedlund', 'Hellström', 'Henriksson', 'Hermansson', 'Holm', 'Holmberg', 'Holmgren', 'Holmqvist', 'Håkansson',
'Isaksson', 'Ivarsson',
'Jakobsson', 'Jansson', 'Johansson', 'Jonasson', 'Jonsson', 'Jönsson',
'Karlsson',
'Larsson', 'Lind', 'Lindberg', 'Lindgren', 'Lindholm', 'Lindqvist', 'Lindström', 'Lund', 'Lundberg', 'Lundgren', 'Lundin', 'Lundqvist', 'Lundström', 'Löfgren',
'Magnusson', 'Martinsson', 'Mattsson', 'Månsson', 'Mårtensson',
'Nilsson', 'Norberg', 'Nordin', 'Nordström', 'Nyberg', 'Nyström',
'Olofsson', 'Olsson',
'Persson', 'Pettersson', 'Pålsson',
'Samuelsson', 'Sandberg', 'Sandström', 'Sjöberg', 'Sjögren', 'Ström', 'Strömberg', 'Sundberg', 'Sundqvist', 'Sundström', 'Svensson', 'Söderberg',
'Viklund',
'Wallin', 'Wikström',
'Åberg', 'Åkesson', 'Åström',
'Öberg'
);


/**
* National Personal Identity number (personnummer)
* @link http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
* @return string 3 letters and 6 digits, like ABA300000
*/
public function personalIdentityNumber($gender = null)
{
$birthdate = new \DateTime('@' . mt_rand(0, time()));
$datePart = $birthdate->format('ymd');

if ($gender && $gender == static::GENDER_MALE) {
$randomDigits = (string)static::numerify('##') . static::randomElement(array(1,3,5,7,9));
} elseif ($gender && $gender == static::GENDER_FEMALE) {
$randomDigits = (string)static::numerify('##') . static::randomElement(array(0,2,4,6,8));
} else {
$randomDigits = (string)static::numerify('###');
}

$checksum = $this->calculateChecksum($datePart . $randomDigits);

return $datePart . '-' . $randomDigits . $checksum;
}

/**
* Luhn algorithm
* @link
* @param string $input
* @return int checksum
*/
protected function calculateChecksum($input)
{
$multiplied = implode(
array_map(
function ($first, $second) {
return $first * $second;
},
str_split($input),
array(2, 1, 2, 1, 2, 1, 2, 1, 2)
)
);

$summed = (int)array_reduce(
str_split($multiplied),
function ($carry, $item) {
return (int)($carry + $item);
}
);

$checksum = 10 - ($summed%10);
return $checksum;
}
}
37 changes: 37 additions & 0 deletions src/Faker/Provider/sv_SE/PhoneNumber.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php
namespace Faker\Provider\sv_SE;

/**
* @author Nathanael Björkgård
*/
class PhoneNumber extends \Faker\Provider\PhoneNumber
{
/**
* @var array Swedish phone number formats
*/
protected static $formats = array(
'08-### ### ##',
'0%#-### ## ##',
'0%########',
'+46 (0)%## ### ###',
'+46(0)%########',
'+46 %## ### ###',
'+46%########',
'08-### ## ##',
'0%#-## ## ##',
'0%##-### ##',
'0%#######',
'+46 (0)8 ### ## ##',
'+46 (0)%# ## ## ##',
'+46 (0)%## ### ##',
'+46 (0)%#######',
'+46(0)%#######',
'+46%#######',
'08-## ## ##',
'0%#-### ###',
'0%#######',
'+46 (0)%######',
'+46(0)%######',
'+46%######',
);
}