resolved conflicts

This commit is contained in:
2025-03-31 03:46:05 +03:00
6454 changed files with 1520539 additions and 9 deletions
@@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
namespace Faker\Core;
use Faker\Calculator;
use Faker\Extension;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Barcode implements Extension\BarcodeExtension
{
private Extension\NumberExtension $numberExtension;
public function __construct(?Extension\NumberExtension $numberExtension = null)
{
$this->numberExtension = $numberExtension ?: new Number();
}
private function ean(int $length = 13): string
{
$code = Extension\Helper::numerify(str_repeat('#', $length - 1));
return sprintf('%s%s', $code, Calculator\Ean::checksum($code));
}
public function ean13(): string
{
return $this->ean();
}
public function ean8(): string
{
return $this->ean(8);
}
public function isbn10(): string
{
$code = Extension\Helper::numerify(str_repeat('#', 9));
return sprintf('%s%s', $code, Calculator\Isbn::checksum($code));
}
public function isbn13(): string
{
$code = '97' . $this->numberExtension->numberBetween(8, 9) . Extension\Helper::numerify(str_repeat('#', 9));
return sprintf('%s%s', $code, Calculator\Ean::checksum($code));
}
}
@@ -0,0 +1,177 @@
<?php
declare(strict_types=1);
namespace Faker\Core;
use Faker\Extension;
use Faker\Extension\Helper;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Color implements Extension\ColorExtension
{
private Extension\NumberExtension $numberExtension;
/**
* @var string[]
*/
private array $safeColorNames = [
'black', 'maroon', 'green', 'navy', 'olive',
'purple', 'teal', 'lime', 'blue', 'silver',
'gray', 'yellow', 'fuchsia', 'aqua', 'white',
];
/**
* @var string[]
*/
private array $allColorNames = [
'AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine',
'Azure', 'Beige', 'Bisque', 'Black', 'BlanchedAlmond',
'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue',
'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue',
'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan',
'DarkGoldenRod', 'DarkGray', 'DarkGreen', 'DarkKhaki',
'DarkMagenta', 'DarkOliveGreen', 'Darkorange', 'DarkOrchid',
'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue',
'DarkSlateGray', 'DarkTurquoise', 'DarkViolet', 'DeepPink',
'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick',
'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite',
'Gold', 'GoldenRod', 'Gray', 'Green', 'GreenYellow', 'HoneyDew',
'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender',
'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral',
'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGreen', 'LightPink',
'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSteelBlue',
'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine',
'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue',
'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue',
'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive',
'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen',
'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum',
'PowderBlue', 'Purple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon',
'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue',
'SlateGray', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato',
'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen',
];
public function __construct(?Extension\NumberExtension $numberExtension = null)
{
$this->numberExtension = $numberExtension ?: new Number();
}
/**
* @example '#fa3cc2'
*/
public function hexColor(): string
{
return '#' . str_pad(dechex($this->numberExtension->numberBetween(1, 16777215)), 6, '0', STR_PAD_LEFT);
}
/**
* @example '#ff0044'
*/
public function safeHexColor(): string
{
$color = str_pad(dechex($this->numberExtension->numberBetween(0, 255)), 3, '0', STR_PAD_LEFT);
return sprintf(
'#%s%s%s%s%s%s',
$color[0],
$color[0],
$color[1],
$color[1],
$color[2],
$color[2],
);
}
/**
* @example 'array(0,255,122)'
*
* @return int[]
*/
public function rgbColorAsArray(): array
{
$color = $this->hexColor();
return [
hexdec(substr($color, 1, 2)),
hexdec(substr($color, 3, 2)),
hexdec(substr($color, 5, 2)),
];
}
/**
* @example '0,255,122'
*/
public function rgbColor(): string
{
return implode(',', $this->rgbColorAsArray());
}
/**
* @example 'rgb(0,255,122)'
*/
public function rgbCssColor(): string
{
return sprintf(
'rgb(%s)',
$this->rgbColor(),
);
}
/**
* @example 'rgba(0,255,122,0.8)'
*/
public function rgbaCssColor(): string
{
return sprintf(
'rgba(%s,%s)',
$this->rgbColor(),
$this->numberExtension->randomFloat(1, 0, 1),
);
}
/**
* @example 'blue'
*/
public function safeColorName(): string
{
return Helper::randomElement($this->safeColorNames);
}
/**
* @example 'NavajoWhite'
*/
public function colorName(): string
{
return Helper::randomElement($this->allColorNames);
}
/**
* @example '340,50,20'
*/
public function hslColor(): string
{
return sprintf(
'%s,%s,%s',
$this->numberExtension->numberBetween(0, 360),
$this->numberExtension->numberBetween(0, 100),
$this->numberExtension->numberBetween(0, 100),
);
}
/**
* @example array(340, 50, 20)
*
* @return int[]
*/
public function hslColorAsArray(): array
{
return [
$this->numberExtension->numberBetween(0, 360),
$this->numberExtension->numberBetween(0, 100),
$this->numberExtension->numberBetween(0, 100),
];
}
}
@@ -0,0 +1,78 @@
<?php
declare(strict_types=1);
namespace Faker\Core;
use Faker\Extension;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Coordinates implements Extension\Extension
{
private Extension\NumberExtension $numberExtension;
public function __construct(?Extension\NumberExtension $numberExtension = null)
{
$this->numberExtension = $numberExtension ?: new Number();
}
/**
* @example '77.147489'
*
* @return float Uses signed degrees format (returns a float number between -90 and 90)
*/
public function latitude(float $min = -90.0, float $max = 90.0): float
{
if ($min < -90 || $max < -90) {
throw new \LogicException('Latitude cannot be less that -90.0');
}
if ($min > 90 || $max > 90) {
throw new \LogicException('Latitude cannot be greater that 90.0');
}
return $this->randomFloat(6, $min, $max);
}
/**
* @example '86.211205'
*
* @return float Uses signed degrees format (returns a float number between -180 and 180)
*/
public function longitude(float $min = -180.0, float $max = 180.0): float
{
if ($min < -180 || $max < -180) {
throw new \LogicException('Longitude cannot be less that -180.0');
}
if ($min > 180 || $max > 180) {
throw new \LogicException('Longitude cannot be greater that 180.0');
}
return $this->randomFloat(6, $min, $max);
}
/**
* @example array('77.147489', '86.211205')
*
* @return array{latitude: float, longitude: float}
*/
public function localCoordinates(): array
{
return [
'latitude' => $this->latitude(),
'longitude' => $this->longitude(),
];
}
private function randomFloat(int $nbMaxDecimals, float $min, float $max): float
{
if ($min > $max) {
throw new \LogicException('Invalid coordinates boundaries');
}
return $this->numberExtension->randomFloat($nbMaxDecimals, $min, $max);
}
}
@@ -0,0 +1,217 @@
<?php
namespace Faker\Core;
use Faker\Extension\DateTimeExtension;
use Faker\Extension\GeneratorAwareExtension;
use Faker\Extension\GeneratorAwareExtensionTrait;
use Faker\Extension\Helper;
/**
* @experimental This class is experimental and does not fall under our BC promise
*
* @since 1.20.0
*/
final class DateTime implements DateTimeExtension, GeneratorAwareExtension
{
use GeneratorAwareExtensionTrait;
/**
* @var string[]
*/
private array $centuries = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI'];
private ?string $defaultTimezone = null;
/**
* Get the POSIX-timestamp of a DateTime, int or string.
*
* @param \DateTime|float|int|string $until
*
* @return false|int
*/
private function getTimestamp($until = 'now')
{
if (is_numeric($until)) {
return (int) $until;
}
if ($until instanceof \DateTime) {
return $until->getTimestamp();
}
return strtotime(empty($until) ? 'now' : $until);
}
/**
* Get a DateTime created based on a POSIX-timestamp.
*
* @param int $timestamp the UNIX / POSIX-compatible timestamp
*/
private function getTimestampDateTime(int $timestamp): \DateTime
{
return new \DateTime('@' . $timestamp);
}
private function resolveTimezone(?string $timezone): string
{
if ($timezone !== null) {
return $timezone;
}
return null === $this->defaultTimezone ? date_default_timezone_get() : $this->defaultTimezone;
}
/**
* Internal method to set the timezone on a DateTime object.
*/
private function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime
{
$timezone = $this->resolveTimezone($timezone);
return $dateTime->setTimezone(new \DateTimeZone($timezone));
}
public function dateTime($until = 'now', ?string $timezone = null): \DateTime
{
return $this->setTimezone(
$this->getTimestampDateTime($this->unixTime($until)),
$timezone,
);
}
public function dateTimeAD($until = 'now', ?string $timezone = null): \DateTime
{
$min = (PHP_INT_SIZE > 4) ? -62135597361 : -PHP_INT_MAX;
return $this->setTimezone(
$this->getTimestampDateTime($this->generator->numberBetween($min, $this->getTimestamp($until))),
$timezone,
);
}
public function dateTimeBetween($from = '-30 years', $until = 'now', ?string $timezone = null): \DateTime
{
$start = $this->getTimestamp($from);
$end = $this->getTimestamp($until);
if ($start > $end) {
throw new \InvalidArgumentException('"$from" must be anterior to "$until".');
}
$timestamp = $this->generator->numberBetween($start, $end);
return $this->setTimezone(
$this->getTimestampDateTime($timestamp),
$timezone,
);
}
public function dateTimeInInterval($from = '-30 years', string $interval = '+5 days', ?string $timezone = null): \DateTime
{
$intervalObject = \DateInterval::createFromDateString($interval);
$datetime = $from instanceof \DateTime ? $from : new \DateTime($from);
$other = (clone $datetime)->add($intervalObject);
$begin = min($datetime, $other);
$end = $datetime === $begin ? $other : $datetime;
return $this->dateTimeBetween($begin, $end, $timezone);
}
public function dateTimeThisWeek($until = 'sunday this week', ?string $timezone = null): \DateTime
{
return $this->dateTimeBetween('monday this week', $until, $timezone);
}
public function dateTimeThisMonth($until = 'last day of this month', ?string $timezone = null): \DateTime
{
return $this->dateTimeBetween('first day of this month', $until, $timezone);
}
public function dateTimeThisYear($until = 'last day of december', ?string $timezone = null): \DateTime
{
return $this->dateTimeBetween('first day of january', $until, $timezone);
}
public function dateTimeThisDecade($until = 'now', ?string $timezone = null): \DateTime
{
$year = floor(date('Y') / 10) * 10;
return $this->dateTimeBetween("first day of january $year", $until, $timezone);
}
public function dateTimeThisCentury($until = 'now', ?string $timezone = null): \DateTime
{
$year = floor(date('Y') / 100) * 100;
return $this->dateTimeBetween("first day of january $year", $until, $timezone);
}
public function date(string $format = 'Y-m-d', $until = 'now'): string
{
return $this->dateTime($until)->format($format);
}
public function time(string $format = 'H:i:s', $until = 'now'): string
{
return $this->date($format, $until);
}
public function unixTime($until = 'now'): int
{
return $this->generator->numberBetween(0, $this->getTimestamp($until));
}
public function iso8601($until = 'now'): string
{
return $this->date(\DateTime::ISO8601, $until);
}
public function amPm($until = 'now'): string
{
return $this->date('a', $until);
}
public function dayOfMonth($until = 'now'): string
{
return $this->date('d', $until);
}
public function dayOfWeek($until = 'now'): string
{
return $this->date('l', $until);
}
public function month($until = 'now'): string
{
return $this->date('m', $until);
}
public function monthName($until = 'now'): string
{
return $this->date('F', $until);
}
public function year($until = 'now'): string
{
return $this->date('Y', $until);
}
public function century(): string
{
return Helper::randomElement($this->centuries);
}
public function timezone(?string $countryCode = null): string
{
if ($countryCode) {
$timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode);
} else {
$timezones = \DateTimeZone::listIdentifiers();
}
return Helper::randomElement($timezones);
}
}
@@ -0,0 +1,83 @@
<?php
declare(strict_types=1);
namespace Faker\Core;
use Faker\Extension;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Number implements Extension\NumberExtension
{
public function numberBetween(int $min = 0, int $max = 2147483647): int
{
$int1 = min($min, $max);
$int2 = max($min, $max);
return mt_rand($int1, $int2);
}
public function randomDigit(): int
{
return $this->numberBetween(0, 9);
}
public function randomDigitNot(int $except): int
{
$result = $this->numberBetween(0, 8);
if ($result >= $except) {
++$result;
}
return $result;
}
public function randomDigitNotZero(): int
{
return $this->numberBetween(1, 9);
}
public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $max = null): float
{
if (null === $nbMaxDecimals) {
$nbMaxDecimals = $this->randomDigit();
}
if (null === $max) {
$max = $this->randomNumber();
if ($min > $max) {
$max = $min;
}
}
if ($min > $max) {
$tmp = $min;
$min = $max;
$max = $tmp;
}
return round($min + $this->numberBetween() / mt_getrandmax() * ($max - $min), $nbMaxDecimals);
}
public function randomNumber(?int $nbDigits = null, bool $strict = false): int
{
if (null === $nbDigits) {
$nbDigits = $this->randomDigitNotZero();
}
$max = 10 ** $nbDigits - 1;
if ($max > mt_getrandmax()) {
throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()');
}
if ($strict) {
return $this->numberBetween(10 ** ($nbDigits - 1), $max);
}
return $this->numberBetween(0, $max);
}
}
@@ -0,0 +1,65 @@
<?php
namespace Faker\Core;
use Faker\Extension;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Uuid implements Extension\UuidExtension
{
private Extension\NumberExtension $numberExtension;
public function __construct(?Extension\NumberExtension $numberExtension = null)
{
$this->numberExtension = $numberExtension ?: new Number();
}
public function uuid3(): string
{
// fix for compatibility with 32bit architecture; each mt_rand call is restricted to 32bit
// two such calls will cause 64bits of randomness regardless of architecture
$seed = $this->numberExtension->numberBetween(0, 2147483647) . '#' . $this->numberExtension->numberBetween(0, 2147483647);
// Hash the seed and convert to a byte array
$val = md5($seed, true);
$byte = array_values(unpack('C16', $val));
// extract fields from byte array
$tLo = ($byte[0] << 24) | ($byte[1] << 16) | ($byte[2] << 8) | $byte[3];
$tMi = ($byte[4] << 8) | $byte[5];
$tHi = ($byte[6] << 8) | $byte[7];
$csLo = $byte[9];
$csHi = $byte[8] & 0x3f | (1 << 7);
// correct byte order for big edian architecture
if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) {
$tLo = (($tLo & 0x000000ff) << 24) | (($tLo & 0x0000ff00) << 8)
| (($tLo & 0x00ff0000) >> 8) | (($tLo & 0xff000000) >> 24);
$tMi = (($tMi & 0x00ff) << 8) | (($tMi & 0xff00) >> 8);
$tHi = (($tHi & 0x00ff) << 8) | (($tHi & 0xff00) >> 8);
}
// apply version number
$tHi &= 0x0fff;
$tHi |= (3 << 12);
// cast to string
return sprintf(
'%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x',
$tLo,
$tMi,
$tHi,
$csHi,
$csLo,
$byte[10],
$byte[11],
$byte[12],
$byte[13],
$byte[14],
$byte[15],
);
}
}
@@ -0,0 +1,69 @@
<?php
declare(strict_types=1);
namespace Faker\Core;
use Faker\Extension;
use Faker\Provider\DateTime;
/**
* @experimental This class is experimental and does not fall under our BC promise
*/
final class Version implements Extension\VersionExtension
{
private Extension\NumberExtension $numberExtension;
/**
* @var string[]
*/
private array $semverCommonPreReleaseIdentifiers = ['alpha', 'beta', 'rc'];
public function __construct(?Extension\NumberExtension $numberExtension = null)
{
$this->numberExtension = $numberExtension ?: new Number();
}
/**
* Represents v2.0.0 of the semantic versioning: https://semver.org/spec/v2.0.0.html
*/
public function semver(bool $preRelease = false, bool $build = false): string
{
return sprintf(
'%d.%d.%d%s%s',
$this->numberExtension->numberBetween(0, 9),
$this->numberExtension->numberBetween(0, 99),
$this->numberExtension->numberBetween(0, 99),
$preRelease && $this->numberExtension->numberBetween(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '',
$build && $this->numberExtension->numberBetween(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '',
);
}
/**
* Common pre-release identifier
*/
private function semverPreReleaseIdentifier(): string
{
$ident = Extension\Helper::randomElement($this->semverCommonPreReleaseIdentifiers);
if ($this->numberExtension->numberBetween(0, 1) !== 1) {
return $ident;
}
return $ident . '.' . $this->numberExtension->numberBetween(1, 99);
}
/**
* Common random build identifier
*/
private function semverBuildIdentifier(): string
{
if ($this->numberExtension->numberBetween(0, 1) === 1) {
// short git revision syntax: https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection
return substr(sha1(Extension\Helper::lexify('??????')), 0, 7);
}
// date syntax
return DateTime::date('YmdHis');
}
}
@@ -0,0 +1,242 @@
<?php
namespace Faker\Extension;
/**
* FakerPHP extension for Date-related randomization.
*
* Functions accepting a date string use the `strtotime()` function internally.
*
* @experimental
*
* @since 1.20.0
*/
interface DateTimeExtension
{
/**
* Get a DateTime object between January 1, 1970, and `$until` (defaults to "now").
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone zone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*
* @example DateTime('2005-08-16 20:39:21')
*/
public function dateTime($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a DateTime object for a date between January 1, 0001, and now.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone zone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @example DateTime('1265-03-22 21:15:52')
*
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeAD($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a DateTime object a random date between `$from` and `$until`.
* Accepts date strings that can be recognized by `strtotime()`.
*
* @param \DateTime|string $from defaults to 30 years ago
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone zone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeBetween($from = '-30 years', $until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a DateTime object based on a random date between `$from` and an interval.
* Accepts date string that can be recognized by `strtotime()`.
*
* @param \DateTime|int|string $from defaults to 30 years ago
* @param string $interval defaults to 5 days after
* @param string|null $timezone zone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeInInterval($from = '-30 years', string $interval = '+5 days', ?string $timezone = null): \DateTime;
/**
* Get a date time object somewhere inside the current week.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone zone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeThisWeek($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a date time object somewhere inside the current month.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeThisMonth($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a date time object somewhere inside the current year.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeThisYear($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a date time object somewhere inside the current decade.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeThisDecade($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a date time object somewhere inside the current century.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
* @param string|null $timezone timezone for generated date, fallback to `DateTime::$defaultTimezone` and `date_default_timezone_get()`.
*
* @see \DateTimeZone
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public function dateTimeThisCentury($until = 'now', ?string $timezone = null): \DateTime;
/**
* Get a date string between January 1, 1970, and `$until`.
*
* @param string $format DateTime format
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @see https://www.php.net/manual/en/datetime.format.php
*/
public function date(string $format = 'Y-m-d', $until = 'now'): string;
/**
* Get a time string (24h format by default).
*
* @param string $format DateTime format
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @see https://www.php.net/manual/en/datetime.format.php
*/
public function time(string $format = 'H:i:s', $until = 'now'): string;
/**
* Get a UNIX (POSIX-compatible) timestamp between January 1, 1970, and `$until`.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*/
public function unixTime($until = 'now'): int;
/**
* Get a date string according to the ISO-8601 standard.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*/
public function iso8601($until = 'now'): string;
/**
* Get a string containing either "am" or "pm".
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @example 'am'
*/
public function amPm($until = 'now'): string;
/**
* Get a localized random day of the month.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @example '16'
*/
public function dayOfMonth($until = 'now'): string;
/**
* Get a localized random day of the week.
*
* Uses internal DateTime formatting, hence PHP's internal locale will be used (change using `setlocale()`).
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @example 'Tuesday'
*
* @see setlocale
* @see https://www.php.net/manual/en/function.setlocale.php Set a different output language
*/
public function dayOfWeek($until = 'now'): string;
/**
* Get a random month (numbered).
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @example '7'
*/
public function month($until = 'now'): string;
/**
* Get a random month.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @see setlocale
* @see https://www.php.net/manual/en/function.setlocale.php Set a different output language
*
* @example 'September'
*/
public function monthName($until = 'now'): string;
/**
* Get a random year between 1970 and `$until`.
*
* @param \DateTime|int|string $until maximum timestamp, defaults to "now"
*
* @example '1987'
*/
public function year($until = 'now'): string;
/**
* Get a random century, formatted as Roman numerals.
*
* @example 'XVII'
*/
public function century(): string;
/**
* Get a random timezone, uses `\DateTimeZone::listIdentifiers()` internally.
*
* @param string|null $countryCode two-letter ISO 3166-1 compatible country code
*
* @example 'Europe/Rome'
*/
public function timezone(?string $countryCode = null): string;
}
@@ -0,0 +1,985 @@
<?php
namespace Faker;
use Faker\Container\ContainerInterface;
/**
* @property string $citySuffix
*
* @method string citySuffix()
*
* @property string $streetSuffix
*
* @method string streetSuffix()
*
* @property string $buildingNumber
*
* @method string buildingNumber()
*
* @property string $city
*
* @method string city()
*
* @property string $streetName
*
* @method string streetName()
*
* @property string $streetAddress
*
* @method string streetAddress()
*
* @property string $postcode
*
* @method string postcode()
*
* @property string $address
*
* @method string address()
*
* @property string $country
*
* @method string country()
*
* @property float $latitude
*
* @method float latitude($min = -90, $max = 90)
*
* @property float $longitude
*
* @method float longitude($min = -180, $max = 180)
*
* @property float[] $localCoordinates
*
* @method float[] localCoordinates()
*
* @property int $randomDigitNotNull
*
* @method int randomDigitNotNull()
*
* @property mixed $passthrough
*
* @method mixed passthrough($value)
*
* @property string $randomLetter
*
* @method string randomLetter()
*
* @property string $randomAscii
*
* @method string randomAscii()
*
* @property array $randomElements
*
* @method array randomElements($array = ['a', 'b', 'c'], $count = 1, $allowDuplicates = false)
*
* @property mixed $randomElement
*
* @method mixed randomElement($array = ['a', 'b', 'c'])
*
* @property int|string|null $randomKey
*
* @method int|string|null randomKey($array = [])
*
* @property array|string $shuffle
*
* @method array|string shuffle($arg = '')
*
* @property array $shuffleArray
*
* @method array shuffleArray($array = [])
*
* @property string $shuffleString
*
* @method string shuffleString($string = '', $encoding = 'UTF-8')
*
* @property string $numerify
*
* @method string numerify($string = '###')
*
* @property string $lexify
*
* @method string lexify($string = '????')
*
* @property string $bothify
*
* @method string bothify($string = '## ??')
*
* @property string $asciify
*
* @method string asciify($string = '****')
*
* @property string $regexify
*
* @method string regexify($regex = '')
*
* @property string $toLower
*
* @method string toLower($string = '')
*
* @property string $toUpper
*
* @method string toUpper($string = '')
*
* @property int $biasedNumberBetween
*
* @method int biasedNumberBetween($min = 0, $max = 100, $function = 'sqrt')
*
* @property string $hexColor
*
* @method string hexColor()
*
* @property string $safeHexColor
*
* @method string safeHexColor()
*
* @property array $rgbColorAsArray
*
* @method array rgbColorAsArray()
*
* @property string $rgbColor
*
* @method string rgbColor()
*
* @property string $rgbCssColor
*
* @method string rgbCssColor()
*
* @property string $rgbaCssColor
*
* @method string rgbaCssColor()
*
* @property string $safeColorName
*
* @method string safeColorName()
*
* @property string $colorName
*
* @method string colorName()
*
* @property string $hslColor
*
* @method string hslColor()
*
* @property array $hslColorAsArray
*
* @method array hslColorAsArray()
*
* @property string $company
*
* @method string company()
*
* @property string $companySuffix
*
* @method string companySuffix()
*
* @property string $jobTitle
*
* @method string jobTitle()
*
* @property int $unixTime
*
* @method int unixTime($max = 'now')
*
* @property \DateTime $dateTime
*
* @method \DateTime dateTime($max = 'now', $timezone = null)
*
* @property \DateTime $dateTimeAD
*
* @method \DateTime dateTimeAD($max = 'now', $timezone = null)
*
* @property string $iso8601
*
* @method string iso8601($max = 'now')
*
* @property string $date
*
* @method string date($format = 'Y-m-d', $max = 'now')
*
* @property string $time
*
* @method string time($format = 'H:i:s', $max = 'now')
*
* @property \DateTime $dateTimeBetween
*
* @method \DateTime dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = null)
*
* @property \DateTime $dateTimeInInterval
*
* @method \DateTime dateTimeInInterval($date = '-30 years', $interval = '+5 days', $timezone = null)
*
* @property \DateTime $dateTimeThisCentury
*
* @method \DateTime dateTimeThisCentury($max = 'now', $timezone = null)
*
* @property \DateTime $dateTimeThisDecade
*
* @method \DateTime dateTimeThisDecade($max = 'now', $timezone = null)
*
* @property \DateTime $dateTimeThisYear
*
* @method \DateTime dateTimeThisYear($max = 'now', $timezone = null)
*
* @property \DateTime $dateTimeThisMonth
*
* @method \DateTime dateTimeThisMonth($max = 'now', $timezone = null)
*
* @property string $amPm
*
* @method string amPm($max = 'now')
*
* @property string $dayOfMonth
*
* @method string dayOfMonth($max = 'now')
*
* @property string $dayOfWeek
*
* @method string dayOfWeek($max = 'now')
*
* @property string $month
*
* @method string month($max = 'now')
*
* @property string $monthName
*
* @method string monthName($max = 'now')
*
* @property string $year
*
* @method string year($max = 'now')
*
* @property string $century
*
* @method string century()
*
* @property string $timezone
*
* @method string timezone($countryCode = null)
*
* @property void $setDefaultTimezone
*
* @method void setDefaultTimezone($timezone = null)
*
* @property string $getDefaultTimezone
*
* @method string getDefaultTimezone()
*
* @property string $file
*
* @method string file($sourceDirectory = '/tmp', $targetDirectory = '/tmp', $fullPath = true)
*
* @property string $randomHtml
*
* @method string randomHtml($maxDepth = 4, $maxWidth = 4)
*
* @property string $imageUrl
*
* @method string imageUrl($width = 640, $height = 480, $category = null, $randomize = true, $word = null, $gray = false, string $format = 'png')
*
* @property string $image
*
* @method string image($dir = null, $width = 640, $height = 480, $category = null, $fullPath = true, $randomize = true, $word = null, $gray = false, string $format = 'png')
*
* @property string $email
*
* @method string email()
*
* @property string $safeEmail
*
* @method string safeEmail()
*
* @property string $freeEmail
*
* @method string freeEmail()
*
* @property string $companyEmail
*
* @method string companyEmail()
*
* @property string $freeEmailDomain
*
* @method string freeEmailDomain()
*
* @property string $safeEmailDomain
*
* @method string safeEmailDomain()
*
* @property string $userName
*
* @method string userName()
*
* @property string $password
*
* @method string password($minLength = 6, $maxLength = 20)
*
* @property string $domainName
*
* @method string domainName()
*
* @property string $domainWord
*
* @method string domainWord()
*
* @property string $tld
*
* @method string tld()
*
* @property string $url
*
* @method string url()
*
* @property string $slug
*
* @method string slug($nbWords = 6, $variableNbWords = true)
*
* @property string $ipv4
*
* @method string ipv4()
*
* @property string $ipv6
*
* @method string ipv6()
*
* @property string $localIpv4
*
* @method string localIpv4()
*
* @property string $macAddress
*
* @method string macAddress()
*
* @property string $word
*
* @method string word()
*
* @property array|string $words
*
* @method array|string words($nb = 3, $asText = false)
*
* @property string $sentence
*
* @method string sentence($nbWords = 6, $variableNbWords = true)
*
* @property array|string $sentences
*
* @method array|string sentences($nb = 3, $asText = false)
*
* @property string $paragraph
*
* @method string paragraph($nbSentences = 3, $variableNbSentences = true)
*
* @property array|string $paragraphs
*
* @method array|string paragraphs($nb = 3, $asText = false)
*
* @property string $text
*
* @method string text($maxNbChars = 200)
*
* @property bool $boolean
*
* @method bool boolean($chanceOfGettingTrue = 50)
*
* @property string $md5
*
* @method string md5()
*
* @property string $sha1
*
* @method string sha1()
*
* @property string $sha256
*
* @method string sha256()
*
* @property string $locale
*
* @method string locale()
*
* @property string $countryCode
*
* @method string countryCode()
*
* @property string $countryISOAlpha3
*
* @method string countryISOAlpha3()
*
* @property string $languageCode
*
* @method string languageCode()
*
* @property string $currencyCode
*
* @method string currencyCode()
*
* @property string $emoji
*
* @method string emoji()
*
* @property string $creditCardType
*
* @method string creditCardType()
*
* @property string $creditCardNumber
*
* @method string creditCardNumber($type = null, $formatted = false, $separator = '-')
*
* @property \DateTime $creditCardExpirationDate
*
* @method \DateTime creditCardExpirationDate($valid = true)
*
* @property string $creditCardExpirationDateString
*
* @method string creditCardExpirationDateString($valid = true, $expirationDateFormat = null)
*
* @property array $creditCardDetails
*
* @method array creditCardDetails($valid = true)
*
* @property string $iban
*
* @method string iban($countryCode = null, $prefix = '', $length = null)
*
* @property string $swiftBicNumber
*
* @method string swiftBicNumber()
*
* @property string $name
*
* @method string name($gender = null)
*
* @property string $firstName
*
* @method string firstName($gender = null)
*
* @property string $firstNameMale
*
* @method string firstNameMale()
*
* @property string $firstNameFemale
*
* @method string firstNameFemale()
*
* @property string $lastName
*
* @method string lastName($gender = null)
*
* @property string $title
*
* @method string title($gender = null)
*
* @property string $titleMale
*
* @method string titleMale()
*
* @property string $titleFemale
*
* @method string titleFemale()
*
* @property string $phoneNumber
*
* @method string phoneNumber()
*
* @property string $e164PhoneNumber
*
* @method string e164PhoneNumber()
*
* @property int $imei
*
* @method int imei()
*
* @property string $realText
*
* @method string realText($maxNbChars = 200, $indexSize = 2)
*
* @property string $realTextBetween
*
* @method string realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2)
*
* @property string $macProcessor
*
* @method string macProcessor()
*
* @property string $linuxProcessor
*
* @method string linuxProcessor()
*
* @property string $userAgent
*
* @method string userAgent()
*
* @property string $chrome
*
* @method string chrome()
*
* @property string $msedge
*
* @method string msedge()
*
* @property string $firefox
*
* @method string firefox()
*
* @property string $safari
*
* @method string safari()
*
* @property string $opera
*
* @method string opera()
*
* @property string $internetExplorer
*
* @method string internetExplorer()
*
* @property string $windowsPlatformToken
*
* @method string windowsPlatformToken()
*
* @property string $macPlatformToken
*
* @method string macPlatformToken()
*
* @property string $iosMobileToken
*
* @method string iosMobileToken()
*
* @property string $linuxPlatformToken
*
* @method string linuxPlatformToken()
*
* @property string $uuid
*
* @method string uuid()
*/
class Generator
{
protected $providers = [];
protected $formatters = [];
private $container;
/**
* @var UniqueGenerator
*/
private $uniqueGenerator;
public function __construct(?ContainerInterface $container = null)
{
$this->container = $container ?: Container\ContainerBuilder::withDefaultExtensions()->build();
}
/**
* @template T of Extension\Extension
*
* @param class-string<T> $id
*
* @throws Extension\ExtensionNotFound
*
* @return T
*/
public function ext(string $id): Extension\Extension
{
if (!$this->container->has($id)) {
throw new Extension\ExtensionNotFound(sprintf(
'No Faker extension with id "%s" was loaded.',
$id,
));
}
$extension = $this->container->get($id);
if ($extension instanceof Extension\GeneratorAwareExtension) {
$extension = $extension->withGenerator($this);
}
return $extension;
}
public function addProvider($provider)
{
array_unshift($this->providers, $provider);
$this->formatters = [];
}
public function getProviders()
{
return $this->providers;
}
/**
* With the unique generator you are guaranteed to never get the same two
* values.
*
* <code>
* // will never return twice the same value
* $faker->unique()->randomElement(array(1, 2, 3));
* </code>
*
* @param bool $reset If set to true, resets the list of existing values
* @param int $maxRetries Maximum number of retries to find a unique value,
* After which an OverflowException is thrown.
*
* @throws \OverflowException When no unique value can be found by iterating $maxRetries times
*
* @return self A proxy class returning only non-existing values
*/
public function unique($reset = false, $maxRetries = 10000)
{
if ($reset || $this->uniqueGenerator === null) {
$this->uniqueGenerator = new UniqueGenerator($this, $maxRetries);
}
return $this->uniqueGenerator;
}
/**
* Get a value only some percentage of the time.
*
* @param float $weight A probability between 0 and 1, 0 means that we always get the default value.
*
* @return self
*/
public function optional(float $weight = 0.5, $default = null)
{
if ($weight > 1) {
trigger_deprecation('fakerphp/faker', '1.16', 'First argument ($weight) to method "optional()" must be between 0 and 1. You passed %f, we assume you meant %f.', $weight, $weight / 100);
$weight = $weight / 100;
}
return new ChanceGenerator($this, $weight, $default);
}
/**
* To make sure the value meet some criteria, pass a callable that verifies the
* output. If the validator fails, the generator will try again.
*
* The value validity is determined by a function passed as first argument.
*
* <code>
* $values = array();
* $evenValidator = function ($digit) {
* return $digit % 2 === 0;
* };
* for ($i=0; $i < 10; $i++) {
* $values []= $faker->valid($evenValidator)->randomDigit;
* }
* print_r($values); // [0, 4, 8, 4, 2, 6, 0, 8, 8, 6]
* </code>
*
* @param ?\Closure $validator A function returning true for valid values
* @param int $maxRetries Maximum number of retries to find a valid value,
* After which an OverflowException is thrown.
*
* @throws \OverflowException When no valid value can be found by iterating $maxRetries times
*
* @return self A proxy class returning only valid values
*/
public function valid(?\Closure $validator = null, int $maxRetries = 10000)
{
return new ValidGenerator($this, $validator, $maxRetries);
}
public function seed($seed = null)
{
if ($seed === null) {
mt_srand();
} else {
mt_srand((int) $seed, self::mode());
}
}
/**
* @see https://www.php.net/manual/en/migration83.deprecated.php#migration83.deprecated.random
*/
private static function mode(): int
{
if (PHP_VERSION_ID < 80300) {
return MT_RAND_PHP;
}
return MT_RAND_MT19937;
}
public function format($format, $arguments = [])
{
return call_user_func_array($this->getFormatter($format), $arguments);
}
/**
* @param string $format
*
* @return callable
*/
public function getFormatter($format)
{
if (isset($this->formatters[$format])) {
return $this->formatters[$format];
}
if (method_exists($this, $format)) {
$this->formatters[$format] = [$this, $format];
return $this->formatters[$format];
}
// "Faker\Core\Barcode->ean13"
if (preg_match('|^([a-zA-Z0-9\\\]+)->([a-zA-Z0-9]+)$|', $format, $matches)) {
$this->formatters[$format] = [$this->ext($matches[1]), $matches[2]];
return $this->formatters[$format];
}
foreach ($this->providers as $provider) {
if (method_exists($provider, $format)) {
$this->formatters[$format] = [$provider, $format];
return $this->formatters[$format];
}
}
throw new \InvalidArgumentException(sprintf('Unknown format "%s"', $format));
}
/**
* Replaces tokens ('{{ tokenName }}') with the result from the token method call
*
* @param string $string String that needs to bet parsed
*
* @return string
*/
public function parse($string)
{
$callback = function ($matches) {
return $this->format($matches[1]);
};
return preg_replace_callback('/{{\s?(\w+|[\w\\\]+->\w+?)\s?}}/u', $callback, $string);
}
/**
* Get a random MIME type
*
* @example 'video/avi'
*/
public function mimeType()
{
return $this->ext(Extension\FileExtension::class)->mimeType();
}
/**
* Get a random file extension (without a dot)
*
* @example avi
*/
public function fileExtension()
{
return $this->ext(Extension\FileExtension::class)->extension();
}
/**
* Get a full path to a new real file on the system.
*/
public function filePath()
{
return $this->ext(Extension\FileExtension::class)->filePath();
}
/**
* Get an actual blood type
*
* @example 'AB'
*/
public function bloodType(): string
{
return $this->ext(Extension\BloodExtension::class)->bloodType();
}
/**
* Get a random resis value
*
* @example '+'
*/
public function bloodRh(): string
{
return $this->ext(Extension\BloodExtension::class)->bloodRh();
}
/**
* Get a full blood group
*
* @example 'AB+'
*/
public function bloodGroup(): string
{
return $this->ext(Extension\BloodExtension::class)->bloodGroup();
}
/**
* Get a random EAN13 barcode.
*
* @example '4006381333931'
*/
public function ean13(): string
{
return $this->ext(Extension\BarcodeExtension::class)->ean13();
}
/**
* Get a random EAN8 barcode.
*
* @example '73513537'
*/
public function ean8(): string
{
return $this->ext(Extension\BarcodeExtension::class)->ean8();
}
/**
* Get a random ISBN-10 code
*
* @see http://en.wikipedia.org/wiki/International_Standard_Book_Number
*
* @example '4881416324'
*/
public function isbn10(): string
{
return $this->ext(Extension\BarcodeExtension::class)->isbn10();
}
/**
* Get a random ISBN-13 code
*
* @see http://en.wikipedia.org/wiki/International_Standard_Book_Number
*
* @example '9790404436093'
*/
public function isbn13(): string
{
return $this->ext(Extension\BarcodeExtension::class)->isbn13();
}
/**
* Returns a random number between $int1 and $int2 (any order)
*
* @example 79907610
*/
public function numberBetween($int1 = 0, $int2 = 2147483647): int
{
return $this->ext(Extension\NumberExtension::class)->numberBetween((int) $int1, (int) $int2);
}
/**
* Returns a random number between 0 and 9
*/
public function randomDigit(): int
{
return $this->ext(Extension\NumberExtension::class)->randomDigit();
}
/**
* Generates a random digit, which cannot be $except
*/
public function randomDigitNot($except): int
{
return $this->ext(Extension\NumberExtension::class)->randomDigitNot((int) $except);
}
/**
* Returns a random number between 1 and 9
*/
public function randomDigitNotZero(): int
{
return $this->ext(Extension\NumberExtension::class)->randomDigitNotZero();
}
/**
* Return a random float number
*
* @example 48.8932
*/
public function randomFloat($nbMaxDecimals = null, $min = 0, $max = null): float
{
return $this->ext(Extension\NumberExtension::class)->randomFloat(
$nbMaxDecimals !== null ? (int) $nbMaxDecimals : null,
(float) $min,
$max !== null ? (float) $max : null,
);
}
/**
* Returns a random integer with 0 to $nbDigits digits.
*
* The maximum value returned is mt_getrandmax()
*
* @param int|null $nbDigits Defaults to a random number between 1 and 9
* @param bool $strict Whether the returned number should have exactly $nbDigits
*
* @example 79907610
*/
public function randomNumber($nbDigits = null, $strict = false): int
{
return $this->ext(Extension\NumberExtension::class)->randomNumber(
$nbDigits !== null ? (int) $nbDigits : null,
(bool) $strict,
);
}
/**
* Get a version number in semantic versioning syntax 2.0.0. (https://semver.org/spec/v2.0.0.html)
*
* @param bool $preRelease Pre release parts may be randomly included
* @param bool $build Build parts may be randomly included
*
* @example 1.0.0
* @example 1.0.0-alpha.1
* @example 1.0.0-alpha.1+b71f04d
*/
public function semver(bool $preRelease = false, bool $build = false): string
{
return $this->ext(Extension\VersionExtension::class)->semver($preRelease, $build);
}
/**
* @deprecated
*/
protected function callFormatWithMatches($matches)
{
trigger_deprecation('fakerphp/faker', '1.14', 'Protected method "callFormatWithMatches()" is deprecated and will be removed.');
return $this->format($matches[1]);
}
/**
* @param string $attribute
*
* @deprecated Use a method instead.
*/
public function __get($attribute)
{
trigger_deprecation('fakerphp/faker', '1.14', 'Accessing property "%s" is deprecated, use "%s()" instead.', $attribute, $attribute);
return $this->format($attribute);
}
/**
* @param string $method
* @param array $attributes
*/
public function __call($method, $attributes)
{
return $this->format($method, $attributes);
}
public function __destruct()
{
$this->seed();
}
public function __wakeup()
{
$this->formatters = [];
}
}
@@ -0,0 +1,180 @@
<?php
namespace Faker\Guesser;
use Faker\Provider\Base;
class Name
{
protected $generator;
public function __construct(\Faker\Generator $generator)
{
$this->generator = $generator;
}
/**
* @param string $name
* @param int|null $size Length of field, if known
*
* @return callable|null
*/
public function guessFormat($name, $size = null)
{
$name = Base::toLower($name);
$generator = $this->generator;
if (preg_match('/^is[_A-Z]/', $name)) {
return static function () use ($generator) {
return $generator->boolean();
};
}
if (preg_match('/(_a|A)t$/', $name)) {
return static function () use ($generator) {
return $generator->dateTime();
};
}
switch (str_replace('_', '', $name)) {
case 'firstname':
return static function () use ($generator) {
return $generator->firstName();
};
case 'lastname':
return static function () use ($generator) {
return $generator->lastName();
};
case 'username':
case 'login':
return static function () use ($generator) {
return $generator->userName();
};
case 'email':
case 'emailaddress':
return static function () use ($generator) {
return $generator->email();
};
case 'phonenumber':
case 'phone':
case 'telephone':
case 'telnumber':
return static function () use ($generator) {
return $generator->phoneNumber();
};
case 'address':
return static function () use ($generator) {
return $generator->address();
};
case 'city':
case 'town':
return static function () use ($generator) {
return $generator->city();
};
case 'streetaddress':
return static function () use ($generator) {
return $generator->streetAddress();
};
case 'postcode':
case 'zipcode':
return static function () use ($generator) {
return $generator->postcode();
};
case 'state':
return static function () use ($generator) {
return $generator->state();
};
case 'county':
if ($this->generator->locale == 'en_US') {
return static function () use ($generator) {
return sprintf('%s County', $generator->city());
};
}
return static function () use ($generator) {
return $generator->state();
};
case 'country':
switch ($size) {
case 2:
return static function () use ($generator) {
return $generator->countryCode();
};
case 3:
return static function () use ($generator) {
return $generator->countryISOAlpha3();
};
case 5:
case 6:
return static function () use ($generator) {
return $generator->locale();
};
default:
return static function () use ($generator) {
return $generator->country();
};
}
break;
case 'locale':
return static function () use ($generator) {
return $generator->locale();
};
case 'currency':
case 'currencycode':
return static function () use ($generator) {
return $generator->currencyCode();
};
case 'url':
case 'website':
return static function () use ($generator) {
return $generator->url();
};
case 'company':
case 'companyname':
case 'employer':
return static function () use ($generator) {
return $generator->company();
};
case 'title':
if ($size !== null && $size <= 10) {
return static function () use ($generator) {
return $generator->title();
};
}
return static function () use ($generator) {
return $generator->sentence();
};
case 'body':
case 'summary':
case 'article':
case 'description':
return static function () use ($generator) {
return $generator->text();
};
}
return null;
}
}
@@ -0,0 +1,91 @@
<?php
namespace Faker\ORM\Doctrine;
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
use Faker\Generator;
require_once 'backward-compatibility.php';
class ColumnTypeGuesser
{
protected $generator;
public function __construct(Generator $generator)
{
$this->generator = $generator;
}
/**
* @return \Closure|null
*/
public function guessFormat($fieldName, ClassMetadata $class)
{
$generator = $this->generator;
$type = $class->getTypeOfField($fieldName);
switch ($type) {
case 'boolean':
return static function () use ($generator) {
return $generator->boolean();
};
case 'decimal':
$size = $class->fieldMappings[$fieldName]['precision'] ?? 2;
return static function () use ($generator, $size) {
return $generator->randomNumber($size + 2) / 100;
};
case 'smallint':
return static function () use ($generator) {
return $generator->numberBetween(0, 65535);
};
case 'integer':
return static function () use ($generator) {
return $generator->numberBetween(0, 2147483647);
};
case 'bigint':
return static function () use ($generator) {
return $generator->numberBetween(0, PHP_INT_MAX);
};
case 'float':
return static function () use ($generator) {
return $generator->randomFloat();
};
case 'string':
$size = $class->fieldMappings[$fieldName]['length'] ?? 255;
return static function () use ($generator, $size) {
return $generator->text($size);
};
case 'text':
return static function () use ($generator) {
return $generator->text();
};
case 'datetime':
case 'date':
case 'time':
return static function () use ($generator) {
return $generator->datetime();
};
case 'datetime_immutable':
case 'date_immutable':
case 'time_immutable':
return static function () use ($generator) {
return \DateTimeImmutable::createFromMutable($generator->datetime);
};
default:
// no smart way to guess what the user expects here
return null;
}
}
}
@@ -0,0 +1,126 @@
<?php
namespace Faker\ORM\Doctrine;
use Doctrine\Common\Persistence\ObjectManager;
use Faker\Generator;
require_once 'backward-compatibility.php';
/**
* Service class for populating a database using the Doctrine ORM or ODM.
* A Populator can populate several tables using ActiveRecord classes.
*/
class Populator
{
/**
* @var int
*/
protected $batchSize;
/**
* @var Generator
*/
protected $generator;
/**
* @var ObjectManager|null
*/
protected $manager;
/**
* @var array
*/
protected $entities = [];
/**
* @var array
*/
protected $quantities = [];
/**
* @var array
*/
protected $generateId = [];
/**
* Populator constructor.
*
* @param int $batchSize
*/
public function __construct(Generator $generator, ?ObjectManager $manager = null, $batchSize = 1000)
{
$this->generator = $generator;
$this->manager = $manager;
$this->batchSize = $batchSize;
}
/**
* Add an order for the generation of $number records for $entity.
*
* @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance
* @param int $number The number of entities to populate
*/
public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false)
{
if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) {
if (null === $this->manager) {
throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.');
}
$entity = new \Faker\ORM\Doctrine\EntityPopulator($this->manager->getClassMetadata($entity));
}
$entity->setColumnFormatters($entity->guessColumnFormatters($this->generator));
if ($customColumnFormatters) {
$entity->mergeColumnFormattersWith($customColumnFormatters);
}
$entity->mergeModifiersWith($customModifiers);
$this->generateId[$entity->getClass()] = $generateId;
$class = $entity->getClass();
$this->entities[$class] = $entity;
$this->quantities[$class] = $number;
}
/**
* Populate the database using all the Entity classes previously added.
*
* Please note that large amounts of data will result in more memory usage since the the Populator will return
* all newly created primary keys after executing.
*
* @param ObjectManager|null $entityManager A Doctrine connection object
*
* @return array A list of the inserted PKs
*/
public function execute($entityManager = null)
{
if (null === $entityManager) {
$entityManager = $this->manager;
}
if (null === $entityManager) {
throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.');
}
$insertedEntities = [];
foreach ($this->quantities as $class => $number) {
$generateId = $this->generateId[$class];
for ($i = 0; $i < $number; ++$i) {
$insertedEntities[$class][] = $this->entities[$class]->execute(
$entityManager,
$insertedEntities,
$generateId,
);
if (count($insertedEntities) % $this->batchSize === 0) {
$entityManager->flush();
}
}
$entityManager->flush();
}
return $insertedEntities;
}
}
@@ -0,0 +1,89 @@
<?php
namespace Faker\ORM\Spot;
use Spot\Locator;
/**
* Service class for populating a database using the Spot ORM.
*/
class Populator
{
protected $generator;
protected $locator;
protected $entities = [];
protected $quantities = [];
/**
* Populator constructor.
*/
public function __construct(\Faker\Generator $generator, ?Locator $locator = null)
{
$this->generator = $generator;
$this->locator = $locator;
}
/**
* Add an order for the generation of $number records for $entity.
*
* @param string $entityName Name of Entity object to generate
* @param int $number The number of entities to populate
* @param array $customColumnFormatters
* @param array $customModifiers
* @param bool $useExistingData Should we use existing rows (e.g. roles) to populate relations?
*/
public function addEntity(
$entityName,
$number,
$customColumnFormatters = [],
$customModifiers = [],
$useExistingData = false
) {
$mapper = $this->locator->mapper($entityName);
if (null === $mapper) {
throw new \InvalidArgumentException('No mapper can be found for entity ' . $entityName);
}
$entity = new EntityPopulator($mapper, $this->locator, $useExistingData);
$entity->setColumnFormatters($entity->guessColumnFormatters($this->generator));
if ($customColumnFormatters) {
$entity->mergeColumnFormattersWith($customColumnFormatters);
}
$entity->mergeModifiersWith($customModifiers);
$this->entities[$entityName] = $entity;
$this->quantities[$entityName] = $number;
}
/**
* Populate the database using all the Entity classes previously added.
*
* @param Locator $locator A Spot locator
*
* @return array A list of the inserted PKs
*/
public function execute($locator = null)
{
if (null === $locator) {
$locator = $this->locator;
}
if (null === $locator) {
throw new \InvalidArgumentException('No entity manager passed to Spot Populator.');
}
$insertedEntities = [];
foreach ($this->quantities as $entityName => $number) {
for ($i = 0; $i < $number; ++$i) {
$insertedEntities[$entityName][] = $this->entities[$entityName]->execute(
$insertedEntities,
);
}
}
return $insertedEntities;
}
}
@@ -0,0 +1,389 @@
<?php
namespace Faker\Provider;
class DateTime extends Base
{
protected static $century = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI'];
protected static $defaultTimezone = null;
/**
* @param \DateTime|float|int|string $max
*
* @return false|int
*/
protected static function getMaxTimestamp($max = 'now')
{
if (is_numeric($max)) {
return (int) $max;
}
if ($max instanceof \DateTime) {
return $max->getTimestamp();
}
return strtotime(empty($max) ? 'now' : $max);
}
/**
* Get a timestamp between January 1, 1970, and now
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return int
*
* @example 1061306726
*/
public static function unixTime($max = 'now')
{
return self::numberBetween(0, static::getMaxTimestamp($max));
}
/**
* Get a datetime object for a date between January 1, 1970 and now
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*
* @example DateTime('2005-08-16 20:39:21')
*/
public static function dateTime($max = 'now', $timezone = null)
{
return static::setTimezone(
new \DateTime('@' . static::unixTime($max)),
$timezone,
);
}
/**
* Get a datetime object for a date between January 1, 001 and now
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*
* @example DateTime('1265-03-22 21:15:52')
*/
public static function dateTimeAD($max = 'now', $timezone = null)
{
$min = (PHP_INT_SIZE > 4 ? -62135597361 : -PHP_INT_MAX);
return static::setTimezone(
new \DateTime('@' . self::numberBetween($min, static::getMaxTimestamp($max))),
$timezone,
);
}
/**
* get a date string formatted with ISO8601
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '2003-10-21T16:05:52+0000'
*/
public static function iso8601($max = 'now')
{
return static::date(\DateTime::ISO8601, $max);
}
/**
* Get a date string between January 1, 1970 and now
*
* @param string $format
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '2008-11-27'
*/
public static function date($format = 'Y-m-d', $max = 'now')
{
return static::dateTime($max)->format($format);
}
/**
* Get a time string (24h format by default)
*
* @param string $format
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '15:02:34'
*/
public static function time($format = 'H:i:s', $max = 'now')
{
return static::dateTime($max)->format($format);
}
/**
* Get a DateTime object based on a random date between two given dates.
* Accepts date strings that can be recognized by strtotime().
*
* @param \DateTime|string $startDate Defaults to 30 years ago
* @param \DateTime|string $endDate Defaults to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*
* @example DateTime('1999-02-02 11:42:52')
*/
public static function dateTimeBetween($startDate = '-30 years', $endDate = 'now', $timezone = null)
{
$startTimestamp = $startDate instanceof \DateTime ? $startDate->getTimestamp() : strtotime($startDate);
$endTimestamp = static::getMaxTimestamp($endDate);
if ($startTimestamp > $endTimestamp) {
throw new \InvalidArgumentException('Start date must be anterior to end date.');
}
$timestamp = self::numberBetween($startTimestamp, $endTimestamp);
return static::setTimezone(
new \DateTime('@' . $timestamp),
$timezone,
);
}
/**
* Get a DateTime object based on a random date between one given date and
* an interval
* Accepts date string that can be recognized by strtotime().
*
* @param \DateTime|string $date Defaults to 30 years ago
* @param string $interval Defaults to 5 days after
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*
* @example dateTimeInInterval('1999-02-02 11:42:52', '+ 5 days')
*
* @see http://php.net/manual/en/timezones.php
* @see http://php.net/manual/en/function.date-default-timezone-get.php
*/
public static function dateTimeInInterval($date = '-30 years', $interval = '+5 days', $timezone = null)
{
$intervalObject = \DateInterval::createFromDateString($interval);
$datetime = $date instanceof \DateTime ? $date : new \DateTime($date);
$otherDatetime = clone $datetime;
$otherDatetime->add($intervalObject);
$begin = min($datetime, $otherDatetime);
$end = $datetime === $begin ? $otherDatetime : $datetime;
return static::dateTimeBetween(
$begin,
$end,
$timezone,
);
}
/**
* Get a date time object somewhere within a century.
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*/
public static function dateTimeThisCentury($max = 'now', $timezone = null)
{
return static::dateTimeBetween('-100 year', $max, $timezone);
}
/**
* Get a date time object somewhere within a decade.
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*/
public static function dateTimeThisDecade($max = 'now', $timezone = null)
{
return static::dateTimeBetween('-10 year', $max, $timezone);
}
/**
* Get a date time object somewhere inside the current year.
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*/
public static function dateTimeThisYear($max = 'now', $timezone = null)
{
return static::dateTimeBetween('first day of january this year', $max, $timezone);
}
/**
* Get a date time object somewhere within a month.
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
* @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get`
*
* @return \DateTime
*/
public static function dateTimeThisMonth($max = 'now', $timezone = null)
{
return static::dateTimeBetween('-1 month', $max, $timezone);
}
/**
* Get a string containing either "am" or "pm".
*
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example 'am'
*/
public static function amPm($max = 'now')
{
return static::dateTime($max)->format('a');
}
/**
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '22'
*/
public static function dayOfMonth($max = 'now')
{
return static::dateTime($max)->format('d');
}
/**
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example 'Tuesday'
*/
public static function dayOfWeek($max = 'now')
{
return static::dateTime($max)->format('l');
}
/**
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '7'
*/
public static function month($max = 'now')
{
return static::dateTime($max)->format('m');
}
/**
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example 'September'
*/
public static function monthName($max = 'now')
{
return static::dateTime($max)->format('F');
}
/**
* @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now"
*
* @return string
*
* @example '1987'
*/
public static function year($max = 'now')
{
return static::dateTime($max)->format('Y');
}
/**
* @return string
*
* @example 'XVII'
*/
public static function century()
{
return static::randomElement(static::$century);
}
/**
* @return string
*
* @example 'Europe/Paris'
*/
public static function timezone(?string $countryCode = null)
{
if ($countryCode) {
$timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode);
} else {
$timezones = \DateTimeZone::listIdentifiers();
}
return static::randomElement($timezones);
}
/**
* Internal method to set the time zone on a DateTime.
*
* @param string|null $timezone
*
* @return \DateTime
*/
private static function setTimezone(\DateTime $dt, $timezone)
{
return $dt->setTimezone(new \DateTimeZone(static::resolveTimezone($timezone)));
}
/**
* Sets default time zone.
*
* @param string $timezone
*/
public static function setDefaultTimezone($timezone = null)
{
static::$defaultTimezone = $timezone;
}
/**
* Gets default time zone.
*
* @return string|null
*/
public static function getDefaultTimezone()
{
return static::$defaultTimezone;
}
/**
* @param string|null $timezone
*
* @return string|null
*/
private static function resolveTimezone($timezone)
{
return (null === $timezone) ? ((null === static::$defaultTimezone) ? date_default_timezone_get() : static::$defaultTimezone) : $timezone;
}
}
@@ -0,0 +1,154 @@
<?php
namespace Faker\Provider\de_AT;
use Faker\Provider\DateTime;
class Person extends \Faker\Provider\Person
{
protected static $maleNameFormats = [
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{titleMale}} {{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}} {{suffix}}',
'{{titleMale}} {{firstNameMale}} {{lastName}} {{suffix}}',
];
protected static $femaleNameFormats = [
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{titleFemale}} {{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}} {{suffix}}',
'{{titleFemale}} {{firstNameFemale}} {{lastName}} {{suffix}}',
];
/**
* 60 most popular names in 1985, 1995, 2005 and 2015
* {@link} https://www.statistik.at/wcm/idc/idcplg?IdcService=GET_NATIVE_FILE&RevisionSelectionMethod=LatestReleased&dDocName=115199
*/
protected static $firstNameMale = [
'Adrian', 'Alexander', 'Andreas', 'Anton',
'Ben', 'Benedikt', 'Benjamin', 'Bernd', 'Bernhard',
'Christian', 'Christoph', 'Christopher', 'Clemens',
'Daniel', 'David', 'Dominik',
'Elias', 'Emil', 'Erik',
'Fabian', 'Fabio', 'Felix', 'Finn', 'Florian', 'Franz',
'Gabriel', 'Georg', 'Gerald', 'Gerhard', 'Gernot', 'Gregor', 'Günther',
'Hannes', 'Harald', 'Helmut', 'Herbert',
'Jakob', 'Jan', 'Johann', 'Johannes', 'Jonas', 'Jonathan', 'Josef', 'Joseph', 'Julian', 'Justin', 'Jürgen',
'Karl', 'Kevin', 'Kilian', 'Klaus', 'Konstantin',
'Leo', 'Leon', 'Lorenz', 'Luca', 'Luis', 'Lukas',
'Manfred', 'Manuel', 'Marc', 'Marcel', 'Marco', 'Mario', 'Markus', 'Martin', 'Marvin', 'Matteo', 'Matthias', 'Max', 'Maximilian', 'Michael', 'Moritz',
'Nico', 'Nicolas', 'Niklas', 'Noah',
'Oliver', 'Oskar',
'Pascal', 'Patrick', 'Patrik', 'Paul', 'Peter', 'Philipp',
'Ralph', 'Raphael', 'Reinhard', 'René', 'Richard', 'Robert', 'Roland', 'Roman',
'Samuel', 'Sandro', 'Sascha', 'Sebastian', 'Simon', 'Stefan',
'Theo', 'Theodor', 'Thomas', 'Tim', 'Tobias',
'Valentin', 'Vincent',
'Werner', 'Wolfgang',
];
/**
* 60 most popular names in 1985, 1995, 2005 and 2015
* {@link} https://www.statistik.at/wcm/idc/idcplg?IdcService=GET_NATIVE_FILE&RevisionSelectionMethod=LatestReleased&dDocName=115199
*/
protected static $firstNameFemale = [
'Alexandra', 'Alexandrea', 'Algelika', 'Alina', 'Amelie', 'Andrea', 'Angelina', 'Anita', 'Anja', 'Anna', 'Anna-Lena', 'Annika', 'Astrid',
'Barbara', 'Bettina', 'Bianca', 'Birgit',
'Carina', 'Caroline', 'Celina', 'Chiara', 'Christina', 'Christine', 'Clara', 'Claudia', 'Cornelia',
'Daniela', 'Denise', 'Doris',
'Elena', 'Elisa', 'Elisabeth', 'Ella', 'Emely', 'Emilia', 'Emily', 'Emma', 'Eva', 'Eva-Maria',
'Franziska',
'Hanna', 'Hannah', 'Helena',
'Ines', 'Iris', 'Isabel', 'Isabella',
'Jacqueline', 'Jacquline', 'Jana', 'Janine', 'Jasmin', 'Jennifer', 'Jessica', 'Johanna', 'Julia',
'Karin', 'Katharina', 'Katrin', 'Kerstin',
'Lara', 'Larissa', 'Laura', 'Lea', 'Lena', 'Leonie', 'Lilly', 'Lina', 'Lisa', 'Livia', 'Luisa',
'Magdalena', 'Maja', 'Manuela', 'Maria', 'Marie', 'Marion', 'Marlene', 'Martina', 'Melanie', 'Melina', 'Mia', 'Michaela', 'Michelle', 'Miriam', 'Mona', 'Monika',
'Nadine', 'Natalie', 'Nicole', 'Nina', 'Nora',
'Patricia', 'Paula', 'Petra', 'Pia',
'Rebecca', 'Rosa',
'Sabine', 'Sabrina', 'Sandra', 'Sarah', 'Selina', 'Silvia', 'Simone', 'Sonja', 'Sophia', 'Sophie', 'Stefanie', 'Susanne',
'Tamara', 'Tanja', 'Theresa',
'Valentina', 'Valerie', 'Vanessa', 'Verena', 'Viktoria',
'Yvonne',
];
/**
* Top 500 Names from a phone directory (February 2004)
* {@link} https://de.wiktionary.org/w/index.php?title=Verzeichnis:Deutsch/Namen/die_h%C3%A4ufigsten_Nachnamen_%C3%96sterreichs
*/
protected static $lastName = [
'Abraham', 'Achleitner', 'Adam', 'Aichinger', 'Aigner', 'Albrecht', 'Altmann', 'Amann', 'Amon', 'Angerer', 'Arnold', 'Artner', 'Aschauer', 'Auer', 'Augustin', 'Auinger',
'Bacher', 'Bachler', 'Bachmann', 'Bader', 'Baier', 'Barth', 'Bartl', 'Bauer', 'Baumann', 'Baumgartner', 'Bayer', 'Beck', 'Beer', 'Berger', 'Bergmann', 'Bernhard', 'Bichler', 'Binder', 'Bischof', 'Bock', 'Bogner', 'Brandl', 'Brandner', 'Brandstetter', 'Brandstätter', 'Braun', 'Brenner', 'Bruckner', 'Brugger', 'Brunner', 'Buchberger', 'Buchegger', 'Bucher', 'Buchinger', 'Buchner', 'Burger', 'Burgstaller', 'Burtscher', 'Böck', 'Böhm', 'Bösch',
'Danner', 'Denk', 'Deutsch', 'Dietrich', 'Dobler', 'Doppler', 'Dorner', 'Draxler',
'Eberharter', 'Eberl', 'Ebner', 'Ecker', 'Eder', 'Edlinger', 'Egger', 'Eibl', 'Eichberger', 'Eichinger', 'Eigner', 'Erhart', 'Ernst', 'Ertl',
'Falkner', 'Fasching', 'Feichtinger', 'Fellner', 'Fiala', 'Fichtinger', 'Fiedler', 'Fink', 'Fischer', 'Fleischhacker', 'Forster', 'Forstner', 'Frank', 'Franz', 'Friedl', 'Friedrich', 'Fritsch', 'Fritz', 'Fröhlich', 'Frühwirth', 'Fuchs', 'Führer', 'Fürst',
'Gabriel', 'Gangl', 'Gartner', 'Gasser', 'Gassner', 'Geiger', 'Geisler', 'Geyer', 'Glaser', 'Glatz', 'Gmeiner', 'Grabner', 'Graf', 'Gratzer', 'Greiner', 'Grill', 'Gritsch', 'Gross', 'Groß', 'Gruber', 'Grünwald', 'Gschwandtner', 'Gutmann',
'Haas', 'Haberl', 'Hackl', 'Hafner', 'Hagen', 'Hager', 'Hahn', 'Haider', 'Haidinger', 'Haller', 'Hammer', 'Hammerl', 'Handl', 'Handler', 'Harrer', 'Hartl', 'Hartmann', 'Haslinger', 'Hauer', 'Hauser', 'Heindl', 'Heinrich', 'Hemetsberger', 'Herbst', 'Hermann', 'Herzog', 'Hinterberger', 'Hinteregger', 'Hinterleitner', 'Hirsch', 'Hochreiter', 'Hofbauer', 'Hofer', 'Hoffmann', 'Hofmann', 'Hofstätter', 'Holzer', 'Holzinger', 'Holzmann', 'Horvath', 'Huber', 'Huemer', 'Hufnagl', 'Humer', 'Hummer', 'Hutter', 'Hämmerle', 'Hödl', 'Höfler', 'Höller', 'Hölzl', 'Hörmann', 'Hütter',
'Jahn', 'Jandl', 'Janisch', 'Jovanovic', 'Jung', 'Jungwirth', 'Jäger',
'Kainz', 'Kaiser', 'Kaltenbrunner', 'Kapeller', 'Kargl', 'Karl', 'Karner', 'Kastner', 'Kaufmann', 'Kellner', 'Kern', 'Kerschbaumer', 'Kirchmair', 'Kirchner', 'Klammer', 'Klein', 'Klinger', 'Klug', 'Knapp', 'Knoll', 'Koch', 'Kofler', 'Kogler', 'Kohl', 'Koller', 'Kollmann', 'Konrad', 'Kopp', 'Kovacs', 'Kraft', 'Krainer', 'Kramer', 'Krammer', 'Kraus', 'Kremser', 'Krenn', 'Kreuzer', 'Kronberger', 'Kröll', 'Kugler', 'Kummer', 'Kurz', 'Köberl', 'Köck', 'Köhler', 'König',
'Lackner', 'Lamprecht', 'Lang', 'Langer', 'Lechner', 'Lederer', 'Leeb', 'Lehner', 'Leitgeb', 'Leitner', 'Lengauer', 'Lenz', 'Lettner', 'Lindner', 'List', 'Loidl', 'Lorenz', 'Ludwig', 'Luger', 'Lukas', 'Lutz', 'Löffler',
'Mader', 'Maier', 'Maierhofer', 'Mair', 'Mairhofer', 'Mandl', 'Markovic', 'Martin', 'Maurer', 'Mayer', 'Mayerhofer', 'Mayr', 'Mayrhofer', 'Meier', 'Meixner', 'Messner', 'Meyer', 'Mitterer', 'Moosbrugger', 'Moser', 'Muhr', 'Mühlbacher', 'Müller', 'Müllner',
'Nagl', 'Nemeth', 'Neubauer', 'Neuhauser', 'Neuhold', 'Neumann', 'Neumayer', 'Neuner', 'Neuwirth', 'Nikolic', 'Novak', 'Nowak', 'Nussbaumer', 'Nußbaumer',
'Ofner', 'Ortner', 'Oswald', 'Ott',
'Paar', 'Pacher', 'Pammer', 'Paul', 'Payer', 'Peer', 'Penz', 'Peter', 'Petrovic', 'Petz', 'Pfeffer', 'Pfeifer', 'Pfeiffer', 'Pfister', 'Pfleger', 'Pichler', 'Pilz', 'Pinter', 'Pirker', 'Plank', 'Plattner', 'Platzer', 'Pointner', 'Pokorny', 'Pollak', 'Posch', 'Prem', 'Prinz', 'Probst', 'Pucher', 'Putz', 'Pöll', 'Pölzl', 'Pöschl', 'Pühringer',
'Raab', 'Rabl', 'Rainer', 'Rath', 'Rauch', 'Rausch', 'Rauscher', 'Rauter', 'Rechberger', 'Redl', 'Reich', 'Reichl', 'Reindl', 'Reiner', 'Reinisch', 'Reischl', 'Reisinger', 'Reiter', 'Reiterer', 'Renner', 'Resch', 'Richter', 'Rieder', 'Riedl', 'Riedler', 'Rieger', 'Riegler', 'Rieser', 'Ritter', 'Rosenberger', 'Roth', 'Rupp',
'Sailer', 'Sattler', 'Sauer', 'Schachinger', 'Schachner', 'Schaffer', 'Schaller', 'Scharf', 'Schatz', 'Schauer', 'Scheiber', 'Schenk', 'Scheucher', 'Schiefer', 'Schiller', 'Schindler', 'Schlager', 'Schlögl', 'Schmid', 'Schmidt', 'Schmied', 'Schnabl', 'Schneeberger', 'Schneider', 'Schober', 'Scholz', 'Schranz', 'Schreiber', 'Schreiner', 'Schubert', 'Schuh', 'Schuller', 'Schulz', 'Schuster', 'Schwab', 'Schwaiger', 'Schwaighofer', 'Schwarz', 'Schweiger', 'Schweighofer', 'Schön', 'Schöpf', 'Schütz', 'Seebacher', 'Seidl', 'Siegl', 'Simon', 'Singer', 'Sommer', 'Sonnleitner', 'Spitzer', 'Springer', 'Stadler', 'Stangl', 'Stark', 'Staudinger', 'Steger', 'Steinbauer', 'Steinberger', 'Steindl', 'Steiner', 'Steininger', 'Steinkellner', 'Steinlechner', 'Steinwender', 'Stelzer', 'Stern', 'Steurer', 'Stocker', 'Stockinger', 'Strasser', 'Strauss', 'Strauß', 'Strobl', 'Stummer', 'Sturm', 'Stöckl', 'Stöger', 'Suppan', 'Swoboda', 'Szabo',
'Thaler', 'Thaller', 'Thurner', 'Tischler', 'Toth', 'Traxler', 'Trimmel', 'Trummer',
'Ulrich', 'Unger', 'Unterberger', 'Unterweger', 'Urban',
'Varga', 'Vogel', 'Vogl',
'Wachter', 'Wagner', 'Walch', 'Walcher', 'Wallner', 'Walter', 'Weber', 'Wechselberger', 'Wegscheider', 'Weidinger', 'Weigl', 'Weinberger', 'Weiss', 'Weiß', 'Weninger', 'Werner', 'Wieland', 'Wieser', 'Wiesinger', 'Wild', 'Wilhelm', 'Wimmer', 'Windisch', 'Winkler', 'Winter', 'Wirth', 'Wittmann', 'Wolf', 'Wurm', 'Wurzer',
'Zach', 'Zangerl', 'Zauner', 'Zechner', 'Zehetner', 'Zeilinger', 'Zeller', 'Zenz', 'Ziegler', 'Zimmermann', 'Zöhrer',
];
protected static $titleMale = ['Herr', 'Dr.', 'Mag.', 'Ing.', 'Dipl.-Ing.', 'Prof.', 'Univ.Prof.'];
protected static $titleFemale = ['Frau', 'Dr.', 'Maga.', 'Ing.', 'Dipl.-Ing.', 'Prof.', 'Univ.Prof.'];
protected static $suffix = ['B.Sc.', 'B.A.', 'B.Eng.', 'MBA.'];
/**
* @example 'PhD'
*/
public static function suffix()
{
return static::randomElement(static::$suffix);
}
/**
* Generates a random Austrian Social Security number.
*
* @see https://de.wikipedia.org/wiki/Sozialversicherungsnummer#.C3.96sterreich
*
* @return string
*/
public static function ssn(?\DateTime $birthdate = null)
{
$birthdate = $birthdate ?? DateTime::dateTimeThisCentury();
$birthDateString = $birthdate->format('dmy');
do {
$consecutiveNumber = (string) self::numberBetween(100, 999);
$verificationNumber = (
(int) $consecutiveNumber[0] * 3
+ (int) $consecutiveNumber[1] * 7
+ (int) $consecutiveNumber[2] * 9
+ (int) $birthDateString[0] * 5
+ (int) $birthDateString[1] * 8
+ (int) $birthDateString[2] * 4
+ (int) $birthDateString[3] * 2
+ (int) $birthDateString[4] * 1
+ (int) $birthDateString[5] * 6
) % 11;
} while ($verificationNumber == 10);
return sprintf('%s%s%s', $consecutiveNumber, $verificationNumber, $birthDateString);
}
}
@@ -0,0 +1,9 @@
<?php
namespace Faker\Provider\en_AU;
class Internet extends \Faker\Provider\Internet
{
protected static $freeEmailDomain = ['gmail.com', 'yahoo.com', 'hotmail.com', 'yahoo.com.au', 'hotmail.com.au'];
protected static $tld = ['com', 'com.au', 'org', 'org.au', 'net', 'net.au', 'biz', 'info', 'edu', 'edu.au'];
}
@@ -0,0 +1,130 @@
<?php
namespace Faker\Provider\en_GB;
class Company extends \Faker\Provider\Company
{
public const VAT_PREFIX = 'GB';
public const VAT_TYPE_DEFAULT = 'vat';
public const VAT_TYPE_BRANCH = 'branch';
public const VAT_TYPE_GOVERNMENT = 'gov';
public const VAT_TYPE_HEALTH_AUTHORITY = 'health';
/**
* UK VAT number
*
* This method produces numbers that are _reasonably_ representative
* of those issued by government
*
* @see https://en.wikipedia.org/wiki/VAT_identification_number#VAT_numbers_by_country
*/
public static function vat(?string $type = null): string
{
switch ($type) {
case static::VAT_TYPE_BRANCH:
return static::generateBranchTraderVatNumber();
case static::VAT_TYPE_GOVERNMENT:
return static::generateGovernmentVatNumber();
case static::VAT_TYPE_HEALTH_AUTHORITY:
return static::generateHealthAuthorityVatNumber();
default:
return static::generateStandardVatNumber();
}
}
/**
* Standard
* 9 digits (block of 3, block of 4, block of 2)
*
* This uses the format introduced November 2009 onward where the first
* block starts from 100 and the final two digits are generated via a the
* modulus 9755 algorithm
*/
private static function generateStandardVatNumber(): string
{
$firstBlock = static::numberBetween(100, 999);
$secondBlock = static::randomNumber(4, true);
return sprintf(
'%s%d %d %d',
static::VAT_PREFIX,
$firstBlock,
$secondBlock,
static::calculateModulus97($firstBlock . $secondBlock),
);
}
/**
* Health authorities
* the letters HA then 3 digits from 500 to 999 (e.g. GBHA599)
*/
private static function generateHealthAuthorityVatNumber(): string
{
return sprintf(
'%sHA%d',
static::VAT_PREFIX,
static::numberBetween(500, 999),
);
}
/**
* Branch traders
* 12 digits (as for 9 digits, followed by a block of 3 digits)
*/
private static function generateBranchTraderVatNumber(): string
{
return sprintf(
'%s %d',
static::generateStandardVatNumber(),
static::randomNumber(3, true),
);
}
/**
* Government departments
* the letters GD then 3 digits from 000 to 499 (e.g. GBGD001)
*/
private static function generateGovernmentVatNumber(): string
{
return sprintf(
'%sGD%s',
static::VAT_PREFIX,
str_pad((string) static::numberBetween(0, 499), 3, '0', STR_PAD_LEFT),
);
}
/**
* Apply a Modulus97 algorithm to an input
*
* @see https://library.croneri.co.uk/cch_uk/bvr/43-600
*/
public static function calculateModulus97(string $input, bool $use9755 = true): string
{
$digits = str_split($input);
if (count($digits) !== 7) {
throw new \InvalidArgumentException();
}
$multiplier = 8;
$sum = 0;
foreach ($digits as $digit) {
$sum += (int) $digit * $multiplier;
--$multiplier ;
}
if ($use9755) {
$sum = $sum + 55;
}
while ($sum > 0) {
$sum -= 97;
}
$sum = $sum * -1;
return str_pad((string) $sum, 2, '0', STR_PAD_LEFT);
}
}
@@ -0,0 +1,182 @@
<?php
namespace Faker\Provider\en_ZA;
use Faker\Calculator\Luhn;
class Person extends \Faker\Provider\Person
{
protected static $maleNameFormats = [
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{titleMale}} {{firstNameMale}} {{lastName}}',
];
protected static $femaleNameFormats = [
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{titleFemale}} {{firstNameFemale}} {{lastName}}',
];
protected static $firstNameMale = [
'Abraham', 'Adriaan', 'Adrian', 'Ahmed', 'Alan', 'Albert', 'Alex', 'Alexander', 'Alfred', 'Allan', 'Andile', 'Andre', 'Andrew',
'André', 'Anthony', 'Anton', 'Arnold', 'Arthur', 'Ayanda', 'Barry', 'Ben', 'Benjamin', 'Bernard', 'Bongani', 'Bradley',
'Brandon', 'Brent', 'Brett', 'Brian', 'Bruce', 'Bryan', 'Carel', 'Carl', 'Charl', 'Charles', 'Chris', 'Christiaan',
'Christian', 'Christo', 'Christopher', 'Clifford', 'Clint', 'Clinton', 'Clive', 'Colin', 'Conrad', 'Cornelius', 'Craig', 'Daniel',
'Darren', 'Dave', 'David', 'Dean', 'Dennis', 'Deon', 'Derek', 'Desmond', 'Dirk', 'Donald', 'Donovan', 'Douglas',
'Edward', 'Edwin', 'Emmanuel', 'Eric', 'Ernest', 'Etienne', 'Eugene', 'Francis', 'Francois', 'Frank', 'Frans', 'Frederick',
'Gabriel', 'Gareth', 'Garth', 'Gary', 'Gavin', 'George', 'Gerald', 'Gerhard', 'Gerrit', 'Gert', 'Gideon', 'Godfrey',
'Gordon', 'Graham', 'Grant', 'Greg', 'Gregory', 'Hannes', 'Heinrich', 'Hendrik', 'Hennie', 'Henry', 'Herman', 'Ian',
'Innocent', 'Isaac', 'Itumeleng', 'Ivan', 'Jabulani', 'Jaco', 'Jacob', 'Jacques', 'James', 'Jan', 'Jason', 'Jeffrey',
'Jeremy', 'Jerome', 'Joe', 'Johan', 'Johann', 'Johannes', 'John', 'Jonathan', 'Joseph', 'Juan', 'Julian', 'Justin',
'Keith', 'Kenneth', 'Kevin', 'Kgomotso', 'Kobus', 'Kyle', 'Lawrence', 'Lee', 'Leon', 'Leonard', 'Lloyd', 'Louis',
'Lucas ', 'Lucky', 'Malcolm', 'Mandla', 'Marc', 'Marco', 'Mario', 'Marius', 'Mark', 'Martin', 'Matthew', 'Mduduzi',
'Michael', 'Mike', 'Mogamat', 'Mohamed', 'Mohammed', 'Morne', 'Morné', 'Moses', 'Mr. ', 'Muhammad', 'Musa', 'Nathan',
'Neil', 'Neo', 'Neville', 'Nicholas', 'Nick', 'Nico', 'Nigel', 'Nkululeko', 'Norman', 'Ntokozo', 'Patrick', 'Paul',
'Peter', 'Petrus', 'Philip', 'Phillip', 'Pierre', 'Pieter', 'Prince', 'Raymond', 'Rene', 'René', 'Riaan', 'Ricardo',
'Richard', 'Rob', 'Robert', 'Rodney', 'Roger', 'Ronald', 'Roy', 'Rudi', 'Russell', 'Ryan', 'Sam', 'Samuel',
'Sandile', 'Sean', 'Shane', 'Shaun', 'Shawn', 'Sibusiso', 'Simon', 'Simone', 'Simphiwe', 'Siphiwe', 'Sipho', 'Siyabonga',
'Sizwe', 'Stanley', 'Stefan', 'Stephan', 'Stephen', 'Steve', 'Steven', 'Stuart', 'Tebogo', 'Terence', 'Thabang', 'Thabiso',
'Thabo', 'Thando', 'Thapelo', 'Themba', 'Theo', 'Thomas', 'Timothy', 'To ', 'Tony', 'Trevor', 'Tshepo', 'Tsholofelo',
'Vernon', 'Victor', 'Vincent', 'Walter', 'Warren', 'Wayne', 'Werner', 'Wesley', 'Willem', 'William', 'Willie', 'Wynand',
'Xolani', 'Yusuf', 'andries', 'barend', 'contact', 'dumisani', 'jacobus', 'kabelo', 'kagiso', 'karabo', 'lesego', 'marthinus',
'mashudu', 'next', 'nhlanhla', 'nicolaas', 'nkosinathi', 'personal', 'sello', 'sifiso', 'takalani', 'teboho', 'thulani', 'tumelo',
'vusi', 'your',
// below are unknown gender firstnames
'Andries', 'Babalwa', 'Barend', 'Bulelwa', 'Contact ', 'Dumisani', 'Fikile', 'Jacobus', 'Kabelo', 'Kagiso', 'Karabo', 'Kelebogile', 'Lesego',
'Lindiwe', 'Marthinus', 'Mashudu', 'Next', 'Nhlanhla', 'Nicolaas', 'Nkosinathi', 'Nompumelelo', 'Nonhlanhla', 'Nonkululeko', 'Nosipho', 'Nozipho',
'Personal', 'Phumzile', 'Refiloe', 'Sello', 'Sibongile', 'Sifiso', 'Siphokazi', 'Takalani', 'Teboho', 'Thandeka', 'Thandi', 'Thembi',
'Thulani', 'Tumelo', 'Unathi', 'Vusi', 'Vuyokazi', 'Yolandi', 'Your', 'Zandile',
];
protected static $firstNameFemale = [
'Abigail', 'Adele', 'Alicia', 'Alison', 'Amanda', 'Andiswa', 'Andrea', 'Angela', 'Angelique', 'Anita', 'Anna', 'Anne', 'Anthea',
'Antoinette', 'Asanda', 'Ashley', 'Aubrey', 'Barbara', 'Belinda', 'Beverley', 'Bianca', 'Boitumelo', 'Bongiwe', 'Brenda', 'Bronwyn',
'Busisiwe', 'Candice', 'Carla', 'Carmen', 'Carol', 'Caroline', 'Catherine', 'Cecilia', 'Celeste', 'Chantal', 'Chantel', 'Chantelle',
'Charlene', 'Charlotte', 'Charmaine', 'Cheryl', 'Christina', 'Christine', 'Cindy', 'Claire', 'Claudia', 'Colleen', 'Cynthia', 'Danie',
'Danielle', 'Debbie', 'Deborah', 'Denise', 'Desiree', 'Diane', 'Dimakatso', 'Dineo', 'Duduzile', 'Elaine', 'Elizabeth', 'Estelle',
'Esther ', 'Faith', 'Fatima', 'Fiona', 'Gail', 'Gillian', 'Gloria', 'Grace', 'Gugu', 'Gugulethu', 'Heather', 'Heidi',
'Helen', 'Ingrid', 'Irene', 'Jackie', 'Jacqueline', 'Jane', 'Janet', 'Janine', 'Jean', 'Jeanette ', 'Jennifer', 'Jenny',
'Jessica', 'Johanna', 'Joyce', 'Juanita', 'Judith', 'Julia', 'Julie', 'Karen', 'Karin', 'Katlego', 'Kelly', 'Kim',
'Laura', 'Lauren', 'Lebogang', 'Lebohang', 'Lee-ann', 'Leigh', 'Lerato', 'Lesley', 'Liezel', 'Linda', 'Lisa', 'Lizelle',
'Lorraine', 'Louise', 'Lungile', 'Lydia', 'Lynette', 'Lynn', 'Mandisa', 'Mandy', 'Margaret', 'Maria', 'Marlene', 'Martha',
'Mary', 'Maureen', 'Mbali', 'Megan', 'Melanie', 'Melissa', 'Michelle', 'Miss', 'Monica', 'Monique', 'Mpho', 'Nadia',
'Nadine', 'Natalie', 'Natasha', 'Nicola', 'Nicole', 'Nicolene', 'Nicolette', 'Nokuthula', 'Nomfundo', 'Nomsa', 'Nthabiseng', 'Olivia',
'Palesa', 'Pamela', 'Patience', 'Patricia', 'Pearl', 'Phindile ', 'Portia', 'Precious', 'Priscilla', 'Prudence', 'Rachel', 'Rebecca',
'Refilwe', 'Robin', 'Robyn', 'Ronel', 'Roxanne', 'Ruth', 'Samantha', 'Sandra', 'Sarah', 'Shannon', 'Sharon', 'Shirley',
'Sonja', 'Stephanie', 'Susan', 'Sydney', 'Sylvia', 'Tania', 'Tanya', 'Taryn', 'Tasneem', 'Thato', 'Theresa', 'Tracey',
'Tracy', 'Tshegofatso', 'Tshepiso', 'Ursula', 'Vanessa', 'Veronica', 'Victoria', 'Wendy', 'Yolanda', 'Yvette', 'Yvonne', 'Zama',
'Zanele', 'Zelda', 'babalwa', 'bulelwa', 'fikile', 'kelebogile', 'lindiwe', 'nompumelelo', 'nonhlanhla', 'nonkululeko', 'nosipho', 'nozipho',
'phumzile', 'refiloe', 'sibongile', 'siphokazi', 'thandeka', 'thandi', 'thembi', 'unathi', 'vuyokazi', 'yolandi', 'zandile',
// below are unknown gender firstnames
'Andries', 'Babalwa', 'Barend', 'Bulelwa', 'Contact ', 'Dumisani', 'Fikile', 'Jacobus', 'Kabelo', 'Kagiso', 'Karabo', 'Kelebogile', 'Lesego',
'Lindiwe', 'Marthinus', 'Mashudu', 'Next', 'Nhlanhla', 'Nicolaas', 'Nkosinathi', 'Nompumelelo', 'Nonhlanhla', 'Nonkululeko', 'Nosipho', 'Nozipho',
'Personal', 'Phumzile', 'Refiloe', 'Sello', 'Sibongile', 'Sifiso', 'Siphokazi', 'Takalani', 'Teboho', 'Thandeka', 'Thandi', 'Thembi',
'Thulani', 'Tumelo', 'Unathi', 'Vusi', 'Vuyokazi', 'Yolandi', 'Your', 'Zandile',
];
protected static $lastName = [
'Naidoo', 'Govender', 'Pillay', 'Smith', 'Botha', 'van der Merwe', 'Jacobs', 'Moodley', 'Singh', 'Ndlovu', 'Dlamini',
'Pretorius', 'Williams', 'Khumalo', 'du Plessis', 'Nkosi', 'Coetzee', 'Venter', 'Nel', 'Fourie', 'Van Wyk', 'Chetty',
'Smit', 'Kruger', 'Van Zyl', 'Sithole', 'du Toit', 'Adams', 'van Niekerk', 'Reddy', 'Khan', 'Meyer', 'Mahlangu', 'Abrahams',
'Mokoena', 'Erasmus', 'Dube', 'Louw', 'Le Roux', 'Steyn', 'Tshabalala', 'Swanepoel', 'Naicker', 'Marais', 'Joubert',
'Baloyi', 'Petersen', 'Davids', 'Viljoen', 'Maharaj', 'Details', 'Swart', 'Radebe', 'Potgieter', 'van der Westhuizen',
'Move', 'Strydom', 'Mkhize', 'Olivier', 'Du Preez', 'Van Rooyen', 'Brown', 'Engelbrecht', 'Oosthuizen', 'Hendricks',
'Ngwenya', 'van der Walt', 'Johnson', 'Thomas', 'Van Heerden', 'Ngcobo', 'de Beer', 'Khoza', 'Barnard', 'Ferreira',
'Muller', 'Mazibuko', 'Zulu', 'Moyo', 'Zwane', 'Maseko', 'Chauke', 'Bezuidenhout', 'De Villiers', 'Jones', 'Buthelezi',
'Mthembu', 'Jordaan', 'Molefe', 'Mofokeng', 'Burger', 'Visser', 'Daniels', 'Maluleke', 'Pienaar', 'Martin', 'Cloete',
'Prinsloo', 'Mathebula', 'Janse van Rensburg', 'Grobler', 'Wilson', 'Ncube', 'Gumede', 'Ngobeni', 'Moloi', 'Kekana',
'Mhlongo', 'Mbatha', 'Nxumalo', 'Theron', 'Snyman', 'Phiri', 'Sibiya', 'Ntuli', 'Van Den Berg', 'Mabaso', 'Bester',
'Isaacs', 'Labuschagne', 'Jansen', 'Pieterse', 'Vorster', 'De Wet', 'Schoeman', 'De Klerk', 'Groenewald', 'Sibanda',
'Rossouw', 'Van Rensburg', 'Naidu', 'De Jager', 'van Staden', 'Scheepers', 'Nhlapo', 'Nkuna', 'Kotze', 'Mtshali',
'Modise', 'Ismail', 'Van Schalkwyk', 'Padayachee', 'Taylor', 'Thompson', 'Motaung', 'Booysen', 'Patel', 'Harris',
'Joseph', 'Mthethwa', 'Arendse', 'Vilakazi', 'Lombard', 'Roberts', 'Steenkamp', 'Roux', 'Gouws', 'Botes', 'De Kock',
'Lewis', 'James', 'Mnisi', 'Mohamed', 'Africa', 'Wessels', 'Badenhorst', 'Miller', 'Hlongwane', 'Hlatshwayo', 'Vermeulen',
'Kunene', 'Liebenberg', 'Alexander', 'Mudau', 'Myburgh', 'van Tonder', 'Hattingh', 'Mhlanga', 'Francis', 'Mkhwanazi',
'Basson', 'Boshoff', 'Scott', 'Xaba', 'De Lange', 'Mphahlele', 'Ebrahim', 'Cele', 'Matlala', 'Beukes', 'Coetzer',
'Nkomo', 'Ledwaba', 'Ndaba', 'Parker', 'Els', 'Green', 'Mnguni', 'Scholtz', 'King', 'Anderson', 'Langa', 'Mulaudzi',
'Simelane', 'Jackson', 'Shabangu', 'Mostert', 'Dhlamini', 'Geldenhuys', 'Ngubane', 'Skosana', 'Bekker', 'Phillips',
'Brits', 'Mahomed', 'Human', 'Peters', 'George', 'Cronje', 'Sibeko', 'Swartz', 'Jooste', 'Matthews', 'Du Plooy',
'Roos', 'Van Vuuren', 'Esterhuizen', 'Masuku', 'Mabunda', 'Lawrence', 'Moses', 'Fisher', 'Visagie', 'Solomon', 'Naude',
'Gerber', 'Campbell', 'Lubbe', 'Van Dyk', 'Vermaak', 'Kubheka', 'Malan', 'da Silva', 'White', 'Malatji', 'Mashaba',
'Edwards', 'Banda', 'Greyling', 'Dreyer', 'Hadebe', 'Fredericks', 'Mdluli', 'Maritz', 'Zondi', 'Masemola', 'Mabasa',
'Fortuin', 'Shabalala', 'Bosman', 'Brink', 'Ndhlovu', 'Moonsamy', 'Mogale', 'Tsotetsi', 'Mabena', 'Morris', 'Mitchell',
'Morgan', 'Gordon', 'Robinson', 'Dladla', 'Kriel', 'Young', 'Moloto', 'Mabuza', 'Richards', 'Sibanyoni', 'Stevens',
'Pather', 'Mngomezulu', 'Masango', 'Solomons', 'Mlambo', 'Shongwe', 'Mthombeni', 'Lourens', 'Zungu', 'Mamabolo',
'Watson', 'Opperman', 'Stander', 'Nair', 'Twala', 'Uys', 'Letsoalo', 'Clark', 'Wright', 'Mohlala', 'Cupido', 'Delport',
'Sibisi', 'Terblanche', 'Motloung', 'De Bruyn', 'Davis', 'Ndou', 'Bothma', 'Benjamin', 'Jansen van Vuuren', 'Rikhotso',
'Majola', 'Pietersen', 'Mashego', 'Herbst', 'van Deventer', 'Conradie', 'Khanyile', 'Msibi', 'Mchunu', 'Buys', 'Malinga',
'Britz', 'Bailey', 'Cilliers', 'Goosen', 'Walker', 'Schutte', 'Salie', 'Samuels', 'Davies', 'Nkabinde', 'Robertson',
'Lee', 'Perumal', 'Mbele', 'Greeff', 'Brand', 'Manuel', 'Nyathi', 'Kumar', 'Moore', 'Masilela', 'Bell', 'Mohale',
'Hill', 'Maree', 'Ross', 'Bouwer', 'Ellis', 'Kemp', 'Mpofu', 'Wood', 'Stewart', 'Ahmed', 'Peter', 'Slabbert', 'Nortje',
'Murray', 'Van Aswegen', 'De Bruin', 'Collins', 'Blignaut', 'Van Der Berg', 'Modiba', 'Jonker', 'Hall', 'Mouton',
'Allie', 'Van Jaarsveld', 'Minnaar', 'Street', 'Maake', 'Zondo', 'Koekemoer', 'Koen', 'Claassen', 'Khosa', 'Barnes',
'Bosch', 'Mncube', 'Marx', 'Ntombela', 'Nell', 'Makhubela', 'Jansen van Rensburg', 'Evans', 'Clarke', 'Strauss',
'Mokone', 'Moosa', 'Neethling', 'September', 'Madonsela', 'Willemse', 'Mashigo', 'Simpson', 'Otto', 'Legodi', 'Mlangeni',
'Mokwena', 'Andrews', 'Mashele', 'Gounden', 'Zuma', 'Msomi', 'Ngema', 'Bennett', 'Baker', 'Ntshangase', 'Nene',
'Magagula', 'Tladi', 'Xulu', 'Müller', 'Laubscher', 'Maluleka', 'May', 'Rautenbach', 'Ndebele', 'Grobbelaar', 'Henning',
'Carstens', 'Maleka', 'Odendaal', 'Kok', 'Oliver', 'Cassim', 'Van Eeden', 'Lottering', 'Mavuso', 'Mashinini', 'Kumalo',
'Mathe', 'Taljaard', 'Molepo', 'David', 'Shezi', 'Turner', 'Oberholzer', 'Motsepe', 'Alberts', 'Adonis', 'van den Heever',
'van der Linde', 'Marshall', 'Hugo', 'Thwala', 'Park', 'Cooper', 'Nelson', 'John', 'Anthony', 'Adam', 'Naudé', 'Harrison',
'Mulder', 'Enslin', 'Truter', 'Khuzwayo', 'Makhanya', 'Harmse', 'Loubser', 'Kleynhans', 'Paul', 'Nieuwoudt', 'Horn',
'Vosloo', 'Wentzel', 'Munyai', 'Kelly', 'Walters', 'Nzimande', 'Hoosen', 'Mkhabela', 'Madlala', 'Saunders', 'Palmer',
'Hughes', 'Hanekom', 'Ally', 'Schmidt', 'Butler', 'Mtsweni', 'Maphumulo', 'Manamela', 'Hoffman', 'Wolmarans', 'Duma',
'Pule', 'Hlophe', 'Miya', 'Moagi',
];
protected static $titleMale = ['Mr.', 'Dr.', 'Prof.', 'Rev.', 'Hon.'];
protected static $titleFemale = ['Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.', 'Rev.', 'Hon.'];
protected static $licenceCodes = ['A', 'A1', 'B', 'C', 'C1', 'C2', 'EB', 'EC', 'EC1', 'I', 'L', 'L1'];
/**
* @see https://en.wikipedia.org/wiki/National_identification_number#South_Africa
*
* @param bool $citizen
* @param string $gender
*
* @return string
*/
public function idNumber(?\DateTime $birthdate = null, $citizen = true, $gender = null)
{
if (!$birthdate) {
$birthdate = $this->generator->dateTimeThisCentury();
}
$birthDateString = $birthdate->format('ymd');
switch (strtolower($gender ?: '')) {
case static::GENDER_FEMALE:
$genderDigit = self::numberBetween(0, 4);
break;
case static::GENDER_MALE:
$genderDigit = self::numberBetween(5, 9);
break;
default:
$genderDigit = self::numberBetween(0, 9);
}
$sequenceDigits = str_pad(self::randomNumber(3), 3, 0, STR_PAD_BOTH);
$citizenDigit = ($citizen === true) ? '0' : '1';
$raceDigit = self::numberBetween(8, 9);
$partialIdNumber = $birthDateString . $genderDigit . $sequenceDigits . $citizenDigit . $raceDigit;
return $partialIdNumber . Luhn::computeCheckDigit($partialIdNumber);
}
/**
* @see https://en.wikipedia.org/wiki/Driving_licence_in_South_Africa
*
* @return string
*/
public function licenceCode()
{
return static::randomElement(static::$licenceCodes);
}
}
@@ -0,0 +1,154 @@
<?php
namespace Faker\Provider\fi_FI;
class Person extends \Faker\Provider\Person
{
protected static $maleNameFormats = [
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{firstNameMale}} {{lastName}}',
'{{titleMale}} {{firstNameMale}} {{lastName}}',
];
protected static $femaleNameFormats = [
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{firstNameFemale}} {{lastName}}',
'{{titleFemale}} {{firstNameFemale}} {{lastName}}',
];
protected static $firstNameMale = [
'Aleksi', 'Anssi', 'Antero', 'Antti', 'Ari', 'Arttu', 'Daniel', 'Eero', 'Eetu', 'Elias', 'Elmo', 'Emil', 'Erkki',
'Hampus', 'Hannu', 'Harri', 'Heikki', 'Helmi', 'Henri', 'Hermanni', 'Ilja', 'Jaakko', 'Jake', 'Jani', 'Janne',
'Jari', 'Jarno', 'Jere', 'Jeremy', 'Jesper', 'Jesse', 'Jimi', 'Joakim', 'Joel', 'Joona', 'Joonas', 'Juha',
'Juho', 'Jukka', 'Julius', 'Jussi', 'Justus', 'Juuso', 'Kalle', 'Kasperi', 'Konsta', 'Kristian', 'Lassi', 'Leevi',
'Leo', 'Levin', 'Luca', 'Lukas', 'Magnus', 'Marko', 'Markus', 'Matias', 'Matti', 'Miika', 'Mika', 'Mikael',
'Mikko', 'Neo', 'Nico', 'Niklas', 'Niko', 'Oliver', 'Oskari', 'Ossi', 'Otto', 'Paavo', 'Pasi', 'Patrik',
'Paulus', 'Peetu', 'Pekka', 'Pertti', 'Petri', 'Petteri', 'Pyry', 'Rami', 'Rasmus', 'Riku', 'Risto', 'Roope',
'Saku', 'Sami', 'Samu', 'Samuel', 'Samuli', 'Santeri', 'Taneli', 'Tatu', 'Teemu', 'Teppo', 'Tero', 'Timo',
'Tomi', 'Tommi', 'Topi', 'Touko', 'Tuomas', 'Tuomo', 'Tuukka', 'Tuukka', 'Valtteri', 'Veli', 'Viljo', 'Ville',
'Aake', 'Aapeli', 'Aapo', 'Aappo', 'Aarni', 'Aaro', 'Aatto', 'Aatu', 'Akseli', 'Aku', 'Antton', 'Artturi',
'Aune', 'Beeda', 'Briitta', 'Eeli', 'Eelis', 'Eemeli', 'Ekku', 'Eljas', 'Erkko', 'Iiro', 'Ilmari', 'Isto',
'Jirko', 'Joonatan', 'Jore', 'Junnu', 'Jusu', 'Kaste', 'Kauto', 'Luukas', 'Nuutti', 'Onni', 'Osmo', 'Pekko',
'Sampo', 'Santtu', 'Sauli', 'Simo', 'Sisu', 'Teijo', 'Unto', 'Urho', 'Veeti', 'Veikko', 'Vilho', 'Werneri', 'Wiljami',
];
protected static $firstNameFemale = [
'Aada', 'Ada', 'Aina', 'Aino', 'Aki', 'Aliisa', 'Amalia', 'Amanda', 'Amelia', 'Amira', 'Anissa', 'Anita', 'Anna',
'Anne', 'Anni', 'Anniina', 'Annu', 'Anu', 'Asta', 'Atte', 'Atte', 'Aura', 'Aurora', 'Bella', 'Cara',
'Celina', 'Christa', 'Christel', 'Clara', 'Cornelia', 'Dani', 'Eija', 'Elea', 'Elina', 'Elisa', 'Elise', 'Ella',
'Ellen', 'Elma', 'Emilia', 'Emma', 'Emmi', 'Enna', 'Erja', 'Esa', 'Essi', 'Eva', 'Eveliina', 'Fanni',
'Fiona', 'Hanna', 'Heidi', 'Heli', 'Helinä', 'Henna', 'Hilda', 'Hilja', 'Hilla', 'Hilma', 'Iida', 'Iina',
'Iiris', 'Ilona', 'Inka', 'Inkeri', 'Inna', 'Isabella', 'Jade', 'Jami', 'Janette', 'Janika', 'Janina', 'Janita',
'Janna', 'Janni', 'Jasmiina', 'Jenna', 'Jenni', 'Jessica', 'Johanna', 'Joni', 'Jonna', 'Julia', 'Juulia', 'Kaija',
'Karla', 'Karri', 'Kati', 'Katja', 'Katri', 'Kia', 'Kimi', 'Kirsi', 'Krista', 'Lari', 'Laura', 'Lauri',
'Lea', 'Lila', 'Linnea', 'Lotta', 'Lumina', 'Maarit', 'Maia', 'Maija', 'Maiju', 'Maisa', 'Mari', 'Maria',
'Meeri', 'Meri', 'Mette', 'Mia', 'Milla', 'Mimi', 'Mimosa', 'Minna', 'Mira', 'Mirella', 'Miska', 'Nadja',
'Natalia', 'Nea', 'Neea', 'Nella', 'Nia', 'Niina', 'Noora', 'Olga', 'Olivia', 'Oona', 'Outi', 'Paula',
'Pauliina', 'Petra', 'Pia', 'Piia', 'Pinja', 'Päivi', 'Reeta', 'Reetta', 'Riikka', 'Riina', 'Ritva', 'Roni',
'Ronja', 'Sanna', 'Sari', 'Satu', 'Seija', 'Sirpa', 'Siru', 'Susanna', 'Tanja', 'Tara', 'Taru', 'Tea',
'Terhi', 'Tiia', 'Tiina', 'Tiiu', 'Tinja', 'Veera', 'Vili', 'Vilma', 'Wilma', 'Aamu', 'Aliina', 'Annilotta',
'Eerika', 'Eeva', 'Eevi', 'Eliina', 'Elviira', 'Emmaliina', 'Enni', 'Ennika', 'Helmiina', 'Henniina',
'Hertta', 'Hilppa', 'Iia', 'Iita', 'Jadessa', 'Jemina', 'Jenika', 'Jermia', 'Jooa', 'Juttamari', 'Kaisla',
'Kaisu', 'Loviisa', 'Malla', 'Martta', 'Matleena', 'Miina', 'Mimmu', 'Minea', 'Minttu', 'Mirva', 'Nelli', 'Ninni',
'Oliivia', 'Peppi', 'Pihla', 'Pirkko', 'Riia', 'Roosa', 'Taika', 'Venla', 'Viivi', 'Vilja',
];
protected static $lastName = [
'Aakula', 'Aalto', 'Aaltonen', 'Aarnio', 'Aaronen', 'Aavikkola', 'Ahmala', 'Aho', 'Ahokas', 'Ahola', 'Ahomaa', 'Ahonen', 'Ahoniemi', 'Ahopelto', 'Ahovaara', 'Ahtila', 'Ahtiluoto', 'Ahtio', 'Ahtisaari', 'Ahto', 'Ahtola', 'Ahtonen', 'Ahtorinne', 'Aija', 'Aijala', 'Ainola', 'Aitio', 'Aitolahti', 'Aitomaa', 'Aittasalmi', 'Akkala', 'Akkanen', 'Alahuhta', 'Alajoki', 'Alajärvi', 'Alanen', 'Alatalo', 'Alasalmi', 'Alapuro', 'Alhola', 'Alijoki', 'Ankkala', 'Ankkuri', 'Annala', 'Annunen', 'Anttila', 'Anttinen', 'Anttonen', 'Ara', 'Arhila', 'Arhinmäki', 'Arhosuo', 'Arinen', 'Arjamaa', 'Arjanen', 'Arkkila', 'Armio', 'Arnio', 'Aronen', 'Arosuo', 'Arponen', 'Arvola', 'Asikainen', 'Astala', 'Attila', 'Aunela', 'Aura', 'Auramies', 'Auranen', 'Autio', 'Auvinen', 'Auvola', 'Avonius', 'Avotie',
'Bräysy',
'Davidsainen', 'Dufva',
'Eerikäinen', 'Eerola', 'Einel', 'Eino', 'Einola', 'Einonen', 'Ekman', 'Ekola', 'Ellilä', 'Ellinen', 'Elomaa', 'Eloharju', 'Eloranta', 'Eno', 'Enola', 'Enäjärvi', 'Erkinjuntti', 'Erkkilä', 'Erkkinen', 'Erkko', 'Erkkola', 'Ernamo', 'Erola', 'Eronen', 'Ervola', 'Eräharju', 'Erämaja', 'Eränen', 'Eskelinen', 'Eskelä', 'Eskola', 'Evelä', 'Evilä',
'Filppula', 'Finni', 'Frändilä', 'Fränti',
'Haahka', 'Haahkola', 'Haanpää', 'Haapakorpi', 'Haapala', 'Haapanen', 'Haaparanta', 'Haapasalmi', 'Haapasalo', 'Haapkylä', 'Haapoja', 'Haataja', 'Haavisto', 'Haikala', 'Haikara', 'Hakala', 'Hakkarainen', 'Hakki', 'Hakula', 'Halinen', 'Halkola', 'Halkonen', 'Halla', 'Hallaper', 'Hallapuro', 'Hallikainen', 'Hallila', 'Hallonen', 'Halme', 'Halmela', 'Halmelahti', 'Halonen', 'Halttunen', 'Hammas', 'Hanhela', 'Hanhinen', 'Hannula', 'Hannunen', 'Hapola', 'Harjamäki', 'Harju', 'Harjula', 'Harjunpää', 'Harkimo', 'Hautakangas', 'Hautakoski', 'Hautala', 'Hautamäki', 'Haverinen', 'Havukoski', 'Heikkilä', 'Heikkinen', 'Heimola', 'Heinälä', 'Heiskanen', 'Heiskari', 'Helenius', 'Helinen', 'Helismaa', 'Helmel', 'Helovirta', 'Helppolainen', 'Helstel', 'Hellgren', 'Hentinen', 'Hento', 'Hepomäki', 'Heponen', 'Herranen', 'Hervanta', 'Hervanto', 'Hekkaharju', 'Hiesu', 'Hietala', 'Hietanen', 'Hiltunen', 'Heintikainen', 'Hirvelä', 'Hirvi', 'Hirvikangas', 'Hirvonen', 'Hoikkala', 'Hoikkanen', 'Holappa', 'Holkeri', 'Hongisto', 'Honkanen', 'Hovi', 'Huhta', 'Huhtala', 'Hukkala', 'Huopainen', 'Huotari', 'Huovinen', 'Huttunen', 'Huuhka', 'Huurinainen', 'Huusko', 'Huvinen', 'Hyppölä', 'Hyppönen', 'Hytölä', 'Hyypiä', 'Hyyppä', 'Häkkinen', 'Häkämies', 'Hämäläinen', 'Hänninen', 'Härkönen',
'Ihalainen', 'Ikola', 'Ikonen', 'Ilmarinen', 'Ilomäki', 'Iloniemi', 'Ilvesniemi', 'Immonen', 'Inkeri', 'Inkinen', 'Isoluoma', 'Isomäki', 'Isotalo', 'Itkonen', 'Itävaara', 'Itävuori',
'Jaakkola', 'Jaakkonen', 'Jaakonmaa', 'Jaatinen', 'Jakkila', 'Jalonen', 'Jauhiainen', 'Jauho', 'Joenhaara', 'Johto', 'Jokelainen', 'Jokihaara', 'Jokimies', 'Jokinen', 'Jortikka', 'Joru', 'Junkkari', 'Juntti', 'Juppi', 'Jurva', 'Jurvala', 'Jurvanen', 'Jussila', 'Juustinen', 'Juuti', 'Juvanen', 'Juvonen', 'Jylhä', 'Jänis', 'Jäppinen', 'Järvelä', 'Jääskeläinen',
'Kaakko', 'Kaikkonen', 'Kainulainen', 'Kaista', 'Kaivola', 'Kakkola', 'Kakkonen', 'Kalinainen', 'Kalkkinen', 'Kalliala', 'Kallio', 'Kaillomäki', 'Kalmo', 'Kalvo', 'Kamari', 'Kamppinen', 'Kanala', 'Kangaskorte', 'Kangassalo', 'Kannelmaa', 'Kannelmäki', 'Kantele', 'Kantola', 'Kapanen', 'Karalahti', 'Karhu', 'Karjalainen', 'Karpela', 'Karppinen', 'Karukoski', 'Karvonen', 'Katainen', 'Kataja', 'Kauhala', 'Kaukovaara', 'Kauppala', 'Kauppinen', 'Kaurismäki', 'Kekkonen', 'Kerava', 'Kerttula', 'Keskinen', 'Keskioja', 'Ketola', 'Ketonen', 'Kettula', 'Kieli', 'Kiianen', 'Kiille', 'Kimalainen', 'Kiiski', 'Kinnula', 'Kinnunen', 'Kiskonen', 'Kissala', 'Kivi', 'Kiviniemi', 'Kivistö', 'Koirala', 'Koivisto', 'Koivula', 'Koivulehto', 'Koivuniemi', 'Kokkonen', 'Kolehmainen', 'Komulainen', 'Konttinen', 'Kontunen', 'Korhonen', 'Koriseva', 'Kortesjärvi', 'Koskela', 'Koskelainen', 'Kosonen', 'Kotanen', 'Koukkula', 'Kouvonen', 'Kovalainen', 'Krapu', 'Krekelä', 'Kujala', 'Kujanpää', 'Kukkala', 'Kukkamäki', 'Kukkonen', 'Kultala', 'Kumpula', 'Kumpulainen', 'Kunnas', 'Kuoppala', 'Kuosmanen', 'Kurkela', 'Kurki', 'Kuusijärvi', 'Kyllönen', 'Kynsijärvi', 'Kynsilehto', 'Kärki', 'Kärkkäinen',
'Laakkola', 'Laakkonen', 'Laakso', 'Laaksonen', 'Laatikainen', 'Lahdenpää', 'Laine', 'Lainela', 'Lakka', 'Lampinen', 'Lappalainen', 'Lassinen', 'Laurila', 'Lauronen', 'Lavola', 'Lehmälä', 'Lehtimäki', 'Lehtinen', 'Lehtisalo', 'Lehto', 'Lehtonen', 'Leino', 'Lepistö', 'Lepomäki', 'Leppilampi', 'Leppäkorpi', 'Leppälä', 'Leppävirta', 'Leskinen', 'Liimatainen', 'Lind', 'Linnala', 'Linnamäki', 'Lippo', 'Litmanen', 'Litvala', 'Liukkonen', 'Loiri', 'Lukkari', 'Lumme', 'Luoma', 'Luukkonen', 'Lyly', 'Lyytikäinen', 'Lähteenmäki', 'Lämsä',
'Maahinen', 'Made', 'Maijala', 'Makkonen', 'Malmi', 'Malmivaara', 'Mannila', 'Manninen', 'Mannonen', 'Mansikka-aho', 'Mansikkaoja', 'Marila', 'Marjala', 'Marjamäki', 'Marjola', 'Marjomaa', 'Marjonen', 'Markkanen', 'Markkula', 'Markuksela', 'Markus', 'Martikainen', 'Marttinen', 'Masala', 'Masanen', 'Matomäki', 'Mattila', 'Maunula', 'Maunola', 'Melasniemi', 'Merelä', 'Merilä', 'Meriläinen', 'Merimaa', 'Metsoja', 'Metsälampi', 'Metsäoja', 'Mielonen', 'Miettinen', 'Mikkola', 'Mikkonen', 'Muhonen', 'Mujunen', 'Murola', 'Mustapää', 'Mustonen', 'Muurinen', 'Myllymäki', 'Myllypuro', 'Myllys', 'Mylläri', 'Mäenpää', 'Mäkelä', 'Mäki', 'Mäkinen', 'Mäntylä', 'Määttä', 'Möttönen',
'Naula', 'Naulapää', 'Neuvonen', 'Nevala', 'Niemelä', 'Niemi', 'Nieminen', 'Niemistö', 'Niinimaa', 'Niinistö', 'Niiranen', 'Nikkanen', 'Nikkilä', 'Nikula', 'Nikulainen', 'Niskala', 'Nisukangas', 'Niukkanen', 'Nokelainen', 'Nokkonen', 'Notkonen', 'Nousiainen', 'Nukka', 'Nummelin', 'Nuotio', 'Nurkkala', 'Nurmela', 'Nurmi', 'Nurminiemi', 'Nurminen', 'Nuutti', 'Nykänen', 'Nyman', 'Närvälä', 'Näätänen',
'Oikkonen', 'Oikonen', 'Oinonen', 'Oja', 'Ojala', 'Ojamäki', 'Ojanen', 'Ojaniemi', 'Oksala', 'Oksanen', 'Ollikainen', 'Ollila', 'Ollinen', 'Oravainen', 'Oravala', 'Otsamo', 'Outinen', 'Ovaska',
'Paajanen', 'Paakkanen', 'Paananen', 'Paasikivi', 'Paasilinna', 'Paasonen', 'Paavola', 'Pahajoki', 'Pahkasalo', 'Pajumäki', 'Pajunen', 'Pakarinen', 'Pakkala', 'Pakola', 'Pallas', 'Paloheimo', 'Palola', 'Palomäki', 'Parkkonen', 'Pekkala', 'Pekkarinen', 'Pelkonen', 'Peltomaa', 'Pennanen', 'Pennilä', 'Pentikäinen', 'Penttilä', 'Perniö', 'Pesola', 'Pesonen', 'Peuranen', 'Peuraniemi', 'Pietilä', 'Piippola', 'Piirainen', 'Pikkarainen', 'Pirttijärvi', 'Pirttikangas', 'Pitkämäki', 'Pohtamo', 'Porkkala', 'Poronen', 'Poropudas', 'Puhakainenä', 'Puhakka', 'Pukkila', 'Pulli', 'Puolakka', 'Puuperä', 'Pyykkö', 'Pyykkönen', 'Päivälä', 'Päivärinta', 'Pääkkönen', 'Pöllönen', 'Pöntinen', 'Pöysti',
'Raappana', 'Raatikainen', 'Raatila', 'Rahka', 'Rahkala', 'Raiskio', 'Raitanen', 'Raittila', 'Rajamäki', 'Ramu', 'Ranta', 'Rantamaa', 'Rapala', 'Rasila', 'Rasmus', 'Rauhala', 'Rauhanen', 'Rautaporras', 'Rautavirta', 'Rautio', 'Rehu', 'Reinikainen', 'Reinikka', 'Rekomaa', 'Repo', 'Repola', 'Riihimäki', 'Riikonen', 'Rimmanen', 'Rinne', 'Rinta', 'Rintamäki', 'Ristilä', 'Ritari', 'Rokko', 'Ronkainen', 'Roponen', 'Ruhanen', 'Rumpunen', 'Runtti', 'Ruohoniemi', 'Ruonala', 'Ruonansuu', 'Ruotsalainen', 'Ruuhonen', 'Ruuskari', 'Ruusula', 'Ruutti', 'Ryhänen', 'Ryti', 'Ryysyläinen', 'Räikkönen', 'Räisänen', 'Räsänen',
'Saanila', 'Saarela', 'Saarenheimo', 'Saari', 'Saarikivi', 'Saarnio', 'Saarnivaara', 'Saastamoinen', 'Saikkonen', 'Saksala', 'Salenius', 'Salmela', 'Salmelainen', 'Salo', 'Salolainen', 'Salonen', 'Saloranta', 'Samulin', 'Sannala', 'Santanen', 'Saraste', 'Sarasvuo', 'Saukko', 'Savioja', 'Savolainen', 'Selänne', 'Seppelin', 'Seppänen', 'Seppälä', 'Servo', 'Setänen', 'Siekkinen', 'Sievinen', 'Sihvonen', 'Siira', 'Siltonen', 'Sikala', 'Silakka', 'Sillanpää', 'Siltala', 'Silvennoinen', 'Simo', 'Simonen', 'Sinnemäki', 'Sipilä', 'Sipola', 'Sirkesalo', 'Sirviö', 'Raiski', 'Soikkeli', 'Soini', 'Sonninen', 'Soppela', 'Sorajoki', 'Sormunen', 'Sorsa', 'Suhonen', 'Suikkala', 'Summanen', 'Suomela', 'Suominen', 'Suosalo', 'Susiluoto', 'Sutinen', 'Suuronen', 'Suutarinen', 'Suvela', 'Sydänmäki', 'Syrjä', 'Syrjälä', 'Säkkinen', 'Särkkä',
'Taavettila', 'Taavila', 'Taavitsainen', 'Taipale', 'Takkala', 'Takkula', 'Tamminen', 'Tammisto', 'Tanskanen', 'Tapio', 'Tapola', 'Tarvainen', 'Taskinen', 'Tastula', 'Tauriainen', 'Tenkanen', 'Teppo', 'Tervo', 'Tervonen', 'Teräsniska', 'Tiainen', 'Tiilikainen', 'Timonen', 'Toijala', 'Toikkanen', 'Toivanen', 'Tokkola', 'Tolonen', 'Torkkeli', 'Tuisku', 'Tukiainen', 'Tulkki', 'Tuomela', 'Tuominen', 'Tuomisto', 'Tuppurainen', 'Turpeinen', 'Turunen', 'Tuutti', 'Tynkkynen', 'Typpö', 'Tyrninen', 'Törrö', 'Törrönen',
'Ukkola', 'Ulvila', 'Unhola', 'Uosukainen', 'Urhonen', 'Uronen', 'Urpalainen', 'Urpilainen', 'Utriainen', 'Uusikari', 'Uusikylä', 'Uusisalmi', 'Uusitalo',
'Vaara', 'Vahala', 'Vahanen', 'Vahvanen', 'Vainio', 'Valjakka', 'Valo', 'Valtanen', 'Vanhanen', 'Vanhoja', 'Varjus', 'Vartiainen', 'Vasala', 'Vauhkonen', 'Veijonen', 'Veini', 'Vennala', 'Vennamo', 'Vepsäläinen', 'Vesa', 'Vesuri', 'Veteläinen', 'Vierikko', 'Vihtanen', 'Viikate', 'Viinanen', 'Viinikka', 'Vilhola', 'Viljanen', 'Vilkkula', 'Vilpas', 'Virkkula', 'Virkkunen', 'Virolainen', 'Virtala', 'Voutilainen', 'Vuokko', 'Vuorenpää', 'Vuorikoski', 'Vuorinen', 'Vähälä', 'Väisälä', 'Väisänen', 'Välimaa', 'Välioja', 'Väyrynen', 'Väätänen',
'Wettenranta', 'Wiitanen', 'Wirtanen', 'Wiskari',
'Ylijälä', 'Yliannala', 'Ylijoki', 'Ylikangas', 'Ylioja', 'Ylitalo', 'Ylppö', 'Yläjoki', 'Yrjänen', 'Yrjänä', 'Yrjölä', 'Yrttiaho', 'Yömaa',
'Äijälä', 'Ämmälä', 'Änäkkälä', 'Äyräs', 'Äärynen',
'Översti', 'Öysti', 'Öörni',
];
protected static $titleMale = ['Hra.', 'Tri.'];
protected static $titleFemale = ['Rva.', 'Nti.', 'Tri.'];
/**
* National Personal Identity Number (Henkilötunnus)
*
* @see http://www.finlex.fi/fi/laki/ajantasa/2010/20100128
*
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
*
* @return string on format DDMMYYCZZZQ, where DDMMYY is the date of birth, C the century sign, ZZZ the individual number and Q the control character (checksum)
*/
public function personalIdentityNumber(?\DateTime $birthdate = null, $gender = null)
{
$checksumCharacters = '0123456789ABCDEFHJKLMNPRSTUVWXY';
if (!$birthdate) {
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
}
$datePart = $birthdate->format('dmy');
switch ((int) ($birthdate->format('Y') / 100)) {
case 18:
$centurySign = '+';
break;
case 19:
$centurySign = '-';
break;
case 20:
$centurySign = 'A';
break;
default:
throw new \InvalidArgumentException('Year must be between 1800 and 2099 inclusive.');
}
$randomDigits = self::numberBetween(0, 89);
if ($gender && $gender == static::GENDER_MALE) {
if ($randomDigits === 0) {
$randomDigits .= static::randomElement([3, 5, 7, 9]);
} else {
$randomDigits .= static::randomElement([1, 3, 5, 7, 9]);
}
} elseif ($gender && $gender == static::GENDER_FEMALE) {
if ($randomDigits === 0) {
$randomDigits .= static::randomElement([2, 4, 6, 8]);
} else {
$randomDigits .= static::randomElement([0, 2, 4, 6, 8]);
}
} else {
if ($randomDigits === 0) {
$randomDigits .= self::numberBetween(2, 9);
} else {
$randomDigits .= (string) static::numerify('#');
}
}
$randomDigits = str_pad($randomDigits, 3, '0', STR_PAD_LEFT);
$checksum = $checksumCharacters[(int) ($datePart . $randomDigits) % strlen($checksumCharacters)];
return $datePart . $centurySign . $randomDigits . $checksum;
}
}
@@ -0,0 +1,168 @@
<?php
namespace Faker\Provider\fr_FR;
class PhoneNumber extends \Faker\Provider\PhoneNumber
{
// Phone numbers can't start by 00 in France
// 01 is the most common prefix
protected static $formats = [
'+33 (0)1 ## ## ## ##',
'+33 (0)1 ## ## ## ##',
'+33 (0)2 ## ## ## ##',
'+33 (0)3 ## ## ## ##',
'+33 (0)4 ## ## ## ##',
'+33 (0)5 ## ## ## ##',
'+33 (0)6 {{phoneNumber06WithSeparator}}',
'+33 (0)7 {{phoneNumber07WithSeparator}}',
'+33 (0)8 {{phoneNumber08WithSeparator}}',
'+33 (0)9 ## ## ## ##',
'+33 1 ## ## ## ##',
'+33 1 ## ## ## ##',
'+33 2 ## ## ## ##',
'+33 3 ## ## ## ##',
'+33 4 ## ## ## ##',
'+33 5 ## ## ## ##',
'+33 6 {{phoneNumber06WithSeparator}}',
'+33 7 {{phoneNumber07WithSeparator}}',
'+33 8 {{phoneNumber08WithSeparator}}',
'+33 9 ## ## ## ##',
'01########',
'01########',
'02########',
'03########',
'04########',
'05########',
'06{{phoneNumber06}}',
'07{{phoneNumber07}}',
'08{{phoneNumber08}}',
'09########',
'01 ## ## ## ##',
'01 ## ## ## ##',
'02 ## ## ## ##',
'03 ## ## ## ##',
'04 ## ## ## ##',
'05 ## ## ## ##',
'06 {{phoneNumber06WithSeparator}}',
'07 {{phoneNumber07WithSeparator}}',
'08 {{phoneNumber08WithSeparator}}',
'09 ## ## ## ##',
];
// Mobile phone numbers start by 06 and 07
// 06 is the most common prefix
protected static $mobileFormats = [
'+33 (0)6 {{phoneNumber06WithSeparator}}',
'+33 6 {{phoneNumber06WithSeparator}}',
'+33 (0)7 {{phoneNumber07WithSeparator}}',
'+33 7 {{phoneNumber07WithSeparator}}',
'06{{phoneNumber06}}',
'07{{phoneNumber07}}',
'06 {{phoneNumber06WithSeparator}}',
'07 {{phoneNumber07WithSeparator}}',
];
protected static $serviceFormats = [
'+33 (0)8 {{phoneNumber08WithSeparator}}',
'+33 8 {{phoneNumber08WithSeparator}}',
'08 {{phoneNumber08WithSeparator}}',
'08{{phoneNumber08}}',
];
protected static $e164Formats = [
'+33#########',
];
public function phoneNumber06()
{
$phoneNumber = $this->phoneNumber06WithSeparator();
return str_replace(' ', '', $phoneNumber);
}
/**
* Only 0601 to 0638, 0640 to 0689, 0695 and 0698 to 0699 are acceptable prefixes with 06
*
* @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961
* @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33
*/
public function phoneNumber06WithSeparator()
{
$regex = '([0-24-8]\d|3[0-8]|9[589])( \d{2}){3}';
return static::regexify($regex);
}
public function phoneNumber07()
{
$phoneNumber = $this->phoneNumber07WithSeparator();
return str_replace(' ', '', $phoneNumber);
}
/**
* Only 0730 to 0789 are acceptable prefixes with 07
*
* @see https://www.arcep.fr/la-regulation/grands-dossiers-thematiques-transverses/la-numerotation.html#c8961
* @see https://www.itu.int/itu-t/nnp/#/numbering-plans?country=France%C2%A0&code=33
*/
public function phoneNumber07WithSeparator()
{
$regex = '([3-8]\d)( \d{2}){3}';
return static::regexify($regex);
}
public function phoneNumber08()
{
$phoneNumber = $this->phoneNumber08WithSeparator();
return str_replace(' ', '', $phoneNumber);
}
/**
* Valid formats for 08:
*
* 0# ## ## ##
* 1# ## ## ##
* 2# ## ## ##
* 91 ## ## ##
* 92 ## ## ##
* 93 ## ## ##
* 97 ## ## ##
* 98 ## ## ##
* 99 ## ## ##
*
* Formats 089(4|6)## ## ## are valid, but will be
* attributed when other 089 resource ranges are exhausted.
*
* @see https://www.arcep.fr/index.php?id=8146#c9625
* @see https://issuetracker.google.com/u/1/issues/73269839
*/
public function phoneNumber08WithSeparator()
{
$regex = '([012]\d|(9[1-357-9])( \d{2}){3}';
return static::regexify($regex);
}
/**
* @example '0601020304'
*/
public function mobileNumber()
{
$format = static::randomElement(static::$mobileFormats);
return static::numerify($this->generator->parse($format));
}
/**
* @example '0891951357'
*/
public function serviceNumber()
{
$format = static::randomElement(static::$serviceFormats);
return static::numerify($this->generator->parse($format));
}
}
@@ -0,0 +1,72 @@
<?php
namespace Faker\Provider\kk_KZ;
class Company extends \Faker\Provider\Company
{
protected static $companyNameFormats = [
'{{companyPrefix}} {{companyNameElement}}',
'{{companyPrefix}} {{companyNameElement}}{{companyNameElement}}',
'{{companyPrefix}} {{companyNameElement}}{{companyNameElement}}{{companyNameElement}}',
'{{companyPrefix}} {{companyNameElement}}{{companyNameElement}}{{companyNameElement}}{{companyNameSuffix}}',
];
protected static $companyPrefixes = [
'АҚ', 'ЖШС', 'ЖАҚ',
];
protected static $companyNameSuffixes = [
'Құрылыс', 'Машина', 'Бұзу', '-М', 'Лизинг', 'Страх', 'Ком', 'Телеком',
];
protected static $companyElements = [
'Қазақ', 'Кітап', 'Цемент', 'Лифт', 'Креп', 'Авто', 'Теле', 'Транс', 'Алмаз', 'Метиз',
'Мотор', 'Қаз', 'Тех', 'Сантех', 'Алматы', 'Астана', 'Электро',
];
/**
* @example 'ЖШС АлматыТелеком'
*/
public function company()
{
$format = static::randomElement(static::$companyNameFormats);
return $this->generator->parse($format);
}
public static function companyPrefix()
{
return static::randomElement(static::$companyPrefixes);
}
public static function companyNameElement()
{
return static::randomElement(static::$companyElements);
}
public static function companyNameSuffix()
{
return static::randomElement(static::$companyNameSuffixes);
}
/**
* National Business Identification Numbers
*
* @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fbus_business%2Ffor_businessmen%2Farticle%2Fbusiness_identification_number&lang=en
*
* @return string 12 digits, like 150140000019
*/
public static function businessIdentificationNumber(?\DateTime $registrationDate = null)
{
if (!$registrationDate) {
$registrationDate = \Faker\Provider\DateTime::dateTimeThisYear();
}
$dateAsString = $registrationDate->format('ym');
$legalEntityType = (string) self::numberBetween(4, 6);
$legalEntityAdditionalType = (string) self::numberBetween(0, 3);
$randomDigits = (string) static::numerify('######');
return $dateAsString . $legalEntityType . $legalEntityAdditionalType . $randomDigits;
}
}
@@ -0,0 +1,265 @@
<?php
namespace Faker\Provider\kk_KZ;
use Faker\Provider\DateTime;
class Person extends \Faker\Provider\Person
{
public const GENDER_MALE = 0;
public const GENDER_FEMALE = 1;
public const CENTURY_19TH = 0;
public const CENTURY_20TH = 1;
public const CENTURY_21ST = 2;
public const MALE_CENTURY_19TH = 1;
public const MALE_CENTURY_20TH = 3;
public const MALE_CENTURY_21ST = 5;
public const FEMALE_CENTURY_19TH = 2;
public const FEMALE_CENTURY_20TH = 4;
public const FEMALE_CENTURY_21ST = 6;
/**
* @var array
*/
public static $firstSequenceBitWeights = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
/**
* @var array
*/
public static $secondSequenceBitWeights = [3, 4, 5, 6, 7, 8, 9, 10, 11, 1, 2];
/**
* @var array
*/
public static $genderCenturyMap = [
self::GENDER_MALE => [
self::CENTURY_19TH => self::MALE_CENTURY_19TH,
self::CENTURY_20TH => self::MALE_CENTURY_20TH,
self::CENTURY_21ST => self::MALE_CENTURY_21ST,
],
self::GENDER_FEMALE => [
self::CENTURY_19TH => self::FEMALE_CENTURY_19TH,
self::CENTURY_20TH => self::FEMALE_CENTURY_20TH,
self::CENTURY_21ST => self::FEMALE_CENTURY_21ST,
],
];
/**
* @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F
*
* @var array
*/
protected static $maleNameFormats = [
'{{lastName}}ұлы {{firstNameMale}}',
];
/**
* @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F
*
* @var array
*/
protected static $femaleNameFormats = [
'{{lastName}}қызы {{firstNameFemale}}',
];
/**
* @see http://koshpendi.kz/index.php/nomad/imena/
*
* @var array
*/
protected static $firstNameMale = [
'Аылғазы',
'Әбдіқадыр',
'Бабағожа',
'Ғайса',
'Дәмен',
'Егізбек',
'Жазылбек',
'Зұлпықар',
'Игісін',
'Кәдіржан',
'Қадырқан',
'Латиф',
'Мағаз',
'Нармағамбет',
'Оңалбай',
'Өндіріс',
'Пердебек',
'Рақат',
'Сағындық',
'Танабай',
'Уайыс',
'Ұйықбай',
'Үрімбай',
'Файзрахман',
'Хангелді',
'Шаттық',
'Ыстамбақы',
'Ібни',
];
/**
* @see http://koshpendi.kz/index.php/nomad/imena/
*
* @var array
*/
protected static $firstNameFemale = [
'Асылтас',
'Әужа',
'Бүлдіршін',
'Гүлшаш',
'Ғафура',
'Ділдә',
'Еркежан',
'Жібек',
'Зылиқа',
'Ирада',
'Күнсұлу',
'Қырмызы',
'Ләтипа',
'Мүштәри',
'Нұршара',
'Орынша',
'Өрзия',
'Перизат',
'Рухия',
'Сындыбала',
'Тұрсынай',
'Уәсима',
'Ұрқия',
'Үрия',
'Фируза',
'Хафиза',
'Шырынгүл',
'Ырысты',
'Іңкәр',
];
/**
* @see http://koshpendi.kz/index.php/nomad/imena/
* @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D0%BA%D0%B0%D1%8F_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F
*
* @var array
*/
protected static $lastName = [
'Адырбай',
'Әжібай',
'Байбөрі',
'Ғизат',
'Ділдабек',
'Ешмұхамбет',
'Жігер',
'Зікірия',
'Иса',
'Кунту',
'Қыдыр',
'Лұқпан',
'Мышырбай',
'Нысынбай',
'Ошақбай',
'Өтетілеу',
'Пірәлі',
'Рүстем',
'Сырмұхамбет',
'Тілеміс',
'Уәлі',
'Ұлықбек',
'Үстем',
'Фахир',
'Хұсайын',
'Шілдебай',
'Ыстамбақы',
'Ісмет',
];
/**
* Note! When calculating individual identification number
* 2000-01-01 - 2000-12-31 counts as 21th century
* 1900-01-01 - 1900-12-31 counts as 20th century
*
* @param int $year
*
* @return int
*/
private static function getCenturyByYear($year)
{
if (($year >= 2100) || ($year < 1800)) {
throw new \InvalidArgumentException('Unexpected century');
}
if ($year >= 2000) {
return self::CENTURY_21ST;
}
if ($year >= 1900) {
return self::CENTURY_20TH;
}
return self::CENTURY_19TH;
}
/**
* National Individual Identification Numbers
*
* @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fcitizen_migration%2Fpassport_id_card%2Farticle%2Fiin_info&lang=en
* @see https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80
*
* @param int $gender
*
* @return string 12 digits, like 780322300455
*/
public static function individualIdentificationNumber(?\DateTime $birthDate = null, $gender = self::GENDER_MALE)
{
if (!$birthDate) {
$birthDate = DateTime::dateTimeBetween();
}
do {
$population = self::numberBetween(1000, 2000);
$century = self::getCenturyByYear((int) $birthDate->format('Y'));
$iin = $birthDate->format('ymd');
$iin .= (string) self::$genderCenturyMap[$gender][$century];
$iin .= (string) $population;
$checksum = self::checkSum($iin);
} while ($checksum === 10);
return $iin . (string) $checksum;
}
/**
* @param string $iinValue
*
* @return int
*/
public static function checkSum($iinValue)
{
$controlDigit = self::getControlDigit($iinValue, self::$firstSequenceBitWeights);
if ($controlDigit === 10) {
return self::getControlDigit($iinValue, self::$secondSequenceBitWeights);
}
return $controlDigit;
}
/**
* @param string $iinValue
* @param array $sequence
*
* @return int
*/
protected static function getControlDigit($iinValue, $sequence)
{
$sum = 0;
for ($i = 0; $i <= 10; ++$i) {
$sum += (int) $iinValue[$i] * $sequence[$i];
}
return $sum % 11;
}
}
@@ -0,0 +1,390 @@
<?php
namespace Faker\Provider\lt_LT;
class Person extends \Faker\Provider\Person
{
protected static $maleNameFormats = [
'{{firstNameMale}} {{lastNameMale}}',
];
protected static $femaleNameFormats = [
'{{firstNameFemale}} {{lastNameFemale}}',
];
protected static $lastNameFormat = [
'{{firstNameMale}}',
'{{firstNameFemale}}',
];
protected static $titleMale = ['p.', 'ponas'];
protected static $titleFemale = ['p.', 'ponia', 'panelė'];
/**
* @see https://lt.wikipedia.org/wiki/S%C4%85ra%C5%A1as:Lietuvoje_paplit%C4%99_vardai
*/
protected static $firstNameMale = [
'Abramas', 'Abraomas', 'Achilas', 'Adalbertas', 'Adamas', 'Adas', 'Adolfas', 'Adolis', 'Adomas',
'Adrijus', 'Agatas', 'Agnius', 'Aidas', 'Ainius', 'Aistis', 'Aivaras', 'Akimas', 'Akvilinas', 'Albertas', 'Albrechtas',
'Albinas', 'Aldonas', 'Aleksandras', 'Aleksas', 'Alenas', 'Alfas', 'Alfonsas', 'Alfredas', 'Algimantas', 'Algirdas',
'Algis', 'Alius', 'Almantas', 'Almis', 'Almonas', 'Aloyzas', 'Alpas', 'Alpis', 'Alvidas', 'Alvydas', 'Ambraziejus',
'Anatolijus', 'Anatolis', 'Andreas', 'Andriejus', 'Andrius', 'Andžejus', 'Anicetas', 'Anisimas', 'Antanas', 'Antonas',
'Antonijus', 'Antonis', 'Anupras', 'Anzelmas', 'Apolinaras', 'Apolonijus', 'Aras', 'Arijus', 'Arimantas', 'Aristarchas',
'Aristidas', 'Arkadijus', 'Armantas', 'Arminas', 'Arnas', 'Arnoldas', 'Aronas', 'Arsenas', 'Arsenijus', 'Artas',
'Artiomas', 'Artūras', 'Arūnas', 'Arvaidas', 'Arvydas', 'Astijus', 'Audrius', 'Audrys', 'Audronius', 'Augis',
'Augustas', 'Augustinas', 'Aurelijus', 'Aurimas', 'Aušrius', 'Aušrys', 'Ąžuolas', 'Balys', 'Baltazaras', 'Baltramiejus',
'Baltrus', 'Banguolis', 'Bartas', 'Bartvydas', 'Bazilijus', 'Benas', 'Benediktas', 'Benonas', 'Benius', 'Benjaminas',
'Bernardas', 'Beržas', 'Bijūnas', 'Bogdanas', 'Boguslavas', 'Boleslavas', 'Boleslovas', 'Bonifacas', 'Borisas',
'Bronislavas', 'Bronislovas', 'Bronius', 'Brunas', 'Brunonas', 'Cecilijus', 'Celestinas', 'Cezaris', 'Chaimas',
'Charitonas', 'Ciprijonas', 'Česius', 'Česlovas', 'Čiogintas', 'Dainius', 'Daivis', 'Dalius', 'Damijonas', 'Danas',
'Dangerutis', 'Danielius', 'Danila', 'Danius', 'Darijus', 'Darius', 'Dariušas', 'Daumantas', 'Davidas', 'Deimantas',
'Deividas', 'Deivis', 'Demetrijus', 'Demjanas', 'Denis', 'Denisas', 'Dimitrijus', 'Diomidas', 'Dionizas', 'Dmitrijus',
'Dobilas', 'Donatas', 'Domantas', 'Domas', 'Dominykas', 'Donaldas', 'Dovydas', 'Dovilis', 'Dovis', 'Drąsius',
'Drąsutis', 'Džeraldas', 'Džiraldas', 'Džiugas', 'Džonis', 'Edgaras', 'Edmundas', 'Eduardas', 'Edvardas', 'Edvinas',
'Egidijus', 'Eidimantas', 'Eidminas', 'Eidvydas', 'Eimantas', 'Eimis', 'Einius', 'Eivydas', 'Eldaras', 'Eligijus',
'Elijus', 'Elmantas', 'Emanuelis', 'Emilis', 'Emilijonas', 'Emilijus', 'Enrikas', 'Erazmas', 'Erdvilas', 'Erichas',
'Erikas', 'Ernestas', 'Ervinas', 'Eugenijus', 'Eugeniušas', 'Evaldas', 'Fabijus', 'Faustas', 'Fedoras', 'Felicijonas',
'Felicijus', 'Feliksas', 'Ferdinandas', 'Filipas', 'Fiodoras', 'Foma', 'Flavijus', 'Florijonas', 'Francas',
'Francišekas', 'Fredas', 'Fridrikas', 'Gabrielis', 'Gabrielius', 'Gailimantas', 'Gailius', 'Galmantas', 'Gasparas',
'Gaudenis', 'Gaudrimas', 'Gaudvydas', 'Gavrila', 'Gavrilas', 'Gedas', 'Gedgaudas', 'Gediminas', 'Gedmantas', 'Gedmas',
'Gedminas', 'Gedvaldas', 'Gedvydas', 'Gedvilas', 'Geivydas', 'Genadijus', 'Gendrius', 'Genrichas', 'Georgijus',
'Geraldas', 'Gerardas', 'Gerdas', 'Gerimantas', 'Germanas', 'Germantas', 'Gerutis', 'Gervydas', 'Giedrius', 'Gilbertas',
'Gintaras', 'Gintas', 'Gintis', 'Gintautas', 'Girėnas', 'Girius', 'Girmantas', 'Girvydas', 'Gitanas', 'Gytautas',
'Gytis', 'Gordejus', 'Gotfridas', 'Gracijonas', 'Gracijus', 'Gražvydas', 'Grigalius', 'Grigas', 'Grigorijus', 'Gunaras',
'Gustas', 'Gustavas', 'Gustis', 'Gvidas', 'Gvidonas', 'Haraldas', 'Haris', 'Haroldas', 'Hektoras', 'Helmutas',
'Henrikas', 'Henris', 'Herbertas', 'Herkus', 'Hermanas', 'Hilarijus', 'Horacijus', 'Horstas', 'Hubertas', 'Ignacas',
'Ignas', 'Ignotas', 'Igoris', 'Ilja', 'Imantas', 'Indrius', 'Ingvaras', 'Inocentas', 'Ipolitas', 'Irenijus', 'Irmantas',
'Irtautas', 'Irvydas', 'Isaakas', 'Isakas', 'Ivanas', 'Izidorius', 'Izoldas', 'Jacekas', 'Jakovas', 'Jakubas', 'Janas',
'Janis', 'Jankelis', 'Janušas', 'Jaroslavas', 'Jaunius', 'Jaunutis', 'Jegoras', 'Jemeljanas', 'Jeronimas', 'Jevgenijus',
'Ježis', 'Joanas', 'Jogaila', 'Jogintas', 'Jogirdas', 'Jokimas', 'Jokūbas', 'Jolantas', 'Jomantas', 'Jonaras', 'Jonas',
'Jonis', 'Joris', 'Jorūnas', 'Josifas', 'Jotautas', 'Jovaldas', 'Jovaras', 'Jovitas', 'Judrius', 'Julijonas', 'Julijus',
'Julius', 'Juljanas', 'Juozapas', 'Juozapatas', 'Juozas', 'Juras', 'Jurgis', 'Jurijus', 'Jūras', 'Jūris', 'Justas',
'Justinas', 'Juvencijus', 'Juzefas', 'Kajetonas', 'Kajus', 'Kalikstas', 'Kalnius', 'Kamilis', 'Kaributas', 'Karlas',
'Karolis', 'Karpas', 'Kasparas', 'Kastantas', 'Kastytis', 'Kazimieras', 'Kazys', 'Kęstas', 'Kęstautas', 'Kęstutis',
'Kimas', 'Kipras', 'Kiprijonas', 'Kirilas', 'Klaudas', 'Klaudijus', 'Klemas', 'Klemensas', 'Klementas', 'Kleopas',
'Klevas', 'Klimas', 'Klimentijus', 'Kondratas', 'Konradas', 'Konstantinas', 'Kornelijus', 'Kostas', 'Kovas', 'Kozmas',
'Krescencijus', 'Kristijonas', 'Kristinas', 'Kristoforas', 'Kristupas', 'Ksaveras', 'Kšištofas', 'Kuprijanas', 'Laimis',
'Laimonas', 'Laimutis', 'Laisvydas', 'Laisvis', 'Laisvūnas', 'Lauras', 'Laurentijus', 'Laurynas', 'Lauris',
'Lavrentijus', 'Leandras', 'Leonardas', 'Leonas', 'Leonidas', 'Leopoldas', 'Levas', 'Libertas', 'Linas', 'Lionginas',
'Liubartas', 'Liubomiras', 'Liucijonas', 'Liucijus', 'Liudas', 'Liudvigas', 'Liudvikas', 'Liūtas', 'Liutauras',
'Livijus', 'Lozorius', 'Lukas', 'Lukrecijus', 'Makaras', 'Makarijus', 'Maksas', 'Maksimas', 'Maksimilijonas',
'Mamertas', 'Manfredas', 'Mangirdas', 'Mantas', 'Mantautas', 'Mantrimas', 'Mantvydas', 'Maratas', 'Marcelijus ',
'Marcelinas', 'Marcelius', 'Marekas', 'Margiris', 'Marianas', 'Marijonas', 'Marijus', 'Marinas', 'Marius', 'Markas',
'Martas', 'Martinas', 'Martynas', 'Matas', 'Mateušas', 'Matvejus', 'Mažvydas', 'Mečislavas', 'Mečislovas', 'Mečys',
'Medardas', 'Medas', 'Mefodijus', 'Melanijus', 'Melchioras', 'Mendelis', 'Merkys', 'Merūnas', 'Michalas', 'Michailas',
'Miglius', 'Mikalojus', 'Mikas', 'Mikolajus', 'Milanas', 'Mildas', 'Milvydas', 'Mindaugas', 'Minijus', 'Mykolas',
'Mingaudas', 'Mintaras', 'Miroslavas', 'Modestas', 'Morkus', 'Motiejus', 'Mozė', 'Naglis', 'Napalis', 'Napalys',
'Napoleonas', 'Napolis', 'Narcizas', 'Narimantas', 'Narsutis', 'Narvydas', 'Natanas', 'Natas', 'Naumas', 'Nauris',
'Nazaras', 'Nazarijus', 'Nedas', 'Neimantas', 'Neivydas', 'Nemunas', 'Nerijus', 'Nerimantas', 'Nerimas', 'Neringas',
'Nerius', 'Nidas', 'Nikandras', 'Nikas', 'Nikiforas', 'Nikita', 'Nikodemas', 'Nikola', 'Nikolajus', 'Nilas', 'Nojus',
'Nomedas', 'Norbertas', 'Normanas', 'Normantas', 'Nortautas', 'Norvydas', 'Norvilas', 'Oktavijus', 'Olegas', 'Orestas',
'Orintas', 'Oskaras', 'Osmundas', 'Osvaldas', 'Otas', 'Otilijus', 'Otonas', 'Ovidijus', 'Palemonas', 'Palmyras',
'Patricijus', 'Patrikas', 'Paulis', 'Paulius', 'Petras', 'Pijus', 'Pilypas', 'Pilėnas', 'Piotras', 'Platonas',
'Polikarpas', 'Polis', 'Povilas', 'Pranas', 'Pranciškus', 'Putinas', 'Radvila', 'Rafaelis', 'Rafailas', 'Rafalas',
'Raigardas', 'Raimondas', 'Raimundas', 'Rainoldas', 'Ralfas', 'Ramintas', 'Ramonas', 'Ramūnas', 'Rapolas', 'Rasius',
'Raulis', 'Redas', 'Regimantas', 'Reginaldas', 'Reinhardas', 'Remas', 'Remigijus', 'Renaldas', 'Renatas', 'Renius',
'Richardas', 'Ričardas', 'Rikardas', 'Rimantas', 'Rimas', 'Rimgaudas', 'Rimtas', 'Rimtautas', 'Rimtis', 'Rimvydas',
'Rinatas', 'Ryšardas', 'Rytas', 'Rytautas', 'Rytis', 'Robertas', 'Robinas', 'Rodrigas', 'Rokas', 'Rolandas', 'Rolfas',
'Romanas', 'Romas', 'Romualdas', 'Ronaldas', 'Rostislavas', 'Rubenas', 'Rudolfas', 'Rufas', 'Rufinas', 'Rupertas',
'Ruslanas', 'Rūtenis', 'Sabinas', 'Sakalas', 'Saliamonas', 'Salvijus', 'Samuelis', 'Samsonas', 'Samuilas', 'Sandras',
'Santaras', 'Saulenis', 'Saulius', 'Sava', 'Sebastijonas', 'Semas', 'Semionas', 'Serafinas', 'Serapinas', 'Sergejus',
'Sergijus', 'Seržas', 'Severas', 'Severinas', 'Sidas', 'Sidoras', 'Sigis', 'Sigitas', 'Sigizmundas', 'Sikstas',
'Silverijus', 'Silvestras', 'Silvijus', 'Simas', 'Simeonas', 'Simonas', 'Sirvydas', 'Skaidrius', 'Skaistis',
'Skalmantas', 'Skalvis', 'Skirgaila', 'Skirmantas', 'Skomantas', 'Sonetas', 'Stanislavas', 'Stanislovas', 'Stasys',
'Stasius', 'Stepas', 'Stefanas', 'Stepanas', 'Steponas', 'Svajūnas', 'Svajus', 'Sviatoslavas', 'Šarūnas', 'Šiaurys',
'Švitrigaila', 'Tadas', 'Tadeušas', 'Tamošius', 'Tarasas', 'Tauras', 'Tautginas', 'Tautrimas', 'Tautvydas', 'Tedas',
'Telesforas', 'Teisius', 'Teisutis', 'Teodoras', 'Teofilis', 'Terentijus', 'Tiberijus', 'Timas', 'Timotiejus',
'Timotis', 'Timūras', 'Titas', 'Tomas', 'Tomašas', 'Tonis', 'Traidenis', 'Trofimas', 'Tumas', 'Ugnius', 'Ulrikas',
'Uosis', 'Urbonas', 'Utenis', 'Ubaldas', 'Ūdrys', 'Ūkas', 'Vacys', 'Vacius', 'Vaclovas', 'Vadimas', 'Vaidas',
'Vaidevutis', 'Vaidila', 'Vaidis', 'Vaidotas', 'Vaidutis', 'Vaigaudas', 'Vaigirdas', 'Vainius', 'Vainoras', 'Vaitiekus',
'Vaižgantas', 'Vakaris', 'Valdas', 'Valdemaras', 'Valdimantas', 'Valdis', 'Valentas', 'Valentinas', 'Valerijonas',
'Valerijus', 'Valys', 'Valius', 'Valteris', 'Vasaris', 'Vasilijus', 'Venantas', 'Verneris', 'Vėjas', 'Vėjūnas',
'Venjaminas', 'Vergilijus', 'Vestas', 'Viačeslavas', 'Vidas', 'Vydas', 'Vidimantas', 'Vydimantas', 'Vidmantas',
'Vydmantas', 'Viesulas', 'Vygaudas', 'Vigilijus', 'Vygintas', 'Vygirdas', 'Vykantas', 'Vykintas', 'Viktas', 'Viktoras',
'Viktorijus', 'Viktorinas', 'Vilenas', 'Vilgaudas', 'Vilhelmas', 'Vilijus', 'Vilius', 'Vylius', 'Vilmantas', 'Vilmas',
'Vilnius', 'Viltaras', 'Viltautas', 'Viltenis', 'Vincas', 'Vincentas', 'Vingaudas', 'Virgaudas', 'Virgilijus',
'Virginijus', 'Virgintas', 'Virgis', 'Virgius', 'Virmantas', 'Vismantas', 'Visvaldas', 'Visvaldis', 'Vitalijus',
'Vitalis', 'Vitalius', 'Vitas', 'Vitoldas', 'Vygandas', 'Vygantas', 'Vykintas', 'Vytaras', 'Vytautas', 'Vytas',
'Vytenis', 'Vytis', 'Vyturys', 'Vladas', 'Vladimiras', 'Vladislavas', 'Vladislovas', 'Vladlenas', 'Voicechas',
'Voldemaras', 'Vsevolodas', 'Zacharijus', 'Zakarijus', 'Zbignevas', 'Zdislavas', 'Zenius', 'Zenonas', 'Zigfridas',
'Zygfridas', 'Zigmantas', 'Zigmas', 'Zygmuntas', 'Zinovijus', 'Žanas', 'Žeimantas', 'Žilvinas', 'Žibartas', 'Žybartas',
'Žydrius', 'Žydrūnas', 'Žygaudas', 'Žygimantas', 'Žygintas', 'Žygis', 'Žymantas', 'Žvaigždžius',
];
/**
* @see https://lt.wikipedia.org/wiki/S%C4%85ra%C5%A1as:Lietuvoje_paplit%C4%99_vardai
*/
protected static $firstNameFemale = [
'Ada', 'Adelė', 'Adelija', 'Adelina', 'Adolfa', 'Adolfina',
'Adriana', 'Adrija', 'Adrijana', 'Agata', 'Agnė', 'Agnetė', 'Agnieška', 'Agnietė', 'Agnija',
'Agota', 'Agripina', 'Aida', 'Aidė', 'Aimana', 'Aimantė', 'Aina', 'Ainė', 'Airė', 'Airida', 'Aistė',
'Aistra', 'Aitra', 'Aivara', 'Akvilė', 'Akvilina', 'Alana', 'Alanta', 'Alberta', 'Albertina',
'Albina', 'Alda', 'Aldona', 'Alė', 'Aleksandra', 'Aleksandrina', 'Aleksė', 'Aleta', 'Alfonsė',
'Alfonsa', 'Alfreda', 'Algė', 'Algimanta', 'Algimantė', 'Algina', 'Algirdė', 'Algutė', 'Alicija',
'Alina', 'Aliodija', 'Aliona', 'Alisa', 'Alma', 'Aloyza', 'Alona', 'Alva', 'Alvyda', 'Alvydė',
'Alvita', 'Amalija', 'Amanda', 'Ana', 'Anastasija', 'Anastazija', 'Andrė', 'Andrėja', 'Andžela',
'Anė', 'Anelė', 'Aneta', 'Anetė', 'Angelė', 'Angelina', 'Aniceta', 'Antanina', 'Antonida',
'Antonija', 'Antonina', 'Anzelma', 'Apolinarija', 'Apolonija', 'Ara', 'Ariadnė', 'Arija',
'Arimantė', 'Arina', 'Aristida', 'Armina', 'Arminta', 'Arnė', 'Arnolda', 'Arūnė', 'Arvydė', 'Asta',
'Astija', 'Astra', 'Astrida', 'Ašara', 'Atėnė', 'Audra', 'Audrė', 'Audronė', 'Augustė', 'Augustina',
'Augutė', 'Auksė', 'Auksuolė', 'Aura', 'Aurėja', 'Aurelija', 'Aurora', 'Austė', 'Austėja', 'Austra',
'Aušra', 'Aušrinė', 'Banga', 'Banguolė', 'Barbara', 'Barbora', 'Bargailė', 'Bartė', 'Basia',
'Beata', 'Beatričė', 'Benedikta', 'Benė', 'Benigna', 'Benita', 'Benjamina', 'Bernadeta', 'Bernarda',
'Bernardina', 'Berta', 'Beta', 'Biruta', 'Birutė', 'Bytautė', 'Bitė', 'Boleslava', 'Boleslova',
'Brigita', 'Bronė', 'Bronislava', 'Bronislova', 'Božena', 'Cecilė', 'Cecilija', 'Celestina',
'Celina', 'Cezarija', 'Cilė', 'Cintija', 'Dagmara', 'Dagna', 'Dagnė', 'Daina', 'Dainė', 'Dainora',
'Daiva', 'Daivita', 'Daivutė', 'Dalė', 'Dalia', 'Dalija', 'Dalytė', 'Dana', 'Danė', 'Dangė',
'Dangerutė', 'Dangira', 'Daniela', 'Danielė', 'Danguolė', 'Danuta', 'Danutė', 'Darata', 'Daria',
'Darija', 'Darja', 'Daugailė', 'Daumantė', 'Debora', 'Deima', 'Deimantė', 'Deivė', 'Deivilė',
'Demetra', 'Diana', 'Dijana', 'Dina', 'Dinara', 'Dita', 'Ditė', 'Doloresa', 'Doma', 'Domantė',
'Domicelė', 'Dominika', 'Dominyka', 'Dona', 'Donalda', 'Donata', 'Dora', 'Dorota', 'Dorotė',
'Dorotėja', 'Dovilė', 'Džeinė', 'Džeralda', 'Džesika', 'Džilda', 'Džina', 'Džiugė', 'Džiuginta',
'Džiulija', 'Džiuljeta', 'Džordana', 'Džulija', 'Edita', 'Eglė', 'Egida', 'Egidija', 'Eidvilė',
'Eimantė', 'Einara', 'Eiva', 'Ela', 'Elada', 'Elė', 'Elegija', 'Elena', 'Eleonora', 'Elfrida',
'Elija', 'Elytė', 'Eliza', 'Elma', 'Elona', 'Elvira', 'Elvyra', 'Elza', 'Elzė', 'Elžbieta', 'Ema',
'Emanuelė', 'Emilė', 'Emilija', 'Enrika', 'Erdvilė', 'Erika', 'Ermina', 'Erna', 'Ernesta',
'Ernestina', 'Ervina', 'Esmeralda', 'Estela', 'Estera', 'Eufrozina', 'Eugenija', 'Eulalija', 'Eva',
'Evalda', 'Evelina', 'Fabija', 'Faina', 'Faustina', 'Felicija', 'Felicita', 'Feliksa', 'Fernanda',
'Filomena', 'Freda', 'Frida', 'Gabeta', 'Gabija', 'Gabriela', 'Gabrielė', 'Gailė', 'Gailiūtė',
'Gailutė', 'Gaiva', 'Gaivilė', 'Gaja', 'Galia', 'Galina', 'Gaudencija', 'Gaudrė', 'Geda',
'Gedimina', 'Gediminė', 'Gedmantė', 'Gedmintė', 'Gedvyda', 'Geida', 'Geismantė', 'Geistė', 'Gelena',
'Gėlė', 'Gelmė', 'Gema', 'Gena', 'Genadija', 'Gendrė', 'Genė', 'Genovaitė', 'Genovefa', 'Genutė',
'Georgina', 'Gerarda', 'Gerda', 'Germantė', 'Gerta', 'Gertė', 'Gertruda', 'Gertrūda', 'Geta',
'Giedra', 'Giedrė', 'Gilda', 'Gilė', 'Gilija', 'Gilma', 'Gina', 'Gintara', 'Gintarė', 'Gintautė',
'Gintė', 'Girstautė', 'Girstė', 'Gita', 'Gitana', 'Gitė', 'Gytė', 'Gizela', 'Glorija', 'Gluosnė',
'Goda', 'Gotautė', 'Gotė', 'Gracija', 'Grasilda', 'Gražina', 'Gražyna', 'Gražvyda', 'Greta',
'Grėtė', 'Grita', 'Grytė', 'Gunda', 'Guoda', 'Gustė', 'Gustina', 'Halina', 'Hana', 'Helena',
'Henrika', 'Helga', 'Henrieta', 'Henrietė', 'Herma', 'Hiacinta', 'Hilda', 'Honorata', 'Hortenzija',
'Ida', 'Idalija', 'Ieva', 'Ievutė', 'Ignė', 'Ignota', 'Ilma', 'Ilmena', 'Ilona', 'Ilzė', 'Imantė',
'Ina', 'Indra', 'Indraja', 'Indrė', 'Inesa', 'Ineta', 'Inga', 'Ingita', 'Ingė', 'Ingeborga',
'Ingrida', 'Ira', 'Irena', 'Irida', 'Iridė', 'Irina', 'Irma', 'Irmanta', 'Irmantė', 'Irmina',
'Irmutė', 'Irta', 'Irtautė', 'Irutė', 'Isabela', 'Iva', 'Ivana', 'Ivona', 'Iveta', 'Iza', 'Izabela',
'Izabelė', 'Izidė', 'Izidora', 'Izolda', 'Jadzė', 'Jadviga', 'Jadvyga', 'Jana', 'Janė', 'Janina',
'Januarija', 'Jaunė', 'Jaunutė', 'Jekaterina', 'Jelena', 'Jelizaveta', 'Jeronima', 'Jevdokija',
'Jieva', 'Joana', 'Jogailė', 'Jogilė', 'Jogintė', 'Jola', 'Jolanta', 'Joleta', 'Jolita', 'Jomantė',
'Jomilė', 'Jonė', 'Jorė', 'Jorigė', 'Jorūnė', 'Jotvingė', 'Jovilė', 'Jovita', 'Judita', 'Judra',
'Judrė', 'Julė', 'Juliana', 'Julija', 'Julijana', 'Julijona', 'Julita', 'Julytė', 'Juozapina',
'Juozapota', 'Juozė', 'Jura', 'Jūra', 'Jūrė', 'Jūratė', 'Jurga', 'Jurgė', 'Jurgina', 'Jurgita',
'Justė', 'Justina', 'Juta', 'Juventa', 'Juzefa', 'Kaja', 'Kamila', 'Kamilė', 'Karina', 'Karla',
'Karmela', 'Karolė', 'Karolina', 'Kasia', 'Kastė', 'Kastytė', 'Katarina', 'Katažina', 'Katažyna',
'Katerina', 'Katia', 'Katrė', 'Kazė', 'Kazimiera', 'Kazimira', 'Kazytė', 'Kęstė', 'Kira', 'Klara',
'Klarisa', 'Klaudija', 'Klema', 'Klementina', 'Kleopa', 'Kleopatra', 'Klotilda', 'Konstancija',
'Konstantina', 'Kornelija', 'Kostė', 'Kotryna', 'Krista', 'Kristė', 'Kristijona', 'Kristina',
'Krystyna', 'Ksavera', 'Ksaverija', 'Ksenija', 'Kunigunda', 'Lada', 'Laima', 'Laimė', 'Laimona',
'Laimutė', 'Laisvė', 'Laisvyda', 'Laisvydė', 'Laisvūnė', 'Lana', 'Lara', 'Larisa', 'Lauma', 'Laura',
'Laurena', 'Laurentina', 'Lauryna', 'Leandra', 'Leda', 'Leila', 'Lėja', 'Lelija', 'Lena',
'Leokadija', 'Leona', 'Leonarda', 'Leonė', 'Leonida', 'Leonija', 'Leonila', 'Leonilė', 'Leonora',
'Leontina', 'Leopolda', 'Leta', 'Lėta', 'Leticija', 'Leva', 'Levutė', 'Liana', 'Liauda', 'Liberta',
'Lida', 'Lidija', 'Liepa', 'Lijana', 'Lilė', 'Liliana', 'Lilija', 'Lilijana', 'Lina', 'Linda',
'Lingailė', 'Linė', 'Lionė', 'Liongina', 'Liuba', 'Liubarta', 'Liubovė', 'Liucė', 'Liucilė',
'Liucina', 'Liucija', 'Liuda', 'Liudmila', 'Liudvika', 'Liūnė', 'Liutaura', 'Liva', 'Liveta',
'Livija', 'Liza', 'Lizaveta', 'Lola', 'Lolita', 'Longina', 'Lora', 'Lorena', 'Loreta', 'Lorija',
'Lucyna', 'Luisa', 'Luiza', 'Luknė', 'Lukrecija', 'Magda', 'Magdalena', 'Magdė', 'Maja', 'Malda',
'Malgožata', 'Malvina', 'Mamerta', 'Mamertina', 'Mantautė', 'Mantė', 'Mantvydė', 'Manuela', 'Mara',
'Marcė', 'Marcelė', 'Marcelija', 'Marcelina', 'Marcijona', 'Marė', 'Marilė', 'Margita', 'Margarita',
'Mariana', 'Marija', 'Marijona', 'Marina', 'Marita', 'Marytė', 'Marta', 'Martina', 'Martyna',
'Matilda', 'Matriona', 'Mažvydė', 'Mečislava', 'Mečislova', 'Meda', 'Medeina', 'Medėja', 'Megana',
'Megė', 'Meilė', 'Meilutė', 'Melanija', 'Melda', 'Melisa', 'Mėnulė', 'Mėta', 'Michalina', 'Miglė',
'Mika', 'Mikalina', 'Mykolė', 'Mila', 'Milda', 'Mildutė', 'Milena', 'Milvydė', 'Mindaugė',
'Mingailė', 'Minija', 'Mintara', 'Mintarė', 'Mintautė', 'Mintė', 'Mira', 'Mirga', 'Modesta', 'Mona',
'Monika', 'Morta', 'Nadė', 'Nadia', 'Nadežda', 'Nadiežda', 'Naktis', 'Narciza', 'Nastasija',
'Nastazija', 'Nastė', 'Nastia', 'Natalija', 'Nata', 'Neda', 'Neimantė', 'Nela', 'Nelė', 'Nemira',
'Nemunė', 'Nendrė', 'Neringa', 'Nerita', 'Nida', 'Nijolė', 'Nika', 'Nikė', 'Nila', 'Nilė', 'Nina',
'Ninelė', 'Noja', 'Nomeda', 'Nona', 'Nora', 'Norberta', 'Norma', 'Norgailė', 'Normantė', 'Nortė',
'Norvyda', 'Norvilė', 'Odeta', 'Ofelija', 'Oksana', 'Oktavija', 'Oktiabrina', 'Olga', 'Olimpiada',
'Olimpija', 'Oliva', 'Olivija', 'Ona', 'Onė', 'Onorata', 'Onutė', 'Oresta', 'Orinta', 'Otilija',
'Ovidija', 'Palma', 'Palmira', 'Palmyra', 'Pamela', 'Pasaka', 'Patricija', 'Paula', 'Paulė',
'Paulina', 'Pelagėja', 'Pelagija', 'Petra', 'Petrė', 'Petronė', 'Petronėlė', 'Petrutė', 'Pija',
'Polė', 'Polina', 'Povilė', 'Pranciška', 'Pranė', 'Praskovja', 'Prima', 'Pulcherija', 'Rachilė',
'Rada', 'Radmila', 'Radvyda', 'Radvilė', 'Rafaela', 'Rafaelė', 'Raimonda', 'Raimunda', 'Raistė',
'Rakelė', 'Ramybė', 'Raminta', 'Ramona', 'Ramunė', 'Ramūnė', 'Ramutė', 'Rasa', 'Raselė', 'Rasė',
'Rasytė', 'Rasuolė', 'Rasvita', 'Rebeka', 'Reda', 'Rėda', 'Rega', 'Regimanta', 'Regimantė',
'Regina', 'Rema', 'Remigija', 'Rena', 'Renalda', 'Renata', 'Renatė', 'Renė', 'Ričarda', 'Rikarda',
'Rima', 'Rimanta', 'Rimantė', 'Rimgailė', 'Rimgaudė', 'Rimtautė', 'Rimtė', 'Rimutė', 'Rimvyda',
'Rimvydė', 'Rimvilė', 'Rina', 'Ringa', 'Ringailė', 'Rita', 'Ryta', 'Ritė', 'Rytė', 'Roberta',
'Robertina', 'Rolanda', 'Roma', 'Romana', 'Romė', 'Romina', 'Romualda', 'Rosita', 'Roza',
'Rozalija', 'Rožė', 'Rufina', 'Rugilė', 'Ruslana', 'Rusnė', 'Rūstė', 'Ruta', 'Rūta', 'Rūtelė',
'Rūtenė', 'Rūtilė', 'Sabina', 'Sabrina', 'Salė', 'Salomėja', 'Salvė', 'Salvija', 'Salvinija',
'Samanta', 'Sandra', 'Santara', 'Sauga', 'Saulė', 'Saulena', 'Saulenė', 'Saulytė', 'Saulutė',
'Selena', 'Selma', 'Serafina', 'Serafima', 'Serena', 'Severija', 'Severina', 'Sibilė', 'Siga',
'Sigita', 'Sigrida', 'Sigutė', 'Silva', 'Silverija', 'Silvestra', 'Silvija', 'Sima', 'Simona',
'Sintė', 'Sintija', 'Siuzana', 'Skaidra', 'Skaidrė', 'Skaiste', 'Skaiva', 'Skalvė', 'Skirgailė',
'Skirma', 'Skirmanta', 'Skirmantė', 'Skolastika', 'Smilga', 'Smiltė', 'Snaigė', 'Snežana', 'Sniegė',
'Sniegena', 'Snieguolė', 'Sofa', 'Sofija', 'Solveiga', 'Sonata', 'Soneta', 'Sonia', 'Sotera',
'Stanislava', 'Stanislova', 'Staselė', 'Stasė', 'Stefa', 'Stefanija', 'Stela', 'Stepė', 'Sulamita',
'Svaja', 'Svajonė', 'Sveta', 'Svetlana', 'Šalna', 'Šalnė', 'Šarlota', 'Šarūnė', 'Šatrija', 'Šilė',
'Šviesa', 'Šviesė', 'Švitrigailė', 'Taika', 'Taisa', 'Taisija', 'Tamara', 'Tania', 'Tatjana',
'Taura', 'Tautė', 'Tautvydė', 'Teklė', 'Teodora', 'Teofilė', 'Tera', 'Teresė', 'Tereza', 'Terezija',
'Tesa', 'Tilija', 'Tina', 'Toma', 'Ugnė', 'Ula', 'Ulė', 'Ulijona', 'Uljana', 'Ulrika', 'Una',
'Undinė', 'Unė', 'Uoginta', 'Ursula', 'Uršula', 'Uršulė', 'Urtė', 'Ūla', 'Upė', 'Vacė', 'Vaclava',
'Vaclova', 'Vaida', 'Vaidota', 'Vaidotė', 'Vaidilutė', 'Vaiga', 'Vaigalė', 'Vainora', 'Vaiva',
'Vakarė', 'Valda', 'Valdemara', 'Valdė', 'Valdonė', 'Valentina', 'Valeriana', 'Valerija',
'Valerijona', 'Valia', 'Valė', 'Vanda', 'Varvara', 'Vasa', 'Vasara', 'Vasarė', 'Vasilisa', 'Vėja',
'Vėjūnė', 'Venanta', 'Vena', 'Venera', 'Venta', 'Vera', 'Verena', 'Vergilija', 'Verutė', 'Veronika',
'Vesta', 'Vėtra', 'Vida', 'Vyda', 'Vidmanta', 'Vidmantė', 'Vydmantė', 'Vidimanta', 'Vigilija',
'Vygantė', 'Vygintė', 'Vija', 'Vijolė', 'Vika', 'Vykintė', 'Vikta', 'Viktė', 'Viktorija',
'Viktorina', 'Vilena', 'Vilė', 'Vylė', 'Vilhelma', 'Vilhelmina', 'Vilija', 'Vilma', 'Vilmanta',
'Vilmantė', 'Vilnė', 'Viltara', 'Viltautė', 'Viltė', 'Viltenė', 'Vilūnė', 'Vincė', 'Vincenta',
'Vincentė', 'Viola', 'Violeta', 'Violina', 'Virdžinija', 'Virga', 'Virginija', 'Virmantė',
'Vismantė', 'Vita', 'Vyta', 'Vitalė', 'Vitalija', 'Vytautė', 'Vitė', 'Vytė', 'Vytenė', 'Vlada',
'Vladė', 'Vladislava', 'Vladislova', 'Vladlena', 'Vilita', 'Zabelė', 'Zanė', 'Zelma', 'Zenė',
'Zigfrida', 'Zigmantė', 'Zylė', 'Zina', 'Zinaida', 'Zita', 'Zofija', 'Zoja', 'Zosė', 'Zuzana',
'Žana', 'Žaneta', 'Žara', 'Žeimantė', 'Žemyna', 'Žibuoklė', 'Žibutė', 'Žiedė', 'Živilė', 'Žydrė',
'Žydronė', 'Žydrūnė', 'Žygimantė', 'Žyginta', 'Žilvinė', 'Žymantė', 'Žoržeta',
];
/**
* @see http://www.horoskopai.lt/gaires/populiariausios-pavardes-lietuvoje/
*/
protected static $lastNameMale = [
'Kazlauskas', 'Jankauskas', 'Petrauskas', 'Stankevičius', 'Vasiliauskas', 'Žukauskas', 'Butkus',
'Kateiva', 'Paulauskas', 'Urbonas', 'Kavaliauskas', 'Baranauskas', 'Pocius', 'Sakalauskas',
];
/**
* @see http://www.horoskopai.lt/gaires/populiariausios-pavardes-lietuvoje/
*/
protected static $lastNameFemale = [
'Kazlauskienė', 'Jankauskienė', 'Petrauskienė', 'Stankevičienė', 'Vasiliauskienė', 'Paulauskienė',
'Žukauskienė', 'Urbonienė', 'Kavaliauskienė', 'Navickienė', 'Kazlauskaitė', 'Jankauskaitė', 'Stankevičiūtė',
'Petrauskaitė', 'Vasiliauskaitė', 'Butkutė', 'Pociūtė', 'Lukoševičiūtė', 'Balčiūnaitė', 'Kavaliauskaitė',
];
/**
* @param string|null $gender 'male', 'female' or null for any
*
* @example 'Doe'
*
* @return string
*/
public function lastName($gender = null)
{
if ($gender === static::GENDER_MALE) {
return static::lastNameMale();
}
if ($gender === static::GENDER_FEMALE) {
return static::lastNameFemale();
}
return $this->generator->parse(static::randomElement(static::$lastNameFormat));
}
/**
* Return male last name
*
* @return string
*
* @example 'Vasiliauskas'
*/
public function lastNameMale()
{
return static::randomElement(static::$lastNameMale);
}
/**
* Return female last name
*
* @return string
*
* @example 'Žukauskaitė'
*/
public function lastNameFemale()
{
return static::randomElement(static::$lastNameFemale);
}
/**
* Return driver license number
*
* @return string
*
* @example 12345678
*/
public function driverLicence()
{
return $this->bothify('########');
}
/**
* Return passport number
*
* @return string
*
* @example 12345678
*/
public function passportNumber()
{
return $this->bothify('########');
}
/**
* National Personal Identity number (asmens kodas)
*
* @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania
* @see https://lt.wikipedia.org/wiki/Asmens_kodas
*
* @param string $gender [male|female]
* @param string $randomNumber three integers
*
* @return string on format XXXXXXXXXXX
*/
public function personalIdentityNumber($gender = 'male', ?\DateTime $birthdate = null, $randomNumber = '')
{
if (!$birthdate) {
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
}
$genderNumber = ($gender == 'male') ? 1 : 0;
$firstNumber = (int) floor($birthdate->format('Y') / 100) * 2 - 34 - $genderNumber;
$datePart = $birthdate->format('ymd');
$randomDigits = (string) (!$randomNumber || strlen($randomNumber) < 3) ? static::numerify('###') : substr($randomNumber, 0, 3);
$partOfPerosnalCode = $firstNumber . $datePart . $randomDigits;
$sum = self::calculateSum($partOfPerosnalCode, 1);
$liekana = $sum % 11;
if ($liekana !== 10) {
$lastNumber = $liekana;
return $firstNumber . $datePart . $randomDigits . $lastNumber;
}
$sum = self::calculateSum($partOfPerosnalCode, 2);
$liekana = $sum % 11;
$lastNumber = ($liekana !== 10) ? $liekana : 0;
return $firstNumber . $datePart . $randomDigits . $lastNumber;
}
/**
* Calculate the sum of personal code
*
* @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania
* @see https://lt.wikipedia.org/wiki/Asmens_kodas
*
* @param string $numbers
* @param int $time [1|2]
*
* @return int
*/
private static function calculateSum($numbers, $time = 1)
{
if ($time == 1) {
$multipliers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1];
} else {
$multipliers = [3, 4, 5, 6, 7, 8, 9, 1, 2, 3];
}
$sum = 0;
for ($i = 1; $i <= 10; ++$i) {
$sum += ((int) $numbers[$i - 1]) * $multipliers[$i - 1];
}
return (int) $sum;
}
}
@@ -0,0 +1,173 @@
<?php
namespace Faker\Provider\lv_LV;
use Faker\Provider\DateTime;
class Person extends \Faker\Provider\Person
{
/**
* {@link} http://vardunozime.lv/names-male
*/
protected static $firstNameMale = [
'Acons', 'Adalberts', 'Adelions', 'Adeljans', 'Adeļjons', 'Adgars', 'Adis', 'Ado', 'Adonis', 'Adoniss', 'Adrians', 'Adriāns', 'Adris', 'Afanasijs', 'Agatons', 'Agejs', 'Agijs', 'Aģis', 'Agnārs', 'Agnis', 'Agris', 'Agrits', 'Agrons', 'Agurs', 'Ahmads', 'Ahmeds', 'Ahto', 'Aidars', 'Aidis', 'Aigars', 'Aigijs', 'Aigils', 'Aigis', 'Aigo', 'Aigvars', 'Ailands', 'Aimo', 'Ainards', 'Ainārs', 'Ainars', 'Ainis', 'Aino', 'Airats', 'Airiks', 'Airis', 'Airtons', 'Aivalds', 'Aivars', 'Aivārs', 'Aivijs', 'Aivils', 'Aivis', 'Aivo', 'Akims', 'Ako', 'Akselis', 'Aksels', 'Alans', 'Alberts', 'Albīns', 'Albins', 'Aldijs', 'Aldis', 'Aldonis', 'Aldons', 'Aldris', 'Aleksandris', 'Aleksandrs', 'Aleksejs', 'Aleksis', 'Alekss', 'Alens', 'Alēns', 'Alereins', 'Alesandrs', 'Alfejs', 'Alfijs', 'Alfins', 'Alfons', 'Alfonss', 'Alfrēds', 'Alfreds', 'Alfrīds', 'Alfrids', 'Alfs', 'Algarts', 'Algers', 'Alģerts', 'Alģimants', 'Aļģirds', 'Algirds', 'Alģirds', 'Aļģirts', 'Alģirts', 'Alģis', 'Aļģis', 'Aliks', 'Aļiks', 'Alis', 'Alisters', 'Allans', 'Allens', 'Almands', 'Almants', 'Almārs', 'Almonds', 'Alnars', 'Alnis', 'Alnors', 'Aloīzijs', 'Aloizis', 'Aloizs', 'Aloīzs', 'Alons', 'Alsis', 'Altairs', 'Alvaro', 'Alvars', 'Alvids', 'Alvijs', 'Alvils', 'Alvīns', 'Alvis', 'Alvits', 'Amandis', 'Amands', 'Ambrozijs', 'Amijs', 'Amirans', 'Amirs', 'Amunds', 'Anārs', 'Anastāsijs', 'Anastāzijs', 'Anatolijs', 'Anatols', 'Ancis', 'Andars', 'Andejs', 'Anders', 'Anderss', 'Andijs', 'Andis', 'Ando', 'Andreass', 'Andrejans', 'Andrejs', 'Andrējs', 'Andress', 'Andriāns', 'Andrievs', 'Andrijans', 'Andrijs', 'Andris', 'Androns', 'Andrs', 'Andrus', 'Andruss', 'Andulis', 'Andžejs', 'Andzelms', 'Andželo', 'Andžs', 'Anfims', 'Angarijs', 'Anicets', 'Anis', 'Anrī', 'Anrijs', 'Anris', 'Anriss', 'Anselms', 'Ansis', 'Anšlavs', 'Antans', 'Antars', 'Antis', 'Antonijs', 'Antonio', 'Antons', 'Antris', 'Ants', 'Antuans', 'Anufrijs', 'Anvars', 'Anzelms', 'Anžijs', 'Apolinārijs', 'Apolinārs', 'Apolons', 'Aralds', 'Arams', 'Arčijs', 'Arčils', 'Ardis', 'Ards', 'Aress', 'Aretijs', 'Arets', 'Argils', 'Argo', 'Argods', 'Argons', 'Argots', 'Arguts', 'Arialds', 'Arians', 'Ariels', 'Arigo', 'Arijs', 'Ariko', 'Arilds', 'Arimands', 'Arīns', 'Arions', 'Aris', 'Ariss', 'Aristīds', 'Aristons', 'Arkādijs', 'Arlijs', 'Armando', 'Armands', 'Armanis', 'Armans', 'Armants', 'Armass', 'Armens', 'Armīds', 'Armīns', 'Armins', 'Armis', 'Arnis', 'Arno', 'Arnolds', 'Arnotijs', 'Arnulfs', 'Arsenijs', 'Arsēnijs', 'Arsens', 'Arsēns', 'Arsentijs', 'Artemijs', 'Artēmijs', 'Artijs', 'Artiks', 'Artis', 'Artjoms', 'Arts', 'Artūrs', 'Arturs', 'Arvalds', 'Arveds', 'Arvēds', 'Arvīds', 'Arvids', 'Arvils', 'Arvīns', 'Arvis', 'Arvo', 'Askolds', 'Asmunds', 'Astērijs', 'Astrīds', 'Atāls', 'Atanazijs', 'Atis', 'Atstars', 'Atvars', 'Audars', 'Audris', 'Augmants', 'Augustīns', 'Augusts', 'Aurelijs', 'Aurēlijs', 'Aurels', 'Auseklis', 'Ausmis', 'Ausmunds', 'Austris', 'Austrums',
'Ādams', 'Ādolfs', 'Ārends', 'Ārens', 'Ārijs', 'Āriks', 'Āris', 'Ārons', 'Ārvaldis', 'Ārvalds', 'Āvo',
'Baldūrs', 'Balvis', 'Bartolomejs', 'Bārtulis', 'Bazils', 'Bendžamins', 'Benedikts', 'Benijs', 'Benito', 'Benjāmiņš', 'Benjamins', 'Benno', 'Beno', 'Bens', 'Berils', 'Bernads', 'Bernards', 'Bernārs', 'Bernats', 'Bernhards', 'Bertolds', 'Bertrams', 'Berts', 'Bērtulis', 'Bierants', 'Billijs', 'Bils', 'Bogdans', 'Boļeslavs', 'Bonaventūrs', 'Bonifācijs', 'Bonifātijs', 'Bonifats', 'Bonijs', 'Borislavs', 'Boriss', 'Braiens', 'Braijens', 'Brains', 'Brencis', 'Brendons', 'Brets', 'Bronis', 'Broņislavs', 'Bronislavs', 'Brunis', 'Bruno', 'Brunons', 'Brūss',
'Čariijs', 'Čarlzs', 'Česlavs',
'Censonis', 'Censons', 'Centis', 'Centonis', 'Ceronis', 'Cerons', 'Cēzars', 'Cezars', 'Cildis', 'Cildonis', 'Ciprians', 'Ciprijans',
'Dabris', 'Dacis', 'Dadzis', 'Dafnis', 'Dagmārs', 'Dagnijs', 'Dagnis', 'Dāgs', 'Dags', 'Daiens', 'Daigars', 'Daigonis', 'Dailis', 'Dailonis', 'Dailons', 'Daimonds', 'Daimons', 'Dainārs', 'Dainarts', 'Dainis', 'Dainors', 'Dairis', 'Daivis', 'Damārs', 'Damirs', 'Danats', 'Daneks', 'Dāniels', 'Daniēls', 'Daniels', 'Daniils', 'Daņiils', 'Danijs', 'Daņils', 'Danils', 'Danis', 'Danko', 'Dans', 'Dārgs', 'Dārijs', 'Daris', 'Dato', 'Daumands', 'Daumants', 'Dāvids', 'Dāvīds', 'Dāvis', 'Dāvs', 'Deils', 'Deimonds', 'Deimons', 'Deinis', 'Deins', 'Deivids', 'Deivijs', 'Deivis', 'Deivs', 'Dementijs', 'Deniels', 'Denijs', 'Deņiss', 'Deniss', 'Dens', 'Dēvids', 'Dēvijs', 'Didrihs', 'Didriķis', 'Didzis', 'Didžus', 'Digmārs', 'Dijs', 'Dikijs', 'Diks', 'Dimants', 'Dimārs', 'Dimitrijs', 'Dinards', 'Dinārs', 'Dinijs', 'Dinis', 'Dino', 'Dins', 'Dīns', 'Dionisijs', 'Dionizijs', 'Dīters', 'Ditmārs', 'Dmitrijs', 'Domeniks', 'Dominiks', 'Donalds', 'Donats', 'Donāts', 'Dravis', 'Drosmiņš', 'Drosmis', 'Drošvaldis', 'Drošvaris', 'Druvaldis', 'Druvalds', 'Druvārs', 'Druvinalds', 'Druvis', 'Druvvaldis', 'Druvvalds', 'Džastins', 'Džeims', 'Džeimss', 'Džems', 'Džemss', 'Džeralds', 'Džerijs', 'Dzidris', 'Dzilvars', 'Džims', 'Dzintars', 'Dzintārs', 'Dzintis', 'Dzintris', 'Džo', 'Džonatans', 'Džonijs', 'Džonis', 'Džons', 'Džordans', 'Džordijs', 'Džordžs',
'Eberhards', 'Edgards', 'Edgars', 'Edgārs', 'Edijs', 'Ediks', 'Edilberts', 'Edis', 'Edmans', 'Edmārs', 'Edmonds', 'Edmons', 'Edmunds', 'Edmunts', 'Eduards', 'Eduārds', 'Eduars', 'Edvards', 'Edvārts', 'Edvijs', 'Edvīns', 'Edvins', 'Edžus', 'Egberts', 'Egdijs', 'Egerts', 'Egidijs', 'Egijs', 'Egīls', 'Egils', 'Eginhards', 'Egīns', 'Egits', 'Eglis', 'Eglons', 'Egmārs', 'Egmonds', 'Egmonts', 'Egnārs', 'Ego', 'Egons', 'Eidis', 'Eigits', 'Einards', 'Einārs', 'Einars', 'Einarts', 'Einis', 'Eino', 'Eiženijs', 'Eižens', 'Elands', 'Elāns', 'Elārs', 'Elčins', 'Eldars', 'Eldijs', 'Elens', 'Elerts', 'Elfrīds', 'Elgars', 'Elgasts', 'Elgons', 'Eliass', 'Eliašs', 'Elijass', 'Elijašs', 'Elijs', 'Elīns', 'Elīss', 'Eljašs', 'Elmārs', 'Elmars', 'Elmo', 'Elmonds', 'Elmuts', 'Elnurs', 'Eltons', 'Elvars', 'Elvigs', 'Elvijs', 'Elvings', 'Elvīns', 'Elvīrs', 'Elvis', 'Elviss', 'Elvo', 'Emanuels', 'Emanuils', 'Emeralds', 'Emerihs', 'Emeriks', 'Emijs', 'Emilians', 'Emilijans', 'Emīlijs', 'Emīlis', 'Emiljans', 'Emīls', 'Emils', 'Emmanuels', 'Enārs', 'Endijs', 'Endo', 'Endrijs', 'Engelberts', 'Engus', 'Enijs', 'Enno', 'Enoks', 'Enrijs', 'Enriko', 'Enriks', 'Eralds', 'Erasts', 'Erberts', 'Erhards', 'Eriands', 'Eriens', 'Erihs', 'Eriks', 'Erims', 'Erlends', 'Ermanis', 'Ermans', 'Ermīns', 'Ernando', 'Ernests', 'Ernis', 'Ernsts', 'Ero', 'Ervids', 'Ervijs', 'Ervils', 'Ervīns', 'Ervins', 'Ervis', 'Esams', 'Etjēns', 'Euģenijs', 'Euģēnijs', 'Eugenijs', 'Eugēnijs', 'Euzebijs', 'Evalds', 'Evarists', 'Evars', 'Evarts', 'Eventijs', 'Everts', 'Evgēnijs', 'Evgenijs', 'Evģēnijs', 'Evģenijs', 'Evijs',
'Ērihs', 'Ēriks', 'Ērmanis', 'Ēro', 'Ēvalds',
'Fabiāns', 'Fabijāns', 'Fadejs', 'Falks', 'Farhads', 'Farids', 'Fedors', 'Fedots', 'Felicians', 'Felicijans', 'Fēlikss', 'Felikss', 'Feodors', 'Ferdinands', 'Ferencs', 'Ferijs', 'Fernands', 'FīIips', 'Filips', 'Fjodors', 'Floriāns', 'Florijans', 'Florijs', 'Francis', 'Francišeks', 'Francisks', 'Francs', 'Franeks', 'Franks', 'Franļišeks', 'Frederiks', 'Fredijs', 'Fredis', 'Freds', 'Frementijs', 'Frenks', 'Fricis', 'Fridberts', 'Frideriks', 'Frīdis', 'Fridis', 'Frīdrihs', 'Fritjofs',
'Gabriels', 'Gabriēls', 'Gaidars', 'Gaidis', 'Gaidonis', 'Gaidvars', 'Gaismonis', 'Gaismons', 'Gaitis', 'Gaits', 'Garlībs', 'Gastons', 'Gatiņš', 'Gatis', 'Gavrils', 'Gedimins', 'Gelārijs', 'Genādijs', 'Gennādijs', 'Georgijs', 'Georgs', 'Geralds', 'Gerards', 'Gerasims', 'Gerds', 'Gerhards', 'Geronīms', 'Gerts', 'Gido', 'Gidons', 'Gijs', 'Gilarijs', 'Gilberts', 'Ginārs', 'Gintārs', 'Gintauts', 'Ginters', 'Gintis', 'Gints', 'Gits', 'Gļebs', 'Glens', 'Godfrīds', 'Godvars', 'Gordejs', 'Gorijs', 'Gotards', 'Gotfrīds', 'Gothards', 'Gracijans', 'Grants', 'Grats', 'Gregors', 'Grigorijs', 'Grigors', 'Gudmunds', 'Gunards', 'Gunārs', 'Gunars', 'Gunarts', 'Gundaris', 'Gundars', 'Gundis', 'Gundolfs', 'Gunis', 'Gunivaldis', 'Gunivalds', 'Gunnars', 'Guno', 'Guntars', 'Guntārs', 'Guntis', 'Guntris', 'Gunts', 'Gunvaldis', 'Gunvalds', 'Gunvaris', 'Gunvars', 'Gurijs', 'Gustavs', 'Gusts', 'Gutars', 'Gvidis', 'Gvido', 'Gvidons',
'Ģederts', 'Ģedimins', 'Ģintars', 'Ģints', 'Ģirts',
'Haldons', 'Haldors', 'Hamilkārs', 'Hanss', 'Haralds', 'Hārdijs', 'Hardis', 'Harijs', 'Haris', 'Haritons', 'Harlijs', 'Harolds', 'Hartvigs', 'Harvijs', 'Hedijs', 'Hedvigs', 'Heincs', 'Heindrihs', 'Heinis', 'Heino', 'Heinrihs', 'Heinriks', 'Heldurs', 'Helijs', 'Heliodors', 'Helmārs', 'Helmī', 'Helmuts', 'Helmūts', 'Helvigs', 'Helvijs', 'Helvis', 'Hendrihs', 'Hendriks', 'Henno', 'Henrihs', 'Henrijs', 'Henriks', 'Herberts', 'Hermanis', 'Hermans', 'Hermunds', 'Herolds', 'Heronīms', 'Hevijs', 'Hieronims', 'Higo', 'Hilards', 'Hilārijs', 'Hilārs', 'Hilmārs', 'Hipolits', 'Holgers', 'Honorads', 'Horens', 'Horsts', 'Huans', 'Hūberts', 'Hugo',
'Ievalds', 'Igars', 'Igmārs', 'Ignars', 'Ignātijs', 'Ignats', 'Ignāts', 'Igo', 'Igors', 'Igvars', 'Ihtiandrs', 'Ikars', 'Ilards', 'Ilārijs', 'Ilārs', 'Ildars', 'Ildefons', 'Ilgards', 'Ilgārs', 'Ilgarts', 'Ilgmārs', 'Ilgmars', 'Ilgonis', 'Ilgons', 'Ilgvalds', 'Ilgvards', 'Ilgvaris', 'Ilgvars', 'Ilgvārs', 'Illo', 'Ilmārs', 'Ilmars', 'Ilo', 'Ilons', 'Ilvars', 'Ilvārs', 'Ilvers', 'Ilvis', 'Imants', 'Imanuels', 'Imārs', 'Imarts', 'Inārijs', 'Inārs', 'Inars', 'Inarts', 'Indars', 'Indriķis', 'Indriks', 'Indris', 'Indulis', 'Induls', 'Inesis', 'Ingars', 'Ingārs', 'Ingemārs', 'Ingerts', 'Ingmārs', 'Ingmars', 'Ingo', 'Ingolfs', 'Ingomars', 'Inguards', 'Inguns', 'Ingūns', 'Ingurds', 'Ingurs', 'Ingus', 'Inguss', 'Ingvards', 'Ingvars', 'Ingvilds', 'Inmārs', 'Innocentijs', 'Ino', 'Inolds', 'Inrigo', 'Intars', 'Intārs', 'Intis', 'Ints', 'Invalds', 'Invars', 'Ipolits', 'Iraidis', 'Iraklijs', 'Irenejs', 'Irenijs', 'Irēnijs', 'Irinejs', 'Irmants', 'Ironijs', 'Irvalds', 'Irvings', 'Irvīns', 'Ismails', 'Itallo', 'Itālo', 'Itārs', 'Itvars', 'Ivalds', 'Ivans', 'Ivars', 'Ivārs', 'Iverts', 'Ivis', 'Ivo', 'Ivs', 'Izidors',
'Īvis',
'Jaceks', 'Jakims', 'Jakobs', 'Jakovs', 'Jākubs', 'Jalmars', 'Janeks', 'Jānis', 'Janis', 'Janošs', 'Jāns', 'Janušs', 'Jaroslavs', 'Jautris', 'Jāzeps', 'Jazeps', 'Jefims', 'Jegors', 'Jēkabs', 'Jelisejs', 'Jemeļjans', 'Jermolajs', 'Jeronīms', 'Jeroslavs', 'Jevgēņijs', 'Jevgēnijs', 'Jevgeņijs', 'Jevgenijs', 'Jevģēnijs', 'Jevģenijs', 'Jēzups', 'Jezups', 'Joahims', 'Joakims', 'Joans', 'Johans', 'Jolands', 'Jolants', 'Jonatāns', 'Jonijs', 'Jons', 'Jordans', 'Jorens', 'Jorēns', 'Jovars', 'Jozefs', 'Jozs', 'Juhans', 'Jukums', 'Juliāns', 'Jūliāns', 'Jūlijans', 'Jūlijs', 'Julijs', 'Jūliuss', 'Juļjāns', 'Jumis', 'Jūnijs', 'Jurands', 'Jureks', 'Jurģis', 'Jurijs', 'Juriks', 'Juris', 'Jūris', 'Jūsmiņš', 'Justīns', 'Justs', 'Jūtvaldis', 'Juvents', 'Juzefs',
'Kaido', 'Kaivis', 'Kajs', 'Kālebs', 'Kaliksts', 'Kalins', 'Kalvis', 'Kamils', 'Kardijs', 'Karels', 'Karens', 'Karims', 'Kārlis', 'Karolis', 'Karols', 'Karps', 'Kaspars', 'Kazemirs', 'Kazimirs', 'Kazis', 'Kazmers', 'Keits', 'Kenets', 'Kerijs', 'Kestutis', 'Kevins', 'Kims', 'Kirils', 'Klaidis', 'Klaids', 'Klāss', 'Klaudijs', 'Klāvs', 'Klemans', 'Klemens', 'Klemenss', 'Klementijs', 'Klementīns', 'Klements', 'Klimans', 'Klimentijs', 'Klods', 'Knuts', 'Komēlijs', 'Kondrāts', 'Konrāds', 'Konrads', 'Konrands', 'Konrāts', 'Konstantīns', 'Konstantins', 'Kornelijs', 'Kreigs', 'Krišjānis', 'Krišjāns', 'Krišs', 'Kristafors', 'Kristaps', 'Kristars', 'Kristens', 'Kristers', 'Kristiāns', 'Kristians', 'Kristijāns', 'Kristjānis', 'Kristjans', 'Kristo', 'Kristofers', 'Kristofors', 'Kristofs', 'Krists', 'Krišus', 'Krīvs', 'Ksaverijs', 'Ksavērijs', 'Ksavers', 'Kuno', 'Kurbads', 'Kurbats', 'Kurts',
'Labrencis', 'Lāčplēsis', 'Ladislavs', 'Laimdotis', 'Laimdots', 'Laimiņš', 'Laimis', 'Laimnesis', 'Laimonds', 'Laimonis', 'Laimons', 'Laimonts', 'Laimstars', 'Laimutis', 'Laimzieds', 'Lainis', 'Landijs', 'Larijs', 'Larions', 'Laris', 'Lars', 'Larss', 'Lato', 'Latvis', 'Laurentijs', 'Laurijs', 'Lauris', 'Lavrentijs', 'Leino', 'Lenards', 'Lenārs', 'Lenarts', 'Lennijs', 'Leo', 'Leonardo', 'Leonards', 'Leonārs', 'Leongīns', 'Leonhards', 'Leonīds', 'Leonids', 'Leons', 'Leontijs', 'Leontīns', 'Leopolds', 'Levijs', 'Liards', 'Liberijs', 'Līgonis', 'Līgotnis', 'Lilians', 'Linards', 'Linārs', 'Linarts', 'Lindons', 'Linerts', 'Lins', 'Linus', 'Linuss', 'Livars', 'Līvis', 'Līvs', 'Lonards', 'Lonarts', 'Longins', 'Lorands', 'Lorens', 'Lorenss', 'Lorijs', 'Lotārs', 'Lotars', 'Luciāns', 'Lucijāns', 'Ludis', 'Lūdolfs', 'Ludoviks', 'Ludvigs', 'Ludviķis', 'Ludviks', 'Luijs', 'Luiss', 'Lūkass',
'Ļevs',
'Madars', 'Madis', 'Magnus', 'Magnuss', 'Maigonis', 'Maigons', 'Maigurs', 'Maikls', 'Maiks', 'Mairis', 'Mairolds', 'Mairs', 'Maksimiliāns', 'Maksims', 'Maksis', 'Makss', 'Maldis', 'Maldonis', 'Malvis', 'Mamerts', 'Manfreds', 'Manfrēds', 'Marats', 'Mārcis', 'Marcis', 'Mareks', 'Marģeris', 'Marģers', 'Marģis', 'Margo', 'Margonis', 'Margons', 'Margots', 'Marguss', 'Marguts', 'Marians', 'Mariens', 'Marijans', 'Mārijs', 'Mariks', 'Mario', 'Māris', 'Maris', 'Mariss', 'Mariuss', 'Marjans', 'Marjus', 'Marko', 'Marks', 'Markus', 'Markuss', 'Maro', 'Marsels', 'Mārtiņš', 'Martins', 'Martiņs', 'Marts', 'Mārts', 'Mateass', 'Matejs', 'Mateuss', 'Mateušs', 'Matiass', 'Matis', 'Matīss', 'Matvejs', 'Maurīcijs', 'Mečeslavs', 'Mečislavs', 'Medards', 'Medarts', 'Mefodijs', 'Meikols', 'Meikulis', 'Meikuls', 'Meinards', 'Meinhards', 'Meldris', 'Mereks', 'Mervils', 'Metjū', 'Metodijs', 'Mežvaldis', 'Mieriņš', 'Miermīlis', 'Miernesis', 'Miervaldis', 'Miervalds', 'Mihaels', 'Mihails', 'Mikaels', 'Miķelis', 'Miķēlis', 'Miks', 'Mikus', 'Milāns', 'Milvards', 'Milvars', 'Mindaugs', 'Mintauts', 'Miroslavs', 'Mišels', 'Modests', 'Modis', 'Modrinš', 'Modris', 'Montis', 'Monts', 'Monvīds', 'Monvids', 'Morics', 'Moriss', 'Mudijs', 'Mudiņš', 'Mudis', 'Mudris', 'Mundis', 'Mundris', 'Muntis', 'Murads', 'Muslims',
'Naidžels', 'Nameisis', 'Namejs', 'Napoleons', 'Narciss', 'Nareks', 'Narimans', 'Narimants', 'Natans', 'Nauris', 'Neils', 'Nesters', 'Nestors', 'Nevils', 'Nikandrs', 'Nikifors', 'Nikijs', 'Niklāss', 'Niklāvs', 'Niklavs', 'Niko', 'Nikodems', 'Nikodēms', 'Nikodims', 'Nikolajs', 'Nikolass', 'Niks', 'Nils', 'Nīls', 'Nilss', 'Nolāns', 'Noldis', 'Norberts', 'Nords', 'Noris', 'Norītis', 'Norlands', 'Normands', 'Normans', 'Normants', 'Normens', 'Normuds', 'Normunds',
'Ņikifors', 'Ņikita',
'Odisejs', 'Odums', 'Ogists', 'Ojārs', 'Oktavians', 'Olafs', 'Olands', 'Olārs', 'Olavs', 'Oļegs', 'Olevs', 'Olģerds', 'Oļģerts', 'Olgerts', 'Olis', 'Olivers', 'Olmars', 'Omārs', 'Oniks', 'Ontons', 'Onufrijs', 'Orests', 'Orfejs', 'Ornets', 'Ortando', 'Osips', 'Oskars', 'Osmars', 'Ostins', 'Osvaldis', 'Osvalds', 'Otārs', 'Otis', 'Oto', 'Otomārs', 'Otomars',
'Patricijs', 'Patriks', 'Paulis', 'Pauls', 'Pāvels', 'Pāvils', 'Pavils', 'Pāvuls', 'Pērs', 'Persijs', 'Pēteris', 'Pēters', 'Petro', 'Petrs', 'Pijs', 'Pīters', 'Pits', 'Pius', 'Pjotrs', 'Platons', 'Plūdonis', 'Polikarps', 'Pols', 'Prans',
'Radimins', 'Radions', 'Radislavs', 'Radomirs', 'Radvilis', 'Radvils', 'Rafaels', 'Rafaēls', 'Rafails', 'Rafiks', 'Ragnārs', 'Rahmats', 'Raiders', 'Raido', 'Raiens', 'Raigards', 'Raigo', 'Railands', 'Raimis', 'Raimo', 'Raimonds', 'Raimons', 'Raimunds', 'Rainars', 'Rainers', 'Rainis', 'Rainolds', 'Raitis', 'Raits', 'Raivis', 'Raivo', 'Raldis', 'Ralfs', 'Ramērs', 'Ramils', 'Ramiro', 'Ramons', 'Randolfs', 'Rašids', 'Rasmuss', 'Raulis', 'Rauls', 'Reds', 'Redženalds', 'Redžinalds', 'Reginalds', 'Regīns', 'Regnalds', 'Regnārs', 'Regnolds', 'Rego', 'Reimārs', 'Reimo', 'Reinards', 'Reinārs', 'Reiners', 'Reinhards', 'Reinholds', 'Reinis', 'Reino', 'Reinolds', 'Reinvalds', 'Remberts', 'Remigijs', 'Remijs', 'Remirs', 'Remo', 'Rems', 'Renalds', 'Renards', 'Renārs', 'Renars', 'Renarts', 'Renato', 'Renāts', 'Renats', 'Rendijs', 'Renijs', 'Renno', 'Reno', 'Renolds', 'Rens', 'Reons', 'Rets', 'Revs', 'Ričards', 'Ričijs', 'Ričs', 'Rids', 'Rigo', 'Rigonds', 'Rihards', 'Riho', 'Rikardo', 'Rikijs', 'Riks', 'Rimands', 'Rimants', 'Rimars', 'Rimonds', 'Rimons', 'Rinaldo', 'Rinalds', 'Rinalts', 'Rinards', 'Rinārs', 'Rinats', 'Ringo', 'Ringolds', 'Rinolds', 'Rio', 'Rišars', 'Ritmars', 'Ritums', 'Ritvaldis', 'Ritvalds', 'Ritvars', 'Rivo', 'Rjuriks', 'Roalds', 'Roans', 'Robērs', 'Roberto', 'Roberts', 'Robijs', 'Robins', 'Rodijs', 'Rodions', 'Rodrigo', 'Rodžers', 'Rojs', 'Rokijs', 'Roko', 'Rolands', 'Rolāns', 'Rolfs', 'Rolijs', 'Romalds', 'Romands', 'Romāns', 'Romans', 'Romants', 'Romass', 'Romēns', 'Romeo', 'Romis', 'Roms', 'Romualds', 'Romulds', 'Romunds', 'Romuss', 'Romvalds', 'Ronaldo', 'Ronalds', 'Ronijs', 'Ronvalds', 'Rorijs', 'Rostams', 'Rostislavs', 'Rovens', 'Rubens', 'Rudiards', 'Rūdis', 'Rūdolfs', 'Rudolfs', 'Ruriks', 'Rūsiņš', 'Ruslands', 'Ruslāns', 'Rustams',
'Saīds', 'Saigits', 'Saimons', 'Sairis', 'Saivis', 'Salamons', 'Salimons', 'Sallijs', 'Salomons', 'Salvijs', 'Salvis', 'Salvo', 'Samirs', 'Samsons', 'Samuels', 'Samuēls', 'Samvels', 'Sančo', 'Sandars', 'Sanders', 'Sandijs', 'Sandis', 'Sando', 'Sandors', 'Sandrino', 'Sandris', 'Sandro', 'Sandrs', 'Sandus', 'Sanduss', 'Sangvids', 'Sanijs', 'Santijs', 'Santis', 'Santo', 'Santoss', 'Sarmis', 'Saulceris', 'Saulgaitis', 'Saulis', 'Saulstars', 'Sauļus', 'Saulvedis', 'Savelijs', 'Sebastians', 'Sebastijans', 'Sebastjans', 'Sedriks', 'Seimanis', 'Seldzis', 'Selvijs', 'Selvīns', 'Selvis', 'Semions', 'Semjons', 'Sendijs', 'Sentis', 'Serafims', 'Sergejs', 'Sergo', 'Seržs', 'Severīns', 'Severins', 'Severjans', 'Sidars', 'Sidnejs', 'Sidors', 'Sigismunds', 'Sigits', 'Sigizmunds', 'Sigmārs', 'Sigmunds', 'Signijs', 'Signis', 'Sigords', 'Sigunds', 'Sigurds', 'Sigurts', 'Sigvards', 'Sigvars', 'Sigvarts', 'Silards', 'Silvars', 'Silvers', 'Silvesters', 'Silvestris', 'Silvestrs', 'Silvis', 'Sīmanis', 'Simeons', 'Simions', 'Simons', 'Sindijs', 'Singurs', 'Sintijs', 'Sirdsvaldis', 'Skaidris', 'Skaudris', 'Smaidonis', 'Smailis', 'Smuidris', 'Solomons', 'Solvis', 'Sondars', 'Sondris', 'Spartaks', 'Spēkonis', 'Spodris', 'Spricis', 'Staldzis', 'Staņislavs', 'Stanislavs', 'Stasis', 'Stass', 'Stefans', 'Stefāns', 'Steinārs', 'Stenlijs', 'Stepans', 'Stepons', 'Stīvens', 'Svenis', 'Svens', 'Svetoslavs', 'Svjatoslavs',
'Šandors',
'Tadeušs', 'Tagils', 'Tahirs', 'Taivo', 'Tālavs', 'Tālis', 'Tālivaldis', 'Tālivalds', 'Tālrids', 'Tālrīts', 'Tālrits', 'Tāls', 'Tālvaldis', 'Tamārs', 'Tarass', 'Taunis', 'Tautmīlis', 'Tautvaldis', 'Tautvaris', 'Tedijs', 'Tedis', 'Teldijs', 'Telesfors', 'Tenis', 'Teo', 'Teobalds', 'Teodors', 'Teofils', 'Teovils', 'Terijs', 'Tihons', 'Tils', 'Timofejs', 'Timotejs', 'Tims', 'Timurs', 'Tits', 'Tobijs', 'Toivo', 'Tomass', 'Tomašs', 'Tomijs', 'Toms', 'Tonijs', 'Toralfs', 'Torolfs', 'Tors', 'Torvalds', 'Treviss', 'Trofims', 'Tumašs', 'Turaids', 'Tūrs',
'Udo', 'Uģis', 'Ugo', 'Ulams', 'Uldis', 'Uldriķis', 'Ulfs', 'Uljans', 'Uļjans', 'Ulrihs', 'Ulriks', 'Ulvars', 'Ulvis', 'Umberts', 'Undalgs', 'Undis', 'Ungars', 'Uno', 'Uvis',
'Vaclavs', 'Vadims', 'Vagifs', 'Vahtangs', 'Vaidelotis', 'Vaidis', 'Vaino', 'Vairis', 'Vaironis', 'Vairons', 'Vaits', 'Vaivars', 'Valdeko', 'Valdeks', 'Valdemārs', 'Valdemars', 'Valdimārts', 'Valdimirs', 'Valdis', 'Valdmiers', 'Valdonis', 'Valdons', 'Valds', 'Valeks', 'Valentijs', 'Valentīns', 'Valentins', 'Valents', 'Valeriāns', 'Valerijāns', 'Valērijs', 'Valerijs', 'Valerjāns', 'Valfrīds', 'Valgudis', 'Valijs', 'Valteris', 'Valters', 'Valtīns', 'Valtis', 'Valts', 'Varaidotis', 'Varaidots', 'Varfolomejs', 'Varimands', 'Varimants', 'Varis', 'Varonis', 'Vasīlijs', 'Vasils', 'Večeslavs', 'Večislavs', 'Veidols', 'Veiko', 'Veimārs', 'Veino', 'Velards', 'Velerjans', 'Vello', 'Venancijs', 'Venantijs', 'Venceslavs', 'Venčeslavs', 'Vencislavs', 'Vendijs', 'Venedikts', 'Veners', 'Veno', 'Ventis', 'Vents', 'Verners', 'Vernis', 'Vernons', 'Veronis', 'Vestards', 'Vicents', 'Vidards', 'Vidars', 'Vidarts', 'Videvuds', 'Videvuts', 'Vidis', 'Vidmands', 'Vidmants', 'Vidmunds', 'Vido', 'Vidulis', 'Vidvars', 'Vidvedis', 'Vidvuds', 'Vidvuts', 'Viestards', 'Viestars', 'Viestarts', 'Viesturis', 'Viesturs', 'Vieturs', 'Vīgants', 'Vigars', 'Vigelijs', 'Vigilijs', 'Vīgo', 'Vigors', 'Vigorts', 'Vigurds', 'Vijārs', 'Vijtauts', 'Vikars', 'Vikentijs', 'Vikijs', 'Viktorijs', 'Viktors', 'Vilārs', 'Vilberts', 'Vilemons', 'Vilens', 'Vilfrīds', 'Vilhelmīns', 'Vilhelms', 'Vilibalds', 'Viliberts', 'Vilijs', 'Vīlips', 'Vilis', 'Viljams', 'Villems', 'Villijs', 'Vilmārs', 'Vilmars', 'Vilnis', 'Viļums', 'Viļus', 'Vinārs', 'Vincens', 'Vincentijs', 'Vincents', 'Vinceslavs', 'Vincs', 'Viners', 'Vinets', 'Vinifreds', 'Vinolds', 'Vinsents', 'Vintārs', 'Vints', 'Virgilijs', 'Virginijs', 'Viskants', 'Vismands', 'Vismants', 'Visvaldis', 'Visvalds', 'Visvaris', 'Visvars', 'Vitālijs', 'Vitalijs', 'Vitālis', 'Vitaliss', 'Vitāls', 'Vitars', 'Vitauts', 'Vītauts', 'Vitis', 'Vito', 'Vitolds', 'Vitols', 'Vitors', 'Vits', 'Vitus', 'Vivaldis', 'Vivanto', 'Vizbulis', 'Vizulis', 'Vjačeslavs', 'Vladeks', 'Vladilens', 'Vladimirs', 'Vladis', 'Vladislavs', 'Vladlens', 'Vlads', 'Vmcis', 'Voicehs', 'Voiceks', 'Voicihs', 'Voiciks', 'Voičiks', 'Voitiks', 'Voldemārs', 'Voldemars', 'Voldis', 'Voldmārs', 'Volfgangs', 'Volfreds', 'Volfrīds', 'Volfs', 'Volmārs', 'Vsevolods', 'Vudis', 'Vudro', 'Vulmārs',
'Zaigonis', 'Zālamans', 'Zalamons', 'Zāmuels', 'Zandars', 'Zanders', 'Zandis', 'Zbigņevs', 'Zdeneks', 'Zelmars', 'Zemgus', 'Zemvaldis', 'Zemvalds', 'Zenons', 'Zezostris', 'Ziedonis', 'Ziedons', 'Zigfrīds', 'Zigfrids', 'Zigis', 'Zigismunds', 'Zigizmunds', 'Zigmans', 'Zigmants', 'Zigmāris', 'Zigmārs', 'Zigmars', 'Zigmonds', 'Zigmonts', 'Zigmunds', 'Zigmunts', 'Zigo', 'Zigonis', 'Zigrīds', 'Zigrids', 'Zigurds', 'Zigurts', 'Zigvards', 'Zilgars', 'Zinaidis', 'Zinaids', 'Zinovijs', 'Zintars', 'Zintauts', 'Zintis', 'Zinturs',
'Žaks', 'Žanis', 'Žanno', 'Žano', 'Žans', 'Ženijs', 'Žerārs', 'Žoržs', 'Žozefs',
];
/**
* {@link} http://vardunozime.lv/names-female
*/
protected static $firstNameFemale = [
'Ada', 'Adala', 'Adalberta', 'Adela', 'Adelaida', 'Adelaide', 'Adele', 'Adelfina', 'Adelgunde', 'Adelheida', 'Adelheide', 'Adelija', 'Adēlija', 'Adelīna', 'Adelina', 'Adija', 'Adīna', 'Adīne', 'Adonija', 'Adriāna', 'Adrija', 'Aelita', 'Afanasija', 'Afra', 'Afrodīte', 'Agafija', 'Agata', 'Agate', 'Agāte', 'Agija', 'Agika', 'Agita', 'Aglikerija', 'Agna', 'Agnda', 'Agne', 'Agnesa', 'Agnese', 'Agnesija', 'Agneška', 'Agņeška', 'Agneta', 'Agnete', 'Agneze', 'Agnēze', 'Agnija', 'Agnita', 'Agra', 'Agreda', 'Agrida', 'Agrija', 'Agrina', 'Agripina', 'Agrita', 'Agrīte', 'Agunda', 'Aīda', 'Aida', 'Aiga', 'Aigija', 'Aigita', 'Aigula', 'Aija', 'Aila', 'Ailenda', 'Aili', 'Ailija', 'Ailita', 'Aina', 'Aināra', 'Ainita', 'Aira', 'Airida', 'Airika', 'Airīna', 'Airisa', 'Airita', 'Airite', 'Aisma', 'Aista', 'Aiva', 'Aivija', 'Aivika', 'Aivita', 'Ajita', 'Akilina', 'Aksenija', 'Akulina', 'Akuļina', 'Akvelīna', 'Akvelina', 'Akvilīna', 'Ala', 'Alaida', 'Alba', 'Alberta', 'Albertīna', 'Albertīne', 'Albertine', 'Albīna', 'Albina', 'Albīne', 'Alda', 'Aldija', 'Aldīna', 'Aldona', 'Aldone', 'Aldonija', 'Aldra', 'Aleftīna', 'Aleftine', 'Aleksa', 'Aleksandra', 'Aleksandrīna', 'Aleksandrine', 'Alena', 'Alēna', 'Alerina', 'Alesja', 'Aleta', 'Alevtīna', 'Alevtīne', 'Alfa', 'Alfija', 'Alfonija', 'Alfra', 'Alfrīda', 'Ali', 'Alīcija', 'Alīda', 'Alida', 'Alīde', 'Alīdija', 'Alija', 'Alika', 'Alimpiada', 'Alīna', 'Alina', 'Aļina', 'Alīne', 'Alīsa', 'Alise', 'Alīse', 'Alīsija', 'Alita', 'Alla', 'Allija', 'Alma', 'Almāra', 'Alna', 'Alodija', 'Aloīda', 'Aloiza', 'Aloizija', 'Aļona', 'Alondra', 'Alta', 'Alva', 'Alvija', 'Alvika', 'Alvīna', 'Alvīne', 'Alvine', 'Alvinija', 'Alvita', 'Alžbeta', 'Amalda', 'Amālija', 'Amanda', 'Amanta', 'Amantija', 'Amaranda', 'Amaranta', 'Amarilla', 'Amelija', 'Amēlija', 'Amelita', 'Amenta', 'Amīda', 'Amilda', 'Ammonārija', 'Amrita', 'Ana', 'Aņa', 'Anabella', 'Anaita', 'Anāra', 'Anastasija', 'Anastāsija', 'Anastāzija', 'Anata', 'Anatolija', 'Ance', 'Anda', 'Andija', 'Andīna', 'Andina', 'Andīne', 'Andra', 'Andre', 'Andrelita', 'Andreta', 'Andriāna', 'Andrija', 'Andrijana', 'Andrika', 'Andrita', 'Andromeda', 'Andžela', 'Andželika', 'Andželīna', 'Andželita', 'Andžella', 'Ane', 'Aneka', 'Aņela', 'Aneļa', 'Anēla', 'Anela', 'Anēle', 'Anēlija', 'Anelija', 'Anemarija', 'Anese', 'Aneta', 'Anete', 'Anfija', 'Anfisa', 'Anga', 'Angeļa', 'Angela', 'Angelija', 'Angelika', 'Angēlika', 'Angelīna', 'Angelita', 'Anhelita', 'Aniceta', 'Anija', 'Anika', 'Anisija', 'Aņisija', 'Aņisja', 'Anita', 'Anitra', 'Ankatrina', 'Anlīza', 'Anlīze', 'Anlizeta', 'Anmāra', 'Anmarija', 'Anna', 'Annamarija', 'Anne', 'Annele', 'Annelija', 'Annemarija', 'Anneta', 'Annete', 'Annija', 'Annika', 'Anniņa', 'Anrita', 'Anta', 'Antainna', 'Antija', 'Antonela', 'Antonīda', 'Antonija', 'Antoņina', 'Antonīna', 'Antra', 'Antuaneta', 'Antuanete', 'Aņuta', 'Anžela', 'Anželika', 'Anželina', 'Anželita', 'Anžella', 'Anzelma', 'Apolinārija', 'Apolonija', 'Aralda', 'Aranta', 'Areta', 'Arfa', 'Argija', 'Argita', 'Argunda', 'Ariadna', 'Ariadne', 'Ariāna', 'Arianda', 'Ariandra', 'Arianna', 'Arīda', 'Arieta', 'Arija', 'Arimanda', 'Arīna', 'Arisa', 'Aristīda', 'Arita', 'Arjana', 'Arkādija', 'Arlita', 'Arma', 'Armanda', 'Armīda', 'Armilda', 'Arne', 'Arnīda', 'Arnija', 'Arnika', 'Arnita', 'Arta', 'Artemida', 'Artija', 'Arvaldina', 'Arvīda', 'Arvīde', 'Arvita', 'Asija', 'Asja', 'Asma', 'Asna', 'Asnate', 'Asnāte', 'Asne', 'Asola', 'Aspāzija', 'Asterija', 'Astērija', 'Astra', 'Astrīda', 'Astrida', 'Astrīde', 'Astrīte', 'Asunta', 'Ata', 'Atala', 'Atēna', 'Auce', 'Auda', 'Augenija', 'Augusta', 'Auguste', 'Augustīna', 'Augustīne', 'Aura', 'Aurēlija', 'Aurelija', 'Aurika', 'Aurora', 'Ausma', 'Aušra', 'Aušra', 'Austra', 'Austrīte', 'Avelīna', 'Avija', 'Avita', 'Aviva', 'Azanda', 'Azella',
'Ādolfina', 'Ādolfīne', 'Āra', 'Ārija', 'Ārika', 'Ārite', 'Ārvalda',
'Baiba', 'Balva', 'Banga', 'Baņuta', 'Barba', 'Bārbala', 'Barbala', 'Barbara', 'Barbola', 'Bažena', 'Beāta', 'Beāte', 'Beate', 'Beatrisa', 'Beatrise', 'Bekija', 'Belinda', 'Bella', 'Bemadita', 'Benedikta', 'Beneventa', 'Benigna', 'Benija', 'Benilda', 'Benita', 'Benjamina', 'Benoventa', 'Berenika', 'Berita', 'Bernada', 'Bernāde', 'Bernadeta', 'Bernadete', 'Bernadina', 'Bernadīne', 'Bernadīte', 'Bernarda', 'Bernarde', 'Bernardīna', 'Bernedīne', 'Berta', 'Beruta', 'Beta', 'Betija', 'Betsija', 'Bianka', 'Bille', 'Biminita', 'Binija', 'Binnija', 'Birgita', 'Biruta', 'Birute', 'Bitīte', 'Blāzma', 'Bogumila', 'Boļeslava', 'Bonaventūra', 'Bonifācija', 'Bonija', 'Bonoventura', 'Borbala', 'Borbola', 'Borbula', 'Borghilde', 'Božena', 'Brenda', 'Breta', 'Briāna', 'Bridžita', 'Brigita', 'Brina', 'Brinda', 'Brita', 'Brīva', 'Brīve', 'Brīvīte', 'Broņa', 'Bronhilda', 'Bronija', 'Broņislava', 'Bronislava', 'Brunhilda', 'Brunhilde', 'Brunita',
'Čarita', 'Čelsija', 'Čereta', 'Česlava', 'Čezeta',
'Cecīlija', 'Cecilija', 'Celerīna', 'Celīna', 'Centa', 'Centolla', 'Cera', 'Cerība', 'Cezarija', 'Cicilija', 'Ciedra', 'Cilda', 'Cilija', 'Cilina', 'Cilmija', 'Cilnija', 'Cina', 'Cintija', 'Cirēnija',
'Dace', 'Dacija', 'Dacīte', 'Daglta', 'Dagmāra', 'Dagmara', 'Dagna', 'Dagne', 'Dagnija', 'Dagnita', 'Daidze', 'Daiga', 'Daigone', 'Daija', 'Daila', 'Daile', 'Daimona', 'Daina', 'Dainavīte', 'Dainida', 'Dainita', 'Dainīte', 'Dainuvīte', 'Daira', 'Dairita', 'Daiva', 'Dajana', 'Dālija', 'Dana', 'Dane', 'Daneta', 'Danica', 'Danida', 'Daniela', 'Dāniela', 'Daniēla', 'Daniella', 'Danija', 'Danika', 'Daņila', 'Danita', 'Danna', 'Danuta', 'Daņuta', 'Danute', 'Dārija', 'Darina', 'Darja', 'Dārta', 'Dārte', 'Debora', 'Dedze', 'Deina', 'Deivija', 'Deizija', 'Delfīna', 'Delfīne', 'Demija', 'Denija', 'Denisa', 'Denise', 'Denīza', 'Denīze', 'Denora', 'Dēvija', 'Dezija', 'Dēzija', 'Diāna', 'Diana', 'Diandra', 'Dianna', 'Diāra', 'Dida', 'Digna', 'Digne', 'Dina', 'Dīna', 'Dināra', 'Dineta', 'Dinija', 'Dinnija', 'Dita', 'Dite', 'Dolita', 'Dollija', 'Doloresa', 'Dome', 'Domenika', 'Domicela', 'Domicele', 'Domicelija', 'Domicella', 'Domija', 'Dominika', 'Domna', 'Domuse', 'Donāta', 'Donāte', 'Donicela', 'Donvina', 'Dora', 'Dore', 'Doreta', 'Dorina', 'Dorisa', 'Dorita', 'Dorota', 'Doroteja', 'Dorotija', 'Dorta', 'Dorte', 'Drosma', 'Drosme', 'Dūda', 'Džamila', 'Džana', 'Džaneta', 'Džanete', 'Džanita', 'Džasmīna', 'Džastina', 'Džeina', 'Dzeja', 'Dzelde', 'Džellija', 'Dzelme', 'Džema', 'Džemma', 'Džena', 'Dženeta', 'Dženete', 'Dženifera', 'Dženija', 'Dženita', 'Džeralda', 'Džeraldīne', 'Džesija', 'Džesika', 'Dzestra', 'Dzidra', 'Dzidrite', 'Dziedra', 'Dziesma', 'Džigunda', 'Džilda', 'Dzīle', 'Džina', 'Dzine', 'Džineta', 'Džinita', 'Dzinta', 'Dzintara', 'Dzintāra', 'Dzintārija', 'Dzintra', 'Dzirkstīte', 'Džoanna', 'Džoija', 'Džoja', 'Džovita', 'Džudīte', 'Džūlija', 'Džuljeta',
'Eba', 'Eda', 'Ede', 'Edija', 'Edīta', 'Edīte', 'Edite', 'Edla', 'Edmonda', 'Edna', 'Eduarda', 'Edviga', 'Edvija', 'Edvīna', 'Edvīne', 'Efeja', 'Ega', 'Egida', 'Egija', 'Egīna', 'Egita', 'Egle', 'Egmonta', 'Eifrozine', 'Eila', 'Eina', 'Eiženija', 'Eižēnija', 'Eļa', 'Elāna', 'Elda', 'Elektra', 'Elena', 'Elēna', 'Elenora', 'Eleonora', 'Elfa', 'Elfija', 'Elfrīda', 'Elfrida', 'Elfrīde', 'Elga', 'Elgita', 'Elīda', 'Elija', 'Elika', 'Elīna', 'Elina', 'Elīne', 'Elionora', 'Elīsa', 'Elise', 'Elita', 'Elite', 'Elīza', 'Eliza', 'Elīzabeta', 'Elizabete', 'Elīzabete', 'Elizaveta', 'Elizavete', 'Elizbete', 'Elize', 'Ella', 'Ellana', 'Ellena', 'Ellija', 'Elma', 'Elmāra', 'Elmija', 'Elmīna', 'Elmīne', 'Elmīra', 'Elmira', 'Elna', 'Elnāra', 'Elneta', 'Elona', 'Elta', 'Elva', 'Elvi', 'Elviga', 'Elvija', 'Elvīna', 'Elvīne', 'Elvīra', 'Elvira', 'Elvisa', 'Elvita', 'Elza', 'Elzabeta', 'Elžbeta', 'Ema', 'Emanuēla', 'Emarita', 'Emerenciana', 'Emerencija', 'Emerencijana', 'Emerenta', 'Emerentiana', 'Emerentina', 'Emerentīne', 'Emerita', 'Emertijana', 'Emija', 'Emilda', 'Emiliana', 'Emīlija', 'Emilija', 'Emilijana', 'Emīlja', 'Emiljana', 'Emīra', 'Emirita', 'Emma', 'Emme', 'Ena', 'Enda', 'Endija', 'Endžija', 'Ene', 'Enerita', 'Engelīna', 'Enīda', 'Enija', 'Enina', 'Enita', 'Ennata', 'Ennija', 'Enrija', 'Enrika', 'Enriketa', 'Enta', 'Envija', 'Era', 'Erena', 'Erēna', 'Eridana', 'Erika', 'Erīna', 'Erita', 'Erma', 'Ermīna', 'Ermīne', 'Ermionija', 'Ermonija', 'Erna', 'Erneste', 'Ernestīna', 'Ernestīne', 'Ernestine', 'Ernita', 'Ervīna', 'Ervita', 'Esēnija', 'Esfira', 'Esija', 'Esmeralda', 'Esmeralde', 'Estella', 'Estera', 'Estere', 'Estra', 'Eta', 'Etele', 'Etelvīne', 'Etere', 'Eteri', 'Etīna', 'Euģenija', 'Euģēnija', 'Eugenija', 'Eugēnija', 'Eulālija', 'Eva', 'Evalina', 'Eve', 'Evelīna', 'Evelina', 'Evelīne', 'Evelita', 'Everika', 'Everita', 'Evgēnija', 'Evgenija', 'Evģēnija', 'Evģenija', 'Evī', 'Evija', 'Evika', 'Evisa', 'Evita', 'Evrika',
'Ēra', 'Ērika', 'Ēstere', 'Ēva', 'Ēvī', 'Ēvija', 'Ēvisa',
'Faina', 'Fanija', 'Fannija', 'Farida', 'Fatima', 'Fatina', 'Fatma', 'Feja', 'Feliciāna', 'Felicianna', 'Felīcija', 'Felicijana', 'Felicita', 'Felicjana', 'Felonija', 'Fenija', 'Feodora', 'Feodosija', 'Feona', 'Feonija', 'Fetna', 'Fevronija', 'Filemona', 'Filgita', 'Filicija', 'Filimona', 'Fiļimona', 'Filimonija', 'Filiomena', 'Filipina', 'Filomeja', 'Filomena', 'Filumena', 'Fionija', 'Flora', 'Florence', 'Florentija', 'Florentīna', 'Florentīne', 'Floriana', 'Florija', 'Florijana', 'Fortunata', 'Frančeska', 'Franciska', 'Franciška', 'Frančiska', 'Fransuāza', 'Františka', 'Franuse', 'Fraskita', 'Frederika', 'Frensisa', 'Frīda', 'Frida', 'Friderika', 'Fridriha',
'Gabija', 'Gabriēla', 'Gabriela', 'Gabriele', 'Gabriella', 'Gaida', 'Gaidite', 'Gaija', 'Gaisma', 'Gaismīte', 'Gaismone', 'Gaita', 'Galina', 'Gaļina', 'Ganda', 'Geda', 'Gēda', 'Gedra', 'Geila', 'Gelija', 'Gēlija', 'Gelinta', 'Genefa', 'Generoza', 'Genija', 'Genita', 'Genovaite', 'Genovefa', 'Genoveja', 'Genovera', 'Genoveva', 'Gentra', 'Genuvefa', 'Geraldina', 'Gerarda', 'Gerda', 'Geronima', 'Gertija', 'Gertrūda', 'Gertrūde', 'Gertrude', 'Gesta', 'Gianeja', 'Giedra', 'Gija', 'Gina', 'Gināra', 'Gineta', 'Ginita', 'Ginta', 'Gintija', 'Gita', 'Gitāna', 'Gitija', 'Gizela', 'Glafīra', 'Glaima', 'Glauda', 'Gledisa', 'Glenda', 'Glendija', 'Glikerija', 'Glita', 'Glorija', 'Gonda', 'Gotlība', 'Grācija', 'Grasilda', 'Grata', 'Gražina', 'Greta', 'Grēta', 'Grieta', 'Grietina', 'Grineta', 'Grinete', 'Grita', 'Grizelda', 'Gudrīte', 'Gudruna', 'Gulnara', 'Guļnara', 'Guna', 'Gunāra', 'Gunavefa', 'Gunda', 'Gundega', 'Gundija', 'Gundra', 'Gunefa', 'Guneta', 'Gunita', 'Gunitra', 'Gunmāra', 'Gunta', 'Guntiņa', 'Guntra', 'Gusta', 'Guste', 'Gvenda', 'Gvida', 'Gvidālija',
'Ģēda', 'Ģenovefa', 'Ģertcuda', 'Ģertrūda', 'Ģertrūde', 'Ģertrude', 'Ģiedra', 'Ģinta',
'Haida', 'Haide', 'Halina', 'Halīna', 'Hanelita', 'Hanna', 'Hannelore', 'Hannija', 'Hanzija', 'Haralda', 'Hardija', 'Harija', 'Harina', 'Harita', 'Haritina', 'Heda', 'Hedija', 'Hedviga', 'Heidija', 'Helēna', 'Helena', 'Helēne', 'Helene', 'Helga', 'Helge', 'Helgi', 'Helgrīda', 'Hēlija', 'Helita', 'Helju', 'Hella', 'Hellēna', 'Hellija', 'Helma', 'Helmija', 'Helmīna', 'Helmīne', 'Helmīra', 'Helmute', 'Helta', 'Helvi', 'Helvija', 'Helvita', 'Henija', 'Henisa', 'Henita', 'Hennija', 'Henrieta', 'Henriete', 'Henrija', 'Henrika', 'Henrita', 'Hēra', 'Hera', 'Herenija', 'Herita', 'Herma', 'Hermīna', 'Hermīne', 'Hermine', 'Heronija', 'Heronima', 'Herta', 'Hervita', 'Hetija', 'Hiacinta', 'Hilarija', 'Hilda', 'Hildegarde', 'Hildura', 'Hilga', 'Hilja', 'Hilma', 'Honorata', 'Honoreta', 'Hortenzija', 'Hulda',
'Ida', 'Ideja', 'Idilija', 'Idra', 'Ieva', 'Ieviņa', 'Igeta', 'Igila', 'Igita', 'Ignese', 'Igunda', 'Ija', 'Ilāna', 'Ilanda', 'Ilanta', 'Ilāra', 'Ilārija', 'Ilda', 'Ildra', 'Ildze', 'Ileana', 'Ilga', 'Ilgnese', 'Ilgona', 'Iliana', 'Ilija', 'Ilita', 'Ilizana', 'Ilizane', 'Iļja', 'Iljana', 'Iļjana', 'Illa', 'Illarija', 'Illuminata', 'Ilma', 'Ilmara', 'Ilme', 'Ilmija', 'Ilna', 'Ilona', 'Ilonda', 'Ilone', 'Ilonija', 'Iluta', 'Ilva', 'Ilveta', 'Ilvija', 'Ilvīra', 'Ilvita', 'Ilza', 'Ilze', 'Ilzīte', 'Ima', 'Imalda', 'Imanda', 'Imandra', 'Imanta', 'Imelda', 'Imgarde', 'Imre', 'Imula', 'Ina', 'Inaida', 'Ināra', 'Inara', 'Inārija', 'Inarta', 'Inatra', 'Inda', 'Indīra', 'Indra', 'Inelda', 'Inesa', 'Inese', 'Inesīte', 'Ineta', 'Inete', 'Inga', 'Inge', 'Ingeborga', 'Ingemāra', 'Ingera', 'Ingēra', 'Ingerūda', 'Ingeta', 'Ingita', 'Ingmāra', 'Ingra', 'Ingre', 'Ingreta', 'Ingrīda', 'Ingrida', 'Ingrita', 'Inguna', 'Ingūna', 'Ingunda', 'Ingūra', 'Inguta', 'Ingvilda', 'Inija', 'Inita', 'Initra', 'Inna', 'Innara', 'Inneta', 'Inota', 'Inta', 'Intra', 'Inuta', 'Inveiga', 'Ira', 'Iraīda', 'Iraida', 'Iraisa', 'Irbe', 'Irēna', 'Irena', 'Irene', 'Irēne', 'Irīda', 'Irida', 'Irija', 'Irina', 'Irīna', 'Irisa', 'Irita', 'Irma', 'Irme', 'Irmgarda', 'Irmgarde', 'Irmiņa', 'Irmīna', 'Irmīne', 'Irmtrauta', 'Irmtraute', 'Irta', 'Iruta', 'Irute', 'Irvita', 'Irži', 'Isma', 'Ita', 'Itija', 'Iva', 'Ivaise', 'Ivanda', 'Ivande', 'Ivanna', 'Ivāra', 'Ivase', 'Ivena', 'Iverta', 'Iveta', 'Ivete', 'Ivika', 'Ivita', 'Ivona', 'Ivonda', 'Ivonija', 'Ivonna', 'Iza', 'Izabela', 'Izabella', 'Izanda', 'Izaura', 'Izīda', 'Izolda', 'Izolde',
'Īda', 'Īģe', 'Īna', 'Īra', 'Īrisa', 'Īva', 'Īvija',
'Jacinta', 'Jadviga', 'Jadvīga', 'Jadze', 'Jakobīna', 'Jalanta', 'Jana', 'Jāna', 'Janeka', 'Janeta', 'Janete', 'Janika', 'Janīna', 'Janina', 'Jaņīna', 'Janita', 'Janna', 'Janta', 'Januārija', 'Jaroslava', 'Jasmīna', 'Jasmīne', 'Jausma', 'Jautra', 'Jautrīte', 'Jāzepa', 'Jazepata', 'Jazupata', 'Jedviga', 'Jefimija', 'Jefrosīnija', 'Jekaterīna', 'Jeļena', 'Jeļizabeta', 'Jelizabeta', 'Jelizaveta', 'Jeļizaveta', 'Jelizavete', 'Jeļizavete', 'Jella', 'Jesija', 'Jeta', 'Jete', 'Jevdokija', 'Jevgēņija', 'Jevģenija', 'Jevģēnija', 'Jevgēnija', 'Jevgenija', 'Jevgeņija', 'Jevlampija', 'Jevženija', 'Jevžēnija', 'Jezufata', 'Jezupata', 'Jezupate', 'Joana', 'Joanna', 'Jogita', 'Johana', 'Johanna', 'Jolanda', 'Jolanta', 'Jolita', 'Jonita', 'Jovita', 'Jozefa', 'Jozefata', 'Jozefīna', 'Jozefīne', 'Juanna', 'Judīte', 'Jugita', 'Jūla', 'Jūle', 'Jūliāna', 'Jūļiana', 'Julianija', 'Jūlianna', 'Jūlija', 'Julija', 'Jūlijana', 'Julijanna', 'Julita', 'Juļjana', 'Juna', 'Jūnija', 'Junita', 'Junna', 'Junona', 'Junora', 'Junta', 'Juranta', 'Jūrāte', 'Jureta', 'Jurgita', 'Jurika', 'Jurita', 'Jūsma', 'Justa', 'Justīna', 'Justīne', 'Justine', 'Justīnija', 'Juta', 'Juvita', 'Juzefa', 'Juzefata', 'Juzefate', 'Juzefīna', 'Juzefine', 'Juzepa', 'Juzepata', 'Juzepate', 'Juzufata',
'Kadrija', 'Kaija', 'Kaira', 'Kaiva', 'Kamēlija', 'Kamena', 'Kamila', 'Kamīlija', 'Kamilla', 'Kamita', 'Kandida', 'Karalina', 'Karena', 'Kārija', 'Karīna', 'Kārina', 'Karinē', 'Karīne', 'Karita', 'Karla', 'Karlīna', 'Karlina', 'Karlīne', 'Karmena', 'Karmene', 'Karola', 'Karolīna', 'Karolīne', 'Karulina', 'Kasandra', 'Katalīna', 'Katarīna', 'Katažina', 'Kate', 'Katerīna', 'Katija', 'Katiņa', 'Katra', 'Katre', 'Katri', 'Katrīna', 'Katrina', 'Katrīne', 'Katriona', 'Kazimerina', 'Kazimira', 'Kazimirina', 'Kazmerina', 'Kazmirina', 'Kecija', 'Keisija', 'Keita', 'Keitija', 'Kelija', 'Kellija', 'Kendija', 'Kerija', 'Kerola', 'Kerolaina', 'Kerolaine', 'Kersti', 'Kerstina', 'Keta', 'Kēta', 'Kete', 'Kēte', 'Ketija', 'Ketlīna', 'Ketrija', 'Ketrīna', 'Kilikeja', 'Kima', 'Kimberiija', 'Kintija', 'Kira', 'Kitija', 'Klāra', 'Klara', 'Klaudija', 'Klavdija', 'Klementīna', 'Klementīne', 'Klementine', 'Kleofa', 'Kleopatra', 'Kleotilda', 'Klēra', 'Klimentīna', 'Klinta', 'Klitija', 'Klodija', 'Klotilde', 'Koleta', 'Konkordija', 'Konstance', 'Konstancija', 'Konstantija', 'Konstantīna', 'Konstantīne', 'Konsuela', 'Konsuella', 'Kora', 'Korina', 'Kornēlija', 'Kornelija', 'Krista', 'Kriste', 'Kristela', 'Kristena', 'Kristiāna', 'Kristiana', 'Kristiāne', 'Kristianna', 'Kristija', 'Kristijana', 'Kristilla', 'Kristīna', 'Kristīne', 'Kristine', 'Ksaverija', 'Ksavērija', 'Ksenija', 'Ksēnija', 'Kunegunda', 'Kunigunda', 'Kuzma',
'Ķērsta', 'Ķersta',
'Lada', 'Laija', 'Laila', 'Lailita', 'Laima', 'Laimdota', 'Laimiņa', 'Laimīte', 'Laimrita', 'Laimrota', 'Laimute', 'Laina', 'Laine', 'Laineta', 'Laira', 'Laisve', 'Lala', 'Lalita', 'Lana', 'Lāna', 'Landa', 'Langina', 'Largija', 'Larija', 'Larina', 'Larisa', 'Lāse', 'Lāsma', 'Lasma', 'Lāsmiņa', 'Late', 'Latvīte', 'Lauma', 'Laumīte', 'Laura', 'Laure', 'Laurentīna', 'Laureta', 'Laurita', 'Lavīze', 'Lea', 'Leāna', 'Leāra', 'Leida', 'Leila', 'Leina', 'Lelda', 'Lelde', 'Lena', 'Lēna', 'Lendija', 'Lengina', 'Lenija', 'Lenita', 'Lenora', 'Lenvija', 'Leokādija', 'Leokadija', 'Leolita', 'Leona', 'Leonāra', 'Leonarda', 'Leonārija', 'Leone', 'Leongīna', 'Leongīne', 'Leonīda', 'Leonida', 'Leonide', 'Leonija', 'Leonila', 'Leonilla', 'Leonita', 'Leonora', 'Leonorija', 'Leontija', 'Leontīna', 'Leontīne', 'Leontine', 'Leopoldina', 'Letīcija', 'Levantīna', 'Levita', 'Lia', 'Liāna', 'Liana', 'Lianda', 'Lianta', 'Liāra', 'Lība', 'Liberata', 'Lida', 'Līda', 'Lidija', 'Lidita', 'Liega', 'Liena', 'Liene', 'Lienīte', 'Liesma', 'Līga', 'Ligija', 'Ligindra', 'Ligita', 'Lija', 'Līksma', 'Lilana', 'Lili', 'Liliāna', 'Liliana', 'Lilianna', 'Lilija', 'Līlija', 'Lilijana', 'Lilioza', 'Lilita', 'Lilja', 'Liljana', 'Lilli', 'Lillija', 'Lillita', 'Līna', 'Lina', 'Linarda', 'Linda', 'Linde', 'Lindija', 'Līne', 'Lineta', 'Linita', 'Linna', 'Liona', 'Lioneta', 'Lionija', 'Lipija', 'Lira', 'Līrija', 'Lisa', 'Lisija', 'Lita', 'Līva', 'Liva', 'Liveta', 'Līvija', 'Livija', 'Livita', 'Liza', 'Līza', 'Lizabete', 'Lizbete', 'Līze', 'Lize', 'Lizelote', 'Lizeta', 'Lizete', 'Līzete', 'Līziņa', 'Logina', 'Logita', 'Loida', 'Lola', 'Lolija', 'Lolita', 'Lollija', 'Lone', 'Longīna', 'Lonija', 'Lonita', 'Lonnija', 'Lontīne', 'Lora', 'Loransa', 'Loreina', 'Lorena', 'Lorēna', 'Lorensa', 'Lorenta', 'Loreta', 'Lorete', 'Lorija', 'Lorika', 'Lorina', 'Lorita', 'Lota', 'Lote', 'Loveta', 'Luāna', 'Lucianna', 'Lūcija', 'Lucija', 'Lucijana', 'Ludmila', 'Ludmilla', 'Ludovika', 'Ludviga', 'Ludvika', 'Ludvisa', 'Ludvise', 'Ludvisija', 'Lueta', 'Lugra', 'Luīza', 'Luīze', 'Luize', 'Lukrecija', 'Lukrēcija', 'Lūlija', 'Lusija', 'Lusja',
'Ļoņa', 'Ļubova', 'Ļudgarda', 'Ļudvise',
'Madaļa', 'Madara', 'Madare', 'Made', 'Madelaina', 'Madlena', 'Madlēna', 'Mafalda', 'Magda', 'Magdalēna', 'Magdalena', 'Magdaliene', 'Magdalina', 'Magnolija', 'Magone', 'Magrieta', 'Magrita', 'Maida', 'Maiga', 'Maigone', 'Maija', 'Maila', 'Maima', 'Maina', 'Maira', 'Mairina', 'Mairita', 'Mairite', 'Mairuta', 'Makrina', 'Malānija', 'Malda', 'Maldiņa', 'Māle', 'Malgonija', 'Malgožata', 'Malle', 'Malva', 'Malvīna', 'Malvīne', 'Malvine', 'Manda', 'Manefa', 'Manuela', 'Māra', 'Maranda', 'Maranta', 'Marcela', 'Marčela', 'Marcelina', 'Marcella', 'Marciana', 'Marcianna', 'Marčija', 'Marcijana', 'Marcijanna', 'Māre', 'Mareka', 'Māreta', 'Marfa', 'Marga', 'Margareta', 'Margarēta', 'Margarieta', 'Margarita', 'Mārģieta', 'Margieta', 'Margita', 'Margnta', 'Margota', 'Margote', 'Margreta', 'Margrieta', 'Marguta', 'Marī', 'Mariana', 'Marianna', 'Mārica', 'Mariela', 'Mārieta', 'Marija', 'Marijana', 'Marijanna', 'Marijeta', 'Marika', 'Mārika', 'Marina', 'Marīna', 'Mariona', 'Marisa', 'Marita', 'Mārita', 'Maritana', 'Mārīte', 'Marīte', 'Marjama', 'Marjana', 'Marjanna', 'Marjeta', 'Marlēna', 'Marlena', 'Marsela', 'Marseljēza', 'Marsella', 'Marta', 'Mārta', 'Martijana', 'Martīna', 'Maruta', 'Māruta', 'Marute', 'Matilda', 'Matilde', 'Matrjona', 'Matrona', 'Mazalda', 'Mečislava', 'Medeja', 'Mega', 'Megija', 'Mehribana', 'Melānija', 'Melanija', 'Meldra', 'Melija', 'Melinda', 'Melisa', 'Melisandra', 'Melita', 'Melitina', 'Melizanda', 'Melizande', 'Menarda', 'Mendija', 'Meralda', 'Meri', 'Merīda', 'Mērija', 'Merija', 'Merilina', 'Merita', 'Merseda', 'Mersēda', 'Mersedesa', 'Meta', 'Mēta', 'Mētra', 'Mīce', 'Midite', 'Miervalda', 'Mihailina', 'Mihaļina', 'Mihalīna', 'Mija', 'Mikaela', 'Mikalina', 'Mīla', 'Milāna', 'Milda', 'Mildreda', 'Mīle', 'Milēna', 'Milena', 'Milica', 'Milija', 'Milita', 'Millija', 'Milona', 'Milvija', 'Mimoza', 'Mina', 'Minadora', 'Mindora', 'Minjona', 'Minna', 'Mira', 'Mirabella', 'Miralda', 'Miranda', 'Mirdza', 'Mirga', 'Mirjāma', 'Mirjana', 'Miroslava', 'Mirta', 'Mišela', 'Moda', 'Modesta', 'Modra', 'Modrīte', 'Molija', 'Mollija', 'Mona', 'Monda', 'Monija', 'Monika', 'Monna', 'Monrita', 'Monta', 'Monvida', 'Mora', 'Morēna', 'Mudīte', 'Mudra', 'Mudrīte', 'Munda', 'Mundra', 'Mundrīte', 'Munise', 'Mūza',
'Nadežda', 'Nadija', 'Nadīna', 'Nadina', 'Nadīne', 'Naila', 'Naina', 'Naira', 'Nameda', 'Nana', 'Nanda', 'Nanete', 'Nanija', 'Nannija', 'Nansija', 'Naomi', 'Nāra', 'Narcise', 'Narciza', 'Nargisa', 'Nargiza', 'Nārija', 'Narine', 'Nastasija', 'Nastja', 'Nata', 'Natalī', 'Natālija', 'Natalija', 'Nataļja', 'Natalja', 'Nate', 'Natela', 'Natella', 'Naula', 'Necija', 'Neda', 'Neila', 'Neļa', 'Nelda', 'Nelija', 'Nelima', 'Nelita', 'Nella', 'Nellija', 'Nena', 'Nensija', 'Neonila', 'Neonilla', 'Nērika', 'Neringa', 'Neta', 'Niāra', 'Niceta', 'Nida', 'Nigra', 'Nija', 'Nijole', 'Nika', 'Nikija', 'Nikita', 'Nikola', 'Nikoleta', 'Nila', 'Nilda', 'Nilija', 'Niluta', 'Nimmija', 'Nīna', 'Ninele', 'Ninella', 'Nineta', 'Ninona', 'Niola', 'Nīra', 'Nita', 'Noela', 'Nominanda', 'Nona', 'Nonna', 'Nora', 'Norgita', 'Norika', 'Noriņa', 'Norīte', 'Norma', 'Normanta', 'Normunda', 'Norvalda',
'Ņina', 'Ņīna',
'Odeta', 'Odita', 'Odrija', 'Ofēlija', 'Oksana', 'Oksāna', 'Oktāvija', 'Olesija', 'Oļesija', 'Olesja', 'Oļesja', 'Olga', 'Olgita', 'Olija', 'Olimpiada', 'Olimpija', 'Olina', 'Olita', 'Olīva', 'Olīvija', 'Olivija', 'Ollija', 'Olrita', 'Olvija', 'Olvita', 'Omula', 'Ona', 'Oneta', 'Oniksa', 'Onufrija', 'Orhideja', 'Orīda', 'Ornella', 'Ortenzija', 'Ortija', 'Oskarīna', 'Otālija', 'Otīlija', 'Otilija',
'Paija', 'Palmīra', 'Pamela', 'Pārsla', 'Pārsliņa', 'Patrīcija', 'Patricija', 'Paula', 'Pauleta', 'Paulīna', 'Paulīne', 'Pauline', 'Pavlīna', 'Pavlīne', 'Pegija', 'Pelageja', 'Pērie', 'Petra', 'Petronela', 'Petronele', 'Petronelija', 'Petronella', 'Petronellija', 'Petrunela', 'Petruneļa', 'Petrunele', 'Petrunelija', 'Pilimona', 'Pireta', 'Polīna', 'Poļina', 'Potencija', 'Praskovja', 'Proskovja', 'Pudencija', 'Pudentija',
'Rada', 'Radmila', 'Radu', 'Raēle', 'Ragnēda', 'Ragnija', 'Raida', 'Raiena', 'Raija', 'Raima', 'Raimija', 'Raimona', 'Raimonda', 'Raina', 'Rainelda', 'Rainelde', 'Raisa', 'Raisma', 'Raita', 'Raiva', 'Raivita', 'Raja', 'Raksana', 'Ralda', 'Ramīna', 'Ramona', 'Ramuna', 'Ramune', 'Ramute', 'Rana', 'Ranāte', 'Randa', 'Randija', 'Raneta', 'Ranita', 'Ranta', 'Rasa', 'Rasita', 'Rasma', 'Rasmīte', 'Rasulīte', 'Rauza', 'Ravena', 'Ravita', 'Rebeka', 'Regija', 'Regīna', 'Regina', 'Reģīna', 'Regita', 'Reičela', 'Reina', 'Rena', 'Rēna', 'Renalda', 'Renāta', 'Renāte', 'Renate', 'Rendija', 'Renē', 'Reneta', 'Renija', 'Renita', 'Renta', 'Reta', 'Revita', 'Rezēda', 'Rezenda', 'Rezija', 'Rēzija', 'Rianda', 'Riandra', 'Rieta', 'Rigmora', 'Rigonda', 'Rikarda', 'Rima', 'Rimanta', 'Rimma', 'Rimona', 'Rimonda', 'Rimvalda', 'Rina', 'Rinalda', 'Rineta', 'Rinete', 'Ringla', 'Rinta', 'Rinvalda', 'Riona', 'Rita', 'Ritija', 'Ritma', 'Roberta', 'Robertīne', 'Robija', 'Robina', 'Rode', 'Roēna', 'Rogate', 'Roksana', 'Rolanda', 'Rolande', 'Rolanta', 'Rolita', 'Roma', 'Romalda', 'Romanda', 'Romānija', 'Romāra', 'Romena', 'Romēna', 'Rometa', 'Romija', 'Romina', 'Romualda', 'Romuta', 'Romvalda', 'Rona', 'Ronalda', 'Ronta', 'Rosita', 'Rosma', 'Rosvita', 'Rota', 'Rovena', 'Rovēna', 'Roza', 'Rozālija', 'Rozalija', 'Roze', 'Rozemarija', 'Rozita', 'Rozīte', 'Rozmarija', 'Rozvita', 'Ruāna', 'Ruda', 'Rudi', 'Rudīte', 'Rufina', 'Rusanda', 'Ruslana', 'Rusudana', 'Rūta', 'Ruta', 'Rūte', 'Rūtiņa', 'Ruzanna', 'Ruze',
'Sabīna', 'Sabīne', 'Sabine', 'Sabrīna', 'Sagita', 'Saida', 'Saiga', 'Saija', 'Saila', 'Sailita', 'Saimona', 'Saira', 'Sairita', 'Saiva', 'Saksija', 'Salda', 'Salimona', 'Salimonija', 'Sallija', 'Salma', 'Salme', 'Salome', 'Salomeja', 'Salomija', 'Salvija', 'Samanta', 'Samīra', 'Sana', 'Sanda', 'Sandija', 'Sandita', 'Sandra', 'Sandrīte', 'Saneta', 'Sangrita', 'Sanija', 'Sanita', 'Sanlija', 'Sannija', 'Santa', 'Santana', 'Santija', 'Santra', 'Sāra', 'Sarika', 'Sarita', 'Sarma', 'Sarme', 'Sarmīte', 'Sārtīte', 'Saulcerīte', 'Saule', 'Saulgaida', 'Saulīte', 'Saulstarīte', 'Saulvija', 'Sava', 'Savina', 'Savita', 'Seila', 'Selēna', 'Selga', 'Sēlija', 'Selīna', 'Selita', 'Sella', 'Sellija', 'Selma', 'Selva', 'Senda', 'Sendija', 'Sendra', 'Senija', 'Senora', 'Serafima', 'Serafina', 'Serena', 'Serlana', 'Sevda', 'Severīna', 'Sholastika', 'Sholostika', 'Siandra', 'Sianta', 'Siāra', 'Sibilla', 'Sidija', 'Sidnija', 'Sidonija', 'Sigeta', 'Sigija', 'Sigita', 'Siglinda', 'Siglinde', 'Sigma', 'Signa', 'Signe', 'Signeja', 'Signejana', 'Signese', 'Signeta', 'Signija', 'Signita', 'Sigrīda', 'Sigrija', 'Sigrūna', 'Siguta', 'Sigute', 'Sijanda', 'Silga', 'Silja', 'Silva', 'Silvana', 'Silvestra', 'Silveta', 'Silvija', 'Silvita', 'Simona', 'Simoneta', 'Sinatra', 'Sinda', 'Sindija', 'Sindra', 'Singa', 'Singita', 'Singrita', 'Singūna', 'Sinilga', 'Sinita', 'Sinta', 'Sinti', 'Sintija', 'Sirdsvalda', 'Sirdvalda', 'Sīringa', 'Sirje', 'Sivija', 'Sjuzanna', 'Skaidra', 'Skaidre', 'Skaidrīte', 'Skara', 'Skārleta', 'Skolastika', 'Skolestika', 'Skolostika', 'Slanda', 'Smaida', 'Smaidiņa', 'Smaidīte', 'Smaidra', 'Smuidra', 'Smuidrīte', 'Snežana', 'Sņežana', 'Sņežanna', 'Snežanna', 'Sniedze', 'Sniedzīte', 'Sniga', 'Sofija', 'Sofja', 'Solanža', 'Solita', 'Solomeja', 'Solomija', 'Solomonija', 'Solumeja', 'Solvega', 'Solvēga', 'Solveiga', 'Solveta', 'Solvija', 'Solvita', 'Soņa', 'Sondra', 'Sonija', 'Sonita', 'Sonora', 'Sorenta', 'Spārīte', 'Spīdola', 'Spodra', 'Spodrīte', 'Spulga', 'Staņislava', 'Stanislava', 'Stase', 'Stasija', 'Stasja', 'Stefanīda', 'Stefānija', 'Stefanija', 'Steidzīte', 'Steiga', 'Stella', 'Stepanīda', 'Stepānija', 'Stīna', 'Stīne', 'Strauja', 'Straumīte', 'Strauta', 'Sulamīte', 'Susanna', 'Suzana', 'Suzanna', 'Svanhilda', 'Sveta', 'Svetlana',
'Šarlota', 'Šarlote', 'Šeila', 'Šeila', 'Šeilija', 'Šelda', 'Šellija', 'Širiija', 'Širleja',
'Tabita', 'Tabite', 'Tahmina', 'Taīda', 'Taiga', 'Taila', 'Taimira', 'Taisa', 'Taisija', 'Taive', 'Tāla', 'Tāle', 'Tālija', 'Talija', 'Talita', 'Tālivalda', 'Tālrita', 'Tamāra', 'Tamara', 'Taņa', 'Tanita', 'Tatjana', 'Tea', 'Teika', 'Teiksma', 'Tekla', 'Telma', 'Teodora', 'Teofīla', 'Teofile', 'Teofīlija', 'Teresa', 'Terēsa', 'Terese', 'Terēse', 'Terēsija', 'Teresija', 'Terēza', 'Tereza', 'Terēze', 'Tereze', 'Terezija', 'Terēzija', 'Tesa', 'Tija', 'Tikla', 'Tīksma', 'Tilla', 'Tillija', 'Tīna', 'Tina', 'Tince', 'Tira', 'Toņa', 'Tone', 'Tonija', 'Tonita', 'Tora', 'Trauta', 'Trautiņa', 'Treisija', 'Trīna', 'Trīne', 'Trūde', 'Trūta', 'Trūte', 'Tullija', 'Turaida', 'Tusnelda',
'Uga', 'Ulda', 'Uldze', 'Ulita', 'Uljana', 'Uļjana', 'Ulla', 'Ullija', 'Ulrika', 'Ulvija', 'Ulvita', 'Una', 'Unda', 'Undija', 'Undīna', 'Undīne', 'Undita', 'Unigunde', 'Unija', 'Unita', 'Urdze', 'Urdziņa', 'Ursula', 'Uršula', 'Uršule', 'Urzula', 'Ustinija', 'Ustiņja', 'Uva', 'Uve', 'Uzbete',
'Ūna', 'Ūnika', 'Ūva',
'Vaclava', 'Vaida', 'Vaila', 'Vaileta', 'Vaira', 'Vairita', 'Vairīte', 'Vaiva', 'Vaļa', 'Valda', 'Valdona', 'Valdone', 'Valentija', 'Valentīna', 'Valentina', 'Valentīne', 'Valeriana', 'Valerianna', 'Valērija', 'Valerija', 'Valerijana', 'Valerjana', 'Valfrīda', 'Valīda', 'Valija', 'Valisa', 'Valita', 'Vallida', 'Vallija', 'Valma', 'Valta', 'Valtra', 'Valtraude', 'Valtrauta', 'Valtraute', 'Valve', 'Vanda', 'Vandze', 'Vaneranda', 'Vanesa', 'Vanese', 'Varenika', 'Varita', 'Varite', 'Varonika', 'Varvara', 'Vasilisa', 'Večella', 'Vega', 'Vegita', 'Veikla', 'Veiksma', 'Velda', 'Veldra', 'Veldza', 'Veldze', 'Velga', 'Velita', 'Velonija', 'Velta', 'Velte', 'Veltija', 'Veņa', 'Vena', 'Vēna', 'Vencislava', 'Venda', 'Vendeta', 'Vendija', 'Venefrīda', 'Venēra', 'Venera', 'Veneranda', 'Venerande', 'Veneta', 'Venija', 'Venīna', 'Veniranda', 'Venita', 'Venjamina', 'Venta', 'Vera', 'Vēra', 'Veranika', 'Verēna', 'Verena', 'Vergenija', 'Verija', 'Verita', 'Veronija', 'Veronika', 'Vēsma', 'Vēsmiņa', 'Veta', 'Vētra', 'Viāna', 'Vianta', 'Vicenta', 'Vida', 'Vidaga', 'Vidaija', 'Vide', 'Vīdega', 'Vīga', 'Vigda', 'Vigeta', 'Vigija', 'Viģīlija', 'Vigilija', 'Vigita', 'Vigra', 'Vija', 'Vijolīte', 'Vika', 'Vikija', 'Viktora', 'Viktorija', 'Viktorina', 'Vila', 'Vilenta', 'Vilfrida', 'Vilhelma', 'Vilhelmīna', 'Vilhelmīne', 'Vilhelmine', 'Vilija', 'Vilita', 'Vilja', 'Viljanta', 'Villija', 'Vilma', 'Vilonija', 'Vilora', 'Vīna', 'Vinca', 'Vincenta', 'Vincentīna', 'Vincentīne', 'Vīne', 'Vineta', 'Vinete', 'Vingra', 'Vinifreda', 'Vinija', 'Vinita', 'Vinnija', 'Vinta', 'Vintra', 'Viola', 'Violanda', 'Violanta', 'Violenta', 'Violeta', 'Viorika', 'Virdžinija', 'Virēna', 'Virga', 'Virgenija', 'Virgīna', 'Virgīne', 'Virgīnija', 'Virginija', 'Virģīnija', 'Virma', 'Virta', 'Visija', 'Visma', 'Visvalda', 'Vita', 'Vitālija', 'Vitalina', 'Vitalisa', 'Vitija', 'Vitnija', 'Vitolda', 'Viva', 'Vivanta', 'Viveja', 'Viveta', 'Viviāna', 'Viviana', 'Vivija', 'Vivina', 'Vivita', 'Vizbule', 'Vizbulīte', 'Vizma', 'Vlada', 'Vladilena', 'Vladimira', 'Vladislava', 'Vladlena', 'Volga',
'Zabīne', 'Zaiga', 'Zallija', 'Zana', 'Zanda', 'Zandra', 'Zane', 'Zanga', 'Zanita', 'Zanna', 'Zanza', 'Zara', 'Zarina', 'Zelda', 'Zelga', 'Zelma', 'Zelta', 'Zeltiņa', 'Zeltīte', 'Zemfira', 'Zemīra', 'Zemlita', 'Zena', 'Zenaida', 'Zenita', 'Zenobija', 'Zenona', 'Zenta', 'Zēra', 'Zeta', 'Zete', 'Zetiņa', 'Zidija', 'Zidonija', 'Zidra', 'Ziedīte', 'Ziednese', 'Ziedone', 'Ziedonija', 'Ziedvalda', 'Ziga', 'Zigda', 'Zigeta', 'Zigfrīda', 'Zigfrida', 'Zigija', 'Zigita', 'Zigma', 'Zigmāra', 'Zigmunda', 'Zigna', 'Zigne', 'Zigra', 'Zigrīda', 'Zigrida', 'Zigrita', 'Zīle', 'Zilga', 'Zilgma', 'Zilgme', 'Zīlīte', 'Zilva', 'Zilvija', 'Zina', 'Zinaīda', 'Zinaida', 'Zinda', 'Zindra', 'Zinīda', 'Zinija', 'Zinovija', 'Zinta', 'Zintra', 'Zira', 'Zita', 'Zlata', 'Zofija', 'Zoja', 'Zola', 'Zolija', 'Zosja', 'Zuzana', 'Zuzanna', 'Zuze', 'Zvaigznīte',
'Žaklīna', 'Žaklina', 'Žaklīne', 'Žana', 'Žaneta', 'Žanete', 'Žanija', 'Žanna', 'Žanneta', 'Žene', 'Ženija', 'Žermēna', 'Žermena', 'Žozefina', 'Žuanete', 'Žubīte',
];
/**
* {@link} https://lv.wikipedia.org/wiki/Kategorija:Latvie%C5%A1u_uzv%C4%81rdi
*/
protected static $lastName = [
'Abuls', 'Aizupe', 'Akmentiņš', 'Alksnis', 'Alunāns', 'Ancāns', 'Andžāns', 'Ankipāns', 'Aparjode', 'Apine', 'Apinis', 'Aploks', 'Apse', 'Apsītis', 'Arājs', 'Asars', 'Astra', 'Augstkalns', 'Augškalns', 'Auniņš', 'Auns', 'Auškāps', 'Auziņa', 'Auziņš', 'Avens', 'Avens', 'Avotiņš', 'Avots',
'Ābele', 'Ābelīte', 'Ābola', 'Āboliņa', 'Āboliņš', 'Ābols', 'Āboltiņa', 'Āboltiņš', 'Ārgalis',
'Bajārs', 'Baldzēns', 'Bāliņa', 'Bāliņš', 'Balode', 'Balodis', 'Baltgailis', 'Baltiņš', 'Banga', 'Bārbale', 'Bārda', 'Bargais', 'Barkāns', 'Barons', 'Baušķenieks', 'Bebris', 'Berģis', 'Bertāns', 'Bērziņa', 'Bērziņš', 'Bērzkalns', 'Bērzs', 'Bētiņš', 'Biezais', 'Birkavs', 'Birkerts', 'Birze', 'Birznieks', 'Bisenieks', 'Bite', 'Bitenieks', 'Bļodnieks', 'Bojārs', 'Brasla', 'Breikšs', 'Brencēns', 'Brice', 'Briede', 'Briedis', 'Broks', 'Brože', 'Buiķis', 'Buks', 'Bulis', 'Bumbiere', 'Burvis', 'Butāne', 'Butkus',
'Cālītis', 'Caune', 'Caunītis', 'Celmiņa', 'Celmiņš', 'Celms', 'Ceplītis', 'Cērps', 'Cielēns', 'Ciemiņš', 'Cipruss', 'Cipulis', 'Cīrulis',
'Čaklais', 'Čakste', 'Čevers', 'Čukste',
'Dāboliņš', 'Daiders', 'Dālderis', 'Dambis', 'Dārziņš', 'Dārznieks', 'Deglavs', 'Dimants', 'Dobelis', 'Draviņš', 'Dravnieks', 'Dubra', 'Dukure', 'Dukurs', 'Dumpe', 'Dumpis', 'Dzelme', 'Dzelzītis', 'Dzenis', 'Dzenītis', 'Dzērve', 'Dzintars', 'Dzirne', 'Džeriņš',
'Egle', 'Eglīte', 'Eglītis', 'Eiduka', 'Eisaks', 'Elksne', 'Endzelīna', 'Endzelīns', 'Endziņš', 'Eniņš', 'Ezeriņš',
'Ēķis', 'Ērglis',
'Freimanis',
'Gaigals', 'Gaile', 'Gailis', 'Gailītis', 'Galviņš', 'Garanča', 'Gauja', 'Goba', 'Goppers', 'Gorkšs', 'Grantiņš', 'Graudiņš', 'Grauds', 'Grava', 'Grāvelis', 'Greste', 'Grēviņš', 'Grīva', 'Grūbe', 'Gruzītis', 'Gulbe', 'Gulbis',
'Ģīlis', 'Ģirģens',
'Igaunis', 'Ikauniece', 'Ikaunieks', 'Indriksone', 'Indriksons', 'Irbe',
'Īvāns',
'Jankausks', 'Jaudzems', 'Jaunzeme', 'Jaunzemis', 'Jaunzems', 'Jurjāns', 'Jūsmiņš',
'Kadiķis', 'Kaijaks', 'Kaktiņš', 'Kalējs', 'Kalna', 'Kalnbērzs', 'Kalniņa', 'Kalniņš', 'Kalnozols', 'Kalns', 'Kalpaks', 'Kambala', 'Kantāns', 'Kants', 'Kaņeps', 'Karašausks', 'Kārkliņa', 'Kārkliņš', 'Kauliņš', 'Kauls', 'Kazlausks', 'Kazričs', 'Kirmuška', 'Kivlenieks', 'Klētniece', 'Klišāns', 'Kļava', 'Kļaviņa', 'Kļaviņš', 'Kociņš', 'Kokina', 'Kokins', 'Kokle', 'Kozlovskis', 'Kramiņš', 'Krastiņa', 'Krastiņš', 'Krauklis', 'Krieviņš', 'Krievs', 'Krollis', 'Krūkliņš', 'Krūmiņa', 'Krūmiņš', 'Krustiņš', 'Kubiļus', 'Kubuliņa', 'Kugrēns', 'Kukainis', 'Kukule', 'Kukulis', 'Kūlis', 'Kundziņš', 'Kurpnieks', 'Kursītis', 'Kusiņš', 'Kušķis', 'Kvēps',
'Ķemere', 'Ķempe', 'Ķēniņš', 'Ķibilds', 'Ķuzis',
'Ladusāns', 'Lāce', 'Lācis', 'Lagzdiņš', 'Laime', 'Laimiņš', 'Laizāne', 'Laizāns', 'Lapainis', 'Lapiņš', 'Lapsa', 'Latvis', 'Lauks', 'Lauskis', 'Laviņa', 'Laviņš', 'Lazda', 'Lazdiņš', 'Legzdiņš', 'Leitāns', 'Leitis', 'Leja', 'Lejiņš', 'Lejnieks', 'Lībietis', 'Līce', 'Līdaka', 'Lieģis', 'Lielais', 'Lielgalvis', 'Liepa', 'Liepiņa', 'Liepiņš', 'Liepkalne', 'Linga', 'Liniņš', 'Ločmele', 'Ločmelis', 'Logina', 'Logins', 'Loze', 'Lujāns', 'Lūkins', 'Lūriņa', 'Lūsis',
'Ļaksa',
'Mangulis', 'Matīsa', 'Mauriņa', 'Mediņš', 'Mednis', 'Melbārde', 'Melbārdis', 'Mellupe', 'Melngailis', 'Mētra', 'Mežaraups', 'Mežciems', 'Mežlauks', 'Mežulis', 'Miezis', 'Miezītis', 'Miglinieks', 'Misāns', 'Miķelsons', 'Muceniece', 'Mucenieks', 'Muciņš', 'Muižniece', 'Muižnieks', 'Muktupāvela', 'Muktupāvels', 'Mūrniece', 'Mūrnieks',
'Neretniece', 'Niedra', 'Niedre',
'Oliņš', 'Osis', 'Oškalns', 'Ošs', 'Ozola', 'Ozoliņa', 'Ozoliņš', 'Ozols',
'Pabērzs', 'Paegle', 'Pauļuks', 'Pelšs', 'Peniķis', 'Petrausks', 'Pīrāgs', 'Plaude', 'Plaudis', 'Plotnieks', 'Plūme', 'Pļaviņš', 'Pļavniece', 'Podnieks', 'Poikāns', 'Polis', 'Pormalis', 'Prauliņa', 'Prauliņš', 'Priede', 'Priedīte', 'Pūce', 'Pujāts', 'Puķe', 'Pumpurs', 'Pūpols', 'Pupurs', 'Puriņš', 'Purnis', 'Purviņš', 'Putniņa', 'Putniņš', 'Putra',
'Radziņa', 'Radziņš', 'Rancāns', 'Raņķis', 'Rapa', 'Rausis', 'Reinika', 'Reiniks', 'Reizniece', 'Repše', 'Riekstiņš', 'Rijnieks', 'Rītiņš', 'Robežnieks', 'Roga', 'Rokpelnis', 'Ronis', 'Roze', 'Roziņš', 'Rozītis', 'Rožlapa', 'Rubene', 'Rubenis', 'Rudzīte', 'Rudzītis', 'Rullis', 'Rūmnieks', 'Rūtiņš',
'Sabonis', 'Saliņš', 'Salmiņš', 'Salnis', 'Saulietis', 'Saulīte', 'Saulītis', 'Sedlenieks', 'Segliņa', 'Segliņš', 'Seile', 'Seiļs', 'Sesks', 'Siliņa', 'Siliņš', 'Sīlis', 'Sīmanis', 'Sirmais', 'Skābardis', 'Skalbe', 'Skrastiņa', 'Skrastiņš', 'Skride', 'Skrinda', 'Skudra', 'Skuja', 'Skujenieks', 'Skujiņa', 'Skujiņš', 'Skulme', 'Sodums', 'Spridzāns', 'Sproģe', 'Sproģis', 'Sprūdžs', 'Spūlis', 'Stabiņš', 'Stalts', 'Staprāns', 'Stepiņš', 'Stradiņš', 'Straumanis', 'Straume', 'Straupe', 'Strautmane', 'Strautmanis', 'Strautnieks', 'Strazdiņš', 'Strazds', 'Strēlis', 'Strēlnieks', 'Strods', 'Sudmalis', 'Sudraba', 'Sukurs', 'Sukuts',
'Šķēle', 'Šnepsts',
'Tauriņš', 'Teilāne', 'Tērauda', 'Timma', 'Tīruma', 'Titāns', 'Turss',
'Upenieks', 'Upītis', 'Upmale', 'Urtāns', 'Ušpelis', 'Uzuliņš',
'Ūdentiņš', 'Ūders', 'Ūdre', 'Ūdris',
'Vācietis', 'Vairogs', 'Vaišļa', 'Vaivods', 'Vanags', 'Varslavāns', 'Vasarietis', 'Vazdika', 'Vazdiks', 'Vecozols', 'Vecumnieks', 'Vecvagars', 'Vērdiņš', 'Vīgante', 'Vīksna', 'Vīksne', 'Vilcāne', 'Vilciņa', 'Vilciņš', 'Vilkaste', 'Vilks', 'Viļums', 'Vimba', 'Vītola', 'Vītoliņš', 'Vītols',
'Zaķis', 'Zāle', 'Zālīte', 'Zālītis', 'Zaļupe', 'Zariņa', 'Zariņš', 'Zelčs', 'Zeltiņa', 'Zeltiņš', 'Zemdega', 'Zemgals', 'Zemītis', 'Zemzaris', 'Ziedonis', 'Ziemele', 'Ziemelis', 'Zīle', 'Zirnis', 'Znotiņš', 'Zvagulis', 'Zvejnieks', 'Zviedris', 'Zvirbulis', 'Zvirgzdiņš',
'Žagars', 'Žukausks',
];
public function driverLicence()
{
return static::bothify('??######');
}
public function passportNumber()
{
return static::bothify('??#######');
}
/**
* National Personal Identity number (personas kods)
*
* @see https://en.wikipedia.org/wiki/National_identification_number#Latvia
*
* @return string on format XXXXXX-XXXXX
*/
public function personalIdentityNumber(?\DateTime $birthdate = null)
{
if (!$birthdate) {
$birthdate = DateTime::dateTimeThisCentury();
}
$year = $birthdate->format('Y');
if ($year >= 2000 && $year <= 2099) {
$century = 2;
} elseif ($year >= 1900 && $year <= 1999) {
$century = 1;
} else {
$century = 0;
}
$datePart = $birthdate->format('dmy');
$serialNumber = static::numerify('###');
$partialNumberSplit = str_split($datePart . $century . $serialNumber);
$idDigitValidator = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
$total = 0;
foreach ($partialNumberSplit as $key => $digit) {
if (isset($idDigitValidator[$key])) {
$total += $idDigitValidator[$key] * (int) $digit;
}
}
$checksumDigit = (1101 - $total) % 11 % 10;
return $datePart . '-' . $century . $serialNumber . $checksumDigit;
}
}
@@ -0,0 +1,335 @@
<?php
namespace Faker\Provider\nb_NO;
class Person extends \Faker\Provider\Person
{
protected static $formats = [
'{{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 Norwegian female first names
*
* @see http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml
*/
protected static $firstNameFemale = [
'Abida', 'Abigail', 'Abir', 'Ada', 'Adel', 'Adelaine', 'Adele', 'Adelen', 'Adelin', 'Adelina', 'Adeline',
'Adiba', 'Adila', 'Adile', 'Adina', 'Adine', 'Adisa', 'Admira', 'Adna', 'Adriana', 'Aferdita', 'Afshan',
'Agata', 'Agate', 'Agathe', 'Agda', 'Agne', 'Agnes', 'Agnete', 'Agnethe', 'Agnieszka', 'Agny', 'Ahlam', 'Aicha',
'Aida', 'Aija', 'Aileen', 'Aili', 'Ailin', 'Aime', 'Aimée', 'Aina', 'Aino', 'Aisha', 'Aiste', 'Ajna',
'Albertine', 'Aldona', 'Aleena', 'Aleksandra', 'Alena', 'Alette', 'Alexandra', 'Alfhild', 'Alia', 'Alice',
'Alida', 'Alina', 'Aline', 'Alis', 'Alise', 'Alison', 'Aliza', 'Allis', 'Alma', 'Almira', 'Alva', 'Alvhild',
'Alvilde', 'Alyssa', 'Alaa', 'Amabel', 'Amal', 'Amalie', 'Amanda', 'Amber', 'Ambjørg', 'Amelia', 'Amelie',
'Amie', 'Amila', 'Amina', 'Aminda', 'Amira', 'Amna', 'Amporn', 'Amra', 'Amy', 'An', 'Ana', 'Anab', 'Anabelle',
'Anastasia', 'Anbjørg', 'Andrea', 'Andrine', 'Ane', 'Aneta', 'Anett', 'Anette', 'Angela', 'Angelica',
'Angelina', 'Angunn', 'Anh', 'Anikken', 'Anila', 'Anine', 'Anisa', 'Anita', 'Anitra', 'Anja', 'Anke', 'Anlaug',
'Ann', 'Anna', 'Annabel', 'Annabelle', 'Annbjørg', 'Anne', 'Anneke', 'Anneli', 'Annelise', 'Annemarie',
'Annette', 'Annfrid', 'Anni', 'Annicken', 'Annie', 'Annika', 'Anniken', 'Annka', 'Annlaug', 'Annveig', 'Anny',
'Antje', 'Antoinette', 'Anya', 'April', 'Ardita', 'Ariana', 'Ariel', 'Ariela', 'Arina', 'Arja', 'Arlene',
'Arna', 'Arnbjørg', 'Arnhild', 'Arnlaug', 'Asbjørg', 'Asha', 'Aslaug', 'Asma', 'Asta', 'Astri', 'Astrid',
'Athene', 'Atina', 'Aud', 'Audhild', 'Audny', 'Audrey', 'Aurora', 'Ayan', 'Ayla', 'Ayleen', 'Aylin', 'Ayse',
'Azra', 'Babette', 'Barbara', 'Barbro', 'Beate', 'Beatrice', 'Belinda', 'Bella', 'Benedicte', 'Benedikte',
'Benny', 'Bente', 'Bergdis', 'Bergfrid', 'Bergliot', 'Bergljot', 'Berit', 'Bernadette', 'Berta', 'Berthe',
'Bertine', 'Beth', 'Betina', 'Betine', 'Betsy', 'Bettina', 'Betty', 'Betzy', 'Bianca', 'Bibbi', 'Bibi',
'Birgit', 'Birgitta', 'Birgitte', 'Birte', 'Birthe', 'Bitten', 'Bjørg', 'Bjørghild', 'Blanca', 'Bodil',
'Bolette', 'Bonnie', 'Borghild', 'Borgny', 'Bozena', 'Brigitte', 'Brit', 'Brita', 'Britt', 'Bryngjerd',
'Brynhild', 'Bushra', 'Caisa', 'Camilla', 'Carina', 'Carita', 'Carla', 'Carlota', 'Carmen', 'Carol', 'Carola',
'Carolina', 'Caroline', 'Cassandra', 'Catalina', 'Catarina', 'Cate', 'Catherina', 'Cathinka', 'Cathrine',
'Catrine', 'Cecilia', 'Cecilie', 'Celine', 'Chanette', 'Chantal', 'Charlotte', 'Chi', 'Chloe', 'Christel',
'Christiane', 'Christin', 'Christina', 'Christine', 'Cicilie', 'Cilje', 'Cindy', 'Clara', 'Claudia', 'Connie',
'Conny', 'Constance', 'Cora', 'Cordelia', 'Corina', 'Cornelia', 'Cornelie', 'Cristel', 'Cristina', 'Cynthia',
'Dagfrid', 'Dagmar', 'Dagne', 'Dagny', 'Dagrun', 'Daisy', 'Dana', 'Daniella', 'Danielle', 'Danuta', 'Daria',
'Dea', 'Debora', 'Denise', 'Derya', 'Desirée', 'Diana', 'Diane', 'Dianne', 'Dilan', 'Dina', 'Dolores', 'Donna',
'Dora', 'Dordi', 'Doreen', 'Doris', 'Dorit', 'Dorota', 'Dorothea', 'Dorte', 'Dorthe', 'Dorthea', 'Dragana',
'Drude', 'Dung', 'Dyrhild', 'Dyveke', 'Ea', 'Ebba', 'Ece', 'Edda', 'Edel', 'Edit', 'Edith', 'Edle', 'Edna',
'Edny', 'Edvarda', 'Edvine', 'Eileen', 'Eilin', 'Einy', 'Eir', 'Eira', 'Eirian', 'Eiril', 'Eirin', 'Eirunn',
'Eivor', 'Ekaterina', 'Elaine', 'Elbjørg', 'Eldbjørg', 'Eldfrid', 'Eldrid', 'Elea', 'Eleanora', 'Elen', 'Elena',
'Elenora', 'Elfi', 'Elfrid', 'Elfrida', 'Eli', 'Elia', 'Elida', 'Elin', 'Elina', 'Eline', 'Elinor', 'Elisa',
'Elisabet', 'Elisabeth', 'Elise', 'Elizabeth', 'Ella', 'Elle', 'Ellen', 'Ellida', 'Ellinor', 'Ellisiv', 'Elma',
'Elna', 'Elsa', 'Else', 'Elsebeth', 'Elsie', 'Elvine', 'Elvira', 'Elzbieta', 'Eman', 'Embla', 'Emelie', 'Emely',
'Emilie', 'Emilija', 'Emily', 'Emina', 'Emma', 'Emmy', 'Ena', 'Enid', 'Enya', 'Erica', 'Erika', 'Erle', 'Erna',
'Esma', 'Ester', 'Esther', 'Ethel', 'Eva', 'Evangeline', 'Evelina', 'Evelyn', 'Evi', 'Evie', 'Evita', 'Evy',
'Eydis', 'Eyvor', 'Fadumo', 'Faisa', 'Faiza', 'Fanny', 'Farah', 'Farhiya', 'Fariba', 'Farida', 'Farzana',
'Fatima', 'Fay', 'Felicia', 'Feliza', 'Fernanda', 'Filippa', 'Fiona', 'Florence', 'Fozia', 'Frances',
'Franciska', 'Franziska', 'Frederika', 'Fredrikke', 'Freja', 'Frid', 'Frida', 'Fride', 'Frigg', 'Frøy', 'Frøya',
'Frøydis', 'Gabrielle', 'Galina', 'Geirhild', 'Georgine', 'Gerd', 'Gerda', 'Gertrud', 'Ghazala', 'Gidske',
'Gina', 'Gine', 'Gisela', 'Giske', 'Gisken', 'Gitte', 'Gjerd', 'Gjertine', 'Gjertrud', 'Gjøril', 'Gjørild',
'Gloria', 'Grace', 'Greta', 'Grete', 'Grethe', 'Gro', 'Gry', 'Gudjørg', 'Gudlaug', 'Gudny', 'Gudrid', 'Gudrun',
'Gudveig', 'Gul', 'Gulla', 'Gullborg', 'Gun', 'Gunbjørg', 'Gunda', 'Gunhild', 'Gunlaug', 'Gunn', 'Gunnbjørg',
'Gunnel', 'Gunnhild', 'Gunnlaug', 'Gunnveig', 'Gunnvor', 'Gunnvår', 'Gunvor', 'Guri', 'Gurine', 'Guro', 'Gusta',
'Gustava', 'Gyda', 'Gyri', 'Gyrid', 'Gøril', 'Hacer', 'Hafsa', 'Haldis', 'Halimo', 'Halina', 'Hallbjørg',
'Halldis', 'Hallfrid', 'Hamida', 'Hana', 'Hanan', 'Hang', 'Hanna', 'Hanne', 'Hansine', 'Harda', 'Harriet',
'Hatice', 'Hava', 'Hawa', 'Heather', 'Hedda', 'Hedvig', 'Hege', 'Heidi', 'Heidrun', 'Heike', 'Helen', 'Helena',
'Helene', 'Helga', 'Helin', 'Hella', 'Helle', 'Helma', 'Hennie', 'Henny', 'Henriette', 'Herbjørg', 'Herborg',
'Herdis', 'Herlaug', 'Hermine', 'Hiba', 'Hibo', 'Hilary', 'Hild', 'Hilde', 'Hildegunn', 'Hildur', 'Hillevi',
'Hilma', 'Hina', 'Hjørdis', 'Hoa', 'Hong', 'Huda', 'Hue', 'Hulda', 'Huong', 'Hæge', 'Iben', 'Ida', 'Idun',
'Idunn', 'Ifrah', 'Ildri', 'Ildrid', 'Ilona', 'Ilse', 'Iman', 'Ina', 'Indira', 'Ine', 'Ines', 'Inga', 'Inge',
'Ingebjørg', 'Ingeborg', 'Ingegerd', 'Ingelin', 'Inger', 'Inger-Lise', 'Ingerid', 'Ingfrid', 'Inghild',
'Ingjerd', 'Ingrid', 'Ingrun', 'Ingrunn', 'Ingunn', 'Ingveig', 'Ingvild', 'Irene', 'Iris', 'Irja', 'Irma',
'Irmelin', 'Isa', 'Isabel', 'Isadora', 'Iselin', 'Ivana', 'Ivarda', 'Iwona', 'Izabela', 'Jacqueline', 'Jamila',
'Jane', 'Janette', 'Janicke', 'Janken', 'Janne', 'Jarlfrid', 'Jaroslaw', 'Jasmin', 'Jean', 'Jeanette', 'Jeanne',
'Jelena', 'Jenni', 'Jennifer', 'Jenny', 'Jessica', 'Jill', 'Jo', 'Jocelyn', 'Jofrid', 'Johanna', 'Johanne',
'Jolanta', 'Jone', 'Jorid', 'Jorun', 'Jorunn', 'Josefine', 'Joyce', 'Judit', 'Judith', 'Julia', 'Julie', 'June',
'Juni', 'Jytte', 'Jøran', 'Kai', 'Kaia', 'Kaisa', 'Kamila', 'Kamilla', 'Karen', 'Kari', 'Karianne', 'Karin',
'Karina', 'Karine', 'Karita', 'Karoline', 'Katarina', 'Kate', 'Kathinka', 'Kathleen', 'Kathrine', 'Kaya',
'Kelly', 'Kerstin', 'Khadija', 'Khadra', 'Khalida', 'Kim', 'Kine', 'Kirsten', 'Kirsti', 'Kitty', 'Kjellaug',
'Kjellfrid', 'Kjellrun', 'Kjersti', 'Kjerstin', 'Klara', 'Konstanse', 'Kornelia', 'Kristi', 'Kristin',
'Kristina', 'Kristine', 'Laila', 'Lana', 'Lara', 'Larissa', 'Laura', 'Lea', 'Leah', 'Leia', 'Leikny', 'Leila',
'Lena', 'Lene', 'Leona', 'Leyla', 'Lidia', 'Lilian', 'Lill', 'Lillian', 'Lilly', 'Lina', 'Linda', 'Line',
'Linea', 'Linh', 'Linn', 'Linnea', 'Lisa', 'Lisbeth', 'Lise', 'Liss', 'Liv', 'Live', 'Liza', 'Loma', 'Lone',
'Lotta', 'Lotte', 'Louise', 'Lovise', 'Lucia', 'Ludmila', 'Luna', 'Lydia', 'Lykke', 'Mabel', 'Madeleine',
'Magda', 'Magdalena', 'Magdalene', 'Magna', 'Magnhild', 'Magni', 'Mai', 'Maia', 'Maiken', 'Mailen', 'Maj',
'Maja', 'Malene', 'Mali', 'Malin', 'Maren', 'Margareta', 'Margareth', 'Margarita', 'Marge', 'Margit', 'Margot',
'Margrete', 'Margrethe', 'Marguerite', 'Margy', 'Mari', 'Maria', 'Marianne', 'Marie', 'Mariell', 'Marilyn',
'Marina', 'Marion', 'Marit', 'Marlene', 'Marta', 'Marte', 'Martha', 'Martine', 'Mary', 'Mathea', 'Mathilde',
'Maud', 'May', 'Maya', 'Maylen', 'Melanie', 'Melina', 'Melinda', 'Melissa', 'Melita', 'Mercedes', 'Merete',
'Mette', 'Mia', 'Michaela', 'Mildrid', 'Milena', 'Milla', 'Mille', 'Mina', 'Mira', 'Miranda', 'Miriam', 'Moa',
'Mona', 'Monica', 'Monika', 'Monja', 'Muna', 'Munira', 'My', 'Märta', 'Märtha', 'Møyfrid', 'Målfrid', 'Nada',
'Nadia', 'Nadine', 'Nadja', 'Naima', 'Nancy', 'Nanna', 'Naomi', 'Nasreen', 'Nasrin', 'Natalie', 'Nathalie',
'Nazia', 'Nelly', 'Ngoc', 'Nicole', 'Nikita', 'Niklas', 'Nikoline', 'Nimo', 'Nina', 'Noomi', 'Noor', 'Nor',
'Nora', 'Norunn', 'Oda', 'Oddbjørg', 'Oddfrid', 'Oddlaug', 'Oddny', 'Oddrun', 'Oddveig', 'Oksana', 'Olaug',
'Olga', 'Olina', 'Oline', 'Olivia', 'Othilie', 'Otilie', 'Palma', 'Pamela', 'Patricia', 'Paula', 'Pauline',
'Peggy', 'Perly', 'Pernille', 'Petra', 'Phuong', 'Pia', 'Rachel', 'Ragna', 'Ragne', 'Ragnfrid', 'Ragnhild',
'Ragni', 'Rahma', 'Rakel', 'Ramona', 'Randi', 'Rania', 'Ranja', 'Ranveig', 'Rebecca', 'Rebekka', 'Regine',
'Reidun', 'Renate', 'Renée', 'Riborg', 'Rigmor', 'Rina', 'Rine', 'Rita', 'Ronja', 'Rosa', 'Rose', 'Rukhsana',
'Runa', 'Rut', 'Ruth', 'Rønnaug', 'Saba', 'Sabine', 'Sabrina', 'Sadia', 'Safia', 'Saga', 'Sahra', 'Saima',
'Sally', 'Salma', 'Samantha', 'Samina', 'Samira', 'Sana', 'Sandra', 'Sanja', 'Sanna', 'Sara', 'Sarah', 'Selina',
'Selma', 'Serina', 'Shabana', 'Shahnaz', 'Shamim', 'Sharon', 'Shazia', 'Sheila', 'Shirin', 'Shirley', 'Shukri',
'Sidsel', 'Sigfrid', 'Signe', 'Sigrid', 'Sigrun', 'Silje', 'Silvia', 'Simona', 'Simone', 'Sina', 'Siren',
'Siri', 'Siril', 'Sissel', 'Siv', 'Snefrid', 'Sofia', 'Sofie', 'Sol', 'Solbjørg', 'Solfrid', 'Solgunn',
'Sollaug', 'Solrun', 'Solveig', 'Solvor', 'Sonja', 'Sophie', 'Stella', 'Stina', 'Stine', 'Sumaya', 'Sunniva',
'Susanne', 'Svanaug', 'Svanhild', 'Svetlana', 'Sygni', 'Sylvi', 'Synnøve', 'Sølvi', 'Tahira', 'Tale', 'Tamara',
'Tania', 'Tanja', 'Tanya', 'Tara', 'Taran', 'Tatiana', 'Tea', 'Terese', 'Thale', 'Thanh', 'Thao', 'Thea',
'Thelma', 'Theodora', 'Therese', 'Thi', 'Thilde', 'Thina', 'Thine', 'Thora', 'Thorbjørg', 'Thordis', 'Thorild',
'Thu', 'Thuy', 'Thyra', 'Tia', 'Tiffany', 'Tilde', 'Tina', 'Tindra', 'Tine', 'Tiril', 'Toini', 'Tomine', 'Tone',
'Tonje', 'Tora', 'Torbjørg', 'Tordis', 'Torgny', 'Torgun', 'Torgunn', 'Torhild', 'Tori', 'Toril', 'Torild',
'Torlaug', 'Torny', 'Torunn', 'Tove', 'Toya', 'Trine', 'Trude', 'Turid', 'Tuva', 'Tuyet', 'Tyra', 'Ulla',
'Ulrikke', 'Una', 'Undis', 'Une', 'Unn', 'Unni', 'Ursula', 'Uzma', 'Valentina', 'Vanessa', 'Vanja', 'Vebjørg',
'Velaug', 'Venche', 'Vendela', 'Vera', 'Veronica', 'Veslemøy', 'Vibeke', 'Victoria', 'Vida', 'Vigdis',
'Viktoria', 'Vilde', 'Vilhelmina', 'Vilja', 'Villemo', 'Vilma', 'Viola', 'Virginia', 'Vivi', 'Vivian', 'Vår',
'Vårin', 'Wanda', 'Wanja', 'Wenche', 'Wendy', 'Wera', 'Weronika', 'Wibecke', 'Wibeke', 'Wigdis', 'Wilde',
'Wilma', 'Winnie', 'Xuan', 'Yasmin', 'Ylva', 'Yngvild', 'Yvonne', 'Zahida', 'Zahra', 'Zainab', 'Zara',
'Zuzanna', 'Øydis', 'Øyvor', 'Ågot', 'Aasa', 'Aase', 'Åse', 'Åshild', 'Aashild', 'Åslaug', 'Åsne', 'Åsta',
'Aasta',
];
/**
* @var array Norwegian male first names
*
* @see http://www.mammanett.no/navn/leksikon/alle?field_name_sex_value=m&title=
*/
protected static $firstNameMale = [
'Abbas', 'Abdallah', 'Abdelaziz', 'Abdelkader', 'Abdi', 'Abdiasis', 'Abdifatah', 'Abdikadir', 'Abdinasir',
'Abdirahim', 'Abdirahman', 'Abdirashid', 'Abdirizak', 'Abdul', 'Abdulahi', 'Abdulkadir', 'Abdullah',
'Abdullahi', 'Abdulqadir', 'Abdurahman', 'Abed', 'Abel', 'Abid', 'Abraham', 'Absalon', 'Abu', 'Abubakar',
'Adam', 'Adan', 'Adeel', 'Adelheid', 'Adelsten', 'Adem', 'Aden', 'Adham', 'Adi', 'Adil', 'Adis', 'Adler',
'Admir', 'Adnan', 'Adrian', 'Afanasi', 'Afrim', 'Afshin', 'Agim', 'Agmund', 'Agnar', 'Agvald', 'Ahmad',
'Ahmed', 'Aiden', 'Ailo', 'Aimar', 'Aime', 'Ajdin', 'Ajmal', 'Akam', 'Akbar', 'Akram', 'Aksel', 'Alain', 'Alan',
'Alban', 'Albert', 'Alberto', 'Albin', 'Albrecht', 'Alejandro', 'Aleksander', 'Alen', 'Alessandro', 'Alex',
'Alexander', 'Alexsander', 'Alf', 'Alfred', 'Algirdas', 'Algot', 'Ali', 'Allan', 'Almar', 'Almas', 'Almaz',
'Almir', 'Altin', 'Alv', 'Alvald', 'Alvar', 'Alvaro', 'Alvfinn', 'Alvgeir', 'Alvin', 'Alvis', 'Alaa', 'Amadeus',
'Aman', 'Amandus', 'Amanuel', 'Amar', 'Ambjørn', 'Ambros', 'Ambrosius', 'Amel', 'Amer', 'Amin', 'Amir', 'Ammar',
'Amund', 'An', 'Anas', 'Anbjørn', 'Anders', 'Andi', 'Andor', 'André', 'Andreas', 'Andres', 'Andrew', 'Andris',
'Andrzej', 'Andy', 'Anh', 'Anil', 'Annar', 'Anselm', 'Ansgar', 'Anskar', 'Anstein', 'Anthon', 'Anthony',
'Anton', 'Antonio', 'Antonius', 'Anwar', 'Aram', 'Ard', 'Are', 'Arent', 'Ari', 'Arian', 'Ariel', 'Arild',
'Arkadiusz', 'Armand', 'Armin', 'Arn', 'Arnald', 'Arnar', 'Arnbjørn', 'Arndor', 'Arne', 'Arnfinn', 'Arnfred',
'Arngrim', 'Arnljot', 'Arnold', 'Arnolf', 'Arnor', 'Arnstein', 'Arnt', 'Arnulf', 'Arnulv', 'Arnvid', 'Aron',
'Arslan', 'Arthur', 'Artur', 'Arun', 'Arunas', 'Arve', 'Arvid', 'Arvin', 'Asad', 'Asbjørn', 'Asgeir', 'Asif',
'Ask', 'Askjel', 'Aslak', 'Aslan', 'Asle', 'Asmund', 'Astor', 'Atif', 'Atle', 'Attila', 'Audbjørn', 'Audfinn',
'Audun', 'Augun', 'August', 'Augustin', 'Axel', 'Aziz', 'Bajram', 'Balder', 'Bao', 'Barry', 'Bart',
'Bartlomiej', 'Bartol', 'Bastian', 'Bekim', 'Ben', 'Bendik', 'Benedikt', 'Bengt', 'Benjamin', 'Benny', 'Bent',
'Berent', 'Berge', 'Berger', 'Bergfinn', 'Bergsvein', 'Berhane', 'Bernhard', 'Bernt', 'Bert', 'Bertel',
'Bertil', 'Bertin', 'Bertold', 'Bertram', 'Bertrand', 'Besim', 'Besnik', 'Bilal', 'Bill', 'Birger', 'Birk',
'Bjarne', 'Bjart', 'Bjarte', 'Bjartmar', 'Bjørge', 'Bjørk', 'Bjørn', 'Bjørnar', 'Bjørnulv', 'Blerim', 'Bo',
'Bob', 'Bobby', 'Bodolv', 'Bodvar', 'Bogdan', 'Boguslaw', 'Borgar', 'Borger', 'Boris', 'Bork', 'Bosse',
'Botolv', 'Boye', 'Brage', 'Brede', 'Bredo', 'Brian', 'Brigt', 'Brikt', 'Broder', 'Bror', 'Bruno', 'Bryan',
'Brynar', 'Brynjar', 'Brynjulf', 'Brynjulv', 'Bujar', 'Burhan', 'Byrge', 'Børge', 'Børje', 'Børre', 'Bård',
'Calvin', 'Carl', 'Carsten', 'Caspar', 'Casper', 'Caspian', 'Cato', 'Cay', 'Cecil', 'Cengiz', 'Cesar', 'Chan',
'Chand', 'Charles', 'Charlie', 'Chi', 'Chris', 'Chrisander', 'Christen', 'Christer', 'Christian', 'Christoffer',
'Christopher', 'Claes', 'Clas', 'Claude', 'Claudio', 'Claus', 'Clemens', 'Clement', 'Cliff', 'Clive', 'Colin',
'Cong', 'Conrad', 'Constantin', 'Cornelis', 'Cornelius', 'Craig', 'Cristian', 'Cristoffer', 'Curt', 'Cyril',
'Czeslaw', 'Dag', 'Dagfinn', 'Dagmøy', 'Damian', 'Damir', 'Dan', 'Dani', 'Danial', 'Daniel', 'Danish',
'Dankert', 'Danny', 'Dario', 'Dariusz', 'Darko', 'Darren', 'Dat', 'David', 'Davy', 'Dean', 'Dejan', 'Denis',
'Dennis', 'Derek', 'Derrick', 'Detlef', 'Diako', 'Dick', 'Didrik', 'Diego', 'Dieter', 'Dietmar', 'Dilan',
'Dimitrios', 'Dines', 'Dino', 'Dirk', 'Ditlev', 'Ditmar', 'Dmitri', 'Dmitry', 'Dominic', 'Dominik', 'Don',
'Donald', 'Douglas', 'Dragan', 'Dung', 'Dusan', 'Duy', 'Dylan', 'Dyre', 'Earl', 'Ebbe', 'Edd', 'Eddie', 'Eddy',
'Edgar', 'Edgard', 'Edin', 'Edmond', 'Edmund', 'Edvard', 'Edvin', 'Edward', 'Edwin', 'Ege', 'Egil', 'Egon',
'Egzon', 'Ehsan', 'Eigil', 'Eilef', 'Eilert', 'Eilev', 'Eilif', 'Eiliv', 'Einar', 'Eindride', 'Einvald',
'Eirik', 'Eivind', 'Ekrem', 'Eldar', 'Eli', 'Elias', 'Elif', 'Ellef', 'Elleif', 'Elling', 'Elliot', 'Elmar',
'Elmer', 'Elnar', 'Elton', 'Elvin', 'Elvis', 'Emanuel', 'Embret', 'Embrik', 'Emil', 'Emir', 'Emmanuel', 'Emre',
'Emrik', 'Endre', 'Ener', 'Enes', 'Enevold', 'Engebret', 'Engel', 'Enis', 'Enok', 'Enrico', 'Enrique', 'Enver',
'Erik', 'Erland', 'Erlend', 'Erling', 'Ernst', 'Ervin', 'Erwin', 'Esben', 'Eskil', 'Eskild', 'Espen', 'Esten',
'Eugen', 'Evald', 'Even', 'Evert', 'Eyolf', 'Eystein', 'Eyvind', 'Fabian', 'Fahad', 'Faisal', 'Falk', 'Farah',
'Farhad', 'Farhan', 'Farid', 'Fartein', 'Faruk', 'Farzan', 'Faste', 'Fastolv', 'Felix', 'Feliz', 'Ferdinand',
'Filip', 'Finn', 'Finnbjørn', 'Finngard', 'Finngeir', 'Finnvard', 'Flamur', 'Flemming', 'Florian', 'Folke',
'Francis', 'Frank', 'Frans', 'Frants', 'Frantz', 'Fred', 'Freddie', 'Freddy', 'Frede', 'Frederick', 'Frederik',
'Fredrick', 'Fredrik', 'Fridleiv', 'Fridtjof', 'Frikk', 'Fritjof', 'Fritjov', 'Frits', 'Fritz', 'Frode',
'Frøystein', 'Fuad', 'Fuat', 'Gabriel', 'Gard', 'Gardar', 'Gary', 'Gaute', 'Geir', 'Geirmund', 'Geirr',
'Geirstein', 'Geirulv', 'Geoffrey', 'Georg', 'Gerald', 'Gerard', 'Gerd', 'Gerhard', 'Gerrit', 'Gerry', 'Gert',
'Gholam', 'Ghulam', 'Gilbert', 'Gintaras', 'Gisle', 'Gjermund', 'Gjert', 'Gjøran', 'Gladys', 'Glen', 'Glenn',
'Godtfred', 'Goran', 'Gordon', 'Gorm', 'Grant', 'Gregard', 'Greger', 'Gregor', 'Gregorius', 'Gregory', 'Grim',
'Grimar', 'Grzegorz', 'Gudbrand', 'Gudkjell', 'Gudleiv', 'Gudmund', 'Gudvin', 'Gulbrand', 'Gullik', 'Gunder',
'Gunleik', 'Gunnar', 'Gunne', 'Gunnerius', 'Gunnleif', 'Gunnleiv', 'Gunnstein', 'Gunnvald', 'Gunstein',
'Gunvald', 'Gustav', 'Guttorm', 'Guy', 'Gynter', 'Gøran', 'Gösta', 'Hadi', 'Hagbart', 'Hai', 'Hakan', 'Hakon',
'Haldor', 'Halfdan', 'Halfrid', 'Halgeir', 'Halil', 'Halldor', 'Hallgeir', 'Hallstein', 'Hallvard', 'Halvard',
'Halvdan', 'Halvor', 'Hamid', 'Hamza', 'Hanad', 'Hans', 'Harald', 'Haroon', 'Harry', 'Hartvig', 'Hasan',
'Hassan', 'Hasse', 'Hauk', 'Hector', 'Heike', 'Hein', 'Heine', 'Helge', 'Heljar', 'Helmer', 'Heming', 'Henki',
'Henning', 'Henri', 'Henrik', 'Henry', 'Herbert', 'Herbjørn', 'Herleif', 'Herman', 'Hermann', 'Hermod',
'Hermund', 'Herstein', 'Hieu', 'Hilbert', 'Hildegard', 'Hilmar', 'Hjalmar', 'Hoang', 'Hogne', 'Holger',
'Hossein', 'Houssein', 'Hroar', 'Hubert', 'Hugo', 'Hung', 'Hussain', 'Hussein', 'Huu', 'Huy', 'Hågen', 'Håkon',
'Haakon', 'Hårek', 'Håvald', 'Håvar', 'Håvard', 'Haavard', 'Ian', 'Iben', 'Ibrahim', 'Idar', 'Idris', 'Igor',
'Ilir', 'Ilyas', 'Iman', 'Imbert', 'Immanuel', 'Imre', 'Ingar', 'Ingard', 'Inge', 'Ingebret', 'Ingebrigt',
'Ingemar', 'Ingemund', 'Ingmar', 'Ingnar', 'Ingolf', 'Ingolv', 'Ingvald', 'Ingvar', 'Ingvard', 'Ingve',
'Ioannis', 'Iqra', 'Irfan', 'Isa', 'Isach', 'Isak', 'Ismail', 'Ismet', 'Istvan', 'Ivan', 'Ivar', 'Iver', 'Jack',
'Jacob', 'Jahn', 'Jakob', 'Jalal', 'Jamal', 'James', 'Jan', 'Jani', 'Jannik', 'Jarand', 'Jardar', 'Jarl',
'Jarle', 'Jason', 'Jasper', 'Jean', 'Jeffrey', 'Jens', 'Jeppe', 'Jeremias', 'Jermund', 'Jerry', 'Jerzy',
'Jesper', 'Jesus', 'Jetmund', 'Jim', 'Jimmy', 'Jiri', 'Jo', 'Joachim', 'Joakim', 'Joar', 'Joe', 'Joel',
'Jogeir', 'Johan', 'Johannes', 'John', 'Johnny', 'Jokum', 'Jomar', 'Jon', 'Jonas', 'Jonatan', 'Jonathan',
'Jone', 'Jonny', 'Joralf', 'Jorge', 'Jorulf', 'Josef', 'Joshua', 'Jostein', 'Josva', 'Juan', 'Juel', 'Jul',
'Julian', 'Julius', 'Just', 'Jürgen', 'Jøran', 'Jørg', 'Jørgen', 'Jørn', 'Jørund', 'Kadir', 'Kai', 'Kalle',
'Kamal', 'Kamran', 'Karel', 'Karelius', 'Karim', 'Karl', 'Karlo', 'Karstein', 'Karsten', 'Kasim', 'Kaspar',
'Kasper', 'Kato', 'Kay', 'Kazimierz', 'Keith', 'Kemal', 'Ken', 'Kennet', 'Kenneth', 'Kent', 'Ketil', 'Kevin',
'Khalid', 'Khalil', 'Kian', 'Kim', 'Kimberly', 'Kittil', 'Kjartan', 'Kjell', 'Kjerand', 'Kjetil', 'Kjølv',
'Klas', 'Klaus', 'Klemet', 'Kleng', 'Knut', 'Kolbein', 'Kolbjørn', 'Kolfinn', 'Konrad', 'Konstantin',
'Kornelius', 'Kris', 'Kristen', 'Krister', 'Kristian', 'Kristofer', 'Kristoffer', 'Ksenia', 'Kurt', 'Kyrre',
'Kåre', 'Lage', 'Lambert', 'Lars', 'Lasse', 'Laurent', 'Laurentius', 'Lauri', 'Laurits', 'Lauritz', 'Lavrans',
'Leander', 'Lech', 'Leidulf', 'Leidulv', 'Leif', 'Leik', 'Leiv', 'Lennart', 'Leo', 'Leon', 'Leonard',
'Leonhard', 'Leopold', 'Levi', 'Levord', 'Lewis', 'Liam', 'Liban', 'Lidvar', 'Linus', 'Livar', 'Lloyd',
'Lodvar', 'Lodve', 'Loke', 'Lorents', 'Lorentz', 'Lothar', 'Louis', 'Lucas', 'Ludolf', 'Ludvig', 'Ludvik',
'Lukas', 'Lyder', 'Maciej', 'Mads', 'Magnar', 'Magne', 'Magnus', 'Mahad', 'Mahamed', 'Majid', 'Malcolm',
'Malfred', 'Malte', 'Malthe', 'Malvin', 'Manfred', 'Manuel', 'Marc', 'Marcel', 'Marco', 'Marcus', 'Marenius',
'Margido', 'Marius', 'Mark', 'Markus', 'Martin', 'Martinius', 'Martinus', 'Marvin', 'Mathias', 'Matias',
'Mats', 'Matteus', 'Mattias', 'Mattis', 'Maurice', 'Maurits', 'Mauritz', 'Max', 'Maximilian', 'Mehmet',
'Melkior', 'Melvin', 'Michael', 'Michel', 'Mikael', 'Mikkel', 'Mikkjel', 'Milan', 'Milo', 'Mindor', 'Minh',
'Miroslaw', 'Mirsad', 'Mirza', 'Moa', 'Modolv', 'Modulf', 'Mogens', 'Mohammad', 'Mohamoud', 'Mons', 'Morgan',
'Morits', 'Moritz', 'Morris', 'Morten', 'Mostafa', 'Muhamed', 'Muhammad', 'Muhammed', 'Murat', 'Mustafa',
'Narve', 'Nasir', 'Nathaniel', 'Neil', 'Neri', 'Ngoc', 'Nicholas', 'Niclas', 'Nicolai', 'Nicolas', 'Niels',
'Nikolai', 'Nikolas', 'Nikolaus', 'Nils', 'Njål', 'Noa', 'Noah', 'Noman', 'Noralf', 'Norbert', 'Nordahl',
'Norma', 'Norman', 'Normann', 'Norodd', 'Norvald', 'Notto', 'Nup', 'Odd', 'Oddbjørn', 'Oddgeir', 'Oddleif',
'Oddmund', 'Oddvar', 'Oddvin', 'Odin', 'Ola', 'Olaf', 'Olai', 'Olav', 'Ole', 'Oleg', 'Oliver', 'Oluf', 'Olve',
'Omar', 'Ommund', 'Oscar', 'Oskar', 'Osman', 'Osmund', 'Osvald', 'Ottar', 'Otto', 'Ove', 'Pablo', 'Palle',
'Palmer', 'Patrick', 'Patrik', 'Paul', 'Paulus', 'Peder', 'Pelle', 'Per', 'Perry', 'Peter', 'Petrus', 'Petter',
'Philip', 'Piotr', 'Poul', 'Povel', 'Preben', 'Paal', 'Pål', 'Quoc', 'Rachid', 'Radoslaw', 'Rafael', 'Ragnar',
'Ragnvald', 'Raimond', 'Rainer', 'Ralf', 'Ralph', 'Randolf', 'Randulf', 'Rashid', 'Rasmus', 'Ravn', 'Raymond',
'Rayner', 'Reidar', 'Reidulf', 'Reidulv', 'Reier', 'Reimar', 'Rein', 'Reinert', 'Reinhard', 'Reinhold',
'Reiulf', 'Remi', 'Remy', 'René', 'Reza', 'Richard', 'Rikard', 'Rino', 'Roald', 'Roar', 'Robert', 'Robin',
'Rodney', 'Roger', 'Roland', 'Rolf', 'Rolv', 'Roman', 'Romund', 'Ronald', 'Ronnie', 'Ronny', 'Roy', 'Ruben',
'Rudi', 'Rudolf', 'Runar', 'Rune', 'Ryan', 'Rådmund', 'Sabah', 'Said', 'Sainab', 'Sakarias', 'Salah', 'Salam',
'Salmund', 'Salomon', 'Salve', 'Sam', 'Samir', 'Samson', 'Samuel', 'Sander', 'Scott', 'Sean', 'Sebastian',
'Sebjørn', 'Selmar', 'Selmer', 'Sergio', 'Serkan', 'Seveld', 'Severin', 'Sevrin', 'Shahid', 'Sigbjørn',
'Sigfred', 'Sigmund', 'Sigurd', 'Sigvald', 'Sigvard', 'Sigvart', 'Sigve', 'Silias', 'Simen', 'Simon', 'Sindre',
'Sivert', 'Sjur', 'Skage', 'Skjalg', 'Skjold', 'Skule', 'Slawomir', 'Snorre', 'Sofus', 'Sondre', 'Stanislaw',
'Stanley', 'Stefan', 'Steffen', 'Stein', 'Steinar', 'Steinbjørn', 'Steingrim', 'Steinkjell', 'Steinulv', 'Sten',
'Stephan', 'Steve', 'Steven', 'Stian', 'Stig', 'Storm', 'Sture', 'Sturla', 'Sturle', 'Styrk', 'Stål', 'Ståle',
'Sune', 'Svale', 'Svein', 'Sveinar', 'Sveinulf', 'Sveinung', 'Sven', 'Svend', 'Sverre', 'Syed', 'Sylfest',
'Sylvester', 'Synne', 'Syver', 'Syvert', 'Sæbjørn', 'Sølve', 'Søren', 'Saad', 'Såmund', 'Tadeusz', 'Tage',
'Tahir', 'Tallak', 'Talleiv', 'Tan', 'Tarald', 'Tariq', 'Tarje', 'Tarjei', 'Ted', 'Tedd', 'Teddy', 'Teis',
'Tellef', 'Tengel', 'Teo', 'Teodor', 'Terje', 'Terjei', 'Terkel', 'Thai', 'Thanh', 'Theis', 'Theo', 'Theodor',
'Thien', 'Thom', 'Thomas', 'Thor', 'Thoralf', 'Thorbjørn', 'Thord', 'Thore', 'Thorkild', 'Thorleif', 'Thormod',
'Thorolf', 'Thorstein', 'Thorvald', 'Tidemann', 'Tim', 'Timothy', 'Tinius', 'Tinus', 'Tjerand', 'Tobben',
'Tobias', 'Toivo', 'Tollak', 'Tollef', 'Tolleif', 'Tolleiv', 'Tom', 'Tomas', 'Tommy', 'Tony', 'Tor', 'Toralf',
'Torben', 'Torbjørn', 'Tord', 'Tore', 'Torfinn', 'Torgard', 'Torgeir', 'Torger', 'Torgil', 'Torgils', 'Torgny',
'Torgrim', 'Torje', 'Torjus', 'Torkel', 'Torkil', 'Torkild', 'Torkjel', 'Torleif', 'Torleik', 'Tormod',
'Tormund', 'Torodd', 'Torolf', 'Torolv', 'Torry', 'Torstein', 'Torsten', 'Torvald', 'Tov', 'Trang', 'Tristan',
'Tron', 'Trond', 'Troy', 'Truls', 'Trygg', 'Trygve', 'Trym', 'Tuan', 'Ture', 'Tønnes', 'Tørres', 'Ulf', 'Ulrik',
'Ulv', 'Ulvar', 'Ulvgeir', 'Umar', 'Une', 'Uno', 'Usman', 'Vagn', 'Valborg', 'Valdemar', 'Valentin', 'Valter',
'Vebjørn', 'Vegar', 'Vegard', 'Vegeir', 'Vemund', 'Verner', 'Vetle', 'Victor', 'Vidar', 'Vidkunn', 'Viet',
'Vigbjørn', 'Viggo', 'Vigleik', 'Vigulv', 'Viking', 'Viktor', 'Vilfred', 'Vilgot', 'Vilhelm', 'Viljar',
'Villads', 'Villum', 'Villy', 'Vincent', 'Vinjar', 'Vladimir', 'Vladislav', 'Vrål', 'Waldemar', 'Waleed',
'Walid', 'Walter', 'Wayne', 'Werner', 'Wictor', 'Widar', 'Wieslaw', 'Wiggo', 'Wiktor', 'Wilfred', 'Wilhelm',
'William', 'Willy', 'Wilmar', 'Wojciech', 'Wolfgang', 'Wollert', 'Yasin', 'Yasir', 'Yngvar', 'Yngve', 'Yonas',
'Younes', 'Yousef', 'Yousuf', 'Yrjan', 'Zahid', 'Zakaria', 'Zbigniew', 'Zdzislaw', 'Zoran', 'Zygmunt',
'Øistein', 'Øivind', 'Ørjan', 'Ørjar', 'Ørn', 'Ørnulf', 'Ørnulv', 'Ørvar', 'Østen', 'Øyolv', 'Øystein',
'Øyvind', 'Ådne', 'Aage', 'Åge', 'Aake', 'Åke', 'Åmund', 'Åne', 'Ånen', 'Ånon', 'Ånund', 'Aaron', 'Åskjell',
'Åsleif', 'Åsleik', 'Åsleiv', 'Åsmund', 'Aasmund', 'Åsulv', 'Åsvald', 'Åvar',
];
/**
* @var array Norwegian common last names (200 first from the link)
*
* @see http://www.ssb.no/befolkning/statistikker/navn/aar/2015-01-27?fane=tabell&sort=nummer&tabell=216066
*/
protected static $lastName = [
'Aas', 'Aase', 'Aasen', 'Abrahamsen', 'Ahmed', 'Ali', 'Amundsen', 'Andersen', 'Andersson', 'Andreassen',
'Andresen', 'Antonsen', 'Arnesen', 'Aune', 'Bakke', 'Bakken', 'Berg', 'Berge', 'Berger', 'Berntsen',
'Birkeland', 'Bjerke', 'Bjørnstad', 'Borge', 'Borgen', 'Breivik', 'Brekke', 'Bråten', 'Bråthen', 'Bye', 'Bø',
'Bøe', 'Carlsen', 'Christensen', 'Christiansen', 'Dahl', 'Dahle', 'Dale', 'Dalen', 'Danielsen', 'Edvardsen',
'Egeland', 'Eide', 'Eikeland', 'Eilertsen', 'Eliassen', 'Ellingsen', 'Engebretsen', 'Engen', 'Enger', 'Eriksen',
'Evensen', 'Fjeld', 'Foss', 'Fosse', 'Fossum', 'Fredriksen', 'Gabrielsen', 'Gjerde', 'Gulbrandsen', 'Gundersen',
'Gustavsen', 'Haaland', 'Haga', 'Hagen', 'Halvorsen', 'Hammer', 'Hamre', 'Hansen', 'Hanssen', 'Hassan', 'Haug',
'Hauge', 'Haugen', 'Haugland', 'Helgesen', 'Helland', 'Helle', 'Henriksen', 'Hermansen', 'Hoel', 'Hoff',
'Holen', 'Holm', 'Holmen', 'Hovland', 'Håland', 'Ingebrigtsen', 'Isaksen', 'Iversen', 'Jacobsen', 'Jakobsen',
'Jansen', 'Jensen', 'Jenssen', 'Johannesen', 'Johannessen', 'Johansen', 'Johansson', 'Johnsen', 'Jonassen',
'Jørgensen', 'Karlsen', 'Khan', 'Knudsen', 'Knutsen', 'Kolstad', 'Kristensen', 'Kristiansen', 'Kristoffersen',
'Kvam', 'Kvamme', 'Langeland', 'Larsen', 'Lie', 'Lien', 'Lorentzen', 'Ludvigsen', 'Lund', 'Lunde', 'Løken',
'Madsen', 'Magnussen', 'Martinsen', 'Mathisen', 'Mikalsen', 'Mikkelsen', 'Moe', 'Moen', 'Mohamed', 'Monsen',
'Mortensen', 'Myhre', 'Myklebust', 'Møller', 'Nguyen', 'Nielsen', 'Nikolaisen', 'Nilsen', 'Nilssen', 'Nordby',
'Nygaard', 'Nygård', 'Næss', 'Olsen', 'Ottesen', 'Paulsen', 'Pedersen', 'Petersen', 'Pettersen', 'Rasmussen',
'Ruud', 'Rønning', 'Rønningen', 'Samuelsen', 'Sand', 'Sandberg', 'Sande', 'Sandnes', 'Sandvik', 'Simonsen',
'Sivertsen', 'Sletten', 'Solbakken', 'Solberg', 'Solheim', 'Solli', 'Solvang', 'Steen', 'Stene', 'Stokke',
'Strand', 'Strøm', 'Sunde', 'Sveen', 'Svendsen', 'Syversen', 'Sæther', 'Sætre', 'Sørensen', 'Sørlie', 'Tangen',
'Teigen', 'Thomassen', 'Thoresen', 'Thorsen', 'Tollefsen', 'Torgersen', 'Torp', 'Tran', 'Tveit', 'Vik', 'Viken',
'Wang', 'Wiik', 'Wilhelmsen', 'Wold', 'Ødegaard', 'Ødegård', 'Øien',
];
/**
* National Personal Identity number (personnummer)
*
* @see https://no.wikipedia.org/wiki/Personnummer
*
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
*
* @return string on format DDMMYY#####
*/
public function personalIdentityNumber(?\DateTime $birthdate = null, $gender = null)
{
if (!$birthdate) {
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
}
$datePart = $birthdate->format('dmy');
/**
* @todo These number should be random based on birth year
*
* @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer
*/
$randomDigits = (string) static::numerify('##');
switch ($gender) {
case static::GENDER_MALE:
$genderDigit = static::randomElement([1, 3, 5, 7, 9]);
break;
case static::GENDER_FEMALE:
$genderDigit = static::randomElement([0, 2, 4, 6, 8]);
break;
default:
$genderDigit = (string) static::numerify('#');
}
$digits = $datePart . $randomDigits . $genderDigit;
/**
* @todo Calculate modulo 11 of $digits
*
* @see http://no.wikipedia.org/wiki/F%C3%B8dselsnummer
*/
$checksum = (string) static::numerify('##');
return $digits . $checksum;
}
}
@@ -0,0 +1,170 @@
<?php
namespace Faker\Provider\sv_SE;
use Faker\Calculator\Luhn;
class Person extends \Faker\Provider\Person
{
protected static $formats = [
'{{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 Swedish female first names
*
* @see http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml
*/
protected static $firstNameFemale = [
'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 male first names
*
* @see http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml
*/
protected static $firstNameMale = [
'Abraham', 'Adam', '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',
];
/**
* @var array Swedish common last names
*
* @see http://www.scb.se/sv_/Hitta-statistik/Statistik-efter-amne/Befolkning/Amnesovergripande-statistik/Namnstatistik/30898/2012A01x/Samtliga-folkbokforda--Efternamn-topplistor/Efternamn-topp-100/
*/
protected static $lastName = [
'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)
*
* @see http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)
*
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
*
* @return string on format XXXXXX-XXXX
*/
public function personalIdentityNumber(?\DateTime $birthdate = null, $gender = null)
{
if (!$birthdate) {
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
}
$datePart = $birthdate->format('ymd');
$randomDigits = $this->getBirthNumber($gender);
$checksum = Luhn::computeCheckDigit($datePart . $randomDigits);
return $datePart . '-' . $randomDigits . $checksum;
}
/**
* @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
*
* @return string of three digits
*/
protected function getBirthNumber($gender = null)
{
if ($gender && $gender === static::GENDER_MALE) {
return (string) static::numerify('##') . static::randomElement([1, 3, 5, 7, 9]);
}
$zeroCheck = static function ($callback) {
do {
$randomDigits = $callback();
} while ($randomDigits === '000');
return $randomDigits;
};
if ($gender && $gender === static::GENDER_FEMALE) {
return $zeroCheck(static function () {
return (string) static::numerify('##') . static::randomElement([0, 2, 4, 6, 8]);
});
}
return $zeroCheck(static function () {
return (string) static::numerify('###');
});
}
}