˙Ř˙Ű C 

˙Ř˙Ű C 

<?php

namespace Faker\Provider\fr_FR;

class Address extends \Faker\Provider\Address
{
    protected static $citySuffix = ['Ville', 'Bourg', '-les-Bains', '-sur-Mer', '-la-ForĂŞt', 'boeuf', 'nec', 'dan'];
    protected static $streetPrefix = ['rue', 'rue', 'chemin', 'avenue', 'boulevard', 'place', 'impasse'];
    protected static $cityFormats = [
        '{{lastName}}',
        '{{lastName}}',
        '{{lastName}}',
        '{{lastName}}',
        '{{lastName}}{{citySuffix}}',
        '{{lastName}}{{citySuffix}}',
        '{{lastName}}{{citySuffix}}',
        '{{lastName}}-sur-{{lastName}}',
    ];
    protected static $streetNameFormats = [
        '{{streetPrefix}} {{lastName}}',
        '{{streetPrefix}} {{firstName}} {{lastName}}',
        '{{streetPrefix}} de {{lastName}}',
    ];
    protected static $streetAddressFormats = [
        '{{streetName}}',
        '{{buildingNumber}}, {{streetName}}',
        '{{buildingNumber}}, {{streetName}}',
        '{{buildingNumber}}, {{streetName}}',
        '{{buildingNumber}}, {{streetName}}',
        '{{buildingNumber}}, {{streetName}}',
    ];
    protected static $addressFormats = [
        "{{streetAddress}}\n{{postcode}} {{city}}",
    ];

    protected static $buildingNumber = ['%', '%#', '%#', '%#', '%##'];
    protected static $postcode = ['#####', '## ###'];

    protected static $country = [
        'Afghanistan', 'Afrique du sud', 'Albanie', 'AlgĂ©rie', 'Allemagne', 'Andorre', 'Angola', 'Anguilla', 'Antarctique', 'Antigua et Barbuda', 'Antilles nĂ©erlandaises', 'Arabie saoudite', 'Argentine', 'ArmĂ©nie', 'Aruba', 'Australie', 'Autriche', 'AzerbaĂŻdjan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Belgique', 'Belize', 'Benin', 'Bermudes (Les)', 'Bhoutan', 'BiĂ©lorussie', 'Bolivie', 'Bosnie-HerzĂ©govine', 'Botswana', 'Bouvet (ĂŽles)', 'Brunei', 'BrĂ©sil', 'Bulgarie', 'Burkina Faso', 'Burundi', 'Cambodge', 'Cameroun', 'Canada', 'Cap Vert', 'Cayman (ĂŽles)', 'Chili', 'Chine (RĂ©p. pop.)', 'Christmas (ĂŽle)', 'Chypre', 'Cocos (ĂŽles)', 'Colombie', 'Comores', 'Cook (ĂŽles)', 'CorĂ©e du Nord', 'CorĂ©e, Sud', 'Costa Rica', 'Croatie', 'Cuba', 'CĂ´te d\'Ivoire', 'Danemark', 'Djibouti', 'Dominique', 'Ă‰gypte', 'El Salvador', 'Ă‰mirats arabes unis', 'Ă‰quateur', 'Ă‰rythrĂ©e', 'Espagne', 'Estonie', 'Ă‰tats-Unis', 'Ethiopie', 'Falkland (ĂŽle)', 'Fidji (RĂ©publique des)', 'Finlande', 'France', 'FĂ©roĂ© (ĂŽles)', 'Gabon',
        'Gambie', 'Ghana', 'Gibraltar', 'Grenade', 'Groenland', 'GrĂ¨ce', 'Guadeloupe', 'Guam', 'Guatemala', 'GuinĂ©e', 'GuinĂ©e Equatoriale', 'GuinĂ©e-Bissau', 'Guyane', 'Guyane franĂ§aise', 'GĂ©orgie', 'GĂ©orgie du Sud et Sandwich du Sud (ĂŽles)', 'HaĂŻti', 'Heard et McDonald (ĂŽles)', 'Honduras', 'Hong Kong', 'Hongrie', 'ĂŽles Mineures Ă‰loignĂ©es des Ă‰tats-Unis', 'Inde', 'IndonĂ©sie', 'Irak', 'Iran', 'Irlande', 'Islande', 'IsraĂ«l', 'Italie', 'JamaĂŻque', 'Japon', 'Jordanie', 'Kazakhstan', 'Kenya', 'Kirghizistan', 'Kiribati', 'Koweit', 'La Barbad', 'Laos', 'Lesotho', 'Lettonie', 'Liban', 'Libye', 'LibĂ©ria', 'Liechtenstein', 'Lithuanie', 'Luxembourg', 'Macau', 'MacĂ©doine', 'Madagascar', 'Malaisie', 'Malawi', 'Maldives (ĂŽles)', 'Mali', 'Malte', 'Mariannes du Nord (ĂŽles)', 'Maroc', 'Marshall (ĂŽles)', 'Martinique', 'Maurice', 'Mauritanie', 'Mayotte', 'Mexique', 'MicronĂ©sie (Ă‰tats fĂ©dĂ©rĂ©s de)', 'Moldavie', 'Monaco', 'Mongolie', 'Montserrat', 'Mozambique', 'Myanmar', 'Namibie', 'Nauru', 'Nepal',
        'Nicaragua', 'Niger', 'Nigeria', 'Niue', 'Norfolk (ĂŽles)', 'NorvĂ¨ge', 'Nouvelle CalĂ©donie', 'Nouvelle-ZĂ©lande', 'Oman', 'Ouganda', 'OuzbĂ©kistan', 'Pakistan', 'Palau', 'Panama', 'Papouasie-Nouvelle-GuinĂ©e', 'Paraguay', 'Pays-Bas', 'Philippines', 'Pitcairn (ĂŽles)', 'Pologne', 'PolynĂ©sie franĂ§aise', 'Porto Rico', 'Portugal', 'PĂ©rou', 'Qatar', 'Roumanie', 'Royaume-Uni', 'Russie', 'Rwanda', 'RĂ©p. DĂ©m. du Congo', 'RĂ©publique centrafricaine', 'RĂ©publique Dominicaine', 'RĂ©publique tchĂ¨que', 'RĂ©union (La)', 'Sahara Occidental', 'Saint Pierre et Miquelon', 'Saint Vincent et les Grenadines', 'Saint-Kitts et Nevis', 'Saint-Marin (RĂ©p. de)', 'Sainte HĂ©lĂ¨ne', 'Sainte Lucie', 'Samoa', 'Samoa', 'Seychelles', 'Sierra Leone', 'Singapour', 'Slovaquie', 'SlovĂ©nie', 'Somalie', 'Soudan', 'Sri Lanka', 'Suisse', 'Suriname', 'SuĂ¨de', 'Svalbard et Jan Mayen (ĂŽles)', 'Swaziland', 'Syrie', 'SĂŁo TomĂ© et PrĂ­ncipe (RĂ©p.)', 'SĂ©nĂ©gal', 'Tadjikistan', 'Taiwan', 'Tanzanie', 'Tchad',
        'Territoire britannique de l\'ocĂ©an Indien', 'Territoires franĂ§ais du sud', 'Thailande', 'Timor', 'Togo', 'Tokelau', 'Tonga', 'TrinitĂ© et Tobago', 'Tunisie', 'TurkmĂ©nistan', 'Turks et CaĂŻques (ĂŽles)', 'Turquie', 'Tuvalu', 'Ukraine', 'Uruguay', 'Vanuatu', 'Vatican (Etat du)', 'Venezuela', 'Vierges (ĂŽles)', 'Vierges britanniques (ĂŽles)', 'Vietnam', 'Wallis et Futuna (ĂŽles)', 'Yemen', 'Yougoslavie', 'Zambie', 'ZaĂŻre', 'Zimbabwe',
    ];

    /**
     * @see https://en.wikipedia.org/wiki/Regions_of_France
     */
    private static $regions = [
        'Auvergne-RhĂ´ne-Alpes', 'Bourgogne-Franche-ComtĂ©', 'Bretagne', 'Centre-Val de Loire', 'Corse', 'Grand Est', 'Hauts-de-France',
        'ĂŽle-de-France', 'Normandie', 'Nouvelle-Aquitaine', 'Occitanie', 'Pays de la Loire', "Provence-Alpes-CĂ´te d'Azur",
        'Guadeloupe', 'Martinique', 'Guyane', 'La RĂ©union', 'Mayotte',
    ];

    private static $departments = [
        ['01' => 'Ain'], ['02' => 'Aisne'], ['03' => 'Allier'], ['04' => 'Alpes-de-Haute-Provence'], ['05' => 'Hautes-Alpes'],
        ['06' => 'Alpes-Maritimes'], ['07' => 'ArdĂ¨che'], ['08' => 'Ardennes'], ['09' => 'AriĂ¨ge'], ['10' => 'Aube'],
        ['11' => 'Aude'], ['12' => 'Aveyron'], ['13' => 'Bouches-du-RhĂ´ne'], ['14' => 'Calvados'], ['15' => 'Cantal'],
        ['16' => 'Charente'], ['17' => 'Charente-Maritime'], ['18' => 'Cher'], ['19' => 'CorrĂ¨ze'], ['2A' => 'Corse-du-Sud'],
        ['2B' => 'Haute-Corse'], ['21' => "CĂ´te-d'Or"], ['22' => "CĂ´tes-d'Armor"], ['23' => 'Creuse'], ['24' => 'Dordogne'],
        ['25' => 'Doubs'], ['26' => 'DrĂ´me'], ['27' => 'Eure'], ['28' => 'Eure-et-Loir'], ['29' => 'FinistĂ¨re'], ['30' => 'Gard'],
        ['31' => 'Haute-Garonne'], ['32' => 'Gers'], ['33' => 'Gironde'], ['34' => 'HĂ©rault'], ['35' => 'Ille-et-Vilaine'],
        ['36' => 'Indre'], ['37' => 'Indre-et-Loire'], ['38' => 'IsĂ¨re'], ['39' => 'Jura'], ['40' => 'Landes'], ['41' => 'Loir-et-Cher'],
        ['42' => 'Loire'], ['43' => 'Haute-Loire'], ['44' => 'Loire-Atlantique'], ['45' => 'Loiret'], ['46' => 'Lot'],
        ['47' => 'Lot-et-Garonne'], ['48' => 'LozĂ¨re'], ['49' => 'Maine-et-Loire'], ['50' => 'Manche'], ['51' => 'Marne'],
        ['52' => 'Haute-Marne'], ['53' => 'Mayenne'], ['54' => 'Meurthe-et-Moselle'], ['55' => 'Meuse'], ['56' => 'Morbihan'],
        ['57' => 'Moselle'], ['58' => 'NiĂ¨vre'], ['59' => 'Nord'], ['60' => 'Oise'], ['61' => 'Orne'], ['62' => 'Pas-de-Calais'],
        ['63' => 'Puy-de-DĂ´me'], ['64' => 'PyrĂ©nĂ©es-Atlantiques'], ['65' => 'Hautes-PyrĂ©nĂ©es'], ['66' => 'PyrĂ©nĂ©es-Orientales'],
        ['67' => 'Bas-Rhin'], ['68' => 'Haut-Rhin'], ['69' => 'RhĂ´ne'], ['70' => 'Haute-SaĂ´ne'], ['71' => 'SaĂ´ne-et-Loire'],
        ['72' => 'Sarthe'], ['73' => 'Savoie'], ['74' => 'Haute-Savoie'], ['75' => 'Paris'], ['76' => 'Seine-Maritime'],
        ['77' => 'Seine-et-Marne'], ['78' => 'Yvelines'], ['79' => 'Deux-SĂ¨vres'], ['80' => 'Somme'], ['81' => 'Tarn'],
        ['82' => 'Tarn-et-Garonne'], ['83' => 'Var'], ['84' => 'Vaucluse'], ['85' => 'VendĂ©e'], ['86' => 'Vienne'],
        ['87' => 'Haute-Vienne'], ['88' => 'Vosges'], ['89' => 'Yonne'], ['90' => 'Territoire de Belfort'], ['91' => 'Essonne'],
        ['92' => 'Hauts-de-Seine'], ['93' => 'Seine-Saint-Denis'], ['94' => 'Val-de-Marne'], ['95' => "Val-d'Oise"],
        ['971' => 'Guadeloupe'], ['972' => 'Martinique'], ['973' => 'Guyane'], ['974' => 'La RĂ©union'], ['976' => 'Mayotte'],
    ];

    protected static $secondaryAddressFormats = ['Apt. ###', 'Suite ###', 'Ă‰tage ###', 'BĂ˘t. ###', 'Chambre ###'];

    /**
     * @example 'Appt. 350'
     */
    public static function secondaryAddress()
    {
        return static::numerify(static::randomElement(static::$secondaryAddressFormats));
    }

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

    /**
     * Randomly returns a french region.
     *
     * @example 'Guadeloupe'
     *
     * @return string
     */
    public static function region()
    {
        return static::randomElement(static::$regions);
    }

    /**
     * Randomly returns a french department ('departmentNumber' => 'departmentName').
     *
     * @example array('2B' => 'Haute-Corse')
     *
     * @return array
     */
    public static function department()
    {
        return static::randomElement(static::$departments);
    }

    /**
     * Randomly returns a french department name.
     *
     * @example 'ArdĂ¨che'
     *
     * @return string
     */
    public static function departmentName()
    {
        $randomDepartmentName = array_values(static::department());

        return $randomDepartmentName[0];
    }

    /**
     * Randomly returns a french department number.
     *
     * @example '59'
     *
     * @return string
     */
    public static function departmentNumber()
    {
        $randomDepartmentNumber = array_keys(static::department());

        return $randomDepartmentNumber[0];
    }
}
