interscript 0.1.6 → 2.1.0a9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +29 -0
  5. data/LICENSE.adoc +31 -0
  6. data/README.md +3 -0
  7. data/Rakefile +53 -0
  8. data/bin/console +14 -0
  9. data/bin/interscript +3 -39
  10. data/bin/maps_analyze_staging +168 -0
  11. data/bin/maps_debug_compilers +58 -0
  12. data/bin/maps_debug_ordering +88 -0
  13. data/bin/maps_debug_ruby_compile +24 -0
  14. data/bin/maps_debug_step_by_step +44 -0
  15. data/bin/maps_optimize_order +112 -0
  16. data/bin/maps_v1_analyze_regexps +45 -0
  17. data/bin/maps_v1_to_v2 +426 -0
  18. data/exe/interscript +6 -0
  19. data/interscript.gemspec +31 -0
  20. data/lib/interscript.rb +81 -127
  21. data/lib/interscript/command.rb +5 -5
  22. data/lib/interscript/compiler.rb +22 -0
  23. data/lib/interscript/compiler/javascript.rb +292 -0
  24. data/lib/interscript/compiler/ruby.rb +262 -0
  25. data/lib/interscript/dsl.rb +67 -0
  26. data/lib/interscript/dsl/aliases.rb +23 -0
  27. data/lib/interscript/dsl/document.rb +46 -0
  28. data/lib/interscript/dsl/group.rb +45 -0
  29. data/lib/interscript/dsl/group/parallel.rb +6 -0
  30. data/lib/interscript/dsl/items.rb +89 -0
  31. data/lib/interscript/dsl/metadata.rb +26 -0
  32. data/lib/interscript/dsl/stage.rb +6 -0
  33. data/lib/interscript/dsl/symbol_mm.rb +11 -0
  34. data/lib/interscript/dsl/tests.rb +12 -0
  35. data/lib/interscript/interpreter.rb +251 -0
  36. data/lib/interscript/node.rb +25 -0
  37. data/lib/interscript/node/alias_def.rb +15 -0
  38. data/lib/interscript/node/dependency.rb +13 -0
  39. data/lib/interscript/node/document.rb +45 -0
  40. data/lib/interscript/node/group.rb +34 -0
  41. data/lib/interscript/node/group/parallel.rb +9 -0
  42. data/lib/interscript/node/group/sequential.rb +2 -0
  43. data/lib/interscript/node/item.rb +52 -0
  44. data/lib/interscript/node/item/alias.rb +42 -0
  45. data/lib/interscript/node/item/any.rb +61 -0
  46. data/lib/interscript/node/item/capture.rb +50 -0
  47. data/lib/interscript/node/item/group.rb +51 -0
  48. data/lib/interscript/node/item/repeat.rb +40 -0
  49. data/lib/interscript/node/item/stage.rb +23 -0
  50. data/lib/interscript/node/item/string.rb +51 -0
  51. data/lib/interscript/node/metadata.rb +18 -0
  52. data/lib/interscript/node/rule.rb +6 -0
  53. data/lib/interscript/node/rule/funcall.rb +18 -0
  54. data/lib/interscript/node/rule/run.rb +15 -0
  55. data/lib/interscript/node/rule/sub.rb +65 -0
  56. data/lib/interscript/node/stage.rb +19 -0
  57. data/lib/interscript/node/tests.rb +15 -0
  58. data/lib/interscript/stdlib.rb +211 -0
  59. data/lib/interscript/utils/regexp_converter.rb +283 -0
  60. data/lib/interscript/version.rb +1 -1
  61. data/requirements.txt +1 -0
  62. metadata +75 -339
  63. data/README.adoc +0 -298
  64. data/bin/rspec +0 -29
  65. data/lib/__pycache__/g2pwrapper.cpython-38.pyc +0 -0
  66. data/lib/g2pwrapper.py +0 -34
  67. data/lib/interscript-opal.rb +0 -2
  68. data/lib/interscript/fs.rb +0 -71
  69. data/lib/interscript/mapping.rb +0 -142
  70. data/lib/interscript/opal.rb +0 -27
  71. data/lib/interscript/opal/maps.js.erb +0 -10
  72. data/lib/interscript/opal_map_translate.rb +0 -12
  73. data/lib/model-7 +0 -0
  74. data/lib/tha-pt-b-7 +0 -0
  75. data/maps/acadsin-zho-Hani-Latn-2002.yaml +0 -38912
  76. data/maps/alalc-amh-Ethi-Latn-1997.yaml +0 -509
  77. data/maps/alalc-amh-Ethi-Latn-2011.yaml +0 -138
  78. data/maps/alalc-ara-Arab-Latn-1997.yaml +0 -1283
  79. data/maps/alalc-asm-Deva-Latn-1997.yaml +0 -159
  80. data/maps/alalc-aze-Cyrl-Latn-1997.yaml +0 -141
  81. data/maps/alalc-bel-Cyrl-Latn-1997.yaml +0 -125
  82. data/maps/alalc-ben-Beng-Latn-2017.yaml +0 -130
  83. data/maps/alalc-bul-Cyrl-Latn-1997.yaml +0 -94
  84. data/maps/alalc-ell-Grek-Latn-1997.yaml +0 -624
  85. data/maps/alalc-ell-Grek-Latn-2010.yaml +0 -627
  86. data/maps/alalc-hin-Deva-Latn-2020.yaml +0 -159
  87. data/maps/alalc-kat-Geok-Latn-1997.yaml +0 -111
  88. data/maps/alalc-kat-Geor-Latn-1997.yaml +0 -146
  89. data/maps/alalc-kor-Hang-Latn-1997.yaml +0 -94
  90. data/maps/alalc-mar-Deva-Latn-1997.yaml +0 -170
  91. data/maps/alalc-mkd-Cyrl-Latn-1997.yaml +0 -114
  92. data/maps/alalc-mkd-Cyrl-Latn-2013.yaml +0 -103
  93. data/maps/alalc-pan-Deva-Latn-1997.yaml +0 -237
  94. data/maps/alalc-rus-Cyrl-Latn-1997.yaml +0 -221
  95. data/maps/alalc-rus-Cyrl-Latn-2012.yaml +0 -162
  96. data/maps/alalc-srp-Cyrl-Latn-1997.yaml +0 -114
  97. data/maps/alalc-srp-Cyrl-Latn-2013.yaml +0 -135
  98. data/maps/alalc-ukr-Cyrl-Latn-1997.yaml +0 -141
  99. data/maps/alalc-ukr-Cyrl-Latn-2011.yaml +0 -16
  100. data/maps/apcbg-bul-Cyrl-Latn-1995.yaml +0 -283
  101. data/maps/bas-rus-Cyrl-Latn-2017-bss.yaml +0 -174
  102. data/maps/bas-rus-Cyrl-Latn-2017-oss.yaml +0 -169
  103. data/maps/bgn-jpn-Hrkt-Latn-1962.yaml +0 -292
  104. data/maps/bgn-kor-Hang-Latn-1943.yaml +0 -31
  105. data/maps/bgn-kor-Kore-Latn-1943.yaml +0 -31
  106. data/maps/bgna-bul-Cyrl-Latn-2006.yaml +0 -208
  107. data/maps/bgna-bul-Cyrl-Latn-2009.yaml +0 -208
  108. data/maps/bgnpcgn-amh-Ethi-Latn-1967.yaml +0 -528
  109. data/maps/bgnpcgn-ara-Arab-Latn-1956.yaml +0 -592
  110. data/maps/bgnpcgn-arm-Armn-Latn-1981.yaml +0 -108
  111. data/maps/bgnpcgn-aze-Cyrl-Latn-1993.yaml +0 -104
  112. data/maps/bgnpcgn-bak-Cyrl-Latn-2007.yaml +0 -184
  113. data/maps/bgnpcgn-bel-Cyrl-Latn-1979.yaml +0 -285
  114. data/maps/bgnpcgn-bul-Cyrl-Latn-1952.yaml +0 -115
  115. data/maps/bgnpcgn-bul-Cyrl-Latn-2013.yaml +0 -38
  116. data/maps/bgnpcgn-ell-Grek-Latn-1962.yaml +0 -701
  117. data/maps/bgnpcgn-ell-Grek-Latn-1996.yaml +0 -19
  118. data/maps/bgnpcgn-jpn-Hrkt-Latn-1976.yaml +0 -257
  119. data/maps/bgnpcgn-kat-Geor-Latn-1981.yaml +0 -127
  120. data/maps/bgnpcgn-kat-Geor-Latn-2009.yaml +0 -42
  121. data/maps/bgnpcgn-kor-Hang-Latn-kn-1945.yaml +0 -253
  122. data/maps/bgnpcgn-kor-Hang-Latn-rok-2011.yaml +0 -48
  123. data/maps/bgnpcgn-kor-Kore-Latn-rok-2011.yaml +0 -48
  124. data/maps/bgnpcgn-mkd-Cyrl-Latn-1981.yaml +0 -159
  125. data/maps/bgnpcgn-mkd-Cyrl-Latn-2013.yaml +0 -190
  126. data/maps/bgnpcgn-nep-Deva-Latn-2011.yaml +0 -200
  127. data/maps/bgnpcgn-per-Arab-Latn-1956.yaml +0 -92
  128. data/maps/bgnpcgn-rus-Cyrl-Latn-1947.yaml +0 -314
  129. data/maps/bgnpcgn-srp-Cyrl-Latn-2005.yaml +0 -166
  130. data/maps/bgnpcgn-ukr-Cyrl-Latn-1965.yaml +0 -162
  131. data/maps/bgnpcgn-ukr-Cyrl-Latn-2019.yaml +0 -208
  132. data/maps/bgnpcgn-zho-Hans-Latn-1979.yaml +0 -7456
  133. data/maps/bis-asm-Beng-Latn-13194-1991.yaml +0 -159
  134. data/maps/bis-ben-Beng-Latn-13194-1991.yaml +0 -156
  135. data/maps/bis-dev-Deva-Latn-13194-1991.yaml +0 -184
  136. data/maps/bis-gjr-Gujr-Latn-13194-1991.yaml +0 -166
  137. data/maps/bis-knd-Knda-Latn-13194-1991.yaml +0 -173
  138. data/maps/bis-mlm-Mlym-Latn-13194-1991.yaml +0 -176
  139. data/maps/bis-ori-Orya-Latn-13194-1991.yaml +0 -160
  140. data/maps/bis-pnj-Guru-Latn-13194-1991.yaml +0 -175
  141. data/maps/bis-tel-Telu-Latn-13194-1991.yaml +0 -170
  142. data/maps/bis-tml-Taml-Latn-13194-1991.yaml +0 -155
  143. data/maps/by-bel-Cyrl-Latn-1998.yaml +0 -168
  144. data/maps/by-bel-Cyrl-Latn-2007.yaml +0 -115
  145. data/maps/dos-nep-Deva-Latn-1997.yaml +0 -33
  146. data/maps/elot-ell-Grek-Latn-743-1982-tl.yaml +0 -684
  147. data/maps/elot-ell-Grek-Latn-743-1982-ts.yaml +0 -680
  148. data/maps/elot-ell-Grek-Latn-743-2001-tl.yaml +0 -19
  149. data/maps/elot-ell-Grek-Latn-743-2001-ts.yaml +0 -31
  150. data/maps/ggg-kat-Geor-Latn-2002.yaml +0 -88
  151. data/maps/gki-bel-Cyrl-Latn-1992.yaml +0 -33
  152. data/maps/gki-bel-Cyrl-Latn-2000.yaml +0 -201
  153. data/maps/gost-rus-Cyrl-Latn-16876-71-1983.yaml +0 -186
  154. data/maps/hk-yue-Hani-Latn-1888.yaml +0 -38497
  155. data/maps/icao-bel-Cyrl-Latn-9303.yaml +0 -136
  156. data/maps/icao-bul-Cyrl-Latn-9303.yaml +0 -118
  157. data/maps/icao-heb-Hebr-Latn-9303.yaml +0 -151
  158. data/maps/icao-mkd-Cyrl-Latn-9303.yaml +0 -117
  159. data/maps/icao-per-Arab-Latn-9303.yaml +0 -103
  160. data/maps/icao-rus-Cyrl-Latn-9303.yaml +0 -117
  161. data/maps/icao-srp-Cyrl-Latn-9303.yaml +0 -117
  162. data/maps/icao-ukr-Cyrl-Latn-9303.yaml +0 -119
  163. data/maps/iso-ara-Arab-Latn-233-1984.yaml +0 -323
  164. data/maps/iso-ell-Grek-Latn-843-1997-t1.yaml +0 -609
  165. data/maps/iso-ell-Grek-Latn-843-1997-t2.yaml +0 -40
  166. data/maps/iso-jpn-Hrkt-Latn-3602-1989.yaml +0 -62
  167. data/maps/iso-rus-Cyrl-Latn-9-1995.yaml +0 -271
  168. data/maps/iso-tha-Thai-Latn-11940-1998.yaml +0 -109
  169. data/maps/kp-kor-Hang-Latn-2002.yaml +0 -901
  170. data/maps/lshk-yue-Hani-Latn-jyutping-1993.yaml +0 -44820
  171. data/maps/mext-jpn-Hrkt-Latn-1954.yaml +0 -411
  172. data/maps/moct-kor-Hang-Latn-2000.yaml +0 -803
  173. data/maps/mofa-jpn-Hrkt-Latn-1989.yaml +0 -541
  174. data/maps/mvd-bel-Cyrl-Latn-2008.yaml +0 -225
  175. data/maps/mvd-bel-Cyrl-Latn-2010.yaml +0 -63
  176. data/maps/mvd-rus-Cyrl-Latn-2008.yaml +0 -109
  177. data/maps/mvd-rus-Cyrl-Latn-2010.yaml +0 -37
  178. data/maps/nil-kor-Hang-Hang-jamo.yaml +0 -11193
  179. data/maps/odni-aze-Cyrl-Latn-2015.yaml +0 -144
  180. data/maps/odni-bel-Cyrl-Latn-2015.yaml +0 -148
  181. data/maps/odni-bul-Cyrl-Latn-2015.yaml +0 -96
  182. data/maps/odni-hin-Deva-Latn-2015.yaml +0 -258
  183. data/maps/odni-kat-Geor-Latn-2015.yaml +0 -87
  184. data/maps/odni-kaz-Cyrl-Latn-2015.yaml +0 -148
  185. data/maps/odni-kir-Cyrl-Latn-2015.yaml +0 -136
  186. data/maps/odni-mkd-Cyrl-Latn-2015.yaml +0 -122
  187. data/maps/odni-rus-Cyrl-Latn-2015.yaml +0 -77
  188. data/maps/odni-srp-Cyrl-Latn-2015.yaml +0 -129
  189. data/maps/odni-tat-Cyrl-Latn-2015.yaml +0 -142
  190. data/maps/odni-tgk-Cyrl-Latn-2015.yaml +0 -148
  191. data/maps/odni-uig-Cyrl-Latn-2015.yaml +0 -138
  192. data/maps/odni-ukr-Cyrl-Latn-2015.yaml +0 -157
  193. data/maps/odni-urd-Arab-Latn-2015.yaml +0 -221
  194. data/maps/odni-uzb-Cyrl-Latn-2015.yaml +0 -166
  195. data/maps/royin-tha-Thai-Latn-1939-generic.yaml +0 -90
  196. data/maps/royin-tha-Thai-Latn-1968.yaml +0 -179
  197. data/maps/royin-tha-Thai-Latn-1999-chained.yaml +0 -180
  198. data/maps/royin-tha-Thai-Latn-1999.yaml +0 -76
  199. data/maps/sac-zho-Hans-Latn-1979.yaml +0 -24759
  200. data/maps/ses-ara-Arab-Latn-1930.yaml +0 -279
  201. data/maps/stategeocadastre-ukr-Cyrl-Latn-1993.yaml +0 -222
  202. data/maps/ua-ukr-Cyrl-Latn-1996.yaml +0 -193
  203. data/maps/un-ara-Arab-Latn-1971.yaml +0 -139
  204. data/maps/un-ara-Arab-Latn-1972.yaml +0 -159
  205. data/maps/un-ara-Arab-Latn-2017.yaml +0 -420
  206. data/maps/un-bel-Cyrl-Latn-2007.yaml +0 -114
  207. data/maps/un-ben-Beng-Latn-2016.yaml +0 -534
  208. data/maps/un-ell-Grek-Latn-1987-tl.yaml +0 -31
  209. data/maps/un-ell-Grek-Latn-1987-ts.yaml +0 -19
  210. data/maps/un-ell-Grek-Latn-phonetic-1987.yaml +0 -780
  211. data/maps/un-mon-Mong-Latn-2013.yaml +0 -99
  212. data/maps/un-nep-Deva-Latn-1972.yaml +0 -163
  213. data/maps/un-rus-Cyrl-Latn-1987.yaml +0 -166
  214. data/maps/un-ukr-Cyrl-Latn-1998.yaml +0 -30
  215. data/maps/ungegn-amh-Ethi-Latn-2016.yaml +0 -575
  216. data/maps/var-jpn-Hrkt-Latn-hepburn-1886.yaml +0 -406
  217. data/maps/var-jpn-Hrkt-Latn-hepburn-1954.yaml +0 -386
  218. data/maps/var-kor-Hang-Latn-mr-1939.yaml +0 -1054
  219. data/maps/var-kor-Kore-Hang-2013.yaml +0 -59754
  220. data/maps/var-kor-Kore-Latn-mr-1939.yaml +0 -36
  221. data/maps/var-tha-Thai-Thai-phonemic.yaml +0 -59
  222. data/maps/var-tha-Thai-Zsym-ipa.yaml +0 -301
  223. data/maps/var-zho-Hani-Latn-1979.yaml +0 -38908
  224. data/spec/interscript/mapping_spec.rb +0 -42
  225. data/spec/interscript_spec.rb +0 -26
  226. data/spec/spec_helper.rb +0 -3
@@ -1,592 +0,0 @@
1
- ---
2
- authority_id: bgnpcgn
3
- id: 1956
4
- language: ara
5
- source_script: Arab
6
- destination_script: Latn
7
- name: ROMANIZATION OF ARABIC -- BGN/PCGN 1956 System
8
- url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/858000/ROMANIZATION_OF_ARABIC.pdf
9
- creation_date: 1956
10
- confirmation date: 2019-12
11
- description: |
12
-
13
- This System was adopted by the BGN in 1946 and by the PCGN in 1956 and is applied by BGN and PCGN in the systematic romanization of Arabic geographical names in Bahrain, Egypt, Iraq, Jordan, Kuwait, Libya, Oman, Qatar, Saudi Arabia, Syria, the United Arab Emirates, Yemen, the West Bank and Gaza Strip.
14
-
15
- Uniform results in the romanization of Arabic are difficult to obtain, since vowel points and diacritical marks are generally omitted from both handwriting and printed script. It follows that for correct identification of the words which appear in any particular name, knowledge of its standard Arabic-script spelling including proper pointing, and recognition of dialectal and idiosyncratic deviations are essential.
16
-
17
- In order to bring about uniformity in the Roman-script spelling of geographical names in Arabic-language areas, the system is based insofar as possible on fully pointed Modern Standard Arabic (MSA). In the interest of clarity, vowel pointing to indicate short vowels has been applied to the examples given below, and examples of the, more usual, unpointed script have also been provided; it should also be noted that the dots which occur on some characters of the Arabic script are not vowels but rather are an integral part of the base consonant.
18
-
19
- Arabic script is written from right to left, and does not make a distinction between upper and lower case.
20
-
21
-
22
-
23
- notes: |
24
-
25
- - (NOTE 1) The symbol ◌ is used in this system to symbolise any Arabic consonant character. It is not itself an Arabic letter.
26
-
27
- - (NOTE 2) Hamzah (ء) is written in Arabic in association with most instances of initial alif, except those which belong to the definite article al or which bear a maddah (see note 9). Hamzah is written above the alif ( أَ) if the accompanying short vowel is a fatḩah or ḑammah and usually below the alif( أ ) if the accompanying short vowel is a kasrah.
28
- When the purpose is to indicate the presence of a glottal stop, hamzah is written over medial alif ( أ ), wāw (ؤ) and yā’, typically without dots (ئ); or following final alif ( أ ء ), these characters serving only to “bear” the hamzah. Hamzah following kasrah ( ) is written (ئ); the yā’ is usually in the initial or medial form and the dots are omitted e.g. bi’r ( بئ ر ).
29
- Hamzah following ḑammah ( ) is written (ؤ). Hamzah following a long vowel is written without a bearer and is positioned on the line of print like a regular character, e.g. صنعاء Şan‘ā’. The romanization of hamzah (’ - Unicode encoding 2019) should always be carefully distinguished from that of ‘ayn (‘ - Unicode encoding 2018).
30
-
31
- - (NOTE 3) Alif (ا) occurs with the following uses
32
- a. Initially, it indicates that the word begins with a vowel or diphthong; the alif itself is not romanized, but rather “carries” the short vowel, which is romanized; e.g., ظب ي أبو → Abū Z̧aby.
33
-
34
- b. With maddah (آ – row 18 in the vowel table), it is represented ā; e.g., مُ عيط آلب و → Ālbū Mu‘ayţ. See also note 9.
35
-
36
- c. Medially and finally it is represented ā; e.g., ب ا ب → Bāb, صيدا → Şaydā.
37
-
38
- d. Medially and finally, alif may serve as the bearer of hamzah, e.g. رأس → ra’s. See also note 2.
39
-
40
- - (NOTE 4) The tā’ marbūţah character (ة), which looks like hā’ with two dots above and occurs only at the end of words, is romanized h, except in an iḑāfah noun phrase construction, where it is romanized t, in accordance with pronunciation. e.g. Muḩāfaz̧ah (as an isolated word) but Muḩāfaz̧at Baghdād. In exceptional cases, when it is necessary to distinguish it from the tā’ marbūţah, the ending fatḩah + hā’ ( ه ) may be romanized a·h when the character hā’ (ه) is pronounced as such. Example Muntaza·h. (see also special rule 13). The tā marbūţah is always preceded by the short vowel fatḩah ( ) and is therefore romanized as ah or at, except when it is preceded by alif when it is romanized āh (not āah), e.g. Ḩamāh (حماة ), and as āt within an iḑāfah construction.
41
-
42
- - (NOTE 5) The character yā’ (in final form but without dots) preceded by the vowel point fatḩah is known as alif maqşūrah. This character may also be pointed ى and should be romanized á. See character 7 in the vowel table.
43
-
44
- - (NOTE 6) The classical Arabic grammatical endings written with the nunation symbols (tanwīn) may be romanized, when necessary, by an, in, un. In modern spoken Arabic, these endings have become silent and should not be romanized e.g. classical alifun; modern alif.
45
-
46
- - (NOTE 7) Doubled consonant sounds are represented in Arabic script by placing a shaddah ( ) over a consonant character, although like the short vowels the shaddah may not always be written. In romanization the letter should be doubled, e.g. Quwwah, ‘Abbās. However, the combination of the consonant character yā’ with a shaddah preceded by a kasrah ( ي ) at the end of a word is romanized ī, e.g. Gharbī; a word ending kasrah + yā’ with a shaddah + tā’ marbūţah is romanized īyah (rather than iyyah), e.g. ال س ل يمانِ ية
47
- is romanized As Sulaymānīyah and not As Sulaymāniyyah; and when the kasrah + yā’ + shaddah combination is followed by the sound masculine plural ending ( يين or يون ) it should be romanized as –īyīn/īyūn, e.g. ساحة العباسيين should be romanized as Sāḩat al ‘Abbāsīyīn.
48
-
49
- - (NOTE 8) Hamzat al waşl (ٱ), which is utilized only in the pointing of classical Arabic, is romanized ’ as illustrated in the classical form of its name hamzatu’l waşli.
50
-
51
- - (NOTE 9) Since maddah ( أ ), which is placed over alif ( أ ), often occurs in word-initial position, no confusion results from the use of ā for alif maddah ( أ ) as well as for fatḩah followed by alif ( اَ ).
52
-
53
- - (NOTE 10) The ligature ل ا represents lām-alif, and should be romanized lā.
54
-
55
- - (NOTE 11) In word initial position the combination Alif +Wāw (او ) is sometimes used to render an initial long vowel sound in words of non-Arabic origin. Where this is clearly the case it should be romanized Ū. In words of Arabic or uncertain origin it should be romanized Aw. In word-medial or word-final position it should always be romanized āw. Similarly the combination Alif +Yā’ (اي ) is romanized Ī to render an initial long vowel sound but as āy in word-medial or word-final position.
56
-
57
- # SPECIAL RULES
58
-
59
- - The Arabic definite article al (ال ) should be treated as follows |
60
- a. Initial definite articles should be capitalized and hyphens should not be used to connect parts of names, e.g. Ash Shāriqah. When appearing medially in a name the initial ‘a’ should be lower case, e.g. Tall al Laḩm.
61
-
62
- b. When the definite article precedes a word beginning with one of the “sun letters” t, th, d, dh, r, z, s, sh, ş, ḑ, ţ, z̧, l, or n – the l is assimilated in pronunciation and romanization, thus yielding, for example, the romanization Ar Riyāḑ, rather than Al Riyāḑ for ال ريا ض .
63
-
64
- c. If sources contradict over the inclusion or non-inclusion of the definite article in a name, preference should be given to the form with the article.
65
-
66
- - Conjunctions and prepositions should be romanized according to their written form in Arabic script and should be lower case. In cases where the conjunction or preposition ends in a long or short vowel any assimilated pronunciation should not be shown in the romanized form. e.g. Khabb wa ash Sha‘f (خب والشعف ). |
67
-
68
- There are two exceptions to this rule
69
-
70
- a. In the case of the preposition li (ل), where the alif of the definite article is assimilated in the written form as well as pronunciation, the written form should be shown in romanization as follows Mişr liţ Ţayarān (مصر للطيران ); Ash Sharikah al ‘Āmmah lil Maghāzil (الشركة العامة للمغازل ).
71
-
72
- b. In the case of the preposition bi (ب), the alif of the definite article is assimilated in pronunciation and, although the alif remains in the written form the short vowel it carries changes from ‘a’ to ‘i’. For example Al Qaryah bid Duwayr (القرية بالدوير ) but Ad Duwayr (الدوير ); and Al Ḩarajah bil Qur’ān (الحرجة بالقرآن ) but Al Qur’ān (القرآن ).
73
-
74
-
75
- - The Arabic word for God ( لله) should be written Allāh. The alif khanjarīyah (dagger alif) ( ) above the second ل (lām) in the word لله , like the short vowels, is not usually written but should be romanized ā, like a full-size alif. This diacritical mark appears in a few other Arabic words, for instance on the alif maqşūrah as described in note 5.
76
-
77
- - Names which consist of noun phrases (see also note 4) should be written as separate words. The definite article within such names should be romanized al, not ul, e.g., ‘Abd Allāh, ‘Abd ar Raḩmān, Dhū al Faqār, and as noted in special rule 1, the medial al should be lower case.
78
-
79
- - The Arabic word ب ن should be romanized Bin rather than Ibn whenever written without alif, that is between two proper nouns, e.g., ‘Umar Bin al Khaţţāb. Where it appears with alif ( )اب ن , it should be romanized Ibn.
80
-
81
- - The Turkish word Paşa should be romanized from Arabic script as Bāshā. The Turkish word Bey should be romanized as Bey in Egyptian names, no matter how it is written in Arabic-language sources, but in other Arabic areas it should be romanized as Bak where written بك and as Bayk when written بيك .
82
-
83
- - The modern colloquial word Sīdī (سيدي ) should be give precedence over the classical form Sayyidī. This does not preclude the spelling Sayyidī if the latter is indicated by the Arabic script or other evidence – for instance, if the yā’ is written with a shaddah ( ).
84
-
85
- - The colloquial word Bū should not be changed to the standard form Abū.
86
-
87
- - The colloquial word for water, written مي ة on Arabic maps, should be romanized Mayyat.
88
-
89
- - Place names of Aramaic origin in Syria often contain initial consonant clusters consisting of b plus another consonant such as l or h. In romanization, the clusters bl, bh, etc., should be so represented.
90
-
91
- - In names containing the Arabic word for back, ridge, or hill, appearing as either ظهر (Z̧ahr) or ضه ر (Ḑahr) in Arabic sources, the word should be romanized to reflect the particular Arabic spelling shown. Where sources differ, preference should be given to the form found on the most authoritative source.
92
-
93
- - In formal Arabic, the spelling of some words ending in a long vowel character may change according to that word’s grammatical function in a sentence. For example, the personal name Abū Bakr (ابو بكر ) would become Abī Bakr (ابي بكر ) when preceded by a generic in an iḑāfah construction (used in Moroccan Arabic Script) e.g. Shāri‘ Abī Bakr (شارع ابي بكر – Abu Bakr Street). The spelling of such words as found on the most authoritative source should be used in the romanized form of the name. Other common words affected by this rule are Banū/Banī (sons of…) and Dhū/Dhī (owner of ...). Examples of names in this category include Jabal Abā aş Şabbān (جبل ابا الصبان ) and Muḩāfaz̧at Dhī Qār ( محافظة ذي قار ).
94
-
95
- - Occasionally the character sequences ك ه , ده , س ه , and ت occur. They may be romanized k·h, d·h, s·h, and t·h in order to differentiate these romanizations from the digraphs kh, dh, sh, and th, which are used to represent the characters خ, ذ, ش, and ث respectively. See also note 4.
96
-
97
-
98
- tests:
99
-
100
- - source: قُرآن
101
- expected: Qur’ān
102
-
103
- - source: أَبُو ظَبْي
104
- expected: Abū Z̧aby
105
-
106
- - source: بِئْر زَيْت
107
- expected: Bi’r Zayt
108
-
109
- - source: أُمّ العَمَد
110
- expected: Umm al ‘Amad
111
-
112
- - source: البَحرَيْن
113
- expected: Al Baḩrayn
114
-
115
- - source: الكُوت
116
- expected: Al Kūt
117
-
118
- - source: الثُّلَيْثُوَات
119
- expected: Ath Thulaythuwāt
120
-
121
- - source: الجَزِيرَة
122
- expected: Al Jazīrah
123
-
124
- - source: المَحْمُودِيَّة
125
- expected: Al Maḩmūdīyah
126
-
127
- - source: خَيْبَر
128
- expected: Khaybar
129
-
130
- - source: دَمَنْهُور
131
- expected: Damanhūr
132
-
133
- - source: ذَهَب
134
- expected: Dhahab
135
-
136
- - source: الرَّوْضة
137
- expected: Ar Rawḑah
138
-
139
- - source: زُوَارَة
140
- expected: Zuwārah
141
-
142
- - source: السُّلَيْمانِيَّة
143
- expected: As Sulaymānīyah
144
-
145
- - source: الشَّام
146
- expected: Ash Shām
147
-
148
- - source: قَيْصُومَة
149
- expected: Qayşūmah
150
-
151
- - source: ضَوْر
152
- expected: Ḑawr
153
-
154
- - source: القُنَيْطِرَة
155
- expected: Al Qunayţirah
156
-
157
- - source: ظُفَار
158
- expected: Z̧ufār
159
-
160
- - source: أَبُو عَرِيش
161
- expected: Abū ‘Arīsh
162
-
163
- - source: بَغْداد
164
- expected: Baghdād
165
-
166
- - source: الفُرات
167
- expected: Al Furāt
168
-
169
- - source: قَطَر
170
- expected: Qaţar
171
-
172
- - source: الكُوَيْت
173
- expected: Al Kuwayt
174
-
175
- - source: حَلَب
176
- expected: Ḩalab
177
-
178
- - source: مَكَّة
179
- expected: Makkah
180
-
181
- - source: نَخْل
182
- expected: Nakhl
183
-
184
- - source: جَبَل هارُون
185
- expected: Jabal Hārūn
186
-
187
- - source: وادِي غَضَا
188
- expected: Wādī Ghaḑā
189
-
190
- - source: اليَمَن
191
- expected: Al Yaman
192
-
193
- - source: القاهِرَة
194
- expected: Al Qāhirah
195
-
196
- - source: المَدِينَة المُنَوَّرَة
197
- expected: Al Madīnah al Munawwarah
198
-
199
- - source: مُحَافَظَة دِمَشْق
200
- expected: Muḩāfaz̧at Dimashq
201
-
202
- - source: البَصْرَة
203
- expected: Al Başrah
204
-
205
- - source: الرِّيَاض
206
- expected: Ar Riyāḑ
207
-
208
- - source: القُدْس
209
- expected: Al Quds
210
-
211
- - source: بَاب المَنْدَب
212
- expected: Bāb al Mandab
213
-
214
- - source: المَدِينة
215
- expected: Al Madīnah
216
-
217
- - source: صُور
218
- expected: Şūr
219
-
220
- - source: مَرْسَىٰ مَطْرُوح
221
- expected: Marsá Maţrūḩ
222
-
223
- - source: صَيْدَا
224
- expected: Şaydā
225
-
226
- - source: الدَّوحَة
227
- expected: Ad Dawḩah
228
-
229
- - source: مُحَمَّد
230
- expected: Muḩammad
231
-
232
- - source: أُوزُونْلَار
233
- expected: Ūzūnlār
234
-
235
- - source: أَوْسَط
236
- expected: Awsaţ
237
-
238
- - source: سَنَاو
239
- expected: Sanāw
240
-
241
- - source: اِيرَان
242
- expected: Īrān
243
-
244
- - source: تَلّ السَّرَاي
245
- expected: Tall as Sarāy
246
-
247
- - source: آلْبُو مُعَيْط
248
- expected: Ālbū Mu‘ayţ
249
-
250
- - source: سَلْمان پَاك
251
- expected: Salmān Pāk
252
-
253
- - source: تَلّ كُوچِك الصَّغِير
254
- expected: Tall Kūchik aş Şaghīr
255
-
256
- # - source: مَزََّة ڤِيلَّات غَرْبِيَّة
257
- # expected: Mazzah Vīllāt Gharbīyah
258
-
259
- - source: ڨَفْصَة
260
- expected: Gafşah
261
-
262
- - source: تَلّ گَمْر
263
- expected: Tall Gamr
264
-
265
- - source: زَاڴُورَة
266
- expected: Zāgūrah
267
-
268
-
269
- map:
270
- postrules:
271
- - pattern: '(?<=\b)(?<!\b[‘|’])[\u0061-\uFFFF]'
272
- result: "upcase"
273
- # don't capitalize defined article in the middle of a sentence
274
- - pattern : ' At T' # الت
275
- result: ' at T'
276
- - pattern : ' Ath Th' # الث
277
- result: ' ath th'
278
- - pattern : ' Ad D' # الد
279
- result: ' ad D'
280
- - pattern : ' Adh Dh' # الذ
281
- result: ' adh Dh'
282
- - pattern : ' Ar R' # الر
283
- result: ' ar R'
284
- - pattern : ' Az Z' # الز
285
- result: ' az Z'
286
- - pattern : ' As S' # الس
287
- result: ' as S'
288
- - pattern : ' Ash Sh' # الش
289
- result: ' ash Sh'
290
- - pattern : ' Aş Ş' # الص
291
- result: ' aş Ş'
292
- - pattern : ' Aḑ Ḑ' # الض
293
- result: ' aḑ Ḑ'
294
- - pattern : ' Aţ Ţ' # الط
295
- result: ' aţ Ţ'
296
- - pattern : ' Az̧ Z̧' # الظ
297
- result: ' az̧ Z̧'
298
- - pattern : ' Al L' # الل
299
- result: ' al L'
300
- - pattern : ' an n' # الن
301
- result: ' an N'
302
- - pattern: " Al " # ال
303
- result: " al "
304
-
305
- characters:
306
-
307
- # Modified/Non-Standard Arabic Script Characters
308
-
309
- '\u067E': 'p'
310
- '\u0686': 'ch'
311
- '\u06A4': 'v'
312
- # Used in Tunisian Arabic Script.
313
- '\u06A8': 'g'
314
- # Used principally in Iraq, but also sometimes used in other Arabic speaking countries to represent the ‘g’ sound.
315
- '\u06AF': 'g'
316
- # Used in Moroccan Arabic Script.
317
- '\u06B4': 'g' # ڭ
318
- '\u06AD': 'g'
319
-
320
-
321
-
322
- # pointing
323
-
324
-
325
- # Note 11
326
- '\b\u0627\u0648': 'ū' #او
327
- '\b\u0627\u0648\u0652' : 'aw' # اوْ
328
- '\u0627\u0648': 'āw' #او in word medial or final position
329
-
330
- '\b\u0627\u064A': 'ī' # اي in word initial position (see Note 11)
331
- '\u0627\u064A' : 'āy' # اي in word medial or final position
332
-
333
-
334
- '\u064e' : 'a' # َ fatha
335
- '\u064e(?=\u0629)' : '' # َ fatha followed by ta' marboota
336
- '\u064e(?=a[h|t])' : '' # َ fatha followed by ta' marboota, handling different order of conversion
337
- '\u0650' : 'i' # ِ kasra
338
- '\u064f' : 'u' # ُ damma
339
-
340
- '\u064e\u0627' : 'ā' # ـَا fatha followed by ا
341
- '\u0650\u064a' : 'ī' # ـِي kasra followed by ي
342
- '\u064f\u0648' : 'ū' # ـُو damma followed by و
343
- '\u064f\u0648(?=\u064e|u064f)' : 'uw' # ـِي kasra followed by ي
344
- '\u064e\u0649' : 'á' # ـَى fatha followed by ى which is ا not ي Note 5
345
- '\u064e\u0649\u0670' : 'á' # Note 5
346
- '\u0649\u0670': 'á' # See Note 5
347
- '\u0652' : '' # ْ sokoon, not romanized, Indicates absence of short vowel
348
- '\u064e\u064a\u0652' : 'ay' # ـَيْ
349
- '\u064e\u064a' : 'aī' # ـَي
350
-
351
- '\u064e\u0648\u0652' : 'aw' # ـَوْ
352
- '\u064b': '' # See Note 6
353
- '\u064d': '' # See Note 6
354
- '\u064c': '' # See Note 6
355
-
356
-
357
- # special pointed letters
358
- '\u0639\u064e' : '‘a' # عَ
359
- '\u0639\u0650' : '‘i' # عِ
360
- '\u0639\u064f' : '‘ū' # عُ
361
-
362
- # Note 2
363
- '\u0623' : ''
364
- # '\u0623\u064e' : 'a' # أَ
365
- # '\u0625\u0650' : 'i' # إِ
366
- # '\u0623\u064f' : 'u' # أُ
367
- # '\u0623\u064f\u0648' : 'ū' # أُ
368
-
369
- # handle MacOS regex difference
370
- '\u0639\u064f\u0648' : '‘ū' # عُو damma followed by و
371
-
372
- '\u0650\u064a\u0651\u064e' : 'īy' # ـِيَّ
373
- '\u0650\u064a(?=\u064e|u064f)' : 'iy' # ـِي kasra followed by ي
374
-
375
- # not romanized in word-initial position (see Note 2)
376
- '\u0621': '’'
377
-
378
- '\b\u0622' : 'ā' # آ in word initial position (see Notes 3 and 9)
379
- '\u0622': '’ā' # آ in word medial position (see Notes 3 and 9)
380
- '\u0671': '’' # See Note 8
381
- '\u0626' : "’" # ئ
382
- '\u0627': 'ā' # See Notes 3 and 10
383
-
384
- '\b\u0627\u0648' : 'ū' # اُ
385
- '\b\u0627\u0650\u064a' : 'ī' # اي
386
- '\b\u0627\u0644' : 'al ' # ال
387
-
388
- # Sun letters
389
-
390
- '\b\u0627\u0644\u062a\u0651?' : 'at t' # الت
391
- '\b\u0627\u0644\u062b\u0651?' : 'ath th' # الث
392
- '\b\u0627\u0644\u062f\u0651?' : 'ad d' # الد
393
- '\b\u0627\u0644\u0630\u0651?' : 'adh dh' # الذ
394
- '\b\u0627\u0644\u0631\u0651?' : 'ar r' # الر
395
- '\b\u0627\u0644\u0632\u0651?' : 'az z' # الز
396
- '\b\u0627\u0644\u0633\u0651?' : 'as s' # الس
397
- '\b\u0627\u0644\u0634\u0651?' : 'ash sh' # الش
398
- '\b\u0627\u0644\u0635\u0651?' : 'aş ş' # الص
399
- '\b\u0627\u0644\u0636\u0651?' : 'aḑ ḑ' # الض
400
- '\b\u0627\u0644\u0637\u0651?' : 'aţ ţ' # الط
401
- '\b\u0627\u0644\u0638\u0651?' : 'az̧ z̧' # الظ
402
- '\b\u0627\u0644\u0644\u0651?' : 'al l' # الل
403
- '\b\u0627\u0644\u0646\u0651?' : 'an n' # الن
404
-
405
- # shadda Note 7
406
-
407
- '\u0628\u0651' : 'bb' # ب
408
- '\u062a\u0651' : 'tt' # ت
409
- '\u062b\u0651' : 'thth' # ث
410
- '\u062c\u0651' : 'jj' # ج
411
- '\u062d\u0651' : 'ḩḩ' # ح
412
- '\u062e\u0651' : 'khkh' # خ
413
- '\u062f\u0651' : 'dd' # د
414
- '\u0630\u0651' : 'dhdh' # ذ
415
- '\u0631\u0651' : 'rr' # ر
416
- '\u0632\u0651' : 'zz' # ز
417
- '\u0633\u0651' : 'ss' # س
418
- '\u0634\u0651' : 'sh' # ش
419
- '\u0635\u0651' : 'şş' # ص
420
- '\u0636\u0651' : 'ḑḑ' # ض
421
- '\u0637\u0651' : 'ţţ' # ط
422
- '\u0638\u0651' : 'z̧z̧' # ظ
423
- '\u063a\u0651' : 'ghgh' # غ
424
- '\u0641\u0651' : 'ff' # ف
425
- '\u0642\u0651' : 'qq' # ق
426
- '\u0643\u0651' : 'kk' # ك
427
- '\u0644\u0651' : 'll' # ل
428
- '\u0645\u0651' : 'mm' # م
429
- '\u0646\u0651' : 'nn' # ن
430
- '\u0647\u0651' : 'hh' # ه
431
- '\u0648\u0651' : 'ww' # و
432
- '\u064a\u0651' : 'yy' # ي
433
-
434
- # ta' marboota See Note 4
435
-
436
- '\u0629' : 'at' # ة in the middle of the sentence
437
- '\u0629$' : 'ah'
438
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{2})\u0629' : 'ah'
439
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{3})\u0629' : 'ah'
440
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{4})\u0629' : 'ah'
441
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{5})\u0629' : 'ah'
442
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{6})\u0629' : 'ah'
443
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{7})\u0629' : 'ah'
444
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{8})\u0629' : 'ah'
445
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{9})\u0629' : 'ah'
446
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{10})\u0629' : 'ah'
447
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{11})\u0629' : 'ah'
448
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{12})\u0629' : 'ah'
449
- '(?<=\b\u0627\u0644[\u0600-\u06ff]{13})\u0629' : 'ah'
450
-
451
-
452
- # standard consonant characters
453
-
454
- '\u0628' : 'b' # ب
455
- '\uFE91' : 'b' # ﺑ
456
- '\uFE92' : 'b' # ﺒ
457
- '\uFE90' : 'b' # ﺐ
458
-
459
- '\u062a' : 't' # ت
460
- '\ufe97' : 't' # ﺗ
461
- '\ufe98' : 't' # ﺘ
462
- '\ufe96' : 't' # ﺖ
463
-
464
- '\u062b' : 'th' # ث
465
- '\ufe9b' : 'th' # ﺛ
466
- '\ufe9c' : 'th' # ﺜ
467
- '\ufe9a' : 'th' # ﺚ
468
-
469
- '\u062c' : 'j' # ج
470
- '\ufe9f' : 'j' # ﺟ
471
- '\ufea0' : 'j' # ﺠ
472
- '\ufe9e' : 'j' # ﺞ
473
-
474
- '\u062d' : 'ḩ' # ح
475
- '\ufea3' : 'ḩ' # ﺣ
476
- '\ufea4' : 'ḩ' # ﺤ
477
- '\ufea2' : 'ḩ' # ﺢ
478
-
479
- '\u062e' : 'kh' # خ
480
- '\ufea7' : 'kh' # ﺧ
481
- '\ufea8' : 'kh' # ﺨ
482
- '\ufea6' : 'kh' # ﺦ
483
-
484
- '\u062f' : 'd' # د
485
- '\ufeaa' : 'd' # ﺪ
486
-
487
- '\u0630' : 'dh' # ذ
488
- '\ufeac' : 'dh' # ﺬ
489
-
490
- '\u0631' : 'r' # ر
491
- '\ufeae' : 'r' # ﺮ
492
-
493
- '\u0632' : 'z' # ز
494
- '\ufeb0' : 'z' # ﺰ
495
-
496
- '\u0633' : 's' # س
497
- '\ufeb3' : 's' # ﺳ
498
- '\ufeb4' : 's' # ﺴ
499
- '\ufeb2' : 's' # ﺲ
500
-
501
- '\u0634' : 'sh' # ش
502
- '\ufeb7' : 'sh' # ﺷ
503
- '\ufeb8' : 'sh' # ﺸ
504
- '\ufeb6' : 'sh' # ﺶ
505
-
506
- '\u0635' : 'ş' # ص
507
- '\ufebb' : 'ş' # ﺻ
508
- '\ufebc' : 'ş' # ﺼ
509
- '\ufeba' : 'ş' # ﺺ
510
-
511
- '\u0636' : 'ḑ' # ض
512
- '\ufebf' : 'ḑ' # ﺿ
513
- '\ufec0' : 'ḑ' # ﻀ
514
- '\ufebe' : 'ḑ' # ﺾ
515
-
516
- '\u0637' : 'ţ' # ط
517
- '\ufec3' : 'ţ' # ﻃ
518
- '\ufec4' : 'ţ' # ﻄ
519
- '\ufec2' : 'ţ' # ﻂ
520
-
521
- '\u0638' : 'z̧' # ظ
522
- '\ufec7' : 'z̧' # ﻇ
523
- '\ufec8' : 'z̧' # ﻈ
524
- '\ufec6' : 'z̧' # ﻆ
525
-
526
- '\u0639' : '‘' # ع
527
- '\ufecb' : '‘' # ﻋ
528
- '\ufecc' : '‘' # ﻌ
529
- '\ufeca' : '‘' # ﻊ
530
-
531
- '\u063a' : 'gh' # غ
532
- '\ufecf' : 'gh' # ﻏ
533
- '\ufed0' : 'gh' # ﻐ
534
- '\ufece' : 'gh' # ﻎ
535
-
536
- '\u0641' : 'f' # ف
537
- '\ufed3' : 'f' # ﻓ
538
- '\ufed4' : 'f' # ﻔ
539
- '\ufed2' : 'f' # ﻒ
540
-
541
- '\u0642' : 'q' # ق
542
- '\ufed7' : 'q' # ﻗ
543
- '\ufed8' : 'q' # ﻘ
544
- '\ufed6' : 'q' # ﻖ
545
-
546
- '\u0643' : 'k' # ك
547
- '\ufedb' : 'k' # ﻛ
548
- '\ufedc' : 'k' # ﻜ
549
- '\ufeda' : 'k' # ﻚ
550
-
551
- '\u0644' : 'l' # ل
552
- '\ufedf' : 'l' # ﻟ
553
- '\ufee0' : 'l' # ﻠ
554
- '\ufede' : 'l' # ﻞ
555
-
556
- '\u0645' : 'm' # م
557
- '\ufee3' : 'm' # ﻣ
558
- '\ufee4' : 'm' # ﻤ
559
- '\ufee2' : 'm' # ﻢ
560
-
561
- '\u0646' : 'n' # ن
562
- '\ufee7' : 'n' # ﻧ
563
- '\ufee8' : 'n' # ﻨ
564
- '\ufee6' : 'n' # ﻦ
565
-
566
- '\u0647' : 'h' # ه
567
- '\ufeeb' : 'h' # ﻫ
568
- '\ufeec' : 'h' # ﻬ
569
- '\ufeea' : 'h' # ﻪ
570
-
571
- '\u0648' : 'w' # و
572
- '\ufeee' : 'w' # ﻮ
573
-
574
- '\u064a' : 'y' # ي
575
- '\ufef3' : 'y' # ﻳ
576
- '\ufef4' : 'y' # ﻴ
577
- '\ufef1' : 'y' # ﻱ
578
-
579
-
580
- # NUMERALS
581
-
582
- # Although Perso-Arabic script is written from right to left, numerical expressions, e.g. ۱۹٦۸ → 1968, are written from left to right.
583
- '۰': '0'
584
- '۱': '1'
585
- '۲': '2'
586
- '۳': '3'
587
- '٤': '4'
588
- '٥': '5'
589
- '٦': '6'
590
- '۷': '7'
591
- '۸': '8'
592
- '۹': '9'