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

Enhancement: Add ar_EG locale support #1855

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
vendor
composer.lock
.idea/
23 changes: 23 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,29 @@ Fugiat non in itaque sunt nobis totam. Sed nesciunt est deleniti cumque alias. R

## Language specific formatters

### `Faker\Provider\ar_EG\Person`

```php
<?php

echo $faker->nationalIdNumber; // Citizen ID number (14-digit). ex: 20661507756430
```

### `Faker\Provider\ar_EG\Address`

```php
echo $faker->subDivision; // Governors subdvisions. ex: 'مركز بنها'
echo $faker->governors; // Governors names. ex: 'القاهرة'
echo $faker->secondaryAddress; // Secondary address. ex: 'عمارة رقم 20'
echo $faker->streetPrefix; // Street prefix. ex: 'طريق'
```

### `Faker\Provider\ar_EG\Company`

```php
echo $faker->companyPrefix; // Company name prefix. ex: شركة
```

### `Faker\Provider\ar_SA\Person`

```php
Expand Down
134 changes: 134 additions & 0 deletions src/Faker/Provider/ar_EG/Address.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
<?php


namespace Faker\Provider\ar_EG;

use phpDocumentor\Reflection\DocBlock\Tags\Factory\StaticMethod;

/**
* Provide a random generated Addresses of Egyptian streets.
*
* Class Address
* @package Faker\Provider\ar_EG
*/
class Address extends \Faker\Provider\Address
{
protected static $streetPrefix = array(
'شارع', 'حي', 'حارة', 'ممر', 'طريق',
);

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%AF%D9%86_%D9%85%D8%B5%D8%B1#%D9%85%D8%AF%D9%86_%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A9_%D8%A7%D9%84%D9%82%D8%A7%D9%87%D8%B1%D8%A9
*/
protected static $cityName = array(
'القاهرة', 'الجيزة', 'السادس من اكتوبر', 'التجمع الخامس',
'بنها', 'المعادي', 'الرحاب','الاسكندية', 'قنا', 'الاقصر',
'اسوان', 'البرديشين', 'قليوب', 'شبرا الخيمة', 'القناطر الخيرية',
);

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%B1%D8%A7%D9%83%D8%B2_%D9%85%D8%B5%D8%B1#%D9%85%D8%B1%D8%A7%D9%83%D8%B2_%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A9_%D8%A7%D9%84%D8%AC%D9%8A%D8%B2%D8%A9
*/
protected static $subDivision = array(
'مركز طوخ', 'مركز بنها', 'مركز البدريشين', 'مركز الصف',
'مركز القناطر الخيرية', 'مركز برج العرب', 'مركز قنا',
'مركز اسنا', 'مركز اسوان', 'مركز العياط',
);

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A7%D8%AA_%D9%85%D8%B5%D8%B1
*/
protected static $governors = array(
'الاسكندرية', 'القاهرة', 'الجيزة', 'القليوبية',
'المنوفية', 'الشرقية', 'الدقهلية', 'الغربية',
'اسوان', 'الاقصر', 'البحيرة', 'اسيوط',
'البحر الاحمر', 'السويس', 'بورسعيد', 'المنيا',
);

protected static $buildingNumber = array(
'#', '##', '###', '####'
);

/**
* @link http://www.nationsonline.org/oneworld/countrynames_arabic.htm
*/
protected static $country = array(
'الكاريبي', 'أمريكا الوسطى', 'أنتيجوا وبربودا', 'أنجولا', 'أنجويلا', 'أندورا', 'اندونيسيا', 'أورجواي', 'أوروبا', 'أوزبكستان', 'أوغندا', 'أوقيانوسيا', 'أوقيانوسيا النائية', 'أوكرانيا', 'ايران', 'أيرلندا', 'أيسلندا', 'ايطاليا',
'بابوا غينيا الجديدة', 'باراجواي', 'باكستان', 'بالاو', 'بتسوانا', 'بتكايرن', 'بربادوس', 'برمودا', 'بروناي', 'بلجيكا', 'بلغاريا', 'بليز', 'بنجلاديش', 'بنما', 'بنين', 'بوتان', 'بورتوريكو', 'بوركينا فاسو', 'بوروندي', 'بولندا', 'بوليفيا', 'بولينيزيا', 'بولينيزيا الفرنسية', 'بيرو',
'تانزانيا', 'تايلند', 'تايوان', 'تركمانستان', 'تركيا', 'ترينيداد وتوباغو', 'تشاد', 'توجو', 'توفالو', 'توكيلو', 'تونجا', 'تونس', 'تيمور الشرقية',
'جامايكا', 'جبل طارق', 'جرينادا', 'جرينلاند', 'جزر الأنتيل الهولندية', 'جزر الترك وجايكوس', 'جزر القمر', 'جزر الكايمن', 'جزر المارشال', 'جزر الملديف', 'جزر الولايات المتحدة البعيدة الصغيرة', 'جزر أولان', 'جزر سليمان', 'جزر فارو', 'جزر فرجين الأمريكية', 'جزر فرجين البريطانية', 'جزر فوكلاند', 'جزر كوك', 'جزر كوكوس', 'جزر ماريانا الشمالية', 'جزر والس وفوتونا', 'جزيرة الكريسماس', 'جزيرة بوفيه', 'جزيرة مان', 'جزيرة نورفوك', 'جزيرة هيرد وماكدونالد', 'جمهورية افريقيا الوسطى', 'جمهورية التشيك', 'جمهورية الدومينيك', 'جمهورية الكونغو الديمقراطية', 'جمهورية جنوب افريقيا', 'جنوب آسيا', 'جنوب أوروبا', 'جنوب شرق آسيا', 'جنوب وسط آسيا', 'جواتيمالا', 'جوادلوب', 'جوام', 'جورجيا', 'جورجيا الجنوبية وجزر ساندويتش الجنوبية', 'جيبوتي', 'جيرسي', 'دومينيكا',
'رواندا', 'روسيا', 'روسيا البيضاء', 'رومانيا', 'روينيون', 'زامبيا', 'زيمبابوي',
'ساحل العاج', 'ساموا', 'ساموا الأمريكية', 'سانت بيير وميكولون', 'سانت فنسنت وغرنادين', 'سانت كيتس ونيفيس', 'سانت لوسيا', 'سانت مارتين', 'سانت هيلنا', 'سان مارينو', 'ساو تومي وبرينسيبي', 'سريلانكا', 'سفالبارد وجان مايان', 'سلوفاكيا', 'سلوفينيا', 'سنغافورة', 'سوازيلاند', 'سوريا', 'سورينام', 'سويسرا', 'سيراليون', 'سيشل',
'شرق آسيا', 'شرق افريقيا', 'شرق أوروبا', 'شمال افريقيا', 'شمال أمريكا', 'شمال أوروبا', 'شيلي',
'صربيا', 'صربيا والجبل الأسود', 'طاجكستان', 'عمان',
'غامبيا', 'غانا', 'غرب آسيا', 'غرب افريقيا', 'غرب أوروبا', 'غويانا', 'غيانا', 'غينيا', 'غينيا الاستوائية', 'غينيا بيساو',
'فانواتو', 'فرنسا', 'فلسطين', 'فنزويلا', 'فنلندا', 'فيتنام', 'فيجي',
'قبرص', 'قرغيزستان', 'قطر', 'كازاخستان', 'كاليدونيا الجديدة', 'كرواتيا', 'كمبوديا', 'كندا', 'كوبا', 'كوريا الجنوبية', 'كوريا الشمالية', 'كوستاريكا', 'كولومبيا', 'كومنولث الدول المستقلة', 'كيريباتي', 'كينيا',
'لاتفيا', 'لاوس', 'لبنان', 'لوكسمبورج', 'ليبيا', 'ليبيريا', 'ليتوانيا', 'ليختنشتاين', 'ليسوتو',
'مارتينيك', 'ماكاو الصينية', 'مالطا', 'مالي', 'ماليزيا', 'مايوت', 'مدغشقر', 'مصر', 'مقدونيا', 'ملاوي', 'منغوليا', 'موريتانيا', 'موريشيوس', 'موزمبيق', 'مولدافيا', 'موناكو', 'مونتسرات', 'ميانمار', 'ميكرونيزيا', 'ميلانيزيا',
'ناميبيا', 'نورو', 'نيبال', 'نيجيريا', 'نيكاراجوا', 'نيوزيلاندا', 'نيوي',
'هايتي', 'هندوراس', 'هولندا', 'هونج كونج الصينية', 'وسط آسيا', 'وسط افريقيا',
);

protected static $cityFormats = array(
'{{cityName}}',
);

protected static $streetNameFormats = array(
'{{streetPrefix}} {{firstName}} {{lastName}}'
);

protected static $streetAddressFormats = array(
'{{buildingNumber}} {{streetName}}',
'{{buildingNumber}} {{streetName}} {{secondaryAddress}}',
);

protected static $addressFormats = array(
"{{streetAddress}}\n{{city}}",
);

protected static $secondaryAddress = array(
'شقة رقم. ##', 'عمارة رقم ##',
);

/**
* @example شارع
* @return string
*/
public static function streetPrefix()
{
return static::randomElement(static::$streetPrefix);
}

/**
* @example القاهرة
* @return string
*/
public static function cityName()
{
return static::randomElement(static::$cityName);
}

/**
* @example مركز اسوان
* @return string
*/
public static function subDivision()
{
return static::randomElement(static::$subDivision);
}

/**
* @example المنوفية
* @return string
*/
public static function governors()
{
return static::randomElement(static::$governors);
}

public static function secondaryAddress()
{
return static::numerify(static::randomElement(static::$secondaryAddress));
}
}
42 changes: 42 additions & 0 deletions src/Faker/Provider/ar_EG/Color.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php


namespace Faker\Provider\ar_EG;

/**
* This class provides a list of most of the colors that is used in the Egyptian streets.
*
* Class Color
* @package Faker\Provider\ar_EG
*/
class Color extends \Faker\Provider\Color
{
protected static $safeColorNames = array(
'احمر', 'ابيض', 'اسمر', 'ازرق',
'اصفر', 'لبني', 'كحلي', 'رصاصي',
'فضي', 'ذهبي', 'برتقالي', 'بني',
'رمادي', 'ازرق داكن', 'وردي', 'ارجواني'
);

/**
* @link https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D8%A7%D9%84%D8%A3%D9%84%D9%88%D8%A7%D9%86_(%D9%85%D8%AA%D8%B6%D8%A7%D9%85%D8%A9)
*/
protected static $allColorNames = array(
'أبيض', 'أبيض الشبح', 'أبيض زهوري', 'أبيض عتيق', 'أحمر داكن', 'أحمر طوبي',
'أحمر نحاسي', 'أخضر', 'أخضر تفاحي', 'أخضر تمويهي', 'أخضر داكن', 'أخضر مزرق',
'أرجواني فوشي', 'أزرق', 'أزرق اردوازي داكن', 'أزرق داكن', 'أزرق رمادي', 'أزرق سماوي داكن',
'أسود', 'أشقر', 'أصفر الكناري', 'أصفر برونزي', 'أصفر داكن', 'أصفر ذهبي', 'أصفر مخضر',
'أصفر موزي', 'أفوكادوي', 'ألماسي', 'باذنجاني', 'برتقالي الجزر', 'برتقالي داكن', 'برتقالي محروق',
'برونزي', 'بنفسجي داكن', 'بنفسجي مزرق', 'بني داكن', 'بني ذهبي', 'بني كاكاوي', 'بني (تقليدي)',
'ترابي', 'تربي داكن', 'تربي محروق', 'خرنوبي', 'خزامي داكن', 'خزامي مضيء', 'خوخي عميق',
'ذهبي', 'رماد الأخشاب', 'رمادي', 'رمادي دافي', 'رمادي داكن', 'رمادي بارد', 'رمادي خافت',
'رمادي مزرق', 'زبرجدي', 'زرنيخي', 'زعفراني عميق', 'زمردي', 'زمردي مضيء', 'زنجبيلي',
'زهري داكن', 'زهري مرجاني', 'زيتوني أسود', 'سلموني داكن', 'سيان', 'سيان داكن',
'شوكولاتي (تقليدي)', 'صحراوي', 'صفروي', 'صوفي', 'طوبي', 'طيني نضيج داكن', 'عاجي',
'عنبي', 'عنبي بري', 'فحمي', 'فوشي', 'فوشي عميق', 'فيروزي داكن', 'فيروزي مضيء', 'قرطبي',
'قرفي', 'قرمزي', 'قشدي', 'قطيفي', 'قهوي', 'قهوي عميق', 'كتاني', 'كرزي', 'كرزي عميق',
'لازوردي', 'لهيبي', 'لوزي', 'لوزي مبيض', 'ليموني عميق', 'مائي', 'مرجاني', 'مرجاني داكن',
'مشمشي', 'مصفر', 'نحاسي', 'نحاسي أصفر', 'نحاسي عتيق', 'نيلي', 'وردي فوشي',
'وردي مضيء', 'ياسميني', 'ياقوتي أزرق', 'ياقوتي عتيق', 'يوسفي داكن', 'يوسفي ذري',
);
}
60 changes: 60 additions & 0 deletions src/Faker/Provider/ar_EG/Company.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php


namespace Faker\Provider\ar_EG;

/**
* Provides some generated company names
*
* Class Company
* @package Faker\Provider\ar_EG
*/
class Company extends \Faker\Provider\Company
{
protected static $formats = array(
'{{lastName}} {{companySuffix}}',
'{{companyPrefix}} {{lastName}} {{companySuffix}}',
'{{companyPrefix}} {{lastName}}',
);

protected static $catchPhraseWords = array(
array('الخدمات', 'الانظمة', 'للتعدين', 'للحديد والصلب', 'السيارات', 'للغاز الطبيعي'),
array(
'الذكية', 'الدولية', 'الالمانية', 'المتخصصة',
'السريعة', 'الخيرية', 'العالمية', 'للاتصالاات',
'المصرية', 'العربية', 'الغازات الطبيعية', 'مصر'
),
);

protected static $companyPrefix = array(
'شركة', 'مؤسسة', 'مجموعة', 'مكتب',
'معرض', 'اكاديمية', 'مطاعم', 'محلات'
);

protected static $companySuffix = array(
'واولاده', 'للغزل والنسيج', 'وشركائه', 'للزيت', 'س.م.ح'
);

/**
* @example شركة
* @return string
*/
public function companyPrefix()
{
return static::randomElement(self::$companyPrefix);
}

/**
* @example شركة مصر الالمانية
* @return string
*/
public function catchPhrases()
{
$result = array();
foreach (static::$catchPhraseWords as &$word) {
$result[] = static::randomElement($word);
}

return implode(' ', $result);
}
}
68 changes: 68 additions & 0 deletions src/Faker/Provider/ar_EG/Internet.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php


namespace Faker\Provider\ar_EG;

/**
* Provide some of the default emails naming that is popular in Egypt.
*
* Class Internet
* @package Faker\Provider\ar_EG
*/
class Internet extends \Faker\Provider\Internet
{
protected static $userNameFormats = array(
'{{firstNameAscii}}.{{lastNameAscii}}',
'{{lastNameAscii}}.{{firstNameAscii}}',
'{{firstNameAscii}}##',
'?{{lastNameAscii}}',
);

protected static $tld = array(
'com', 'biz', 'net', 'org', 'eg', 'info',
);

protected static $firstNameAscii = array(
'ahmad', 'abdullah', 'khaled', 'muhammed', 'ibrahim', 'alaa', 'mazen', 'menna', 'aml',
);

protected static $lastNameAscii = array(
'raafat', 'hassan', 'adel', 'salama', 'hanfy', 'hamed', 'kamal', 'hossam', 'abdoal',
);

/**
* @return mixed
*/
public static function firstNameAscii()
{
return static::randomElement(static::$firstNameAscii);
}

/**
* @return mixed
*/
public static function lastNameAscii()
{
return static::randomElement(static::$lastNameAscii);
}

/**
* @example khaled.adel
* @return mixed|string
*/
public function userName()
{
$format = static::randomElement(static::$userNameFormats);

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

/**
* @example welove.eg
* @return string
*/
public function domainName()
{
return static::randomElement(static::$lastNameAscii).'.'.$this->tld();
}
}
Loading