mirror of
https://bitbucket.org/wisemapping/wisemapping-frontend.git
synced 2024-11-25 07:47:55 +01:00
Merge branch 'develop' of https://bitbucket.org/wisemapping/wisemapping-frontend into feature/import-freemind-to-wisemapping
This commit is contained in:
commit
968623e4f0
14
packages/editor/lang/zh.json
Normal file
14
packages/editor/lang/zh.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"editor.try-welcome": {
|
||||
"defaultMessage": "这个编辑区域展示了一些思维导图编辑器的功能!"
|
||||
},
|
||||
"editor.try-welcome-description": {
|
||||
"defaultMessage": "注册后可以免费创建、分享和发布无限数量的思维导图。"
|
||||
},
|
||||
"login.signup": {
|
||||
"defaultMessage": "注册"
|
||||
},
|
||||
"action.share": {
|
||||
"defaultMessage": "分享"
|
||||
}
|
||||
}
|
@ -8,8 +8,8 @@
|
||||
"cy:run": "cypress run",
|
||||
"test:integration": "start-server-and-test 'yarn playground' http-get://localhost:8081 'yarn cy:run'",
|
||||
"test": "yarn test:integration",
|
||||
"extract": "for lang in {'es','en','fr','de'};do formatjs extract 'src/**/*.ts*' --ignore 'src/@types/**/*' --out-file lang/${lang}.json;done",
|
||||
"compile": "formatjs compile"
|
||||
"i18n:extract": "formatjs extract 'src/**/*.ts*' --ignore 'src/@types/**/*' --out-file lang/es.json",
|
||||
"i18n:compile": "for lang in {'es','en','fr','de','zh','ru'};do formatjs compile lang/${lang}.json --ast --out-file src/compiled-lang/${lang}.json;done"
|
||||
},
|
||||
"repository": "http://www.wisemapping.com",
|
||||
"author": "Paulo Veiga <pveiga@gmail.com>, Ezequiel Bergamaschi <ezequielbergamaschi@gmail.com>",
|
||||
|
@ -3,6 +3,8 @@ import ES from './../../compiled-lang/es.json';
|
||||
import EN from './../../compiled-lang/en.json';
|
||||
import DE from './../../compiled-lang/de.json';
|
||||
import RU from './../../compiled-lang/ru.json';
|
||||
import ZH from './../../compiled-lang/zh.json';
|
||||
|
||||
|
||||
class I18nMsg {
|
||||
static loadLocaleData(locale: string) {
|
||||
@ -17,6 +19,8 @@ class I18nMsg {
|
||||
return DE;
|
||||
case 'ru':
|
||||
return RU;
|
||||
case 'zh':
|
||||
return ZH;
|
||||
default:
|
||||
return EN;
|
||||
}
|
||||
|
@ -126,6 +126,16 @@ class KeyboardShortcutDialog extends BootstrapDialog {
|
||||
<td>Ctrl + b</td>
|
||||
<td>⌘ + b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${$msg('TOPIC_NOTE')}</td>
|
||||
<td>Ctrl + k</td>
|
||||
<td>⌘ + k</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${$msg('TOPIC_LINK')}</td>
|
||||
<td>Ctrl + l</td>
|
||||
<td>⌘ + l</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>`);
|
||||
|
@ -33,8 +33,6 @@ import { $msg } from '@wisemapping/mindplot';
|
||||
class Menu extends IMenu {
|
||||
constructor(designer: Designer, containerId: string, readOnly = false, baseUrl = '') {
|
||||
super(designer, containerId);
|
||||
const saveElem = $('#save');
|
||||
|
||||
const widgetsBaseUrl = `${baseUrl}css/widget`;
|
||||
|
||||
// Create panels ...
|
||||
@ -213,7 +211,7 @@ class Menu extends IMenu {
|
||||
if (undoButton) {
|
||||
undoButton.disable();
|
||||
}
|
||||
Menu._registerTooltip('undoEdition', $msg('UNDO'), 'meta+Z');
|
||||
Menu._registerTooltip('undoEdition', $msg('UNDO'));
|
||||
|
||||
const redoButton = this._addButton('redoEdition', false, false, () => {
|
||||
designer.redo();
|
||||
@ -221,7 +219,7 @@ class Menu extends IMenu {
|
||||
if (redoButton) {
|
||||
redoButton.disable();
|
||||
}
|
||||
Menu._registerTooltip('redoEdition', $msg('REDO'), 'meta+shift+Z');
|
||||
Menu._registerTooltip('redoEdition', $msg('REDO'));
|
||||
|
||||
if (redoButton && undoButton) {
|
||||
designer.addEvent('modelUpdate', (event) => {
|
||||
@ -241,12 +239,12 @@ class Menu extends IMenu {
|
||||
this._addButton('addTopic', true, false, () => {
|
||||
designer.createSiblingForSelectedNode();
|
||||
});
|
||||
Menu._registerTooltip('addTopic', $msg('ADD_TOPIC'), 'Enter');
|
||||
Menu._registerTooltip('addTopic', $msg('ADD_TOPIC'));
|
||||
|
||||
this._addButton('deleteTopic', true, true, () => {
|
||||
designer.deleteSelectedEntities();
|
||||
});
|
||||
Menu._registerTooltip('deleteTopic', $msg('TOPIC_DELETE'), 'Delete');
|
||||
Menu._registerTooltip('deleteTopic', $msg('TOPIC_DELETE'));
|
||||
|
||||
this._addButton('topicLink', true, false, () => {
|
||||
designer.addLink();
|
||||
@ -274,14 +272,16 @@ class Menu extends IMenu {
|
||||
Menu._registerTooltip('fontItalic', $msg('FONT_ITALIC'), 'meta+I');
|
||||
|
||||
|
||||
if (saveElem) {
|
||||
if (!readOnly) {
|
||||
// Register action on save ...
|
||||
const saveElem = $('#save');
|
||||
this._addButton('save', false, false,
|
||||
() => {
|
||||
this.save(saveElem, designer, true);
|
||||
});
|
||||
Menu._registerTooltip('save', $msg('SAVE'), 'meta+S');
|
||||
Menu._registerTooltip('save', $msg('SAVE'));
|
||||
|
||||
if (!readOnly) {
|
||||
// Register unload save ...
|
||||
window.addEventListener('beforeunload', () => {
|
||||
if (this.isSaveRequired()) {
|
||||
this.save(saveElem, designer, false);
|
||||
@ -299,7 +299,6 @@ class Menu extends IMenu {
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Menu._registerTooltip('export', $msg('EXPORT'));
|
||||
|
||||
|
26
packages/editor/src/compiled-lang/zh.json
Normal file
26
packages/editor/src/compiled-lang/zh.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"action.share": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "分享"
|
||||
}
|
||||
],
|
||||
"editor.try-welcome": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "这个编辑区域展示了一些思维导图编辑器的功能!"
|
||||
}
|
||||
],
|
||||
"editor.try-welcome-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "注册后可以免费创建、分享和发布无限数量的思维导图。"
|
||||
}
|
||||
],
|
||||
"login.signup": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "注册"
|
||||
}
|
||||
]
|
||||
}
|
@ -30,7 +30,7 @@ const initialization = (designer: Designer) => {
|
||||
});
|
||||
};
|
||||
|
||||
const persistence = new LocalStorageManager('samples/{id}.wxml', false);
|
||||
const persistence = new LocalStorageManager('samples/{id}.wxml', false, false);
|
||||
const mapId = 'welcome';
|
||||
const options: EditorOptions = {
|
||||
zoom: 0.8,
|
||||
|
@ -0,0 +1 @@
|
||||
<map name="1276321" version="tango"><topic central="true" text="sss" id="1"><icon id="onoff_status_offline"/><topic position="99,0" order="0" text="sssss" shrink="true" id="7" bgColor="rgb(224,229,239)"><icon id="chart_organisation"/><topic position="176,5" order="0" text="sss" id="2" bgColor="rgb(224,229,239)"/></topic><topic position="-79,0" order="1" text="1" id="5" bgColor="rgb(224,229,239)"><topic position="-133,-112" order="0" text="2" id="4" bgColor="rgb(224,229,239)"/><topic position="-133,0" order="1" text="1" id="6" bgColor="rgb(224,229,239)"><topic position="-186,-80" order="0" text="1" id="14" bgColor="rgb(224,229,239)"/><topic position="-186,-48" order="1" text="2" id="15" bgColor="rgb(224,229,239)"/><topic position="-186,-16" order="2" text="4" id="17" bgColor="rgb(224,229,239)"/><topic position="-186,16" order="3" text="3" id="16" bgColor="rgb(224,229,239)"/><topic position="-186,48" order="4" text="5" id="18" bgColor="rgb(224,229,239)"/><topic position="-186,80" order="5" text="6" id="19" bgColor="rgb(224,229,239)"/></topic><topic position="-133,112" order="2" text="1" id="13" bgColor="rgb(224,229,239)"/></topic></topic></map>
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wisemapping/mindplot",
|
||||
"version": "5.0.8",
|
||||
"version": "5.0.9",
|
||||
"description": "WiseMapping - Mindplot Canvas Library",
|
||||
"homepage": "http://www.wisemapping.org/",
|
||||
"directories": {
|
||||
|
@ -117,6 +117,20 @@ class DesignerKeyboard extends Keyboard {
|
||||
designer.copyToClipboard();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+l', 'meta+l'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.addLink();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+k', 'meta+k'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
designer.addNote();
|
||||
},
|
||||
);
|
||||
this.addShortcut(
|
||||
['ctrl+v', 'meta+v'], (event: Event) => {
|
||||
event.preventDefault();
|
||||
|
@ -32,12 +32,13 @@ class LocalStorageManager extends PersistenceManager {
|
||||
this.readOnly = readOnly;
|
||||
}
|
||||
|
||||
saveMapXml(mapId: string, mapDoc: Document): void {
|
||||
saveMapXml(mapId: string, mapDoc: Document, _pref: string, _saveHistory: boolean, events): void {
|
||||
const mapXml = new XMLSerializer().serializeToString(mapDoc);
|
||||
if (!this.readOnly) {
|
||||
localStorage.setItem(`${mapId}-xml`, mapXml);
|
||||
events.onSuccess();
|
||||
}
|
||||
console.log(`Map XML to save => ${this.saveMapXml}`);
|
||||
console.log(`Map XML to save => ${mapXml}`);
|
||||
}
|
||||
|
||||
discardChanges(mapId: string) {
|
||||
|
@ -21,6 +21,7 @@ import EN from './en';
|
||||
import DE from './de';
|
||||
import FR from './fr';
|
||||
import RU from './ru';
|
||||
import ZH from './zh';
|
||||
|
||||
const Bundle = {
|
||||
es: ES,
|
||||
@ -28,6 +29,7 @@ const Bundle = {
|
||||
de: DE,
|
||||
fr: FR,
|
||||
ru: RU,
|
||||
zh: ZH,
|
||||
};
|
||||
|
||||
export default Bundle;
|
||||
|
@ -79,7 +79,7 @@ const DE = {
|
||||
MULTIPLE_LINES: 'Füge mehrer Textzeilen hinzu',
|
||||
BACK_TO_MAP_LIST: 'Zurück zur Kartenliste',
|
||||
KEYBOARD_SHOTCUTS: 'Tastaturkürzel',
|
||||
|
||||
PASTE_URL_HERE: 'Fügen Sie hier die gewünschte URL-Adresse ein:',
|
||||
};
|
||||
|
||||
export default DE;
|
||||
|
@ -79,6 +79,7 @@ const EN = {
|
||||
MULTIPLE_LINES: 'Add multiple text lines',
|
||||
BACK_TO_MAP_LIST: 'Back to Maps List',
|
||||
KEYBOARD_SHOTCUTS: 'Keyboard Shorcuts',
|
||||
PASTE_URL_HERE: 'Paste your url address here:',
|
||||
};
|
||||
|
||||
export default EN;
|
||||
|
@ -79,6 +79,7 @@ const ES = {
|
||||
MULTIPLE_LINES: 'Ajouter plusieurs lignes de texte',
|
||||
BACK_TO_MAP_LIST: 'Volver a la lista de mapas',
|
||||
KEYBOARD_SHOTCUTS: 'Métodos abreviados de teclado',
|
||||
PASTE_URL_HERE: 'Copie la URL que desea aca:',
|
||||
};
|
||||
|
||||
export default ES;
|
||||
|
@ -79,6 +79,7 @@ const FR = {
|
||||
MULTIPLE_LINES: 'Ajouter plusieurs lignes de texte',
|
||||
BACK_TO_MAP_LIST: 'Retour à la liste des cartes',
|
||||
KEYBOARD_SHOTCUTS: 'Raccourcis clavier',
|
||||
PASTE_URL_HERE: 'Collez l\'adresse URL souhaitée ici :',
|
||||
};
|
||||
|
||||
export default FR;
|
||||
|
@ -79,6 +79,7 @@ const EN = {
|
||||
MULTIPLE_LINES: 'Add multiple text lines',
|
||||
BACK_TO_MAP_LIST: 'Back to Maps List',
|
||||
KEYBOARD_SHOTCUTS: 'Keyboard Shorcuts',
|
||||
PASTE_URL_HERE: 'Вставьте нужный URL-адрес здесь:',
|
||||
};
|
||||
|
||||
export default EN;
|
||||
|
86
packages/mindplot/src/components/lang/zh.js
Normal file
86
packages/mindplot/src/components/lang/zh.js
Normal file
@ -0,0 +1,86 @@
|
||||
const ZH = {
|
||||
ZOOM_IN: '放大',
|
||||
ZOOM_OUT: '缩小',
|
||||
TOPIC_SHAPE: '主题形状',
|
||||
TOPIC_ADD: '添加主题',
|
||||
TOPIC_DELETE: '删除主题',
|
||||
TOPIC_ICON: '添加图标',
|
||||
TOPIC_LINK: '添加链接',
|
||||
TOPIC_RELATIONSHIP: '关系',
|
||||
TOPIC_COLOR: '主题颜色',
|
||||
TOPIC_BORDER_COLOR: '主题边框颜色',
|
||||
TOPIC_NOTE: '添加注释',
|
||||
FONT_FAMILY: '字体类型',
|
||||
FONT_SIZE: '文本大小',
|
||||
FONT_BOLD: '粗体文本',
|
||||
FONT_ITALIC: '斜体文本',
|
||||
UNDO: '撤销',
|
||||
REDO: '重做',
|
||||
INSERT: '插入',
|
||||
SAVE: '保存',
|
||||
NOTE: '注释',
|
||||
ADD_TOPIC: '添加主题',
|
||||
LOADING: '加载......',
|
||||
EXPORT: '导出',
|
||||
PRINT: '打印',
|
||||
PUBLISH: '发布',
|
||||
COLLABORATE: '分享',
|
||||
HISTORY: '历史',
|
||||
DISCARD_CHANGES: '放弃更改',
|
||||
FONT_COLOR: '文本颜色',
|
||||
SAVING: '保存......',
|
||||
SAVE_COMPLETE: '保存完成',
|
||||
ZOOM_IN_ERROR: '放大比例过高。',
|
||||
ZOOM_ERROR: '无法再缩放了。',
|
||||
ONLY_ONE_TOPIC_MUST_BE_SELECTED: '无法创建主题。只能选择一个主题。',
|
||||
ONE_TOPIC_MUST_BE_SELECTED: '无法创建主题。必须选择一个主题。',
|
||||
ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE: '无法折叠子节点,必须只选择一个主题。',
|
||||
SAVE_COULD_NOT_BE_COMPLETED: '无法完成保存,请稍后再试。',
|
||||
UNEXPECTED_ERROR_LOADING: '我们很抱歉,发生了意外错误。\n再次尝试重新加载编辑器。如果问题仍然存在,请联系我们support@wisemapping.com。',
|
||||
MAIN_TOPIC: '重点主题',
|
||||
SUB_TOPIC: '子主题',
|
||||
ISOLATED_TOPIC: '独立主题',
|
||||
CENTRAL_TOPIC: '中心主题',
|
||||
SHORTCUTS: '键盘快捷键',
|
||||
ENTITIES_COULD_NOT_BE_DELETED: '无法删除主题或关系。至少选择一个脑图实体。',
|
||||
AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED: '至少要选择一个主题',
|
||||
CLIPBOARD_IS_EMPTY: '没有东西可以复制。剪贴板是空的。',
|
||||
CENTRAL_TOPIC_CAN_NOT_BE_DELETED: '无法删除中心主题。',
|
||||
RELATIONSHIP_COULD_NOT_BE_CREATED: '无法创建关系。必须先选择要建立关系的主题。',
|
||||
SELECTION_COPIED_TO_CLIPBOARD: '主题已复制到剪贴板',
|
||||
WRITE_YOUR_TEXT_HERE: '在这里写你的注释......',
|
||||
REMOVE: '删除',
|
||||
ACCEPT: '接受',
|
||||
CANCEL: '取消',
|
||||
LINK: '链接',
|
||||
OPEN_LINK: '打开URL',
|
||||
SESSION_EXPIRED: '您的会话已过期,请重新登录。',
|
||||
URL_ERROR: 'URL无效',
|
||||
ACTION: '操作',
|
||||
CREATE_SIBLING_TOPIC: '创建并行主题',
|
||||
CREATE_CHILD_TOPIC: '创建子主题',
|
||||
DELETE_TOPIC: '删除主题',
|
||||
EDIT_TOPIC_TEXT: '编辑主题文本',
|
||||
JUST_START_TYPING: '开始打字',
|
||||
CANCEL_TEXT_CHANGES: '取消文本更改',
|
||||
TOPIC_NAVIGATION: '主题导航',
|
||||
ARROW_KEYS: '方向按键',
|
||||
SELECT_MULTIPLE_NODES: '选择多个节点',
|
||||
UNDO_EDITION: '撤销编辑',
|
||||
REDO_EDITION: '重做修改',
|
||||
SELECT_ALL_TOPIC: '选择所有主题',
|
||||
CHANGE_TEXT_BOLD: '更改粗体文本',
|
||||
SAVE_CHANGES: '保存更改',
|
||||
CHANGE_TEXT_ITALIC: '更改斜体文本',
|
||||
DESELECT_ALL_TOPIC: '取消选择所有主题',
|
||||
COLLAPSE_CHILDREN: '折叠子节点',
|
||||
KEYBOARD_SHORTCUTS_MSG: '键盘快捷键可以让你永远不用把手从键盘上拿开来使用鼠标,从而帮助你节省时间。',
|
||||
COPY_AND_PASTE_TOPICS: '复制和粘贴主题',
|
||||
MULTIPLE_LINES: '添加多行文本',
|
||||
BACK_TO_MAP_LIST: '回到脑图列表',
|
||||
KEYBOARD_SHOTCUTS: '键盘快捷键',
|
||||
PASTE_URL_HERE: '在此处粘贴所需的 URL 地址:',
|
||||
|
||||
};
|
||||
|
||||
export default ZH;
|
@ -411,6 +411,7 @@ class XMLSerializerTango implements XMLMindmapSerializer {
|
||||
if (topic.getType() !== 'CentralTopic') {
|
||||
topic
|
||||
.getChildren()
|
||||
.sort((a, b) => a.getOrder() - b.getOrder())
|
||||
.forEach((child, index) => {
|
||||
if (child.getOrder() !== index) {
|
||||
child.setOrder(index);
|
||||
@ -444,7 +445,7 @@ class XMLSerializerTango implements XMLMindmapSerializer {
|
||||
return value;
|
||||
}
|
||||
|
||||
static _deserializeNodeText(domElem) {
|
||||
static _deserializeNodeText(domElem: ChildNode) {
|
||||
const children = domElem.childNodes;
|
||||
let value = null;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
@ -456,7 +457,7 @@ class XMLSerializerTango implements XMLMindmapSerializer {
|
||||
return value;
|
||||
}
|
||||
|
||||
static _deserializeRelationship(domElement, mindmap) {
|
||||
static _deserializeRelationship(domElement: Element, mindmap: Mindmap): RelationshipModel {
|
||||
const srcId = Number.parseInt(domElement.getAttribute('srcTopicId'), 10);
|
||||
const destId = Number.parseInt(domElement.getAttribute('destTopicId'), 10);
|
||||
const lineType = Number.parseInt(domElement.getAttribute('lineType'), 10);
|
||||
@ -467,6 +468,7 @@ class XMLSerializerTango implements XMLMindmapSerializer {
|
||||
if (srcId === destId) {
|
||||
throw new Error('Invalid relationship, dest and source are equals');
|
||||
}
|
||||
|
||||
// Is the connections points valid ?. If it's not, do not load the relationship ...
|
||||
if (mindmap.findNodeById(srcId) == null || mindmap.findNodeById(destId) == null) {
|
||||
throw new Error('Transition could not created, missing node for relationship');
|
||||
@ -480,8 +482,8 @@ class XMLSerializerTango implements XMLMindmapSerializer {
|
||||
if ($defined(destCtrlPoint) && destCtrlPoint !== '') {
|
||||
model.setDestCtrlPoint(Point.fromString(destCtrlPoint));
|
||||
}
|
||||
model.setEndArrow('false');
|
||||
model.setStartArrow('true');
|
||||
model.setEndArrow(false);
|
||||
model.setStartArrow(true);
|
||||
return model;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ class LinkEditor extends BootstrapDialog {
|
||||
action: 'none',
|
||||
id: 'linkFormId',
|
||||
});
|
||||
const text = $('<p></p>').text('Paste your url here:');
|
||||
const text = $('<p></p>').text($msg('PASTE_URL_HERE'));
|
||||
text.css('margin', '0px 0px 20px');
|
||||
|
||||
this.form.append(text);
|
||||
|
@ -23,7 +23,7 @@ import { $msg } from '../Messages';
|
||||
class NoteEditor extends BootstrapDialog {
|
||||
constructor(model) {
|
||||
$assert(model, 'model can not be null');
|
||||
super($msg('Note'), {
|
||||
super($msg('NOTE'), {
|
||||
cancelButton: true,
|
||||
closeButton: true,
|
||||
acceptButton: true,
|
||||
|
@ -6,14 +6,14 @@
|
||||
- Naturaleza
|
||||
- Animales, Plantas, Piedras
|
||||
- Arqueología
|
||||
- Culturas Antiguas
|
||||
- Egipto, Grecia, China...
|
||||
- Energía
|
||||
- Paleontología
|
||||
- Astronomía
|
||||
- Arquitectura
|
||||
- Cocina
|
||||
- Poesía
|
||||
- Culturas Antiguas
|
||||
- Egipto, Grecia, China...
|
||||
- Paleontología
|
||||
- Duración limitada: 5-6 semanas
|
||||
- Niños y niñas que quieren saber más
|
||||
- Alternativa a otras actividades de ocio
|
||||
@ -25,11 +25,11 @@
|
||||
- Actividades centradas en el contexto cercano
|
||||
- Flexibilidad en el uso de las lenguas de trabajo (inglés, castellano, esukara?)
|
||||
- Complementamos el trabajo de la escuela[^1]
|
||||
- SaberMás trabaja con, desde y para la motivación
|
||||
- Trabajamos en equipo en nuestros proyectos
|
||||
- Cada uno va a su ritmo, y cada cual pone sus límites
|
||||
- Aprendemos todos de todos
|
||||
- Valoramos lo que hemos aprendido
|
||||
- SaberMás trabaja con, desde y para la motivación
|
||||
- Trabajamos en equipo en nuestros proyectos
|
||||
|
||||
|
||||
|
||||
|
@ -7,15 +7,15 @@
|
||||
<node ID="ID_17" POSITION="right" STYLE="fork" TEXT="Animales, Plantas, Piedras"/>
|
||||
</node>
|
||||
<node ID="ID_21" POSITION="right" STYLE="fork" TEXT="Arqueología"/>
|
||||
<node ID="ID_25" POSITION="right" STYLE="fork" TEXT="Culturas Antiguas">
|
||||
<node ID="ID_26" POSITION="right" STYLE="fork" TEXT="Egipto, Grecia, China..."/>
|
||||
</node>
|
||||
<node ID="ID_18" POSITION="right" STYLE="fork" TEXT="Energía"/>
|
||||
<node ID="ID_38" POSITION="right" STYLE="fork" TEXT="Paleontología"/>
|
||||
<node ID="ID_16" POSITION="right" STYLE="fork" TEXT="Astronomía"/>
|
||||
<node ID="ID_20" POSITION="right" STYLE="fork" TEXT="Arquitectura"/>
|
||||
<node ID="ID_11" POSITION="right" STYLE="fork" TEXT="Cocina"/>
|
||||
<node ID="ID_24" POSITION="right" STYLE="fork" TEXT="Poesía"/>
|
||||
<node ID="ID_25" POSITION="right" STYLE="fork" TEXT="Culturas Antiguas">
|
||||
<node ID="ID_26" POSITION="right" STYLE="fork" TEXT="Egipto, Grecia, China..."/>
|
||||
</node>
|
||||
<node ID="ID_38" POSITION="right" STYLE="fork" TEXT="Paleontología"/>
|
||||
</node>
|
||||
<node ID="ID_6" POSITION="left" STYLE="fork" TEXT="Duración limitada: 5-6 semanas"/>
|
||||
<node ID="ID_7" POSITION="left" STYLE="fork" TEXT="Niños y niñas que quieren saber más"/>
|
||||
@ -41,11 +41,11 @@
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node ID="ID_28" POSITION="right" TEXT="SaberMás trabaja con, desde y para la motivación"/>
|
||||
<node ID="ID_32" POSITION="right" STYLE="fork" TEXT="Trabajamos en equipo en nuestros proyectos "/>
|
||||
<node ID="ID_30" POSITION="right" STYLE="fork" TEXT="Cada uno va a su ritmo, y cada cual pone sus límites"/>
|
||||
<node ID="ID_31" POSITION="right" STYLE="fork" TEXT="Aprendemos todos de todos"/>
|
||||
<node ID="ID_33" POSITION="right" STYLE="fork" TEXT="Valoramos lo que hemos aprendido"/>
|
||||
<node ID="ID_28" POSITION="right" TEXT="SaberMás trabaja con, desde y para la motivación"/>
|
||||
<node ID="ID_32" POSITION="right" STYLE="fork" TEXT="Trabajamos en equipo en nuestros proyectos "/>
|
||||
</node>
|
||||
</node>
|
||||
</map>
|
@ -5,14 +5,14 @@
|
||||
1.3.1 Naturaleza
|
||||
1.3.1.1 Animales, Plantas, Piedras
|
||||
1.3.2 Arqueología
|
||||
1.3.3 Energía
|
||||
1.3.4 Astronomía
|
||||
1.3.5 Arquitectura
|
||||
1.3.6 Cocina
|
||||
1.3.7 Poesía
|
||||
1.3.8 Culturas Antiguas
|
||||
1.3.8.1 Egipto, Grecia, China...
|
||||
1.3.9 Paleontología
|
||||
1.3.3 Culturas Antiguas
|
||||
1.3.3.1 Egipto, Grecia, China...
|
||||
1.3.4 Energía
|
||||
1.3.5 Paleontología
|
||||
1.3.6 Astronomía
|
||||
1.3.7 Arquitectura
|
||||
1.3.8 Cocina
|
||||
1.3.9 Poesía
|
||||
1.4 Duración limitada: 5-6 semanas
|
||||
1.5 Niños y niñas que quieren saber más
|
||||
1.6 Alternativa a otras actividades de ocio
|
||||
@ -30,8 +30,8 @@ ayudándole a que encuentre respuesta a las preguntas que él o ella se plantea.
|
||||
|
||||
Por ese motivo, SaberMás proyecta estar al lado de los niños que necesitan una motivación extra para entender la escuela y fluir en ella,
|
||||
y también al lado de aquellos a quienes la curiosidad y las ganas de saber les lleva más allá.]
|
||||
1.14.1 Cada uno va a su ritmo, y cada cual pone sus límites
|
||||
1.14.2 Aprendemos todos de todos
|
||||
1.14.3 Valoramos lo que hemos aprendido
|
||||
1.14.4 SaberMás trabaja con, desde y para la motivación
|
||||
1.14.5 Trabajamos en equipo en nuestros proyectos
|
||||
1.14.1 SaberMás trabaja con, desde y para la motivación
|
||||
1.14.2 Trabajamos en equipo en nuestros proyectos
|
||||
1.14.3 Cada uno va a su ritmo, y cada cual pone sus límites
|
||||
1.14.4 Aprendemos todos de todos
|
||||
1.14.5 Valoramos lo que hemos aprendido
|
||||
|
@ -1,6 +1,6 @@
|
||||
<map name="bug2" version="tango"><topic central="true" text="SaberMás" id="1"><topic position="271,-39" order="8" text="Utilización de medios de expresión artística, digitales y analógicos" id="5"/><topic position="-181,-17" order="5" text="Precio también limitado: 100-120?" id="9"/><topic position="132,165" order="14" text="Talleres temáticos" id="2"><topic position="242,57" order="0" text="Naturaleza" id="13"><topic position="362,57" order="0" text="Animales, Plantas, Piedras" id="17"/></topic><topic position="245,84" order="1" text="Arqueología" id="21"/><topic position="236,138" order="2" text="Energía" id="18"/><topic position="244,192" order="3" text="Astronomía" id="16"/><topic position="245,219" order="4" text="Arquitectura" id="20"/><topic position="234,246" order="5" text="Cocina" id="11"/><topic position="234,273" order="6" text="Poesía" id="24"/><topic position="256,111" order="7" text="Culturas Antiguas" id="25"><topic position="378,111" order="0" text="Egipto, Grecia, China..." id="26"/></topic><topic position="248,165" order="8" text="Paleontología" id="38"/></topic><topic position="-168,-49" order="3" text="Duración limitada: 5-6 semanas" id="6"/><topic position="-181,16" order="7" text="Niños y niñas que quieren saber más" id="7"/><topic position="-184,-81" order="1" text="Alternativa a otras actividades de ocio" id="8"/><topic position="255,-6" order="10" text="Uso de la tecnología durante todo el proceso de aprendizaje" id="23"/><topic position="336,-137" order="2" text="Estructura PBL: aprendemos cuando buscamos respuestas a nuestras propias preguntas " id="3"/><topic position="238,-105" order="4" text="Trabajo basado en la experimentación y en la investigación" id="4"/><topic position="-201,48" order="9" text="De 8 a 12 años, sin separación por edades" id="10"/><topic position="-146,81" order="11" text="Máximo 10/1 por taller" id="19"/><topic position="211,-72" order="6" text="Actividades centradas en el contexto cercano" id="37"/><topic position="303,27" order="12" text="Flexibilidad en el uso de las lenguas de trabajo (inglés, castellano, esukara?)" id="22"/><topic position="206,-220" order="0" text="Complementamos el trabajo de la escuela" shape="rounded rectagle" id="27"><note><![CDATA[Todos los contenidos de los talleres están relacionados con el currículo de la enseñanza básica.
|
||||
<map name="bug2" version="tango"><topic central="true" text="SaberMás" id="1"><topic position="271,-39" order="8" text="Utilización de medios de expresión artística, digitales y analógicos" id="5"/><topic position="-181,-17" order="5" text="Precio también limitado: 100-120?" id="9"/><topic position="132,165" order="14" text="Talleres temáticos" id="2"><topic position="242,57" order="0" text="Naturaleza" id="13"><topic position="362,57" order="0" text="Animales, Plantas, Piedras" id="17"/></topic><topic position="245,84" order="1" text="Arqueología" id="21"/><topic position="256,111" order="2" text="Culturas Antiguas" id="25"><topic position="378,111" order="0" text="Egipto, Grecia, China..." id="26"/></topic><topic position="236,138" order="3" text="Energía" id="18"/><topic position="248,165" order="4" text="Paleontología" id="38"/><topic position="244,192" order="5" text="Astronomía" id="16"/><topic position="245,219" order="6" text="Arquitectura" id="20"/><topic position="234,246" order="7" text="Cocina" id="11"/><topic position="234,273" order="8" text="Poesía" id="24"/></topic><topic position="-168,-49" order="3" text="Duración limitada: 5-6 semanas" id="6"/><topic position="-181,16" order="7" text="Niños y niñas que quieren saber más" id="7"/><topic position="-184,-81" order="1" text="Alternativa a otras actividades de ocio" id="8"/><topic position="255,-6" order="10" text="Uso de la tecnología durante todo el proceso de aprendizaje" id="23"/><topic position="336,-137" order="2" text="Estructura PBL: aprendemos cuando buscamos respuestas a nuestras propias preguntas " id="3"/><topic position="238,-105" order="4" text="Trabajo basado en la experimentación y en la investigación" id="4"/><topic position="-201,48" order="9" text="De 8 a 12 años, sin separación por edades" id="10"/><topic position="-146,81" order="11" text="Máximo 10/1 por taller" id="19"/><topic position="211,-72" order="6" text="Actividades centradas en el contexto cercano" id="37"/><topic position="303,27" order="12" text="Flexibilidad en el uso de las lenguas de trabajo (inglés, castellano, esukara?)" id="22"/><topic position="206,-220" order="0" text="Complementamos el trabajo de la escuela" shape="rounded rectagle" id="27"><note><![CDATA[Todos los contenidos de los talleres están relacionados con el currículo de la enseñanza básica.
|
||||
A diferencia de la práctica tradicional, pretendemos ahondar en el conocimiento partiendo de lo que realmente interesa al niño o niña,
|
||||
ayudándole a que encuentre respuesta a las preguntas que él o ella se plantea.
|
||||
|
||||
Por ese motivo, SaberMás proyecta estar al lado de los niños que necesitan una motivación extra para entender la escuela y fluir en ella,
|
||||
y también al lado de aquellos a quienes la curiosidad y las ganas de saber les lleva más allá.]]></note><topic position="477,-220" order="0" text="Cada uno va a su ritmo, y cada cual pone sus límites" id="30"/><topic position="425,-193" order="1" text="Aprendemos todos de todos" id="31"/><topic position="440,-167" order="2" text="Valoramos lo que hemos aprendido" id="33"/><topic position="468,-273" order="3" text="SaberMás trabaja con, desde y para la motivación" shape="line" id="28"/><topic position="458,-247" order="4" text="Trabajamos en equipo en nuestros proyectos " id="32"/></topic></topic></map>
|
||||
y también al lado de aquellos a quienes la curiosidad y las ganas de saber les lleva más allá.]]></note><topic position="468,-273" order="0" text="SaberMás trabaja con, desde y para la motivación" shape="line" id="28"/><topic position="458,-247" order="1" text="Trabajamos en equipo en nuestros proyectos " id="32"/><topic position="477,-220" order="2" text="Cada uno va a su ritmo, y cada cual pone sus límites" id="30"/><topic position="425,-193" order="3" text="Aprendemos todos de todos" id="31"/><topic position="440,-167" order="4" text="Valoramos lo que hemos aprendido" id="33"/></topic></topic></map>
|
@ -332,7 +332,7 @@
|
||||
<node ID="ID_334" POSITION="right" STYLE="fork" TEXT="Internet penetration"/>
|
||||
<node ID="ID_335" POSITION="right" STYLE="fork" TEXT="Computer literacy "/>
|
||||
</node>
|
||||
<arrowlink DESTINATION="ID_76" STARTARROW="Default" ENDARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_76" STARTARROW="Default"/>
|
||||
</node>
|
||||
<node ID="ID_10" POSITION="right" STYLE="fork" TEXT="Behavior of innovation actors">
|
||||
<node ID="ID_167" POSITION="right" STYLE="fork" TEXT="Access to markets">
|
||||
@ -944,7 +944,7 @@
|
||||
<icon BUILTIN="sign_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<arrowlink DESTINATION="ID_114" STARTARROW="Default" ENDARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_114" STARTARROW="Default"/>
|
||||
</node>
|
||||
<node ID="ID_7" POSITION="right" STYLE="bubble" TEXT="What investments in innovative projects">
|
||||
<richcontent TYPE="NOTE">
|
||||
|
@ -40,6 +40,7 @@ variance is desired, complete censuses are essential.[^1]
|
||||
the investment in complete sampling may be worthwhile
|
||||
for at least some traits.[^2]
|
||||
- Chazdon 2010. Biotropica. 42(1): 31–40
|
||||
- Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis.
|
||||
- Here, we develop a new approach that links functional attributes
|
||||
of tree species with studies of forest recovery and regional
|
||||
land-use transitions (Chazdon et al. 2007). Grouping species according
|
||||
@ -53,7 +54,6 @@ and wood functional traits for only a subset of the species in our
|
||||
study sites, we based our functional type classification on information
|
||||
for a large number of tree species obtained through vegetation
|
||||
monitoring studies.
|
||||
- Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis.
|
||||
- Our approach avoided preconceived notions of successional
|
||||
behavior or shade tolerance of tree species by developing an objective
|
||||
and independent classification of functional types based on vegetation
|
||||
|
@ -86,6 +86,7 @@
|
||||
</node>
|
||||
<node ID="ID_17" POSITION="right" STYLE="rectagle" BACKGROUND_COLOR="#cccccc" COLOR="#000000" TEXT="Chazdon 2010. Biotropica. 42(1): 31–40">
|
||||
<edge COLOR="#cccccc"/>
|
||||
<node ID="ID_24" POSITION="right" STYLE="fork" TEXT="Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis. "/>
|
||||
<node ID="ID_22" POSITION="right" STYLE="fork">
|
||||
<richcontent TYPE="NODE">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
@ -117,7 +118,6 @@
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node ID="ID_24" POSITION="right" STYLE="fork" TEXT="Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis. "/>
|
||||
<node ID="ID_25" POSITION="right" STYLE="fork">
|
||||
<richcontent TYPE="NODE">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
@ -41,7 +41,8 @@ the investment in complete sampling may be worthwhile
|
||||
for at least some traits.
|
||||
[Note: Falar que isso corrobora nossa sugestão de utilizar poucas medidas, mas que elas sejam confiáveis.]
|
||||
1.2 Chazdon 2010. Biotropica. 42(1): 31–40
|
||||
1.2.1 Here, we develop a new approach that links functional attributes
|
||||
1.2.1 Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis.
|
||||
1.2.2 Here, we develop a new approach that links functional attributes
|
||||
of tree species with studies of forest recovery and regional
|
||||
land-use transitions (Chazdon et al. 2007). Grouping species according
|
||||
to their functional attributes or demographic rates provides
|
||||
@ -49,12 +50,11 @@ insight into both applied and theoretical questions, such as selecting
|
||||
species for reforestation programs, assessing ecosystem services, and
|
||||
understanding community assembly processes in tropical forests
|
||||
(Diaz et al. 2007, Kraft et al. 2008).
|
||||
1.2.2 Since we have data on leaf
|
||||
1.2.3 Since we have data on leaf
|
||||
and wood functional traits for only a subset of the species in our
|
||||
study sites, we based our functional type classification on information
|
||||
for a large number of tree species obtained through vegetation
|
||||
monitoring studies.
|
||||
1.2.3 Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis.
|
||||
1.2.4 Our approach avoided preconceived notions of successional
|
||||
behavior or shade tolerance of tree species by developing an objective
|
||||
and independent classification of functional types based on vegetation
|
||||
|
@ -28,18 +28,18 @@ failed to accurately estimate the variance of trait values. This
|
||||
indicates that in situations where accurate estimation of plotlevel
|
||||
variance is desired, complete censuses are essential.]]></text><note><![CDATA[Isso significa que estudos de característica de história de vida compensam? Ver nos m&m.]]></note></topic><topic position="-915,219" order="7" id="15"><text><![CDATA[We suggest that, in these studies,
|
||||
the investment in complete sampling may be worthwhile
|
||||
for at least some traits.]]></text><note><![CDATA[Falar que isso corrobora nossa sugestão de utilizar poucas medidas, mas que elas sejam confiáveis.]]></note></topic></topic><topic position="297,0" order="0" text="Chazdon 2010. Biotropica. 42(1): 31–40" shape="rectagle" id="17" fontStyle=";;#000000;;;" bgColor="#cccccc" brColor="#cccccc"><topic position="586,-383" order="0" id="22"><text><![CDATA[Here, we develop a new approach that links functional attributes
|
||||
for at least some traits.]]></text><note><![CDATA[Falar que isso corrobora nossa sugestão de utilizar poucas medidas, mas que elas sejam confiáveis.]]></note></topic></topic><topic position="297,0" order="0" text="Chazdon 2010. Biotropica. 42(1): 31–40" shape="rectagle" id="17" fontStyle=";;#000000;;;" bgColor="#cccccc" brColor="#cccccc"><topic position="2883,-437" order="0" text="Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis. " id="24"/><topic position="586,-383" order="1" id="22"><text><![CDATA[Here, we develop a new approach that links functional attributes
|
||||
of tree species with studies of forest recovery and regional
|
||||
land-use transitions (Chazdon et al. 2007). Grouping species according
|
||||
to their functional attributes or demographic rates provides
|
||||
insight into both applied and theoretical questions, such as selecting
|
||||
species for reforestation programs, assessing ecosystem services, and
|
||||
understanding community assembly processes in tropical forests
|
||||
(Diaz et al. 2007, Kraft et al. 2008).]]></text></topic><topic position="583,-313" order="1" id="23"><text><![CDATA[Since we have data on leaf
|
||||
(Diaz et al. 2007, Kraft et al. 2008).]]></text></topic><topic position="583,-313" order="2" id="23"><text><![CDATA[Since we have data on leaf
|
||||
and wood functional traits for only a subset of the species in our
|
||||
study sites, we based our functional type classification on information
|
||||
for a large number of tree species obtained through vegetation
|
||||
monitoring studies.]]></text></topic><topic position="2883,-437" order="2" text="Falar no artigo que esse trabalho fala que é inadequada a divisão entre pioneira e não pioneira devido a grande variação que há entre elas. Além de terem descoberto que durante a ontogenia a resposta a luminosidade muda dentro de uma mesma espécie. Porém recomendar que essa classificação continue sendo usada em curto prazo enquanto não há informações confiáveis suficiente para esta simples classificação. Outras classificações como esta do artigo são bem vinda, contanto que tenham dados confiáveis. Porém dados estáticos já são difíceis de se obter, dados temporais, como taxa de crescimento em diâmetro ou altura, são mais difíceis ainda. Falar que vários tipos de classificações podem ser utilizadas e quanto mais detalhe melhor, porém os dados é que são mais limitantes. Se focarmos em dados de germinação e crescimento limitantes, como sugerem sainete e whitmore, da uma idéia maismrápida e a curto prazo da classificação destas espécies. Depois com o tempo conseguiremos construir classificações mais detalhadas e com mais dados confiáveis. " id="24"/><topic position="720,-239" order="3" id="25"><text><![CDATA[Our approach avoided preconceived notions of successional
|
||||
monitoring studies.]]></text></topic><topic position="720,-239" order="3" id="25"><text><![CDATA[Our approach avoided preconceived notions of successional
|
||||
behavior or shade tolerance of tree species by developing an objective
|
||||
and independent classification of functional types based on vegetation
|
||||
monitoring data from permanent sample plots in mature and
|
||||
|
@ -37,8 +37,8 @@
|
||||
<node ID="ID_30" POSITION="right" TEXT="In 2010, 2,500 referrals forwarded to OneLegacy"/>
|
||||
</node>
|
||||
<node ID="ID_31" POSITION="right" STYLE="bubble" BACKGROUND_COLOR="#00ffd5" TEXT="Doheny Eye and Tissue Transplant Bank" LINK="http://www.dohenyeyebank.org/"/>
|
||||
<arrowlink DESTINATION="ID_32" STARTARROW="Default" ENDARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_36" STARTARROW="Default" ENDARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_32" STARTARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_36" STARTARROW="Default"/>
|
||||
</node>
|
||||
<node ID="ID_32" POSITION="right" STYLE="bubble" BACKGROUND_COLOR="#00ffd5" TEXT="OneLegacy">
|
||||
<node ID="ID_33" POSITION="right" TEXT="In 2010, 11,828 referrals"/>
|
||||
|
@ -12,7 +12,7 @@
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="hard_computer"/>
|
||||
<arrowlink DESTINATION="ID_11" STARTARROW="Default" ENDARROW="Default"/>
|
||||
<arrowlink DESTINATION="ID_11" STARTARROW="Default"/>
|
||||
</node>
|
||||
<node ID="ID_11" POSITION="left" STYLE="fork" COLOR="#525c61" TEXT="Try it Now!">
|
||||
<icon BUILTIN="face_surprise"/>
|
||||
|
@ -500,5 +500,14 @@
|
||||
},
|
||||
"label.title": {
|
||||
"defaultMessage": "Etikett hinzufügen"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "Spenden"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "Unterstützt"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "Ausrüstung"
|
||||
}
|
||||
}
|
@ -167,6 +167,15 @@
|
||||
"footer.others": {
|
||||
"defaultMessage": "Others"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "Support"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "Our Team"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "Donations"
|
||||
},
|
||||
"footer.termsandconditions": {
|
||||
"defaultMessage": "Term And Conditions"
|
||||
},
|
||||
@ -258,7 +267,7 @@
|
||||
"defaultMessage": "Add label"
|
||||
},
|
||||
"label.add-for": {
|
||||
"defaultMessage": "Editing labels for maps:"
|
||||
"defaultMessage": "Editing labels for"
|
||||
},
|
||||
"label.add-placeholder": {
|
||||
"defaultMessage": "Label title"
|
||||
@ -275,6 +284,9 @@
|
||||
"label.description": {
|
||||
"defaultMessage": "Use labels to organize your maps."
|
||||
},
|
||||
"label.maps-count": {
|
||||
"defaultMessage": "{count} maps"
|
||||
},
|
||||
"label.title": {
|
||||
"defaultMessage": "Add a label"
|
||||
},
|
||||
|
@ -141,7 +141,16 @@
|
||||
"defaultMessage": "El export a formatos de imagen (SVG, PNG, JPEG, PDF) solo está disponible en la barra de herramientas del editor."
|
||||
},
|
||||
"footer.aboutus": {
|
||||
"defaultMessage": "Sobre nosotros"
|
||||
"defaultMessage": "Sobre Nosotros"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "Donaciones"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "Soporte"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "Equipo"
|
||||
},
|
||||
"footer.contactus": {
|
||||
"defaultMessage": "Contáctenos"
|
||||
|
@ -500,5 +500,14 @@
|
||||
},
|
||||
"label.title": {
|
||||
"defaultMessage": "Ajouter une étiquette"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "Des dons"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "Service"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "Equipe"
|
||||
}
|
||||
}
|
@ -473,5 +473,14 @@
|
||||
},
|
||||
"editor.try-welcome-description": {
|
||||
"defaultMessage": "Зарегистрируйтесь, чтобы создавать, делиться и публиковать майнд-карты бесплатно и без ограничений!"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "Пожертвования"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "Услуги"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "команда"
|
||||
}
|
||||
}
|
513
packages/webapp/lang/zh.json
Normal file
513
packages/webapp/lang/zh.json
Normal file
@ -0,0 +1,513 @@
|
||||
{
|
||||
"account.delete-warning警告": {
|
||||
"defaultMessage": "请记住,您将无法访问您添加的任何思维导图。您的所有信息都将被删除,并且无法恢复。"
|
||||
},
|
||||
"accountinfo.button": {
|
||||
"defaultMessage": "接受"
|
||||
},
|
||||
"accountinfo.deleteaccount": {
|
||||
"defaultMessage": "删除账号"
|
||||
},
|
||||
"accountinfo.email": {
|
||||
"defaultMessage": "Email电子邮件"
|
||||
},
|
||||
"accountinfo.firstname": {
|
||||
"defaultMessage": "名字"
|
||||
},
|
||||
"accountinfo.lastname": {
|
||||
"defaultMessage": "姓氏"
|
||||
},
|
||||
"accountinfo.title": {
|
||||
"defaultMessage": "账户信息"
|
||||
},
|
||||
"action.cancel-button": {
|
||||
"defaultMessage": "取消"
|
||||
},
|
||||
"action.close-button": {
|
||||
"defaultMessage": "关闭"
|
||||
},
|
||||
"action.delete": {
|
||||
"defaultMessage": "删除"
|
||||
},
|
||||
"action.delete-description": {
|
||||
"defaultMessage": "已删除的思维导图无法恢复。您想继续吗?"
|
||||
},
|
||||
"action.delete-title": {
|
||||
"defaultMessage": "删除"
|
||||
},
|
||||
"action.duplicate": {
|
||||
"defaultMessage": "复制"
|
||||
},
|
||||
"action.export": {
|
||||
"defaultMessage": "导出"
|
||||
},
|
||||
"action.history": {
|
||||
"defaultMessage": "历史"
|
||||
},
|
||||
"action.history-description": {
|
||||
"defaultMessage": "过去90天内引入的更改列表。"
|
||||
},
|
||||
"action.history-title": {
|
||||
"defaultMessage": "历史版本"
|
||||
},
|
||||
"action.import": {
|
||||
"defaultMessage": "导入"
|
||||
},
|
||||
"action.info": {
|
||||
"defaultMessage": "信息"
|
||||
},
|
||||
"action.label": {
|
||||
"defaultMessage": "添加标签"
|
||||
},
|
||||
"action.new": {
|
||||
"defaultMessage": "新建脑图"
|
||||
},
|
||||
"action.open": {
|
||||
"defaultMessage": "打开"
|
||||
},
|
||||
"action.print": {
|
||||
"defaultMessage": "打印"
|
||||
},
|
||||
"action.publish": {
|
||||
"defaultMessage": "发布"
|
||||
},
|
||||
"action.rename": {
|
||||
"defaultMessage": "重命名"
|
||||
},
|
||||
"action.rename-description-placeholder": {
|
||||
"defaultMessage": "描述"
|
||||
},
|
||||
"action.rename-name-placeholder": {
|
||||
"defaultMessage": "名称"
|
||||
},
|
||||
"action.share": {
|
||||
"defaultMessage": "分享"
|
||||
},
|
||||
"changepwd.button": {
|
||||
"defaultMessage": "更改"
|
||||
},
|
||||
"changepwd.confirm-password": {
|
||||
"defaultMessage": "确认密码"
|
||||
},
|
||||
"changepwd.description": {
|
||||
"defaultMessage": "请为您的账户提供新密码"
|
||||
},
|
||||
"changepwd.password": {
|
||||
"defaultMessage": "密码"
|
||||
},
|
||||
"changepwd.password-match": {
|
||||
"defaultMessage": "密码不一致,请再试一次"
|
||||
},
|
||||
"changepwd.title": {
|
||||
"defaultMessage": "更改密码"
|
||||
},
|
||||
"common.wait": {
|
||||
"defaultMessage": "请等待。。。"
|
||||
},
|
||||
"create.button": {
|
||||
"defaultMessage": "创建"
|
||||
},
|
||||
"create.description": {
|
||||
"defaultMessage": "请填写新的脑图名称和描述"
|
||||
},
|
||||
"create.title": {
|
||||
"defaultMessage": "创建一个新的思维导图"
|
||||
},
|
||||
"deletem.title": {
|
||||
"defaultMessage": "所有选中的脑图将被删除"
|
||||
},
|
||||
"duplicate.title": {
|
||||
"defaultMessage": "复制"
|
||||
},
|
||||
"expired.description": {
|
||||
"defaultMessage": "您的当前会话已过期。请登录后重试。"
|
||||
},
|
||||
"expired.title": {
|
||||
"defaultMessage": "您的会话已过期"
|
||||
},
|
||||
"export.desc": {
|
||||
"defaultMessage": "以您需要的格式导出此脑图,并在演示文稿中使用或通过电子邮件分享"
|
||||
},
|
||||
"export.document": {
|
||||
"defaultMessage": "思维导图工具:以第三方思维导图格式导出您的思维导图"
|
||||
},
|
||||
"export.document-label": {
|
||||
"defaultMessage": "文档:将你的思维导图导出到一个独立的文档中来分享"
|
||||
},
|
||||
"export.image": {
|
||||
"defaultMessage": "图像:以图片形式获取包含所有颜色和形状的脑图"
|
||||
},
|
||||
"export.img-center": {
|
||||
"defaultMessage": "居中并缩放合适大小"
|
||||
},
|
||||
"export.title": {
|
||||
"defaultMessage": "导出"
|
||||
},
|
||||
"export.warning": {
|
||||
"defaultMessage": "导出到图像(SVG,PNG,JPEG,PDF)仅在编辑器工具栏中可用。"
|
||||
},
|
||||
"footer.aboutus": {
|
||||
"defaultMessage": "关于我们"
|
||||
},
|
||||
"footer.contactus": {
|
||||
"defaultMessage": "联系我们"
|
||||
},
|
||||
"footer.faq": {
|
||||
"defaultMessage": "常见问题"
|
||||
},
|
||||
"footer.faqandhelp": {
|
||||
"defaultMessage": "帮助和常见问题"
|
||||
},
|
||||
"footer.feedback": {
|
||||
"defaultMessage": "反馈"
|
||||
},
|
||||
"footer.opensource": {
|
||||
"defaultMessage": "开源"
|
||||
},
|
||||
"footer.others": {
|
||||
"defaultMessage": "其它"
|
||||
},
|
||||
"footer.termsandconditions": {
|
||||
"defaultMessage": "条款和条件"
|
||||
},
|
||||
"forgot.desc": {
|
||||
"defaultMessage": "我们将向您发送电子邮件以重置您的密码。"
|
||||
},
|
||||
"forgot.email": {
|
||||
"defaultMessage": "电子邮件"
|
||||
},
|
||||
"forgot.page-title": {
|
||||
"defaultMessage": "忘记密码|WiseMapping"
|
||||
},
|
||||
"forgot.register": {
|
||||
"defaultMessage": "发送恢复链接"
|
||||
},
|
||||
"forgot.success.desc": {
|
||||
"defaultMessage": "我们已经向您发送了一封电子邮件,允许您重置密码。您应该会在几分钟内收到"
|
||||
},
|
||||
"forgot.success.title": {
|
||||
"defaultMessage": "您的临时密码已发送。"
|
||||
},
|
||||
"forgot.title": {
|
||||
"defaultMessage": "重置密码"
|
||||
},
|
||||
"forgotsuccess.page-title": {
|
||||
"defaultMessage": "密码已恢复|WiseMapping"
|
||||
},
|
||||
"header.donthaveaccount": {
|
||||
"defaultMessage": "没有账号?"
|
||||
},
|
||||
"header.haveaccount": {
|
||||
"defaultMessage": "已经有一个账号?"
|
||||
},
|
||||
"help.support": {
|
||||
"defaultMessage": "支持"
|
||||
},
|
||||
"history.no-changes": {
|
||||
"defaultMessage": "没有可用的更改"
|
||||
},
|
||||
"import.button": {
|
||||
"defaultMessage": "创建"
|
||||
},
|
||||
"import.description": {
|
||||
"defaultMessage": "您可以将WiseMapping脑图导入到您的脑图列表中。选择要导入的文件。"
|
||||
},
|
||||
"import.title": {
|
||||
"defaultMessage": "导入现有的思维导图"
|
||||
},
|
||||
"info.basic-info": {
|
||||
"defaultMessage": "基本信息"
|
||||
},
|
||||
"info.button": {
|
||||
"defaultMessage": "接受"
|
||||
},
|
||||
"info.creation-time": {
|
||||
"defaultMessage": "创建日期"
|
||||
},
|
||||
"info.creator": {
|
||||
"defaultMessage": "创建人"
|
||||
},
|
||||
"info.description": {
|
||||
"defaultMessage": "描述"
|
||||
},
|
||||
"info.description-msg": {
|
||||
"defaultMessage": "通过发布脑图,你让互联网上的每个人都能看到它。"
|
||||
},
|
||||
"info.modified-time": {
|
||||
"defaultMessage": "最后修改日期"
|
||||
},
|
||||
"info.modified-tny": {
|
||||
"defaultMessage": "最后修改人"
|
||||
},
|
||||
"info.name": {
|
||||
"defaultMessage": "名称"
|
||||
},
|
||||
"info.public-visibility": {
|
||||
"defaultMessage": "公开可见"
|
||||
},
|
||||
"info.sharing": {
|
||||
"defaultMessage": "分享"
|
||||
},
|
||||
"info.starred": {
|
||||
"defaultMessage": "收藏"
|
||||
},
|
||||
"info.title": {
|
||||
"defaultMessage": "信息"
|
||||
},
|
||||
"label.add-button": {
|
||||
"defaultMessage": "添加标签"
|
||||
},
|
||||
"label.add-for": {
|
||||
"defaultMessage": "编辑脑图标签:"
|
||||
},
|
||||
"label.add-placeholder": {
|
||||
"defaultMessage": "标签标题"
|
||||
},
|
||||
"label.change-color": {
|
||||
"defaultMessage": "更改标签颜色"
|
||||
},
|
||||
"label.delete-description": {
|
||||
"defaultMessage": "将被删除,包括它与所有现有脑图的关联。是否继续?"
|
||||
},
|
||||
"label.delete-title": {
|
||||
"defaultMessage": "确认标签删除"
|
||||
},
|
||||
"label.description": {
|
||||
"defaultMessage": "使用标签来组织你的脑图。"
|
||||
},
|
||||
"label.title": {
|
||||
"defaultMessage": "添加标签"
|
||||
},
|
||||
"language.change": {
|
||||
"defaultMessage": "更改语言"
|
||||
},
|
||||
"language.help": {
|
||||
"defaultMessage": "帮助翻译"
|
||||
},
|
||||
"login.desc": {
|
||||
"defaultMessage": "登录您的账号"
|
||||
},
|
||||
"login.email": {
|
||||
"defaultMessage": "电子邮件"
|
||||
},
|
||||
"login.error": {
|
||||
"defaultMessage": "您输入的电子邮件地址或密码无效。"
|
||||
},
|
||||
"login.forgotpwd": {
|
||||
"defaultMessage": "忘记密码?"
|
||||
},
|
||||
"login.hsqldbcofig": {
|
||||
"defaultMessage": "虽然HSQLDB在安装过程中默认与WiseMapping捆绑在一起,但我们不建议将此数据库用于生产用途。请考虑使用MySQL 5.7代替。您可以找到更多关于如何配置MySQL的信息",
|
||||
"description": "缺少已配置的生产数据库"
|
||||
},
|
||||
"login.page-title": {
|
||||
"defaultMessage": "登录|WiseMapping"
|
||||
},
|
||||
"login.password": {
|
||||
"defaultMessage": "密码"
|
||||
},
|
||||
"login.remberme": {
|
||||
"defaultMessage": "记住我的登录"
|
||||
},
|
||||
"login.signin": {
|
||||
"defaultMessage": "登录"
|
||||
},
|
||||
"login.signup": {
|
||||
"defaultMessage": "注册"
|
||||
},
|
||||
"login.title": {
|
||||
"defaultMessage": "欢迎"
|
||||
},
|
||||
"login.userinactive": {
|
||||
"defaultMessage": "对不起,您的账号尚未激活。当它激活时,您将收到一封通知电子邮件。敬请关注!"
|
||||
},
|
||||
"map.creator": {
|
||||
"defaultMessage": "创建人"
|
||||
},
|
||||
"map.delete-selected": {
|
||||
"defaultMessage": "删除选中项"
|
||||
},
|
||||
"map.last-update": {
|
||||
"defaultMessage": "最后更新"
|
||||
},
|
||||
"map.more-actions": {
|
||||
"defaultMessage": "更多操作"
|
||||
},
|
||||
"map.name": {
|
||||
"defaultMessage": "名称"
|
||||
},
|
||||
"map.tooltip-add": {
|
||||
"defaultMessage": "将标签添加到选定项"
|
||||
},
|
||||
"maps.choose-file": {
|
||||
"defaultMessage": "选择一个文件"
|
||||
},
|
||||
"maps.create-tooltip": {
|
||||
"defaultMessage": "创建一个新的思维导图"
|
||||
},
|
||||
"maps.empty-result": {
|
||||
"defaultMessage": "没有找到与当前筛选条件匹配的思维导图。"
|
||||
},
|
||||
"maps.import-desc": {
|
||||
"defaultMessage": "从其它工具导入"
|
||||
},
|
||||
"maps.modified": {
|
||||
"defaultMessage": "修改"
|
||||
},
|
||||
"maps.modified-by": {
|
||||
"defaultMessage": "修改人"
|
||||
},
|
||||
"maps.modified-by-desc": {
|
||||
"defaultMessage": "{on}由{by}修改"
|
||||
},
|
||||
"maps.nav-all": {
|
||||
"defaultMessage": "所有"
|
||||
},
|
||||
"maps.nav-onwned": {
|
||||
"defaultMessage": "我的"
|
||||
},
|
||||
"maps.nav-public": {
|
||||
"defaultMessage": "公开"
|
||||
},
|
||||
"maps.nav-shared": {
|
||||
"defaultMessage": "与我分享"
|
||||
},
|
||||
"maps.nav-starred": {
|
||||
"defaultMessage": "收藏"
|
||||
},
|
||||
"maps.page-title": {
|
||||
"defaultMessage": "我的脑图|WiseMapping"
|
||||
},
|
||||
"maps.revert": {
|
||||
"defaultMessage": "恢复"
|
||||
},
|
||||
"maps.search-action": {
|
||||
"defaultMessage": "搜索。。。"
|
||||
},
|
||||
"maps.tooltip-open": {
|
||||
"defaultMessage": "打开编辑"
|
||||
},
|
||||
"maps.tooltip-starred": {
|
||||
"defaultMessage": "收藏"
|
||||
},
|
||||
"maps.view": {
|
||||
"defaultMessage": "查看"
|
||||
},
|
||||
"menu.account": {
|
||||
"defaultMessage": "账号"
|
||||
},
|
||||
"menu.change-password": {
|
||||
"defaultMessage": "更改密码"
|
||||
},
|
||||
"menu.signout": {
|
||||
"defaultMessage": "注销"
|
||||
},
|
||||
"publish.button": {
|
||||
"defaultMessage": "接受"
|
||||
},
|
||||
"publish.checkbox": {
|
||||
"defaultMessage": "开启公共分享"
|
||||
},
|
||||
"publish.description": {
|
||||
"defaultMessage": "通过发布脑图,你让互联网上的每个人都能看到它。"
|
||||
},
|
||||
"publish.embedded": {
|
||||
"defaultMessage": "嵌入"
|
||||
},
|
||||
"publish.embedded-msg": {
|
||||
"defaultMessage": "复制这段代码以嵌入到您的博客或页面中:"
|
||||
},
|
||||
"publish.public-url": {
|
||||
"defaultMessage": "公共UPL"
|
||||
},
|
||||
"publish.public-url-msg": {
|
||||
"defaultMessage": "复制并粘贴下面的链接,与同事分享您的脑图:"
|
||||
},
|
||||
"publish.title": {
|
||||
"defaultMessage": "发布"
|
||||
},
|
||||
"registation.success-title": {
|
||||
"defaultMessage": "注册成功|WiseMapping"
|
||||
},
|
||||
"registration.desc": {
|
||||
"defaultMessage": "注册免费,分分钟就好"
|
||||
},
|
||||
"registration.email": {
|
||||
"defaultMessage": "电子邮件"
|
||||
},
|
||||
"registration.firstname": {
|
||||
"defaultMessage": "名字"
|
||||
},
|
||||
"registration.lastname": {
|
||||
"defaultMessage": "姓氏"
|
||||
},
|
||||
"registration.page-title": {
|
||||
"defaultMessage": "注册|WiseMapping"
|
||||
},
|
||||
"registration.password": {
|
||||
"defaultMessage": "密码"
|
||||
},
|
||||
"registration.register": {
|
||||
"defaultMessage": "注册"
|
||||
},
|
||||
"registration.success.desc": {
|
||||
"defaultMessage": "点击下面的登录按钮,开始创建思维导图。"
|
||||
},
|
||||
"registration.termandconditions": {
|
||||
"defaultMessage": "客户条款:请检查您在上面输入的WiseMapping账号信息,并在此处查看客户条款。点击下面的'注册'即表示您同意上面的客户条款和隐私政策"
|
||||
},
|
||||
"registration.title": {
|
||||
"defaultMessage": "成为成员"
|
||||
},
|
||||
"rename.description": {
|
||||
"defaultMessage": "请填写新的脑图名称和描述。"
|
||||
},
|
||||
"rename.title": {
|
||||
"defaultMessage": "重命名"
|
||||
},
|
||||
"resetpassword.success.title": {
|
||||
"defaultMessage": "您的账号已成功创建"
|
||||
},
|
||||
"role.editor": {
|
||||
"defaultMessage": "编辑人"
|
||||
},
|
||||
"role.owner": {
|
||||
"defaultMessage": "所有人"
|
||||
},
|
||||
"role.viewer": {
|
||||
"defaultMessage": "查看人"
|
||||
},
|
||||
"share.add-button": {
|
||||
"defaultMessage": "添加"
|
||||
},
|
||||
"share.add-message": {
|
||||
"defaultMessage": "添加消息"
|
||||
},
|
||||
"share.can-edit": {
|
||||
"defaultMessage": "可编辑"
|
||||
},
|
||||
"share.can-view": {
|
||||
"defaultMessage": "可查看"
|
||||
},
|
||||
"share.delete": {
|
||||
"defaultMessage": "删除协作人"
|
||||
},
|
||||
"share.delete-description": {
|
||||
"defaultMessage": "邀请人们与你合作创建你的思维导图。他们将通过电子邮件得到通知。"
|
||||
},
|
||||
"share.delete-title": {
|
||||
"defaultMessage": "与人分享"
|
||||
},
|
||||
"share.message": {
|
||||
"defaultMessage": "消息"
|
||||
},
|
||||
"footer.support": {
|
||||
"defaultMessage": "支持"
|
||||
},
|
||||
"footer.team": {
|
||||
"defaultMessage": "学期"
|
||||
},
|
||||
"footer.donations": {
|
||||
"defaultMessage": "捐款"
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wisemapping/webapp",
|
||||
"version": "5.0.8",
|
||||
"version": "5.0.9",
|
||||
"main": "app.jsx",
|
||||
"scripts": {
|
||||
"start": "webpack serve --config webpack.dev.js ",
|
||||
@ -9,8 +9,8 @@
|
||||
"lint": "eslint src",
|
||||
"cy:run": "cypress run",
|
||||
"test:integration": "start-server-and-test start http-get://localhost:3000 cy:run",
|
||||
"extract": "formatjs extract 'src/**/*.ts*' --ignore 'src/@types/**/*' --out-file lang/en.json",
|
||||
"compile": "formatjs compile",
|
||||
"i18n:extract": "formatjs extract 'src/**/*.ts*' --ignore 'src/@types/**/*' --out-file lang/en.json",
|
||||
"i18n:compile": "for lang in {'es','en','fr','de','zh','ru'};do formatjs compile lang/${lang}.json --ast --out-file src/compiled-lang/${lang}.json;done",
|
||||
"test": "yarn test:integration"
|
||||
},
|
||||
"files": [
|
||||
|
@ -38,7 +38,7 @@ const queryClient = new QueryClient({
|
||||
});
|
||||
|
||||
const App = (): ReactElement => {
|
||||
const locale = AppI18n.getBrowserLocale();
|
||||
const locale = AppI18n.getDefaultLocale();
|
||||
const EnhacedEditorPage = withSessionExpirationHandling(EditorPage);
|
||||
|
||||
return locale.message ? (
|
||||
@ -81,7 +81,7 @@ const App = (): ReactElement => {
|
||||
component={withSessionExpirationHandling(MapsPage)}
|
||||
/>
|
||||
<Route exact path="/c/maps/:id/edit">
|
||||
<EnhacedEditorPage isTryMode={false}/>
|
||||
<EnhacedEditorPage isTryMode={false} />
|
||||
</Route>
|
||||
<Route exact path="/c/maps/:id/try">
|
||||
<EnhacedEditorPage isTryMode={true} />
|
||||
|
@ -2,7 +2,9 @@ import { fetchAccount } from './../../redux/clientSlice';
|
||||
import 'dayjs/locale/fr';
|
||||
import 'dayjs/locale/en';
|
||||
import 'dayjs/locale/es';
|
||||
import 'dayjs/locale/de';
|
||||
import 'dayjs/locale/ru';
|
||||
import 'dayjs/locale/zh';
|
||||
|
||||
export class Locale {
|
||||
code: LocaleCode;
|
||||
@ -17,15 +19,23 @@ export class Locale {
|
||||
}
|
||||
|
||||
export default abstract class AppI18n {
|
||||
private static LOCAL_STORAGE_KEY = 'user.locale';
|
||||
|
||||
public static getUserLocale(): Locale {
|
||||
// @Todo Hack: Try page must not account info. Add this to avoid 403 errors.
|
||||
const isTryPage = window.location.href.endsWith('/try');
|
||||
let result: Locale;
|
||||
if (!isTryPage) {
|
||||
const account = fetchAccount();
|
||||
result = account?.locale ? account.locale : this.getBrowserLocale();
|
||||
result = account?.locale ? account.locale : this.getDefaultLocale();
|
||||
|
||||
// If the local storage value is different, update ...
|
||||
if (account?.locale && result.code !== localStorage.getItem(AppI18n.LOCAL_STORAGE_KEY)) {
|
||||
localStorage.setItem(AppI18n.LOCAL_STORAGE_KEY, result.code);
|
||||
}
|
||||
|
||||
} else {
|
||||
result = this.getBrowserLocale();
|
||||
result = this.getDefaultLocale();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -45,9 +55,24 @@ export default abstract class AppI18n {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static getDefaultLocale(): Locale {
|
||||
// Fetch local from local storage ...
|
||||
let result: Locale;
|
||||
const userLocaleCode: string = localStorage.getItem(AppI18n.LOCAL_STORAGE_KEY);
|
||||
if (userLocaleCode) {
|
||||
result = localeFromStr(userLocaleCode);
|
||||
}
|
||||
|
||||
// Ok, use browser default ...
|
||||
if (!result) {
|
||||
result = this.getBrowserLocale();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export type LocaleCode = 'en' | 'es' | 'fr' | 'de' | 'ru';
|
||||
export type LocaleCode = 'en' | 'es' | 'fr' | 'de' | 'ru' | 'zh';
|
||||
|
||||
export const Locales = {
|
||||
EN: new Locale('en', 'English', require('./../../compiled-lang/en.json')), // eslint-disable-line
|
||||
@ -55,10 +80,10 @@ export const Locales = {
|
||||
DE: new Locale('fr', 'Français', require('./../../compiled-lang/fr.json')), // eslint-disable-line
|
||||
FR: new Locale('de', 'Deutsch', require('./../../compiled-lang/de.json')), // eslint-disable-line
|
||||
RU: new Locale('ru', 'Pусский', require('./../../compiled-lang/ru.json')), // eslint-disable-line
|
||||
ZH: new Locale('zh', '中文 (简体)', require('./../../compiled-lang/zh.json')), // eslint-disable-line
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const localeFromStr = (code: string): Locale => {
|
||||
const locales: Locale[] = Object.values(Locales);
|
||||
|
||||
|
@ -311,6 +311,12 @@
|
||||
"value": "Kontaktiere uns"
|
||||
}
|
||||
],
|
||||
"footer.donations": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Spenden"
|
||||
}
|
||||
],
|
||||
"footer.faq": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -341,6 +347,18 @@
|
||||
"value": "Andere"
|
||||
}
|
||||
],
|
||||
"footer.support": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Unterstützt"
|
||||
}
|
||||
],
|
||||
"footer.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Ausrüstung"
|
||||
}
|
||||
],
|
||||
"footer.termsandconditions": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -275,6 +275,12 @@
|
||||
"value": "Image: Get a graphic representation of your map including all colors and shapes."
|
||||
}
|
||||
],
|
||||
"export.img-center": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Center and zoom to fit"
|
||||
}
|
||||
],
|
||||
"export.title": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -299,6 +305,12 @@
|
||||
"value": "Contact Us"
|
||||
}
|
||||
],
|
||||
"footer.donations": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Donations"
|
||||
}
|
||||
],
|
||||
"footer.faq": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -329,6 +341,18 @@
|
||||
"value": "Others"
|
||||
}
|
||||
],
|
||||
"footer.support": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Support"
|
||||
}
|
||||
],
|
||||
"footer.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Our Team"
|
||||
}
|
||||
],
|
||||
"footer.termsandconditions": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -512,7 +536,7 @@
|
||||
"label.add-for": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Editing labels for maps:"
|
||||
"value": "Editing labels for"
|
||||
}
|
||||
],
|
||||
"label.add-placeholder": [
|
||||
@ -545,6 +569,16 @@
|
||||
"value": "Use labels to organize your maps."
|
||||
}
|
||||
],
|
||||
"label.maps-count": [
|
||||
{
|
||||
"type": 1,
|
||||
"value": "count"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " maps"
|
||||
}
|
||||
],
|
||||
"label.title": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -887,6 +921,12 @@
|
||||
"value": "Last Name"
|
||||
}
|
||||
],
|
||||
"registration.page-title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Registration | WiseMapping"
|
||||
}
|
||||
],
|
||||
"registration.password": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -914,7 +954,7 @@
|
||||
"registration.title": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Registration | WiseMapping"
|
||||
"value": "Become a member"
|
||||
}
|
||||
],
|
||||
"rename.description": [
|
||||
|
@ -296,7 +296,7 @@
|
||||
"footer.aboutus": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Sobre nosotros"
|
||||
"value": "Sobre Nosotros"
|
||||
}
|
||||
],
|
||||
"footer.contactus": [
|
||||
@ -305,6 +305,12 @@
|
||||
"value": "Contáctenos"
|
||||
}
|
||||
],
|
||||
"footer.donations": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Donaciones"
|
||||
}
|
||||
],
|
||||
"footer.faq": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -335,6 +341,18 @@
|
||||
"value": "Otros"
|
||||
}
|
||||
],
|
||||
"footer.support": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Soporte"
|
||||
}
|
||||
],
|
||||
"footer.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Equipo"
|
||||
}
|
||||
],
|
||||
"footer.termsandconditions": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -303,6 +303,12 @@
|
||||
"value": "Nous contacter"
|
||||
}
|
||||
],
|
||||
"footer.donations": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Des dons"
|
||||
}
|
||||
],
|
||||
"footer.faq": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -333,6 +339,18 @@
|
||||
"value": "Autres"
|
||||
}
|
||||
],
|
||||
"footer.support": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Service"
|
||||
}
|
||||
],
|
||||
"footer.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Equipe"
|
||||
}
|
||||
],
|
||||
"footer.termsandconditions": [
|
||||
{
|
||||
"type": 0,
|
||||
|
@ -305,6 +305,12 @@
|
||||
"value": "Контакты"
|
||||
}
|
||||
],
|
||||
"footer.donations": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Пожертвования"
|
||||
}
|
||||
],
|
||||
"footer.faq": [
|
||||
{
|
||||
"type": 0,
|
||||
@ -335,6 +341,18 @@
|
||||
"value": "Прочее"
|
||||
}
|
||||
],
|
||||
"footer.support": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Услуги"
|
||||
}
|
||||
],
|
||||
"footer.team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "команда"
|
||||
}
|
||||
],
|
||||
"footer.termsandconditions": [
|
||||
{
|
||||
"type": 0,
|
||||
|
1034
packages/webapp/src/compiled-lang/zh.json
Normal file
1034
packages/webapp/src/compiled-lang/zh.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@ import { EditorOptions } from '@wisemapping/editor';
|
||||
import { EditorRenderMode } from '@wisemapping/mindplot';
|
||||
import AppConfig from '../../classes/app-config';
|
||||
|
||||
export default class EditorOptionsBuilder {
|
||||
class EditorOptionsBuilder {
|
||||
static build(locale: string, mode: EditorRenderMode, hotkeys: boolean): EditorOptions {
|
||||
|
||||
let options: EditorOptions = {
|
||||
@ -38,3 +38,4 @@ export default class EditorOptionsBuilder {
|
||||
return !AppConfig.isDevelopEnv() ? global.mapId : 11;
|
||||
}
|
||||
}
|
||||
export default EditorOptionsBuilder;
|
||||
|
@ -3,8 +3,8 @@ import ActionDispatcher from '../maps-page/action-dispatcher';
|
||||
import { ActionType } from '../maps-page/action-chooser';
|
||||
import Editor from '@wisemapping/editor';
|
||||
import { EditorRenderMode, PersistenceManager } from '@wisemapping/mindplot';
|
||||
|
||||
import AppI18n from '../../classes/app-i18n';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import AppI18n, { Locales } from '../../classes/app-i18n';
|
||||
import { useSelector } from 'react-redux';
|
||||
import { hotkeysEnabled } from '../../redux/editorSlice';
|
||||
import ReactGA from 'react-ga';
|
||||
@ -23,7 +23,6 @@ const EditorPage = ({ isTryMode }: EditorPropsType): React.ReactElement => {
|
||||
const client: Client = useSelector(activeInstance);
|
||||
|
||||
useEffect(() => {
|
||||
document.title = `${global.mapTitle ? global.mapTitle : 'unknown'} | WiseMapping `;
|
||||
ReactGA.pageview(window.location.pathname + window.location.search);
|
||||
}, []);
|
||||
|
||||
@ -37,9 +36,13 @@ const EditorPage = ({ isTryMode }: EditorPropsType): React.ReactElement => {
|
||||
const fetchResult = fetchMapById(mapId);
|
||||
if (!fetchResult.isLoading) {
|
||||
if (fetchResult.error) {
|
||||
throw new Error(`Map information could not be loaded: ${JSON.stringify(fetchResult)}`);
|
||||
throw new Error(`Map info could not be loaded: ${JSON.stringify(fetchResult.error)}`);
|
||||
}
|
||||
result = `edition-${fetchResult?.map?.role}`;
|
||||
|
||||
if (!fetchResult.map) {
|
||||
throw new Error(`Map info could not be loaded. Info not present: ${JSON.stringify(fetchResult)}`);
|
||||
}
|
||||
result = `edition-${fetchResult.map.role}`;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@ -61,7 +64,11 @@ const EditorPage = ({ isTryMode }: EditorPropsType): React.ReactElement => {
|
||||
}
|
||||
|
||||
return loadCompleted ? (
|
||||
<>
|
||||
<IntlProvider
|
||||
locale={userLocale.code}
|
||||
defaultLocale={Locales.EN.code}
|
||||
messages={userLocale.message as Record<string, string>}
|
||||
>
|
||||
<Editor onAction={setActiveDialog}
|
||||
options={options}
|
||||
persistenceManager={persistence}
|
||||
@ -75,7 +82,7 @@ const EditorPage = ({ isTryMode }: EditorPropsType): React.ReactElement => {
|
||||
fromEditor
|
||||
/>
|
||||
}
|
||||
</>) : <></>
|
||||
</IntlProvider>) : <></>
|
||||
}
|
||||
|
||||
|
||||
|
@ -16,6 +16,11 @@ const Footer = (): React.ReactElement => {
|
||||
<h4>
|
||||
<FormattedMessage id="footer.faqandhelp" defaultMessage="Help & FAQ" />
|
||||
</h4>
|
||||
<div>
|
||||
<a href="https://www.wisemapping.com/aboutus.html">
|
||||
<FormattedMessage id="footer.aboutus" defaultMessage="About Us" />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://www.wisemapping.com/faq.html">
|
||||
<FormattedMessage id="footer.faq" defaultMessage="F.A.Q." />
|
||||
@ -29,9 +34,24 @@ const Footer = (): React.ReactElement => {
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h4>
|
||||
<FormattedMessage id="footer.contactus" defaultMessage="Contact Us" />
|
||||
</h4>
|
||||
<div>
|
||||
<a href="mailto:support@wisemapping.com">
|
||||
<FormattedMessage id="footer.support" defaultMessage="Support" />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="mailto:feedback@wisemapping.com">
|
||||
<FormattedMessage id="footer.feedback" defaultMessage="Feedback" />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="mailto:team@wisemapping.com">
|
||||
<FormattedMessage id="footer.contactus" defaultMessage="Contact Us" />
|
||||
<FormattedMessage id="footer.team" defaultMessage="Our Team" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -40,13 +60,11 @@ const Footer = (): React.ReactElement => {
|
||||
<FormattedMessage id="footer.others" defaultMessage="Others" />
|
||||
</h4>
|
||||
<div>
|
||||
<a href="https://www.wisemapping.com/aboutus.html">
|
||||
<FormattedMessage id="footer.aboutus" defaultMessage="About Us" />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="mailto:feedback@wisemapping.com">
|
||||
<FormattedMessage id="footer.feedback" defaultMessage="Feedback" />
|
||||
<a href="https://www.paypal.com/donate/?hosted_button_id=CF7GJ7T6E4RS4">
|
||||
<FormattedMessage
|
||||
id="footer.donations"
|
||||
defaultMessage="Donations"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
|
@ -4,10 +4,10 @@ import styled from 'styled-components';
|
||||
export const StyledFooter = styled.footer`
|
||||
height: 250px;
|
||||
margin-top: 80px;
|
||||
padding: 60px 40px 10px 50px;
|
||||
padding: 30px 40px 10px 50px;
|
||||
background-color: #f9a826;
|
||||
display: grid;
|
||||
grid-template-columns: 200px 1fr 1fr 3fr;
|
||||
grid-template-columns: 200px 1fr 1fr 1fr 3fr;
|
||||
|
||||
& a {
|
||||
font-size: 14px;
|
||||
@ -34,9 +34,12 @@ export const StyledFooter = styled.footer`
|
||||
& div:nth-child(3) {
|
||||
grid-column: 3;
|
||||
}
|
||||
|
||||
& div:nth-child(4) {
|
||||
grid-column: 4;
|
||||
}
|
||||
|
||||
& div:nth-child(5) {
|
||||
grid-column: 5;
|
||||
text-align: right;
|
||||
display: inline-block;
|
||||
visibility: visible;
|
||||
|
@ -106,6 +106,10 @@ const LanguageMenu = (): React.ReactElement => {
|
||||
{Locales.RU.label}
|
||||
</MenuItem>
|
||||
|
||||
<MenuItem onClick={handleOnClick} id={Locales.ZH.code}>
|
||||
{Locales.ZH.label}
|
||||
</MenuItem>
|
||||
|
||||
<Divider />
|
||||
|
||||
<MenuItem
|
||||
|
@ -57,8 +57,8 @@ export const fetchMapById = (id: number): MapLoadResult => {
|
||||
}
|
||||
// Seach for object...
|
||||
map = data?.find((m) => m.id == id);
|
||||
if (map === null && !errorMsg) {
|
||||
errorMsg = { msg: `Map with id ${id} could not be found. Please, reflesh the page` }
|
||||
if (!map && !errorMsg) {
|
||||
errorMsg = { msg: `Map with id ${id} could not be found. Please, reflesh the page. Map: ${JSON.stringify(data)}` }
|
||||
}
|
||||
}
|
||||
return { isLoading: isLoading, error: errorMsg, map: map };
|
||||
|
Loading…
Reference in New Issue
Block a user