Browse Source

Merge branch 'development'

master
Reece H. Dunn 12 years ago
parent
commit
1c76a958b4

+ 28
- 28
dictsource/bn_list View File

@@ -9,20 +9,20 @@ _2 d:UI
_3 t'i:n
_4 c'a:@'r
_5 ,pa~c
_6 ch'O:j
_6 c#'O:j
_7 S'a:t
_8 'a:th.
_8 'a:t.#
_9 n'O:j

_10 d'O:S
_11 a'g'a:rO:
_12 b'a:rO:
_13 t'a:rO:
_14 ch:O:d'dO:
_14 c#:O:d'dO:
_15 p'O:n'e:rO:
_16 S'o:lO:
_17 SO:t'e:rO:
_18 a:th'e:rO:
_18 a:t#'e:rO:
_19 U'n'IS

_20 kU:'ri
@@ -31,9 +31,9 @@ _22 b'a:IS
_23 t'e:IS
_24 c'O:b'bIS
_25 pa~O:c'IS
_26 ch'a:'bb'IS
_26 c#'a:'bb'IS
_27 Sa:ta:S
_28 ath'a:S
_28 at#'a:S
_29 Unt'rIs
_30 t'i:rIS

@@ -42,7 +42,7 @@ _32 bat:'rIS
_33 tE't'rIS
_34 ca~o:u:t'rIS
_35 pa~O:it'rIS
_36 cha'trIS
_36 c#a'trIS
_37 Sa~it'rIS
_38 at'tr'IS
_39 U'nO:cO:l'IS
@@ -53,7 +53,7 @@ _42 bi'al'lIS
_43 te:ta:l'lIS
_44 cu:a:l'lIS
_45 paI'nta:l'lIS
_46 che:co:l'lIS
_46 c#e:co:l'lIS
_47 Sat'co:l'lIs
_48 at'co:l'lIS
_49 Uno:pan'ca:S
@@ -64,18 +64,18 @@ _52 ba:h@n'no:
_53 t'Ip'pan'no:
_54 cu:wan'no:
_55 po:n'ca:n'no:
_56 chh@p:'an'no:
_56 c#h@p:'an'no:
_57 Sa:ta:n'no:
_58 ath'a:n'no:
_59 Uno:s'ath
_58 at#'a:n'no:
_59 Uno:s'at#

_60 s'a:th.
_60 s'a:t.#
_61 e:k'so:t'tI
_62 ba:so:t'tI
_63 te:so:t'tI
_64 ca~o:u:so:t'tI
_65 pa~I'so:t'tI
_66 che:so:t'tI
_66 c#e:so:t'tI
_67 Sat'so:t'tI
_68 atso:t'ti
_69 ,Uno:Sat'to:r
@@ -85,8 +85,8 @@ _71 e:kat'to:r
_72 ba:hat'to:r
_73 tIat'to:r
_74 cu:at'to:r
_75 pa~chat'to:r
_76 chI'at:to:r
_75 pa~c#at'to:r
_76 c#I'at:to:r
_77 Sa:t@'t:o:r
_78 atat'to:r
_79 ,Uno:a:Si:
@@ -97,7 +97,7 @@ _82 bI'ra:Si:
_83 tIra:Si:
_84 cu:ra:Si:
_85 pa~ca:Si:
_86 chIa:Si:
_86 c#Ia:Si:
_87 Sa:ta:Si:
_88 O:sto:a:Si:
_89 Uno:no:b'bo:I
@@ -108,43 +108,43 @@ _92 bIra:no:b'bo:I
_93 tIr'a:no:b'bo:I
_94 cu:r'a:no:b'bo:I
_95 pa~ca:no:b'bo:I
_96 chIa:no:b'bo:I
_96 c#Ia:no:b'bo:I
_97 S@ta:no:b'bo:I
_98 ata:no:b'bo:I
_99 nIra:no:b'bo:I

_0C SO:
_0M1 h@z'a:r
_0M2 l'a:kh
_0M2 l'a:k#
_0M3 ko:tI
_0M4 o:r'bu:d
_dpt d@so:mIk

// Single consonants
ক k@
খ kh@
খ k#@
গ g@
ঘ gh@
ঘ g#@
ঙ N'g
চ c@
ছ ch@
ছ c#@
জ J@
ঝ Jh@
ঝ J#@
ঞ n^@
ট t.@
ঠ th.@
ঠ t.#@
ড d.@
ঢ dh.@
ঢ d.#@
ণ n.@ // retroflex n.@
ত t@
থ th@
থ t#@
দ d@
ধ dh@
ধ d#@
ন n@
প p@
ফ ph@
ফ p#@
ব b@
ভ bh@
ভ b#@
ম m@
য় O:j
য J@

+ 37
- 36
dictsource/bn_rules View File

@@ -128,12 +128,12 @@
.group ক
ক k@
ক (B k
ক্য (्য kja:
ক্ষ kh'@
ক্য (्য kja:
ক্ষ k#'@

.group খ
খ khV
খ (B kh@
খ k#V
খ (B k#@
.group গ
গ gV
@@ -141,8 +141,8 @@
ঈ)গ (ল g@

.group ঘ
ঘ ghV
ঘ (B gh
ঘ g#V
ঘ (B g#

.group ঙ
ঙ N'g
@@ -152,66 +152,67 @@
.group চ
চ cV
চ (B c
্য) চ্য c'j@
্য) চ্য c'j@

.group ছ
ছ chV
ছ (B ch@
ছ c#V
ছ (B c#@

.group জ
জ J@
জ (B J@
্) জ zV
জ (B J@
জ (B J@
্) জ zV
জ (B J@

.group ঝ
ঝ Jh@
ঝ (B Jh@
ঝ J#@
ঝ (B J#@

.group ঞ
ঞ n^V
ঞ্ (B n^
.group ট
ট tV
ট (B tV
ট (्য় t.j@
t.V
ট (B t.V
ট (्য় t.j@

.group ঠ
ঠ thV
ঠ (B th.
ঠ t.#V
ঠ (B t.#

.group ড
ড d.V
ড (B d.

.group ঢ
ঢ dh.V
ঢ (B dh.
d.#V
ঢ (B d.#
.group ণ
ণ n.V // (temporary) same as dental [n]
ণ (B n.
ণ্ম n.m
ণ্ম n.m


.group ত
ত t@
ত (B t@
ত (B t@
.group থ
থ th@
থ (B th.
ক) থ (ন th@
থ t#@
থ (B t#
ক) থ (ন t#@

.group দ
দ d@
দ (B d.
দ (B d
ব) দ (ল d@

.group ধ
ধ dh@
ধ (B dh.
সা) ধ (ন dh@
ধ d#@
ধ (B d#
সা) ধ (ন d#@

.group ন
ন n@
@@ -229,9 +230,9 @@
প্য (्য p:

.group ফ
ফ ph@
ফ (B ph@
ফ ph@
ফ p#@
ফ (B p#@
ফ p#@

.group ব
@@ -239,8 +240,8 @@
ব (B b@

.group ভ
ভ bh@
ভ (B bh@
ভ b#@
ভ (B b#@

.group ম
ম mV

+ 65
- 65
dictsource/bo_rules View File

@@ -21,9 +21,9 @@
@) ཀ (_ k

.group ཁ
ཁ kha
ཁ (B kh
@) ཁ (_ kh
ཁ k#a
ཁ (B k#
@) ཁ (_ k#

.group ག
ག ga
@@ -31,9 +31,9 @@
@) ག (_ g

.group གྷ
གྷ gha
གྷ (B gh
@) གྷ (_ gh
གྷ g#a
གྷ (B g#
@) གྷ (_ g#

.group ང
ང Na
@@ -46,9 +46,9 @@
@) ཅ (_ c

.group ཆ
ཆ cha
ཆ (B ch
@) ཆ (_ ch
ཆ c#a
ཆ (B c#
@) ཆ (_ c#

.group ཇ
ཇ Ja
@@ -66,9 +66,9 @@
@) ཊ (_ t.

.group ཋ
ཋ th.a
ཋ (B th.
@) ཋ (_ th.
ཋ t.#a
ཋ (B t.#
@) ཋ (_ t.#

.group ཌ
ཌ d.a
@@ -76,9 +76,9 @@
@) ཌ (_ d.

.group ཌྷ
ཌྷ dh.a
ཌྷ (B dh.
@) ཌྷ (_ dh.
ཌྷ d.#a
ཌྷ (B d.#
@) ཌྷ (_ d.#

.group ཎ
ཎ n.a
@@ -91,9 +91,9 @@
@) ཏ (_ t

.group ཐ
ཐ tha
ཐ (B th
@) ཐ (_ th
ཐ t#a
ཐ (B t#
@) ཐ (_ t#

.group ད
ད da
@@ -101,9 +101,9 @@
@) ད (_ d

.group དྷ
དྷ dha
དྷ (B dh
@) དྷ (_ dh
དྷ d#a
དྷ (B d#
@) དྷ (_ d#

.group ན
ན na
@@ -116,9 +116,9 @@
@) པ (_ p

.group ཕ
ཕ pha
ཕ (B ph
@) ཕ (_ ph
ཕ p#a
ཕ (B p#
@) ཕ (_ p#

.group བ
བ ba
@@ -126,9 +126,9 @@
@) བ (_ b

.group བྷ
བྷ bha
བྷ (B bh
@) བྷ (_ bh
བྷ b#a
བྷ (B b#
@) བྷ (_ b#

.group མ
མ ma
@@ -141,9 +141,9 @@
@) ཙ (_ ts

.group ཚ
ཚ tsha
ཚ (B tsh
@) ཚ (_ tsh
ཚ ts#a
ཚ (B ts#
@) ཚ (_ ts#

.group ཛ
ཛ dza
@@ -151,9 +151,9 @@
@) ཛ (_ dz

.group ཛྷ
ཛྷ dzha
ཛྷ (B dzh
@) ཛྷ (_ dzh
ཛྷ dz#a
ཛྷ (B dz#
@) ཛྷ (_ dz#

.group ཝ
ཝ wa
@@ -245,16 +245,16 @@
ྐ (B k
@) ྐ (_ k

ྑ kha
ྑ (B kh
@) ྑ (_ kh
ྑ k#a
ྑ (B k#
@) ྑ (_ k#

ྒ ga
ྒ (B g
@) ྒ (_ g

ྒྷ gha
@) ྒྷ (_ gh
ྒྷ g#a
@) ྒྷ (_ g#

ྔ Na
ྔ (B N
@@ -264,9 +264,9 @@
ྕ (B c
@) ྕ (_ c

ྖ cha
ྖ (B ch
@) ྖ (_ ch
ྖ c#a
ྖ (B c#
@) ྖ (_ c#

ྗ Ja
ྗ (B J
@@ -280,17 +280,17 @@
ྚ (B t.
@) ྚ (_ t.

ྛ th.a
ྛ (B th.
@) ྛ (_ th.
ྛ t.#a
ྛ (B t.#
@) ྛ (_ t.#

ྜ d.a
ྜ (B d.
@) ྜ (_ d.

ྜྷ dh.a
ྜྷ (B dh.
@) ྜྷ (_ dh.
ྜྷ d.#a
ྜྷ (B d.#
@) ྜྷ (_ d.#

ྞ n.a
ྞ (B n.
@@ -300,17 +300,17 @@
ྟ (B t
@) ྟ (_ t

ྠ tha
ྠ (B th
@) ྠ (_ th
ྠ t#a
ྠ (B t#
@) ྠ (_ t#

ྡ da
ྡ (B d
@) ྡ (_ d

ྡྷ dha
ྡྷ (B dh
@) ྡྷ (_ dh
ྡྷ d#a
ྡྷ (B d#
@) ྡྷ (_ d#

ྣ na
ྣ (B n
@@ -320,17 +320,17 @@
ྤ (B p
@) ྤ (_ p

ྥ pha
ྥ (B ph
@) ྥ (_ ph
ྥ p#a
ྥ (B p#
@) ྥ (_ p#

ྦ ba
ྦ (B b
@) ྦ (_ b

ྦྷ bha
ྦྷ (B bh
@) ྦྷ (_ bh
ྦྷ b#a
ྦྷ (B b#
@) ྦྷ (_ b#

ྨ ma
ྨ (B m
@@ -340,17 +340,17 @@
ྩ (B ts
@) ྩ (_ ts

ྪ tsha
ྪ (B tsh
@) ྪ (_ tsh
ྪ ts#a
ྪ (B ts#
@) ྪ (_ ts#

ྫ dza
ྫ (B dz
@) ྫ (_ dz

ྫྷ dzha
ྫྷ (B dzh
@) ྫྷ (_ dzh
ྫྷ dz#a
ྫྷ (B dz#
@) ྫྷ (_ dz#

ྭ wa
ྭ (B w

+ 1
- 0
dictsource/de_list View File

@@ -97,6 +97,7 @@ x Iks
_ar aR'AbIS
_cyr ky:R'IlIS
_he hEbr'E:IS
_zh Ci:n'e:zIS


// Numbers

+ 30
- 30
dictsource/dv_list View File

@@ -8,10 +8,10 @@ _0 s'umeI
_1 e'keI
_2 d'eI
_3 tineI
_4 ha'tha'reI
_4 ha't#a'reI
_5 fa'heI
_6 ha'eI
_7 ha'theI
_7 ha't#eI
_8 a'SeI
_9 n'uaeI
_10 d'ihaeI
@@ -19,11 +19,11 @@ _10 d'ihaeI
_11 e'gj'a:r@1 //egaara
_12 b'ar@2 //baara
_13 t'E:r@2 //theyra
_14 ch'O:d@2 //saada (d like in _2)
_14 c#'O:d@2 //saada (d like in _2)
_15 p'Vndr@2 //fanara
_16 s'o:l@2 //soalha lh like in ޅ
_17 s'Vt:r@2 //sathaara
_18 Vth.:'a:r@2 //ashaara
_18 Vt.#:'a:r@2 //ashaara
_19 Unn'Is //navaara

_20 b'i:s //vihi (we he)
@@ -32,9 +32,9 @@ _22 b'a:Is //baa wees
_23 t'e:Is //tei wees
_24 c'O:bIs sav wees
_25 p@c:'Is //fansavees
_26 ch@bb'i:rs // sabbees
_26 c#@bb'i:rs // sabbees
_27 s@t:'a:Is // sathawees
_28 ath:'a:Is // asha wees
_28 at#:'a:Is // asha wees
_29 Unt'Is // ona thirees
_30 t'i:s // thirees

@@ -43,7 +43,7 @@ _32 bat:'Is // eg. 32 = thirees (30) eke (1)
_33 tE~t'Is // E~ ?
_34 cO~t'Is
_35 pE~t'Is
_36 chaT'tIs
_36 c#aT'tIs
_37 sE~t'Is
_38 art'Is
_39 Unta:l'Is
@@ -54,7 +54,7 @@ _42 baIa:l'Is
_43 tE~ta:l'Is
_44 cO:wa:l'Is
_45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 sE~ta:l'Is
_48 arta:l'Is
_49 'Un^ca:s
@@ -64,32 +64,32 @@ _51 Ikj'a:wVn
_52 b'a:wVn
_53 t'IrpVn
_54 c'Ou:wVn
_55 p'achpVn
_56 chh@p:'Vn
_55 p'ac#pVn
_56 c#h@p:'Vn
_57 sVt:'a:w@n
_58 ath:'a:w@n
_59 Uns'Vth
_58 at#:'a:w@n
_59 Uns'Vt#

_60 s'a:th. //fas dho (ދ) lhas
_61 'Iks@th.
_62 b'a:s@th.
_63 t'Irs@th.
_64 c'O~s@th.
_65 paIns@th.
_66 ch'Ija:s@th.
_67 s'Vrs@th.
_68 ars@th.
_60 s'a:t.# //fas dho (ދ) lhas
_61 'Iks@t.#
_62 b'a:s@t.#
_63 t'Irs@t.#
_64 c'O~s@t.#
_65 paIns@t.#
_66 c#'Ija:s@t.#
_67 s'Vrs@t.#
_68 ars@t.#
_69 Un@h,at:'Vr:

_70 sat:'Vr: // hai dhiha
_71 Ikhat:'Vr:
_71 Ik#at:'Vr:
_72 b@hat:'Vr:
_73 tIhat:'Vr:
_74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 chIhat:'Vr:
_75 pac#,at:'Vr:
_76 c#Ihat:'Vr:
_77 s@t@hat:'Vr:
_78 athhat:'Vr:
_78 at#hat:'Vr:
_79 ,Un^Ia:s'i:

_80 ,Vss'i: // addiha
@@ -98,9 +98,9 @@ _82 baIa:s'i:
_83 tIra:s'i:
_84 cO:ra:s'i:
_85 pI'ca:s'i:
_86 chIja:s'i:
_86 c#Ija:s'i:
_87 sVt:a:s'i:
_88 ath:a:s'i:
_88 at#:a:s'i:
_89 nVwa:s'i:

_90 nVb:'e: nuvadhiha
@@ -109,12 +109,12 @@ _92 b'a:n@we:
_93 tIr'a:n@we:
_94 cO:r'a:m@we:
_95 p@c'a:n@we:
_96 chIj'a:n@we:
_96 c#Ij'a:n@we:
_97 s@t:'a:n@we:
_98 ath:'a:n@we:
_98 at#:'a:n@we:
_99 nIn^j'a:n@we:

_0C sa'theIka //satheyka (th like them)
_0C sa't#eIka //satheyka (th like them)
_0M1 h@z'a:r (haas)
_0M2 l'a:kh // lakka
_0M3 cr'ore //curoadu

+ 30
- 14
dictsource/en_list View File

@@ -127,7 +127,7 @@ _, k0m@
_- h,aIf@n
?3 _- daS
_. d0t
?3_. pi@rI@d
?3_.p pi@rI@d
_: koUl@n
_; sEmIk'oUl@n
_< lEsDan
@@ -276,7 +276,8 @@ _my mj'A:nmA@
_ka dZ'O@dZ@n
_ko k3r'i@n
_eth i:TI'0pIk

_ja dZ'ap@ni:z
_zh tS'aIni:z

// Cyrillic letters
а a
@@ -385,6 +386,18 @@ _eth i:TI'0pIk
ר ReS_
ש Sin_
ת tav_
ְ SvA:
ֱ E
ֲ a
ֳ o
ִ i:
ֵ E
ֶ E
ַ a
ָ a
ֹ o
ֻ u
ּ d'agES


// phonetic modifiers
@@ -4184,19 +4197,22 @@ like laIk $strend2


// General American
?3 agile adZ@L
?3 docile doUs@L
?3 facile fas@L
?3 fertile f3:t@L
?3 fragile fradZ@L
?3 futile fju:t@L
?3 hostile h0st@L
?3 mobile moUb@L
agile $alt2
docile $alt2
ductile $alt2
facile $alt2
fertile $alt2
fragile $alt2
futile $alt2
hostile $alt2
mobile $alt2
?3 missile mIs@L
?3 projectile pr@dZEkt@L
?3 puerile pjU@r@L
?3 sterile stEr@L
?3 virile vIr@L
projectile $alt2
puerile $alt2
senile $alt2
sterile $alt2
tensile $alt2
virile $alt2
?3 volatile v0la#t@L



+ 4
- 2
dictsource/en_rules View File

@@ -1275,7 +1275,7 @@
_) be (gg bE
_) belarus bEl@r'u:s
_) be (lC bE
_) be (lli bI2
_) be (llig bI2
_) be (sC bI2
_) be (stia bE
_) be (tB bE
@@ -2681,7 +2681,7 @@
for (see f%O@
for (ward f'o@ // straightforward
ft (en f
&) ful (_S3 f@L
&) ful (_S3i f@L
&) fully (_S5 f@li
&) fulness (_S7 f@Ln@s

@@ -2921,6 +2921,7 @@
nt) il (_ @L
@v) il (_ @L
@) ila (_ 'Il@
?3 &) ile (_$w_alt2 @L
_C) i (lage aI
_d) i (lat %aI
l) il (ah_ aIl
@@ -4401,6 +4402,7 @@
os (al_ 'oUz
_l) os (e u:z
ose (_ oUz
c) ose (_ oUs
purp) ose @s
_r) os (e# oUz
c) os (ec oUs

+ 49
- 42
dictsource/hi_list View File

@@ -8,9 +8,9 @@ _2 d'o:
_3 t'i:n
_4 c:'a:r:
_5 'pa~c
_6 ch'@2
_6 c#'@2
_7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'O:
?3 _9 n'aU

@@ -18,11 +18,11 @@ _10 d'Vs
_11 gj'a:r-ah
_12 b'a:rah
_13 t'e:r@2h
_14 ch'O:d@2h
_14 c#'O:d@2h
_15 p'Vndr@2h
_16 s'o:l@2h
_17 sVtr@2h
_18 a:th:arah
_18 a:t#:arah
_19 Unn'Is

_20 b'i:s
@@ -31,9 +31,9 @@ _22 b'a:Is
_23 t'ue:Is
_24 c'O:bIs
_25 p@c:'Is
_26 ch@bb'i:rs
_26 c#@bb'i:rs
_27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 ,Unt'Is
_30 t'i:s

@@ -42,7 +42,7 @@ _32 b'at:'I'S
_33 tE~t'Is // E~ ?
_34 cO~t'Is
_35 pE~t'Is
_36 chaT'tIs
_36 c#aT'tIs
_37 sE~t'Is
_38 art'Is
_39 Unta:l'Is
@@ -53,7 +53,7 @@ _42 baIa:l'Is
_43 tE~ta:l'Is
_44 cO:wa:l'Is
_45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 sE~ta:l'Is
_48 arta:l'Is
_49 'Un^ca:s
@@ -63,32 +63,32 @@ _51 Ikj'a:wVn
_52 b'a:wVn
_53 t'IrpVn
_54 c'Ou:wVn
_55 p'achpVn
_56 chh@p:'Vn
_55 p'ac#pVn
_56 c#h@p:'Vn
_57 santa:'w@n
_58 ath:a:'w@n
_59 Uns'Vth
_60 s'a:th.
_61 'Iks@th.
_62 b'a:s@th.
_63 t'Irs@th.
_64 cO:'s@th.
_65 paI's@th.
_66 ch'Ija:s@th.
_67 s'Vrs@th.
_68 ars@th.
_58 at#:a:'w@n
_59 Uns'Vt#
_60 s'a:t.#
_61 'Iks@t.#
_62 b'a:s@t.#
_63 t'Irs@t.#
_64 cO:'s@t.#
_65 paI's@t.#
_66 c#'Ija:s@t.#
_67 s'Vrs@t.#
_68 ars@t.#
_69 Un@h,at:'Vr:

_70 sat:'Vr:
_71 Ikhat:'Vr:
_71 Ik#at:'Vr:
_72 b@hat:'Vr:
_73 tIhat:'Vr:
_74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 chIhat:'Vr:
_75 pac#,at:'Vr:
_76 c#Ihat:'Vr:
_77 s@t@hat:'Vr:
_78 athhat:'Vr:
_78 at#hat:'Vr:
_79 ,Un^Ia:s'i:

_80 ,Vss'i:
@@ -97,9 +97,9 @@ _82 baIa:s'i
_83 tIra:s'i
_84 cO:ra:s'i
_85 pI'ca:s'i
_86 chIja:s'i
_86 c#Ija:s'i
_87 sVt:a:s'i
_88 ath:a:s'i
_88 at#:a:s'i
_89 nVwa:s'i

_90 nVb:'e:
@@ -108,50 +108,50 @@ _92 b'a:n@we:
_93 tIr'a:n@we:
_94 cO:r'a:m@we:
_95 p@c'a:n@we:
_96 chIj'a:n@we:
_96 c#Ij'a:n@we:
_97 s@t:'a:n@we:
_98 ath:'a:n@we:
_98 at#:'a:n@we:
_99 nIn^j'a:n@we:

_0C s'O:
_0M1 h@J,a:r
_0M2 l'a:kh
_0M2 l'a:k#
_0M3 k@ro:r.V
_0M4 'Vr@b
_0M5 kh'Vr@b
_0M5 k#'Vr@b
_dpt _d@s@ml'o:_ // ?? what is Hi for "." ?

// Single consonants
क k@
क़ q@
ख kh@
ख k#@
ख़ x@
ग g@
ग़ Q@
घ gh@
घ g#@
ङ N@
च c@
छ ch@
छ c#@
ज J@
ज़ z@
झ Jh@
झ J#@
ञ n^@
ट t.@
ठ th.@
ठ t.#@
ड d.@
ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@
त t@
थ th@
थ t#@
द d@
ध dh@
ध d#@
न n@
प p@
फ ph@
फ p#@
फ़ f@
ब b@
भ bh@
भ b#@
म m@
य j@
र r@
@@ -194,6 +194,13 @@ _dpt _d@s@ml'o:_ // ?? what is Hi for "." ?
ॣ #X2l-:
ॐ #X1o~m

_?? Vks.@r
_a ej
_b bi:
_c si:
_d di:
_e i:
_f Ef

// Punctuation
। dVn.d.V

+ 20
- 20
dictsource/hi_rules View File

@@ -172,8 +172,8 @@
क़ (B q

.group ख
ख khV
ख (B kh
ख k#V
ख (B k#
ख़ xV
ख़ (B x

@@ -184,8 +184,8 @@
ग़ (B Q

.group घ
घ ghV
घ (B gh
घ g#V
घ (B g#

.group ङ
ङ NV
@@ -198,8 +198,8 @@
च (्य c:

.group छ
छ chV
छ (B ch
छ c#V
छ (B c#

.group ज
ज JV
@@ -208,8 +208,8 @@
ज़ (B z

.group झ
झ JhV
झ (B Jh
झ J#V
झ (B J#

.group ञ
ञ n^V
@@ -222,8 +222,8 @@
ट (्य t.:

.group ठ
ठ th.V
ठ (B th.
ठ t.#V
ठ (B t.#

.group ड
ड d.V
@@ -233,8 +233,8 @@
ड़ (B r.

.group ढ
ढ dh.V
ढ (B dh.
ढ d.#V
ढ (B d.#
ढ़ r.hV // nukta (should retroflex flap)
ढ़ (B r.h // nukta

@@ -249,16 +249,16 @@
त (्य t:

.group थ
थ thV
थ (B th
थ t#V
थ (B t#

.group द
द dV
द (B d

.group ध
ध dhV
ध (B dh
ध d#V
ध (B d#

.group न
न nV
@@ -276,8 +276,8 @@
प (्य p:

.group फ
फ phV
फ (B ph
फ p#V
फ (B p#
फ़ fV
फ़ (B f

@@ -286,8 +286,8 @@
ब (B b

.group भ
भ bhV
भ (B bh
भ b#V
भ (B b#

.group म
म mV

+ 4
- 3
dictsource/hu_list View File

@@ -409,7 +409,7 @@ _tld tildE

// characters
_#9 tAb
_#32 so:kYz
_#32 s'o:kYz
_cap n'AJ_|
_?? kAR2AktEr||ko:d // unknown characters (change this)

@@ -5382,7 +5382,7 @@ _¤ pe:nznEmjEl
® bEjEJzEt:
™ ve:djEJ
_` tompA
_  so:kYz
_  s'o:kYz
_« bElSY:|bAl|ide:zY:jEl
_» bElSY:|jobb|ide:zY:jEl
_­ la:JkYtY:jEl
@@ -5423,8 +5423,9 @@ _¡ AlSo:indEks

// Alphabets
_ar 'AR2Ab
_cry ts'iR2ill
_cyr ts'iR2ill
_he h'e:bER2
_zh k'i:nAi


// Main Exceptions List

+ 8
- 0
dictsource/hu_rules View File

@@ -459,6 +459,7 @@ shetlan) d (szige d
szaba) d (szem d
_tren) dsz (e d|s
vakon) d (sz d
vé) d (jeggy d

.group dz
fogó) dz (kod ts
@@ -1021,6 +1022,8 @@ szivárvá) ny (játsz n^
_elle) n (jav n
vagyo) n (jog n
nny (elv n|n^
haszo) n (jár n
boszorká) ny (jelet n^

.group o
o o
@@ -1162,6 +1165,7 @@ _tetszé) s S
ki) s (szőlő S
körö) s (szeg S
kolbászo) s S
feldolgozá) s S

.group ss
ssz ss2
@@ -1757,6 +1761,7 @@ fáklyá) sz (ene Sz
pénze) sz (k s
ellenállá) sz (ón Sz
ré) sz (árás Sz
_te) szts (or st|S

.group t
t t
@@ -1988,6 +1993,7 @@ _tisztele) tj (el tj
zené) tj (átsz tj
szen) tj (akab tj
közérze) tj (aví tj
ké) tj (átszm tj

.group ts
ts (_S2 tS //general rule with word end of ts letters
@@ -2204,6 +2210,8 @@ felira) ts (áv t|S
leme) tsz (vén ts
_cha) tsz (ob t|s
robo) ts (of t|S
merényle) ts (or t|S


.group tt
tt t:

+ 97
- 97
dictsource/kn_list View File

@@ -39,29 +39,29 @@ _?? aks.ara // 'unknown character'
// letter names
ಕ್ ik
ಖ್ ikh
ಖ್ ik#
ಗ್ ig
ಘ್ igh
ಘ್ ig#
ಙ್ iN
ಚ್ ic
ಛ್ ich
ಛ್ ic#
ಜ್ iJ
ಝ್ iJh
ಝ್ iJ#
ಞ್ in^
ಟ್ it.
ಠ್ ith.
ಠ್ it.#
ಡ್ id.
ಢ್ idh.
ಢ್ id.#
ಣ್ in.
ತ್ it
ಥ್ ith
ಥ್ it#
ದ್ id
ಧ್ id.
ಧ್ id#
ನ್ in
ಪ್ ip
ಫ್ iph
ಫ್ ip#
ಬ್ ib
ಭ್ ibh
ಭ್ ib#
ಮ್ im
ಯ್ ij
ರ್ ir
@@ -101,17 +101,17 @@ U+ccd vattu
// symbols
% pratis.ata
! a:scharjachinhe
! a:sc#arjac#inhe
_? aks.ara
. pu:rn.avira:ma
, alpavira:ma
¼ ka:lu
½ ardha
½ ard#a
¾ mukka:lu
(1 / 2) ardha
(1 / 2) ard#a
(1 / 4) ka:lu
(3 / 4) mukka:lu
÷ bha:ga:ka:ra
÷ b#a:ga:ka:ra
& mattu
@@ -125,8 +125,8 @@ _5 'aIdu
_6 'a:ru
_7 'e:l.u
_8 'ent.u
_9 'ombath:u
_1X h'ath:u
_9 'ombat#:u
_1X h'at#:u
_11 hann'ondu
_12 han:erad.u
_13 hadim'u:ru
@@ -135,93 +135,93 @@ _15 hadinaIdu
_16 hadina:ru
_17 hadin'e:l.u
_18 hadin'ent.u
_19 ha'th:'ombath:u
_19 ha't#:'ombat#:u
_2X Ip:ath:u
_21 'Ip:a'th:ondu
_22 Ip:a'th:erad.u
_23 Ip:a'th:m'u:ru
_24 Ip:a'th:n'a:lku
_25 Ip:a'th:'aIdu
_26 Ip:a'th:a:ru
_27 Ip:a'th:e:l.u
_28 Ip:a'th:ent.u
_29 Ip:a'th:ombath:u
_2X Ip:at#:u
_21 'Ip:a't#:ondu
_22 Ip:a't#:erad.u
_23 Ip:a't#:m'u:ru
_24 Ip:a't#:n'a:lku
_25 Ip:a't#:'aIdu
_26 Ip:a't#:a:ru
_27 Ip:a't#:e:l.u
_28 Ip:a't#:ent.u
_29 Ip:a't#:ombat#:u
_3X m'ovath:u
_31 m'ovath:ondu
_32 m'ovatherad.u
_33 m'ovathm'u:ru
_34 m'ovathn'a:lku
_35 m'ovath'aIdu
_36 m'ovatha:ru
_37 m'ovathe:l.u
_38 m'ovathent.u
_39 m'ovathombath:u
_3X m'ovat#:u
_31 m'ovat#:ondu
_32 m'ovat#erad.u
_33 m'ovat#m'u:ru
_34 m'ovat#n'a:lku
_35 m'ovat#'aIdu
_36 m'ovat#a:ru
_37 m'ovat#e:l.u
_38 m'ovat#ent.u
_39 m'ovat#ombat#:u
_4X n'alavath:u
_41 n'alavath:ondu
_42 n'alavatherad.u
_43 n'alavathm'u:ru
_44 n'alavathn'a:lku
_45 n'alavathaIdu
_46 n'alavatha:ru
_47 n'alavathe:l.u
_48 n'alavathent.u
_49 n'alavathombath:u
_4X n'alavat#:u
_41 n'alavat#:ondu
_42 n'alavat#erad.u
_43 n'alavat#m'u:ru
_44 n'alavat#n'a:lku
_45 n'alavat#aIdu
_46 n'alavat#a:ru
_47 n'alavat#e:l.u
_48 n'alavat#ent.u
_49 n'alavat#ombat#:u
_5X 'aIvath:u
_51 aIvath:ondu
_52 aIvatherad.u
_53 aIvathm'u:ru
_54 aIvathn'a:lku
_55 aIvath'aIdu
_56 aIvatha:ru
_57 aIvathe:l.u
_58 aIvathent.u
_59 aIvathombath:u
_6X 'aravath:u
_61 aravath:ondu
_62 aravatherad.u
_63 aravathm'u:ru
_64 aravathn'a:lku
_65 aravathaIdu
_66 aravatha:ru
_67 aravathe:l.u
_68 aravathent.u
_69 aravathombath:u
_5X 'aIvat#:u
_51 aIvat#:ondu
_52 aIvat#erad.u
_53 aIvat#m'u:ru
_54 aIvat#n'a:lku
_55 aIvat#'aIdu
_56 aIvat#a:ru
_57 aIvat#e:l.u
_58 aIvat#ent.u
_59 aIvat#ombat#:u
_6X 'aravat#:u
_61 aravat#:ondu
_62 aravat#erad.u
_63 aravat#m'u:ru
_64 aravat#n'a:lku
_65 aravat#aIdu
_66 aravat#a:ru
_67 aravat#e:l.u
_68 aravat#ent.u
_69 aravat#ombat#:u
_7X 'Ep:ath:u
_71 Ep:ath:ondu
_72 Ep:atherad.u
_73 Ep:athm'u:ru
_74 Ep:athn'a:lku
_75 Ep:athaIdu
_76 Ep:atha:ru
_77 Ep:athe:l.u
_78 Ep:athent.u
_79 Ep:athombath:u
_8X 'Embath:u
_81 Embath:ondu
_82 Embatherad.u
_83 Embathm'u:ru
_84 Embathn'a:lku
_85 EmbathaIdu
_86 Embatha:ru
_87 Embathe:l.u
_88 Embathent.u
_89 Embathombath:u
_7X 'Ep:at#:u
_71 Ep:at#:ondu
_72 Ep:at#erad.u
_73 Ep:at#m'u:ru
_74 Ep:at#n'a:lku
_75 Ep:at#aIdu
_76 Ep:at#a:ru
_77 Ep:at#e:l.u
_78 Ep:at#ent.u
_79 Ep:at#ombat#:u
_8X 'Embat#:u
_81 Embat#:ondu
_82 Embat#erad.u
_83 Embat#m'u:ru
_84 Embat#n'a:lku
_85 Embat#aIdu
_86 Embat#a:ru
_87 Embat#e:l.u
_88 Embat#ent.u
_89 Embat#ombat#:u
_9X th'ombath:u
_91 th'ombath:ondu
_92 th'ombath:erad.u
_93 th'ombathm'u:ru
_94 th'ombathn'a:lku
_95 th'ombathaIdu
_96 th'ombatha:ru
_97 th'ombathe:l.u
_98 th'ombathent.u
_99 th'ombathombath:u
_9X t#'ombat#:u
_91 t#'ombat#:ondu
_92 t#'ombat#:erad.u
_93 t#'ombat#m'u:ru
_94 t#'ombat#n'a:lku
_95 t#'ombat#aIdu
_96 t#'ombat#a:ru
_97 t#'ombat#e:l.u
_98 t#'ombat#ent.u
_99 t#'ombat#ombat#:u
_0C0 n'u:ru
_1C0 nu:ru

+ 20
- 20
dictsource/kn_rules View File

@@ -24,16 +24,16 @@
ಕ (B k

.group ಖ
ಖ kha
ಖ (B kh
ಖ k#a
ಖ (B k#

.group ಗ
ಗ ga
ಗ (B g

.group ಘ
ಘ gha
ಘ (B gh
ಘ g#a
ಘ (B g#

.group ಙ
ಙ Na
@@ -44,8 +44,8 @@
ಚ (B c

.group ಛ
ಛ cha
ಛ (B ch
ಛ c#a
ಛ (B c#

.group ಜ
ಜ Ja
@@ -54,8 +54,8 @@
ಜ಼ (B z

.group ಝ
ಝ Jha
ಝ (B Jh
ಝ J#a
ಝ (B J#

.group ಞ
ಞ n^a
@@ -66,16 +66,16 @@
ಟ (B t.

.group ಠ
ಠ th.a
ಠ (B th.
ಠ t.#a
ಠ (B t.#

.group ಡ
ಡ d.a
ಡ (B d.

.group ಢ
ಢ dh.a
ಢ (B dh.
ಢ d.#a
ಢ (B d.#

.group ಣ
ಣ n.a
@@ -86,16 +86,16 @@
ತ (B t

.group ಥ
ಥ tha
ಥ (B th
ಥ t#a
ಥ (B t#

.group ದ
ದ da
ದ (B d

.group ಧ
ಧ dha
ಧ (B dh
ಧ d#a
ಧ (B d#

.group ನ
ನ na
@@ -106,8 +106,8 @@
ಪ (B p

.group ಫ
ಫ pha
ಫ (B ph
ಫ p#a
ಫ (B p#
ಫ಼ fa // nukta
ಫ಼ (B f

@@ -116,8 +116,8 @@
ಬ (B b

.group ಭ
ಭ bha
ಭ (B bh
ಭ b#a
ಭ (B b#

.group ಮ
ಮ ma

+ 3
- 3
dictsource/ml_list View File

@@ -8,8 +8,8 @@
U+d02 'a#m
U+d03 visarg@m
U+d3d avagraha
U+d4d chandraka:r@m
U+d4e chil.acharam // ??
U+d4d c#andraka:r@m
U+d4e c#il.ac#aram // ??

ൺ _'yn. // chillu consonants
ൻ _in
@@ -79,7 +79,7 @@ z zEd
& samuccaj@m
_. bindu
_, aNkuS;@m
_; ro:dhini
_; ro:d#ini
_? co:dj@cihn@m
_! a:S;c@rjacihn@m


+ 21
- 21
dictsource/ml_rules View File

@@ -36,16 +36,16 @@
ക്ക (B k:

.group ഖ
ഖ kha
ഖ (B kh
ഖ k#a
ഖ (B k#

.group ഗ
ഗ ga
ഗ (B g

.group ഘ
ഘ gha
ഘ (B gh
ഘ g#a
ഘ (B g#

.group ങ
ങ Na
@@ -56,16 +56,16 @@
ച (B c

.group ഛ
ഛ cha
ഛ (B ch
ഛ c#a
ഛ (B c#

.group ജ
ജ Ja
ജ (B J

.group ഝ
ഝ Jha
ഝ (B Jh
ഝ J#a
ഝ (B J#

.group ഞ
ഞ n^a
@@ -81,16 +81,16 @@
ട്ട (B t.:

.group ഠ
ഠ th.a
ഠ (B th.
ഠ t.#a
ഠ (B t.#

.group ഡ
ഡ d.a
ഡ (B d.

.group ഢ
ഢ dh.a
ഢ (B dh.
ഢ d.#a
ഢ (B d.#

.group ണ
ണ n.a
@@ -106,16 +106,16 @@
ത്ത (B t:

.group ഥ
ഥ tha
ഥ (B th
ഥ t#a
ഥ (B t#

.group ദ
ദ da
ദ (B d

.group ധ
ധ dha
ധ (B dh
ധ d#a
ധ (B d#

.group ന
ന na
@@ -131,8 +131,8 @@
പ്പ (B p:

.group ഫ
ഫ pha
ഫ (B p
ഫ p#a
ഫ (B p#

_പ്രൊ) ഫ (സര് fa

@@ -142,8 +142,8 @@
ബ (B b

.group ഭ
ഭ bha
ഭ (B bh
ഭ b#a
ഭ (B b#

.group മ
മ ma
@@ -160,7 +160,7 @@
.group റ
റ R2a
റ (B R2
ന്) റ d#
ന്) റ d2
റ്റ t.t. // ?? R2R2 = t.t.

.group ല

+ 51
- 51
dictsource/ne_list View File

@@ -30,20 +30,20 @@ _2 d'u:,i:
_3 t'i:n
_4 c'a:r:
_5 p'a:nc
_6 ch'@2
_6 c#'@2
_7 s'a:t
_8 'a:th.
_8 'a:t.#
_9 n'V'u:
_10 d'Vs
_11 e:'gh'a:r'V
_11 e:'g#'a:r'V
_12 b'a:r@2
_13 t'e:hr@
_14 ch'O:d@2
_14 c#'O:d@2
_15 p'Vndr@2
_16 s'o:r@2
_17 s'Vtr@2
_18 a'th.'a:r@2
_18 a't.#'a:r@2
_19 U:nn'a:i's
_20 b'i:s
@@ -52,9 +52,9 @@ _22 b'a:Is
_23 t'e:Is
_24 c'O:b'Is
_25 p@c:'Is
_26 ch@b'b'i:s
_26 c#@b'b'i:s
_27 s@t:'a:Is
_28 ath:'a:Is
_28 at#:'a:Is
_29 U:n'Vnt'Is
_30 t'i:s
@@ -63,7 +63,7 @@ _32 b'at:'Is
_33 t'e:t't'i:s
_34 cO~,t'I:s
_35 pE~t'Is
_36 ch@:t't'I:s
_36 c#@:t't'I:s
_37 sE~t'Is
_38 art'Is
_39 U:n'an'c'a:l'i:s
@@ -74,9 +74,9 @@ _42 baIa:l'Is
_43 t'ri:c'a:l'i:s
_44 cO:wa:l'Is
_45 paI'nta:l'Is
_46 chhIja:l'Is
_46 c#hIja:l'Is
_47 s@'d.cta:l'Is
_48 a'th.'c'a:l'Is
_48 a't.#'c'a:l'Is
_49 U'n'an'c'a:s
:
_50 p@c'a:s
@@ -85,20 +85,20 @@ _52 b'a:wVn'n:'V
_53 t'rI:p'an'nV
_54 c'Ou:wVn'nV
_55 p'ac'pVn'nV
_56 chh@p:'Vn'nV
_56 c#h@p:'Vn'nV
_57 s'Vn't:'a:w@n'n':V
_58 a'nth:'a:w@n'n':V
_59 U'n'Vn's'a:th.i:
_60 s'a:th.i:
_61 e:k'as@th.'th.i:
_62 b'E:s@th.':th.'i:
_63 t'r'i:,s@th.'th.'i:
_64 c'O:s@th.'th.'i:
_65 p'E~'s@th.'th.'i:
_66 ch'E's@th.'th.'i:
_67 s'Vt's@th.'th.'i:
_68 a'th.,s@th.'th.'i:
_58 a'nt#:'a:w@n'n':V
_59 U'n'Vn's'a:t.#i:
_60 s'a:t.#i:
_61 e:k'as@t.#'t.#i:
_62 b'E:s@t.#':t.#'i:
_63 t'r'i:,s@t.#'t.#'i:
_64 c'O:s@t.#'t.#'i:
_65 p'E~'s@t.#'t.#'i:
_66 c#'E's@t.#'t.#'i:
_67 s'Vt's@t.#'t.#'i:
_68 a't.#,s@t.#'t.#'i:
_69 U:n'an's'Vtt'ar'i:
_70 s'at't@r'i::
@@ -106,10 +106,10 @@ _71 e:k'ah'at:'Vr:
_72 b@h'att'Vr:
_73 tIjatt:'Vr:
_74 cO:hat:'Vr:
_75 pach,at:'Vr:
_76 ch@'j'ah'at't'Vr:
_75 pac#,at:'Vr:
_76 c#@'j'ah'at't'Vr:
_77 s@t@hatt:'Vr:
_78 athhatt:'Vr:
_78 at#hatt:'Vr:
_79 U'n'a:s'i:
_80 a's's'i:
@@ -118,9 +118,9 @@ _82 baIa:s'i:
_83 trIj'a:s'i:
_84 cO:ra:s'i:
_85 p'ac'a:s'i:
_86 ch@j'a:s'i:
_86 c#@j'a:s'i:
_87 s'V:t'a:s'i:
_88 a'th.:a:s'i:
_88 a't.#:a:s'i:
_89 u:n'a:n'ab'b'e:
_90 n@b'b'e:
@@ -129,24 +129,24 @@ _92 b'aj'a:n@b'b'e:
_93 trIj'a:n@b'b'e:
_94 cO:r'a:n@b'b'e:
_95 p@n'c'a:n@b'b'e:
_96 ch@j'a:n@b'b'e:
_96 c#@j'a:n@b'b'e:
_97 s@n't:'a:n@b'b'e:
_98 a'n'th.'a:n@b'b'e:
_98 a'n't.#'a:n@b'b'e:
_99 U:n'n'a:nsh@je:
_0C s'aj@
_0M1 h@z'a:r@
_0M2 l'a:kh@
_0M2 l'a:k#@
_0M3 k'a'ro:d.@
_0M4 'Vr@b
_0M5 kh'Vr@b'V
_0M5 k#'Vr@b'V
_0M6 n'i:l'
_0M7 p'Vd'm@
_0M8 sh'an,kh@
_0M9 m'ah'a:,sh'ankh@
_0M10 p@r'a:rrd:dh@
_0M8 sh'an,k#@
_0M9 m'ah'a:,sh'ank#@
_0M10 p@r'a:rrd:d#@
_dpt _th'o:plo_
_dpt _t#'o:plo_
// Symbols in Nepali
@@ -157,34 +157,34 @@ _dpt _th'o:plo_
// Single consonants
क k@
क़ q@
ख kh@
ख k#@
ख़ x@
ग g@
ग़ Q@
घ gh@
घ g#@
ङ N@
च c@
छ ch@
छ c#@
ज J@
ज़ z@
झ Jh@
झ J#@
ञ n^@
ट t.@
ठ th.@
ठ t.#@
ड d.@
ड़ r.@
ढ dh.@
ढ d.#@
ण n.@ // retroflex n.@
त t@
थ th@
थ t#@
द d@
ध dh@
ध d#@
न n@
प p@
फ ph@
फ p#@
फ़ f@
ब b@
भ bh@
भ b#@
म m@
य j@
र r@
@@ -222,17 +222,17 @@ _dpt _th'o:plo_
पो $u $pause
हो $u $brk
के k'e,: $brk
दुःख d'u,,kh@
सुख s'u=kh@
दुःख d'u,,k#@
सुख s'u=k#@
जव J'Vv@
राष्ट्रिय r'a:S,t.rI:j@2 $2
सित s'it@
होइन h'oi:n@2
भएन bh'Vj'en@2
भएन b#'Vj'en@2
गएन g'Vj'en@2
खाएन khaj'en@2
खाएन k#aj'en@2
दिएन d'ij'en@2
छुन ch'un'@
छुन c#'un'@
बाट b'a:t.@
अथवा $pause
वा $pause

+ 119
- 119
dictsource/ne_rules View File

@@ -572,13 +572,13 @@
.group ख
ख khV
ख (B kh
?1 ख (_ kh
्) ख (_ kh@/
ख (्ख kh,
खँ khV~'
खॅ khV~'
ख k#V
ख (B k#
?1 ख (_ k#
्) ख (_ k#@/
ख (्ख k#,
खँ k#V~'
खॅ k#V~'
.group ग
ग gV
@@ -590,13 +590,13 @@
गॅ gV~'
.group घ
घ ghV
घ (B gh
?1 घ (_ gh
घ (्घ gh,
्) घ (_ gh@/
घँ ghV~'
घॅ ghV~'
घ g#V
घ (B g#
?1 घ (_ g#
घ (्घ g#,
्) घ (_ g#@/
घँ g#V~'
घॅ g#V~'
.group ङ // Phoneme adjustment suggested
@@ -616,12 +616,12 @@
चॅ cV~'
.group छ
छ chV
छ (B ch
्) छ (C ch@
छ (_ ch@
छँ chV~'
छॅ chV~'
छ c#V
छ (B c#
्) छ (C c#@
छ (_ c#@
छँ c#V~'
छॅ c#V~'
.group ज
ज JV
@@ -633,12 +633,12 @@
्) ज (_ J@/
.group झ // Phoneme adjustment suggested.
झ JhV
झ (B Jh
झँ JhV~'
झॅ JhV~'
झ J#V
झ (B J#
झँ J#V~'
झॅ J#V~'
झ (्झ J,
झ (_ Jh
झ (_ J#
.group ञ // Phoneme adjustment suggested
ञ n^V
@@ -659,13 +659,13 @@
ट (्य t.:
.group ठ
ठ th.V
ठ (B th.
ठँ t.hV~'
ठॅ t.hV~'
ठ (्ठ th.,
्) ठ (_ th.@/
?1 ठ (_ t.h
ठ t.#V
ठ (B t.#
ठँ t.#V~'
ठॅ t.#V~'
ठ (्ठ t.#,
्) ठ (_ t.#@/
?1 ठ (_ t.#
.group ड
ड d.V
@@ -682,14 +682,14 @@
ड़ॅ d.:V~'
.group ढ
ढ dh.V
ढ (B dh.
ढँ d.hV~'
ढॅ d.hV~'
्) ढ (_ dh.@/
?1 ढ (_ d.h
ढ़ d.hV: // nukta
ढ़ (B d.h // nukta
ढ d.#V
ढ (B d.#
ढँ d.#V~'
ढॅ d.#V~'
्) ढ (_ d.#@/
?1 ढ (_ d.#
ढ़ d.#V: // nukta
ढ़ (B d.# // nukta
.group ण
ण n.V // Phoneme adjustment suggested
@@ -709,13 +709,13 @@
?1 त (_ t,
.group थ
थ thV
थँ thV~'
थॅ thV~'
थ (B th
्) थ (_ th@/
थ (्य th,
?1 थ (_ th
थ t#V
थँ t#V~'
थॅ t#V~'
थ (B t#
्) थ (_ t#@/
थ (्य t#,
?1 थ (_ t#
.group द
द dV
@@ -729,12 +729,12 @@
्) द (_ d@/
.group ध
ध dhV
धँ dhV~'
धॅ dhV~'
ध (B dh
?1 ध (_ dh
्) ध (_ dh@/
ध d#V
धँ d#V~'
धॅ d#V~'
ध (B d#
?1 ध (_ d#
्) ध (_ d#@/
.group न
न nV
@@ -763,13 +763,13 @@
्) प (_ p@/
.group फ
फ phV
फँ phV~'
फॅ phV~'
फ (B ph
फ (्न ph:
?1 फ (_ ph
्) फ (_ ph@/
फ p#V
फँ p#V~'
फॅ p#V~'
फ (B p#
फ (्न p#:
?1 फ (_ p#
्) फ (_ p#@/
.group ब
ब bV
@@ -781,12 +781,12 @@
्) ब (_ b@/
.group भ
भ bhV
भँ bhV~'
भॅ bhV~'
भ (B bh
?1 भ (_ bh
भ (्य bh,
भ b#V
भँ b#V~'
भॅ b#V~'
भ (B b#
?1 भ (_ b#
भ (्य b#,
्) भ (_ bh@/
.group म
@@ -1064,65 +1064,65 @@
.group [
[ l'eftbr'ak'et
[ (_A th'ul'ok'osht.@2suru
[ (_C th'ul'ok'osht.@2suru
[ (_० th'ul'ok'osht.@2suru
[ (_१ th'ul'ok'osht.@2suru
[ (_२ th'ul'ok'osht.@2suru
[ (_३ th'ul'ok'osht.@2suru
[ (_४ th'ul'ok'osht.@2suru
[ (_५ th'ul'ok'osht.@2suru
[ (_६ th'ul'ok'osht.@2suru
[ (_७ th'ul'ok'osht.@2suru
[ (_८ th'ul'ok'osht.@2suru
[ (_९ th'ul'ok'osht.@2suru
[ (_A t#'ul'ok'osht.@2suru
[ (_C t#'ul'ok'osht.@2suru
[ (_० t#'ul'ok'osht.@2suru
[ (_१ t#'ul'ok'osht.@2suru
[ (_२ t#'ul'ok'osht.@2suru
[ (_३ t#'ul'ok'osht.@2suru
[ (_४ t#'ul'ok'osht.@2suru
[ (_५ t#'ul'ok'osht.@2suru
[ (_६ t#'ul'ok'osht.@2suru
[ (_७ t#'ul'ok'osht.@2suru
[ (_८ t#'ul'ok'osht.@2suru
[ (_९ t#'ul'ok'osht.@2suru
.group ]
] r'aitbr'ak'et
A_) ] th'ul'ok'osht.@2b'Vnd@2
C_) ] th'ul'ok'osht.@2b'Vnd@2
०_) ] th'ul'ok'osht.@2b'Vnd@2
१_) ] th'ul'ok'osht.@2b'Vnd@2
२_) ] th'ul'ok'osht.@2b'Vnd@2
३_) ] th'ul'ok'osht.@2b'Vnd@2
४_) ] th'ul'ok'osht.@2b'Vnd@2
५_) ] th'ul'ok'osht.@2b'Vnd@2
६_) ] th'ul'ok'osht.@2b'Vnd@2
७_) ] th'ul'ok'osht.@2b'Vnd@2
८_) ] th'ul'ok'osht.@2b'Vnd@2
९_) ] th'ul'ok'osht.@2b'Vnd@2
A_) ] t#'ul'ok'osht.@2b'Vnd@2
C_) ] t#'ul'ok'osht.@2b'Vnd@2
०_) ] t#'ul'ok'osht.@2b'Vnd@2
१_) ] t#'ul'ok'osht.@2b'Vnd@2
२_) ] t#'ul'ok'osht.@2b'Vnd@2
३_) ] t#'ul'ok'osht.@2b'Vnd@2
४_) ] t#'ul'ok'osht.@2b'Vnd@2
५_) ] t#'ul'ok'osht.@2b'Vnd@2
६_) ] t#'ul'ok'osht.@2b'Vnd@2
७_) ] t#'ul'ok'osht.@2b'Vnd@2
८_) ] t#'ul'ok'osht.@2b'Vnd@2
९_) ] t#'ul'ok'osht.@2b'Vnd@2
.group {
{ l'eftbr'eIs
{ (_A b'a:Ng'ek'oshth.@2suru
{ (_C b'a:Ng'ek'oshth.@2suru
{ (_० b'a:Ng'ek'oshth.@2suru
{ (_१ b'a:Ng'ek'oshth.@2suru
{ (_२ b'a:Ng'ek'oshth.@2suru
{ (_३ b'a:Ng'ek'oshth.@2suru
{ (_४ b'a:Ng'ek'oshth.@2suru
{ (_५ b'a:Ng'ek'oshth.@2suru
{ (_६ b'a:Ng'ek'oshth.@2suru
{ (_७ b'a:Ng'ek'oshth.@2suru
{ (_८ b'a:Ng'ek'oshth.@2suru
{ (_९ b'a:Ng'ek'oshth.@2suru
{ (_A b'a:Ng'ek'osht.#@2suru
{ (_C b'a:Ng'ek'osht.#@2suru
{ (_० b'a:Ng'ek'osht.#@2suru
{ (_१ b'a:Ng'ek'osht.#@2suru
{ (_२ b'a:Ng'ek'osht.#@2suru
{ (_३ b'a:Ng'ek'osht.#@2suru
{ (_४ b'a:Ng'ek'osht.#@2suru
{ (_५ b'a:Ng'ek'osht.#@2suru
{ (_६ b'a:Ng'ek'osht.#@2suru
{ (_७ b'a:Ng'ek'osht.#@2suru
{ (_८ b'a:Ng'ek'osht.#@2suru
{ (_९ b'a:Ng'ek'osht.#@2suru
.group }
} r'aItbr'eIs
A_) } b'a:Ng'ek'oshth.@2b'Vnd@2
C_) } b'a:Ng'ek'oshth.@2b'Vnd@2
०_) } b'a:Ng'ek'oshth.@2b'Vnd@2
१_) } b'a:Ng'ek'oshth.@2b'Vnd@2
२_) } b'a:Ng'ek'oshth.@2b'Vnd@2
३_) } b'a:Ng'ek'oshth.@2b'Vnd@2
४_) } b'a:Ng'ek'oshth.@2b'Vnd@2
५_) } b'a:Ng'ek'oshth.@2b'Vnd@2
६_) } b'a:Ng'ek'oshth.@2b'Vnd@2
७_) } b'a:Ng'ek'oshth.@2b'Vnd@2
८_) } b'a:Ng'ek'oshth.@2b'Vnd@2
९_) } b'a:Ng'ek'oshth.@2b'Vnd@2
A_) } b'a:Ng'ek'osht.#@2b'Vnd@2
C_) } b'a:Ng'ek'osht.#@2b'Vnd@2
०_) } b'a:Ng'ek'osht.#@2b'Vnd@2
१_) } b'a:Ng'ek'osht.#@2b'Vnd@2
२_) } b'a:Ng'ek'osht.#@2b'Vnd@2
३_) } b'a:Ng'ek'osht.#@2b'Vnd@2
४_) } b'a:Ng'ek'osht.#@2b'Vnd@2
५_) } b'a:Ng'ek'osht.#@2b'Vnd@2
६_) } b'a:Ng'ek'osht.#@2b'Vnd@2
७_) } b'a:Ng'ek'osht.#@2b'Vnd@2
८_) } b'a:Ng'ek'osht.#@2b'Vnd@2
९_) } b'a:Ng'ek'osht.#@2b'Vnd@2
@@ -1132,19 +1132,19 @@
// Special Symbols with special meanings
.group
। pur',n.@,w'ir'a:m // Fullstop of Devanagari
॥ d'i:rgh@,w'ir'a:m // Double Fullstop - means Read sentence twice.
॥ d'i:rg#@,w'ir'a:m // Double Fullstop - means Read sentence twice.
ॱ dVS@mal@w@2 // Decimal of devanagari (dot [.] is mostly used!).
॰ saNks.e:p@s'u:c@k@
$ dOlV
$ dOlV
% prVtish'vt
// Rarely used Special symbols. Written after Indepedent Vowel or between a Consonants and Symbolic Vowels!
़ n'u'k't'a: // Name of symbol.
॑ Ud'Vtt,@
॓ Ud:dh@r,@n.@a:r'Vmbh@
॔ ,Ud:dh@r,@n.@'Vnt@
ॽ k,@n.th.@w'Ira:m
॓ Ud:d#@r,@n.@a:r'Vmb#@
॔ ,Ud:d#@r,@n.@'Vnt@
ॽ k,@n.t.#@w'Ira:m
॒ a'n'ud'Vtt,@

+ 241
- 168
dictsource/pa_list View File

@@ -1,168 +1,241 @@

// This file is UTF8 encoded
// Punjabi/Gurmukhi


// Numbers
_0 z'iRo
_1 'Ik:
_2 d'o
_3 t'I~n
_4 c'aR
_5 p'VnJ
_6 ch'e
_7 s'Vt:
_8 'Vth.:
_9 n'O~

_10 d'Vs
_11 gI'aRa~
_12 b'aRa~
_13 t'eRa~
_14 c'Oda~
_15 p'Vnd@Ra~
_16 s'ol.a~
_17 s@t'aRa~
_18 Vth.'aRa~
_19 'Unni

_20 v'iH
_21 Ik:i
_22 b'ai
_23 t'ei
_24 c'Ovi
_25 p'Vc:i
_26 ch'Vb:i
_27 s@t'ai
_28 Vth.'ai
_29 Un'Vt:i

_30 t'iH
_31 Ik'Vt:i
_32 b'Vt:i
_33 t'et:i
_34 c'ONti
_35 p'ENti
_36 ch'Vt:i
_37 s'ENti

_38 Vth.'Vt:i
_39 U~Nt'ali

_40 c'ali
_41 Ik@t'ali
_42 be'ali
_43 t@R@t'ali
_44 cUt'ali
_45 p@nt'ali
_46 chI'ali
_47 s@nt'ali
_48 ,@R2@t'ali
_49 Un'VnJa

_50 p@nJ'aH
_51 ,@k@v'VnJa
_52 b@v'VnJa
_53 t,@R@v'VnJa
_54 cUR'VnJa
_55 p,@c@v'VnJa
_56 ch@p'VnJa
_57 s,@t@v'VnJa
_58 ,@th.@v'VnJa
_59 Un.'ath.

_60 s'Vth.:
_61 Ik'aH@t.
_62 b'aH@t.
_63 t@R'e~H@t.
_64 c'O~H@t.
_65 p'E~H@t.
_66 che'aH@t.
_67 s@t'aH@t.
_68 ,@th.'aH@t.
_69 Un.'Vt:@R

_70 s'Vt:@R
_71 Ik'Vt:@R
_72 b@H'Vt:@R
_73 t@H'et:@R
_74 cOH'Vt:@R
_75 p@J'Vt:@R
_76 chIH'Vt:@R
_77 s@t'Vt:@R
_78 Vth.'Vt:@R
_79 Un.'asi

_80 'Vssi
_81 ,IkI;'asi
_82 bI;'asi
_83 t,@RI;'asi
_84 cUR'asi
_85 p@c'asi
_86 chI;'asi
_87 s@t'asi
_88 Vth.'asi
_89 Un'an@v,e~

_90 n'Vb:e
_91 Ik'an@v,e~
_92 b'an@v,e~
_93 t@R'a~n@v,e~
_94 cUR'an@v,e~
_95 p@c'an@v,e~
_96 chI'an@ve~
_97 s@t'an@ve~
_98 Vth.'an@ve~
_99 n@R2'I~n@v,e~

_0C s'O
_0M1 H@J'aR
_0M2 l'Vkh: // 100,000
_0M3 k'VRoR // 10,000,000
_0M4 'VR@b // 1,000,000,000
_0M5 kh'VR@b // 100,000,000,000

_dpt _dOth // ??


// character names
ਂ bInd'i
ੰ tIpp'i
ੱ VddVk
ਃ visaRg
੍ hVlVnt

ਅ 'ERV
ੲ 'IRI
ੳ 'URV
_ਆ 'ERV||kVnn'a
_ਇ 'IRI||sIh'aRi
_ਈ 'IRI||bIh'aRi
_ਉ 'URV||'OnkaR
_ਊ 'URV||dUl'EnkaR
_ਏ 'IRI||l'avam
_ਐ 'ERV||dUl'avam
_ਓ 'URV||hoR'a
_ਔ 'ERV||kVnOR'a

ਾ kVnn'a
ਿ sIh'aRi
ੀ bIh'aRi
ੁ OnkaR
ੂ dUl'EnkaR
ੇ l'ava~
ੈ d@l'ava~
ੋ hoR'a
ੌ kVn'ORa

। d.'Vnd.i
ਸਰਕਾਰ sR@k'aR
ਸਰਕਾਰੀ sR@k'aRi

$textmode
ਸੋਫਟਵਿਅਰ software
ਈਮੇਲ email
ਕੀਬੋਰਡ keyboard
ਬੋਰਡ board
$phonememode

// This file is UTF8 encoded
// Punjabi/Gurmukhi
// Numbers
_0 z'iRo
_1 'Ik:
_2 d'o
_3 t'I~n
_4 c'aR
_5 p'VnJ
_6 c#'e
_7 s'Vt:
_8 'Vt.#:
_9 n'O~
_10 d'Vs
_11 gI'aRa~
_12 b'aRa~
_13 t'eRa~
_14 c'Oda~
_15 p'Vnd@Ra~
_16 s'ol.a~
_17 s@t'aRa~
_18 Vt.#'aRa~
_19 'Unni
_20 v'iH
_21 Ik:i
_22 b'ai
_23 t'ei
_24 c'Ovi
_25 p'Vc:i
_26 c#'Vb:i
_27 s@t'ai
_28 Vt.#'ai
_29 Un'Vt:i
_30 t'iH
_31 Ik'Vt:i
_32 b'Vt:i
_33 t'et:i
_34 c'ONti
_35 p'ENti
_36 c#'Vt:i
_37 s'ENti
_38 Vt.#'Vt:i
_39 U~Nt'ali
_40 c'ali
_41 Ik@t'ali
_42 be'ali
_43 t@R@t'ali
_44 cUt'ali
_45 p@nt'ali
_46 c#I'ali
_47 s@nt'ali
_48 ,@R2@t'ali
_49 Un'VnJa
_50 p@nJ'aH
_51 ,@k@v'VnJa
_52 b@v'VnJa
_53 t,@R@v'VnJa
_54 cUR'VnJa
_55 p,@c@v'VnJa
_56 c#@p'VnJa
_57 s,@t@v'VnJa
_58 ,@t.#@v'VnJa
_59 Un.'at.#
_60 s'Vt.#:
_61 Ik'aH@t.
_62 b'aH@t.
_63 t@R'e~H@t.
_64 c'O~H@t.
_65 p'E~H@t.
_66 c#e'aH@t.
_67 s@t'aH@t.
_68 ,@t.#'aH@t.
_69 Un.'Vt:@R
_70 s'Vt:@R
_71 Ik'Vt:@R
_72 b@H'Vt:@R
_73 t@H'et:@R
_74 cOH'Vt:@R
_75 p@J'Vt:@R
_76 c#IH'Vt:@R
_77 s@t'Vt:@R
_78 Vt.#'Vt:@R
_79 Un.'asi
_80 'Vssi
_81 ,IkI;'asi
_82 bI;'asi
_83 t,@RI;'asi
_84 cUR'asi
_85 p@c'asi
_86 c#I;'asi
_87 s@t'asi
_88 Vt.#'asi
_89 Un'an@v,e~
_90 n'Vb:e
_91 Ik'an@v,e~
_92 b'an@v,e~
_93 t@R'a~n@v,e~
_94 cUR'an@v,e~
_95 p@c'an@v,e~
_96 c#I'an@ve~
_97 s@t'an@ve~
_98 Vt.#'an@ve~
_99 n@R2'I~n@v,e~
_0C s'O
_0M1 H@J'aR
_0M2 l'Vk#: // 100,000
_0M3 k'VRoR // 10,000,000
_0M4 'VR@b // 1,000,000,000
_0M5 k#'VR@b // 100,000,000,000
_dpt _dOt# // ??
// character names
ਂ bInd'i
ੰ tIpp'i
ੱ VddVk
ਃ visaRg
੍ hVlVnt
ਅ 'ERV
ੲ 'IRI
ੳ 'URV
_ਆ 'ERV||kVnn'a
_ਇ 'IRI||sIh'aRi
_ਈ 'IRI||bIh'aRi
_ਉ 'URV||'OnkaR
_ਊ 'URV||dUl'EnkaR
_ਏ 'IRI||l'avam
_ਐ 'ERV||dUl'avam
_ਓ 'URV||hoR'a
_ਔ 'ERV||kVnOR'a
ਾ kVnn'a
ਿ sIh'aRi
ੀ bIh'aRi
ੁ OnkaR
ੂ dUl'EnkaR
ੇ l'ava~
ੈ d@l'ava~
ੋ hoR'a
ੌ kVn'ORa
// Punctuation
। d.'Vnd.i
// Pronouns
// ਪੁਰਖਵਾਚੀ ਪੜਨਾਂਵ
ਮੈਂ $u // main: I
ਮੈਨੂੰ $u
ਮੇਰਾ $u
ਮੇਰੀ $u
ਮੇਰੇ $u
ਅਸੀਂ $u // we
ਸਾਨੂੰ $u
ਸਾਡਾ $u
ਸਾਡੀ $u
ਸਾਡੇ $u
ਆਪ $u // you(formal)
ਆਪਨੂੰ $u
ਆਪਦਾ $u
ਆਪਦੀ $u
ਆਪਦੇ $u
ਤੂੰ $u // you (informal)
ਤੂਸੀਂ $u // you(formal)
ਤੁਹਾਨੂੰ $u
ਤੁਹਾਡਾ $u
ਤੁਹਾਡੀ $u
ਤੁਹਾਡੇ $u
ਤੂੰ $u // you (informal)
ਤੈਨੂੰ $u
ਤੇਰਾ $u
ਇਹ $u // he/she/it
ਇਸਤੋਂ $u
ਇਸਦਾ $u
ਇਹ $u // they
ਇਨ੍ਹਾਂਨੂੰ $u
ਇਨ੍ਹਾਂਦਾ $u
ਉਹ $u // he/she/it
ਉਸਤੋਂ $u
ਉਸਦਾ $u
ਉਸਦੀ $u
ਉਸਦੇ $u
ਉਹ $u // they
ਉਨ੍ਹਾਂਨੂੰ $u // unhannu: them
ਉਨ੍ਹਾਂਦਾ $u
ਉਨ੍ਹਾਂਦੀ $u
ਉਨ੍ਹਾਂਦੇ $u
// Prepositions/Postpositions
ਦਾ $u // dā: of, possessive particle
ਦੀ $u // dī
ਦੇ $u // de
ਨੂੰ $u // nu: to
ਤੱਕ $u // tak: until, for(time)
ਬਿਨਾ $u $pause // without (preposition)
ਵਿਚ $u // in
ਵਿੱਚ $u // in
ਤੋਂ $u // ton: from, with, by
// Verbs
ਹਾਂ $u // to be
ਹੋ $u
ਹੈ $u
ਹੈਂ $u
ਹਨ $u
ਸੀ $u // si: past aux
ਸਨ $u // san: past aux
ਰਹਾ $u // rahā: continuous
ਰਹੇ $u // rahe
ਰਹੀ $u // rahī
$textmode
ਸੋਫਟਵਿਅਰ software
ਈਮੇਲ email
ਕੀਬੋਰਡ keyboard
ਬੋਰਡ board
$phonememode

+ 45
- 45
dictsource/pa_rules View File

@@ -176,12 +176,12 @@
ੱ) ਕ (_ k:

.group ਖ
ਖ khV
ਖ (B kh
@) ਖ (_ kh
ੱ) ਖ kh:V
ੱ) ਖ (B kh:
ੱ) ਖ (_ kh:
ਖ k#V
ਖ (B k#
@) ਖ (_ k#
ੱ) ਖ k#:V
ੱ) ਖ (B k#:
ੱ) ਖ (_ k#:

.group ਗ
ਗ gV
@@ -192,9 +192,9 @@
ੱ) ਗ (_ g:

.group ਘ
ਘ ghV
ਘ (B gh
@) ਘ (_ gh
ਘ g#V
ਘ (B g#
@) ਘ (_ g#
_) ਘ k+V // high tone
_) ਘ (B k+

@@ -215,12 +215,12 @@
ੱ) ਚ (_ c:

.group ਛ
ਛ chV
ਛ (B ch
@) ਛ (_ ch
ੱ) ਛ ch:V
ੱ) ਛ (B ch:
ੱ) ਛ (_ ch:
ਛ c#V
ਛ (B c#
@) ਛ (_ c#
ੱ) ਛ c#:V
ੱ) ਛ (B c#:
ੱ) ਛ (_ c#:

.group ਜ
ਜ JV
@@ -231,9 +231,9 @@
ੱ) ਜ (_ J:

.group ਝ
ਝ JhV
ਝ (B Jh
@) ਝ (_ Jh
ਝ J#V
ਝ (B J#
@) ਝ (_ J#
_) ਝ c+V
_) ਝ (B c+

@@ -254,12 +254,12 @@
ੱ) ਟ (_ t.:

.group ਠ
ਠ th.V
ਠ (B th.
@) ਠ (_ th.
ੱ) ਠ th.:V
ੱ) ਠ (B th.:
ੱ) ਠ (_ th.:
ਠ t.#V
ਠ (B t.#
@) ਠ (_ t.#
ੱ) ਠ t.#:V
ੱ) ਠ (B t.#:
ੱ) ਠ (_ t.#:

.group ਡ
ਡ d.V
@@ -270,9 +270,9 @@
ੱ) ਡ (_ d.:

.group ਢ
ਢ dh.V
ਢ (B dh.
@) ਢ (_ dh.
ਢ d.#V
ਢ (B d.#
@) ਢ (_ d.#
_) ਢ t.+V
_) ਢ (B t.

@@ -293,12 +293,12 @@
ੱ) ਤ (_ t:

.group ਥ
ਥ thV
ਥ (B th
@) ਥ (_ th
ੱ) ਥ th:V
ੱ) ਥ (B th:
ੱ) ਥ (_ th:
ਥ t#V
ਥ (B t#
@) ਥ (_ t#
ੱ) ਥ t#:V
ੱ) ਥ (B t#:
ੱ) ਥ (_ t#:

.group ਦ
ਦ dV
@@ -309,9 +309,9 @@
ੱ) ਦ (_ d:

.group ਧ
ਧ dhV
ਧ (B dh
@) ਧ (_ dh
ਧ d#V
ਧ (B d#
@) ਧ (_ d#
_) ਧ t+V
_) ਧ (B t+

@@ -332,12 +332,12 @@
ੱ) ਪ (_ p:

.group ਫ
ਫ phV
ਫ (B ph
@) ਫ (_ ph
ੱ) ਫ ph:V
ੱ) ਫ (B ph:
ੱ) ਫ (_ ph:
ਫ p#V
ਫ (B p#
@) ਫ (_ p#
ੱ) ਫ p#:V
ੱ) ਫ (B p#:
ੱ) ਫ (_ p#:

.group ਬ
ਬ bV
@@ -348,9 +348,9 @@
ੱ) ਬ (_ b:

.group ਭ
ਭ bhV
ਭ (B bh
@) ਭ (_ bh
ਭ b#V
ਭ (B b#
@) ਭ (_ b#
_) ਭ p+V
_) ਭ (B p+


+ 2
- 0
dictsource/pt_list View File

@@ -45,6 +45,7 @@ _tld tS'iU
_ar 'a*aby
_cyr si*'ilikU
_he eb*'aIkU
_zh Sin'es


// character names
@@ -828,6 +829,7 @@ galileia $alt
gameta $alt2
geleia $alt
gelo $alt $verb
genebra $alt
germe $alt
gesso $alt2
golpe $alt

+ 11
- 6
dictsource/pt_rules View File

@@ -361,10 +361,8 @@
_soub) e (L05_ E
_rend) e (L06_ e
_vend) e (L06_ e
_atend) e (L06_ e
tend) e (L06_ e / a- con- en- es-
_compreend) e (L06_ e
_entend) e (L06_ e
_estend) e (L06_ e
respond) e (L06_ e // cor-
_enraivec) e (L07_ e
_espairec) e (L07_ e
@@ -383,6 +381,8 @@ _espairec) e (L07_ e
vert) e (L07_ e // in- re- con-
_eleg) e (L07_ e
_ergu) e (L07_ e
_escond) e (L06_ e
_mord) e (L06_ e
_mord) e (L07_ e
_morr) e (L07_ e
_perd) e (L07_ e
@@ -396,9 +396,12 @@ _adormec) e (L07_ e
_agradec) e (L07_ e
_amanhec) e (L07_ e
_anoitec) e (L07_ e
_arrepend) e (L06_ e
_arrepend) e (L07_ e
_cresc) e (L07_ e
_defend) e (L06_ e
_defend) e (L07_ e
_depend) e (L06_ e
_depend) e (L07_ e
_emagrec) e (L07_ e
_enlouquec) e (L07_ e
@@ -410,17 +413,19 @@ _escond) e (L07_ e
_escurec) e (L07_ e
_esquec) e (L07_ e
_interromp) e (L07_ e
_obedec) e (L07_ e
obedec) e (L07_ e / des-
_suspend) e (L07_ e
_perec) e (L07_ e
_rejuvenec) e (L07_ e
aprend) e (L07_ e // re-
conhec) e (L07_ e // & re- des-
entend) e (L07_ e
tend) e (L07_ e / en- con- a- es-
preend) e (L07_ e // sur- com-
respond) e (L07_ e // cor-
qu) e (brL04_ E
acel) e (rL04_ E / des-
_hosp) e (dL03_ E
_amort) e (çL03_ e
_in) e (ptL03_ E
_gr) e (gL03_ e
_n) e (grL03_ e
@@ -486,7 +491,7 @@ _emagr) e (çL03
_aqu) e (çL03_ e
_car) e (çL03_ e
_mer) e (çL03_ e
_pad) e (çL03_ e // com-
pad) e (çL03_ e // com-
_per) e (çL03_ e
conh) e (çL03_ e // re-
_esqu) e (çL03_ e

+ 1
- 0
dictsource/ta_list View File

@@ -117,6 +117,7 @@ U+bf9 ru:ba:j
_ar arVbU
_cyr sirillik
_he ;ebire:jVm
_zh tS'i:nV


// abbreviations

+ 19
- 19
dictsource/te_list View File

@@ -50,20 +50,20 @@ _1X padi
_11 padakond.u
_12 pannemd.u
_13 padamu:d.u:
_14 padhna:lugu
_14 pad#na:lugu
_15 padihe:nu
_16 padaha:ru
_17 padihe:d.u
_18 paddhenimidi
_18 padd#enimidi
_19 pamdommadi
_2X iravaI
_3X muppaI
_4X nalubhaI
_5X ja:bhaI
_4X nalub#aI
_5X ja:b#aI
_6X aravaI
_7X d.ebhbaI
_8X jenabhaI
_9X tombhaI
_7X d.eb#baI
_8X jenab#aI
_9X tomb#aI
_0C vandala
_0C0 vandalu
_1C okavanda
@@ -92,8 +92,8 @@ _?? aks.aram // 'unknown character'
_, ka:ma:
_; semi:ko:lan
_: ko:lan
_! a:S;carja:rthaka
_? praS;na:rthaka
_! a:S;carja:rt#aka
_? praS;na:rt#aka
_- haIfan
__ amd.ar||sko:r

@@ -114,29 +114,29 @@ U+c4d vottu

// consonants with virama
క్ ik
ఖ్ ikh
ఖ్ ik#
గ్ ig
ఘ్ igh
ఘ్ ig#
ఙ్ iN
చ్ ic
ఛ్ ich
ఛ్ ic#
జ్ iJ
ఝ్ iJh
ఝ్ iJ#
ఞ్ in^
ట్ it.
ఠ్ ith.
ఠ్ it.#
డ్ id.
ఢ్ idh.
ఢ్ id.#
ణ్ in.
త్ it
థ్ ith
థ్ it#
ద్ id
ధ్ idh
ధ్ id#
న్ in
ప్ ip
ఫ్ iph
ఫ్ ip#
బ్ ib
భ్ ibh
భ్ ib#
మ్ im
య్ ij
ర్ ir

+ 20
- 20
dictsource/te_rules View File

@@ -24,16 +24,16 @@
క (B k

.group ఖ
ఖ kha
ఖ (B kh
ఖ k#a
ఖ (B k#

.group గ
గ ga
గ (B g

.group ఘ
ఘ gha
ఘ (B gh
ఘ g#a
ఘ (B g#

.group ఙ
ఙ Na
@@ -44,16 +44,16 @@
చ (B c

.group ఛ
ఛ cha
ఛ (B ch
ఛ c#a
ఛ (B c#

.group జ
జ Ja
జ (B J

.group ఝ
ఝ Jha
ఝ (B Jh
ఝ J#a
ఝ (B J#

.group ఞ
ఞ n^a
@@ -64,16 +64,16 @@
ట (B t.

.group ఠ
ఠ th.a
ఠ (B th.
ఠ t.#a
ఠ (B t.#

.group డ
డ d.a
డ (B d.

.group ఢ
ఢ dh.a
ఢ (B dh.
ఢ d.#a
ఢ (B d.#

.group ణ
ణ n.a
@@ -84,16 +84,16 @@
త (B t

.group థ
థ tha
థ (B th
థ t#a
థ (B t#

.group ద
ద da
ద (B d

.group ధ
ధ dha
ధ (B dh
ధ d#a
ధ (B d#

.group న
న na
@@ -104,16 +104,16 @@
ప (B p

.group ఫ
ఫ pha
ఫ (B ph
ఫ p#a
ఫ (B p#

.group బ
బ ba
బ (B b

.group భ
భ bha
భ (B bh
భ b#a
భ (B b#

.group మ
మ ma

+ 43
- 43
dictsource/ur_list View File

@@ -38,11 +38,11 @@
ن nu:n
و va:O
ہ He:
ں ghUnna
ﮨ cho:ti:||He:
ں g#Unna
ﮨ c#o:ti:||He:
ھ dO||caSmi:||He:
ء HamzaH
ی cho:t.i:||je:
ی c#o:t.i:||je:
ے bar.i:||je:
ئ h'amza

@@ -58,9 +58,9 @@ _2 'do:
_3 t'i:n
_4 c'a:R
_5 p'a:Nc
_6 ch'eh
_6 c#'eh
_7 s'a:t
_8 'a:th
_8 'a:t#
_9 n'aU
_10 d'as
_11 gj'a:RaH
@@ -70,7 +70,7 @@ _14 c'aUdaH
_15 p'andRaH
_16 s'o:laH
_17 s'atRaH
_18 ath'a:RaH
_18 at#'a:RaH
_19 'Unni:s
_20 b'i:s
_21 Ikk'i:s
@@ -78,9 +78,9 @@ _22 ba:'i:s
_23 te:'i:s
_24 caUb'i:s
_25 pacc'i:s
_26 chabb'i:s
_26 c#abb'i:s
_27 sat:a:'i:s
_28 ,ath.a:j'i:s
_28 ,at.#a:j'i:s
_29 Unt'i:s
_30 t'i:s
_31 ikVt'i:s
@@ -88,7 +88,7 @@ _32 bat:'i:s
_33 t'aINt'i:s
_34 caUNt'i:s
_35 paINt'i:s
_36 chat:'i:s
_36 c#at:'i:s
_37 saINt'i:s
_38 aRt'i:s
_39 Unta:l'i:s
@@ -98,7 +98,7 @@ _42 baja:l'i:s
_43 te:Nta:l'i:s
_44 cava:l'i:s
_45 paINta:l'i:s
_46 chIja:l'i:s
_46 c#Ija:l'i:s
_47 saINta:l'i:s
_48 aRta:l'i:s
_49 Unc'a:s
@@ -108,29 +108,29 @@ _52 b'a:van
_53 t'IRpan
_54 c'aUvan
_55 p'acpan
_56 ch'appan
_56 c#'appan
_57 sat:'a:van
_58 ath'a:van
_59 Uns'ath
_60 s'a:th
_61 'Iksath
_62 b'a:sath
_63 t'IRsath
_64 c'aUsath
_65 p'aINsath
_66 chIj'a:sath
_67 s'aRsath
_68 'aRsath
_58 at#'a:van
_59 Uns'at#
_60 s'a:t#
_61 'Iksat#
_62 b'a:sat#
_63 t'IRsat#
_64 c'aUsat#
_65 p'aINsat#
_66 c#Ij'a:sat#
_67 s'aRsat#
_68 'aRsat#
_69 UnH,at:'aR
_70 sat:'aR
_71 IkHat:'aR
_72 baHat:'aR
_73 tIHat:'aR
_74 caUHat:'aR
_75 pachat:'aR
_76 chIHat:'aR
_77 sathat:'aR
_78 athHat:'aR
_75 pac#at:'aR
_76 c#IHat:'aR
_77 sat#at:'aR
_78 at#Hat:'aR
_79 Unna:s'i:
_80 ass'i:
_81 Ika:s'i:
@@ -138,9 +138,9 @@ _82 baja:s'i:
_83 tIRa:s'i:
_84 caURa:s'i:
_85 paca:s'i:
_86 chIja:s'i:
_86 c#Ija:s'i:
_87 sat:a:s'i:
_88 atha:s'i:
_88 at#a:s'i:
_89 nava:s'i:
_90 navv'e:
_91 Ikj'a:nve:
@@ -148,17 +148,17 @@ _92 b'a:nve:
_93 tIT'a:nve:
_94 caUR'a:nve:
_95 pac'a:nve:
_96 chIj'a:nve:
_96 c#Ij'a:nve:
_97 sat:'a:nve:
_98 ath:'a:nve:
_98 at#:'a:nve:
_99 nInj'a:nve:

_0C s'aU
_0M1 Haz'a:R
_0M2 l'a:kh
_0M2 l'a:k#
_0M3 kaR'o:R
_0M4 'aRab
_0M5 'khaRab
_0M5 'k#aRab
_dpt _ISaRI'Ia_


@@ -179,9 +179,9 @@ _dpt _ISaRI'Ia_
کسے k'Ise:
اسی 'Isi:
اسے 'Ise:
مجھ m'UJh
مجھے m'UJhe:
تجھے t'UJhe:
مجھ m'UJ#
مجھے m'UJ#e:
تجھے t'UJ#e:
جن J'In
جنھیں J,InH'e:n
انھوں ,UnH'o:n
@@ -204,8 +204,8 @@ _dpt _ISaRI'Ia_

// Pronunciation exceptions
پاکستان p'a:k'i:st'a:n
سندھ s'Indh
کچھ k'Uch
سندھ s'Ind#
کچھ k'Uc#
لنکس l'Ink,s
لفظ l'afz.
سرچ s'aRc
@@ -247,8 +247,8 @@ _dpt _ISaRI'Ia_
مصری m'Is.R,i:
انتظام ,IntIz.'a:m
مختصر m,Uxtas.'aR
پھر ph'IR
پھرا ph'IRa:
پھر p#'IR
پھرا p#'IRa:
منتخب m,Unt'ax@b
منتقل m,Unt'aqIl
نیا n'aja:
@@ -267,7 +267,7 @@ _dpt _ISaRI'Ia_
اردو 'URd,u:
احتجاجی 'e:Hte:J,a:Ji:
احتجاج 'e:HtIJ,a:J
بدھ b'Udh
بدھ b'Ud#
تجزیے t,aJz'i:;e:
دوست d'o:st
زندگی z,Ind'agi:
@@ -295,7 +295,7 @@ _dpt _ISaRI'Ia_
گزشتہ gUz'aSta
رشتہ R'ISta
اخر 'a:xIR
آنکھ 'a:nkh
آنکھ 'a:nk#
شکار SIk'a:R
جلد J'ald
مواد mav'a:d
@@ -304,5 +304,5 @@ _dpt _ISaRI'Ia_
شدہ S'Ud,a
بغیر baQ'e:R
امیدوار Um'i:dva:R
لکھ l'Ikh
لکھئیے l'Ikhj,e:
لکھ l'Ik#
لکھئیے l'Ik#j,e:

+ 22
- 22
dictsource/ur_rules View File

@@ -100,28 +100,28 @@ _) ای e:

.group ب
ب bV
بھ bhV
بھ (L01 bh
بھ b#V
بھ (L01 b#
ب (L01 b

.group پ
پ pV
پھ phV
پھ p#V
پ (L01 p
پھ (L01 ph
پھ (L01 p#


.group ت
ت tV
تھ thV
تھ t#V
ت (L01 t
تھ (L01 th
تھ (L01 t#

.group ٹ
ٹ t.V
ٹھ th.V
ٹھ t.#V
ٹ (L01 t.
ٹھ (L01 th.
ٹھ (L01 t.#

.group ث
ث sV
@@ -129,16 +129,16 @@ _) ای e:

.group ج
ج JV
جھ JhV
جھ J#V
ج (L01 J
جھ (L01 Jh
جھ (L01 J#


.group چ
چ cV
چھ chV
چھ c#V
چ (L01 c
چھ (L01 ch
چھ (L01 c#

.group ح
ح HV
@@ -151,15 +151,15 @@ _) ای e:

.group د
د dV
دھ dhV
دھ d#V
د (L01 d
دھ (L01 dh
دھ (L01 d#

.group ڈ
ڈ d.V
ڈھ dh.V
ڈھ d.#V
ڈ (L01 d.
ڈھ (L01 dh.
ڈھ (L01 d.#

.group ذ
ذ DV
@@ -199,9 +199,9 @@ _) ای e:

.group ط
ط tV
طھ thV
طھ t#V
ط (L01 t
طھ (L01 th
طھ (L01 t#

.group ظ
ظ z.V
@@ -221,15 +221,15 @@ _) ای e:

.group ک
ک kV
کھ khV
کھ k#V
ک (L01 k
کھ (L01 kh
کھ (L01 k#

.group گ
گ gV
گھ ghV
گھ g#V
گ (L01 g
گھ (L01 gh
گھ (L01 g#

.group ل
ل lV

+ 1
- 2
phsource/ph_english_n View File

@@ -58,8 +58,7 @@ endphoneme
phoneme i // optional variant of [I] for end of words
vowel starttype #i endtype #i
length 150
IfNextVowelAppend(;)
FMT(vowel/e_3)
FMT(vowel/e_2)
endphoneme



+ 1
- 0
phsource/ph_english_us View File

@@ -97,6 +97,7 @@ phoneme I#
vowel starttype #i endtype #i
unstressed
length 160
ipa ᵻ
// FMT(vowel/@_fnt)
FMT(vowel/ii#)
endphoneme

+ 19
- 19
phsource/ph_hindi View File

@@ -294,7 +294,7 @@ phoneme p
endphoneme


phoneme ph
phoneme p#
import_phoneme consonants/ph
endphoneme

@@ -304,10 +304,10 @@ phoneme b // this is [b]
endphoneme


phoneme bh
phoneme b#
vcd blb stop
lengthmod 5
voicingswitch ph
voicingswitch p#
Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30

@@ -330,7 +330,7 @@ phoneme t // dental variant of /t/
endphoneme


phoneme th // dental variant of /t/
phoneme t# // dental variant of /t/
vls dnt stop
lengthmod 2
voicingswitch d
@@ -349,10 +349,10 @@ phoneme d // dental variant of /d/
endphoneme


phoneme dh
phoneme d#
vcd dnt stop
lengthmod 5
voicingswitch th
voicingswitch t#
Vowelin f1=0 f2=1500 -300 300 f3=-100 80
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20

@@ -379,11 +379,11 @@ phoneme t.
WAV(ustop/t_short)
endphoneme

phoneme th.
phoneme t.#
vls rfx stop
lengthmod 2
ipa ʈh
voicingswitch dh.
ipa ʈU+02B0
voicingswitch d.#
Vowelin f1=0 f2=1800 -300 300 f3=-400 80
Vowelout f1=0 f2=1800 -300 250 f3=-400 80 rms=20 colr=2
// WAV(ustop/th_rfx)
@@ -410,11 +410,11 @@ phoneme d.
endphoneme


phoneme dh.
phoneme d.#
vcd rfx stop
lengthmod 5
ipa ɖh
voicingswitch th.
ipa ɖU+02B0
voicingswitch t.#
Vowelin f1=1 f2=1800 -300 300 f3=-400 80
Vowelout f1=1 f2=1800 -300 300 f3=-400 80 colr=2

@@ -439,7 +439,7 @@ phoneme c
endphoneme


phoneme ch
phoneme c#
CALL base/tS;
ipa ch
endphoneme
@@ -450,10 +450,10 @@ phoneme J
endphoneme


phoneme Jh
phoneme J#
vcd pal afr sibilant
lengthmod 5
voicingswitch ch
voicingswitch c#
Vowelin f1=0 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=0 f2=2700 400 600 f3=300 80 colr=1

@@ -477,9 +477,9 @@ phoneme k
voicingswitch g
endphoneme

phoneme kh
phoneme k#
import_phoneme consonants/kh
voicingswitch gh
voicingswitch g#
endphoneme


@@ -489,10 +489,10 @@ phoneme g
endphoneme


phoneme gh
phoneme g#
vcd dnt stop
lengthmod 5
voicingswitch kh
voicingswitch k#
Vowelin f1=1 f2=2300 200 300 f3=-150 80 rms=20
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20


+ 1
- 16
phsource/ph_malayalam View File

@@ -139,23 +139,8 @@ phoneme R
import_phoneme base/R2
endphoneme

phoneme d# // 'rr' sounds like English 'd'
phoneme d2 // 'rr' sounds like English 'd'
import_phoneme base/d
endphoneme


phoneme kh2
vls vel stop
lengthmod 2
voicingswitch g
Vowelin f1=0 f2=2300 200 300 f3=-150 80
Vowelout f1=0 f2=2300 300 400 f3=-150 80 rms=20
IF nextPh(isPause2) THEN
WAV(ustop/k_asp2, 50)
ENDIF
IF nextPh(l) THEN
WAV(ustop/kl)
ENDIF
WAV(ustop/k_asp2, 90)
endphoneme


+ 1
- 1
phsource/ph_s_gaelic View File

@@ -9,7 +9,7 @@ phoneme b
endphoneme

phoneme t
import_phoneme hi/th
import_phoneme hi/t#
endphoneme

phoneme d

+ 2
- 2
phsource/ph_tibetan View File

@@ -63,7 +63,7 @@ phoneme dz
FMT(d/xdz) addWav(ustop/ts2, 140)
endphoneme

phoneme tsh
phoneme ts#
vls alv afr sibilant
voicingswitch dz
lengthmod 2
@@ -76,7 +76,7 @@ phoneme tsh
endphoneme


phoneme dzh
phoneme dz#
vcd alv afr sibilant
voicingswitch ts
lengthmod 5

+ 14
- 12
phsource/phonemes View File

@@ -1690,6 +1690,9 @@ include ph_afrikaans
phonemetable cy base
include ph_welsh

phonemetable ga base
include ph_irish

phonemetable de base
include ph_german

@@ -1714,6 +1717,9 @@ include ph_french
phonemetable fr-ca fr
include ph_french_ca

phonemetable nl base
include ph_dutch


phonemetable hi base
include ph_hindi
@@ -1727,6 +1733,9 @@ include ph_nepali
phonemetable ur hi
include ph_urdu

phonemetable pa hi
include ph_punjabi

phonemetable ta hi
include ph_tamil

@@ -1737,6 +1746,7 @@ phonemetable ml hi
include ph_malayalam



phonemetable hu base
include ph_hungarian

@@ -1747,9 +1757,6 @@ include ph_lithuanian
phonemetable lv base
include ph_latvian

phonemetable nl base
include ph_dutch

phonemetable pl base
include ph_polish

@@ -1854,6 +1861,9 @@ include ph_danish
phonemetable ka base
include ph_georgian

phonemetable fa base
include ph_farsi


//**************************************************************************************
// The following lines are experimental, for future additions.
@@ -1872,9 +1882,6 @@ include ph_kinyarwanda
//phonemetable mn base
//include ph_mongolian

phonemetable pa hi
include ph_punjabi

phonemetable prs base
include ph_dari

@@ -1924,12 +1931,6 @@ include ph_tibetan
phonemetable kk base
include ph_kazakh

phonemetable fa base
include ph_farsi

phonemetable ga base
include ph_irish

phonemetable tt base
include ph_tatar

@@ -1939,3 +1940,4 @@ include ph_korean
phonemetable kl base
include ph_greenlandic



BIN
phsource/ustop/q2.wav View File


BIN
phsource/ustop/q2_i.wav View File


+ 96
- 106
src/compiledict.cpp View File

@@ -67,7 +67,8 @@ MNEM_TAB mnem_rules[] = {
{"p_alt5", 0x25},
{"p_alt6", 0x26},
{"p_alt", 0x21},
{NULL, -1} };
{NULL, -1}
};

MNEM_TAB mnem_flags[] = {
// these in the first group put a value in bits0-3 of dictionary_flags
@@ -182,13 +183,13 @@ const char *LookupMnemName(MNEM_TAB *table, const int value)
//==========================================================
/* Lookup a mnemonic string in a table, return its name */
{
while(table->mnem != NULL)
{
if(table->value==value)
return(table->mnem);
table++;
}
return(""); /* not found */
while(table->mnem != NULL)
{
if(table->value==value)
return(table->mnem);
table++;
}
return(""); /* not found */
} /* end of LookupMnemValue */


@@ -200,27 +201,27 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)
int len;
int total = 0;

buf[0] = 0;
buf[0] = 0;
if((stress = flags[0] & 0xf) != 0)
{
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
total = strlen(buf);
buf += total;
sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
total = strlen(buf);
buf += total;
}

for(ix=8; ix<64; ix++)
{
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
{
name = LookupMnemName(mnem_flags, ix);
len = strlen(name) + 1;
total += len;
if(total >= buf_len)
continue;
sprintf(buf, " %s", name);
buf += len;
}
}
for(ix=8; ix<64; ix++)
{
if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
{
name = LookupMnemName(mnem_flags, ix);
len = strlen(name) + 1;
total += len;
if(total >= buf_len)
continue;
sprintf(buf, " %s", name);
buf += len;
}
}
}


@@ -228,12 +229,12 @@ void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)

char *DecodeRule(const char *group_chars, int group_length, char *rule, int control)
{//=================================================================================
/* Convert compiled match template to ascii */
/* Convert compiled match template to ascii */

unsigned char rb;
unsigned char rb;
unsigned char c;
char *p;
int ix;
int ix;
int match_type;
int finished=0;
int value;
@@ -243,18 +244,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
int condition_num=0;
int at_start = 0;
const char *name;
char buf[60];
char buf_pre[60];
char buf[60];
char buf_pre[60];
char suffix[20];
static char output[60];

static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'};
static char symbols[] =
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'
};

static char symbols_lg[] = {'A','B','C','H','F','G','Y'};

match_type = 0;
buf_pre[0] = 0;
buf_pre[0] = 0;

for(ix=0; ix<group_length; ix++)
{
@@ -263,8 +266,8 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
buf[ix] = 0;

p = &buf[strlen(buf)];
while(!finished)
{
while(!finished)
{
rb = *rule++;

if(rb <= RULE_LINENUM)
@@ -315,8 +318,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
}
c = ' ';
}
else
if(rb == RULE_ENDING)
else if(rb == RULE_ENDING)
{
static const char *flag_chars = "eipvdfq tba ";
flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
@@ -325,7 +327,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
suffix_char = 'P';
sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
rule += 3;
for(ix=0;ix<9;ix++)
for(ix=0; ix<9; ix++)
{
if(flags & 1)
sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
@@ -335,13 +337,11 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
p += strlen(suffix);
c = ' ';
}
else
if(rb == RULE_LETTERGP)
else if(rb == RULE_LETTERGP)
{
c = symbols_lg[*rule++ - 'A'];
}
else
if(rb == RULE_LETTERGP2)
else if(rb == RULE_LETTERGP2)
{
value = *rule++ - 'A';
p[0] = 'L';
@@ -355,11 +355,9 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
}
p+=2;
}
else
if(rb <= RULE_LAST_RULE)
else if(rb <= RULE_LAST_RULE)
c = symbols[rb];
else
if(rb == RULE_SPACE)
else if(rb == RULE_SPACE)
c = '_';
else
c = rb;
@@ -393,7 +391,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
while(ix < 8)
output[ix++]=' ';
output[ix]=0;
return(output);
return(output);
} /* end of DecodeRule */


@@ -427,7 +425,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
unsigned char flag_codes[100];
char encoded_ph[200];
unsigned char bad_phoneme[4];
static char nullstring[] = {0};
static char nullstring[] = {0};

text_not_phonemes = 0;
phonetic = word = nullstring;
@@ -500,13 +498,11 @@ static char nullstring[] = {0};
{
text_mode = 1;
}
else
if(flagnum == 201)
else if(flagnum == 201)
{
text_mode = 0;
}
else
if(flagnum == BITNUM_FLAG_TEXTMODE)
else if(flagnum == BITNUM_FLAG_TEXTMODE)
{
text_not_phonemes = 1;
}
@@ -536,8 +532,7 @@ static char nullstring[] = {0};
word = p+1;
step = 1;
}
else
if(!isspace2(c))
else if(!isspace2(c))
{
word = p;
step = 1;
@@ -571,8 +566,7 @@ static char nullstring[] = {0};
step = 3;
}
}
else
if(c == ')')
else if(c == ')')
{
if(multiple_words)
{
@@ -580,8 +574,7 @@ static char nullstring[] = {0};
multiple_words = 0;
step = 3;
}
else
if(word[0] != '_')
else if(word[0] != '_')
{
fprintf(f_log, "%5d: Missing '('\n", linenum);
error_count++;
@@ -595,8 +588,7 @@ static char nullstring[] = {0};
{
multiple_words++;
}
else
if(c == ')')
else if(c == ')')
{
p[0] = ' '; // terminate extra string
multiple_string_end = p+1;
@@ -641,8 +633,8 @@ static char nullstring[] = {0};
// This is a special word, used by eSpeak. Translate this into phonemes now
strcat(phonetic, " "); // need a space to indicate word-boundary

// PROBLEM vowel reductions are not applied to the translated phonemes
// condition rules are not applied
// PROBLEM vowel reductions are not applied to the translated phonemes
// condition rules are not applied
TranslateWord(translator,phonetic,0,NULL,NULL);
text_not_phonemes = 0;
strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4);
@@ -653,11 +645,11 @@ static char nullstring[] = {0};
error_need_dictionary++;
fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum);
}
{
{
//char decoded_phonemes[128];
//DecodePhonemes(word_phonemes,decoded_phonemes);
//printf("Translator %x %s [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes);
}
}
}
else
{
@@ -694,8 +686,7 @@ static char nullstring[] = {0};
ix = utf8_out(wc, word);
word[ix] = 0;
}
else
if(word[0] != '_')
else if(word[0] != '_')
{
// convert to lower case, and note if the word is all-capitals
int c2;
@@ -1082,8 +1073,7 @@ static void copy_rule_string(char *string, int &state)
fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum);
error_count++;
}
else
if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
else if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
{
fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c);
error_count++;
@@ -1162,9 +1152,9 @@ static void copy_rule_string(char *string, int &state)
case 'a':
sxflags |= SUFX_A;
break;
case 'm':
sxflags |= SUFX_M;
break;
case 'm':
sxflags |= SUFX_M;
break;
default:
if(isdigit(c))
value = (value*10) + (c - '0');
@@ -1376,11 +1366,11 @@ int __cdecl string_sorter(char **a, char **b)
char *pa, *pb;
int ix;

if((ix = strcmp(pa = *a,pb = *b)) != 0)
return(ix);
if((ix = strcmp(pa = *a,pb = *b)) != 0)
return(ix);
pa += (strlen(pa)+1);
pb += (strlen(pb)+1);
return(strcmp(pa,pb));
return(strcmp(pa,pb));
} /* end of string_sorter */


@@ -1471,12 +1461,12 @@ static void print_rule_group(FILE *f_out, int n_rules, char **rules, char *name)
if(rule_pre[0] != 0)
{
p = buf;
for(ix=strlen(rule_pre)-1;ix>=0;ix--)
for(ix=strlen(rule_pre)-1; ix>=0; ix--)
*p++ = rule_pre[ix];
sprintf(p,") ");
spaces -= strlen(buf);
for(ix=0; ix<spaces; ix++)
fputc(' ',f_out);
fputc(' ',f_out);
fprintf(f_out,"%s",buf);
spaces = 0;
}
@@ -1580,7 +1570,7 @@ static int compile_lettergroup(char *input, FILE *f_out)
int length;
int max_length = 0;

#define N_LETTERGP_ITEMS 200
#define N_LETTERGP_ITEMS 200
char *items[N_LETTERGP_ITEMS];
char item_length[N_LETTERGP_ITEMS];

@@ -1797,37 +1787,37 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
break;

case 2: // .replace
{
int replace1;
int replace2;
char *p;

p = buf;
replace1 = 0;
replace2 = 0;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20) // not space or zero-byte
{
int replace1;
int replace2;
char *p;

p = buf;
replace1 = 0;
replace2 = 0;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20) // not space or zero-byte
{
p += utf8_in(&c,p);
replace1 += (c << ix);
ix += 16;
}
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20)
{
p += utf8_in(&c,p);
replace2 += (c << ix);
ix += 16;
}
if(replace1 != 0)
{
Write4Bytes(f_out,replace1); // write as little-endian
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary()
}
p += utf8_in(&c,p);
replace1 += (c << ix);
ix += 16;
}
break;
while(isspace2(*p)) p++;
ix = 0;
while((unsigned char)(*p) > 0x20)
{
p += utf8_in(&c,p);
replace2 += (c << ix);
ix += 16;
}
if(replace1 != 0)
{
Write4Bytes(f_out,replace1); // write as little-endian
Write4Bytes(f_out,replace2); // if big-endian, reverse the bytes in LoadDictionary()
}
}
break;
}
}
fclose(f_temp);

+ 272
- 301
src/dictionary.cpp
File diff suppressed because it is too large
View File


+ 410
- 412
src/numbers.cpp
File diff suppressed because it is too large
View File


+ 13
- 13
src/phonemelist.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2011 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -133,7 +133,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
PHONEME_LIST2 *plist2;
WORD_PH_DATA worddata;

memset(&worddata, 0, sizeof(worddata));
memset(&worddata, 0, sizeof(worddata));
plist2 = ph_list2;
phlist = phoneme_list;
end_sourceix = plist2[n_ph_list2-1].sourceix;
@@ -142,7 +142,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
max_stress = 0;
for(j = n_ph_list2-3; j>=0; j--)
{
// start with the last phoneme (before the terminating pauses) and move forwards
// start with the last phoneme (before the terminating pauses) and move backwards
if((plist2[j].stresslevel & 0x7f) > max_stress)
max_stress = plist2[j].stresslevel & 0x7f;
if(plist2[j].sourceix != 0)
@@ -204,21 +204,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
{
voicing = 1;
}
else
if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants
else if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants
{
plist2[j].phcode = ph->end_type; // change to voiced equivalent
}
}
else
if((type==phVSTOP) || type==(phVFRICATIVE))
else if((type==phVSTOP) || type==(phVFRICATIVE))
{
if((voicing==0) && (regression & 0xf))
{
voicing = 2;
}
else
if((voicing==1) && (ph->end_type != 0))
else if((voicing==1) && (ph->end_type != 0))
{
plist2[j].phcode = ph->end_type; // change to unvoiced equivalent
}
@@ -331,6 +328,9 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)

if(plist3->phcode == phonSWITCH)
{
if((plist3[1].phcode == phonSWITCH) || ((plist3[1].type == phPAUSE) && (plist3[2].phcode == phonSWITCH)))
continue; // next phoneme is also a phonSWITCH, so ignore

// change phoneme table
SelectPhonemeTable(plist3->tone_ph);
switched_language ^= SFLAG_SWITCHED_LANG;
@@ -580,18 +580,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].newword = 2; // end of clause

phlist[ix].phcode = phonPAUSE;
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes
phlist[ix].type = phPAUSE; // terminate with 2 Pause phonemes
phlist[ix].length = post_pause; // length of the pause, depends on the punctuation
phlist[ix].sourceix = end_sourceix;
phlist[ix].synthflags = 0;
phlist[ix++].ph = phoneme_tab[phonPAUSE];
phlist[ix++].ph = phoneme_tab[phonPAUSE];

phlist[ix].phcode = phonPAUSE;
phlist[ix].type = phPAUSE;
phlist[ix].type = phPAUSE;
phlist[ix].length = 0;
phlist[ix].sourceix=0;
phlist[ix].synthflags = 0;
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];
phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];

n_phoneme_list = ix;
} // end of MakePhonemeList

+ 18
- 9
src/readclause.cpp View File

@@ -842,14 +842,13 @@ static int LoadSoundFile2(const char *fname)


static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause)
{//==========================================================================================================
{//=============================================================================================================
// announce punctuation names
// c1: the punctuation character
// c2: the following character

int punct_count;
const char *punctname;
int found = 0;
const char *punctname = NULL;
int soundicon;
int attributes;
int short_pause;
@@ -858,6 +857,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
int bufix1;
char buf[200];
char buf2[80];
char ph_buf[30];

c2 = *c2_ptr;
buf[0] = 0;
@@ -867,12 +867,24 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
// add an embedded command to play the soundicon
sprintf(buf,"\001%dI ",soundicon);
UngetC(c2);
found = 1;
}
else
if((punctname = LookupCharName(tr, c1, 0)) != NULL)
{
found = 1;
if((c1 == '.') && (end_clause) && (c2 != '.'))
{
if(LookupSpecial(tr, "_.p", ph_buf))
{
punctname = ph_buf; // use word for 'period' instead of 'dot'
}
}
if(punctname == NULL)
{
punctname = LookupCharName(tr, c1, 0);
}

if(punctname == NULL)
return(-1);

if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
{
punct_count=1;
@@ -932,9 +944,6 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
}
}

if(found == 0)
return(-1);

bufix1 = *bufix;
len = strlen(buf);
strcpy(&output[*bufix],buf);

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.46.44 08.Mar.13";
const char *version_string = "1.46.45 10.Mar.13";
const int version_phdata = 0x014640;

int option_device_number = -1;

+ 48
- 41
src/tr_languages.cpp View File

@@ -79,7 +79,7 @@ ALPHABET alphabets [] = {
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, 0, 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, 0, 0},
{"_gur", OFFSET_GURMUKHI, 0xa00, 0xa7f, L('p','a'), AL_WORDS},
{"_gu", OFFSET_GUJARATI, 0xa80, 0xaff, 0, 0},
{"_or", OFFSET_ORIYA, 0xb00, 0xb7f, 0, 0},
{"_ta", OFFSET_TAMIL, 0xb80, 0xbff, L('t','a'), AL_WORDS},
@@ -94,24 +94,26 @@ ALPHABET alphabets [] = {
{"_ka", OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
{"_ko", OFFSET_KOREAN, 0x1100,0x11ff, 0, 0},
{"_eth", OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
{"_ja", 0x3040, 0x3040,0x30ff, 0, AL_NOT_CODE},
{"_zh", 0x3100, 0x3100,0x9fff, 0, AL_NOT_CODE},
{NULL, 0, 0, 0, 0, 0}
};


ALPHABET *AlphabetFromChar(int c)
{//===============================
// Find the alphabet from a character.
ALPHABET *alphabet = alphabets;
while(alphabet->name != NULL)
{
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
{
return(alphabet);
}
alphabet++;
}
return(NULL);
// Find the alphabet from a character.
ALPHABET *alphabet = alphabets;
while(alphabet->name != NULL)
{
if((c >= alphabet->range_min) && (c <= alphabet->range_max))
{
return(alphabet);
}
alphabet++;
}
return(NULL);
}


@@ -514,7 +516,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
tr->letter_bits_offset = OFFSET_BENGALI;
SetIndicLetters(tr); // call this after setting OFFSET_BENGALI
SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama
@@ -601,7 +603,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->letter_bits_offset = OFFSET_THAANA;
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30); // vowel signs, and virama
tr->langopts.break_numbers = 0x14a8; // 1000, 100,000 10,000,000
tr->langopts.numbers = 1;
@@ -705,7 +707,7 @@ Translator *SelectTranslator(const char *name)

// stress last syllable if it doesn't end in vowel or "s" or "n"
// 'diminished' is an unstressed final syllable
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.unstressed_wd1 = 0;
tr->langopts.unstressed_wd2 = 2;
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels
@@ -715,18 +717,20 @@ Translator *SelectTranslator(const char *name)

if(name2 == L('c','a'))
{
// stress last syllable unless word ends with a vowel
tr->punct_within_word = ca_punct_within_word;
tr->langopts.stress_flags = 0x200 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
}
else
if(name2 == L('a','n'))
{
tr->langopts.stress_flags = 0x200 | 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
}
else
if(name2 == L_pap)
{
tr->langopts.stress_flags = 0x100 | 0x6 | 0x30; // stress last syllable unless word ends with a vowel
// stress last syllable unless word ends with a vowel
tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
}
else
{
@@ -786,7 +790,7 @@ Translator *SelectTranslator(const char *name)
SetupTranslator(tr,stress_lengths_fi,stress_amps_fi);

tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x56; // move secondary stress from light to a following heavy syllable
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY; // move secondary stress from light to a following heavy syllable
tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.long_stop = 130;

@@ -802,7 +806,7 @@ Translator *SelectTranslator(const char *name)
{
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.accents = 2; // Say "Capital" after the letter.
@@ -812,12 +816,12 @@ Translator *SelectTranslator(const char *name)
}
break;

case L('g','a'): // irish
{
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
}
break;
case L('g','a'): // irish
{
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.numbers = 1;
}
break;

case L('h','i'): // Hindi
case L('n','e'): // Nepali
@@ -831,7 +835,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable
tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
tr->langopts.numbers = NUM_SWAP_TENS;
tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -875,7 +879,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
tr->charset_a0 = charsets[2]; // ISO-8859-2

tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10;
tr->langopts.stress_flags = S_FINAL_NO_2;
tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
tr->langopts.max_initial_consonants = 5;
tr->langopts.spelling_stress = 1;
@@ -894,7 +898,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
case L('h','t'): // Haitian Creole
// memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths));
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = 0x0024; // don't use secondary stress
tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM; // don't use secondary stress
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4;
break;

@@ -909,7 +913,7 @@ SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);

tr->langopts.vowel_pause = 0x20;
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x8036 | S_HYPEN_UNSTRESS;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS;
tr->langopts.unstressed_wd1 = 2;
tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2; // don't break clause before announcing . ? !
@@ -942,7 +946,7 @@ SetLengthMods(tr,3); // all equal
SetLetterBits(tr,LETTERGP_C,hy_consonants);
tr->langopts.max_initial_consonants = 6;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
// tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
}
break;

@@ -954,7 +958,7 @@ SetLengthMods(tr,3); // all equal
SetupTranslator(tr,stress_lengths_id,stress_amps_id);
tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN;
tr->langopts.stress_flags = 0x6 | 0x10;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.accents = 2; // "capital" after letter name
}
break;
@@ -966,7 +970,7 @@ SetLengthMods(tr,3); // all equal

SetupTranslator(tr,stress_lengths_is,NULL);
tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = 0x10;
tr->langopts.stress_flags = S_FINAL_NO_2;
tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11; // remove lengthen indicator from unstressed vowels
tr->langopts.param[LOPT_REDUCE] = 2;

@@ -989,7 +993,7 @@ SetLengthMods(tr,3); // all equal

tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = 0x10 | S_PRIORITY_STRESS;
tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS;
tr->langopts.vowel_pause = 1;
tr->langopts.unstressed_wd1 = 2;
tr->langopts.unstressed_wd2 = 2;
@@ -1024,8 +1028,9 @@ SetLengthMods(tr,3); // all equal
{
// character codes offset by 0x1080
static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0};
static const char ka_consonants[] = {0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,
0x40,0x41,0x42,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
static const char ka_consonants[] =
{0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x41,0x42,0x44,
0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBits(tr,LETTERGP_A,ka_vowels);
@@ -1149,7 +1154,7 @@ SetLengthMods(tr,3); // all equal
tr->langopts.spelling_stress = 1;
tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT;
tr->langopts.stress_flags = 0x16 + 0x40000;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1;
}
break;

@@ -1496,14 +1501,14 @@ SetLengthMods(tr,3); // all equal
break;

case L('t','t'): // Tatar
{
{
SetCyrillicLetters(tr);
SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable
tr->langopts.stress_flags = S_NO_AUTO_2; //no automatic secondary stress
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4;
}
break;
}
break;

case L('u','k'): // Ukrainian
{
@@ -1513,10 +1518,12 @@ SetLengthMods(tr,3); // all equal
break;

case L('u','r'): // Urdu
{
tr->letter_bits_offset = OFFSET_ARABIC;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.numbers = NUM_SWAP_TENS;
tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
}
break;

case L('v','i'): // Vietnamese

+ 456
- 480
src/translate.cpp
File diff suppressed because it is too large
View File


+ 9
- 3
src/translate.h View File

@@ -275,7 +275,8 @@ extern ALPHABET *current_alphabet;
// alphabet flags
#define AL_DONT_NAME 0x01 // don't speak the alphabet name
#define AL_NOT_LETTERS 0x02 // don't use the language for speaking letters
#define AL_WORDS 0x04 // use the language to speak words
#define AL_WORDS 0x04 // use the language to speak words
#define AL_NOT_CODE 0x08 // don't speak the character code


#define N_LOPTS 21
@@ -402,12 +403,18 @@ typedef struct {
#define S_INITIAL_2 0x2000
// bit13= If there is only one syllable before the primary stress, give it a secondary stress

#define S_MID_DIM 0x10000
// bit 16= Set (not first or last) syllables to diminished stress

#define S_PRIORITY_STRESS 0x20000
// bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"

#define S_EO_CLAUSE1 0x40000
// bit18= don't lengthen short vowels more than long vowels at end-of-clause

#define S_FINAL_LONG 0x80000
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel


#define S_HYPEN_UNSTRESS 0x100000
// bit20= hyphenated words, 2nd part is unstressed
@@ -416,7 +423,6 @@ typedef struct {
// bit21= don't lengthen vowels at end-of-clause

// bit15= Give stress to the first unstressed syllable
// bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel


int stress_flags;
@@ -566,7 +572,7 @@ typedef struct
const char *transpose_map;
char dictionary_name[40];

char phon_out[400];
char phon_out[500];
char phonemes_repeat[20];
int phonemes_repeat_count;
int phoneme_tab_ix;

+ 185
- 182
src/voices.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2010 by Jonathan Duddington *
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -47,7 +47,8 @@ MNEM_TAB genders [] = {
{"unknown", 0},
{"male", 1},
{"female", 2},
{NULL, 0 }};
{NULL, 0 }
};

int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0};
//int tone_points[12] = {250,200, 400,170, 600,170, 1200,135, 2000,110, -1,0};
@@ -98,6 +99,7 @@ enum {
V_STRESSADD,
V_DICTRULES,
V_STRESSRULE,
V_STRESSOPT,
V_CHARSET,
V_NUMBERS,
V_OPTION,
@@ -118,7 +120,8 @@ enum {
static MNEM_TAB options_tab[] = {
{"reduce_t", LOPT_REDUCE_T},
{"bracket", LOPT_BRACKET_PAUSE},
{NULL, -1} };
{NULL, -1}
};

static MNEM_TAB keyword_tab[] = {
{"name", V_NAME},
@@ -128,7 +131,7 @@ static MNEM_TAB keyword_tab[] = {
{"formant", V_FORMANT},
{"pitch", V_PITCH},
{"phonemes", V_PHONEMES},
{"translator", V_TRANSLATOR},
{"translator", V_TRANSLATOR},
{"dictionary", V_DICTIONARY},
{"stressLength", V_STRESSLENGTH},
{"stressAmp", V_STRESSAMP},
@@ -137,6 +140,7 @@ static MNEM_TAB keyword_tab[] = {
{"tunes", V_TUNES},
{"dictrules", V_DICTRULES},
{"stressrule", V_STRESSRULE},
{"stressopt", V_STRESSOPT},
{"charset", V_CHARSET},
{"replace", V_REPLACE},
{"words", V_WORDGAP},
@@ -166,7 +170,8 @@ static MNEM_TAB keyword_tab[] = {
{"l_sonorant_min", 0x100+LOPT_SONORANT_MIN},
{"l_length_mods", 0x100+LOPT_LENGTH_MODS},
{"apostrophe", 0x100+LOPT_APOSTROPHE},
{NULL, 0} };
{NULL, 0}
};

#define N_VOICE_VARIANTS 12
const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
@@ -260,9 +265,9 @@ void ReadTonePoints(char *string, int *tone_pts)
tone_pts[ix] = -1;

sscanf(string,"%d %d %d %d %d %d %d %d %d %d",
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
&tone_pts[8],&tone_pts[9]);
&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
&tone_pts[8],&tone_pts[9]);
}


@@ -316,8 +321,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
while(isspace(*p)) p++;
strncpy0(vname,p,sizeof(vname));
}
else
if(memcmp(linebuf,"language",8)==0)
else if(memcmp(linebuf,"language",8)==0)
{
priority = DEFAULT_LANGUAGE_PRIORITY;
vlanguage[0] = 0;
@@ -334,13 +338,11 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
n_languages++;
}
}
else
if(memcmp(linebuf,"gender",6)==0)
else if(memcmp(linebuf,"gender",6)==0)
{
sscanf(&linebuf[6],"%s %d",vgender,&age);
}
else
if(memcmp(linebuf,"variants",8)==0)
else if(memcmp(linebuf,"variants",8)==0)
{
sscanf(&linebuf[8],"%d",&n_variants);
}
@@ -443,7 +445,7 @@ void VoiceReset(int tone_only)
// Adjustment of harmonic amplitudes, steps of 8Hz
// value of 128 means no change
// memset(voice->tone_adjust,128,sizeof(voice->tone_adjust));
SetToneAdjust(voice,tone_points);
SetToneAdjust(voice,tone_points);

// default values of speed factors
voice->speedf1 = 256;
@@ -517,7 +519,7 @@ static int Read8Numbers(char *data_in,int *data)
// Read 8 integer numbers
memset(data, 0, 8+sizeof(int));
return(sscanf(data_in,"%d %d %d %d %d %d %d %d",
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
}


@@ -557,7 +559,7 @@ voice_t *LoadVoice(const char *vname, int control)
char buf[sizeof(path_home)+30];
char path_voices[sizeof(path_home)+12];

int dict_min = 0;
int dict_min = 0;
int stress_amps[8];
int stress_lengths[8];
int stress_add[8];
@@ -572,11 +574,11 @@ voice_t *LoadVoice(const char *vname, int control)
static char voice_name[40]; // voice name for current_voice_selected
static char voice_languages[100]; // list of languages and priorities for current_voice_selected

// which directory to look for a named voice
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";
// which directory to look for a named voice
static const char *voices_asia =
"fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"bg bs ca cs cy da el es et fi fr-be hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";


strncpy0(voicename, vname, sizeof(voicename));
@@ -588,38 +590,37 @@ voice_t *LoadVoice(const char *vname, int control)
}
else
{
if(voicename[0]==0)
strcpy(voicename,"default");
if(voicename[0]==0)
strcpy(voicename,"default");

sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
sprintf(buf,"%s%s",path_voices,voicename); // first, look in the main voices directory

if(GetFileLength(buf) <= 0)
{
// then look in the appropriate subdirectory
if((voicename[0]=='m') && (voicename[1]=='b'))
{
voice_dir = "mb"; // mbrola voices
}
else
{
sprintf(name2, "%s ", voicename);
if(strstr(voices_europe, voicename) != NULL)
voice_dir = "europe";
else
if(strstr(voices_asia, voicename) != NULL)
voice_dir = "asia";
else
voice_dir = "other";

sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);

if(GetFileLength(buf) <= 0)
{
// if not found, look in "test" sub-directory
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
}
}
// then look in the appropriate subdirectory
if((voicename[0]=='m') && (voicename[1]=='b'))
{
voice_dir = "mb"; // mbrola voices
}
else
{
sprintf(name2, "%s ", voicename);
if(strstr(voices_europe, voicename) != NULL)
voice_dir = "europe";
else if(strstr(voices_asia, voicename) != NULL)
voice_dir = "asia";
else
voice_dir = "other";

sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);

if(GetFileLength(buf) <= 0)
{
// if not found, look in "test" sub-directory
sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
}
}
}
}

@@ -685,48 +686,48 @@ voice_t *LoadVoice(const char *vname, int control)
switch(key)
{
case V_LANGUAGE:
{
unsigned int len;
int priority;
{
unsigned int len;
int priority;

if(tone_only)
break;
if(tone_only)
break;

priority = DEFAULT_LANGUAGE_PRIORITY;
language_name[0] = 0;

priority = DEFAULT_LANGUAGE_PRIORITY;
language_name[0] = 0;
sscanf(p,"%s %d",language_name,&priority);
if(strcmp(language_name,"variant") == 0)
break;

sscanf(p,"%s %d",language_name,&priority);
if(strcmp(language_name,"variant") == 0)
break;
len = strlen(language_name) + 2;
// check for space in languages[]
if(len < (sizeof(voice_languages)-langix-1))
{
voice_languages[langix] = priority;

len = strlen(language_name) + 2;
// check for space in languages[]
if(len < (sizeof(voice_languages)-langix-1))
{
voice_languages[langix] = priority;
strcpy(&voice_languages[langix+1],language_name);
langix += len;
}

strcpy(&voice_languages[langix+1],language_name);
langix += len;
}
// only act on the first language line
if(language_set == 0)
{
language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);

// only act on the first language line
if(language_set == 0)
{
language_type = strtok(language_name,"-");
language_set = 1;
strcpy(translator_name,language_type);
strcpy(new_dictionary,language_type);
strcpy(phonemes_name,language_type);
SelectPhonemeTableName(phonemes_name);

if(new_translator != NULL)
DeleteTranslator(new_translator);

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
}
if(new_translator != NULL)
DeleteTranslator(new_translator);

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
}
break;
}
break;

case V_NAME:
if(tone_only == 0)
@@ -737,14 +738,14 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_GENDER:
{
int age = 0;
char vgender[80];
sscanf(p,"%s %d",vgender,&age);
current_voice_selected.gender = LookupMnem(genders,vgender);
current_voice_selected.age = age;
}
break;
{
int age = 0;
char vgender[80];
sscanf(p,"%s %d",vgender,&age);
current_voice_selected.gender = LookupMnem(genders,vgender);
current_voice_selected.age = age;
}
break;

case V_TRANSLATOR:
if(tone_only) break;
@@ -752,7 +753,7 @@ voice_t *LoadVoice(const char *vname, int control)
sscanf(p,"%s",translator_name);

if(new_translator != NULL)
DeleteTranslator(new_translator);
DeleteTranslator(new_translator);

new_translator = SelectTranslator(translator_name);
langopts = &new_translator->langopts;
@@ -771,16 +772,16 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_PITCH:
{
double factor;
// default is pitch 82 118
n = sscanf(p,"%d %d",&pitch1,&pitch2);
voice->pitch_base = (pitch1 - 9) << 12;
voice->pitch_range = (pitch2 - pitch1) * 108;
factor = double(pitch1 - 82)/82;
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
}
break;
{
double factor;
// default is pitch 82 118
n = sscanf(p,"%d %d",&pitch1,&pitch2);
voice->pitch_base = (pitch1 - 9) << 12;
voice->pitch_range = (pitch2 - pitch1) * 108;
factor = double(pitch1 - 82)/82;
voice->formant_factor = (int)((1+factor/4) * 256); // nominal formant shift for a different voice pitch
}
break;

case V_STRESSLENGTH: // stressLength
stress_lengths_set = Read8Numbers(p,stress_lengths);
@@ -817,7 +818,8 @@ voice_t *LoadVoice(const char *vname, int control)

case V_DICTRULES: // conditional dictionary rules and list entries
case V_NUMBERS:
// expect a list of numbers
case V_STRESSOPT:
// expect a list of numbers
while(*p != 0)
{
while(isspace(*p)) p++;
@@ -825,16 +827,22 @@ voice_t *LoadVoice(const char *vname, int control)
if((n = atoi(p)) > 0)
{
p++;
if((key==V_DICTRULES) && (n < 32))
conditional_rules |= (1 << n);
if(n < 32)
{
if(key==V_DICTRULES)
conditional_rules |= (1 << n);
else if(key==V_NUMBERS)
langopts->numbers |= (1 << n);
else if(key==V_STRESSOPT)
langopts->stress_flags |= (1 << n);
}
else
if((key==V_NUMBERS) && (n < 32))
langopts->numbers |= (1 << n);
else
if((key==V_NUMBERS) && (n < 64))
langopts->numbers |= (1 << (n-32));
else
fprintf(stderr,"Bad option number %d\n", n);
{
if((key==V_NUMBERS) && (n < 64))
langopts->numbers |= (1 << (n-32));
else
fprintf(stderr,"Bad option number %d\n", n);
}
}
while(isalnum(*p)) p++;
}
@@ -856,9 +864,9 @@ voice_t *LoadVoice(const char *vname, int control)

case V_STRESSRULE:
sscanf(p,"%d %d %d %d",&langopts->stress_rule,
&langopts->stress_flags,
&langopts->unstressed_wd1,
&langopts->unstressed_wd2);
&langopts->stress_flags,
&langopts->unstressed_wd1,
&langopts->unstressed_wd2);
break;

case V_CHARSET:
@@ -909,12 +917,12 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_TONE:
{
int tone_data[12];
ReadTonePoints(p,tone_data);
SetToneAdjust(voice,tone_data);
}
break;
{
int tone_data[12];
ReadTonePoints(p,tone_data);
SetToneAdjust(voice,tone_data);
}
break;

case V_VOICING:
if(sscanf(p,"%d",&value)==1)
@@ -922,16 +930,16 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_BREATH:
voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
for(ix=1; ix<8; ix++)
{
if(ix % 2)
voice->breath[ix] = -voice->breath[ix];
}
voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
for(ix=1; ix<8; ix++)
{
if(ix % 2)
voice->breath[ix] = -voice->breath[ix];
}
break;

case V_BREATHW:
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
break;

case V_CONSONANTS:
@@ -943,20 +951,20 @@ voice_t *LoadVoice(const char *vname, int control)
break;

case V_MBROLA:
{
int srate = 16000;
char name[40];
char phtrans[40];
{
int srate = 16000;
char name[40];
char phtrans[40];

phtrans[0] = 0;
sscanf(p,"%s %s %d",name,phtrans,&srate);
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK)
{
fprintf(stderr,"mbrola voice not found\n");
}
voice->samplerate = srate;
phtrans[0] = 0;
sscanf(p,"%s %s %d",name,phtrans,&srate);
if(LoadMbrolaTable(name,phtrans,srate) != EE_OK)
{
fprintf(stderr,"mbrola voice not found\n");
}
break;
voice->samplerate = srate;
}
break;

case V_KLATT:
voice->klattv[0] = 1; // default source: IMPULSIVE
@@ -969,9 +977,9 @@ voice_t *LoadVoice(const char *vname, int control)
SetSpeed(3);
break;

case V_DICTMIN:
case V_DICTMIN:
sscanf(p,"%d",&dict_min);
break;
break;

default:
if((key & 0xff00) == 0x100)
@@ -1015,7 +1023,7 @@ voice_t *LoadVoice(const char *vname, int control)
}
voice->phoneme_tab_ix = ix;
new_translator->phoneme_tab_ix = ix;
new_translator->dict_min_size = dict_min;
new_translator->dict_min_size = dict_min;
LoadDictionary(new_translator, new_dictionary, control & 4);
if(dictionary_name[0]==0)
return(NULL); // no dictionary loaded
@@ -1255,15 +1263,14 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
// match on voice name
score += 500;
}
else
if(strcmp(voice_spec->name,voice->identifier)==0)
else if(strcmp(voice_spec->name,voice->identifier)==0)
{
score += 400;
}
}

if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) &&
((voice->gender == 1) || (voice->gender == 2)))
((voice->gender == 1) || (voice->gender == 2)))
{
if(voice_spec->gender == voice->gender)
score += 50;
@@ -1395,8 +1402,7 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2)
{
match_fname = ix; // matching identifier, use this if no matching name
}
else
if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
else if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
{
match_fname2 = ix;
}
@@ -1493,8 +1499,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
gender = 0;
if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
gender = 2;
else
if(voice_select2.gender == 1)
else if(voice_select2.gender == 1)
gender = 1;

#define AGE_OLD 60
@@ -1625,8 +1630,8 @@ static void GetVoices(const char *path)
}
#else
#ifdef PLATFORM_WINDOWS
WIN32_FIND_DATAA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;

#undef UNICODE // we need FindFirstFileA() which takes an 8-bit c-string
sprintf(fname,"%s\\*",path);
@@ -1640,30 +1645,29 @@ static void GetVoices(const char *path)

if(FindFileData.cFileName[0] != '.')
{
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
ftype = GetFileLength(fname);

if(ftype == -2)
{
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
ftype = GetFileLength(fname);

if(ftype == -2)
{
// a sub-sirectory
GetVoices(fname);
}
else if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
continue;

// pass voice file name within the voices directory
voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
fclose(f_voice);

if(voice_data != NULL)
{
voices_list[n_voices_list++] = voice_data;
}
}
}
} while(FindNextFileA(hFind, &FindFileData) != 0);
FindClose(hFind);
@@ -1680,8 +1684,8 @@ static void GetVoices(const char *path)
if(n_voices_list >= (N_VOICES_LIST-2))
break; // voices list is full

if(ent->d_name[0] == '.')
continue;
if(ent->d_name[0] == '.')
continue;

sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name);

@@ -1692,8 +1696,7 @@ static void GetVoices(const char *path)
// a sub-sirectory
GetVoices(fname);
}
else
if(ftype > 0)
else if(ftype > 0)
{
// a regular line, add it to the voices list
if((f_voice = fopen(fname,"r")) == NULL)
@@ -1728,7 +1731,7 @@ espeak_ERROR SetVoiceByName(const char *name)

variant_name = ExtractVoiceVariantName(buf, 0, 1);

for(ix=0; ;ix++)
for(ix=0; ; ix++)
{
// convert voice name to lower case (ascii)
if((buf[ix] = tolower(buf[ix])) == 0)
@@ -1833,7 +1836,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)

// sort the voices list
qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *),
(int (__cdecl *)(const void *,const void *))VoiceNameSorter);
(int (__cdecl *)(const void *,const void *))VoiceNameSorter);


if(voice_spec)

Loading…
Cancel
Save