123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- /*globals jQuery*/
- /*jslint vars: true, eqeq: true, forin: true*/
- /*
- * Localizing script for SVG-edit UI
- *
- * Licensed under the MIT License
- *
- * Copyright(c) 2010 Narendra Sisodya
- * Copyright(c) 2010 Alexis Deveria
- *
- */
- // Dependencies
- // 1) jQuery
- // 2) svgcanvas.js
- // 3) svg-editor.js
- var svgEditor = (function($, editor) {'use strict';
- var lang_param;
-
- function setStrings(type, obj, ids) {
- // Root element to look for element from
- var i, sel, val, $elem, elem, node, parent = $('#svg_editor').parent();
- for (sel in obj) {
- val = obj[sel];
- if (!val) {console.log(sel);}
-
- if (ids) {sel = '#' + sel;}
- $elem = parent.find(sel);
- if ($elem.length) {
- elem = parent.find(sel)[0];
-
- switch ( type ) {
- case 'content':
- for (i = 0; i < elem.childNodes.length; i++) {
- node = elem.childNodes[i];
- if (node.nodeType === 3 && node.textContent.replace(/\s/g,'')) {
- node.textContent = val;
- break;
- }
- }
- break;
-
- case 'title':
- elem.title = val;
- break;
- }
-
-
- } else {
- console.log('Missing: ' + sel);
- }
- }
- }
- editor.readLang = function(langData) {
- var more = editor.canvas.runExtensions('addlangData', lang_param, true);
- $.each(more, function(i, m) {
- if (m.data) {
- langData = $.merge(langData, m.data);
- }
- });
-
- // Old locale file, do nothing for now.
- if (!langData.tools) {return;}
- var tools = langData.tools,
- misc = langData.misc,
- properties = langData.properties,
- config = langData.config,
- layers = langData.layers,
- common = langData.common,
- ui = langData.ui;
-
- setStrings('content', {
- // copyrightLabel: misc.powered_by, // Currently commented out in svg-editor.html
- curve_segments: properties.curve_segments,
- fitToContent: tools.fitToContent,
- fit_to_all: tools.fit_to_all,
- fit_to_canvas: tools.fit_to_canvas,
- fit_to_layer_content: tools.fit_to_layer_content,
- fit_to_sel: tools.fit_to_sel,
-
- icon_large: config.icon_large,
- icon_medium: config.icon_medium,
- icon_small: config.icon_small,
- icon_xlarge: config.icon_xlarge,
- image_opt_embed: config.image_opt_embed,
- image_opt_ref: config.image_opt_ref,
- includedImages: config.included_images,
-
- largest_object: tools.largest_object,
-
- layersLabel: layers.layers,
- page: tools.page,
- relativeToLabel: tools.relativeTo,
- selLayerLabel: layers.move_elems_to,
- selectedPredefined: config.select_predefined,
-
- selected_objects: tools.selected_objects,
- smallest_object: tools.smallest_object,
- straight_segments: properties.straight_segments,
-
- svginfo_bg_url: config.editor_img_url + ":",
- svginfo_bg_note: config.editor_bg_note,
- svginfo_change_background: config.background,
- svginfo_dim: config.doc_dims,
- svginfo_editor_prefs: config.editor_prefs,
- svginfo_height: common.height,
- svginfo_icons: config.icon_size,
- svginfo_image_props: config.image_props,
- svginfo_lang: config.language,
- svginfo_title: config.doc_title,
- svginfo_width: common.width,
-
- tool_docprops_cancel: common.cancel,
- tool_docprops_save: common.ok,
- tool_source_cancel: common.cancel,
- tool_source_save: common.ok,
-
- tool_prefs_cancel: common.cancel,
- tool_prefs_save: common.ok,
- sidepanel_handle: layers.layers.split('').join(' '),
- tool_clear: tools.new_doc,
- tool_docprops: tools.docprops,
- tool_export: tools.export_img,
- tool_import: tools.import_doc,
- tool_imagelib: tools.imagelib,
- tool_open: tools.open_doc,
- tool_save: tools.save_doc,
-
- svginfo_units_rulers: config.units_and_rulers,
- svginfo_rulers_onoff: config.show_rulers,
- svginfo_unit: config.base_unit,
-
- svginfo_grid_settings: config.grid,
- svginfo_snap_onoff: config.snapping_onoff,
- svginfo_snap_step: config.snapping_stepsize,
- svginfo_grid_color: config.grid_color
- }, true);
-
- // Shape categories
- var o, cats = {};
- for (o in langData.shape_cats) {
- cats['#shape_cats [data-cat="' + o + '"]'] = langData.shape_cats[o];
- }
-
- // TODO: Find way to make this run after shapelib ext has loaded
- setTimeout(function() {
- setStrings('content', cats);
- }, 2000);
-
- // Context menus
- var opts = {};
- $.each(['cut','copy','paste', 'paste_in_place', 'delete', 'group', 'ungroup', 'move_front', 'move_up', 'move_down', 'move_back'], function() {
- opts['#cmenu_canvas a[href="#' + this + '"]'] = tools[this];
- });
- $.each(['dupe','merge_down', 'merge_all'], function() {
- opts['#cmenu_layers a[href="#' + this + '"]'] = layers[this];
- });
- opts['#cmenu_layers a[href="#delete"]'] = layers.del;
-
- setStrings('content', opts);
-
- setStrings('title', {
- align_relative_to: tools.align_relative_to,
- circle_cx: properties.circle_cx,
- circle_cy: properties.circle_cy,
- circle_r: properties.circle_r,
- cornerRadiusLabel: properties.corner_radius,
- ellipse_cx: properties.ellipse_cx,
- ellipse_cy: properties.ellipse_cy,
- ellipse_rx: properties.ellipse_rx,
- ellipse_ry: properties.ellipse_ry,
- fill_color: properties.fill_color,
- font_family: properties.font_family,
- idLabel: properties.id,
- image_height: properties.image_height,
- image_url: properties.image_url,
- image_width: properties.image_width,
- layer_delete: layers.del,
- layer_down: layers.move_down,
- layer_new: layers['new'],
- layer_rename: layers.rename,
- layer_moreopts: common.more_opts,
- layer_up: layers.move_up,
- line_x1: properties.line_x1,
- line_x2: properties.line_x2,
- line_y1: properties.line_y1,
- line_y2: properties.line_y2,
- linecap_butt: properties.linecap_butt,
- linecap_round: properties.linecap_round,
- linecap_square: properties.linecap_square,
- linejoin_bevel: properties.linejoin_bevel,
- linejoin_miter: properties.linejoin_miter,
- linejoin_round: properties.linejoin_round,
- main_icon: tools.main_menu,
- mode_connect: tools.mode_connect,
- tools_shapelib_show: tools.mode_shapelib,
- palette: ui.palette_info,
- zoom_panel: ui.zoom_level,
- path_node_x: properties.node_x,
- path_node_y: properties.node_y,
- rect_height_tool: properties.rect_height,
- rect_width_tool: properties.rect_width,
- seg_type: properties.seg_type,
- selLayerNames: layers.move_selected,
- selected_x: properties.pos_x,
- selected_y: properties.pos_y,
- stroke_color: properties.stroke_color,
- stroke_style: properties.stroke_style,
- stroke_width: properties.stroke_width,
- svginfo_title: config.doc_title,
- text: properties.text_contents,
- toggle_stroke_tools: ui.toggle_stroke_tools,
- tool_add_subpath: tools.add_subpath,
- tool_alignbottom: tools.align_bottom,
- tool_aligncenter: tools.align_center,
- tool_alignleft: tools.align_left,
- tool_alignmiddle: tools.align_middle,
- tool_alignright: tools.align_right,
- tool_aligntop: tools.align_top,
- tool_angle: properties.angle,
- tool_blur: properties.blur,
- tool_bold: properties.bold,
- tool_circle: tools.mode_circle,
- tool_clone: tools.clone,
- tool_clone_multi: tools.clone,
- tool_delete: tools.del,
- tool_delete_multi: tools.del,
- tool_ellipse: tools.mode_ellipse,
- tool_eyedropper: tools.mode_eyedropper,
- tool_fhellipse: tools.mode_fhellipse,
- tool_fhpath: tools.mode_fhpath,
- tool_fhrect: tools.mode_fhrect,
- tool_font_size: properties.font_size,
- tool_group_elements: tools.group_elements,
- tool_make_link: tools.make_link,
- tool_link_url: tools.set_link_url,
- tool_image: tools.mode_image,
- tool_italic: properties.italic,
- tool_line: tools.mode_line,
- tool_move_bottom: tools.move_bottom,
- tool_move_top: tools.move_top,
- tool_node_clone: tools.node_clone,
- tool_node_delete: tools.node_delete,
- tool_node_link: tools.node_link,
- tool_opacity: properties.opacity,
- tool_openclose_path: tools.openclose_path,
- tool_path: tools.mode_path,
- tool_position: tools.align_to_page,
- tool_rect: tools.mode_rect,
- tool_redo: tools.redo,
- tool_reorient: tools.reorient_path,
- tool_select: tools.mode_select,
- tool_source: tools.source_save,
- tool_square: tools.mode_square,
- tool_text: tools.mode_text,
- tool_topath: tools.to_path,
- tool_undo: tools.undo,
- tool_ungroup: tools.ungroup,
- tool_wireframe: tools.wireframe_mode,
- view_grid: tools.toggle_grid,
- tool_zoom: tools.mode_zoom,
- url_notice: tools.no_embed
- }, true);
-
- editor.setLang(lang_param, langData);
- };
- editor.putLocale = function (given_param, good_langs) {
-
- if (given_param) {
- lang_param = given_param;
- }
- else {
- lang_param = $.pref('lang');
- if (!lang_param) {
- if (navigator.userLanguage) { // Explorer
- lang_param = navigator.userLanguage;
- }
- else if (navigator.language) { // FF, Opera, ...
- lang_param = navigator.language;
- }
- if (lang_param == null) { // Todo: Would cause problems if uiStrings removed; remove this?
- return;
- }
- }
-
- console.log('Lang: ' + lang_param);
-
- // Set to English if language is not in list of good langs
- if ($.inArray(lang_param, good_langs) === -1 && lang_param !== 'test') {
- lang_param = "en";
- }
-
- // don't bother on first run if language is English
- // The following line prevents setLang from running
- // extensions which depend on updated uiStrings,
- // so commenting it out.
- // if (lang_param.indexOf("en") === 0) {return;}
- }
-
- var conf = editor.curConfig;
-
- var url = conf.langPath + "lang." + lang_param + ".js";
-
- $.getScript(url, function(d) {
- // Fails locally in Chrome 5+
- if (!d) {
- var s = document.createElement('script');
- s.src = url;
- document.querySelector('head').appendChild(s);
- }
- });
-
- };
-
- return editor;
- }(jQuery, svgEditor));
|