115 lines
6.8 KiB
SQL
115 lines
6.8 KiB
SQL
-- Create unique wx language mapping
|
|
create table if not exists wx_langmapuni (wxlangname char, wxlangid char, wxlocregion char, primary key (wxlangname));
|
|
delete from wx_langmapuni;
|
|
insert into wx_langmapuni select wxlangname, wxlangid, wxlocregion from wx_langmap;
|
|
|
|
-- Create mapping between wx and Windows ids
|
|
create table if not exists wx2winmapping (wxlocidnew char, wxnamenew char, wxlocidold char, wxnameold char, primary key (wxlocidnew));
|
|
delete from wx2winmapping;
|
|
|
|
insert into wx2winmapping select wt.wxlocid, wt.wxname, ifnull(wm.wxlangid,'-'), ifnull(wm.wxlangname,'-') from win_localetable wt
|
|
left join wx_langmapuni wm on wt.wxlocid=wm.wxlangid;
|
|
|
|
update wx2winmapping set wxlocidold = ifnull((select wxlangid from wx_langmapuni where wx_langmapuni.wxlangname=wx2winmapping.wxnamenew),'-') where wx2winmapping.wxlocidold='-';
|
|
|
|
-- Create mapping between language and country
|
|
create table if not exists lang2iso2 (lang char, iso2 char, wintag char, primary key (lang));
|
|
delete from lang2iso2;
|
|
insert into lang2iso2 select w.locid, w.locid||'_'||c.iso2, w.locid||'-'||c.iso2 from win_localetable w, uni_territorycodes c where w.locid not like '%-%' and w.country3=c.iso3;
|
|
|
|
-- Perform checks
|
|
.output temp/wxmissing.log
|
|
select '*** Missing via wx_langmapuni';
|
|
select wxlangname, wxlangid from wx_langmapuni where not exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
|
|
select '*** Missing via wx_langmap';
|
|
select wxlangname, wxlangid from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname);
|
|
|
|
select '*** Missing locale tags in likely subtags mapping';
|
|
select locid from win_localetable w where length(w.locid) < 4 and not exists (select tagfrom from uni_likelysubtags s where s.tagfrom=w.locid);
|
|
|
|
.output stdout
|
|
|
|
select ' #missing wxlangmapuni =', count(wxlangname) from wx_langmapuni where not exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
|
|
select ' #matched wxlangmapuni =', count(wxlangname) from wx_langmapuni where exists (select wxnameold from wx2winmapping where wxnameold=wxlangname);
|
|
select ' #matched wx2win =', count(distinct wxnameold) from wx2winmapping where wxnameold <> '-';
|
|
select ' #missing likely tags =', count(locid) from win_localetable w where length(w.locid) < 4 and not exists (select tagfrom from uni_likelysubtags s where s.tagfrom=w.locid);
|
|
|
|
select ' #missing wxlangmap =', count(wxlangname) from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname) and not exists (select wxnamesyn from wx_synonyms where wxnamesyn=wxlangname);
|
|
select wxlangname from wx_langmap where not exists (select wxname from win_localetable where wxname=wxlangname) and not exists (select wxnamesyn from wx_synonyms where wxnamesyn=wxlangname);
|
|
|
|
select wxname from win_localetable where exists (select wxnamesyn from wx_synonyms where wxnamesyn = win_localetable.wxname);
|
|
|
|
-- Generate references to previous wx mappings
|
|
update win_localetable set (wxlocidold, wxnameold) =
|
|
(select wxlocregion, wxlangname from wx_langmap m1 where m1.wxlangid=win_localetable.wxlocid);
|
|
|
|
-- Replace NULL values with strings ('-')
|
|
update win_localetable set wxlocidold = '-' where wxlocidold is null;
|
|
update win_localetable set wxnameold = '-' where wxnameold is null;
|
|
|
|
-- Adjust Windows language ids
|
|
--.changes on
|
|
update win_localetable as t1 set (idlang,idsublang) =
|
|
(t2.idlang, t2.idsublang) from win_localetable t2
|
|
where t1.wxlocid <> '-' and t2.wxlocid = t1.wxlocidold and (t1.idlang <> t2.idlang or t1.idsublang <> t2.idsublang);
|
|
--.changes off
|
|
|
|
-- Adjust canonical reference for language-only entries
|
|
update win_localetable as w1 set wxlocidold =
|
|
(select m.iso2 from win_localetable w, lang2iso2 m
|
|
where w.locid=w1.locid and w.locid=m.lang
|
|
and exists (select 1 from win_localetable w2 where w2.locid=m.wintag))
|
|
where w1.locid not like '%-%' and (w1.wxlocidold='-' or w1.wxlocidold is null);
|
|
|
|
update win_localetable set wxlocidold = '-' where wxlocidold is null;
|
|
|
|
-- Initialize parameter holding the current wx version
|
|
.parameter init
|
|
.print Set wx version parameter
|
|
.parameter set @wxversion "(select version from wx_version)"
|
|
.parameter list
|
|
|
|
-- Generate new list of languages
|
|
.output langtabl.txt
|
|
select printf('%-55s %-9s %-14s %-25s %-14s %-4s %-4s %s "%s","%s"',
|
|
w.wxname, ifnull(x.wxversion,@wxversion), w.locid, w.wxlocid, w.wxlocidold,
|
|
w.idlang, w.idsublang, w.layout, w.englishdisplay, w.nativedisplayhex)
|
|
from win_localetable w left join wx_langmap x on w.wxlocid = x.wxlangid order by w.wxname;
|
|
.output stdout
|
|
|
|
-- Generate new list of script mappings
|
|
-- Special handling for scripts Hans and Hant
|
|
update uni_scriptmap set scalias = lower(scalias) where scalias not in ('Hans','Hant');
|
|
.output scripttabl.txt
|
|
select printf('%-4s %s', sctag, scalias) from uni_scriptmap where scalias <> '-' order by sctag;
|
|
.output stdout
|
|
|
|
-- Generate new list of wxLANGUAGE synonyms
|
|
insert into wx_synonyms
|
|
select wl.wxnameold, wl.wxname, wl.locid, ifnull(wm.wxversion,@wxversion)
|
|
from win_localetable wl left join wx_langmap wm on wl.wxnameold = wm.wxlangname
|
|
where wl.wxnameold <> '-' and wl.wxname <> wl.wxnameold;
|
|
delete from wx_synonyms where wxnamesyn in (select wxname from win_localetable);
|
|
.output synonymtabl.txt
|
|
select printf('%-55s %-55s %-14s %s', wxnamesyn, wxnameprim, winlocid, wxversion) from wx_synonyms order by wxnamesyn;
|
|
.output stdout
|
|
|
|
-- Generate list of likely subtags
|
|
.output likelytabl.txt
|
|
select printf('%-11s %s', tagfrom, tagto) from uni_likelysubtags t where exists (select w.locid from win_localetable w where substr(w.locid,1,iif(instr(w.locid,'-')>0,instr(w.locid,'-')-1,length(w.locid))) = substr(t.tagfrom,1,iif(instr(t.tagfrom,'-')>0,instr(t.tagfrom,'-')-1,length(t.tagfrom)))) order by tagfrom;
|
|
.output stdout
|
|
|
|
-- Generate list of language matches
|
|
insert into uni_languagematch select supported, desired, distance, 'true' from uni_languagematch where oneway = 'false' and desired <> supported;
|
|
.output matchingtabl.txt
|
|
-- First all patterns without asterisks or variables
|
|
select printf('%-10s %-10s %3d', desired, supported, distance) from uni_languagematch t where desired not like ('%*%') and desired not like ('%$%') and exists (select w.locid from win_localetable w where substr(w.locid,1,iif(instr(w.locid,'-')>0,instr(w.locid,'-')-1,length(w.locid))) = substr(t.desired,1,iif(instr(t.desired,'-')>0,instr(t.desired,'-')-1,length(t.desired)))) order by desired;
|
|
-- Include patterns with asterisks, but without variables
|
|
select printf('%-10s %-10s %3d', desired, supported, distance) from uni_languagematch t where desired like ('%*%') and desired not like ('%$%') and supported not like ('%$%') order by desired;
|
|
.output stdout
|
|
|
|
-- Generate list of region groups for selected languages
|
|
.output regiongrouptabl.txt
|
|
select printf('%-8s %s', language, country) from uni_regiongroups order by language, country;
|
|
.output stdout
|