├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── composer.json
├── composer.lock
├── docs
└── index.html
└── src
├── Ar
├── Strings.php
├── Tafkit.php
├── Tawkit.php
└── data
│ ├── strings
│ ├── json
│ │ ├── en_unique.json
│ │ ├── english_letters.json
│ │ ├── letters.json
│ │ ├── map.json
│ │ └── uniques.json
│ └── loader.php
│ ├── tafkit
│ ├── json
│ │ ├── extra.json
│ │ ├── hundreds.json
│ │ ├── levels.json
│ │ ├── numbers.json
│ │ ├── ones.json
│ │ ├── order.json
│ │ ├── spaced_ones.json
│ │ ├── tens.json
│ │ ├── trimed_tens.json
│ │ ├── trimed_uniques.json
│ │ ├── uniqes.json
│ │ └── zero_to_20.json
│ └── loader.php
│ └── tawkit
│ ├── json
│ ├── days.json
│ ├── hijri_months.json
│ ├── months.json
│ ├── relative.json
│ ├── time.json
│ ├── uniques.json
│ └── units.json
│ └── loader.php
├── Arabic.php
├── ArabicServiceProvider.php
├── Caller.php
└── helpers.php
/.gitignore:
--------------------------------------------------------------------------------
1 | /src/Ar/Grammar.php
2 | /src/Ar/data/grammar
3 | .phpunit.result.cache
4 | /tests
5 | /phpunit.xml
6 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to `laravel-speaks-arabic` will be documented in this file
4 | ## 1.0.3 - 2021-05-10
5 | - bug fixes .
6 | - enhancing methods .
7 | - adding blade directives .
8 |
9 | ## 1.0.2 - 2021-03-27
10 | - enhancing package with new methods [fromHijri ,fromRelative ,countWords ,containsAr ,fromWords] .
11 | - bug fixes .
12 | - change methods default names [toWords ,toOrdinal ,toHijri ,fromHijri ,toRelative ,fromRelative , toSpelled]
13 |
14 | ## 1.0 - 2021-03-23
15 | - Initial release for the package
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## لارافيل يتحدث العربي - Laravel Speaks Arabic
4 |
5 | [](https://packagist.org/packages/adnane/laravel-speaks-arabic)
6 | [](LICENSE.md)
7 | [](https://packagist.org/packages/adnane/laravel-speaks-arabic)
8 |
9 | **حزمة خفيفة الوزن تسهل التعامل مع المفاهيم العربية في لارافيل، بإستخدام مجموعة من الفئات، الأساليب والتوابع لجعل لارافل يتحدث العربي! مفاهيم من مثل السلاسل النصية العربي والتواريخ الهجرية وغيرها**
10 |
11 | **مثال**
12 |
13 |
14 |
15 | ```php
16 | @toWords(12078437);
17 | // اثنا عشر مليون و ثمان و سبعون ألف و أربع مئة و سبع و ثلاثون
18 | ```
19 |
20 |
21 |
22 |
23 | ## التثبيت
24 |
25 | 1. التثبيت عن طريق مدير الحزم composer
26 |
27 |
28 |
29 | ```
30 | composer require adnane/laravel-speaks-arabic
31 | ```
32 |
33 |
34 |
35 | 2. قم بإضافة مزود خدمة الحزمة الى مصفوفة providers في ملف `config\app.php` كالتالي:
36 |
37 |
38 |
39 | ```php
40 | 'providers' => [
41 | Adnane\Arabic\ArabicServiceProvider::class,
42 | ]
43 | ```
44 |
45 |
46 |
47 | ## كيفية الاستعمال
48 | - بعد التأكد من تثبيت الحزمة على نحو صحيح، سيمكنك تضمين الفئة الرئيسية ```Adnane\Arabic\Arabic``` واستعمال توابعها بشكل عادي
49 |
50 | > قم بتغيير ```method``` إلى التابع المراد كـ: ```Arabic::toWords(643646)``` أو كـ: ```arabic()->toWords(643646)```
51 |
52 |
53 |
54 | ```php
55 | use Adnane\Arabic\Arabic;
56 | Arabic::method($params)
57 |
58 | // او مباشرة عن طريق الدالة المساعدة
59 | arabic()::method($params)
60 | ```
61 |
62 |
63 |
64 | ## التوابع المتوفرة
65 |
66 | **1.التعامل مع الأعداد**
67 |
68 |
69 |
70 | ```php
71 | /**
72 | * اعادة كتابة الاعداد كتابة لفظية انطلاقا من كتابة رمزية
73 | * يسمى أيضا "تفقيط"
74 | *
75 | * @return string
76 | */
77 | Arabic::toWords(int $integer)
78 |
79 | /**
80 | * اعادة كتابة الاعداد كتابة رمزية انطلاقا من كتابة لفظية
81 | * هو عكس العملية السابقة
82 | *
83 | * @return int
84 | */
85 | Arabic::fromWords(string $str)
86 |
87 | /**
88 | * جلب العدد الترتيبي انطلاقا من كتابة رمزية لعدد ما
89 | * مثال: أول، ثان، ثالث
90 | *
91 | * @return string
92 | */
93 | Arabic::toOrdinal(int $int)
94 |
95 | /**
96 | * اعادة كتابة الارقام الموجودة في سلسلة نصية ما
97 | * كأرقام هندية (۰ - ۱ - ۲ - ۳ - ٤ - ٥ - ٦ - ٧ - ۸ - ۹)
98 | *
99 | * @return string
100 | */
101 | Arabic::toIndianNums(string $str)
102 | ```
103 |
104 |
105 |
106 | **2.التعامل مع التواريخ والتواقيت**
107 |
108 |
109 |
110 | ```php
111 | /**
112 | * تحويل تاريخ مكتوب بالتقويم الميلادي
113 | * الى تاريخ مكتوب بالتقويم الهجري
114 | * مكتوبا بصيغة معينة
115 | *
116 | * (الصيغ المدعومة : f , s , n )
117 | * @return string
118 | */
119 | Arabic::toHijri(string $format = 'f' ,string $date)
120 |
121 | /**
122 | * تحويل تاريخ مكتوب بالتقوم الهجري
123 | * الى تاريخ مكتوب بالتقويم الميلادي
124 | *
125 | * @return string
126 | */
127 | Arabic::fromHijri(string $date /*Y/m/d*/);
128 |
129 | /**
130 | * جلب فرق التوقيت بين وقتين او تاريخين.
131 | * تمرير المعامل details بالقيمة true
132 | * سيقوم باعادة فرق تفصيلي بين هاذين التوقيتين
133 | *
134 | * @return string
135 | */
136 | Arabic::toRelative(string $date ,string $date2 = null ,boolean $detailed = false);
137 |
138 | /**
139 | * جلب توقيت ما انطلاقا من فرق مرفق
140 | * مثال:
141 | * Arabic::fromRelative('زد سنة')
142 | * @return string
143 | */
144 | Arabic::fromRelative(string $relative);
145 |
146 | ```
147 |
148 |
149 |
150 | **3. التعامل مع السلاسل النصية**
151 |
152 |
153 |
154 | ```php
155 | /**
156 | * ازالة التشكيل من سلسلة نصية ما
157 | *
158 | * @return string
159 | */
160 | Arabic::removeHarakat(string $str)
161 |
162 | /**
163 | * اعادة كتابة سلسلة نصية ما مكتوبة باللغة الانجليزية
164 | * الى المرافق لها بلوحة مفاتيح عربية
165 | * يمكن استعمال هاته الوظيفة في تحسين عمليات البحث داخل الموقع
166 | *
167 | * @return string
168 | */
169 | Arabic::toKeyboardInput(string $str)
170 |
171 | /**
172 | * اعادة كتابة سلسلة نصية عربية ما
173 | * بحروف انجليزية
174 | * يمكن استعمال هاته الوظيفة في انشاء روابط صديقة البحث
175 | * @return string
176 | */
177 | Arabic::toSpelled(string $str)
178 |
179 | /**
180 | * المكافئ للدالة str_word_count في PHP
181 | * من المهم جدا ملاحظة ان دالة ال PHP
182 | * str_word_count
183 | * لا تدعم اللغى العربية
184 | * ولذلك ان هاته الوظيفة تعتبرا بديلا عنها في اللغة العريبة
185 | * @return int
186 | */
187 | Arabic::countWords(string $str);
188 |
189 | /**
190 | * التحقق من ما ان كانت سلسلة نصية ما تحوي على الأقل حرفا عربيا واحدا
191 | * @return boolean
192 | */
193 | Arabic::containsAr(string $str);
194 | ```
195 |
196 |
197 |
198 | ## أمثلة عن عدة استعمالات
199 |
200 |
201 |
202 | ```php
203 | Arabic::toWords(56)
204 | // ست وخمسون
205 |
206 | Arabic::fromWords("ثمان مئة و خمسة")
207 | // 805
208 |
209 | Arabic::toOrdinal(12)
210 | // الثاني عشر
211 |
212 | Arabic::toIndianNums("ولد عليه الصلاة في 12 ربيع الأول")
213 | // ولد عليه الصلاة في ۱۲ ربيع الاول
214 |
215 | Arabic::toHijri('f' ,'2021/12/12')
216 | // الثامن من جمادى الأولى من السنة الهجرية ألف و أربع مئة و ثلاث و أربعون
217 |
218 | Arabic::fromHijri('1442/01/08')
219 | // 8/27/2020
220 |
221 | Arabic::toRelative('2010/01/10')
222 | // منذ أحد عشر سنة
223 |
224 | Arabic::toRelative('2010/01/10' ,'2008/01/10')
225 | // ثلاث سنين
226 |
227 | Arabic::toRelative('2010/01/10' ,'2008/01/10' ,true)
228 | // [ "y" => 3 , "m" => 39 ,"w" => 156 , "d" => 1096 ,"h" => 26304 ,"mn" => 1578240 ,"s" => 94694400 ]
229 |
230 | Arabic::fromRelative('زد سنة')
231 | // 2022/03/28
232 |
233 | Arabic::fromRelative('قل ست اشهر')
234 | // 2020/09/28
235 |
236 | Arabic::removeHarakat('لا حسَدَ إلَّا في اثنتيْنِ: رجلٌ آتاهُ اللهُ مالًا، فسلَّطَهُ على هلَكتِه في الحقِّ، ورجلٌ آتاهُ اللهُ الحِكمةَ، فهوَ يقضِي بِها، ويُعلِّمُها')
237 | // لا حسد إلا في اثنتين: رجل آتاه الله مالا، فسلطه على هلكته في الحق، ورجل آتاه الله الحكمة، فهو يقضي بها، ويعلمها
238 |
239 | Arabic::toKeyboardInput('dl;k hsjulhg ihji hg]hgm td jpsdk ulgdhj hgfpe fl,ru!')
240 | // يمكن استعمال هاته الدالة في تحسين عمليات البحث بموقع!
241 |
242 | Arabic::toSpelled("قد تساعد هاته الدالة في عمل slugs أو تحسين عمليات البحث")
243 | // qd tsaaad haath āldaalt fii aml slugs āoo thsiin amliiāt ālbhth
244 |
245 | Arabic::countWords("هاته الدالة هي المكافئة لاخرى بالبي اتش بي غير ان هاته لا تتجاهل ترميز اليو تي اف ايت")
246 | // 18
247 |
248 | Arabic::containsAr("this method checks if a given string contains arabic words or charachters , for example : if we mentioned لارفيل يتحدث عربي it will return true!")
249 | // true
250 | ```
251 |
252 |
253 |
254 | ## الاستعمال في ملفات blade
255 | > قم بتغيير ```method``` إلى التابع المراد كـ: ```Arabic::toWords(643646)``` أو كـ: ```arabic()->toWords(643646)```
256 |
257 |
258 |
259 | ```php
260 | {{ Arabic::method($input) }}
261 |
262 | // أو
263 |
264 | {{ arabic()->method($input) }}
265 | ```
266 |
267 |
268 |
269 | كما سيمكنك استعمال متغيرات القالب التالية لشيفرة أنظف
270 |
271 |
272 |
273 | ```php
274 | @toWords(4367)
275 | @toOrdinal(564)
276 | @toIndianNums(ولد عليه الصلاة في 12 ربيع الأول)
277 | @toHijri(2020/12/12)
278 | @toRelative(2019/12/01)
279 | @removeHarakat(فهوَ يقضِي بِها، ويُعلِّمُها)
280 | ```
281 |
282 |
283 |
284 | ## المساهمة
285 |
286 | **لا تتردد في المساهمة أو مساعدتنا في جعل Laravel يتحدث اللغة العربية بشكل أفضل من خلال فتح مناقشة أو إضافة بعض الطرق الإضافية أو إصلاح خطأ أو المساعدة في تحسين بعض الأساليب!**
287 |
288 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "adnane/laravel-speaks-arabic",
3 | "description": "a light weight ,open-source laravel package . It facilitates dealing with arabic concepts in Laravel Framework using a set of classes and methods to make laravel speaks arabic! ",
4 | "license": "MIT",
5 | "authors": [
6 | {
7 | "name": "adnane-ka",
8 | "email": "dannykadri0@gmail.com",
9 | "homepage":"https://github.com/adnane-ka",
10 | "role": "Developer"
11 | },
12 | {
13 | "name": "muath-ye",
14 | "email": "muathye@gmail.com",
15 | "homepage": "https://muath-ye.github.io"
16 | }
17 | ],
18 | "autoload": {
19 | "psr-4": {
20 | "Adnane\\Arabic\\": "/src"
21 | },
22 | "files": [
23 | "/src/helpers.php"
24 | ]
25 | },
26 | "require": {}
27 | }
28 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "34a7189230824aea246ed2b02f77e9b7",
8 | "packages": [],
9 | "packages-dev": [],
10 | "aliases": [],
11 | "minimum-stability": "stable",
12 | "stability-flags": [],
13 | "prefer-stable": false,
14 | "prefer-lowest": false,
15 | "platform": [],
16 | "platform-dev": [],
17 | "plugin-api-version": "2.0.0"
18 | }
19 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |