mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.7.2.1'
This commit is contained in:
@@ -30,442 +30,448 @@ public class Xol_lang_stub_ { // lists all known stub_ary supported by MW
|
||||
, Id_ady = 4
|
||||
, Id_ady_cyrl = 5
|
||||
, Id_aeb = 6
|
||||
, Id_af = 7
|
||||
, Id_ak = 8
|
||||
, Id_akz = 9
|
||||
, Id_aln = 10
|
||||
, Id_als = 11
|
||||
, Id_am = 12
|
||||
, Id_an = 13
|
||||
, Id_ang = 14
|
||||
, Id_anp = 15
|
||||
, Id_ar = 16
|
||||
, Id_arc = 17
|
||||
, Id_arn = 18
|
||||
, Id_aro = 19
|
||||
, Id_arq = 20
|
||||
, Id_ary = 21
|
||||
, Id_arz = 22
|
||||
, Id_as = 23
|
||||
, Id_ase = 24
|
||||
, Id_ast = 25
|
||||
, Id_av = 26
|
||||
, Id_avk = 27
|
||||
, Id_awa = 28
|
||||
, Id_ay = 29
|
||||
, Id_az = 30
|
||||
, Id_azb = 31
|
||||
, Id_ba = 32
|
||||
, Id_ban = 33
|
||||
, Id_bar = 34
|
||||
, Id_bat_smg = 35
|
||||
, Id_bbc = 36
|
||||
, Id_bbc_latn = 37
|
||||
, Id_bcc = 38
|
||||
, Id_bcl = 39
|
||||
, Id_be = 40
|
||||
, Id_be_tarask = 41
|
||||
, Id_be_x_old = 42
|
||||
, Id_bew = 43
|
||||
, Id_bg = 44
|
||||
, Id_bgn = 45
|
||||
, Id_bh = 46
|
||||
, Id_bho = 47
|
||||
, Id_bi = 48
|
||||
, Id_bjn = 49
|
||||
, Id_bm = 50
|
||||
, Id_bn = 51
|
||||
, Id_bo = 52
|
||||
, Id_bpy = 53
|
||||
, Id_bqi = 54
|
||||
, Id_br = 55
|
||||
, Id_brh = 56
|
||||
, Id_bs = 57
|
||||
, Id_bto = 58
|
||||
, Id_bug = 59
|
||||
, Id_bxr = 60
|
||||
, Id_ca = 61
|
||||
, Id_cbk_zam = 62
|
||||
, Id_cdo = 63
|
||||
, Id_ce = 64
|
||||
, Id_ceb = 65
|
||||
, Id_ch = 66
|
||||
, Id_chm = 67
|
||||
, Id_cho = 68
|
||||
, Id_chr = 69
|
||||
, Id_chy = 70
|
||||
, Id_ckb = 71
|
||||
, Id_co = 72
|
||||
, Id_cps = 73
|
||||
, Id_cr = 74
|
||||
, Id_crh = 75
|
||||
, Id_crh_cyrl = 76
|
||||
, Id_crh_latn = 77
|
||||
, Id_cs = 78
|
||||
, Id_csb = 79
|
||||
, Id_cu = 80
|
||||
, Id_cv = 81
|
||||
, Id_cy = 82
|
||||
, Id_da = 83
|
||||
, Id_de = 84
|
||||
, Id_de_at = 85
|
||||
, Id_de_ch = 86
|
||||
, Id_de_formal = 87
|
||||
, Id_diq = 88
|
||||
, Id_dsb = 89
|
||||
, Id_dtp = 90
|
||||
, Id_dv = 91
|
||||
, Id_dz = 92
|
||||
, Id_ee = 93
|
||||
, Id_egl = 94
|
||||
, Id_el = 95
|
||||
, Id_eml = 96
|
||||
, Id_en_ca = 97
|
||||
, Id_en_gb = 98
|
||||
, Id_en_rtl = 99
|
||||
, Id_enrtl = 100
|
||||
, Id_eo = 101
|
||||
, Id_es = 102
|
||||
, Id_es_formal = 103
|
||||
, Id_esu = 104
|
||||
, Id_et = 105
|
||||
, Id_eu = 106
|
||||
, Id_ext = 107
|
||||
, Id_fa = 108
|
||||
, Id_ff = 109
|
||||
, Id_fi = 110
|
||||
, Id_fit = 111
|
||||
, Id_fiu_vro = 112
|
||||
, Id_fj = 113
|
||||
, Id_fo = 114
|
||||
, Id_fr = 115
|
||||
, Id_frc = 116
|
||||
, Id_frp = 117
|
||||
, Id_frr = 118
|
||||
, Id_fur = 119
|
||||
, Id_fy = 120
|
||||
, Id_ga = 121
|
||||
, Id_gag = 122
|
||||
, Id_gan = 123
|
||||
, Id_gan_hans = 124
|
||||
, Id_gan_hant = 125
|
||||
, Id_gd = 126
|
||||
, Id_gl = 127
|
||||
, Id_glk = 128
|
||||
, Id_gn = 129
|
||||
, Id_gom = 130
|
||||
, Id_gom_deva = 131
|
||||
, Id_gom_latn = 132
|
||||
, Id_got = 133
|
||||
, Id_grc = 134
|
||||
, Id_gsw = 135
|
||||
, Id_gu = 136
|
||||
, Id_guc = 137
|
||||
, Id_gv = 138
|
||||
, Id_ha = 139
|
||||
, Id_hak = 140
|
||||
, Id_haw = 141
|
||||
, Id_he = 142
|
||||
, Id_hi = 143
|
||||
, Id_hif = 144
|
||||
, Id_hif_latn = 145
|
||||
, Id_hil = 146
|
||||
, Id_ho = 147
|
||||
, Id_hr = 148
|
||||
, Id_hrx = 149
|
||||
, Id_hsb = 150
|
||||
, Id_hsn = 151
|
||||
, Id_ht = 152
|
||||
, Id_hu = 153
|
||||
, Id_hu_formal = 154
|
||||
, Id_hy = 155
|
||||
, Id_hz = 156
|
||||
, Id_ia = 157
|
||||
, Id_id = 158
|
||||
, Id_ie = 159
|
||||
, Id_ig = 160
|
||||
, Id_ii = 161
|
||||
, Id_ik = 162
|
||||
, Id_ike_cans = 163
|
||||
, Id_ike_latn = 164
|
||||
, Id_ilo = 165
|
||||
, Id_inh = 166
|
||||
, Id_io = 167
|
||||
, Id_is = 168
|
||||
, Id_it = 169
|
||||
, Id_iu = 170
|
||||
, Id_izh = 171
|
||||
, Id_ja = 172
|
||||
, Id_jam = 173
|
||||
, Id_jbo = 174
|
||||
, Id_jut = 175
|
||||
, Id_jv = 176
|
||||
, Id_ka = 177
|
||||
, Id_kaa = 178
|
||||
, Id_kab = 179
|
||||
, Id_kbd = 180
|
||||
, Id_kbd_cyrl = 181
|
||||
, Id_kg = 182
|
||||
, Id_khw = 183
|
||||
, Id_ki = 184
|
||||
, Id_kiu = 185
|
||||
, Id_kj = 186
|
||||
, Id_kk = 187
|
||||
, Id_kk_arab = 188
|
||||
, Id_kk_cn = 189
|
||||
, Id_kk_cyrl = 190
|
||||
, Id_kk_kz = 191
|
||||
, Id_kk_latn = 192
|
||||
, Id_kk_tr = 193
|
||||
, Id_kl = 194
|
||||
, Id_km = 195
|
||||
, Id_kn = 196
|
||||
, Id_ko = 197
|
||||
, Id_ko_kp = 198
|
||||
, Id_koi = 199
|
||||
, Id_kok = 200
|
||||
, Id_kr = 201
|
||||
, Id_krc = 202
|
||||
, Id_kri = 203
|
||||
, Id_krj = 204
|
||||
, Id_krl = 205
|
||||
, Id_ks = 206
|
||||
, Id_ks_arab = 207
|
||||
, Id_ks_deva = 208
|
||||
, Id_ksh = 209
|
||||
, Id_ku = 210
|
||||
, Id_ku_arab = 211
|
||||
, Id_ku_latn = 212
|
||||
, Id_kv = 213
|
||||
, Id_kw = 214
|
||||
, Id_ky = 215
|
||||
, Id_la = 216
|
||||
, Id_lad = 217
|
||||
, Id_lb = 218
|
||||
, Id_lbe = 219
|
||||
, Id_lez = 220
|
||||
, Id_lfn = 221
|
||||
, Id_lg = 222
|
||||
, Id_li = 223
|
||||
, Id_lij = 224
|
||||
, Id_liv = 225
|
||||
, Id_lmo = 226
|
||||
, Id_ln = 227
|
||||
, Id_lo = 228
|
||||
, Id_loz = 229
|
||||
, Id_lrc = 230
|
||||
, Id_lt = 231
|
||||
, Id_ltg = 232
|
||||
, Id_lus = 233
|
||||
, Id_luz = 234
|
||||
, Id_lv = 235
|
||||
, Id_lzh = 236
|
||||
, Id_lzz = 237
|
||||
, Id_mai = 238
|
||||
, Id_map_bms = 239
|
||||
, Id_mdf = 240
|
||||
, Id_mg = 241
|
||||
, Id_mh = 242
|
||||
, Id_mhr = 243
|
||||
, Id_mi = 244
|
||||
, Id_mic = 245
|
||||
, Id_min = 246
|
||||
, Id_mk = 247
|
||||
, Id_ml = 248
|
||||
, Id_mn = 249
|
||||
, Id_mnc = 250
|
||||
, Id_mo = 251
|
||||
, Id_mr = 252
|
||||
, Id_mrj = 253
|
||||
, Id_ms = 254
|
||||
, Id_mt = 255
|
||||
, Id_mui = 256
|
||||
, Id_mus = 257
|
||||
, Id_mwl = 258
|
||||
, Id_mwv = 259
|
||||
, Id_my = 260
|
||||
, Id_myv = 261
|
||||
, Id_mzn = 262
|
||||
, Id_na = 263
|
||||
, Id_nah = 264
|
||||
, Id_nan = 265
|
||||
, Id_nap = 266
|
||||
, Id_nb = 267
|
||||
, Id_nds = 268
|
||||
, Id_nds_nl = 269
|
||||
, Id_ne = 270
|
||||
, Id_new = 271
|
||||
, Id_ng = 272
|
||||
, Id_niu = 273
|
||||
, Id_nl = 274
|
||||
, Id_nl_informal = 275
|
||||
, Id_nn = 276
|
||||
, Id_no = 277
|
||||
, Id_nov = 278
|
||||
, Id_nrm = 279
|
||||
, Id_nso = 280
|
||||
, Id_nv = 281
|
||||
, Id_ny = 282
|
||||
, Id_oc = 283
|
||||
, Id_om = 284
|
||||
, Id_or = 285
|
||||
, Id_os = 286
|
||||
, Id_pa = 287
|
||||
, Id_pag = 288
|
||||
, Id_pam = 289
|
||||
, Id_pap = 290
|
||||
, Id_pbb = 291
|
||||
, Id_pcd = 292
|
||||
, Id_pdc = 293
|
||||
, Id_pdt = 294
|
||||
, Id_pfl = 295
|
||||
, Id_pi = 296
|
||||
, Id_pih = 297
|
||||
, Id_pl = 298
|
||||
, Id_pms = 299
|
||||
, Id_pnb = 300
|
||||
, Id_pnt = 301
|
||||
, Id_ppl = 302
|
||||
, Id_prg = 303
|
||||
, Id_ps = 304
|
||||
, Id_pt = 305
|
||||
, Id_pt_br = 306
|
||||
, Id_qqq = 307
|
||||
, Id_qu = 308
|
||||
, Id_qug = 309
|
||||
, Id_rap = 310
|
||||
, Id_rgn = 311
|
||||
, Id_rif = 312
|
||||
, Id_rm = 313
|
||||
, Id_rmf = 314
|
||||
, Id_rmy = 315
|
||||
, Id_rn = 316
|
||||
, Id_ro = 317
|
||||
, Id_roa_rup = 318
|
||||
, Id_roa_tara = 319
|
||||
, Id_ru = 320
|
||||
, Id_rue = 321
|
||||
, Id_rup = 322
|
||||
, Id_ruq = 323
|
||||
, Id_ruq_cyrl = 324
|
||||
, Id_ruq_latn = 325
|
||||
, Id_rw = 326
|
||||
, Id_ryu = 327
|
||||
, Id_sa = 328
|
||||
, Id_sah = 329
|
||||
, Id_sat = 330
|
||||
, Id_saz = 331
|
||||
, Id_sc = 332
|
||||
, Id_scn = 333
|
||||
, Id_sco = 334
|
||||
, Id_sd = 335
|
||||
, Id_sdc = 336
|
||||
, Id_sdh = 337
|
||||
, Id_se = 338
|
||||
, Id_sei = 339
|
||||
, Id_ses = 340
|
||||
, Id_sg = 341
|
||||
, Id_sgs = 342
|
||||
, Id_sh = 343
|
||||
, Id_shi = 344
|
||||
, Id_shn = 345
|
||||
, Id_si = 346
|
||||
, Id_simple = 347
|
||||
, Id_sk = 348
|
||||
, Id_sl = 349
|
||||
, Id_sli = 350
|
||||
, Id_sly = 351
|
||||
, Id_sm = 352
|
||||
, Id_sma = 353
|
||||
, Id_sn = 354
|
||||
, Id_so = 355
|
||||
, Id_sq = 356
|
||||
, Id_sr = 357
|
||||
, Id_sr_ec = 358
|
||||
, Id_sr_el = 359
|
||||
, Id_srn = 360
|
||||
, Id_ss = 361
|
||||
, Id_st = 362
|
||||
, Id_stq = 363
|
||||
, Id_su = 364
|
||||
, Id_sv = 365
|
||||
, Id_sw = 366
|
||||
, Id_sxu = 367
|
||||
, Id_szl = 368
|
||||
, Id_ta = 369
|
||||
, Id_tcy = 370
|
||||
, Id_te = 371
|
||||
, Id_test = 372
|
||||
, Id_tet = 373
|
||||
, Id_tg = 374
|
||||
, Id_tg_cyrl = 375
|
||||
, Id_tg_latn = 376
|
||||
, Id_th = 377
|
||||
, Id_ti = 378
|
||||
, Id_tk = 379
|
||||
, Id_tl = 380
|
||||
, Id_tly = 381
|
||||
, Id_tn = 382
|
||||
, Id_to = 383
|
||||
, Id_tokipona = 384
|
||||
, Id_tp = 385
|
||||
, Id_tpi = 386
|
||||
, Id_tr = 387
|
||||
, Id_tru = 388
|
||||
, Id_ts = 389
|
||||
, Id_tt = 390
|
||||
, Id_tt_cyrl = 391
|
||||
, Id_tt_latn = 392
|
||||
, Id_ttt = 393
|
||||
, Id_tum = 394
|
||||
, Id_tw = 395
|
||||
, Id_ty = 396
|
||||
, Id_tyv = 397
|
||||
, Id_tzm = 398
|
||||
, Id_ua = 399
|
||||
, Id_udm = 400
|
||||
, Id_ug = 401
|
||||
, Id_ug_arab = 402
|
||||
, Id_ug_latn = 403
|
||||
, Id_uk = 404
|
||||
, Id_ur = 405
|
||||
, Id_uz = 406
|
||||
, Id_ve = 407
|
||||
, Id_vec = 408
|
||||
, Id_vep = 409
|
||||
, Id_vi = 410
|
||||
, Id_vls = 411
|
||||
, Id_vmf = 412
|
||||
, Id_vo = 413
|
||||
, Id_vot = 414
|
||||
, Id_vro = 415
|
||||
, Id_wa = 416
|
||||
, Id_war = 417
|
||||
, Id_wo = 418
|
||||
, Id_wuu = 419
|
||||
, Id_xal = 420
|
||||
, Id_xh = 421
|
||||
, Id_xmf = 422
|
||||
, Id_yi = 423
|
||||
, Id_yo = 424
|
||||
, Id_yue = 425
|
||||
, Id_za = 426
|
||||
, Id_zea = 427
|
||||
, Id_zh = 428
|
||||
, Id_zh_classical = 429
|
||||
, Id_zh_cn = 430
|
||||
, Id_zh_hans = 431
|
||||
, Id_zh_hant = 432
|
||||
, Id_zh_hk = 433
|
||||
, Id_zh_min_nan = 434
|
||||
, Id_zh_mo = 435
|
||||
, Id_zh_my = 436
|
||||
, Id_zh_sg = 437
|
||||
, Id_zh_tw = 438
|
||||
, Id_zh_yue = 439
|
||||
, Id_zu = 440
|
||||
, Id_aeb_arab = 7
|
||||
, Id_aeb_latn = 8
|
||||
, Id_af = 9
|
||||
, Id_ak = 10
|
||||
, Id_akz = 11
|
||||
, Id_aln = 12
|
||||
, Id_als = 13
|
||||
, Id_am = 14
|
||||
, Id_an = 15
|
||||
, Id_ang = 16
|
||||
, Id_anp = 17
|
||||
, Id_ar = 18
|
||||
, Id_arc = 19
|
||||
, Id_arn = 20
|
||||
, Id_aro = 21
|
||||
, Id_arq = 22
|
||||
, Id_ary = 23
|
||||
, Id_arz = 24
|
||||
, Id_as = 25
|
||||
, Id_ase = 26
|
||||
, Id_ast = 27
|
||||
, Id_av = 28
|
||||
, Id_avk = 29
|
||||
, Id_awa = 30
|
||||
, Id_ay = 31
|
||||
, Id_az = 32
|
||||
, Id_azb = 33
|
||||
, Id_ba = 34
|
||||
, Id_ban = 35
|
||||
, Id_bar = 36
|
||||
, Id_bat_smg = 37
|
||||
, Id_bbc = 38
|
||||
, Id_bbc_latn = 39
|
||||
, Id_bcc = 40
|
||||
, Id_bcl = 41
|
||||
, Id_be = 42
|
||||
, Id_be_tarask = 43
|
||||
, Id_be_x_old = 44
|
||||
, Id_bew = 45
|
||||
, Id_bg = 46
|
||||
, Id_bgn = 47
|
||||
, Id_bh = 48
|
||||
, Id_bho = 49
|
||||
, Id_bi = 50
|
||||
, Id_bjn = 51
|
||||
, Id_bm = 52
|
||||
, Id_bn = 53
|
||||
, Id_bo = 54
|
||||
, Id_bpy = 55
|
||||
, Id_bqi = 56
|
||||
, Id_br = 57
|
||||
, Id_brh = 58
|
||||
, Id_bs = 59
|
||||
, Id_bto = 60
|
||||
, Id_bug = 61
|
||||
, Id_bxr = 62
|
||||
, Id_ca = 63
|
||||
, Id_cbk_zam = 64
|
||||
, Id_cdo = 65
|
||||
, Id_ce = 66
|
||||
, Id_ceb = 67
|
||||
, Id_ch = 68
|
||||
, Id_chm = 69
|
||||
, Id_cho = 70
|
||||
, Id_chr = 71
|
||||
, Id_chy = 72
|
||||
, Id_ckb = 73
|
||||
, Id_co = 74
|
||||
, Id_cps = 75
|
||||
, Id_cr = 76
|
||||
, Id_crh = 77
|
||||
, Id_crh_cyrl = 78
|
||||
, Id_crh_latn = 79
|
||||
, Id_cs = 80
|
||||
, Id_csb = 81
|
||||
, Id_cu = 82
|
||||
, Id_cv = 83
|
||||
, Id_cy = 84
|
||||
, Id_da = 85
|
||||
, Id_de = 86
|
||||
, Id_de_at = 87
|
||||
, Id_de_ch = 88
|
||||
, Id_de_formal = 89
|
||||
, Id_diq = 90
|
||||
, Id_dsb = 91
|
||||
, Id_dtp = 92
|
||||
, Id_dty = 93
|
||||
, Id_dv = 94
|
||||
, Id_dz = 95
|
||||
, Id_ee = 96
|
||||
, Id_egl = 97
|
||||
, Id_el = 98
|
||||
, Id_eml = 99
|
||||
, Id_en_ca = 100
|
||||
, Id_en_gb = 101
|
||||
, Id_en_rtl = 102
|
||||
, Id_enrtl = 103
|
||||
, Id_eo = 104
|
||||
, Id_es = 105
|
||||
, Id_es_formal = 106
|
||||
, Id_esu = 107
|
||||
, Id_et = 108
|
||||
, Id_eu = 109
|
||||
, Id_ext = 110
|
||||
, Id_fa = 111
|
||||
, Id_ff = 112
|
||||
, Id_fi = 113
|
||||
, Id_fit = 114
|
||||
, Id_fiu_vro = 115
|
||||
, Id_fj = 116
|
||||
, Id_fo = 117
|
||||
, Id_fr = 118
|
||||
, Id_frc = 119
|
||||
, Id_frp = 120
|
||||
, Id_frr = 121
|
||||
, Id_fur = 122
|
||||
, Id_fy = 123
|
||||
, Id_ga = 124
|
||||
, Id_gag = 125
|
||||
, Id_gan = 126
|
||||
, Id_gan_hans = 127
|
||||
, Id_gan_hant = 128
|
||||
, Id_gd = 129
|
||||
, Id_gl = 130
|
||||
, Id_glk = 131
|
||||
, Id_gn = 132
|
||||
, Id_gom = 133
|
||||
, Id_gom_deva = 134
|
||||
, Id_gom_latn = 135
|
||||
, Id_gor = 136
|
||||
, Id_got = 137
|
||||
, Id_grc = 138
|
||||
, Id_gsw = 139
|
||||
, Id_gu = 140
|
||||
, Id_guc = 141
|
||||
, Id_gv = 142
|
||||
, Id_ha = 143
|
||||
, Id_hak = 144
|
||||
, Id_haw = 145
|
||||
, Id_he = 146
|
||||
, Id_hi = 147
|
||||
, Id_hif = 148
|
||||
, Id_hif_latn = 149
|
||||
, Id_hil = 150
|
||||
, Id_ho = 151
|
||||
, Id_hr = 152
|
||||
, Id_hrx = 153
|
||||
, Id_hsb = 154
|
||||
, Id_hsn = 155
|
||||
, Id_ht = 156
|
||||
, Id_hu = 157
|
||||
, Id_hu_formal = 158
|
||||
, Id_hy = 159
|
||||
, Id_hz = 160
|
||||
, Id_ia = 161
|
||||
, Id_id = 162
|
||||
, Id_ie = 163
|
||||
, Id_ig = 164
|
||||
, Id_ii = 165
|
||||
, Id_ik = 166
|
||||
, Id_ike_cans = 167
|
||||
, Id_ike_latn = 168
|
||||
, Id_ilo = 169
|
||||
, Id_inh = 170
|
||||
, Id_io = 171
|
||||
, Id_is = 172
|
||||
, Id_it = 173
|
||||
, Id_iu = 174
|
||||
, Id_izh = 175
|
||||
, Id_ja = 176
|
||||
, Id_jam = 177
|
||||
, Id_jbo = 178
|
||||
, Id_jut = 179
|
||||
, Id_jv = 180
|
||||
, Id_ka = 181
|
||||
, Id_kaa = 182
|
||||
, Id_kab = 183
|
||||
, Id_kbd = 184
|
||||
, Id_kbd_cyrl = 185
|
||||
, Id_kg = 186
|
||||
, Id_khw = 187
|
||||
, Id_ki = 188
|
||||
, Id_kiu = 189
|
||||
, Id_kj = 190
|
||||
, Id_kk = 191
|
||||
, Id_kk_arab = 192
|
||||
, Id_kk_cn = 193
|
||||
, Id_kk_cyrl = 194
|
||||
, Id_kk_kz = 195
|
||||
, Id_kk_latn = 196
|
||||
, Id_kk_tr = 197
|
||||
, Id_kl = 198
|
||||
, Id_km = 199
|
||||
, Id_kn = 200
|
||||
, Id_ko = 201
|
||||
, Id_ko_kp = 202
|
||||
, Id_koi = 203
|
||||
, Id_kok = 204
|
||||
, Id_kr = 205
|
||||
, Id_krc = 206
|
||||
, Id_kri = 207
|
||||
, Id_krj = 208
|
||||
, Id_krl = 209
|
||||
, Id_ks = 210
|
||||
, Id_ks_arab = 211
|
||||
, Id_ks_deva = 212
|
||||
, Id_ksh = 213
|
||||
, Id_ku = 214
|
||||
, Id_ku_arab = 215
|
||||
, Id_ku_latn = 216
|
||||
, Id_kv = 217
|
||||
, Id_kw = 218
|
||||
, Id_ky = 219
|
||||
, Id_la = 220
|
||||
, Id_lad = 221
|
||||
, Id_lb = 222
|
||||
, Id_lbe = 223
|
||||
, Id_lez = 224
|
||||
, Id_lfn = 225
|
||||
, Id_lg = 226
|
||||
, Id_li = 227
|
||||
, Id_lij = 228
|
||||
, Id_liv = 229
|
||||
, Id_lki = 230
|
||||
, Id_lmo = 231
|
||||
, Id_ln = 232
|
||||
, Id_lo = 233
|
||||
, Id_loz = 234
|
||||
, Id_lrc = 235
|
||||
, Id_lt = 236
|
||||
, Id_ltg = 237
|
||||
, Id_lus = 238
|
||||
, Id_luz = 239
|
||||
, Id_lv = 240
|
||||
, Id_lzh = 241
|
||||
, Id_lzz = 242
|
||||
, Id_mai = 243
|
||||
, Id_map_bms = 244
|
||||
, Id_mdf = 245
|
||||
, Id_mg = 246
|
||||
, Id_mh = 247
|
||||
, Id_mhr = 248
|
||||
, Id_mi = 249
|
||||
, Id_mic = 250
|
||||
, Id_min = 251
|
||||
, Id_mk = 252
|
||||
, Id_ml = 253
|
||||
, Id_mn = 254
|
||||
, Id_mnc = 255
|
||||
, Id_mo = 256
|
||||
, Id_mr = 257
|
||||
, Id_mrj = 258
|
||||
, Id_ms = 259
|
||||
, Id_mt = 260
|
||||
, Id_mui = 261
|
||||
, Id_mus = 262
|
||||
, Id_mwl = 263
|
||||
, Id_mwv = 264
|
||||
, Id_my = 265
|
||||
, Id_myv = 266
|
||||
, Id_mzn = 267
|
||||
, Id_na = 268
|
||||
, Id_nah = 269
|
||||
, Id_nan = 270
|
||||
, Id_nap = 271
|
||||
, Id_nb = 272
|
||||
, Id_nds = 273
|
||||
, Id_nds_nl = 274
|
||||
, Id_ne = 275
|
||||
, Id_new = 276
|
||||
, Id_ng = 277
|
||||
, Id_niu = 278
|
||||
, Id_nl = 279
|
||||
, Id_nl_informal = 280
|
||||
, Id_nn = 281
|
||||
, Id_no = 282
|
||||
, Id_nov = 283
|
||||
, Id_nrm = 284
|
||||
, Id_nso = 285
|
||||
, Id_nv = 286
|
||||
, Id_ny = 287
|
||||
, Id_oc = 288
|
||||
, Id_olo = 289
|
||||
, Id_om = 290
|
||||
, Id_or = 291
|
||||
, Id_os = 292
|
||||
, Id_pa = 293
|
||||
, Id_pag = 294
|
||||
, Id_pam = 295
|
||||
, Id_pap = 296
|
||||
, Id_pbb = 297
|
||||
, Id_pcd = 298
|
||||
, Id_pdc = 299
|
||||
, Id_pdt = 300
|
||||
, Id_pfl = 301
|
||||
, Id_pi = 302
|
||||
, Id_pih = 303
|
||||
, Id_pl = 304
|
||||
, Id_pms = 305
|
||||
, Id_pnb = 306
|
||||
, Id_pnt = 307
|
||||
, Id_ppl = 308
|
||||
, Id_prg = 309
|
||||
, Id_ps = 310
|
||||
, Id_pt = 311
|
||||
, Id_pt_br = 312
|
||||
, Id_qqq = 313
|
||||
, Id_qu = 314
|
||||
, Id_qug = 315
|
||||
, Id_rap = 316
|
||||
, Id_rgn = 317
|
||||
, Id_rif = 318
|
||||
, Id_rm = 319
|
||||
, Id_rmf = 320
|
||||
, Id_rmy = 321
|
||||
, Id_rn = 322
|
||||
, Id_ro = 323
|
||||
, Id_roa_rup = 324
|
||||
, Id_roa_tara = 325
|
||||
, Id_ru = 326
|
||||
, Id_rue = 327
|
||||
, Id_rup = 328
|
||||
, Id_ruq = 329
|
||||
, Id_ruq_cyrl = 330
|
||||
, Id_ruq_latn = 331
|
||||
, Id_rw = 332
|
||||
, Id_ryu = 333
|
||||
, Id_sa = 334
|
||||
, Id_sah = 335
|
||||
, Id_sat = 336
|
||||
, Id_saz = 337
|
||||
, Id_sc = 338
|
||||
, Id_scn = 339
|
||||
, Id_sco = 340
|
||||
, Id_sd = 341
|
||||
, Id_sdc = 342
|
||||
, Id_sdh = 343
|
||||
, Id_se = 344
|
||||
, Id_sei = 345
|
||||
, Id_ses = 346
|
||||
, Id_sg = 347
|
||||
, Id_sgs = 348
|
||||
, Id_sh = 349
|
||||
, Id_shi = 350
|
||||
, Id_shn = 351
|
||||
, Id_si = 352
|
||||
, Id_simple = 353
|
||||
, Id_sk = 354
|
||||
, Id_sl = 355
|
||||
, Id_sli = 356
|
||||
, Id_sly = 357
|
||||
, Id_sm = 358
|
||||
, Id_sma = 359
|
||||
, Id_sn = 360
|
||||
, Id_so = 361
|
||||
, Id_sq = 362
|
||||
, Id_sr = 363
|
||||
, Id_sr_ec = 364
|
||||
, Id_sr_el = 365
|
||||
, Id_srn = 366
|
||||
, Id_ss = 367
|
||||
, Id_st = 368
|
||||
, Id_stq = 369
|
||||
, Id_su = 370
|
||||
, Id_sv = 371
|
||||
, Id_sw = 372
|
||||
, Id_sxu = 373
|
||||
, Id_szl = 374
|
||||
, Id_ta = 375
|
||||
, Id_tcy = 376
|
||||
, Id_te = 377
|
||||
, Id_test = 378
|
||||
, Id_tet = 379
|
||||
, Id_tg = 380
|
||||
, Id_tg_cyrl = 381
|
||||
, Id_tg_latn = 382
|
||||
, Id_th = 383
|
||||
, Id_ti = 384
|
||||
, Id_tk = 385
|
||||
, Id_tl = 386
|
||||
, Id_tly = 387
|
||||
, Id_tn = 388
|
||||
, Id_to = 389
|
||||
, Id_tokipona = 390
|
||||
, Id_tp = 391
|
||||
, Id_tpi = 392
|
||||
, Id_tr = 393
|
||||
, Id_tru = 394
|
||||
, Id_ts = 395
|
||||
, Id_tt = 396
|
||||
, Id_tt_cyrl = 397
|
||||
, Id_tt_latn = 398
|
||||
, Id_ttt = 399
|
||||
, Id_tum = 400
|
||||
, Id_tw = 401
|
||||
, Id_ty = 402
|
||||
, Id_tyv = 403
|
||||
, Id_tzm = 404
|
||||
, Id_ua = 405
|
||||
, Id_udm = 406
|
||||
, Id_ug = 407
|
||||
, Id_ug_arab = 408
|
||||
, Id_ug_latn = 409
|
||||
, Id_uk = 410
|
||||
, Id_ur = 411
|
||||
, Id_uz = 412
|
||||
, Id_ve = 413
|
||||
, Id_vec = 414
|
||||
, Id_vep = 415
|
||||
, Id_vi = 416
|
||||
, Id_vls = 417
|
||||
, Id_vmf = 418
|
||||
, Id_vo = 419
|
||||
, Id_vot = 420
|
||||
, Id_vro = 421
|
||||
, Id_wa = 422
|
||||
, Id_war = 423
|
||||
, Id_wo = 424
|
||||
, Id_wuu = 425
|
||||
, Id_xal = 426
|
||||
, Id_xh = 427
|
||||
, Id_xmf = 428
|
||||
, Id_yi = 429
|
||||
, Id_yo = 430
|
||||
, Id_yue = 431
|
||||
, Id_za = 432
|
||||
, Id_zea = 433
|
||||
, Id_zh = 434
|
||||
, Id_zh_classical = 435
|
||||
, Id_zh_cn = 436
|
||||
, Id_zh_hans = 437
|
||||
, Id_zh_hant = 438
|
||||
, Id_zh_hk = 439
|
||||
, Id_zh_min_nan = 440
|
||||
, Id_zh_mo = 441
|
||||
, Id_zh_my = 442
|
||||
, Id_zh_sg = 443
|
||||
, Id_zh_tw = 444
|
||||
, Id_zh_yue = 445
|
||||
, Id_zu = 446
|
||||
;
|
||||
public static final int Id__max = 441;
|
||||
public static final int Id__max = 447;
|
||||
public static Hash_adp_bry Regy() {
|
||||
if (stub_hash == null) { // NOTE: any parenthetical String below will have an "unseen" character of "\xE2\x80\xAA" at the begining and "\xE2\x80\xAC" at the end. They are responsible for parentheses-orientation in RTL stub_ary.
|
||||
stub_hash = Hash_adp_bry.ci_a7(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}}
|
||||
@@ -476,6 +482,8 @@ Regy_add(stub_hash, Id_ace, "ace", "Acèh");
|
||||
Regy_add(stub_hash, Id_ady, "ady", "Adyghe");
|
||||
Regy_add(stub_hash, Id_ady_cyrl, "ady-cyrl", "West Circassian (Cyrillic)");
|
||||
Regy_add(stub_hash, Id_aeb, "aeb", "زَوُن");
|
||||
Regy_add(stub_hash, Id_aeb_arab, "aeb-arab", "زَوُن");
|
||||
Regy_add(stub_hash, Id_aeb_latn, "aeb-latn", "زَوُن");
|
||||
Regy_add(stub_hash, Id_af, "af", "Afrikaans");
|
||||
Regy_add(stub_hash, Id_ak, "ak", "Akan");
|
||||
Regy_add(stub_hash, Id_akz, "akz", "Alibamu");
|
||||
@@ -560,6 +568,7 @@ Regy_add(stub_hash, Id_de_formal, "de-formal", "Deutsch (Sie-Form)");
|
||||
Regy_add(stub_hash, Id_diq, "diq", "Zazaki");
|
||||
Regy_add(stub_hash, Id_dsb, "dsb", "Dolnoserbski");
|
||||
Regy_add(stub_hash, Id_dtp, "dtp", "Dusun Bundu-liwan");
|
||||
Regy_add(stub_hash, Id_dty, "dty", "Dotyali");
|
||||
Regy_add(stub_hash, Id_dv, "dv", "ދިވެހިބަސް");
|
||||
Regy_add(stub_hash, Id_dz, "dz", "ཇོང་ཁ");
|
||||
Regy_add(stub_hash, Id_ee, "ee", "Eʋegbe");
|
||||
@@ -602,6 +611,7 @@ Regy_add(stub_hash, Id_gn, "gn", "Avañe'ẽ");
|
||||
Regy_add(stub_hash, Id_gom, "gom", "कोंकणी");
|
||||
Regy_add(stub_hash, Id_gom_deva, "gom-deva", "Konkani");
|
||||
Regy_add(stub_hash, Id_gom_latn, "gom-latn", "कोंकणी (Latin)");
|
||||
Regy_add(stub_hash, Id_gor, "gor", "Gor");
|
||||
Regy_add(stub_hash, Id_got, "got", "𐌲𐌿𐍄𐌹𐍃𐌺");
|
||||
Regy_add(stub_hash, Id_grc, "grc", "Ἀρχαία ἑλληνικὴ");
|
||||
Regy_add(stub_hash, Id_gsw, "gsw", "Alemannisch");
|
||||
@@ -695,6 +705,7 @@ Regy_add(stub_hash, Id_lg, "lg", "Luganda");
|
||||
Regy_add(stub_hash, Id_li, "li", "Limburgs");
|
||||
Regy_add(stub_hash, Id_lij, "lij", "Líguru");
|
||||
Regy_add(stub_hash, Id_liv, "liv", "Līvõ kēļ");
|
||||
Regy_add(stub_hash, Id_lki, "lki", "Laki");
|
||||
Regy_add(stub_hash, Id_lmo, "lmo", "Lumbaart");
|
||||
Regy_add(stub_hash, Id_ln, "ln", "Lingála");
|
||||
Regy_add(stub_hash, Id_lo, "lo", "ລາວ");
|
||||
@@ -753,6 +764,7 @@ Regy_add(stub_hash, Id_nso, "nso", "Sesotho sa Leboa");
|
||||
Regy_add(stub_hash, Id_nv, "nv", "Diné bizaad");
|
||||
Regy_add(stub_hash, Id_ny, "ny", "Chi-Chewa");
|
||||
Regy_add(stub_hash, Id_oc, "oc", "Occitan");
|
||||
Regy_add(stub_hash, Id_olo, "olo", "Olo");
|
||||
Regy_add(stub_hash, Id_om, "om", "Oromoo");
|
||||
Regy_add(stub_hash, Id_or, "or", "ଓଡ଼ିଆ");
|
||||
Regy_add(stub_hash, Id_os, "os", "Иронау");
|
||||
|
||||
@@ -79,7 +79,7 @@ public class Xol_mw_lang_parser {
|
||||
String text = Io_mgr.Instance.LoadFilStr(url);
|
||||
Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(lang_key));
|
||||
this.Parse_core(text, lang, bfr, lang_transform);
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
|
||||
}
|
||||
}
|
||||
private void Parse_file_xtns_php(Xoa_lang_mgr lang_mgr, Io_url mediawiki_root, Bry_bfr bfr, Xol_lang_transform lang_transform) {
|
||||
@@ -92,7 +92,7 @@ public class Xol_mw_lang_parser {
|
||||
String text = Io_mgr.Instance.LoadFilStr(url);
|
||||
boolean prepend_hash = String_.Eq("ParserFunctions.i18n.magic", url.NameOnly());
|
||||
this.Parse_xtn(text, url, lang_mgr, bfr, prepend_hash, lang_transform);
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
|
||||
}
|
||||
}
|
||||
private void Parse_file_json(Xoa_lang_mgr lang_mgr, Bry_bfr bfr, Xol_lang_transform lang_transform, Io_url root_dir) {
|
||||
@@ -107,7 +107,7 @@ public class Xol_mw_lang_parser {
|
||||
try {
|
||||
Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(fil.NameOnly()));
|
||||
Xob_i18n_parser.Load_msgs(true, lang, fil);
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_full(exc)));}
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_log(exc)));}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -201,7 +201,7 @@ public class Xol_mw_lang_parser {
|
||||
Parse_magicwords(line, lang.Key_bry(), lang.Kwd_mgr(), prepend_hash, lang_transform);
|
||||
break;
|
||||
}
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));}
|
||||
} catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_log(exc));}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
import gplx.core.btries.*; import gplx.core.intls.*;
|
||||
public class Xol_case_mgr implements Gfo_invk, Gfo_case_mgr {
|
||||
private Bry_bfr tmp_bfr = Bry_bfr_.New(); private Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms;
|
||||
private final Object thread_lock = new Object();
|
||||
private final Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
private final Btrie_rv trv = new Btrie_rv();
|
||||
private final Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms;
|
||||
public Xol_case_mgr(byte tid) {this.tid = tid;}
|
||||
public byte Tid() {return tid;} private byte tid;
|
||||
public Gfo_case_itm Get_or_null(byte bgn_byte, byte[] src, int bgn, int end) {
|
||||
@@ -58,65 +61,73 @@ public class Xol_case_mgr implements Gfo_invk, Gfo_case_mgr {
|
||||
public byte[] Case_reuse_upper(byte[] src, int bgn, int end) {return Case_reuse(Bool_.Y, src, bgn, end);}
|
||||
public byte[] Case_reuse_lower(byte[] src, int bgn, int end) {return Case_reuse(Bool_.N, src, bgn, end);}
|
||||
public byte[] Case_reuse(boolean upper, byte[] src, int bgn, int end) {
|
||||
int pos = bgn;
|
||||
tmp_bfr.Clear();
|
||||
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
|
||||
while (true) {
|
||||
if (pos >= end) break;
|
||||
byte b = src[pos];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
|
||||
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
if (upper)
|
||||
itm.Case_reuse_upper(src, pos, b_len);
|
||||
else
|
||||
itm.Case_reuse_lower(src, pos, b_len);
|
||||
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
|
||||
int pos = bgn;
|
||||
tmp_bfr.Clear();
|
||||
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
|
||||
while (true) {
|
||||
if (pos >= end) break;
|
||||
byte b = src[pos];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
|
||||
Object o = trie.Match_at_w_b0(trv, b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25; TS: DATE:2016-07-06
|
||||
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
if (upper)
|
||||
itm.Case_reuse_upper(src, pos, b_len);
|
||||
else
|
||||
itm.Case_reuse_lower(src, pos, b_len);
|
||||
}
|
||||
else {} // noop
|
||||
pos += b_len;
|
||||
}
|
||||
else {} // noop
|
||||
pos += b_len;
|
||||
return src;
|
||||
}
|
||||
return src;
|
||||
}
|
||||
public byte[] Case_reuse_1st_upper(byte[] src) { // NOTE: optimized version called by Frame_ttl; DATE:2014-06-21
|
||||
int src_len = src.length;
|
||||
if (src_len == 0) return src; // empty bry
|
||||
byte b = src[0];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
Object o = upper_trie.Match_bgn_w_byte(b, src, 0, b_len);
|
||||
if (o == null) return src; // 1st letter is not a lower case char (either num, symbol, or upper)
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
itm.Case_build_upper(tmp_bfr);
|
||||
int pos = upper_trie.Match_pos();
|
||||
tmp_bfr.Add_mid(src, pos, src_len);
|
||||
return tmp_bfr.To_bry_and_clear();
|
||||
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
|
||||
int src_len = src.length;
|
||||
if (src_len == 0) return src; // empty bry
|
||||
byte b = src[0];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
|
||||
Object o = upper_trie.Match_at_w_b0(trv, b, src, 0, b_len);
|
||||
if (o == null) return src; // 1st letter is not a lower case char (either num, symbol, or upper)
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
itm.Case_build_upper(tmp_bfr);
|
||||
tmp_bfr.Add_mid(src, trv.Pos(), src_len);
|
||||
return tmp_bfr.To_bry_and_clear();
|
||||
}
|
||||
}
|
||||
public byte[] Case_build_upper(byte[] src) {return Case_build_upper(src, 0, src.length);}
|
||||
public byte[] Case_build_upper(byte[] src, int bgn, int end) {return Case_build(Bool_.Y, src, bgn, end);}
|
||||
public byte[] Case_build_lower(byte[] src) {return Case_build_lower(src, 0, src.length);}
|
||||
public byte[] Case_build_lower(byte[] src, int bgn, int end) {return Case_build(Bool_.N, src, bgn, end);}
|
||||
public byte[] Case_build(boolean upper, byte[] src, int bgn, int end) {
|
||||
int pos = bgn;
|
||||
tmp_bfr.Clear();
|
||||
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
|
||||
while (true) {
|
||||
if (pos >= end) break;
|
||||
byte b = src[pos];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
|
||||
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
if (upper)
|
||||
itm.Case_build_upper(tmp_bfr);
|
||||
else
|
||||
itm.Case_build_lower(tmp_bfr);
|
||||
synchronized (thread_lock) { // LOCK:trie; DATE:2016-07-06
|
||||
int pos = bgn;
|
||||
tmp_bfr.Clear();
|
||||
Btrie_fast_mgr trie = upper ? upper_trie : lower_trie;
|
||||
while (true) {
|
||||
if (pos >= end) break;
|
||||
byte b = src[pos];
|
||||
int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
|
||||
|
||||
Object o = trie.Match_at_w_b0(trv, b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25;
|
||||
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
|
||||
Xol_case_itm itm = (Xol_case_itm)o;
|
||||
if (upper)
|
||||
itm.Case_build_upper(tmp_bfr);
|
||||
else
|
||||
itm.Case_build_lower(tmp_bfr);
|
||||
}
|
||||
else {
|
||||
tmp_bfr.Add_mid(src, pos, pos + b_len);
|
||||
}
|
||||
pos += b_len;
|
||||
}
|
||||
else {
|
||||
tmp_bfr.Add_mid(src, pos, pos + b_len);
|
||||
}
|
||||
pos += b_len;
|
||||
return tmp_bfr.To_bry_and_clear();
|
||||
}
|
||||
return tmp_bfr.To_bry_and_clear();
|
||||
}
|
||||
public byte[] Case_build_1st_upper(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.Y, src, bgn, end);}
|
||||
public byte[] Case_build_1st_lower(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.N, src, bgn, end);}
|
||||
|
||||
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.langs.funcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
|
||||
import gplx.core.threads.poolables.*;
|
||||
import gplx.xowa.parsers.tmpls.*;
|
||||
public class Xol_func_itm {
|
||||
public byte Tid() {return tid;} private byte tid = Xot_defn_.Tid_null;
|
||||
|
||||
@@ -20,8 +20,8 @@ import gplx.core.btries.*; import gplx.core.intls.*; import gplx.core.envs.*; im
|
||||
import gplx.xowa.parsers.tmpls.*;
|
||||
import gplx.xowa.langs.kwds.*;
|
||||
public class Xol_func_regy {
|
||||
private final Object thread_lock = new Object();
|
||||
private final Xoa_lang_mgr lang_mgr; private final Xol_lang_itm lang;
|
||||
private final Xol_func_itm finder = new Xol_func_itm();
|
||||
private final Btrie_slim_mgr cs_trie = Btrie_slim_mgr.cs(), ci_trie = Btrie_slim_mgr.ci_u8();
|
||||
public Xol_func_regy(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang) {this.lang_mgr = lang_mgr; this.lang = lang;}
|
||||
public void Evt_lang_changed(Xol_lang_itm lang) {
|
||||
@@ -51,48 +51,50 @@ public class Xol_func_regy {
|
||||
}
|
||||
}
|
||||
private void Add(byte[] ary, boolean case_match, Xot_defn func) {
|
||||
if (case_match)
|
||||
cs_trie.Add_obj(ary, func);
|
||||
else {
|
||||
byte[] lower_ary = lang.Case_mgr().Case_build_lower(ary, 0, ary.length);
|
||||
ci_trie.Add_obj(lower_ary, func);
|
||||
}
|
||||
// synchronized (thread_lock) { // LOCK:DELETE; DATE:2016-07-06
|
||||
if (case_match)
|
||||
cs_trie.Add_obj(ary, func);
|
||||
else {
|
||||
byte[] lower_ary = lang.Case_mgr().Case_build_lower(ary, 0, ary.length);
|
||||
ci_trie.Add_obj(lower_ary, func);
|
||||
}
|
||||
// }
|
||||
}
|
||||
public Xol_func_itm Find_defn(byte[] src, int txt_bgn, int txt_end) {
|
||||
finder.Clear();
|
||||
public void Find_defn(Xol_func_itm rv, byte[] src, int txt_bgn, int txt_end) {
|
||||
rv.Clear();
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (txt_bgn == txt_end) return finder; // NOTE: true when tmpl_name is either not loaded, or doesn't exist
|
||||
if (txt_bgn == txt_end) return; // NOTE: true when tmpl_name is either not loaded, or doesn't exist
|
||||
Xot_defn func = Match_bgn(src, txt_bgn, txt_end);
|
||||
if (func == null) return finder; // NOTE: null when tmpl_name is either not loaded, or doesn't exist
|
||||
if (func == null) return; // NOTE: null when tmpl_name is either not loaded, or doesn't exist
|
||||
byte[] func_name = func.Name();
|
||||
int match_pos = func_name.length + txt_bgn;
|
||||
byte defn_tid = func.Defn_tid();
|
||||
switch (defn_tid) {
|
||||
case Xot_defn_.Tid_func:
|
||||
if (match_pos == txt_end) // next char is ws (b/c match_pos == txt_end)
|
||||
finder.Func_set(func, -1);
|
||||
rv.Func_set(func, -1);
|
||||
else if (src[match_pos] == Pf_func_.Name_dlm) // next char is :
|
||||
finder.Func_set(func, match_pos);
|
||||
rv.Func_set(func, match_pos);
|
||||
else { // func is close, but not quite: ex: #ifx: or padlefts:
|
||||
return finder;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case Xot_defn_.Tid_safesubst:
|
||||
case Xot_defn_.Tid_subst:
|
||||
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
|
||||
rv.Subst_set_(defn_tid, txt_bgn, match_pos);
|
||||
if (match_pos < txt_end) txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos, txt_end);
|
||||
break;
|
||||
case Xot_defn_.Tid_raw:
|
||||
case Xot_defn_.Tid_msg:
|
||||
case Xot_defn_.Tid_msgnw:
|
||||
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
|
||||
rv.Subst_set_(defn_tid, txt_bgn, match_pos);
|
||||
if (match_pos + 1 < txt_end) // +1 to include ":" (keyword id "raw", not "raw:")
|
||||
txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos + 1, txt_end);
|
||||
break;
|
||||
default: return finder;
|
||||
default: return;
|
||||
}
|
||||
}
|
||||
return finder;
|
||||
return;
|
||||
}
|
||||
private Xot_defn Match_bgn(byte[] src, int bgn, int end) {
|
||||
Object cs_obj = cs_trie.Match_bgn(src, bgn, end);
|
||||
@@ -111,9 +113,11 @@ public class Xol_func_regy {
|
||||
: rv_alt; // else return rv_alt
|
||||
}
|
||||
private void LowerAry(byte[] src, int bgn, int end) {
|
||||
int len = end - bgn;
|
||||
if (len > lower_ary_len) {lower_ary = new byte[len]; lower_ary_len = len;}
|
||||
lower_ary_len = len;
|
||||
Array_.Copy_to(src, bgn, lower_ary, 0, len);
|
||||
synchronized (thread_lock) {
|
||||
int len = end - bgn;
|
||||
if (len > lower_ary_len) {lower_ary = new byte[len]; lower_ary_len = len;}
|
||||
lower_ary_len = len;
|
||||
Array_.Copy_to(src, bgn, lower_ary, 0, len);
|
||||
}
|
||||
} byte[] lower_ary = new byte[255]; int lower_ary_len = 255;
|
||||
}
|
||||
|
||||
@@ -262,10 +262,12 @@ public static final int
|
||||
private static final Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Fail_when_invalid_escapes_(false);
|
||||
private static final Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
public static void update_val_(Xol_msg_itm itm, byte[] val) {
|
||||
boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist();
|
||||
boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
|
||||
val = trie_space.Replace(tmp_bfr, val, 0, val.length);
|
||||
itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt);
|
||||
synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07
|
||||
boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist();
|
||||
boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
|
||||
val = trie_space.Replace(tmp_bfr, val, 0, val.length);
|
||||
itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt);
|
||||
}
|
||||
}
|
||||
public static final byte[] Bry_nbsp = Byte_.Ary_by_ints(194, 160);
|
||||
private static final Btrie_slim_mgr trie_space = Btrie_slim_mgr.cs() // MW:cache/MessageCache.php|get|Fix for trailing whitespace, removed by textarea|DATE:2014-04-29
|
||||
@@ -511,8 +513,10 @@ case Xol_msg_itm_.Id_xowa_wikidata_links_special: return new_(Xol_msg_itm_.Id_xo
|
||||
}
|
||||
}
|
||||
public static byte[] eval_(Bry_bfr bfr, Xol_msg_itm tmp_msg_itm, byte[] val, Object... args) {
|
||||
val = gplx.xowa.apps.gfs.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
|
||||
update_val_(tmp_msg_itm, val);
|
||||
return tmp_fmtr.Bld_bry_many(bfr, args);
|
||||
synchronized (tmp_fmtr) { // LOCK:static-objs; DATE:2016-07-07
|
||||
val = gplx.xowa.apps.gfs.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
|
||||
update_val_(tmp_msg_itm, val);
|
||||
return tmp_fmtr.Bld_bry_many(bfr, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class Xol_msg_mgr_ {
|
||||
msg_val = tmp_bfr.To_bry_and_clear();
|
||||
}
|
||||
if (has_tmpl) {
|
||||
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
|
||||
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki.Parser_mgr().Ctx()); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
|
||||
Xop_root_tkn sub_root = tkn_mkr.Root(msg_val);
|
||||
msg_val = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, tkn_mkr, msg_val);
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public class Xol_msg_mgr_ {
|
||||
msg_in_wiki = wiki.Msg_mgr().Get_or_make(msg_key);
|
||||
Xoae_page msg_page = Get_msg_itm_from_db(wiki, lang, msg_key, msg_key_sub_root);
|
||||
byte[] msg_val = Bry_.Empty;
|
||||
if (msg_page.Missing()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs";
|
||||
if (msg_page.Db().Page().Exists_n()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs";
|
||||
Xol_msg_itm msg_in_lang = Get_msg_itm_from_gfs(wiki, lang, msg_key_sub_root);
|
||||
if (msg_in_lang == null) {
|
||||
msg_val = tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).To_bry_and_clear(); // set val to <msg_key>
|
||||
@@ -94,8 +94,8 @@ public class Xol_msg_mgr_ {
|
||||
msg_in_wiki.Src_(Xol_msg_itm.Src_lang);
|
||||
}
|
||||
}
|
||||
else { // page found; dump entire contents
|
||||
msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Data_raw()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
|
||||
else { // page found; dump entire contents
|
||||
msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Db().Text().Text_bry()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
|
||||
msg_in_wiki.Src_(Xol_msg_itm.Src_wiki);
|
||||
}
|
||||
Xol_msg_itm_.update_val_(msg_in_wiki, msg_val);
|
||||
@@ -105,14 +105,14 @@ public class Xol_msg_mgr_ {
|
||||
byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon();
|
||||
Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl
|
||||
Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
|
||||
if (rv.Missing()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
|
||||
if (rv.Db().Page().Exists_n()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]]
|
||||
byte[][] fallback_ary = lang.Fallback_bry_ary();
|
||||
int fallback_ary_len = fallback_ary.length;
|
||||
for (int i = 0; i < fallback_ary_len; i++) {
|
||||
byte[] fallback = fallback_ary[i];
|
||||
ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback"
|
||||
rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Load_page_by_ttl_for_msg(ttl);
|
||||
if (!rv.Missing()) break;
|
||||
if (rv.Db().Page().Exists()) break;
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
||||
@@ -49,7 +49,7 @@ class Xol_msg_mgr_fxt {
|
||||
}
|
||||
public void Test_mediaWiki_msg(String raw, String expd) {
|
||||
byte[] msg_ttl = Bry_.new_a7("MediaWiki:msg_ttl");
|
||||
wiki.Db_mgr().Save_mgr().Data_create(Xoa_ttl.parse(wiki, msg_ttl), Bry_.new_a7(raw));
|
||||
wiki.Db_mgr().Save_mgr().Data_create(Xoa_ttl.Parse(wiki, msg_ttl), Bry_.new_a7(raw));
|
||||
Tfds.Eq(expd, String_.new_u8(wiki.Msg_mgr().Val_by_key_obj(Bry_.new_a7("msg_ttl"))));
|
||||
}
|
||||
public void Test_val_html_accesskey_and_title(String init_title, String init_accesskey, String expd) {
|
||||
|
||||
@@ -27,8 +27,11 @@ public class Xol_specials_mgr implements Gfo_invk {
|
||||
public Xol_specials_itm Get_by_alias(byte[] alias) {return (Xol_specials_itm)hash_by_aliases.Get_by(alias);}
|
||||
public Xol_specials_itm Get_by_key(byte[] special) {return (Xol_specials_itm)hash_by_special.Get_by(special);}
|
||||
public void Add(byte[] special, byte[][] alias_ary) {
|
||||
Xol_specials_itm itm = new Xol_specials_itm(special, alias_ary);
|
||||
hash_by_special.Add(special, itm);
|
||||
Xol_specials_itm itm = (Xol_specials_itm)hash_by_special.Get_by(special);
|
||||
if (itm == null) { // NOTE: most items will be null, but MessagesCs.php has two entries for PasswordReset; DATE:2016-07-08
|
||||
itm = new Xol_specials_itm(special, alias_ary);
|
||||
hash_by_special.Add(special, itm);
|
||||
}
|
||||
int len = alias_ary.length;
|
||||
for (int i = 0; i < len; i++) {
|
||||
byte[] alias = alias_ary[i];
|
||||
|
||||
@@ -27,7 +27,7 @@ public class Xol_convert_regy_tst {
|
||||
fxt.Init_page("Template:Test_x1", "val");
|
||||
fxt.Parser_fxt().Test_parse_tmpl_str_test("{{Test_x0}}", "{{test}}", "val");
|
||||
}
|
||||
@Test public void Upper_1st() { // PURPOSE: convert should call Xoa_ttl.parse(), which will upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
|
||||
@Test public void Upper_1st() { // PURPOSE: convert should call Xoa_ttl.Parse(), which will upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
|
||||
fxt.Init_page("Template:X1", "val");
|
||||
fxt.Parser_fxt().Test_parse_tmpl_str_test("{{x0}}", "{{test}}", "val");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user