Browse Source

[1.47.03c]

Phoneme definition files: added prev2PhW() and next3PhW().
Added language: ms (Malay).


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@332 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 12 years ago
parent
commit
61edd2d38f

+ 16
- 13
dictsource/bn_list View File

@@ -16,22 +16,22 @@ _9 n'Oj

_10 d'OS
_11 '&garo
_12 b'aro
_13 t'ero
_14 tS'owddo
_15 p'Onero
_16 S'olo
_17 S'Otero
_18 'at.#aro
_12 b'arO
_13 t'erO
_14 tS'owddO
_15 p'OnerO
_16 S'olO
_17 S'OterO
_18 'at.#arO
_19 'uniS

_20 b'iS // ??
_20 k'uri // or b'iS ??
_21 'ekuS
_22 b'ajS
_23 t'ejS
_24 tS'ObbiS
_25 p'O~tSiS
_26 tS#'ObbiS
_26 tSh'ObbiS
_27 S'ataS
_28 'at.#aS
_29 'untriS
@@ -108,14 +108,17 @@ _dpt dOsomik
ধ d#O
ন d'ontennO
প pO
ফ p#O
fO // or [p#O] ?
ব bO
ভ b#O
ম mO
য় Oj
য ontostedZ'O
র rO
ঢ় hrO
ড় r.O
ড় r.O // (d. + nukta)
ঢ় hr.O
ঢ় hr.O // (d#. + nukta)
ল lO
শ taleboS:O
ষ mud#en:oS:O
@@ -124,8 +127,8 @@ _dpt dOsomik
ৎ kh'Ond.otO

// full vowels
SOro'O
SOro'a
অ O
আ a
ই hrOS:o'i
ঈ dirg#o'i
উ hrOS:o'u

+ 23
- 45
dictsource/bn_rules View File

@@ -136,57 +136,47 @@
ৌ ow
ৌঁ o~w

// Consonants

.group ক
ক kV
ক (B k
ক (_ k

.group খ
খ k#V
খ (B k#
খ (_ k#
.group গ
গ gV
গ (B g
গ (_ g


.group ঘ
ঘ g#V
ঘ (B g#
ঘ (_ g#

.group ঙ
ঙ NV
ঙ্ (B N
ঙ্ (_ N


.group চ
চ tSV
চ (B tS
চ (_ tS


.group ছ
ছ tS#V
ছ (B tS#
ছ (_ tS#

.group জ
জ JV
জ (B J
জ (_ J
জ্ব JV
জ্ব (B J
@@ -197,142 +187,122 @@
.group ঝ
ঝ J#V
ঝ (B J#
ঝ (_ J#

.group ঞ
ঞ nV
ঞ্ (B n
ঞ্ (_ n

.group ট
ট t.V
ট (B t.
ট (_ t.


.group ঠ
ঠ t.#V
ঠ (B t.#
ঠ (_ t.#

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

ড় r.V // nukta
ড় (B r.

.group ঢ
ঢ d.#V
ঢ (B d.#
ঢ (_ d.#
ঢ d.#V
ঢ (B d.#

ঢ় hr.V
ঢ় (B hr.
.group ণ
ণ nV // should be [n.] if adjacent to t. or d. ?
ণ (B n
ণ (_ n



.group ত
ত tV
ত (B t
ত (_ t

.group থ
থ t#V
থ (B t#
থ (_ t#


.group দ
দ dV
দ (B d
দ (_ d


.group ধ
ধ d#V
ধ (B d#
ধ (_ d#


.group ন
ন nV
ন (B n
ন (_ n

.group প
প pV
প (B p
প (_ p

.group ফ
ফ fV // or [p#] ?
ফ (B f
ফ (_ f

.group ব
ব bV
ব (B b
ব (_ b

.group ভ
ভ b#V
ভ (B b#
ভ (_ b#

.group ম
ম mV
ম (B m
ম (_ m

.group য়
য় jV
য় (B j
য় (_ j

.group য
য dZV
য (B dZ
য (_ dZ
য় jV // nukta
য় (B j
@) য় (_ j

.group র
র rV
র (B r
র (_ r
্) র (_ rV

.group ল
ল lV
ল (B l
ল (_ l



.group শ
শ SV // or [s] ?
শ (B S
শ (_ S
শ (্ল s
@@ -341,7 +311,6 @@
.group ষ
ষ SV
ষ (B S
ষ (_ S

.group স
@@ -358,26 +327,25 @@
.group হ
হ hV
হ (B h
হ (_ h

.group হ্ব
হ্ব vV
হ্ব (B v
হ্ব (_ v

.group ৎ
ৎ t


.group ড়
ড় r.V
ড় (B r.
.group ড় // can be ড plus nukta
ড় r.V
ড় (B r.

.group ঢ়
ঢ় r.V
ঢ় (B r.
.group ঢ় // can be ঢ plus nukta
ঢ় hr.V
ঢ় (B hr.


@@ -399,4 +367,14 @@



.group
// obsolete letters
ঋ r-
ৠ r-
ঌ l-
ৡ l-
ৃ r-
ৄ r-
ৢ l-
ৣ l-


+ 26
- 152
dictsource/dict_phonemes View File

@@ -46,17 +46,6 @@ Q r R R2 s S t T
t# tS w x


Dictionary az_dict 2010-07-27

& @ a e E i o u
W y

* b c C d dZ f g
h j J k l m n p
Q R s S t tS v w
x z Z


Dictionary bg_dict 2013-03-16

@ a e i o u
@@ -68,28 +57,17 @@ s; t t; tS ts v x z
Z z;


Dictionary bn_dict 2013-03-22
Dictionary bn_dict 2013-03-25

& a a~ e e~ i i~ l-
o O o: O~ o~ u u~ V
o O o: O~ o~ r- u u~
V

: b b# d d# d. d.# dZ
f g g# h H j J J#
k k# l m n N n. p
p# r r. s S t t# t.
t.# tS tS# v w ~


Dictionary bo_dict 2013-03-09

a a: e e: i i: l- o
o: r- u u:

: ? b b# c c# d d#
d. d.# dz dz# g g# H j
J k k# l m n N n.
n^ p p# r s S s. t
t# t. t.# ts ts# w z Z
r r. s S t t# t. t.#
tS tS# v w ~


Dictionary ca_dict 2010-07-27
@@ -159,20 +137,6 @@ S t tS ts v w x z
Z


Dictionary dv_dict 2013-03-09

@ @2 a a: aI e e: E:
E~ i I i: o O o: O:
O~ u U u: V

: ? b c c# d D d.
dZ f g h j k k# l
l. m n N n. n^ p Q
q r R s S s. t T
t# t. t.# tS v w x z
Z


Dictionary el_dict 2011-05-19

a aI e i o oI u
@@ -183,7 +147,7 @@ p Q r R s s; t T
ts v x z


Dictionary en_dict 2013-03-22
Dictionary en_dict 2013-03-25

0 0# 3 3: @ @- @2 @5
@L a a# A: A@ aa aI aI3
@@ -321,16 +285,6 @@ q r r. s S s. t T
t# t. t.# v w x z


Dictionary ht_dict 2010-06-29

a A~ e E E~ i o O
O~ u w y

; b d f g j k l
m n N p r s S t
tS v z Z


Dictionary hu_dict 2013-03-22

a A a: e E e: i i:
@@ -411,17 +365,6 @@ t# tS ts ts# v w x z
Z


Dictionary kk_dict 2011-12-07

& 8 a A e E i I
o u U u# Y

; b d f g G h j
k l m n N p q r
s S t tS v w X z
Z


Dictionary kl_dict 2013-03-18

& 3 @ @- a aI e E
@@ -530,18 +473,6 @@ r R r. R2 s s. S; t
t# t. t.# tS v w z


Dictionary mt_dict 2011-07-29

@ a ai au e ei eu i
I ie iu l- o u U ui
y yi yY

* : b c C d dZ f
g h j k l m n p
q r s S t tS v w
x z Z


Dictionary nci_dict 2010-01-20

a e i o O
@@ -592,18 +523,6 @@ k l m n N p r R
s S s; t v w x z


Dictionary nso_dict 2010-08-27

@ a e E i m- n- N-
o u U

- : ; b B d D dZ
f h j J k K l l#
m n N n^ p Q R3 s
S t tS v w x X x2
z


Dictionary pap_dict 2010-07-27

a a/ aI e E eI i o
@@ -641,16 +560,7 @@ S s; S; t t; tS ts tS;
ts; v w x z Z Z;


Dictionary prs_dict 2009-12-01

@ A E eI i o u

: b d dZ f g h j
k l m n p r R s
S t tS v w X z Z


Dictionary pt_dict 2013-03-17
Dictionary pt_dict 2013-03-25

& &/ &U~ &~ @ @- a A
aI aU e E eI EI eU EU
@@ -702,15 +612,16 @@ N n^ p q R s S S;
t tS v w x z


Dictionary si_dict 2013-01-18
Dictionary si_dict 2013-03-23

& &: @ a a: aI aU e
e: i i: o o: u u:

b d d. dZ f g h j
k l l. m m# n N n#
N# n. n.# n^ n^# p r s
S s. t t. tS v w
#@ b b# d d# d. d.# dZ
f g g# h j k k# l
l. m m# n N n# N# n.
n.# n^ n^# p p# r s S
s. t t# t. t.# tS v w


Dictionary sk_dict 2011-08-08
@@ -761,7 +672,7 @@ k l m n N p R s
S s. S; sx t v w z


Dictionary sw_dict 2008-11-27
Dictionary sw_dict 2013-03-23

@- a a/ e i m- n- N-
o u
@@ -785,31 +696,6 @@ Q r R s S s. t T
t# t. tS v w z z.


Dictionary te_dict 2013-03-16

a a: aI aU e E e: i
i: l- o o: r- u u: V

#X1 #X2 : ; b b# c c#
d d# d. d.# dZ f g g#
h j J J# k k# l l.
m n N n. n^ p p# r
s s. S; t t# t. t.# tS
v w z


Dictionary tn_dict 2011-02-17

@- a e i m- n- N- o
u

* - : b B d D dZ
f g h j J k K l
l# m n N n^ p Q r
R R3 s S t T tS ts
v w x X z


Dictionary tr_dict 2011-09-16

@ a e E i I o O
@@ -821,17 +707,6 @@ p Q r R s S t tS
v w z Z


Dictionary tt_dict 2012-09-14

& a A e e2 e: i I
o u u2 V W y

: ? b d f g h j
k l m n N p q r
R s S S; t w x z
Z Z;


Dictionary ur_dict 2013-03-13

@ a a: aI aU e E e:
@@ -859,18 +734,6 @@ N n^ p Q s s. t t[
v w x z Z z.


Dictionary wo_dict 2010-11-30

@ @: a a: e E e: E:
i i: m- n- N- o O O:
o: u u:

: b c d f g h j
J k l m n N n^ p
q R R2 s s2 t v w
x z


Dictionary zh_dict 2013-01-25

@ @r a A ai Au E ei
@@ -885,7 +748,7 @@ s. S; t th ts ts. ts.h tS;
tS;h tsh v w x X z.


Dictionary zhy_dict 2009-01-19
Dictionary zhy_dict 2013-03-25

a aa aai aang aau ai au e
ei eo eoi eu i iu o oe
@@ -894,3 +757,14 @@ oi ong ou u ui yu
b c d f g h j k
l m n N p r s t
tS v w z


Dictionary ms_dict 2010-10-14

@ a aI aU e E E2 eI
i o O u

* : ? b c d dZ f
g h j k l m n N
n^ p r R R2 s S t
tS v w x z

+ 20
- 8
dictsource/en_list View File

@@ -150,12 +150,14 @@ _¨ daIa#r'i:sIs
_ª fEmI2nIn'O@dI2n@L
_« lEft'gIl@mEt
_­ makr0n
² tu:
³ Tri:
_¹ su:p@skrIptw'0n
_² su:p@skrIptt'u:
_³ su:p@skrIptT'ri:
_´ a#kju:taksEnt
_· mId@Ld0t
_¸ sEd'Il@
_¹ su:p@skrIptw'0n
//_º maskjUlIn'O@dI2n@L
_º dI2gr'i:z
_» raIt'gIl@mEt
@@ -943,7 +945,7 @@ blancmange bl@m0nZ
blase blA:z'eI
blasé blA:z'eI
bleh blEh
blockade $2
blockade bl0k'eId
blouse blaUz
bluest blu:@st
blurry bl3:rI
@@ -1279,6 +1281,7 @@ dais deIIs
dandelion dandI2laI@n
ddu DI $only // Welsh
de d@ $only
(de jure) deIdZ'U@ri
debacle deIb'A:k@L
debrief di:br'i:f
debris dEbri:
@@ -1429,6 +1432,8 @@ ember Emb3
emphasis Emf@sIs $only
empire $1
emu i:mju:
(en masse) 0n||m'as
(en route) 0n||r'u:t
enroute 0nr'u:t
ensemble 0ns'0mb@L
entendre 0nt'0ndr@-
@@ -1674,6 +1679,7 @@ hello h@loU
henceforth hEnsfo@T
?3 herb 3:b
hercules h3:kjUli:z
?3 hereford h3:f3d
heretical hI2rEtI2k@L
hereto hi@3'tu:
heretofore hi@3t2Ufo@
@@ -1697,6 +1703,7 @@ holme hoUm
holster hoUlst3
homeowner hoUmoUn3
homepage hoUmpeIdZ
homily h0m@li
hominem h0mInEm
?3 hominem h0m@n@m
hooah h'u:'A:
@@ -1802,6 +1809,8 @@ interven Int3v'i:n // for intervening
intray IntreI
intro $1
?3 investigative Inv,EstI2g'eItIv
ipad aIpad
iphone aIfoUn
irate aIr'eIt
iris aIrIs
iron aI3n
@@ -2822,6 +2831,7 @@ tonne tVn
torment $1
torment $2 $verb
tornado tO@n'eIdoU
torrential t@rEnS@L
tortilla tO@t'i:a#
touche tu:SeI $only
toupee tu:peI
@@ -2835,6 +2845,7 @@ trajectory tr@dZEkt@rI
traverse $alt3
travesty trav@sti
treatise tri:tIz
trebuchet trEbUSeI
tremendous $alt3
triage tri:A:Z
tribunal traIb'ju:n@L
@@ -3337,6 +3348,7 @@ Tokyo toUkIoU
Topeka toUp'i:k@
Toronto t@r0ntoU
Toulouse tu:l'u:z
Trafalgar $alt3
?3 Tunisia tu:n'i:Z@
Tripoli trIp@li
tuareg twA@rEg
@@ -3500,6 +3512,7 @@ Evette I2vEt
Fainne fan;@
Freda fri:d@
Fírinne fi:rIn;@
Gareth gar@T
Gary gari
Geraint gEraInt
Gerhard ge@hA@t
@@ -3672,6 +3685,7 @@ Susanne $2
Suzy su:zi
Tatiana tatI'A:n@
?3 Tatiana tA:tj'A:n@
Terese t@reIz
Theresa t@ri:z@
Therese t@ri:z
Thomas t0m@s
@@ -3762,9 +3776,7 @@ zhivago ZI2vA:goU



(de jure) deIdZ'U@ri
(en masse) ,0n||m'as
(en route) ,0n||r'u:t

(each of) i:tS||@v $pause
(far more) f'A@_m,o@
(few more) f'ju:m,o@
@@ -3775,9 +3787,9 @@ zhivago ZI2vA:goU
(most of) moUst||@v
(such as) sVtS||_a#z $pause

(too few) t'u:||f,ju:
(too many) t'u:||m,Eni
(too much) t'u:||m,VtS
(too few) t'u:||fju:
(too many) t'u:||mEni
(too much) t'u:||mVtS

//*************************************************************************
// COMMON WORDS

+ 1
- 0
dictsource/en_rules View File

@@ -4315,6 +4315,7 @@
d) or (_ o@
_f) or (@ O@
_f) ore (A O@
_f) ore (kn O@,
f) or (k O@
_f) or (s@ %O@
ch) or (d O@

+ 112
- 0
dictsource/kl_list View File

@@ -0,0 +1,112 @@

// This file is UTF8 encoded
// Spelling to phoneme rules for Greenlandic

b bE
c sE
d dE
f Ef
g ji
h ha
j jE
k ka
l El
m Em
n En
p pE
q qa
r Er
s Es
t tE
v vE
w wE
x iks
z zE

// y
// æ
// ø
// å

// Native numbers 0-10
_0n n'u:lu
_1n at'a:sEq
_2n m'arluk
_3n p'iNasut
_4n s'isamat
_5n t'al#imat
_6n arf'inil#it
_7n arfinEqm'arluk
_8n arfinEqp'iNasut
_9n quliNil'uat
_10n q'ulit

// Danish numbers
_0 'nOl
_1 'en
_2 t'o
_3 tR'e
_4 f'iV
_5 f'Em
_6 s'EQs
_7 s'yw
_8 'O:d@
_9 n'i
_10 t'i
_11 'Elv@
_12 t'Vl
_13 tR'&d@-n
_14 fj'ord@-n
_15 f'emt@-n
_16 s'ajsd@-n
_17 s'Wd@-n
_18 '&d@-n
_19 n'ed@-n
_2X t'y:w
_3X tR'&Dv@
_4X f'W:V
_5X h&l't*Es
_6X t*'Es
_7X h&lfj'&rs
_8X f'irs
_9X h&lf'Ems
_0C h'un*@:D
_1C ed||h'unr@:D
_0M1 t'u:s@-n
_1M1 ed||t'u:s@-n
_1M2 'e:n||milij'o:n
_0M2 milij'o:nV
_1M3 'e:n||milij'a:d
_0M3 milij'a:d3
_1M4 'e:n||bilij'o:n
_0M4 bilij'o:n3

_0and V
_dpt kom:a_

// ordinals are followed by a dot in Danish
_ord 3

// exceptions for ordinals
_1o fWrsd3
_2o &n@n
_3o trEdj3
_4o fjeV
_5o fEmt3
_6o sjEd3
_7o syvn3
_8o Vtn3
_9o ni@n3
_10o ti@n3
_11o Elfd3
_12o tVlfd3

_2Xo t'yv@n@ // 25.
_3Xo tr'&ft@ //36.
_4Xo fWV'tyv@n@ // 42.
_5Xo h&lt*'Esenstyv@n@ // 52.
_6Xo tr'Esenstyv@n@ // 62.
_7Xo h&lfj'&rsenstyv@n@ // 72.
_8Xo firsenstyv@n@ // 82.
_9Xo h&lf'Emsenstyv@n@ // 95.


+ 182
- 0
dictsource/kl_rules View File

@@ -0,0 +1,182 @@

// This file is UTF8 encoded
// Spelling to phoneme rules for Greenlandic


// don't stress a vowel before these consonant clusters
.L01 ng nng


.group a
a a
a (CC 'a
a (L01 a

ak (_ &g
ap (_ &p
at (_ &t

aa a:
aar a:
aaq a:

ai (_ aI



.group b
b b


.group c
c k
c (e s
c (i s


.group d
d d


.group e
e E
e (CC 'E // a vowel before a consonant cluster is stressed
e (L01 E // ... except for these consonants

ee E:


.group f
f f
ff f:


.group g
g Q
gg x:
gg (i C:


.group h
h h
hh h:


.group i
i i
i (CC 'i
i (L01 i
ii i:


.group j
j j
jj j:


.group k
k k
kk k:


.group l
l l
ll l#


.group m
m m
mm m:


.group n
n n
na na
naa na:
nn n:
ng N
nng N:


.group o
o o
o (CC 'o
o (L01 o
oo o:


.group p
p p
pp p:


.group q
q q
qq qq


.group r
r r
rr X:
rl rl#

.group s
s s
ss s:


.group t
t t
t (i ts
i) t (_ tS;
tt t:
tl tl#
ts ts


.group u
u u
u (CC 'u
u (L01 u
uu u:


.group v
v v
vv v:


.group w
w w


.group x
x ks


.group y
y j
K) y (K i // not before or after a vowel
K) y (CC 'i
K) y (L01 i


.group z
z z


.group æ
æ &


.group ø
ø W


.group å
å O


.group
$ d'olar


+ 784
- 0
dictsource/ms_list View File

@@ -0,0 +1,784 @@
// Last updated: 14 October 2010, Jason Ong ([email protected])
// This file is UTF8 encoded
// Spelling-to-phoneme words for Malay

a e:
b bi:
c si:
d di:
e i:
f Ef
g dZi:
h etS
i aI
j dZe
k ke
l El
m Em
n En
o o:
p pi:
q kju:
r ar
s Es
t ti:
u ju:
v vi:
w d'ab@liu:
x Eks
y waI
z zEd


// numeric
_0 k'osoN
_1 s'atu
_2 d'u@
_3 t'ig@
_4 '@mpat
_5 l'im@
_6 '@nam
_7 t'udZ%oh
_8 l'apan
_9 s@mb'ilan
_10 s@p'uluh
_11 s'@b@las
_12 d'u@b@las
_13 t'ig@b@las
_14 '@mpatb@las
_15 l'im@b@las
_16 '@namb@las
_17 t'udZ%ohb@las
_18 l'apanb@las
_19 s@mb'ilanb@las
_2X d'u@puloh
_3X t'ig@puloh
_4X 'Empatpuloh
_5X l'im@puloh
_6X 'Enampuloh
_7X t'udZ%ohpuloh
_8X l'apanpuloh
_9X s@mb'ilanpuloh
_0C R'atus_|
_1C s@*'atus_|
_0M1 R'ibu_
_1M1 s@r'ibu_
_0M2 dZ'ut@_
_1M2 s@dZ'ut@_
_0M3 b'ili@n
_1M3 s@b'ili@n
_dpt _p'@rpul'uhan_


_cap b'EsaR // after the letter
_?? k,odeh'uR2uf

// accented letters
_lig d'aIgRaf
_acu akj'ut
_ac2 dub@lakj'ut
_brv bR2'i:v
_ced s@d'ila
_cir t'opi
_dia 'umlaUt
_dot d'Ot
_grv gR2'av
_hac h'atSEk
_mcn m'akR2On
_ogo 'OgonEk
_rng R2'iNg
_stk stR'ok
_tld t'ild@

// punctuation
_! t,anda||s'ER2u
_" t,andak'utip
£ ponst'E*RliN
% p@*Ratus
^ t,andat'opi
& d'an
_* b'intaN
_( k,uR2uN||b'uk@
_) k,uR2uN||t'utup
__ g,aR2is||b'awah
_- t,andah'ubuN
+ c'ampor
= s,am@||d'@Nan
_{ k,uR2uN||kuR2'awal
_} k,uR2uN||kuR2,awal||t'utup
_[ k,uR2uN||s'iku
_] k,uR2uN||s,iku||t'utup
_: t,iti?||d'u@
_; t,iti?||k'om@
@ a||k'EOng
_' k,utip||t'uNgal
~ t'ilde
# p'agaR
_< k,uR2aN||d'aR2i
_> l,Ebih||d'aR2i
_, k'om@
_. t'iti?
_? t,and@||t'an^@
/ stR2'ok
_\ 'bEkslES





// exceptions
// (use phoneme [E2] for an unstressed 'e' which does not reduce to [@] )

bebek bEbE2?
becek bEtSE2?
//bekas $2
perang $2


// ABBREVIATIONS
//**************
abd 'abdul $dot
agenda ag'enda
bhd b'@Rhad $dot
cimb $abbrev
cm s@ntim'et@r
com d'Ot||kOm
(co ltd) k'amp@ni||lim'it@d
dr d'okt@R $dot
drp daR2ip'ad@
dun d'un
dymm d'uli||jang||mah'a||m'uli@
exco 'Eksko
en 'intSek $dot
felda f'elda
hb h,arib'ulan
hj h'adZi $dot
ir $abbrev $dot
klci $abbrev
km kilom'et@r
kol kol'on@l $dot
ltd lim'it@d $dot
m'sia malaysia $text
md moh'amad $dot
mm milim'et@r
mohd moh'amad $dot
mr m'ist@r $dot
mw m'egawat
pas p'a:s
pibg $abbrev
prof prof'es@r $dot
pte p'raiv@t
rm R'iNget
sdn s@ndiR2'ian $dot
sdr saUd'aR@ $dot
umno 'amno:
upm $abbrev
utk unto?
yab jang||amat||b@rh'ormat
yb jang||b@rh'ormat
ym jang|m'uli@
yg jang


// MAIN WORD DICTIONARY
//*********************

// e(pepet)-a
banteras bant'@Ras
membanteras m@mbant'@Ras
bedah b'@dah
bekas b'@kas
belah b'@lah
perbelanjaan p@Rb,@landZ'a|an
sebelah s@b'@lah
benar b'@nar
sebenar s@b'@nar
benda b'@nd@
kecelaruan k@tS,@laR'uan
berhad b'@Rhad
besar b'@sar
membesar m@mb'@sar
pembesar p@mb'@sar
sebesar s@b'@sar
terbesar t@Rb'@sar
cegah tS'@gah
mencegah m@ntS'@gah
pencegah p@ntS'@gah
cepat tS'@pat
dipercepat dip@RtS'@pat
secepat s@tS'@pat
dekat d'@kat
terdekat t@Rd'@kat
demam d'@mam
denda d'@nd@
didenda did'@nd@
dengan d'@Nan
dengar d'@Nar
didengar did'@Nar
mendengar m@nd'@Nar
depan d'@pan
berdepan b@Rd'@pan
dera d'@R@
pendera p@nd'@R@
deras d'@Ras
desak d'@sak
mendesak m@nd'@sak
terdesak t@Rd'@sak
empat '@mpat
engkau '@NkaU
gelar g'@lar
bergelar b@Rg'@lar
gemar g'@mar
penggemar p@Ng'@mar
gesa g'@s@
menggesa m@Ng'@s@
tergesa t@Rg'@s@
hendak h'@nda?
dikehendaki dik,@h@nd'aki
kehendak k@h'@nda?
kelas k'@las
sekelas s@k'@las
kemas k'@mas
keras k'@Ras
berkeras b@Rk'@Ras
kertas k'@Rtas
kesan k'@san
dikesan dik'@san
lembah l'@mbah
letak l'@tak
diletak dil'@tak
emak '@mak
emas '@mas
enam '@nam
keenam k@'@nam
enggan '@Ngan
gerak g'@ra?
bergerak b@Rg'@ra?
penggerak p@Ng'@ra?
jebak dZ'@bak
terjebak t@RdZ'@bak
jejas dZ'@dZas
terjejas t@RdZ'@dZas
jelas dZ'@las
kejar k'@dZar
dikejar dik'@dZar
kekal k'@kal
kelam k'@lam
mengembalikan m@N,@mbal'ikan
kembang k'@mbaN
mengembang m@N'@mbaN
perkembangannya p@Rk,@mbaN'ann^@
kelak k'@lak
kena k'@n@
kenal k'@nal
dikenal dik'@nal
terkenal t@Rk'@nal
kerap k@Rap
kerja k'@RdZ@
bekerja b@k'@RdZ@
bekerjasama b@k,@RdZ@s'am@
kerjasama k@RdZ@s'am@
pekerja p@k'@RdZ@
sekerja s@k'@RdZ@
kesal k'@sal
menyesal m@n^'@sal
kesan k'@san
berkesan b@Rk'@san
keberkesanan k@b,@Rk@s'anan
kesat k'@sat
mengesat m@N'@sat
lekas l'@kas
lelakinya l@lak'in^@
lekat l'@kat
melekat m@l'@kat
lemah l'@mah
lembaga l@mb'aga
berperlembagaan b@Rp@Rl,@mbag'a|an
lengan l'@Nan
lepas l'@pas
berlepas b@Rl'@pas
terlepas t@Rl'@pas
letak l'@ta?
peletakan p@l@t'akan
terletak t@Rl'@tak
menang m'@naN
pemenang p@m'@naN
mentah m'@ntah
mesra m'@sR@
pecah p'@tSah
berpecah b@Rp'@tSah
peka p'@k@
pegang p'@gaN
dipegang dip'@gaN
memegang m@m'@gaN
pentas p'@ntas
pernah p'@rnah
pesat p'@sat
petang p'@taN
rendah R'@ndah
terendah t@R'@ndah
rentak R'@ntak
berentak b@R'@ntak
retak r'@tak
keretakan k@R@t'akan
rentak r'@ntak
serentak s@r'@ntak
sebak s'@ba?
kesebakan k@s@b'akan
sebentar s@b'@ntar
sedang s'@daN
sedar s'@dar
tersedar t@Rs'@dar
segera s@g'@R@
disegerakan dis@g@R'@kan
menyegerakan m@n^,@g@R'@kan
sejahtera s@dZaht'@R@
kesejahteraan k@s@dZ,aht@R'@an
sejak s'@dZak
sekat s'@kat
menyekat m@n^'@kat
selam s'@lam
penyelam p@n^'@lam
keselamatan k@s,@lam'atan
selaras s@l'aRas
keselarasan k@s@laR'asan
selepas s@l'@pas
kesesuaian k@s@su'aIan
sembah s'@mbah
persembahannya p@Rs,@mbah'ann^@
sempat s'@mpat
berkesempatan b@Rk,@s@mp'atan
sempena s@mp'@n@
beserta b@s'@Rt@
peserta p@s'@Rt@
sertai s@Rt'a|i
serang s'@RaN
diserang dis'@RaN
menyerang m@n^'@raN
penyerang p@n^'@raN
serba s'@Rb@
tegang t'@gaN
bertegang b'@Rt@gaN
tegas t'@gas
tekak t'@kak
menekak m@n'@kak
tekan t'@kan
menekan m@n'@kan
telah t'@lah
teman t'@man
tempa t'@mp@
ditempa dit'@mp@
menempa m@n'@mp@
tempah t'@mpah
menempah m@n'@mpah
tempat t'@mpat
bertempat b@rt'@mpat
tenang t'@naN
bertenang b@Rt'@naN
tengah t'@Nah
menengah m@n'@Nah
sesetengah s@s@t'@Nah
tengkar t'@Nkar
bertengkar b@Rt'@Nkar
tentang t'@ntaN
ditentang dit'@ntaN
menentang m@n'@ntaN
penentang p@n'@ntaN
tepat t'@pat
juruterbang dZuRut'@RbaN
teram t'@Ram
ketenteraman k@t@nt@R'aman
terkam t'@Rkam
diterkam dit'@Rkam
menerkam m@n'@Rkam
tetap t'@tap
bertetap b@Rt'@tap
menetap m@n'@tap

// exceptions
kehebatan k@heb'atan
dibelenggu dib@l'@Ngu
perbendaharaan p@Rb@nd,@haR'a|an
kejayaan k,@dZaj'a|an
galakan gal'akan
setong s@t'oN
aneh 'anE2h
menyelamatkan m@n^,@lam'atkan
//berbaur b@Rb'aUr
gementar g@m'@ntar
hebatnya hEb'atn^@
diedarkan diEd'aRkan
//berkeliaran b@Rk@li'aRan
//bersebelahan b@Rs@b@l'ahan
//sebaik s@b'aIk
cedera tS@d'@R@
kecederaan k@tS,@d@r'a|an
tercedera t@RtS@d'@R@
//ekoran Ek'oRan
kekecewaan k@k,@tSew'a|an
//bermain b@Rm'aIn
//kedai k'@daI
//pekedai p@k'@daI
disertai dis@Rt'ai
persediaan p@Rs,@di'a|an
//bergaul b@Rg'aul
elakkan El'akkan
kebanyakan k@ban^'akan
anda 'anda
//berkepentingan b@Rk,@p@nt'iNan
//berleluasa b@Rl@lu'as@
iaitu ja|'itu
masalah mas'alah
masakan mas'akan
mengelakkan m@NE2l'akkan
menyelesaikan m@n^,@l@s'aIkan
pergolakan p@Rgol'akan
perempuan p@R@mp'uan
perempuannya p@R,@mpu'ann^@
pesta p'esta
berpesta b@Rp'esta
menyalah m@n^'alah
setengah s@t'@Nah
berpengalaman b@Rp@Nal'aman
kesemuanya k@s,@mu'@nn^@
selesema s@l@s'@m@
tindakan tind'akan
pesalah p@s'alah
wanita wan'ita
bersalah b@Rs'alah
//persetujuan p@Rs,@tudZ'uan
//persetujuannya p@Rs@tudZu'ann^@
//keseluruhan k@s,@luR'ohan
memberitahu m@mb,@Rit'ahu
//persekutuan p@Rs,@kut'uan
tema t'Ema
kepercayaan k@p,@RtSaj'a|an
dendangan dEnd'aNan
peperiksaan p@p,@Reks'a|an
kebebasan k@bEb'asan
//cerai tS'@RaI
//berbaik b@Rb'aIk
menyembunyikan m@n^,@mbun^'ikan
bermesyuarat b@Rm,@Su'aRat
//pengetahuan p@N,@tah'uan
mengenai m@N@n'ai
penyelesaian p@n^,@l@s'aIan
diselesaikan dis,@l@s'aIkan
ditanya dit'an^@
prestasi pREst'asi
pembelajaran p@mb,@ladZ'aRan
kepong k'@poN
demikian d@mik'ian
piket p'ikEt
kempennya kEmp'enn^@
jentera dZ@nt'@R@
perlembagaan p@Rl,@mbag'a|an
bersesuaian b@Rs,@su'aIan
bumiputera bumip'ut?Ra
kecemerlangan k@tS,@Rm@l'aNan
merdeka m@Rd'eka
kemerdekaan k@m,@Rdek'a|an
kelewatan k@lew'atan
menyelesaikannya m@n^@l@saIk'ann^@


// english derived words
akta 'akta
album 'Elb@m
aspek 'aspE2k
balada bal'ada
digit di'dZit
digital didZ'it@l
doktor d'okt@r
dolar d'Ol@r
domestik dOm'Estik
entiti Ent'iti
flora fl'ora
frekuensi fRiku'@nsi
imej 'imedZ
indeks 'indEks
insentif ins'E2ntif
jean dZ'in
jeneral dZEn'@R@l
kabinet kEb'in@t
kamera kEm'@R@
kes k'es
komponen komp'on@n
komprehensif kompRih'ensif
koroner koR'on@r
laser l'es@r
majoriti mEdZor'iti
meter m'it@r
muzik m'iuzek
muzium m'iuzi@m
nasional nESh'@n@l
negatif nEg'@tif
nostalgia nost'aldZja
november nov'Emb@r
oktober okt'ob@r
polis p'olis
personaliti p@Rs,@nal'iti
presiden pRE2s'id@n
profesor pRof'E2s@r
produk pR'odak
prospek pR'ospE2k
republik Rip'abli?
saintis s'aIntis
sesi s'esi
subjek s'abdZE2k
surcaj s'@RtSadZ
radio R'edio
realiti Rial'iti
sentimen sEnt'im@n
september sEpt'@mb@r
teater ti'et@r
teknik t'Eknik
teknikal tEkn'ikal
telefon tel'ifon
tenis t'Enis
tiara ti'aRa
unit j'unit
universiti jun,iv@Rs'iti
virus v'aIR@s
zoo zu:

// place names
Australia _^_EN
Arsenal _^_EN
Asia as'ia
Barcelona b'aRs@l'ona
Borneo _^_EN
Britain _^_EN
Brunei b'R2unaI
Cheras tS'@ras
Coast _^_EN
Commonwealth _^_EN
Denmark _^_EN
England _^_EN
Eropah Er'opah
France _^_EN
George _^_EN
Georgetown _^_EN
Indonesia indon'eIsi@
Ireland _^_EN
Jamaica _^_EN
Kingdom _^_EN
Korea _^_EN
Liverpool _^_EN
London _^_EN
New _^_EN
Nigeria _^_EN
Macau _^_EN
Malaysia m@l'esi@
Melbourne _^_EN
Guinea _^_EN
Penang pin'EN
Perak p'erak
Phuket ph'ukEt
Putrajaya putR2@dZ'aj@
Republic _^_EN
Scotland _^_EN
Seputeh s@p'uteh
Seremban s@R'@mban
Setar s?tar
Sydney _^_EN
Temerloh t@m'@Rloh
Tonga t'onga
Town _^_EN
United _^_EN
Valencia vel'@nsia
Zambia z'ambia
Zealand _^_EN

// person names
Azura az'uR2a
Barack _^_EN
David _^_EN
Davidson _^_EN
Douglas _^_EN
Edward _^_EN
Karen _^_EN
Jason _^_EN
Lee _^_EN
Leela l'ila
Linda l'inda
Mahathir mah'ater
Michael _^_EN
Merican m'erikan
Ng '@N
Nora n'oRa
Nurhaliza n,uRhal'iza
Obama ob'ama
Ong ON
Ramlee R'amli
Saleh s'aleh
Seha s'eha
Shafie Saf'i?i
Sidek s'idek
Syed s'aId
Teresa t@R2'isa
Tony _^_EN
Yaacob j'a?kob
Yew jiu
Zakaria zak'aRja
Zaleha zal'eha


// English words
(& co) En||k'amp@ni
american _^_EN
bank b'Enk
banking b'EnkiN
commerce _^_EN
corp _^_EN $dot
city _^_EN
company _^_EN
consortium _^_EN
daily _^_EN
distribution _^_EN
east _^_EN
education _^_EN
engineering _^_EN
euro _^_EN
girl _^_EN
grand gR2End
genre _^_EN
government _^_EN
group _^_EN
hero h'iR2o
idea 'aIdi@
island _^_EN
jazz dZ'E:s
international _^_EN
internet _^_EN
left _^_EN
land lEnd
malayan _^_EN
malaysian m@l'esi@n
media _^_EN
methodist _^_EN
multi _^_EN
north _^_EN
pound _^_EN
right _^_EN
school _^_EN
speaker _^_EN
south _^_EN
the _^_EN
enterprise _^_EN
omnibus 'omnibas
online _^_EN
power _^_EN
punk _^_EN
serius _^_EN
service _^_EN
street _^_EN
technologies _^_EN
tender _^_EN
trading _^_EN
trend _^_EN
unity _^_EN
union _^_EN
wall _^_EN
west _^_EN


// brands
afp $abbrev
(air asia) 'E:_'e:si@_
(air france) _^_EN
airbus _^_EN
boeing _^_EN
eon 'ion
firefly _^_EN
iphone aI||fon
ipod aI||pod
malaysiakini m@l'esi@||k'ini
maybank m'eib'Enk
reuters _^_EN
(sime darby) _^_EN
toyota toj'ota
wikipedia wik,ip'idja



// unstressed words
//suatu $u
dari $u
pada $u
daripada $u
ke k@ $u
di $u
si $u
sang $u
hang $u
yang $u
//dan $u
//atau $u
//untuk $u
ialah $u
adalah $u
sebagai $u
bahwa $u
per p@r $u


// conjunctions
agar $pause
apabila ap@bil@ $pause
apatah ap@t'ah $pause
atau $pause
ataupun $pause
bagi $pause
bahkan $pause
(bukan sahaja) $pause
dan $pause $u
(di mana) $pause
hanya $pause
jika $pause
kalau $pause
kerana $pause
ketika $pause
mahupun $pause
maka $pause
malah $pause
malahan $pause
manakala $pause
meskipun $pause
misalnya $pause
namun $pause
(sama ada) $pause
sambil $pause
sebab s'@bab $pause
sedangkan $pause
sehingga $pause
selain s@l'ain $pause
semasa $pause
serta s'@rt@ $pause
setelah s@t'@lah $pause
seperti $pause
sepertimana s@p,@Rtim'an@ $pause
supaya $pause
tapi $pause
tetapi $pause
walau $pause
walaupun $pause
untuk $pause
//yang $pause $u
(yang mana) $pause


// nuances
anugerah an'ug*Rah
dilaksanakan dil,aksan'@kan
kementerian k@m,@ntR2'ian
sebahagian s@b'ah?gian
mewarnai m@warn'a|i
mulai mul'a|i
meraikan m@Ra|'ikan
sibuk s'ebok
terengganu tR2@Ng'anu
dirasai diRas'a|i
direka diR'ek@
negeri n'@gR2i

+ 233
- 0
dictsource/ms_rules View File

@@ -0,0 +1,233 @@
// Last updated: 14 October 2010, Jason Ong ([email protected])
// This file is UTF8 encoded
// Spelling-to-phoneme rules for Malay

.group a
a a
a) a _|a
A_) a _|a
au) a _|a
ai aI
au aU
_) au o // (automatik)

@) a (_ @ // (pula)
@) a (kah_ '@ // (apakah)
@) a (kan_ '@ // (bukakan)
@) a (lah_ '@ // (mintalah)
@) a (nya_ '@ // (puncanya)
@) a (pun_ '@ // (bagaimanapun)


.group b
b b

_) be (@@ b@

_) ber (@@ b@R // (berdasarkan)
_) ber (CaiX b@R // (bermain)
_) ber (CauX b@R // (bergaul, berbaur)
_) berke (@@ b@Rk@ // (berkeliaran, berkesempatan)
_) berle (@@ b@Rl@ // (berleluasa)
_) berper (@@ b@Rp@R //
_) berse (@@ b@Rs@ // (bersebelahan)
_) bh b // added (kota bharu)

.group c
c tS
//*************
ch tS // (kuching)
//**************

.group d
d d
dj dZ // Dutch

.group e
e E //jason: E changed to E2
e) e _|E
A_) e _|E // *** to check on this ***
e (_ e


// *********************
_) e (Co@ E2 // e-o (ekoran)
e (CaiX '@ // e-ai (kedai, petai, belai, cerai)
e (CiX '@ // e-i (betik, ketil, lebih, kerisik, kesedihan, sering, seri, segi, seni)
e (CCiX '@ // e-i (penting, jentik)
e (CCuX '@ // e-u (dibendung, bentuk)
e (CuX '@ // e-u (belut, telur, perut, ketulan, bertemu)
e (CCuX '@ // e-u (perlu, merdu)
e (CCCuX '@ // e-u (tengku, tengkuk)

e (nyuX '@ // e-u (senyum)
eCC) e (X e // e-e (pendek, benteng)
eC) e (X e // e-e (belek, gelek, leceh, geleng)
e (Ce e // e-e (kelecehan)
oC) e (X e // o-e (oleh, boleh, celoteh, topeng)
oCC) e (X e // o-e (ponteng)
C) e (CCCoCkan_ e // (bengkokkan)
m) e (_ @ // (autisme)

// ******************
.group f
f f
ff f

.group g
g g

.group h
h h

.group i
i i
i) i _|i
A_) i _|i

@) i (CX e // (tekik, masing, masin)
@) i (Cnya_ 'e // (masinnya)
@) i (CCaan_ e // (pemeriksaan)

.group j
j dZ

.group k
k k
k (_ ?
kh x

_) ke (@@ k@
@@) k (annya_ k'
_) kese (@@ k@s@ // keseluruhannya

.group l
l l
ll l

.group m
m m

_) me (@@ m@
_) mempe (@ m@mp@
//*****************
_) mem (@@ m@m
_) mene (@@ m@n@ // (menerajui)
_) menge (@@ m@N@ // (mengenepikan)
_) mempenge (@@ m@mp@N@ // (mempengerusikan)
//****************

.group n
n n
ng N
ny n^
// nj n^

.group o
o o
o) o _|o
A_) o _|o
o (r O
oe u // Dutch spelling

.group p
p p
pp p

_) pe (@@ p@

_) pe (CaiX p@ // (pemain, pesaing)
_) peme (@@ p@m@ // (pemeriksaan)
_) pene (@@ p@n@ // (penerokaan)
_) penge (@@ p@N@ // (pengetahuan)
_) penje (@@ p@ndZ@ // (penjenamaan)
_) perse (@@ p@Rs@ // (persetujuan)


.group q
q k
qu kw

.group r
r R //(jason change: R2 to r)
r (K r //(jason change: R to r)
e) r (K *r //(jason change: *R to r)

r (_ r // jason: added (silent r at the end)

.group s
s s
ss s
sy S // perhaps [S;] ??
sj S

_) se (@@ s@
//*************
_) se (CaiX s@ // (sebaik)
sh S
//***************


.group t
t t
tj tS // Dutch

_) ter (@@ t@*R

//***************
_) ter (@ t'@*R // ter- (terbaik, teruk)
//******************

.group u
u u
u) u _|u
A_) u _|u
@) u (CX o // (puluh, tudung)
@) u (Cnya_ 'o // (bentuknya)
@) u (CCnya_ 'o // (tudungnya)

.group v
v v

.group w
w w

.group x
x ks
_) x z

.group y
y j

.group z
z z

.group
$ dOl@R


__) - (_D n'eg@tif

* b'intaN
*) * (*
**
**) * (_ _::

+ 246
- 0
dictsource/pa_list View File

@@ -0,0 +1,246 @@
// 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 _d@s@ml'o:
// 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
_?? 'Vk#:@R
। d.'Vnd.i
+ J'Vuma
= b@R'ab@R
% pR'VtIS@t
* t'aRa
// 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

+ 469
- 0
dictsource/pa_rules View File

@@ -0,0 +1,469 @@

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

// letter groups:
// A vowel letters
// B vowel signs and virama ्
// C consonants
// Y vowel letters and vowel signs



.replace
੦ 0
੧ 1
੨ 2
੩ 3
੪ 4
੫ 5
੬ 6
੭ 7
੮ 8
੯ 9

૦ 0
૧ 1
૨ 2
૩ 3
૪ 4
૫ 5
૬ 6
૭ 7
૮ 8
૯ 9


// combine dot consonants into a single character
ਸ਼ ਸ਼
ਲ਼ ਲ਼ // l.
ਖ਼ ਖ਼ // x
ਗ਼ ਗ਼ // Q
ਜ਼ ਜ਼ // z
ਫ਼ ਫ਼ // f

// combine base vowel+vowel sign into single vowel characters
ਅੈ ਐ // aI
ਅਾ ਆ // aa
ਅੌ ਔ // aU
ੲੀ ਈ // ii
ੲਿ ਇ // i
ੲੇ ਏ // e
ੳੁ ਉ // u
ੳੂ ਊ // uu



// Vowels

.group ੳ
ੳ u

.group ੲ
ੲ i


.group ਅ
ਅ ,V
ਅਂ V~
ਅੰ V~

.group ਆ
ਆ a
ਆਂ a~
ਆੰ a~

.group ਇ
ਇ I
ਇਂ I~
ਇੰ I~

.group ਈ
ਈ i
ਈਂ i~
ਈੰ i~

.group ਉ
ਉ U
ਉਂ U~
ਉੰ U~

.group ਊ
ਊ u
ਊਂ u~
ਊੰ u~

.group ਏ
ਏ e
ਏਂ e~
ਏੰ e~

.group ਐ
ਐ E
ਐਂ E~
ਐੰ E~

.group ਓ
ਓ o
ਓਂ o~
ਓੰ o~

.group ਔ
ਔ O
ਔਂ O~
ਔੰ O~

.group ૠ
ૠ r-


// Vowel Signs

.group ਾ
ਾ a
ਾਂ a~
ਾੰ a~

.group ਿ
ਿ I
ਿਂ I~
ਿੰ I~

.group ੀ
ੀ i
ੀਂ i~
ੀੰ i~

.group ੁ
ੁ U
ੁਂ U~
ੁੰ U~

.group ੂ
ੂ u
ੂਂ u~
ੂੰ u~

.group ੇ
ੇ e
ੇਂ e~
ੇੰ e~

.group ੈ
ੈ E // aI
ੈਂ E~
ੈੰ E~

.group ੋ
ੋ o
ੋਂ o~
ੋੰ o~

.group ੌ
ੌ O // aU
ੌਂ O~
ੌੰ O~


// Consonants ਕે

.group ਕ
ਕ kV // inherent vowel
ਕ (B k // no inherent vowel if vowel or virama follows
@) ਕ (_ k // omit inherent vowel at end of word
ੱ) ਕ k:V
ੱ) ਕ (B k:
ੱ) ਕ (_ k:

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

.group ਗ
ਗ gV
ਗ (B g
@) ਗ (_ g
ੱ) ਗ g:V
ੱ) ਗ (B g:
ੱ) ਗ (_ g:

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

.group ਙ
ਙ NV
ਙ (B N
@) ਙ (_ N
ੱ) ਙ N:V
ੱ) ਙ (B N:
ੱ) ਙ (_ N:

.group ਚ
ਚ cV
ਚ (B c
@) ਚ (_ c
ੱ) ਚ c:V
ੱ) ਚ (B c:
ੱ) ਚ (_ c:

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

.group ਜ
ਜ JV
ਜ (B J
@) ਜ (_ J
ੱ) ਜ J:V
ੱ) ਜ (B J:
ੱ) ਜ (_ J:

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

.group ਞ
ਞ n^V
ਞ (B n^
@) ਞ (_ n^
ੱ) ਞ n^:V
ੱ) ਞ (B n^:
ੱ) ਞ (_ n^:

.group ਟ
ਟ t.V
ਟ (B t.
@) ਟ (_ t.
ੱ) ਟ t.:V
ੱ) ਟ (B t.:
ੱ) ਟ (_ t.:

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

.group ਡ
ਡ d.V
ਡ (B d.
@) ਡ (_ d.
ੱ) ਡ d.:V
ੱ) ਡ (B d.:
ੱ) ਡ (_ d.:

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

.group ਣ
ਣ n.V
ਣ (B n.
@) ਣ (_ n.
ੱ) ਣ n.:V
ੱ) ਣ (B n.:
ੱ) ਣ (_ n.:

.group ਤ
ਤ tV
ਤ (B t
@) ਤ (_ t
ੱ) ਤ t:V
ੱ) ਤ (B t:
ੱ) ਤ (_ t:

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

.group ਦ
ਦ dV
ਦ (B d
@) ਦ (_ d
ੱ) ਦ d:V
ੱ) ਦ (B d:
ੱ) ਦ (_ d:

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

.group ਨ
ਨ nV
ਨ (B n
@) ਨ (_ n
ੱ) ਨ n:V
ੱ) ਨ (B n:
ੱ) ਨ (_ n:

.group ਪ
ਪ pV
ਪ (B p
@) ਪ (_ p
ੱ) ਪ p:V
ੱ) ਪ (B p:
ੱ) ਪ (_ p:

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

.group ਬ
ਬ bV
ਬ (B b
@) ਬ (_ b
ੱ) ਬ b:V
ੱ) ਬ (B b:
ੱ) ਬ (_ b:

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

.group ਮ
ਮ mV
ਮ (B m
@) ਮ (_ m
ੱ) ਮ m:V
ੱ) ਮ (B m:
ੱ) ਮ (_ m:

.group ਯ
ਯ jV
ਯ (B j
@) ਯ (_ j
ੱ) ਯ j:V
ੱ) ਯ (B j:
ੱ) ਯ (_ j:

.group ਰ
ਰ RV
ਰ (B R
@) ਰ (_ R
ੱ) ਰ R:V
ੱ) ਰ (B R:
ੱ) ਰ (_ R:

.group ਲ
ਲ lV
ਲ (B l
@) ਲ (_ l
ੱ) ਲ l:V
ੱ) ਲ (B l:
ੱ) ਲ (_ l:

.group ਲ਼
ਲ਼ l.V
ਲ਼ (B l.
@) ਲ਼ (_ l.

.group ਵ
ਵ vV
ਵ (B v
@) ਵ (_ v
ੱ) ਵ v:V
ੱ) ਵ (B v:
ੱ) ਵ (_ v:

.group ਸ਼
ਸ਼ SV
ਸ਼ (B S
@) ਸ਼ (_ S
ੱ) ਸ਼ S:V
ੱ) ਸ਼ (B S:
ੱ) ਸ਼ (_ S:

.group ਸ
ਸ sV
ਸ (B s
@) ਸ (_ s
ੱ) ਸ s:V
ੱ) ਸ (B s:
ੱ) ਸ (_ s:

.group ਹ
ਹ HV
ਹ (B H
@) ਹ (_ H

.group ਖ਼
ਖ਼ xV
ਖ਼ (B x
@) ਖ਼ (_ x

.group ਗ਼
ਗ਼ QV
ਗ਼ (B Q
@) ਗ਼ (_ Q

.group ਜ਼
ਜ਼ zV
ਜ਼ (B z
@) ਜ਼ (_ z

.group ੜ
ੜ r.V
ੜ (B r.
@) ੜ (_ r.

.group ਫ਼
ਫ਼ fV
ਫ਼ (B f
@) ਫ਼ (_ f


.group ੍
੍ // virama

.group ਼
਼ // nukta

.group ੱ
ੱ // addak

.group ਂ
ਂ N // bindi

.group ੰ
ੰ n // tippi

.group ਃ
ਃ h

.group
$ dOlVR // TEST
% pVsEnt // TEST

+ 29
- 16
dictsource/pt_list View File

@@ -337,7 +337,7 @@ la $u
lo $u
las $u
los $u
//se $u
se $u

?2 este $u+ $nounf 'estSi // this
?2 estes $u+ $nounf 'estSis // these
@@ -637,7 +637,6 @@ acertos $alt2
acordo $alt $verb
acervo $alt2
adepto $alt
adereço $alt2
adore $alt
adorno $alt $verb
albatrozes $alt
@@ -654,8 +653,8 @@ apego $alt2 $noun
apelo $alt $verb
aposto $alt $verb
aperto $alt2 $noun
apoio $alt2 $noun
aprovo $alt
apneia $alt
apoio $alt $verb
arredores $alt
arremesso $alt2 $noun
arroz $alt2
@@ -668,6 +667,8 @@ atrozes $alt
autora $alt2
avesso $alt2
axé aSE
azeda $alt $verb
azedo $alt $verb
baqueta $alt2
beco $alt2
belo $alt
@@ -675,7 +676,6 @@ besta $alt2
bilhete $alt2
boca $alt2
bochecha $alt2
boio $alt
bojo $alt2
boleia $alt
bolero $alt
@@ -683,13 +683,14 @@ bolo $alt2
bolo $alt $verb
borboleta $alt2
bordo $alt
bosque $alt
boto $alt2 $noun
bromelha $alt
cabeça $alt2
cabresto $alt2
cacete $alt2
cachorra $alt2
caderneta $alt2
cadete $alt2
camiseta $alt2
cantora $alt2
capacete $alt2
@@ -704,6 +705,7 @@ cateto $alt2
catorze $alt2
cebola $alt2
cefaleia $alt
centopeia $alt
cerca $alt
cerca $alt2 $noun
cerco $alt $verb
@@ -728,7 +730,7 @@ colher $alt $noun
colheres $alt $noun
colmeia $alt
colore $alt
começo $alt2 $noun
começo $alt $verb
comodo $alt2
concerto $alt2 $noun
concertos $alt2
@@ -758,12 +760,14 @@ desemprego $alt2
desemprego $alt $verb
desespero $alt2 $noun
desfecho $alt2
desmantelo $alt $verb
desprezo $alt2 $noun
desse $alt2
desse $alt $verb
deste $alt2
deste $alt $verb
desterro $alt2
destroem $alt
deveras $alt
dez $alt
diarreia $alt
@@ -779,11 +783,11 @@ elo $alt
emprego $alt2 $noun
empregos $alt2
encosto $alt $verb
endereço $alt2
endereço $alt $verb
enforco $alt
engordo $alt
enredo $alt $verb
enrosco $alt $verb
enterro $alt2 $noun
enumerem $alt
envelope $alt
@@ -809,20 +813,23 @@ espiroqueta $alt2
espoleta $alt2
esposa $alt2
esqueleto $alt2
estilete $alt2
estrela $alt2
estrofe $alt
estorno $alt $verb
estorvo $alt $verb
etiqueta $alt2
europa $alt
europeia $alt
exagero $alt $verb
explore $alt
faceta $alt2
fantoche $alt
farelo $alt
farofa $alt
febre $alt
feitora $alt2
fera $alt
feitora $alt2
ferozes $alt
fezes $alt
?1 fixe fiSy
@@ -867,11 +874,13 @@ ideia $alt
interesse $alt2 $noun
jogo $alt2 $noun
joguete $alt2
lagosta $alt2
lambreta $alt2
lebre $alt
lembrete $alt2
leste $alt2 $verb
lopes $alt
macete $alt2
maior $alt
maleta $alt2
marcelo $alt
@@ -894,6 +903,7 @@ minueto $alt2
miolo $alt2
miolos $alt
moeda $alt
mofo $alt $verb
molho $alt2 $noun
monera $alt
morcego $alt2
@@ -901,10 +911,10 @@ morda $alt2
moreia $alt
mortos $alt
motora $alt2
mulher $alt
mui mwi
muito mw'iNtU // -s is included as a suffix
muita mw'iNt&
mulher $alt
mulheres $alt
mureta $alt2
mutreta $alt2
@@ -917,11 +927,13 @@ obstetra $alt
odisseia $alt
onu $1
olho $alt2 $noun
onomatopeia $alt
opereta $alt2
ordens $alt
osso $alt2
ossos $alt
ostra $alt2
ovelha $alt2
ovos $alt
pachorra $alt2
paexa paeSa
@@ -937,6 +949,7 @@ pastora $alt2
pedra $alt
pela $alt $verb
pelego $alt2
pela $alt $verb
pelo $alt $verb
peso $alt $verb
piloto $alt2 $noun
@@ -948,32 +961,32 @@ plateia $alt
plebeia $alt
polca $alt
porcos $alt
porrete $alt2
porra $alt2
porrete $alt2
porto $alt2
portos $alt
pose $alt2
povos $alt
poxa p'oS&
primavera $alt
provo $alt
prosopopeia $alt
quarteto $alt2
queda $alt
quede $alt2
quinteto $alt2
recomeço $alt2 $noun
raposa $alt2
recomeço $alt $verb
recordo $alt
recorto $alt
rede $alt2
redor $alt
reembolso $alt $verb
reforços $alt
reforço $alt $verb
reforços $alt
refresco $alt $verb
reitora $alt2
relevo $alt2 $noun
remorso $alt
reprovo $alt
retorno $alt $verb
rixa x'iS&
rocha $alt
@@ -984,7 +997,7 @@ rota $alt2
rota $alt $noun
rumores $alt2
saleta $alt2
sarjeta $alt
sarjeta $alt2
seborreia $alt
seca $alt2 $noun
secas $alt2

+ 40
- 46
dictsource/pt_rules View File

@@ -1,3 +1,4 @@
// translation rules Brazilian
// translation rules Brazilian
// translation rules Brazilian
// This file is UTF-8 encoded
@@ -178,8 +179,6 @@
e (co_ E
e (ctA_ E
e (ctAm_ E
e (çA_ E
e (çAm_ E

e (de_ E
e (dem_ E
@@ -447,17 +446,21 @@ proteg) e (L07_ e // des-
respond) e (L07_ e // cor-
qu) e (brL04_ E
_cel) e (brL04_ E
_enr) e (dL01_ E
_arr) e (dL03_ E
_depr) e (dL03_ E
_hosp) e (dL03_ E
_gr) e (gL03_ e
_gal) e (gL03_ e
_n) e (grL03_ e
_estr) ei (L03_ EI
estr) ei (L04_ EI
_inv) e (jL04_ E
tr) e (pL04_ E // es-
_dec) e (pL04_ E
_in) e (ptL03_ E
_p) e (quL02_ E
_s) e (quL02_ E
ad) e (quL04_ E
l) e (que_ E
_imp) e (rL03_ E
_sev) e (rL03_ E
@@ -473,6 +476,7 @@ respond) e (L07_ e // cor-
_tol) e (rL04_ E
_ven) e (rL04_ E
acel) e (rL04_ E // des-
_apod) e (rL04_ E
_coop) e (rL04_ E
_temp) e (rL04_ E
_recup) e (rL04_ E
@@ -488,13 +492,14 @@ _refrig) e (rL04_ E
_bez) e (rrL03_ e
_inv) e (rtL03_ e
_f) e (rvL03_ e
_p) e (sL01_ E
_refr) e (scL01_ E
_d) e (scL02_ E
_cr) e (scL02_ E
_p) e (scL03_ E
_m) e (sclL04 E
_d) e (spL02_ E
_p) e (squL02_ E
_refr) e (squL02_ E
_l) e (ssL02_ e
_esp) e (ssL03_ e
_c) e (stL03_ e
@@ -515,43 +520,10 @@ _obsol) e (tL03_ e
_despr) e (zL04_ E
_embel) e (zL04_ E
_menospr) e (zL04_ E
_emagr) e (çL03
pr) e (çL03_ e // a-
aqu) e (çL03_ e // re-
mer) e (çL03_ e // des-
pad) e (çL03_ e // com-
par) e (çL03_ e // a- re- com- rea- desa-
_ado) e (çL03_ e
_car) e (çL03_ e
_per) e (çL03_ e_
conh) e (çL03_ e // re-
obed) e (çL03_ e // des-
_esqu) e (çL03_ e
_forn) e (çL03_ e
_ofer) e (çL03_ e
abast) e (çL03_ e // re-
_aborr) e (çL03_ e
_acont) e (çL03_ e
_agrad) e (çL03_ e
_amanh) e (çL03_ e
_amort) e (çL03_ e
_anoit) e (çL03_ e
_arref) e (çL03_ e
_desguarn) e (çL03_ e
_desguarnec) e (çL03_ e
_enfraqu) e (çL03_ e
_enlouqu) e (çL03_ e
_enraiv) e (çL03_ e
_enriqu) e (çL03_ e
_entrist) e (çL03_ e
_envaid) e (çL03_ e
_envelh) e (çL03_ e
_esclar) e (çL03_ e
_espair) e (çL03_ e
_estrem) e (çL03_ e
_fortal) e (çL03_ e
_rejuven) e (çL03_ e
estabel) e (çL03_ e // re-
com) e (çL01_ E
p) e (çL03_ E
_m) e (çL03_ E
_entorp) e (çL03_ e
//endsort


@@ -600,7 +572,12 @@ estabel) e (çL03_ e // re-
?3 g (_C g_
g (Y Z // ge gi
gu (Y g
?1 guen (C gw'eIN // aguenta, etc.
a) gu (ent gw
enxa) gu (e gw
lin) gu (e gw
lin) gu (i gw
san) gu (ín gw
san) gu (in gw
?1 n) gu (A gw // eg: língua, etc.
?1 man) gu (ei g // mangueira
?1 gu (ém_ g // eg: alguém, ninguém, etc...
@@ -847,15 +824,19 @@ estabel) e (çL03_ e // re-
_engl) o (bL01_ O
_s) o (bL02_ O
_esn) o (bL04_ O
br) o (chL04_ O
_deb) o (chL04_ O
_desabr) o (chL04_ O
_m) o (fL01_ O
_m) o (fL02_ O
_s) o (frL02_ O
r) o (gL04_ O // inter-
_j) o (gL04_ O
_af) o (gL04_ O
_adv) o (gL04_ O
_ref) o (gL04_ O
_ap) oi (L04_ OI
_ap) oi (L01_ OI
_ap) oi (L02_ OI
_b) oi (L04_ OI
_t) o (lL03_ o
c) o (lhL02_ O // es- en- re-
_t) o (lhL02_ O
@@ -870,10 +851,13 @@ _desabr) o (chL04_ O
_ens) o (pL04_ O
_s) o (prL04_ O
_) o (ptL04_ O
_defl) o (rL02_ O
_impl) o (rL02_ O
_inod) o (rL03_ O
_inson) o (rL03_ O
_comem) o (rL04 O
_remem) o (rL04_ O
f) o (rmL03_ O
_enf) o (rquL02_ O
_ext) o (rquL02_ O
c) o (rrL01_ o // escorra, incorra, corra, recorra
@@ -882,8 +866,10 @@ _remem) o (rL04_ O
t) o (rçL01_ O // con-
_r) o (snL04_ O
_c) o (spL02_ O
_enr) o (squL02_ O
p) ostos (_ Ost=Us# // dispostos etc.
_gar) o (tL03_ o
pr) o (vL03_ O
_g) o (zL04_ O
_esb) o (çL01_ O
_r) o (çL03_ O
@@ -940,8 +926,16 @@ _remem) o (rL04_ O
?1 _) qua kwa // quatro, etc.
?1 _) que ke // quente, etc.
?1 _) quei (C k'eI // queira, queima, etc
?1 C) quen (C kw'eIN // cinquenta, etc.
?1 A) quen (C kw'eIN // frequência, etc.
A) quên (C kw'eIN // frequência, etc.
ade) qu (e kw
e) qu (estr kw
_e) qu (in kw
fre) qu (ent kw
li) qu (id kw
lí) qu (id kw
n) qu (en kw
se) qu (en kw
tran) qu (il kw
?1 quec kes // esquece, etc.
?1 queç kes // esqueça.
?1 A) que (nA_ ke // pequeno, etc.

+ 1
- 1
dictsource/sw_rules View File

@@ -70,7 +70,7 @@
_) n (k N-
_) n (k@@ N-
n (g N
_) n (g N-
K) n (g N-
_) n (g@@ N-

.group o

+ 1
- 1
dictsource/zhy_rules View File

@@ -3,7 +3,7 @@
// condition ?1 Speak English letters as English words
// condition ?2 Speak English letter as jyutping romanisation

//voice=zh-yue // to find the voice for this dictionary

.group a
?1 a _^_EN

+ 28
- 6
docs/phontab.html View File

@@ -228,31 +228,50 @@ where the <code>ELSE</code> and multiple <code>ELSE</code> parts are optional.
<p>
Multiple conditions may be joined with <code>AND</code> or <code>OR</code>, but not a mixture of <code>AND</code>s and <code>OR</code>s.
<p>
A condition may be preceded by <code>NOT</code>. For example:
<pre>
IF &lt;condition&gt; AND NOT &lt;condition&gt; THEN
&lt;statements&gt;
ENDIF
</pre>
<p>
<strong>Condition</strong>
Can be:
<ul>
<dl>
<dt>thisPh(&lt;attribute&gt;)
<dd>Test this current phoneme
<p>
<dt>prevPh(&lt;attribute&gt;)
<dd>Test the previous phoneme
<p>
<dt>prevPhW(&lt;attribute&gt;)
<dd>Test the previous phoneme, but only within the same word. Returns false if there is no previous phoneme in the word.
<p>
<dt>thisPh(&lt;attribute&gt;)
<dd>Test this current phoneme
<dt>prev2PhW(&lt;attribute&gt;)
<dd>Test the phoneme before the previous phoneme, but only within the same word. Returns false if it is not in this word.
<p>
<dt>nextPh(&lt;attribute&gt;)
<dd>Test the following phoneme
<p>
<dt>nextPhW(&lt;attribute&gt;)
<dd>Test the following phoneme, but only within the same word. Returns false if there is no following phoneme in the word.
<p>
<dt>next2Ph(&lt;attribute&gt;)
<dd>Test the phoneme after the next phoneme.
<p>
<dt>nextPhW(&lt;attribute&gt;)
<dd>Test the next phoneme, but only within the same word. Returns false if there is no following phoneme in the word.
<p>
<dt>next2PhW(&lt;attribute&gt;)
<dd>Test the phoneme after the next phoneme, but only within the same word. Returns false if not found before the word end.
<p>
<dt>next3PhW(&lt;attribute&gt;)
<dd>Test the third phoneme after the current phoneme, but only within the same word. Returns false if not found before the word end.
<p>
<dt>nextVowel(&lt;attribute&gt;)
<dd>Test the next vowel after the current phoneme, but only within the same word. Returns false if there is none.
<p>
<dt>prevVowel(&lt;attribute&gt;)
<dd>Test the previous vowel before the current phoneme, but only within the same word. Returns false if there is none.
<p>
<dt>PreVoicing()
<dd>This is used as part of the instructions for voiced stop consonants (eg. [d] [g]). If true then produce a voiced murmur before the stop.
<p>
@@ -263,6 +282,7 @@ Can be:
<strong>Attributes</strong>
<ul>
Note: Additional attributes could be added to eSpeak if needed.
<p>
<dl>
<dt>&lt;phoneme name&gt;
<dd>True if the phoneme has this phoneme name.
@@ -294,8 +314,10 @@ Note: Additional attributes could be added to eSpeak if needed.
<dt>isWordEnd
<dd>True if this is the final phoneme in a word.
<p>
<dt>isFirstVowel
<dt>isSecondVowel
<dt>isFinalVowel
<dd>True if this is the last vowel in a word.
<dd>True if this is the First, Second, or Last vowel in a word.
<p>
<dt>isAfterStress
<dd>True if this phoneme is after the stressed vowel in a word.

+ 16
- 251
phsource/compile_report
File diff suppressed because it is too large
View File


+ 40
- 2
phsource/mbrola/id1 View File

@@ -1,6 +1,5 @@

// CR1 doesn't like same phonemes twice
0 e E 5 e _
// ID1 and MS1 don't like same phonemes twice
0 s s 5 s _
0 ? k 5 k _
0 t t 5 t _
@@ -8,6 +7,10 @@
0 n n 5 n _
0 p p 5 p _
0 l/ l 5 l _
0 h h 5 h _
0 k k 5 k _
0 z z 5 z _
0 D D 5 z _

0 l/2 NULL 0 l
0 l/ NULL 0 l
@@ -28,10 +31,13 @@

0 a NULL 0 V
0 E NULL 0 e
0 E2 NULL 0 e
0 i NULL 0 I
0 o NULL 0 Q
0 O NULL 0 Q
0 u NULL 0 U
// 'id1' has phonemes OI aI aU


0 n^ NULL 0 nY
0 ? NULL 0 k
@@ -40,3 +46,35 @@
0 R NULL 0 r
0 x NULL 0 h

// some English phonemes
0 A: NULL 60 V r
0 A@ NULL 60 V r
0 eI NULL 0 e
0 oU NULL 60 Q U
0 u: NULL 0 U
0 i: NULL 0 I
0 I2 NULL 0 I
0 I# NULL 0 I
0 3 NULL 0 @
0 3: NULL 0 @
0 e@ NULL 0 e
0 i@ NULL 60 I @
0 i@3 NULL 60 I r
0 o@ NULL 60 Q @
0 O@ NULL 60 Q @
0 O: NULL 80 Q @
0 U@ NULL 60 U @
0 0 NULL 0 Q
0 a# NULL 0 @
0 aa NULL 0 V
0 @L NULL 50 @ l
0 aI @ 5 aI _
0 aI 3 5 aI _
0 aU @ 5 aU _
0 aI@ NULL 75 V @
0 aI3 NULL 75 V r
0 aU@ NULL 75 V @

0 Z NULL 60 z j
0 T NULL 0 t
0 D NULL 0 z

+ 4
- 0
phsource/ph_bengali View File

@@ -8,6 +8,10 @@ phoneme V // inherent vowel, can be [O] or [o]
vowel flag1 starttype #o endtype #o
length 200

IF thisPh(isWordEnd) AND prevPhW(isNotVowel) AND prev2PhW(isNotVowel) THEN
ChangePhoneme(NULL)
ENDIF

IF thisPh(isFirstVowel) THEN
IF nextVowel(i) OR nextVowel(u) THEN
ChangePhoneme(o)

+ 51
- 1
phsource/ph_indonesian View File

@@ -3,6 +3,9 @@ phoneme @
vowel starttype #@ endtype #@
unstressed
length 140
IF prevPh(@) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/@_low)
endphoneme

@@ -11,6 +14,9 @@ endphoneme
phoneme a
vowel starttype #a endtype #a
length 180
IF prevPh(a) THEN
InsertPhoneme(_|)
ENDIF
ChangeIfUnstressed(a/)
FMT(vowel/a)
endphoneme
@@ -19,6 +25,9 @@ endphoneme
phoneme E
vowel starttype #e endtype #e
length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
ChangeIfUnstressed(@)
FMT(vowel/e_mid)
endphoneme
@@ -26,6 +35,9 @@ endphoneme
phoneme E2 // as [E] but don't reduce to [@]
vowel starttype #e endtype #e
length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/e_mid)
endphoneme

@@ -33,6 +45,9 @@ endphoneme
phoneme e
vowel starttype #e endtype #e
length 180
IF prevPh(#e) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/e)
endphoneme

@@ -40,7 +55,9 @@ endphoneme
phoneme i
vowel starttype #i endtype #i
length 180
IfNextVowelAppend(;)
IF prevPh(i) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/i_6)
endphoneme

@@ -48,6 +65,9 @@ endphoneme
phoneme O
vowel starttype #o endtype #o
length 180
IF prevPh(#o) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/oo)
endphoneme

@@ -55,6 +75,9 @@ endphoneme
phoneme o
vowel starttype #o endtype #o
length 180
IF prevPh(#o) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/o)
endphoneme

@@ -62,6 +85,9 @@ endphoneme
phoneme u
vowel starttype #u endtype #u
length 180
IF prevPh(u) THEN
InsertPhoneme(_|)
ENDIF
FMT(vowel/u)
endphoneme

@@ -69,6 +95,12 @@ endphoneme
phoneme aI
vowel starttype #a endtype #i
length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/ai)
endphoneme

@@ -78,9 +110,27 @@ phoneme eI
FMT(vdiph/eei_2)
endphoneme

phoneme OI
vowel starttype #o endtype #i
length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/ooi)
endphoneme

phoneme aU
vowel starttype #a endtype #u
length 240
IF prevPh(isVowel) THEN
InsertPhoneme(_|)
ENDIF
IF nextPh(isVowel) THEN
AppendPhoneme(_|)
ENDIF
FMT(vdiph/au_4)
endphoneme


+ 42
- 40
phsource/phonemes View File

@@ -1864,6 +1864,20 @@ include ph_georgian
phonemetable fa base
include ph_farsi

// experimental

phonemetable ko base
include ph_korean

phonemetable kl base
include ph_greenlandic

phonemetable am base
include ph_amhari

phonemetable si hi
include ph_sinhala


//**************************************************************************************
// The following lines are experimental, for future additions.
@@ -1882,61 +1896,49 @@ include ph_kinyarwanda
//phonemetable mn base
//include ph_mongolian

phonemetable prs base
include ph_dari
//phonemetable prs base
//include ph_dari

phonemetable sl sk
include ph_slovenian

phonemetable gd base
include ph_s_gaelic
//phonemetable gd base
//include ph_s_gaelic

phonemetable nso base
include ph_northern-sotho
//phonemetable nso base
//include ph_northern-sotho

phonemetable ht fr
include ph_haitian
//phonemetable ht fr
//include ph_haitian

phonemetable az tr
include ph_azerbaijani
//phonemetable az tr
//include ph_azerbaijani

phonemetable ak base
include ph_akan
//phonemetable ak base
//include ph_akan

phonemetable am base
include ph_amhari

phonemetable wo base
include ph_wolof

phonemetable dv hi
include ph_divehi

phonemetable te hi
include ph_telugu

phonemetable si hi
include ph_sinhala
//phonemetable wo base
//include ph_wolof

phonemetable tn base
include ph_setswana
//phonemetable dv hi
//include ph_divehi

//phonemetable te hi
//include ph_telugu

phonemetable mt base
include ph_maltese
//phonemetable tn base
//include ph_setswana

phonemetable bo hi
include ph_tibetan

phonemetable kk base
include ph_kazakh
//phonemetable mt base
//include ph_maltese

phonemetable tt base
include ph_tatar
//phonemetable bo hi
//include ph_tibetan

phonemetable ko base
include ph_korean
//phonemetable kk base
//include ph_kazakh

phonemetable kl base
include ph_greenlandic
//phonemetable tt base
//include ph_tatar


BIN
phsource/vwl_fr/trr View File


+ 15
- 5
src/compiledata.cpp View File

@@ -104,9 +104,8 @@ static keywtab_t k_conditions[] = {
{"next2PhW", tWHICH_PHONEME, 6},
{"nextVowel",tWHICH_PHONEME, 7},
{"prevVowel",tWHICH_PHONEME, 8},
// {"next2PhW", tWHICH_PHONEME, 0x800},

// {"numVowels", tTEST, 0x000},
{"next3PhW", tWHICH_PHONEME, 9},
{"prev2PhW", tWHICH_PHONEME, 10},

{"PreVoicing", tTEST, 0xf01},
{"KlattSynth", tTEST, 0xf02},
@@ -1051,8 +1050,13 @@ static wxString CompileAllDictionaries()
fclose(f_in);
}

LoadVoice(voicename,0);

if(LoadVoice(voicename,1) == NULL)
{
wxLogError(wxString::Format(_T("Can't find voice '%s' for dictionary '%s'"), wxString(voicename, wxConvLocal).c_str(), dictstr.c_str()));
report = report + dictstr + _T(" No Voice, ");
errors ++;
}
else
if((err = CompileDictionary(path_dsource, dictname,log,NULL,0)) > 0)
{
report = report + dictstr + wxString::Format(_T(" %d, "),err);
@@ -2742,6 +2746,7 @@ int CompilePhoneme(int compile_phoneme)
int count;
int c;
char *p;
int vowel_length_factor = 100; // for testing
char number_buf[12];
char ipa_buf[N_ITEM_STRING+1];
PHONEME_TAB phoneme_out2;
@@ -2844,6 +2849,11 @@ int CompilePhoneme(int compile_phoneme)

case i_SET_LENGTH:
value = NextItemMax(511);
if(phoneme_out->type == phVOWEL)
{
value = (value * vowel_length_factor)/100;
}

if(after_if == 0)
{
phoneme_out->std_length = value/2;

+ 5
- 5
src/compiledict.cpp View File

@@ -470,12 +470,12 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
}

ix = 0;
if(isdigit(*p))
if(IsDigit09(*p))
{
ix += (*p-'0');
p++;
}
if(isdigit(*p))
if(IsDigit09(*p))
{
ix = ix*10 + (*p-'0');
p++;
@@ -542,7 +542,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
case 1:
if((c == '-') && multiple_words)
{
if(isdigit(word[0]))
if(IsDigit09(word[0]))
{
multiple_numeric_hyphen = 1;
}
@@ -1156,7 +1156,7 @@ static void copy_rule_string(char *string, int &state)
sxflags |= SUFX_M;
break;
default:
if(isdigit(c))
if(IsDigit09(c))
value = (value*10) + (c - '0');
break;
}
@@ -1575,7 +1575,7 @@ static int compile_lettergroup(char *input, FILE *f_out)
char item_length[N_LETTERGP_ITEMS];

p = input;
if(!isdigit(p[0]) || !isdigit(p[1]))
if(!IsDigit09(p[0]) || !IsDigit09(p[1]))
{
fprintf(f_log,"%5d: Expected 2 digits after '.L'\n",linenum);
error_count++;

+ 2
- 2
src/dictionary.cpp View File

@@ -607,7 +607,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
break; // # is subscript-h, but only for consonants

// ignore digits after the first character
if(!first && isdigit(c))
if(!first && IsDigit09(c))
continue;

if((c >= 0x20) && (c < 128))
@@ -3362,7 +3362,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
if(((c = *word1++)==0) || (c == ' '))
break;

if((c=='.') && (length > 0) && (isdigit(word[length-1])))
if((c=='.') && (length > 0) && (IsDigit09(word[length-1])))
break; // needed for lang=hu, eg. "december 2.-ig"

word[length] = c;

+ 18
- 18
src/numbers.cpp View File

@@ -604,7 +604,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
char ph_buf[80];
char ph_buf2[80];
char ph_alphabet[80];
char hexbuf[6];
char hexbuf[12];
static char pause_string[] = {phonPAUSE, 0};

ph_buf[0] = 0;
@@ -981,7 +981,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
flags[0] = 0;
flags[1] = 0;

if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || isdigit(word[-2]))
if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2]))
return(0); // not '2xx'

word_start = word;
@@ -1020,7 +1020,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
n_digits++;
}

if(isdigit(word[0]))
if(IsDigit09(word[0]))
return(0); // eg. 'xx2'

acc += prev;
@@ -1756,12 +1756,12 @@ bool CheckThousandsGroup(char *word, int group_len)
// Is this a group of 3 digits which looks like a thousands group?
int ix;

if(isdigit(word[group_len]) || isdigit(-1))
if(IsDigit09(word[group_len]) || IsDigit09(-1))
return(false);

for(ix=0; ix < group_len; ix++)
{
if(!isdigit(word[ix]))
if(!IsDigit09(word[ix]))
return(false);
}
return(true);
@@ -1812,7 +1812,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
digit_lookup = buf_digit_lookup;
number_control = control;

for(ix=0; isdigit(word[ix]); ix++) ;
for(ix=0; IsDigit09(word[ix]); ix++) ;
n_digits = ix;
value = this_value = atoi(word);

@@ -1821,14 +1821,14 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
group_len = 4;

// is there a previous thousands part (as a previous "word") ?
if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3]))
if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && IsDigit09(word[-3]))
{
prev_thousands = 1;
}
else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE))
{
// thousands groups can be separated by spaces
if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && isdigit(word[-2]))
if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && IsDigit09(word[-2]))
{
prev_thousands = 1;
}
@@ -1850,7 +1850,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
}

if((word[ix] == '.') && !isdigit(word[ix+1]) && !isdigit(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
if((word[ix] == '.') && !IsDigit09(word[ix+1]) && !IsDigit09(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
{
// remove dot unless followed by another number
word[ix] = 0;
@@ -1879,7 +1879,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
{
ordinal = 2;
}
else if(!isdigit(suffix[0])) // not _#9 (tab)
else if(!IsDigit09(suffix[0])) // not _#9 (tab)
{
sprintf(string,"_#%s",suffix);
if(Lookup(tr, string, ph_ordinal2))
@@ -1904,7 +1904,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned

if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep))
{
if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7]))
if((n_digits == 2) && (word[3] == ':') && IsDigit09(word[5]) && isspace(word[7]))
{
// looks like a time 02:30, omit the leading zero
}
@@ -1973,7 +1973,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
}

if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
if((word[n_digits] == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
{
// this "word" ends with a decimal point
Lookup(tr, "_dpt", ph_append);
@@ -2018,8 +2018,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
char *p2;
// look for combinations of the number with the next word
p = word;
while(isdigit(p[1])) p++; // just use the last digit
if(isdigit(p[-1]))
while(IsDigit09(p[1])) p++; // just use the last digit
if(IsDigit09(p[-1]))
{
p2 = p - 1;
if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab)) // lookup 2 digits
@@ -2082,7 +2082,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
n_digits++;

decimal_count = 0;
while(isdigit(word[n_digits+decimal_count]))
while(IsDigit09(word[n_digits+decimal_count]))
decimal_count++;

// if(decimal_count > 1)
@@ -2101,7 +2101,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
decimal_count--;
n_digits++;
}
if((decimal_count <= max_decimal_count) && isdigit(word[n_digits]))
if((decimal_count <= max_decimal_count) && IsDigit09(word[n_digits]))
{
LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
strcat(ph_out,buf1);
@@ -2152,7 +2152,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
}

while(isdigit(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
while(IsDigit09(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
{
// speak any remaining decimal fraction digits individually
value = word[n_digits++] - '0';
@@ -2165,7 +2165,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
if(Lookup(tr, "_dpt2", buf1))
strcat(ph_out,buf1);

if((c == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
if((c == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
{
Lookup(tr, "_dpt", buf1);
strcat(ph_out,buf1);

+ 2
- 2
src/readclause.cpp View File

@@ -1287,10 +1287,10 @@ static int attrnumber(const wchar_t *pw, int default_value, int type)
{//==================================================================
int value = 0;

if((pw == NULL) || !isdigit(*pw))
if((pw == NULL) || !IsDigit09(*pw))
return(default_value);

while(isdigit(*pw))
while(IsDigit09(*pw))
{
value = value*10 + *pw++ - '0';
}

+ 17
- 1
src/synthdata.cpp View File

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

const char *version_string = "1.47.03b 22.Mar.13";
const char *version_string = "1.47.03c 23.Mar.13";
const int version_phdata = 0x014701;

int option_device_number = -1;
@@ -615,6 +615,7 @@ static int CountVowelPosition(PHONEME_LIST *plist)
static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, USHORT *p_prog, WORD_PH_DATA *worddata)
{//========================================================================================================================
int which;
int ix;
unsigned int data;
int instn;
int instn2;
@@ -705,6 +706,21 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist,
return(false); // no previous vowel
plist = &(worddata->prev_vowel);
break;

case 9: // next3PhW
for(ix=1; ix<=3; ix++)
{
if(plist[ix].sourceix)
return(false);
}
plist = &plist[3];
break;

case 10: // prev2PhW
if((plist[0].sourceix) || (plist[-1].sourceix))
return(false);
plist-=2;
break;
}

if((which == 0) || (which == 5))

+ 4
- 1
src/tr_languages.cpp View File

@@ -975,6 +975,7 @@ SetLengthMods(tr,3); // all equal
break;

case L('i','d'): // Indonesian
case L('m','s'): // Malay
{
static const short stress_lengths_id[8] = {160, 200, 180, 180, 0, 0, 220, 240};
static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 };
@@ -1312,7 +1313,7 @@ SetLengthMods(tr,3); // all equal
tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words. Need to allow "bw'" prefix
tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED;
tr->langopts.numbers2 = 0x200; // say "thousands" before its number
}
@@ -1429,6 +1430,8 @@ SetLengthMods(tr,3); // all equal
tr->langopts.vowel_pause = 1;
tr->langopts.stress_rule = STRESSPOSN_2R;
tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
tr->langopts.max_initial_consonants = 4; // for example: mwngi


tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED;
tr->langopts.break_numbers = 0x49249268; // for languages which have numbers for 100,000 and 1,000,000

+ 6
- 5
src/translate.cpp View File

@@ -374,6 +374,7 @@ void SetLengthMods(Translator *tr, int value)
}



int IsAlpha(unsigned int c)
{//========================
// Replacement for iswalph() which also checks for some in-word symbols
@@ -429,8 +430,8 @@ int IsAlpha(unsigned int c)
return(0);
}

static int IsDigit09(unsigned int c)
{//=========================
int IsDigit09(unsigned int c)
{//============================
if((c >= '0') && (c <= '9'))
return(1);
return(0);
@@ -2311,10 +2312,10 @@ static int EmbeddedCommand(unsigned int &source_index)
source_index++;
}

if(isdigit(source[source_index]))
if(IsDigit09(source[source_index]))
{
value = atoi(&source[source_index]);
while(isdigit(source[source_index]))
while(IsDigit09(source[source_index]))
source_index++;
}

@@ -3331,7 +3332,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre

while(pn < &number_buf[sizeof(number_buf)-20])
{
if(!isdigit(c = *pw++) && (c != tr->langopts.decimal_sep))
if(!IsDigit09(c = *pw++) && (c != tr->langopts.decimal_sep))
break;

*pn++ = c;

+ 1
- 0
src/translate.h View File

@@ -709,6 +709,7 @@ void InitNamedata(void);
void InitText(int flags);
void InitText2(void);
int IsDigit(unsigned int c);
int IsDigit09(unsigned int c);
int IsAlpha(unsigned int c);
int IsVowel(Translator *tr, int c);
int isspace2(unsigned int c);

+ 2
- 2
src/voices.cpp View File

@@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control)

// which directory to look for a named voice. List of voice names, must end in a space.
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 ";
"fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta tr vi vi-hue zh zh-yue ";
static const char *voices_europe =
"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";

@@ -1134,7 +1134,7 @@ static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir)
// The voice name has a +variant suffix
variant_num = 0;
*p++ = 0; // delete the suffix from the voice name
if(isdigit(*p))
if(IsDigit09(*p))
{
variant_num = atoi(p); // variant number
}

Loading…
Cancel
Save