added i18n, refactoring
This commit is contained in:
@@ -43,7 +43,7 @@ var _Dot = {
|
||||
oninit(vn){
|
||||
this.id = vn.attrs.id;
|
||||
this.type = vn.attrs.type;
|
||||
|
||||
this.title = vn.attrs.title || "title";
|
||||
this.setuptext(vn);
|
||||
|
||||
if(typeof vn.attrs.active !== 'undefined')
|
||||
@@ -352,18 +352,14 @@ module.exports = {
|
||||
_Ui.init();
|
||||
},
|
||||
view(vn){
|
||||
console.log('_ModeConnections view', vn.attrs.lang);
|
||||
return [
|
||||
m(_Header),
|
||||
m('main', {id:"content", 'class':'mode-connections'}, _dbs.data[vn.attrs.lang].map(p => {
|
||||
if(p.id == 'intro'){
|
||||
return m(_Intro,p);
|
||||
}else{
|
||||
return m(_Part,p);
|
||||
}
|
||||
})
|
||||
),
|
||||
m(_Footer)
|
||||
];
|
||||
// console.log('_ModeConnections view', vn.attrs.lang);
|
||||
return m('main', {id:"content", 'class':'mode-connections'}, _dbs.data[vn.attrs.lang].map(p => {
|
||||
if(p.id == 'intro'){
|
||||
return m(_Intro,p);
|
||||
}else{
|
||||
return m(_Part,p);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+22
-20
@@ -6,8 +6,8 @@ var markdown = require('markdown-it')()
|
||||
.use(require('markdown-it-footnote'));
|
||||
|
||||
var _dbs = require('./dbs');
|
||||
var _Header = require('./header');
|
||||
var _Footer = require('./footer');
|
||||
// var _Header = require('./header');
|
||||
// var _Footer = require('./footer');
|
||||
var _Ui = require('./ui.js');
|
||||
|
||||
// __ _ __
|
||||
@@ -29,7 +29,7 @@ var _Link = {
|
||||
view(vn){
|
||||
this.tid_known = typeof _dbs.data_byid[_dbs.lang][this.tid] === 'undefined' ? false : true;
|
||||
if (!this.tid_known) {
|
||||
console.log('!! target id '+this.tid+' unkonwn !!');
|
||||
// console.log('!! target id '+this.tid+' unkonwn !!');
|
||||
}
|
||||
if(this.opened && this.tid_known){
|
||||
// console.log('this.tid', vn.state);
|
||||
@@ -140,7 +140,7 @@ var _Text = {
|
||||
// get the text nodes (avoid html document extra)
|
||||
this.textchilds = parseTextDom(this.textdom.getElementsByTagName('body')[0].childNodes);
|
||||
if(this.id == "115sc"){
|
||||
console.log(this.textchilds);
|
||||
// console.log(this.textchilds);
|
||||
}
|
||||
},
|
||||
oninit(vn){
|
||||
@@ -308,7 +308,7 @@ var _Part = {
|
||||
// /___/_/ /_/\__/_/ \____/
|
||||
var _Intro = {
|
||||
oninit(vn){
|
||||
console.log('_Intro : oninit : vn', vn);
|
||||
// console.log('_Intro : oninit : vn', vn);
|
||||
this.id = vn.attrs.id;
|
||||
this.text = vn.attrs.text || '';
|
||||
},
|
||||
@@ -329,27 +329,29 @@ var _Intro = {
|
||||
// /_/ \___/_/|_|\__/
|
||||
module.exports = {
|
||||
// oninit(vn){
|
||||
// this.lang = vn.attrs.lang;
|
||||
// // this.lang = vn.attrs.lang;
|
||||
// console.log('ModeText oninit : lang', vn.attrs.lang);
|
||||
// // i18next.changeLanguage(vn.attrs.lang);
|
||||
// },
|
||||
oncreate(vn){
|
||||
document.body.classList.add('mode-text');
|
||||
_Ui.init();
|
||||
},
|
||||
// onbeforeupdate(vn, old){
|
||||
// console.log('ModeText onbeforeupdate : lang', vn.attrs.lang);
|
||||
// // i18next.changeLanguage(vn.attrs.lang);
|
||||
// },
|
||||
view(vn){
|
||||
console.log('_ModeText view', vn.attrs.lang);
|
||||
return [
|
||||
m(_Header),
|
||||
m('main', {id:"content", 'class':'mode-text'}, _dbs.data[vn.attrs.lang].map((p) => {
|
||||
console.log("MAP _dbs", p);
|
||||
if(p.id == 'intro'){
|
||||
return m(_Intro,p);
|
||||
}else{
|
||||
return m(_Part,p);
|
||||
}
|
||||
})
|
||||
),
|
||||
m(_Footer)
|
||||
]
|
||||
// console.log('_ModeText view : lang', vn.attrs.lang);
|
||||
return m('main', {id:"content", 'class':'mode-text'}, _dbs.data[vn.attrs.lang].map((p) => {
|
||||
// console.log("MAP _dbs", p);
|
||||
if(p.id == 'intro'){
|
||||
return m(_Intro,p);
|
||||
}else{
|
||||
return m(_Part,p);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ module.exports = {
|
||||
// console.log('onreadystatechange', xobj.readyState);
|
||||
switch(xobj.readyState){
|
||||
case 3:
|
||||
console.log('loading');
|
||||
// console.log('loading');
|
||||
break;
|
||||
case 4:
|
||||
if (xobj.status === 200) {
|
||||
@@ -66,12 +66,12 @@ module.exports = {
|
||||
xobj.send(null);
|
||||
},
|
||||
onJSONLoaded(lc, json, callback){
|
||||
console.log('onDBLoaded '+lc);
|
||||
// console.log('onDBLoaded '+lc);
|
||||
this.data[lc] = JSON.parse(json);
|
||||
this.loaded_dbs ++;
|
||||
//
|
||||
if (this.loaded_dbs == this.langs.length) {
|
||||
console.log('All db loaded : data', this.data);
|
||||
// console.log('All db loaded : data', this.data);
|
||||
this.parseByID(callback);
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ module.exports = {
|
||||
this.data_strct[tid].from.push(id);
|
||||
}else{
|
||||
// if targets does not exists, the db has an issue, warn about that
|
||||
console.log(`!! warning : ${tid} target id does not exists`);
|
||||
// console.log(`!! warning : ${tid} target id does not exists`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+20
-30
@@ -1,9 +1,11 @@
|
||||
|
||||
var m = require('mithril');
|
||||
var _dbs = require('./dbs');
|
||||
var _i18n = require('./i18n');
|
||||
var markdown = require('markdown-it')()
|
||||
.use(require('markdown-it-footnote'));
|
||||
|
||||
// import * as i18next from 'i18next';
|
||||
|
||||
// __ __ __
|
||||
// / / / /__ ____ _____/ /__ _____
|
||||
@@ -11,15 +13,16 @@ var markdown = require('markdown-it')()
|
||||
// / __ / __/ /_/ / /_/ / __/ /
|
||||
// /_/ /_/\___/\__,_/\__,_/\___/_/
|
||||
module.exports = {
|
||||
onupdate(vn){
|
||||
console.log("Header onupdate : vn", vn);
|
||||
},
|
||||
view(vn){
|
||||
console.log("Header view : vn", vn);
|
||||
return m('header', [
|
||||
m('hgroup', [
|
||||
m('h1', 'Ethica'),
|
||||
m('h2', 'Benedictus Spinoza')
|
||||
]),
|
||||
// m('nav', {'id':'parts-nav'}, [
|
||||
//
|
||||
// ]),
|
||||
m('div', {'id':"menus"}, [
|
||||
m(_PartsNav),
|
||||
m(_RouteMenu),
|
||||
@@ -37,10 +40,10 @@ module.exports = {
|
||||
var _PartsNav = {
|
||||
view(vn){
|
||||
var lang = m.route.param('lang');
|
||||
console.log('partsmenu', lang);
|
||||
// console.log('partsmenu', lang);
|
||||
return m('nav', {id:'parts-nav'}, [
|
||||
// TODO: replaced labels with localized content
|
||||
m('h3', 'Parts'),
|
||||
m('h3', _i18n.t('Parts')),
|
||||
m('ul', _dbs.data[lang].map(function(p){
|
||||
// console.log("anchors, part", p);
|
||||
if(p.id !== "intro"){
|
||||
@@ -63,21 +66,21 @@ var _RouteMenu = {
|
||||
view(){
|
||||
var lang = m.route.param('lang');
|
||||
var path = m.route.get().match(/^(\/[^\/]+)(\/[^\/|#]+)(.*)$/);
|
||||
console.log('Route menu Path', path);
|
||||
// console.log('Route menu Path', path);
|
||||
return m('nav', {id:'routes'}, [
|
||||
// TODO: replaced labels with localized content
|
||||
m('h3', 'Mode'),
|
||||
m('h3', _i18n.t('Mode')),
|
||||
m('ul', [
|
||||
m('li', m('a', {
|
||||
'href':`/${lang}/text${path[3]}`,
|
||||
oncreate : m.route.link,
|
||||
onupdate : m.route.link
|
||||
}, "Text")),
|
||||
}, _i18n.t("Text"))),
|
||||
m('li', m('a', {
|
||||
'href':`/${lang}/connections${path[3]}`,
|
||||
'href':`/${lang}/conexions${path[3]}`,
|
||||
oncreate : m.route.link,
|
||||
onupdate : m.route.link
|
||||
}, "Connections")),
|
||||
}, _i18n.t("Conexions"))),
|
||||
])
|
||||
]);
|
||||
}
|
||||
@@ -94,30 +97,17 @@ var _LangMenu = {
|
||||
var path = m.route.get().match(/^\/[^\/]+(.+)$/);
|
||||
// console.log('Lang menu Path', path);
|
||||
// create ul dom
|
||||
// console.log("Header _LangMenu view : i18next", i18next);
|
||||
return m('nav', {id:'languages'}, [
|
||||
// TODO: replaced labels with localized content
|
||||
m('h3', 'languages'),
|
||||
m('h3', _i18n.t('Language')),
|
||||
m('ul', _dbs.langs.map(lang => {
|
||||
// create li dom for each lank link
|
||||
return m('li',
|
||||
// create a dom
|
||||
m('a', {
|
||||
// create li dom for each lang link
|
||||
return m('li', m('a', {
|
||||
'lang':lang.lc,
|
||||
'href':'/'+lang.lc+path[1]
|
||||
// onclick(e){
|
||||
// e.preventDefault();
|
||||
// // console.log('click lang', e);
|
||||
// var lang = e.target.getAttribute('lang');
|
||||
// // console.log(lang);
|
||||
// if(lang != _dbs.lang){
|
||||
// // change url variable
|
||||
// // change db
|
||||
// _dbs.lang = lang;
|
||||
// // redraw UI
|
||||
// // m.redraw();
|
||||
// }
|
||||
// return false;
|
||||
// }
|
||||
'href':`/${lang.lc}${path[1]}`,
|
||||
oncreate : m.route.link,
|
||||
onupdate : m.route.link
|
||||
}, lang.label)
|
||||
);
|
||||
}))
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
|
||||
module.exports = {
|
||||
t(key){
|
||||
console.log('i18n',this);
|
||||
if(this.locales[key]){
|
||||
if(this.lang){
|
||||
if(this.locales[key][this.lang]){
|
||||
return this.locales[key][this.lang];
|
||||
}else{
|
||||
this.log(`Key "${key}" does not exists for language ${this.lang}`);
|
||||
}
|
||||
}else if(this.locales[key][this.fallback]){
|
||||
return this.locales[key][this.fallback];
|
||||
}else{
|
||||
this.log(`Key "${key}" does not exists for fallback language ${this.fallback}`);
|
||||
}
|
||||
}else{
|
||||
this.log(`Key "${key}" does not exists.`);
|
||||
}
|
||||
// if(this.lang){
|
||||
// if(this.locales[key][this.lang]){
|
||||
// // key exists in current language
|
||||
// return this.locales[key][this.lang];
|
||||
// }else{
|
||||
// console.log('Key ${key} does not exists for language ${this.lang}');
|
||||
// }
|
||||
// }else if(this.locales[key][this.fallback]){
|
||||
// // key exists in fallback language
|
||||
// return this.locales[key][this.fallback];
|
||||
// }
|
||||
return key;
|
||||
},
|
||||
setLang(l){
|
||||
this.lang = l
|
||||
},
|
||||
log(msg){
|
||||
console.log(`i18n : ${msg}`);
|
||||
},
|
||||
fallback:'en',
|
||||
lang: null,
|
||||
locales:{
|
||||
'Parts':{
|
||||
'en':'Parts',
|
||||
'fr':'Parties',
|
||||
'bra':'Peças',
|
||||
'lat':'Pars'
|
||||
},
|
||||
'Mode':{
|
||||
'en':'Mode',
|
||||
'fr':'Mode',
|
||||
'bra':'Modo',
|
||||
'lat':'Modus'
|
||||
},
|
||||
'Language':{
|
||||
'en':'Language',
|
||||
'fr':'Langue',
|
||||
'bra':'Língua',
|
||||
'lat':'Lingua'
|
||||
},
|
||||
'Text':{
|
||||
'en':'Text',
|
||||
'fr':'Texte',
|
||||
'bra':'Texto',
|
||||
'lat':'Illud'
|
||||
},
|
||||
'Conexions':{
|
||||
'en':'Conexions',
|
||||
'fr':'Connections',
|
||||
'bra':'Conexões',
|
||||
'lat':'Hospites'
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
// var $window;
|
||||
|
||||
var init = function(){
|
||||
console.log('UI init');
|
||||
// console.log('UI init');
|
||||
// $window = $(window);
|
||||
// _____ __ _ __ __ _ __ __
|
||||
// / ___// /_(_)____/ /____ __ / /_(_) /_/ /__
|
||||
@@ -29,7 +29,7 @@ var init = function(){
|
||||
|
||||
// var header_height = $('header').height();
|
||||
var header_height = document.getElementsByTagName('header')[0].clientHeight;
|
||||
console.log(header_height);
|
||||
// console.log(header_height);
|
||||
|
||||
// var $sticky_clone_wrapper = $('<div>').addClass('sticky-clone-wrapper').appendTo('body');
|
||||
var sticky_clone_wrapper = document.createElement('div');
|
||||
|
||||
Reference in New Issue
Block a user