diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml new file mode 100644 index 0000000000..065cc0fc61 --- /dev/null +++ b/.github/workflows/codeql.yaml @@ -0,0 +1,51 @@ +name: "CodeQL" + +on: + push: + branches: + - 'master' + - 'hotfix/**' + - 'release/**' + paths-ignore: + - '**/README.md' + - '**/LICENSE' + - '.github/**' + + schedule: + - cron: '0 0 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript-typescript' ] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 0cbb9f86a1..934d4da318 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -110,7 +110,8 @@ image: url, imageDark: url, // logo for dark theme imageEmbedded: url, // deprecated, use image instead - url: http://... + url: http://..., + visible: true // hide logo if visible=false }, customer: { name: 'SuperPuper', @@ -162,11 +163,13 @@ save: false/true // save button } / false / true, home: { - mailmerge: false/true // mail merge button + mailmerge: false/true // mail merge button // deprecated, button is moved to collaboration tab. use toolbar->collaboration->mailmerge instead }, layout: false / true, // layout tab references: false / true, // de references tab - collaboration: false / true // collaboration tab + collaboration: { + mailmerge: false/true // mail merge button in de + } / false / true, // collaboration tab draw: false / true // draw tab protect: false / true, // protect tab plugins: false / true // plugins tab @@ -209,7 +212,7 @@ compactToolbar: false, leftMenu: true, // must be deprecated. use layout.leftMenu instead rightMenu: true, // must be deprecated. use layout.rightMenu instead - hideRightMenu: false, // hide or show right panel on first loading + hideRightMenu: true, // hide or show right panel on first loading !! default value changed in 8.1 toolbar: true, // must be deprecated. use layout.toolbar instead statusBar: true, // must be deprecated. use layout.statusBar instead autosave: true, @@ -1018,7 +1021,9 @@ params += "&logo=" + encodeURIComponent(config.editorConfig.customization.loaderLogo); } if ( config.editorConfig.customization.logo ) { - if (config.type=='embedded' && (config.editorConfig.customization.logo.image || config.editorConfig.customization.logo.imageEmbedded)) + if (config.editorConfig.customization.logo.visible===false) { + params += "&headerlogo="; + } else if (config.type=='embedded' && (config.editorConfig.customization.logo.image || config.editorConfig.customization.logo.imageEmbedded)) params += "&headerlogo=" + encodeURIComponent(config.editorConfig.customization.logo.image || config.editorConfig.customization.logo.imageEmbedded); else if (config.type!='embedded' && (config.editorConfig.customization.logo.image || config.editorConfig.customization.logo.imageDark)) { config.editorConfig.customization.logo.image && (params += "&headerlogo=" + encodeURIComponent(config.editorConfig.customization.logo.image)); diff --git a/apps/api/wopi/editor-wopi.ejs b/apps/api/wopi/editor-wopi.ejs index ab427dc66a..fc342779bf 100644 --- a/apps/api/wopi/editor-wopi.ejs +++ b/apps/api/wopi/editor-wopi.ejs @@ -219,6 +219,10 @@ div { window.open(fileInfo.HostEditUrl, "_blank"); }; + var onRequestSaveAs = function (event) { + //SaveAs work via PutRelativeFile server-server request + }; + var onRequestSharingSettings = function (event) { if (fileInfo.FileSharingPostMessage) _postMessage('UI_Sharing', {}); @@ -324,7 +328,8 @@ div { "events": { "onAppReady": onAppReady, "onDocumentStateChange": fileInfo.EditNotificationPostMessage ? onDocumentStateChange : undefined, - 'onRequestEditRights': fileInfo.EditModePostMessage || (fileInfo.HostEditUrl && !fileInfo.UserCanNotWriteRelative) ? onRequestEditRights : undefined, + 'onRequestEditRights': fileInfo.EditModePostMessage || fileInfo.HostEditUrl ? onRequestEditRights : undefined, + 'onRequestSaveAs': fileInfo.SupportsUpdate && !fileInfo.UserCanNotWriteRelative ? onRequestSaveAs : undefined, "onError": onError, "onRequestClose": fileInfo.ClosePostMessage || fileInfo.CloseUrl ? onRequestClose : undefined, "onRequestRename": fileInfo.SupportsRename && fileInfo.UserCanRename ? onRequestRename : undefined, diff --git a/apps/common/checkExtendedPDF.js b/apps/common/checkExtendedPDF.js index 4a5ff9cfdf..be3c234889 100644 --- a/apps/common/checkExtendedPDF.js +++ b/apps/common/checkExtendedPDF.js @@ -93,7 +93,7 @@ function downloadPartialy(url, limit, postData, callback) { var xhr = new XMLHttpRequest(); //value of responseText always has the current content received from the server, even if it's incomplete // xhr.responseType = "json"; it raises an IE error. bug 66160 - xhr.overrideMimeType('text/xml; charset=iso-8859-1'); + xhr.overrideMimeType('text/plain; charset=iso-8859-1'); xhr.onreadystatechange = function () { if (callbackCalled) { return; diff --git a/apps/common/main/lib/component/Button.js b/apps/common/main/lib/component/Button.js index 511922a420..1faefe2f15 100644 --- a/apps/common/main/lib/component/Button.js +++ b/apps/common/main/lib/component/Button.js @@ -779,10 +779,11 @@ define([ if (/svgicon/.test(this.iconCls)) { var icon = /svgicon\s(\S+)/.exec(this.iconCls); svgIcon.attr('xlink:href', icon && icon.length > 1 ? '#' + icon[1] : ''); - } else if (svgIcon.length) { - var icon = /btn-[^\s]+/.exec(this.iconCls); - svgIcon.attr('href', icon ? '#' + icon[0]: ''); } else { + if (svgIcon.length) { + var icon = /btn-[^\s]+/.exec(this.iconCls); + svgIcon.attr('href', icon ? '#' + icon[0]: ''); + } btnIconEl.removeClass(oldCls); btnIconEl.addClass(cls || ''); if (this.options.scaling === false) { diff --git a/apps/common/main/lib/component/ComboDataView.js b/apps/common/main/lib/component/ComboDataView.js index f4603396cb..940e7eb1e6 100644 --- a/apps/common/main/lib/component/ComboDataView.js +++ b/apps/common/main/lib/component/ComboDataView.js @@ -142,9 +142,6 @@ define([ this.openButton.menu.setInnerMenu([{menu: this.menuPicker, index: 0}]); } - // Handle resize - setInterval(_.bind(this.checkSize, this), 500); - if (this.options.el) { this.render(); } @@ -200,6 +197,8 @@ define([ }); } + me.autoWidth && me.cmpEl.addClass('auto-width'); + me.fieldPicker.on('item:select', _.bind(me.onFieldPickerSelect, me)); me.menuPicker.on('item:select', _.bind(me.onMenuPickerSelect, me)); me.fieldPicker.on('item:click', _.bind(me.onFieldPickerClick, me)); @@ -211,9 +210,10 @@ define([ me.menuPicker.el.addEventListener('contextmenu', _.bind(me.onPickerComboContextMenu, me), false); Common.NotificationCenter.on('more:toggle', _.bind(this.onMoreToggle, this)); - + Common.NotificationCenter.on('tab:active', _.bind(this.onTabActive, this)); + Common.NotificationCenter.on('window:resize', _.bind(this.startCheckSize, this)); + me.checkSize(); me.onResize(); - me.rendered = true; me.trigger('render:after', me); @@ -227,17 +227,40 @@ define([ onMoreToggle: function(btn, state) { if(state) { - this.checkSize(); + this.startCheckSize(); } }, + onTabActive: function() { + this.startCheckSize(); + }, + + startCheckSize: function() { + if (!this.cmpEl || !this.cmpEl.is(':visible')) return; + + var me = this; + me.checkSize(); + if (!me._timer_id) { + me._needCheckSize = 0; + me._timer_id = setInterval(function() { + if (me._needCheckSize++ < 10) + me.checkSize(); + else { + clearInterval(me._timer_id); + delete me._timer_id; + } + }, 500); + } else + me._needCheckSize = 0; + }, + checkSize: function() { if (this.cmpEl && this.cmpEl.is(':visible')) { if(this.autoWidth && this.menuPicker.store.length > 0) { var wrapWidth = this.$el.width(); if(wrapWidth != this.wrapWidth || this.needFillComboView){ - this.wrapWidth = wrapWidth; - this.autoChangeWidth(); + wrapWidth = this.autoChangeWidth(); + wrapWidth && (this.wrapWidth = wrapWidth); var picker = this.menuPicker; var record = picker.getSelectedRec(); @@ -248,7 +271,6 @@ define([ var me = this, width = this.cmpEl.width(), height = this.cmpEl.height(); - if (width < this.minWidth) return; if (this.rootWidth != width || this.rootHeight != height) { @@ -290,32 +312,13 @@ define([ autoChangeWidth: function() { if(this.menuPicker.dataViewItems[0]){ - var wrapEl = this.$el; - var wrapWidth = wrapEl.width(); - - var itemEl = this.menuPicker.dataViewItems[0].$el; - var itemWidth = this.itemWidth + parseFloat(itemEl.css('padding-left')) + parseFloat(itemEl.css('padding-right')) + 2 * parseFloat(itemEl.css('border-width')); - var itemMargins = parseFloat(itemEl.css('margin-left')) + parseFloat(itemEl.css('margin-right')); - - var fieldPickerEl = this.fieldPicker.$el; - var fieldPickerPadding = parseFloat(fieldPickerEl.css(Common.UI.isRTL() ? 'padding-left' : 'padding-right')); - var fieldPickerBorder = parseFloat(fieldPickerEl.css('border-width')); - var dataviewPaddings = parseFloat(this.fieldPicker.$el.find('.dataview').css('padding-left')) + parseFloat(this.fieldPicker.$el.find('.dataview').css('padding-right')); - - var cmbDataViewEl = this.cmpEl; - var cmbDataViewPaddings = parseFloat(cmbDataViewEl.css('padding-left')) + parseFloat(cmbDataViewEl.css('padding-right')); - - var itemsCount = Math.floor((wrapWidth - fieldPickerPadding - dataviewPaddings - 2 * fieldPickerBorder - cmbDataViewPaddings) / (itemWidth + itemMargins)); - if(itemsCount > this.store.length) - itemsCount = this.store.length; - - var widthCalc = Math.ceil((itemsCount * (itemWidth + itemMargins) + fieldPickerPadding + dataviewPaddings + 2 * fieldPickerBorder + cmbDataViewPaddings) * 10) / 10; - - var maxWidth = parseFloat(cmbDataViewEl.css('max-width')); - if(widthCalc > maxWidth) - widthCalc = maxWidth; - - cmbDataViewEl.css('width', widthCalc); + var wrapEl = this.$el, + widthCalc = this.checkAutoWidth(wrapEl, wrapEl.width()), + cmbDataViewEl = this.cmpEl; + if (widthCalc) { + cmbDataViewEl.css('width', widthCalc); + wrapEl.css('width', (widthCalc + parseFloat(wrapEl.css('padding-left')) + parseFloat(wrapEl.css('padding-right'))) + 'px'); + } if(this.initAutoWidth) { this.initAutoWidth = false; @@ -324,9 +327,50 @@ define([ cmbDataViewEl.css('bottom', '50%'); cmbDataViewEl.css('margin', 'auto 0'); } + + return widthCalc; } }, - + + checkAutoWidth: function(el, width) { + var $menuPicker = el.find('.menu-picker'), + $fieldPicker = el.find('.field-picker').closest('.view'), + cmbDataViewEl = el.find('.combo-dataview'); + if ($menuPicker && $menuPicker.length>0) { + var itemEl = $menuPicker.find('.item'), + storeLength = itemEl.length, + fieldItemEl = $fieldPicker.find('.item'); + if (itemEl.length>0) { + itemEl = $(itemEl[0]); + var itemWidth = itemEl.width(); + if (itemWidth<1) { + itemWidth = fieldItemEl.length>0 ? $(fieldItemEl[0]).width() : 0; + } + if (itemWidth<1) return; + + itemWidth += parseFloat(itemEl.css('padding-left')) + parseFloat(itemEl.css('padding-right')) + 2 * parseFloat(itemEl.css('border-width')); + var itemMargins = parseFloat(itemEl.css('margin-left')) + parseFloat(itemEl.css('margin-right')); + + var fieldPickerPadding = parseFloat($fieldPicker.css(Common.UI.isRTL() ? 'padding-left' : 'padding-right')); + var fieldPickerBorder = parseFloat($fieldPicker.css('border-width')); + var dataView = $fieldPicker.find('.dataview'); + var dataviewPaddings = parseFloat(dataView.css('padding-left')) + parseFloat(dataView.css('padding-right')); + + var cmbDataViewPaddings = parseFloat(cmbDataViewEl.css('padding-left')) + parseFloat(cmbDataViewEl.css('padding-right')); + var itemsCount = Math.floor((width - fieldPickerPadding - dataviewPaddings - 2 * fieldPickerBorder - cmbDataViewPaddings) / (itemWidth + itemMargins)); + if(itemsCount > storeLength) + itemsCount = storeLength; + + var widthCalc = Math.ceil((itemsCount * (itemWidth + itemMargins) + fieldPickerPadding + dataviewPaddings + 2 * fieldPickerBorder + cmbDataViewPaddings) * 10) / 10; + var maxWidth = parseFloat(cmbDataViewEl.css('max-width')); + if(widthCalc > maxWidth) + widthCalc = maxWidth; + + return widthCalc; + } + } + }, + onBeforeShowMenu: function(e) { var me = this; diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index 81bd6cf10d..7bd2bbb450 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -305,7 +305,7 @@ define([ me._timerSetTab = false; }, 500); me.setTab(tab); - // me.processPanelVisible(null, true); + // me.processPanelVisible(); if ( !me.isFolded ) { if ( me.dblclick_timer ) clearTimeout(me.dblclick_timer); me.dblclick_timer = setTimeout(function () { @@ -337,7 +337,7 @@ define([ this.lastPanel = tab; panel.addClass('active'); me.setMoreButton(tab, panel); - me.processPanelVisible(null, true, true); + me.processPanelVisible(null, true); } if ( panel.length ) { @@ -353,6 +353,7 @@ define([ } this.fireEvent('tab:active', [tab]); + Common.NotificationCenter.trigger('tab:active',[tab]); } }, @@ -422,10 +423,8 @@ define([ * hide button's caption to decrease panel width * ##adopt-panel-width **/ - processPanelVisible: function(panel, now, force) { + processPanelVisible: function(panel, force) { var me = this; - if ( me._timer_id ) clearTimeout(me._timer_id); - function _fc() { var $active = panel || me.$panels.filter('.active'); if ( $active && $active.length ) { @@ -502,8 +501,13 @@ define([ data.rightedge = _rightedge; if (_flex.length>0 && $active.find('.btn-slot.compactwidth').length<1) { for (var i=0; i<_flex.length; i++) { - var item = _flex[i]; - item.el.css('width', item.width); + var item = _flex[i], + checkedwidth; + if (item.el.find('.combo-dataview').hasClass('auto-width')) { + checkedwidth = Common.UI.ComboDataView.prototype.checkAutoWidth(item.el, + me.$boxpanels.width() - $active.outerWidth() + item.el.width()); + } + item.el.css('width', checkedwidth ? (checkedwidth + parseFloat(item.el.css('padding-left')) + parseFloat(item.el.css('padding-right'))) + 'px' : item.width); data.rightedge = $active.get(0).getBoundingClientRect().right; } } @@ -512,11 +516,20 @@ define([ } }; - if ( now === true ) _fc(); else - me._timer_id = setTimeout(function() { - delete me._timer_id; + if (!me._timer_id) { _fc(); - }, 100); + me._needProcessPanel = false; + me._timer_id = setInterval(function() { + if (me._needProcessPanel) { + _fc(); + me._needProcessPanel = false; + } else { + clearInterval(me._timer_id); + delete me._timer_id; + } + }, 100); + } else + me._needProcessPanel = true; }, /**/ @@ -582,6 +595,14 @@ define([ } }, + clearActiveData: function(tab) { + var panel = tab ? this.$panels.filter('[data-tab=' + tab + ']') : this.$panels.filter('.active'); + if ( panel.length ) { + var data = panel.data(); + data.buttons = data.flex = data.rightedge = data.leftedge = undefined; + } + }, + resizeToolbar: function(reset) { var $active = this.$panels.filter('.active'), more_section = $active.find('.more-box'); diff --git a/apps/common/main/lib/controller/Comments.js b/apps/common/main/lib/controller/Comments.js index 898b5671d8..438aa42348 100644 --- a/apps/common/main/lib/controller/Comments.js +++ b/apps/common/main/lib/controller/Comments.js @@ -851,7 +851,7 @@ define([ comment.set('initials', Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(data.asc_getUserName()))); comment.set('parsedName', AscCommon.UserInfoParser.getParsedName(data.asc_getUserName())); comment.set('parsedGroups', AscCommon.UserInfoParser.getParsedGroups(data.asc_getUserName())); - comment.set('usercolor', (user) ? user.get('color') : null); + comment.set('usercolor', (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(userid || data.asc_getUserName())); comment.set('avatar', avatar); comment.set('resolved', data.asc_getSolved()); comment.set('quote', data.asc_getQuoteText()); @@ -890,7 +890,7 @@ define([ username : data.asc_getReply(i).asc_getUserName(), initials : Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(data.asc_getReply(i).asc_getUserName())), parsedName : AscCommon.UserInfoParser.getParsedName(data.asc_getReply(i).asc_getUserName()), - usercolor : (user) ? user.get('color') : null, + usercolor : (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(userid || data.asc_getReply(i).asc_getUserName()), avatar : avatar, date : t.dateToLocaleTimeString(dateReply), reply : data.asc_getReply(i).asc_getText(), @@ -1300,7 +1300,7 @@ define([ var users = this.userCollection, hasGroup = false, updateCommentData = function(comment, user, isNotReply) { - var color = (user) ? user.get('color') : null, + var color = (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(comment.get('userid')), needrender = false; if (color !== comment.get('usercolor')) { needrender = true; @@ -1395,7 +1395,7 @@ define([ initials : Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(data.asc_getUserName())), parsedName : AscCommon.UserInfoParser.getParsedName(data.asc_getUserName()), parsedGroups : AscCommon.UserInfoParser.getParsedGroups(data.asc_getUserName()), - usercolor : (user) ? user.get('color') : null, + usercolor : (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(userid || data.asc_getUserName()), avatar : avatar, date : this.dateToLocaleTimeString(date), quote : data.asc_getQuoteText(), @@ -1456,7 +1456,7 @@ define([ username : data.asc_getReply(i).asc_getUserName(), initials : Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(data.asc_getReply(i).asc_getUserName())), parsedName : AscCommon.UserInfoParser.getParsedName(data.asc_getReply(i).asc_getUserName()), - usercolor : (user) ? user.get('color') : null, + usercolor : (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(userid || data.asc_getReply(i).asc_getUserName()), avatar : avatar, date : this.dateToLocaleTimeString(date), reply : data.asc_getReply(i).asc_getText(), @@ -1501,7 +1501,7 @@ define([ avatar: Common.UI.ExternalUsers.getImage(this.currentUserId), initials: Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(AscCommon.UserInfoParser.getCurrentName())), parsedName: AscCommon.UserInfoParser.getParsedName(AscCommon.UserInfoParser.getCurrentName()), - usercolor: (user) ? user.get('color') : null, + usercolor: (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(this.currentUserId), editTextInPopover: true, showReplyInPopover: false, hideAddReply: true, diff --git a/apps/common/main/lib/controller/ExternalUsers.js b/apps/common/main/lib/controller/ExternalUsers.js index 317e77a99f..84d05058a1 100644 --- a/apps/common/main/lib/controller/ExternalUsers.js +++ b/apps/common/main/lib/controller/ExternalUsers.js @@ -49,7 +49,9 @@ Common.UI.ExternalUsers = new( function() { isUsersLoading = false, externalUsersInfo = [], isUsersInfoLoading = false, - stackUsersInfoResponse = []; + stackUsersInfoResponse = [], + api, + userColors = []; var _get = function(type, ids) { if (type==='info') { @@ -114,9 +116,9 @@ Common.UI.ExternalUsers = new( function() { _onUsersInfo(stackUsersInfoResponse.shift()); }; - var _init = function(canRequestUsers) { + var _init = function(canRequestUsers, _api) { Common.Gateway.on('setusers', _onUsersInfo); - + api = _api; if (!canRequestUsers) return; Common.Gateway.on('setusers', function(data) { @@ -137,10 +139,20 @@ Common.UI.ExternalUsers = new( function() { }); }; + var _getColor = function(id, intValue) { + if (!userColors[id]) { + var color = api.asc_getUserColorById(id); + userColors[id] = ["#"+("000000"+color.toString(16)).substr(-6), color]; + } + + return intValue ? userColors[id][1] : userColors[id][0]; + }; + return { init: _init, get: _get, getImage: _getImage, - setImage: _setImage + setImage: _setImage, + getColor: _getColor } })(); diff --git a/apps/common/main/lib/controller/History.js b/apps/common/main/lib/controller/History.js index b15e36dae6..b3e1c561a2 100644 --- a/apps/common/main/lib/controller/History.js +++ b/apps/common/main/lib/controller/History.js @@ -74,6 +74,7 @@ define([ this.panelHistory.storeHistory.on('reset', _.bind(this.onResetStore, this)); this.panelHistory.on('render:after', _.bind(this.onAfterRender, this)); Common.Gateway.on('sethistorydata', _.bind(this.onSetHistoryData, this)); + Common.NotificationCenter.on('mentions:setusers', _.bind(this.avatarsUpdate, this)); }, setApi: function(api) { @@ -281,6 +282,21 @@ define([ this.panelHistory.btnExpand.cmpEl.text(needExpand ? this.panelHistory.textHideAll : this.panelHistory.textShowAll); }, + avatarsUpdate: function(type, users) { + if (type!=='info') return; + + if (users && users.length>0 ){ + this.panelHistory.storeHistory.each(function(item){ + var user = _.findWhere(users, {id: item.get('userid')}); + if (user && (user.image!==undefined)) { + if (user.image !== item.get('avatar')) { + item.set('avatar', user.image); + } + } + }); + } + }, + notcriticalErrorTitle: 'Warning' }, Common.Controllers.History || {})); diff --git a/apps/common/main/lib/controller/Plugins.js b/apps/common/main/lib/controller/Plugins.js index 64827f1fa7..65c3af8061 100644 --- a/apps/common/main/lib/controller/Plugins.js +++ b/apps/common/main/lib/controller/Plugins.js @@ -459,7 +459,7 @@ define([ me.viewPlugins.backgroundBtn.menu.on('show:before', onShowBefore); } - me.toolbar && me.toolbar.isTabActive('plugins') && me.toolbar.processPanelVisible(null, true, true); + me.toolbar && me.toolbar.isTabActive('plugins') && me.toolbar.processPanelVisible(null, true); var docProtection = me.viewPlugins._state.docProtection; Common.Utils.lockControls(Common.enumLock.docLockView, docProtection.isReadOnly, {array: me.viewPlugins.lockedControls}); Common.Utils.lockControls(Common.enumLock.docLockForms, docProtection.isFormsOnly, {array: me.viewPlugins.lockedControls}); @@ -625,72 +625,82 @@ define([ if (!this.viewPlugins.pluginPanels[guid].openInsideMode(langName, url, frameId, plugin.get_Guid())) this.api.asc_pluginButtonClick(-1, plugin.get_Guid()); } else { - var me = this, - isCustomWindow = variation.get_CustomWindow(), - arrBtns = variation.get_Buttons(), - newBtns = [], - size = variation.get_Size(), - isModal = variation.get_Modal(); + var me = this; + var createPluginDlg = function () { + var isCustomWindow = variation.get_CustomWindow(), + arrBtns = variation.get_Buttons(), + newBtns = [], + size = variation.get_Size(), + isModal = variation.get_Modal(); if (!size || size.length<2) size = [800, 600]; - if (_.isArray(arrBtns)) { - _.each(arrBtns, function(b, index){ - if (b.visible) - newBtns[index] = {caption: b.text, value: index, primary: b.primary}; + if (_.isArray(arrBtns)) { + _.each(arrBtns, function(b, index){ + if (b.visible) + newBtns[index] = {caption: b.text, value: index, primary: b.primary}; + }); + } + + var help = variation.get_Help(); + me.pluginDlg = new Common.Views.PluginDlg({ + guid: plugin.get_Guid(), + cls: isCustomWindow ? 'plain' : '', + header: !isCustomWindow, + title: plugin.get_Name(lang), + width: size[0], // inner width + height: size[1], // inner height + url: url, + frameId : frameId, + buttons: isCustomWindow ? undefined : newBtns, + toolcallback: function(event) { + me.api.asc_pluginButtonClick(-1, plugin.get_Guid()); + }, + help: !!help, + loader: plugin.get_Loader(), + modal: isModal!==undefined ? isModal : true }); + me.pluginDlg.on({ + 'render:after': function(obj){ + obj.getChild('.footer .dlg-btn').on('click', function(event) { + me.api.asc_pluginButtonClick(parseInt(event.currentTarget.attributes['result'].value), plugin.get_Guid()); + }); + me.pluginContainer = me.pluginDlg.$window.find('#id-plugin-container'); + }, + 'close': function(obj){ + me.pluginDlg = undefined; + }, + 'drag': function(args){ + me.api.asc_pluginEnableMouseEvents(args[1]=='start'); + }, + 'resize': function(args){ + me.api.asc_pluginEnableMouseEvents(args[1]=='start'); + }, + 'help': function(){ + help && window.open(help, '_blank'); + }, + 'header:click': function(type){ + me.api.asc_pluginButtonClick(type, plugin.get_Guid()); + } + }); + + me.pluginDlg.show(); + }; + if (this.pluginDlg) { + this.api.asc_pluginButtonClick(-1, this.pluginDlg.guid); + setTimeout(createPluginDlg, 10); + } else { + createPluginDlg(); } - var help = variation.get_Help(); - me.pluginDlg = new Common.Views.PluginDlg({ - cls: isCustomWindow ? 'plain' : '', - header: !isCustomWindow, - title: plugin.get_Name(lang), - width: size[0], // inner width - height: size[1], // inner height - url: url, - frameId : frameId, - buttons: isCustomWindow ? undefined : newBtns, - toolcallback: function(event) { - me.api.asc_pluginButtonClick(-1, plugin.get_Guid()); - }, - help: !!help, - loader: plugin.get_Loader(), - modal: isModal!==undefined ? isModal : true - }); - me.pluginDlg.on({ - 'render:after': function(obj){ - obj.getChild('.footer .dlg-btn').on('click', function(event) { - me.api.asc_pluginButtonClick(parseInt(event.currentTarget.attributes['result'].value), plugin.get_Guid()); - }); - me.pluginContainer = me.pluginDlg.$window.find('#id-plugin-container'); - }, - 'close': function(obj){ - me.pluginDlg = undefined; - }, - 'drag': function(args){ - me.api.asc_pluginEnableMouseEvents(args[1]=='start'); - }, - 'resize': function(args){ - me.api.asc_pluginEnableMouseEvents(args[1]=='start'); - }, - 'help': function(){ - help && window.open(help, '_blank'); - }, - 'header:click': function(type){ - me.api.asc_pluginButtonClick(type, plugin.get_Guid()); - } - }); - - me.pluginDlg.show(); } } !variation.get_InsideMode() && this.viewPlugins.openedPluginMode(plugin.get_Guid()); }, - onPluginClose: function(plugin) { + onPluginClose: function(plugin) { var isIframePlugin = false, guid = plugin.get_Guid(); - if (this.pluginDlg) + if (this.pluginDlg && this.pluginDlg.guid === guid) this.pluginDlg.close(); else { var panel = this.viewPlugins.pluginPanels[guid]; diff --git a/apps/common/main/lib/controller/ReviewChanges.js b/apps/common/main/lib/controller/ReviewChanges.js index 057a86f08b..10c2442b5a 100644 --- a/apps/common/main/lib/controller/ReviewChanges.js +++ b/apps/common/main/lib/controller/ReviewChanges.js @@ -106,13 +106,15 @@ define([ this.appPrefix = (filter && filter.length) ? filter.split(',')[0] : ''; this._state = { posx: -1000, posy: -1000, popoverVisible: false, previewMode: false, compareSettings: null, wsLock: false, wsProps: [], + displayMode: Asc.c_oAscDisplayModeInReview.Edit, disableEditing: false, // disable editing when disconnect/signed file/mail merge preview/review final or original/forms preview docProtection: { isReadOnly: false, isReviewOnly: false, isFormsOnly: false, isCommentsOnly: false - } + }, + sdkchange: null }; Common.NotificationCenter.on('reviewchanges:turn', this.onTurnPreview.bind(this)); @@ -237,6 +239,7 @@ define([ onApiShowChange: function (sdkchange, isShow) { var btnlock = true, changes; + this._state.sdkchange = sdkchange; if (this.appConfig.canReview && !(this.appConfig.isReviewOnly || this._state.docProtection.isReviewOnly)) { if (sdkchange && sdkchange.length>0) { changes = this.readSDKChange(sdkchange); @@ -251,7 +254,7 @@ define([ } if (this.getPopover()) { - if (!this.appConfig.reviewHoverMode && sdkchange && sdkchange.length>0 && isShow) { // show changes balloon only for current position, not selection + if (!this.appConfig.reviewHoverMode && (this._state.displayMode !== Asc.c_oAscDisplayModeInReview.Simple) && sdkchange && sdkchange.length>0 && isShow) { // show changes balloon only for current position, not selection var i = 0, posX = sdkchange[0].get_X(), posY = sdkchange[0].get_Y(), @@ -519,7 +522,7 @@ define([ uid : Common.UI.getId(), userid : item.get_UserId(), username : item.get_UserName(), - usercolor : (user) ? user.get('color') : null, + usercolor : (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(item.get_UserId() || item.get_UserName()), initials : Common.Utils.getUserInitials(AscCommon.UserInfoParser.getParsedName(item.get_UserName())), avatar : avatar, date : me.dateToLocaleTimeString(date), @@ -833,6 +836,7 @@ define([ type = Asc.c_oAscDisplayModeInReview.Simple; break; } + this._state.displayMode = type; this.api.asc_SetDisplayModeInReview(type); } this.disableEditing(mode == 'final' || mode == 'original'); @@ -841,6 +845,7 @@ define([ onChangeDisplayModeInReview: function(type) { this.disableEditing(type===Asc.c_oAscDisplayModeInReview.Final || type===Asc.c_oAscDisplayModeInReview.Original); + this._state.displayMode = type; var mode = 'markup'; switch (type) { case Asc.c_oAscDisplayModeInReview.Final: @@ -1000,7 +1005,13 @@ define([ Common.Utils.InternalSettings.set(me.appPrefix + "settings-review-hover-mode", val); me.appConfig.reviewHoverMode = val; + if (me.view && me.view.btnMailRecepients) { + Common.Utils.lockControls(Common.enumLock.mmergeLock, !!me._state.mmdisable, {array: [me.view.btnMailRecepients]}); + me.view.mnuMailRecepients.items[2].setVisible(me.appConfig.fileChoiceUrl || me.appConfig.canRequestSelectSpreadsheet || me.appConfig.canRequestMailMergeRecipients); + } + me.view && me.view.onAppReady(config); + me._state.sdkchange && me.onApiShowChange(me._state.sdkchange, true); }); }, @@ -1080,7 +1091,7 @@ define([ var users = this.userCollection; this.popoverChanges && this.popoverChanges.each(function (model) { var user = users.findOriginalUser(model.get('userid')); - model.set('usercolor', (user) ? user.get('color') : null); + model.set('usercolor', (user) ? user.get('color') : Common.UI.ExternalUsers.getColor(model.get('userid'))); user && user.get('avatar') && model.set('avatar', user.get('avatar')); }); }, @@ -1155,6 +1166,11 @@ define([ } }, + DisableMailMerge: function() { + this._state.mmdisable = true; + this.view && this.view.btnMailRecepients && Common.Utils.lockControls(Common.enumLock.mmergeLock, true, {array: [this.view.btnMailRecepients]}); + }, + textInserted: 'Inserted:', textDeleted: 'Deleted:', textParaInserted: 'Paragraph Inserted ', diff --git a/apps/common/main/lib/view/Chat.js b/apps/common/main/lib/view/Chat.js index 42981b589e..96bffc8f68 100644 --- a/apps/common/main/lib/view/Chat.js +++ b/apps/common/main/lib/view/Chat.js @@ -172,9 +172,6 @@ define([ if ((event.ctrlKey || event.metaKey) && !event.altKey) { this._onBtnAddMessage(event); } - } else - if (event.keyCode == Common.UI.Keys.ESC && !Common.UI.HintManager.isHintVisible()) { - this.hide(); } }, @@ -232,7 +229,7 @@ define([ var user = this.storeUsers.findOriginalUser(m.get('userid')), avatar = Common.UI.ExternalUsers.getImage(m.get('userid')); m.set({ - usercolor : user ? user.get('color') : null, + usercolor : user ? user.get('color') : Common.UI.ExternalUsers.getColor(m.get('userid')), avatar : avatar, initials : user ? user.get('initials') : Common.Utils.getUserInitials(m.get('parsedName')), message : this._pickLink(m.get('message')) diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index f5630f4547..2152728c54 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -432,7 +432,7 @@ define([ if (me.btnSearch) me.btnSearch.updateHint(me.tipSearch + Common.Utils.String.platformKey('Ctrl+F')); - var menuTemplate = _.template('
' + + var menuTemplate = _.template('
' + '<% if (!_.isEmpty(iconCls)) { %>' + '' + '<% } %>' + @@ -522,41 +522,42 @@ define([ },100); } + function onDocNameChanged(editcomplete) { + var me = this, + name = $labelDocName.val(); + name = name.trim(); + if ( !_.isEmpty(name) && me.cutDocName(me.documentCaption) !== name ) { + me.isSaveDocName =true; + if ( /[\t*\+:\"<>?|\\\\/]/gim.test(name) ) { + _.defer(function() { + Common.UI.error({ + msg: (new Common.Views.RenameDialog).txtInvalidName + "*+:\"<>?|\/" + , callback: function() { + _.delay(function() { + $labelDocName.focus(); + }, 50); + } + }); + }) + } else if (me.withoutExt) { + name = me.cutDocName(name); + me.fireEvent('rename', [name]); + name += me.fileExtention; + me.withoutExt = false; + me.setDocTitle(name); + editcomplete && Common.NotificationCenter.trigger('edit:complete', me); + } + } else { + editcomplete && Common.NotificationCenter.trigger('edit:complete', me); + } + } + function onDocNameKeyDown(e) { var me = this; - - var name = $labelDocName.val(); - if ( e.keyCode == Common.UI.Keys.RETURN ) { - name = name.trim(); - if ( !_.isEmpty(name) && me.cutDocName(me.documentCaption) !== name ) { - me.isSaveDocName =true; - if ( /[\t*\+:\"<>?|\\\\/]/gim.test(name) ) { - _.defer(function() { - Common.UI.error({ - msg: (new Common.Views.RenameDialog).txtInvalidName + "*+:\"<>?|\/" - , callback: function() { - _.delay(function() { - $labelDocName.focus(); - me.isSaveDocName =true; - }, 50); - } - }); - }) - } else - if(me.withoutExt) { - name = me.cutDocName(name); - me.fireEvent('rename', [name]); - name += me.fileExtention; - me.withoutExt = false; - me.setDocTitle(name); - Common.NotificationCenter.trigger('edit:complete', me); - } - - } else { - Common.NotificationCenter.trigger('edit:complete', me); - } - } else - if ( e.keyCode == Common.UI.Keys.ESC ) { + if ( e.keyCode === Common.UI.Keys.RETURN ) { + onDocNameChanged.call(me, true); + } else if ( e.keyCode === Common.UI.Keys.ESC ) { + me.setDocTitle(me.cutDocName(me.documentCaption)); Common.NotificationCenter.trigger('edit:complete', this); } else { _.delay(function(){ @@ -661,11 +662,15 @@ define([ $html = $(templateLeftBox); this.logo = $html.find('#header-logo'); - if (this.branding && this.branding.logo && (this.branding.logo.image || this.branding.logo.imageDark) && this.logo) { - var image = Common.UI.Themes.isDarkTheme() ? (this.branding.logo.imageDark || this.branding.logo.image) : (this.branding.logo.image || this.branding.logo.imageDark); - this.logo.html(''); - this.logo.css({'background-image': 'none', width: 'auto'}); - (this.branding.logo.url || this.branding.logo.url===undefined) && this.logo.addClass('link'); + if (this.branding && this.branding.logo && this.logo) { + if (this.branding.logo.visible===false) { + this.logo.addClass('hidden'); + } else if (this.branding.logo.image || this.branding.logo.imageDark) { + var image = Common.UI.Themes.isDarkTheme() ? (this.branding.logo.imageDark || this.branding.logo.image) : (this.branding.logo.image || this.branding.logo.imageDark); + this.logo.html(''); + this.logo.css({'background-image': 'none', width: 'auto'}); + (this.branding.logo.url || this.branding.logo.url===undefined) && this.logo.addClass('link'); + } } return $html; @@ -842,26 +847,23 @@ define([ }, setBranding: function (value) { - var element; - this.branding = value; - - if ( value ) { - if ( value.logo &&(value.logo.image || value.logo.imageDark)) { + var element = $('#header-logo'); + if ( value && value.logo && element) { + if (value.logo.visible===false) { + element.addClass('hidden'); + } else if (value.logo.image || value.logo.imageDark) { var image = Common.UI.Themes.isDarkTheme() ? (value.logo.imageDark || value.logo.image) : (value.logo.image || value.logo.imageDark); - element = $('#header-logo'); - if (element) { - element.html(''); - element.css({'background-image': 'none', width: 'auto'}); - (value.logo.url || value.logo.url===undefined) && element.addClass('link'); - } + element.html(''); + element.css({'background-image': 'none', width: 'auto'}); + (value.logo.url || value.logo.url===undefined) && element.addClass('link'); } } }, changeLogo: function () { var value = this.branding; - if ( value && value.logo && value.logo.image && value.logo.imageDark && (value.logo.image !== value.logo.imageDark)) { // change logo when image and imageDark are different + if ( value && value.logo && (value.logo.visible!==false) && value.logo.image && value.logo.imageDark && (value.logo.image !== value.logo.imageDark)) { // change logo when image and imageDark are different var image = Common.UI.Themes.isDarkTheme() ? (value.logo.imageDark || value.logo.image) : (value.logo.image || value.logo.imageDark); $('#header-logo img').attr('src', image); } @@ -872,8 +874,7 @@ define([ this.documentCaption = value; var idx = this.documentCaption.lastIndexOf('.'); - if (idx>0) - this.fileExtention = this.documentCaption.substring(idx); + this.fileExtention = idx>0 ? this.documentCaption.substring(idx) : ''; this.isModified && (value += '*'); this.readOnly && (value += ' (' + this.textReadOnly + ')'); if ( $labelDocName ) { @@ -940,6 +941,7 @@ define([ 'keydown': onDocNameKeyDown.bind(this), 'focus': onFocusDocName.bind(this), 'blur': function (e) { + !me.isSaveDocName && onDocNameChanged.call(me); me.imgCrypted && me.imgCrypted.toggleClass('hidden', false); Common.Utils.isGecko && (label[0].selectionStart = label[0].selectionEnd = 0); if(!me.isSaveDocName) { diff --git a/apps/common/main/lib/view/PluginDlg.js b/apps/common/main/lib/view/PluginDlg.js index 851257c881..0b01d26695 100644 --- a/apps/common/main/lib/view/PluginDlg.js +++ b/apps/common/main/lib/view/PluginDlg.js @@ -78,6 +78,7 @@ define([ this.url = options.url || ''; this.loader = (options.loader!==undefined) ? options.loader : true; this.frameId = options.frameId || 'plugin_iframe'; + this.guid = options.guid; Common.UI.Window.prototype.initialize.call(this, _options); }, diff --git a/apps/common/main/lib/view/ReviewChanges.js b/apps/common/main/lib/view/ReviewChanges.js index dab7de765d..99cd4243c9 100644 --- a/apps/common/main/lib/view/ReviewChanges.js +++ b/apps/common/main/lib/view/ReviewChanges.js @@ -112,6 +112,10 @@ define([ '
' + '' + '
' + + '
' + + '
' + + '' + + '
' + ''; function setEvents() { @@ -247,6 +251,11 @@ define([ me.fireEvent('comment:resolveComments', [item.value]); }); } + + this.mnuMailRecepients && this.mnuMailRecepients.on('item:click', function(menu, item, e) { + me.fireEvent('collaboration:mailmerge', [item.value]); + }); + Common.NotificationCenter.on('protect:doclock', function (e) { me.fireEvent('protect:update'); }); @@ -494,6 +503,28 @@ define([ }); this.lockedControls.push(this.btnCommentResolve); } + + if (this.appConfig.isEdit && this.appConfig.canCoAuthoring && this.appConfig.canUseMailMerge) { + this.btnMailRecepients = new Common.UI.Button({ + id: 'id-toolbar-btn-mailrecepients', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-mailmerge', + lock: [_set.mmergeLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.viewMode], + caption: this.txtMailMerge, + dataHint: '1', + dataHintDirection: 'bottom', + dataHintOffset: 'small', + menu: new Common.UI.Menu({ + items: [ + {caption: this.mniMMFromFile, value: 'file'}, + {caption: this.mniMMFromUrl, value: 'url'}, + {caption: this.mniMMFromStorage, value: 'storage'} + ] + }) + }); + this.mnuMailRecepients = this.btnMailRecepients.menu; + this.lockedControls.push(this.btnMailRecepients); + } }, render: function (el) { @@ -621,6 +652,7 @@ define([ me.btnSharing && me.btnSharing.updateHint(me.tipSharing); me.btnHistory && me.btnHistory.updateHint(me.tipHistory); me.btnChat && me.btnChat.updateHint(me.txtChat + Common.Utils.String.platformKey('Alt+Q', ' (' + (Common.Utils.isMac ? Common.Utils.String.textCtrl + '+' : '') + '{0})')); + me.btnMailRecepients && me.btnMailRecepients.updateHint(me.tipMailRecepients); if (me.btnCoAuthMode) { me.btnCoAuthMode.setMenu( new Common.UI.Menu({ @@ -700,6 +732,7 @@ define([ separator_review = !(config.canReview || config.canViewReview) ? me.$el.find('.separator.review') : '.separator.review', separator_compare = !(config.canReview && config.canFeatureComparison) ? me.$el.find('.separator.compare') : '.separator.compare', separator_chat = !me.btnChat ? me.$el.find('.separator.chat') : '.separator.chat', + separator_history = !me.btnHistory ? me.$el.find('.separator.history') : '.separator.history', separator_last; if (typeof separator_sharing == 'object') @@ -727,7 +760,12 @@ define([ else separator_last = separator_chat; - if (!me.btnHistory && separator_last) + if (typeof separator_history == 'object') + separator_history.hide().prev('.group').hide(); + else + separator_last = separator_history; + + if ((!me.btnMailRecepients || !Common.UI.LayoutManager.isElementVisible('toolbar-collaboration-mailmerge')) && separator_last) me.$el.find(separator_last).hide(); Common.NotificationCenter.trigger('tab:visible', 'review', (config.isEdit || config.canViewReview || me.canComments) && Common.UI.LayoutManager.isElementVisible('toolbar-collaboration')); @@ -755,6 +793,7 @@ define([ this.btnChat && this.btnChat.render(this.$el.find('#slot-btn-chat')); this.btnCommentRemove && this.btnCommentRemove.render(this.$el.find('#slot-comment-remove')); this.btnCommentResolve && this.btnCommentResolve.render(this.$el.find('#slot-comment-resolve')); + this.btnMailRecepients && this.btnMailRecepients.render(this.$el.find('#slot-btn-mailrecepients')); return this.$el; }, @@ -981,7 +1020,12 @@ define([ txtMarkupSimpleCap: 'Simple Markup', txtMarkupSimple: 'All changes {0}
Turn off balloons', txtEditing: 'Editing', - txtPreview: 'Preview' + txtPreview: 'Preview', + txtMailMerge: 'Mail Merge', + mniMMFromFile: 'From File', + mniMMFromUrl: 'From URL', + mniMMFromStorage: 'From Storage', + tipMailRecepients: 'Mail Merge' } }()), Common.Views.ReviewChanges || {})); diff --git a/apps/common/main/resources/img/toolbar/1.25x/big/btn-rem-comment.png b/apps/common/main/resources/img/toolbar/1.25x/big/btn-rem-comment.png index d071e03198..88fa57c613 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/big/btn-rem-comment.png and b/apps/common/main/resources/img/toolbar/1.25x/big/btn-rem-comment.png differ diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-cc-remove.png b/apps/common/main/resources/img/toolbar/1.25x/btn-cc-remove.png index 957f5c8c99..d136e8ed66 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-cc-remove.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-cc-remove.png differ diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-edit.png b/apps/common/main/resources/img/toolbar/1.25x/btn-edit.png index 8372f5f396..b7c181454d 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-edit.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-edit.png differ diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-ic-review.png b/apps/common/main/resources/img/toolbar/1.25x/btn-ic-review.png index d34a58047e..00631bb551 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-ic-review.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-ic-review.png differ diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-redo.png b/apps/common/main/resources/img/toolbar/1.25x/btn-redo.png index 479d5a0617..f79f69d42a 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-redo.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-redo.png differ diff --git a/apps/common/main/resources/img/toolbar/1.25x/btn-undo.png b/apps/common/main/resources/img/toolbar/1.25x/btn-undo.png index 6c888c58a5..e65732c91b 100644 Binary files a/apps/common/main/resources/img/toolbar/1.25x/btn-undo.png and b/apps/common/main/resources/img/toolbar/1.25x/btn-undo.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/big/btn-rem-comment.png b/apps/common/main/resources/img/toolbar/1.5x/big/btn-rem-comment.png index 11ec5e2fe5..a1b64dbd65 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/big/btn-rem-comment.png and b/apps/common/main/resources/img/toolbar/1.5x/big/btn-rem-comment.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-cc-remove.png b/apps/common/main/resources/img/toolbar/1.5x/btn-cc-remove.png index 02231d979b..f0eb1765c8 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-cc-remove.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-cc-remove.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-edit.png b/apps/common/main/resources/img/toolbar/1.5x/btn-edit.png index eb0ffbe8c6..79e2f0f4d3 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-edit.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-edit.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-ic-review.png b/apps/common/main/resources/img/toolbar/1.5x/btn-ic-review.png index eee995d965..55c5fa7cfd 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-ic-review.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-ic-review.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-redo.png b/apps/common/main/resources/img/toolbar/1.5x/btn-redo.png index fa1abb28aa..d47d3c0a54 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-redo.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-redo.png differ diff --git a/apps/common/main/resources/img/toolbar/1.5x/btn-undo.png b/apps/common/main/resources/img/toolbar/1.5x/btn-undo.png index 5c8c1e0b6c..045fb01833 100644 Binary files a/apps/common/main/resources/img/toolbar/1.5x/btn-undo.png and b/apps/common/main/resources/img/toolbar/1.5x/btn-undo.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/big/btn-rem-comment.png b/apps/common/main/resources/img/toolbar/1.75x/big/btn-rem-comment.png index 043f8f416b..8794e22a8e 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/big/btn-rem-comment.png and b/apps/common/main/resources/img/toolbar/1.75x/big/btn-rem-comment.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-cc-remove.png b/apps/common/main/resources/img/toolbar/1.75x/btn-cc-remove.png index d071e03198..88fa57c613 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-cc-remove.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-cc-remove.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-edit.png b/apps/common/main/resources/img/toolbar/1.75x/btn-edit.png index 7bdadaca27..54de4e7f4b 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-edit.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-edit.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-ic-review.png b/apps/common/main/resources/img/toolbar/1.75x/btn-ic-review.png index 109531dac8..4c73a7b7af 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-ic-review.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-ic-review.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-redo.png b/apps/common/main/resources/img/toolbar/1.75x/btn-redo.png index b3ec282ae6..74298bd91d 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-redo.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-redo.png differ diff --git a/apps/common/main/resources/img/toolbar/1.75x/btn-undo.png b/apps/common/main/resources/img/toolbar/1.75x/btn-undo.png index ff00236567..bd317e8b60 100644 Binary files a/apps/common/main/resources/img/toolbar/1.75x/btn-undo.png and b/apps/common/main/resources/img/toolbar/1.75x/btn-undo.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/big/btn-rem-comment.png b/apps/common/main/resources/img/toolbar/1x/big/btn-rem-comment.png index 68b1ceace3..6af1877168 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/big/btn-rem-comment.png and b/apps/common/main/resources/img/toolbar/1x/big/btn-rem-comment.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/btn-cc-remove.png b/apps/common/main/resources/img/toolbar/1x/btn-cc-remove.png index 3349fe0afb..e459f08512 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/btn-cc-remove.png and b/apps/common/main/resources/img/toolbar/1x/btn-cc-remove.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/btn-edit.png b/apps/common/main/resources/img/toolbar/1x/btn-edit.png index 7d6a2635fb..3c1f529084 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/btn-edit.png and b/apps/common/main/resources/img/toolbar/1x/btn-edit.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/btn-ic-review.png b/apps/common/main/resources/img/toolbar/1x/btn-ic-review.png index 278d2f8ea8..4f8f27f9a1 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/btn-ic-review.png and b/apps/common/main/resources/img/toolbar/1x/btn-ic-review.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/btn-redo.png b/apps/common/main/resources/img/toolbar/1x/btn-redo.png index 123006ab7c..e7a3e6a4b3 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/btn-redo.png and b/apps/common/main/resources/img/toolbar/1x/btn-redo.png differ diff --git a/apps/common/main/resources/img/toolbar/1x/btn-undo.png b/apps/common/main/resources/img/toolbar/1x/btn-undo.png index 082afa4966..7f401be72a 100644 Binary files a/apps/common/main/resources/img/toolbar/1x/btn-undo.png and b/apps/common/main/resources/img/toolbar/1x/btn-undo.png differ diff --git a/apps/common/main/resources/img/toolbar/2.5x/big/btn-rem-comment.svg b/apps/common/main/resources/img/toolbar/2.5x/big/btn-rem-comment.svg index 779742aae2..a4ebb52884 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/big/btn-rem-comment.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/big/btn-rem-comment.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/common/main/resources/img/toolbar/2.5x/btn-cc-remove.svg b/apps/common/main/resources/img/toolbar/2.5x/btn-cc-remove.svg index 0bb6562db5..fe24612c76 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/btn-cc-remove.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/btn-cc-remove.svg @@ -1,3 +1,3 @@ - + diff --git a/apps/common/main/resources/img/toolbar/2.5x/btn-edit.svg b/apps/common/main/resources/img/toolbar/2.5x/btn-edit.svg index e51a63e7da..fa7bbee60f 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/btn-edit.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/btn-edit.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/common/main/resources/img/toolbar/2.5x/btn-ic-review.svg b/apps/common/main/resources/img/toolbar/2.5x/btn-ic-review.svg index 2832d16bc3..a154b46a4a 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/btn-ic-review.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/btn-ic-review.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/common/main/resources/img/toolbar/2.5x/btn-redo.svg b/apps/common/main/resources/img/toolbar/2.5x/btn-redo.svg index e6e422133a..07b4ee13ca 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/btn-redo.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/btn-redo.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/common/main/resources/img/toolbar/2.5x/btn-undo.svg b/apps/common/main/resources/img/toolbar/2.5x/btn-undo.svg index b18129dcc1..d7ae6ede1a 100644 --- a/apps/common/main/resources/img/toolbar/2.5x/btn-undo.svg +++ b/apps/common/main/resources/img/toolbar/2.5x/btn-undo.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/common/main/resources/img/toolbar/2x/big/btn-rem-comment.png b/apps/common/main/resources/img/toolbar/2x/big/btn-rem-comment.png index d5a19e74e2..aa2b45b2b8 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/big/btn-rem-comment.png and b/apps/common/main/resources/img/toolbar/2x/big/btn-rem-comment.png differ diff --git a/apps/common/main/resources/img/toolbar/2x/btn-cc-remove.png b/apps/common/main/resources/img/toolbar/2x/btn-cc-remove.png index 52c78580fb..1f5bd0e68e 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/btn-cc-remove.png and b/apps/common/main/resources/img/toolbar/2x/btn-cc-remove.png differ diff --git a/apps/common/main/resources/img/toolbar/2x/btn-edit.png b/apps/common/main/resources/img/toolbar/2x/btn-edit.png index 36eb06bcd1..8f4def218c 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/btn-edit.png and b/apps/common/main/resources/img/toolbar/2x/btn-edit.png differ diff --git a/apps/common/main/resources/img/toolbar/2x/btn-ic-review.png b/apps/common/main/resources/img/toolbar/2x/btn-ic-review.png index d597264c30..0aba5da177 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/btn-ic-review.png and b/apps/common/main/resources/img/toolbar/2x/btn-ic-review.png differ diff --git a/apps/common/main/resources/img/toolbar/2x/btn-redo.png b/apps/common/main/resources/img/toolbar/2x/btn-redo.png index beb4005364..88928f630b 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/btn-redo.png and b/apps/common/main/resources/img/toolbar/2x/btn-redo.png differ diff --git a/apps/common/main/resources/img/toolbar/2x/btn-undo.png b/apps/common/main/resources/img/toolbar/2x/btn-undo.png index ef7912fad8..1874a9cdde 100644 Binary files a/apps/common/main/resources/img/toolbar/2x/btn-undo.png and b/apps/common/main/resources/img/toolbar/2x/btn-undo.png differ diff --git a/apps/common/main/resources/less/asc-mixins.less b/apps/common/main/resources/less/asc-mixins.less index 1ae61b6c08..cedc33457b 100644 --- a/apps/common/main/resources/less/asc-mixins.less +++ b/apps/common/main/resources/less/asc-mixins.less @@ -43,6 +43,10 @@ font-size: @value; } +.font-sans-serif { + font-family: @font-family-sans-serif; +} + // User select .user-select(@select: none) { -webkit-user-select: @select; @@ -816,11 +820,15 @@ } .vertical-align-baseline { - vertical-align: baseline; + vertical-align: baseline !important; .ie & { - vertical-align: middle; + vertical-align: middle !important; } } + +.vertical-align-middle { + vertical-align: middle; +} //.adaptive-solid-border(@width, @color, @borderside: all) { // @lb-border: if((@borderside = all), border, e('border-@{borderside}')); // @lb-border-width: if((@borderside = all), border-width, e('border-@{borderside}-width')); diff --git a/apps/common/main/resources/less/common.less b/apps/common/main/resources/less/common.less index 2761ca44e4..b172bc5c5f 100644 --- a/apps/common/main/resources/less/common.less +++ b/apps/common/main/resources/less/common.less @@ -318,6 +318,10 @@ textarea { color: @text-tertiary-ie; } .placeholder(); + + .rtl & { + direction: rtl; + } } //.btn-edit-table, diff --git a/apps/common/main/resources/less/header.less b/apps/common/main/resources/less/header.less index 4b4d6ccb11..fd5e028c57 100644 --- a/apps/common/main/resources/less/header.less +++ b/apps/common/main/resources/less/header.less @@ -121,6 +121,9 @@ border-radius: 1px; cursor: text; } + .rtl & { + direction: rtl; + } } #rib-save-status { @@ -577,7 +580,9 @@ border-radius: 1px; cursor: text; } - + .rtl & { + direction: rtl; + } } .lr-separator { diff --git a/apps/common/main/resources/less/input.less b/apps/common/main/resources/less/input.less index 2e3f3a10dd..ad89f1459f 100644 --- a/apps/common/main/resources/less/input.less +++ b/apps/common/main/resources/less/input.less @@ -73,6 +73,12 @@ position: relative; } + input { + .rtl & { + direction: rtl; + } + } + &.form-control:focus, .form-control:focus { //border-color: @border-control-focus; diff --git a/apps/common/main/resources/less/searchdialog.less b/apps/common/main/resources/less/searchdialog.less index 223860ee5a..65436472f4 100644 --- a/apps/common/main/resources/less/searchdialog.less +++ b/apps/common/main/resources/less/searchdialog.less @@ -93,6 +93,9 @@ input[type=text] { width: 192px; .padding-x(3px, 25px); + .rtl & { + direction: rtl; + } } #search-bar-results { position: absolute; diff --git a/apps/common/main/resources/less/spinner.less b/apps/common/main/resources/less/spinner.less index d48f4ee050..5eb49b41a5 100644 --- a/apps/common/main/resources/less/spinner.less +++ b/apps/common/main/resources/less/spinner.less @@ -7,6 +7,10 @@ height: @spin-height; .text-align-right(); .padding-x(1px, @trigger-width + 2px); + + .rtl & { + direction: rtl; + } } button { diff --git a/apps/common/mobile/resources/less/common-ios.less b/apps/common/mobile/resources/less/common-ios.less index bc94ea181e..afd5371c30 100644 --- a/apps/common/mobile/resources/less/common-ios.less +++ b/apps/common/mobile/resources/less/common-ios.less @@ -70,20 +70,20 @@ } .navbar, .navbar-bg, .subnavbar { + background-color: var(--f7-navbar-bg-color); + a.btn-doc-back { width: 22px; } - background-color: var(--f7-navbar-bg-color); + .title { - font-weight: 600; color: @text-normal; - //line-height: 17px; - //max-height: 34px; - //overflow: hidden; } + .navbar-inner, .subnavbar-inner { z-index: auto; } + .sheet-close { width: 44px; height: 44px; @@ -96,6 +96,11 @@ .icon-back { color: @brandColor; } + + .title { + font-size: 15px; + font-weight: normal; + } } .popover__titled { @@ -183,10 +188,6 @@ } } - .popover-arrow:after { - background: rgba(0, 0, 0, 0.9); - } - .list { .item-content { .color-preview { @@ -476,7 +477,7 @@ line-height: 18px; right: 26px; color: @text-tertiary; - top: 5px; + top: 4.5px; z-index: 100; } } diff --git a/apps/common/mobile/resources/less/common-material.less b/apps/common/mobile/resources/less/common-material.less index dc04b451c3..f1386fbc3a 100644 --- a/apps/common/mobile/resources/less/common-material.less +++ b/apps/common/mobile/resources/less/common-material.less @@ -434,6 +434,11 @@ } } + .subnavbar .title { + font-size: 14px; + font-weight: normal; + } + .searchbar { input { box-sizing: border-box; diff --git a/apps/common/mobile/resources/less/common-rtl.less b/apps/common/mobile/resources/less/common-rtl.less index 0360be5966..46893aef55 100644 --- a/apps/common/mobile/resources/less/common-rtl.less +++ b/apps/common/mobile/resources/less/common-rtl.less @@ -1,9 +1,16 @@ [dir="rtl"].device-android { .app-layout { - .searchbar input { - padding-right: 24px; - padding-left: 36px; - background-position: right; + .searchbar { + input { + padding-right: 24px; + padding-left: 36px; + background-position: right; + } + + .number-search-results { + right: auto; + left: 26px; + } } } @@ -47,6 +54,11 @@ } } + .searchbar .number-search-results { + right: auto; + left: 26px; + } + .popover { li:last-child, li:first-child { .segmented a:first-child { diff --git a/apps/common/mobile/resources/less/common.less b/apps/common/mobile/resources/less/common.less index c0726b87a3..ea0e96bec5 100644 --- a/apps/common/mobile/resources/less/common.less +++ b/apps/common/mobile/resources/less/common.less @@ -52,13 +52,14 @@ .subnavbar { .subnavbar-inner { padding: 0; + .title { - //white-space: nowrap; + white-space: nowrap; overflow: hidden; - text-overflow: initial; margin: 0; padding: 0; flex-shrink: initial; + text-overflow: ellipsis; } } .icon-back { diff --git a/apps/common/mobile/resources/less/material/icons.less b/apps/common/mobile/resources/less/material/icons.less index 92da04b216..c513fc5b56 100644 --- a/apps/common/mobile/resources/less/material/icons.less +++ b/apps/common/mobile/resources/less/material/icons.less @@ -77,6 +77,11 @@ height: 24px; .encoded-svg-mask('', @toolbar-icons); } + &.icon-return { + width: 24px; + height: 24px; + .encoded-svg-mask('', @toolbar-icons); + } } } } diff --git a/apps/documenteditor/embed/index.html b/apps/documenteditor/embed/index.html index 0d5a9e1833..8325c4c732 100644 --- a/apps/documenteditor/embed/index.html +++ b/apps/documenteditor/embed/index.html @@ -196,6 +196,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, isForm = params["isForm"]; @@ -203,13 +204,17 @@ window.parentOrigin = params["parentOrigin"]; var elem = document.querySelector('.loading-logo'); - if (elem && logo) { - elem.style.backgroundImage= 'none'; - elem.style.width = 'auto'; - elem.style.height = 'auto'; - var img = document.querySelector('.loading-logo img'); - img && img.setAttribute('src', logo); - img.style.opacity = 1; + if (elem) { + if (hideLogo) { + elem.style.display = 'none'; + } else if (logo) { + elem.style.backgroundImage= 'none'; + elem.style.width = 'auto'; + elem.style.height = 'auto'; + var img = document.querySelector('.loading-logo img'); + img && img.setAttribute('src', logo); + img.style.opacity = 1; + } } diff --git a/apps/documenteditor/embed/index.html.deploy b/apps/documenteditor/embed/index.html.deploy index 1f9624b66c..4a6461957e 100644 --- a/apps/documenteditor/embed/index.html.deploy +++ b/apps/documenteditor/embed/index.html.deploy @@ -188,20 +188,25 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, isForm = params["isForm"]; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; var elem = document.querySelector('.loading-logo'); - if (elem && logo) { - elem.style.backgroundImage= 'none'; - elem.style.width = 'auto'; - elem.style.height = 'auto'; - var img = document.querySelector('.loading-logo img'); - img && img.setAttribute('src', logo); - img.style.opacity = 1; - } + if (elem) { + if (hideLogo) { + elem.style.display = 'none'; + } else if (logo) { + elem.style.backgroundImage= 'none'; + elem.style.width = 'auto'; + elem.style.height = 'auto'; + var img = document.querySelector('.loading-logo img'); + img && img.setAttribute('src', logo); + img.style.opacity = 1; + } + }
diff --git a/apps/documenteditor/embed/js/ApplicationController.js b/apps/documenteditor/embed/js/ApplicationController.js index 2e03283b57..33da757178 100644 --- a/apps/documenteditor/embed/js/ApplicationController.js +++ b/apps/documenteditor/embed/js/ApplicationController.js @@ -689,9 +689,9 @@ DE.ApplicationController = new(function(){ _right_width = $parent.next().outerWidth(); if ( _left_width < _right_width ) - $parent.css('padding-left', _right_width - _left_width); + $parent.css('padding-left', parseFloat($parent.css('padding-left')) + _right_width - _left_width); else - $parent.css('padding-right', _left_width - _right_width); + $parent.css('padding-right', parseFloat($parent.css('padding-right')) + _left_width - _right_width); onLongActionBegin(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); @@ -890,7 +890,11 @@ DE.ApplicationController = new(function(){ Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny); return; } - if (api) api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true)); + if (api) { + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.DOCX, true); + options.asc_setIsSaveAs(true); + api.asc_DownloadAs(options); + } } function onRunAutostartMacroses() { @@ -905,6 +909,11 @@ DE.ApplicationController = new(function(){ function setBranding(value) { if ( value && value.logo) { var logo = $('#header-logo'); + if (value.logo.visible===false) { + logo.addClass('hidden'); + return; + } + if (value.logo.image || value.logo.imageEmbedded) { logo.html(''); logo.css({'background-image': 'none', width: 'auto', height: 'auto'}); diff --git a/apps/documenteditor/embed/locale/fr.json b/apps/documenteditor/embed/locale/fr.json index 950a2262ed..14f6b3f599 100644 --- a/apps/documenteditor/embed/locale/fr.json +++ b/apps/documenteditor/embed/locale/fr.json @@ -60,6 +60,6 @@ "DE.ApplicationView.txtFileLocation": "Ouvrir l'emplacement du fichier", "DE.ApplicationView.txtFullScreen": "Plein écran", "DE.ApplicationView.txtPrint": "Imprimer", - "DE.ApplicationView.txtSearch": "Recherche", + "DE.ApplicationView.txtSearch": "Rechercher", "DE.ApplicationView.txtShare": "Partager" } \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/pt-pt.json b/apps/documenteditor/embed/locale/pt-pt.json index d592a0d2b4..1e910675bf 100644 --- a/apps/documenteditor/embed/locale/pt-pt.json +++ b/apps/documenteditor/embed/locale/pt-pt.json @@ -54,11 +54,11 @@ "DE.ApplicationController.warnLicenseBefore": "Licença não ativa. Entre em contacto com o seu administrador.", "DE.ApplicationController.warnLicenseExp": "A sua licença caducou. Atualize a sua licença e recarregue a página.", "DE.ApplicationView.txtDownload": "Descarregar", - "DE.ApplicationView.txtDownloadDocx": "Descarregar como docx", - "DE.ApplicationView.txtDownloadPdf": "Descarregar como pdf", + "DE.ApplicationView.txtDownloadDocx": "Descarregar como DOCX", + "DE.ApplicationView.txtDownloadPdf": "Descarregar como PDF", "DE.ApplicationView.txtEmbed": "Incorporar", "DE.ApplicationView.txtFileLocation": "Abrir localização do ficheiro", - "DE.ApplicationView.txtFullScreen": "Ecrã completo", + "DE.ApplicationView.txtFullScreen": "Ecrã inteiro", "DE.ApplicationView.txtPrint": "Imprimir", "DE.ApplicationView.txtSearch": "Pesquisar", "DE.ApplicationView.txtShare": "Partilhar" diff --git a/apps/documenteditor/embed/locale/si.json b/apps/documenteditor/embed/locale/si.json index f7d4bb29fb..3ae04d500e 100644 --- a/apps/documenteditor/embed/locale/si.json +++ b/apps/documenteditor/embed/locale/si.json @@ -38,7 +38,7 @@ "DE.ApplicationController.textGotIt": "තේරුණා", "DE.ApplicationController.textGuest": "අමුත්තා", "DE.ApplicationController.textLoadingDocument": "ලේඛනය පූරණය වෙමින්", - "DE.ApplicationController.textNext": "ඊලඟ ක්ෂේත්‍රය", + "DE.ApplicationController.textNext": "ඊළඟ ක්‍ෂේත්‍රය", "DE.ApplicationController.textOf": "හි", "DE.ApplicationController.textRequired": "ආකෘතිපත්‍රය යැවීමට වුවමනා සියළුම ක්‍ෂේත්‍ර පුරවන්න.", "DE.ApplicationController.textSubmit": "යොමන්න", @@ -54,7 +54,7 @@ "DE.ApplicationController.warnLicenseBefore": "බලපත්‍රය සක්‍රිය නැත. කරුණාකර ඔබගේ පරිපාලක අමතන්න.", "DE.ApplicationController.warnLicenseExp": "බලපත්‍රය කල් ඉකුත් වී ඇත. ඔබගේ බලපත්‍රය යාවත්කාලීන කර පිටුව නැවුම් කරන්න.", "DE.ApplicationView.txtDownload": "බාගන්න", - "DE.ApplicationView.txtDownloadDocx": "docx ලෙස බාගන්න", + "DE.ApplicationView.txtDownloadDocx": "DOCX ලෙස බාගන්න", "DE.ApplicationView.txtDownloadPdf": "පීඩීඑෆ් ලෙස බාගන්න", "DE.ApplicationView.txtEmbed": "එබ්බවූ", "DE.ApplicationView.txtFileLocation": "ගොනුවේ ස්ථානය අරින්න", diff --git a/apps/documenteditor/embed/locale/vi.json b/apps/documenteditor/embed/locale/vi.json index ad3225af92..6c54f4cf4a 100644 --- a/apps/documenteditor/embed/locale/vi.json +++ b/apps/documenteditor/embed/locale/vi.json @@ -9,14 +9,25 @@ "DE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", "DE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", "DE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "DE.ApplicationController.errorInconsistentExt": "Đã xảy ra lỗi khi mở tệp.
Nội dung tệp không khớp với phần mở rộng tệp.", + "DE.ApplicationController.errorInconsistentExtDocx": "Đã xảy ra lỗi khi mở tệp.
Nội dung tệp tương ứng với tài liệu văn bản (ví dụ: docx), nhưng tệp có phần mở rộng không nhất quán: %1.", + "DE.ApplicationController.errorInconsistentExtPdf": "Xảy ra lỗi khi mở tệp.
Nội dung tệp tương ứng với một trong các định dạng sau: pdf/djvu/xps/oxps, nhưng tệp có phần mở rộng không nhất quán: %1.", + "DE.ApplicationController.errorInconsistentExtPptx": "Đã xảy ra lỗi khi mở tệp.
Nội dung tệp tương ứng với bản trình bày (ví dụ: pptx), nhưng tệp có phần mở rộng không nhất quán: %1.", + "DE.ApplicationController.errorInconsistentExtXlsx": "Đã xảy ra lỗi khi mở tệp.
Nội dung tệp tương ứng với bảng tính (ví dụ: xlsx), nhưng tệp có phần mở rộng không nhất quán: %1.", "DE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", "DE.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "DE.ApplicationController.openErrorText": "Xảy ra lỗi khi mở tệp", + "DE.ApplicationController.textAnonymous": "Ẩn danh", "DE.ApplicationController.textLoadingDocument": "Đang tải tài liệu", "DE.ApplicationController.textOf": "trên", + "DE.ApplicationController.textSubmited": "Đã gửi biểu mẫu thành công
Bấm để đóng hộp thoại", "DE.ApplicationController.txtClose": "Đóng", + "DE.ApplicationController.txtEmpty": "(Trống)", "DE.ApplicationController.unknownErrorText": "Lỗi không xác định.", "DE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", "DE.ApplicationView.txtDownload": "Tải về", + "DE.ApplicationView.txtDownloadDocx": "Tải xuống như DOCX", + "DE.ApplicationView.txtDownloadPdf": "Tải xuống như PDF", "DE.ApplicationView.txtFullScreen": "Toàn màn hình", "DE.ApplicationView.txtShare": "Chia sẻ" } \ No newline at end of file diff --git a/apps/documenteditor/embed/locale/zh-tw.json b/apps/documenteditor/embed/locale/zh-tw.json index 5575ea10bc..aa4b0b035a 100644 --- a/apps/documenteditor/embed/locale/zh-tw.json +++ b/apps/documenteditor/embed/locale/zh-tw.json @@ -11,7 +11,7 @@ "DE.ApplicationController.downloadErrorText": "下載失敗。", "DE.ApplicationController.downloadTextText": "正在下載文件...", "DE.ApplicationController.errorAccessDeny": "您正試圖執行您無權限的操作。
請聯繫您的文件伺服器管理員。", - "DE.ApplicationController.errorDefaultMessage": "錯誤編號:%1", + "DE.ApplicationController.errorDefaultMessage": "錯誤碼:%1", "DE.ApplicationController.errorEditingDownloadas": "在處理文件時發生錯誤。
使用「另存為...」選項將檔案備份保存到您的電腦硬碟。", "DE.ApplicationController.errorFilePassProtect": "該文件已被密碼保護,無法打開。", "DE.ApplicationController.errorFileSizeExceed": "文件大小超出了伺服器設置的限制。
詳細請聯繫管理員。", @@ -53,6 +53,6 @@ "DE.ApplicationView.txtFileLocation": "打開檔案位置", "DE.ApplicationView.txtFullScreen": "全螢幕", "DE.ApplicationView.txtPrint": "列印", - "DE.ApplicationView.txtSearch": "搜索", + "DE.ApplicationView.txtSearch": "搜尋", "DE.ApplicationView.txtShare": "分享" } \ No newline at end of file diff --git a/apps/documenteditor/forms/locale/fr.json b/apps/documenteditor/forms/locale/fr.json index 7da28a4fb5..30f569f75d 100644 --- a/apps/documenteditor/forms/locale/fr.json +++ b/apps/documenteditor/forms/locale/fr.json @@ -184,7 +184,7 @@ "DE.Views.ApplicationView.txtFileLocation": "Ouvrir l'emplacement du fichier", "DE.Views.ApplicationView.txtFullScreen": "Plein écran", "DE.Views.ApplicationView.txtPrint": "Imprimer", - "DE.Views.ApplicationView.txtSearch": "Recherche", + "DE.Views.ApplicationView.txtSearch": "Rechercher", "DE.Views.ApplicationView.txtShare": "Partager", "DE.Views.ApplicationView.txtTheme": "Thème d’interface" } \ No newline at end of file diff --git a/apps/documenteditor/forms/locale/hu.json b/apps/documenteditor/forms/locale/hu.json index 9d861c453f..0e4a978181 100644 --- a/apps/documenteditor/forms/locale/hu.json +++ b/apps/documenteditor/forms/locale/hu.json @@ -53,7 +53,7 @@ "Common.UI.Window.yesButtonText": "Igen", "Common.Views.CopyWarningDialog.textDontShow": "Ne mutassa újra ezt az üzenetet", "Common.Views.CopyWarningDialog.textMsg": "A helyi menüvel végzett másolási, kivágási és beillesztési műveletek csak ezen a szerkesztőlapon hajthatók végre.

A szerkesztő lapon kívüli alkalmazásokba vagy alkalmazásokból történő másoláshoz vagy beillesztéshez használja a következő billentyűkombinációkat:", - "Common.Views.CopyWarningDialog.textTitle": "Másolás, kivágás és beillesztés", + "Common.Views.CopyWarningDialog.textTitle": "Másolás, kivágás és beillesztés műveletek", "Common.Views.CopyWarningDialog.textToCopy": "Másolásra", "Common.Views.CopyWarningDialog.textToCut": "Kivágásra", "Common.Views.CopyWarningDialog.textToPaste": "Beillesztésre", @@ -115,7 +115,7 @@ "DE.Controllers.ApplicationController.errorUserDrop": "A dokumentum jelenleg nem elérhető.", "DE.Controllers.ApplicationController.errorViewerDisconnect": "A kapcsolat megszakadt. Továbbra is megtekinthető a dokumentum,
de a kapcsolat helyreálltáig és az oldal újratöltéséig nem lehet letölteni.", "DE.Controllers.ApplicationController.mniImageFromFile": "Kép fájlból", - "DE.Controllers.ApplicationController.mniImageFromStorage": "Kép a tárolóból", + "DE.Controllers.ApplicationController.mniImageFromStorage": "Kép tárhelyből", "DE.Controllers.ApplicationController.mniImageFromUrl": "Kép hivatkozásból", "DE.Controllers.ApplicationController.notcriticalErrorTitle": "Figyelmeztetés", "DE.Controllers.ApplicationController.openErrorText": "Hiba történt a fájl megnyitásakor.", diff --git a/apps/documenteditor/forms/locale/pt-pt.json b/apps/documenteditor/forms/locale/pt-pt.json index 4b3035a63d..d77b60159d 100644 --- a/apps/documenteditor/forms/locale/pt-pt.json +++ b/apps/documenteditor/forms/locale/pt-pt.json @@ -178,11 +178,11 @@ "DE.Views.ApplicationView.tipUndo": "Desfazer", "DE.Views.ApplicationView.txtDarkMode": "Modo escuro", "DE.Views.ApplicationView.txtDownload": "Descarregar", - "DE.Views.ApplicationView.txtDownloadDocx": "Descarregar como docx", - "DE.Views.ApplicationView.txtDownloadPdf": "Descarregar como pdf", + "DE.Views.ApplicationView.txtDownloadDocx": "Descarregar como DOCX", + "DE.Views.ApplicationView.txtDownloadPdf": "Descarregar como PDF", "DE.Views.ApplicationView.txtEmbed": "Incorporar", "DE.Views.ApplicationView.txtFileLocation": "Abrir localização do ficheiro", - "DE.Views.ApplicationView.txtFullScreen": "Ecrã completo", + "DE.Views.ApplicationView.txtFullScreen": "Ecrã inteiro", "DE.Views.ApplicationView.txtPrint": "Imprimir", "DE.Views.ApplicationView.txtSearch": "Pesquisar", "DE.Views.ApplicationView.txtShare": "Partilhar", diff --git a/apps/documenteditor/forms/locale/si.json b/apps/documenteditor/forms/locale/si.json index fb71966ee5..eb27a1f4f8 100644 --- a/apps/documenteditor/forms/locale/si.json +++ b/apps/documenteditor/forms/locale/si.json @@ -114,8 +114,8 @@ "DE.Controllers.ApplicationController.errorUpdateVersionOnDisconnect": "සම්බන්ධතාව ප්‍රත්‍යර්පණය වී තිබෙන අතර ගොනුවේ අනුවාදය වෙනස්ව ඇත.
දිගටම වැඩ කිරීමට පෙර කිසිවක් අහිමි නොවීමට ඔබ ගොනුව බාගැනීම හෝ එහි අන්තර්ගතය පිටපත් කරගැනීම සිදුකළ යුතුය, ඉන්පසු මෙම පිටුව නැවත පූරණය කරන්න.", "DE.Controllers.ApplicationController.errorUserDrop": "ගොනුවට මේ මොහොතේ ප්‍රවේශ වීමට නොහැකිය.", "DE.Controllers.ApplicationController.errorViewerDisconnect": "සම්බන්ධතාවය නැති විය. ඔබට තවමත් ලේඛනය දැකීමට හැකිය,
නමුත් සම්බන්ධතාවය ප්‍රත්‍යර්පණය වී පිටුව යළි පූරණය කරන තෙක් බාගැනීමට හෝ මුද්‍රණය කිරීමට නොහැකිය.", - "DE.Controllers.ApplicationController.mniImageFromFile": "ගොනුවකින් අනුරුවක්", - "DE.Controllers.ApplicationController.mniImageFromStorage": "ආයචනයෙන් අනුරුව", + "DE.Controllers.ApplicationController.mniImageFromFile": "ගොනුවකින් රූපයක්", + "DE.Controllers.ApplicationController.mniImageFromStorage": "ආයචනයෙන් රූපයක්", "DE.Controllers.ApplicationController.mniImageFromUrl": "ඒ.ස.නි. වෙතින් අනුරුවක්", "DE.Controllers.ApplicationController.notcriticalErrorTitle": "අවවාදයයි", "DE.Controllers.ApplicationController.openErrorText": "ගොනුව විවෘත කිරීමේදී දෝෂයක් සිදු විය.", @@ -167,9 +167,9 @@ "DE.Views.ApplicationView.textCut": "කපන්න", "DE.Views.ApplicationView.textFitToPage": "පිටුවට ගළපන්න", "DE.Views.ApplicationView.textFitToWidth": "පළලට ගළපන්න", - "DE.Views.ApplicationView.textNext": "ඊලඟ ක්ෂේත්‍රය", + "DE.Views.ApplicationView.textNext": "ඊළඟ ක්‍ෂේත්‍රය", "DE.Views.ApplicationView.textPaste": "අලවන්න", - "DE.Views.ApplicationView.textPrintSel": "මුද්‍රණ තේරීම", + "DE.Views.ApplicationView.textPrintSel": "තේරීම මුද්‍රණය", "DE.Views.ApplicationView.textRedo": "පසුසේ", "DE.Views.ApplicationView.textSubmit": "යොමන්න", "DE.Views.ApplicationView.textUndo": "පෙරසේ", @@ -178,7 +178,7 @@ "DE.Views.ApplicationView.tipUndo": "පෙරසේ", "DE.Views.ApplicationView.txtDarkMode": "අඳුරු ප්‍රකාරය", "DE.Views.ApplicationView.txtDownload": "බාගන්න", - "DE.Views.ApplicationView.txtDownloadDocx": "docx ලෙස බාගන්න", + "DE.Views.ApplicationView.txtDownloadDocx": "DOCX ලෙස බාගන්න", "DE.Views.ApplicationView.txtDownloadPdf": "පීඩීඑෆ් ලෙස බාගන්න", "DE.Views.ApplicationView.txtEmbed": "කාවැද්දූ", "DE.Views.ApplicationView.txtFileLocation": "ගොනුවේ ස්ථානය අරින්න", diff --git a/apps/documenteditor/forms/locale/vi.json b/apps/documenteditor/forms/locale/vi.json index 3f5260ff9c..8f19fbb440 100644 --- a/apps/documenteditor/forms/locale/vi.json +++ b/apps/documenteditor/forms/locale/vi.json @@ -6,14 +6,19 @@ "DE.Controllers.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", "DE.Controllers.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", "DE.Controllers.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "Xảy ra lỗi kho mở tệp.
Nội dung tệp tương ứng với một trong các định dạng sau: pdf/djvu/xps/oxps, nhưng tệp có định dạng không nhất quán: %1.", "DE.Controllers.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", "DE.Controllers.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "DE.Controllers.ApplicationController.openErrorText": "Xảy ra lỗi khi mở tệp", "DE.Controllers.ApplicationController.textLoadingDocument": "Đang tải tài liệu", "DE.Controllers.ApplicationController.textOf": "trên", "DE.Controllers.ApplicationController.txtClose": "Đóng", "DE.Controllers.ApplicationController.unknownErrorText": "Lỗi không xác định.", "DE.Controllers.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", + "DE.Controllers.ApplicationController.warnLicenseAnonymous": "Truy cập bị từ chối cho người dùng ẩn danh.
Tải liệu này sẽ được mở ở dạng chỉ xem.", "DE.Views.ApplicationView.txtDownload": "Tải về", + "DE.Views.ApplicationView.txtDownloadDocx": "Tải xuống như DOCX", + "DE.Views.ApplicationView.txtDownloadPdf": "Tải xuống như PDF", "DE.Views.ApplicationView.txtFullScreen": "Toàn màn hình", "DE.Views.ApplicationView.txtShare": "Chia sẻ" } \ No newline at end of file diff --git a/apps/documenteditor/forms/locale/zh-tw.json b/apps/documenteditor/forms/locale/zh-tw.json index 9fbc24e9cd..979d565d8e 100644 --- a/apps/documenteditor/forms/locale/zh-tw.json +++ b/apps/documenteditor/forms/locale/zh-tw.json @@ -27,10 +27,10 @@ "Common.UI.Calendar.textShortOctober": "十月", "Common.UI.Calendar.textShortSaturday": "Sa", "Common.UI.Calendar.textShortSeptember": "9月", - "Common.UI.Calendar.textShortSunday": "Su", + "Common.UI.Calendar.textShortSunday": "次方,上標", "Common.UI.Calendar.textShortThursday": "Th", "Common.UI.Calendar.textShortTuesday": "Tu", - "Common.UI.Calendar.textShortWednesday": "We", + "Common.UI.Calendar.textShortWednesday": "我們", "Common.UI.Calendar.textYears": "年份", "Common.UI.SearchBar.textFind": "尋找", "Common.UI.SearchBar.tipCloseSearch": "關閉搜尋", @@ -101,7 +101,7 @@ "DE.Controllers.ApplicationController.errorInconsistentExtPdf": "在打開檔案時發生錯誤。
檔案內容對應以下格式之一:pdf/djvu/xps/oxps,但檔案的副檔名矛盾:%1。", "DE.Controllers.ApplicationController.errorInconsistentExtPptx": "開啟檔案時發生錯誤。
檔案內容對應於簡報(例如 pptx),但檔案的副檔名不一致:%1。", "DE.Controllers.ApplicationController.errorInconsistentExtXlsx": "開啟檔案時發生錯誤。
檔案內容對應於試算表(例如 xlsx),但檔案的副檔名不一致:%1。", - "DE.Controllers.ApplicationController.errorLoadingFont": "字型未載入。
請聯絡您的文件伺服器管理員。", + "DE.Controllers.ApplicationController.errorLoadingFont": "字型未載入。請聯絡您的文件伺服器管理員。", "DE.Controllers.ApplicationController.errorServerVersion": "編輯器版本已更新。將重新載入頁面以更新改動。", "DE.Controllers.ApplicationController.errorSessionAbsolute": "文件編輯會話已過期。請重新加載頁面。", "DE.Controllers.ApplicationController.errorSessionIdle": "該文件已經有一段時間未編輯。請重新載入頁面。", @@ -111,9 +111,9 @@ "DE.Controllers.ApplicationController.errorToken": "文件安全令牌格式不正確。
請聯繫您的相關管理員。", "DE.Controllers.ApplicationController.errorTokenExpire": "文件安全令牌已過期。
請聯繫相關管理員。", "DE.Controllers.ApplicationController.errorUpdateVersion": "文件版本已更改。將重新載入頁面。", - "DE.Controllers.ApplicationController.errorUpdateVersionOnDisconnect": "連線已恢復,且檔案版本已更改。
在您繼續工作之前,您需要下載該檔案或複製其內容以確保不會遺失任何內容,然後重新載入此頁面。", + "DE.Controllers.ApplicationController.errorUpdateVersionOnDisconnect": "連線已恢復,且檔案版本已更改。<br>在您繼續工作之前,您需要下載該檔案或複製其內容以確保不會遺失任何內容,然後重新載入此頁面。", "DE.Controllers.ApplicationController.errorUserDrop": "目前無法存取該檔案。", - "DE.Controllers.ApplicationController.errorViewerDisconnect": "連線已中斷。您仍然可以檢視文件,
但在連線恢復並重新載入頁面之前,將無法下載或列印文件。", + "DE.Controllers.ApplicationController.errorViewerDisconnect": "連線已中斷。您仍然可以檢視文件,<br>但在連線恢復並重新載入頁面之前,將無法下載或列印文件。", "DE.Controllers.ApplicationController.mniImageFromFile": "從檔案插入圖片", "DE.Controllers.ApplicationController.mniImageFromStorage": "從儲存空間插入圖片", "DE.Controllers.ApplicationController.mniImageFromUrl": "從網址插入圖片", @@ -154,13 +154,13 @@ "DE.Controllers.ApplicationController.waitText": "請稍候...", "DE.Controllers.ApplicationController.warnLicenseAnonymous": "拒絕匿名使用者存取。
此文件只能以檢視模式開啟。", "DE.Controllers.ApplicationController.warnLicenseBefore": "授權證書未啟用。
請聯繫您的管理員。", - "DE.Controllers.ApplicationController.warnLicenseExceeded": "您已達到同時連接 %1 編輯器的限制。此文件將僅以檢視模式開啟。
請聯繫您的管理員以了解詳情。", + "DE.Controllers.ApplicationController.warnLicenseExceeded": "您已達到同時連接 %1 編輯器的限制。此文件將僅以檢視模式開啟。<br>請聯繫您的管理員以了解詳情。", "DE.Controllers.ApplicationController.warnLicenseExp": "您的許可證已過期。
請更新您的許可證並刷新頁面。", "DE.Controllers.ApplicationController.warnLicenseLimitedNoAccess": "授權過期
您已沒有編輯文件功能的授權
請與您的管理者聯繫。", "DE.Controllers.ApplicationController.warnLicenseLimitedRenewed": "授權證書需要更新
您只有部分的文件編輯功能的存取權限
請與您的管理者聯繫來取得完整的存取權限。", - "DE.Controllers.ApplicationController.warnLicenseUsersExceeded": "您已達到 %1 編輯器的使用者限制。請聯繫您的管理員以了解詳情。", - "DE.Controllers.ApplicationController.warnNoLicense": "您已達到同時連接 %1 編輯器的限制。此文件將僅以檢視模式開啟。
請聯繫 %1 的銷售團隊了解個人升級條款。", - "DE.Controllers.ApplicationController.warnNoLicenseUsers": "您已達到%1個編輯器的用戶限制。與%1銷售團隊聯繫以了解個人升級條款。", + "DE.Controllers.ApplicationController.warnLicenseUsersExceeded": "您已達到%1個編輯器限制。請聯絡你的帳號管理員以了解更多資訊。", + "DE.Controllers.ApplicationController.warnNoLicense": "您已達到同時連接 %1 編輯器的限制。此文件將僅以檢視模式開啟。<br>請聯繫 %1 的銷售團隊了解個人升級條款。", + "DE.Controllers.ApplicationController.warnNoLicenseUsers": "您已達到編輯器的使用者限制。", "DE.Views.ApplicationView.textClear": "清除所有欄位", "DE.Views.ApplicationView.textClearField": "清除欄位", "DE.Views.ApplicationView.textCopy": "複製", diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index 4265bfbd7b..c0fa8ad4a3 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -726,8 +726,6 @@ define([ if (key == Common.UI.Keys.ESC) { Common.UI.Menu.Manager.hideAll(); - if (!Common.UI.HintManager.isHintVisible()) - Common.NotificationCenter.trigger('leftmenu:change', 'hide'); } } }, diff --git a/apps/documenteditor/main/app/controller/FormsTab.js b/apps/documenteditor/main/app/controller/FormsTab.js index 808c4d712f..87a4844dd9 100644 --- a/apps/documenteditor/main/app/controller/FormsTab.js +++ b/apps/documenteditor/main/app/controller/FormsTab.js @@ -291,6 +291,8 @@ define([ this.api.asc_SetPerformContentControlActionByClick(state); this.api.asc_SetHighlightRequiredFields(state); state && (this._state.lastViewRole = lastViewRole); + this.toolbar.toolbar.clearActiveData(); + this.toolbar.toolbar.processPanelVisible(null, true); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, @@ -352,7 +354,9 @@ define([ this.closeHelpTip('save', true); this.showRolesList(function() { this.isFromFormSaveAs = this.appConfig.canRequestSaveAs || !!this.appConfig.saveAsUrl; - this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, this.isFromFormSaveAs)); + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, this.isFromFormSaveAs); + options.asc_setIsSaveAs(this.isFromFormSaveAs); + this.api.asc_DownloadAs(options); }); }, diff --git a/apps/documenteditor/main/app/controller/LeftMenu.js b/apps/documenteditor/main/app/controller/LeftMenu.js index 476706cfe8..21403fc162 100644 --- a/apps/documenteditor/main/app/controller/LeftMenu.js +++ b/apps/documenteditor/main/app/controller/LeftMenu.js @@ -316,9 +316,10 @@ define([ _saveAsFormat: function(menu, format, ext, textParams) { var needDownload = !!ext; + var options = new Asc.asc_CDownloadOptions(format, needDownload); + options.asc_setIsSaveAs(needDownload); if (menu) { - var options = new Asc.asc_CDownloadOptions(format, needDownload); options.asc_setTextParams(textParams); if (format == Asc.c_oAscFileType.TXT || format == Asc.c_oAscFileType.RTF) { Common.UI.warning({ @@ -368,7 +369,7 @@ define([ } } else { this.isFromFileDownloadAs = needDownload; - this.api.asc_DownloadOrigin(needDownload); + this.api.asc_DownloadOrigin(options); } }, @@ -784,7 +785,7 @@ define([ if (this.isSearchPanelVisible()) { selectedText && this.leftMenu.panelSearch.setFindText(selectedText); this.leftMenu.panelSearch.focus(selectedText !== '' ? s : 'search'); - this.leftMenu.fireEvent('search:aftershow', this.leftMenu, selectedText ? selectedText : undefined); + this.leftMenu.fireEvent('search:aftershow', selectedText ? [selectedText] : undefined); return false; } else if (this.getApplication().getController('Viewport').isSearchBarVisible()) { var viewport = this.getApplication().getController('Viewport'); @@ -852,7 +853,7 @@ define([ return false; } } - if (this.leftMenu.btnAbout.pressed || this.leftMenu.isPluginButtonPressed() || $(e.target).parents('#left-menu').length ) { + if (this.leftMenu.btnAbout.pressed) { if (!Common.UI.HintManager.isHintVisible()) { this.leftMenu.close(); Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); @@ -918,7 +919,7 @@ define([ Common.UI.Menu.Manager.hideAll(); this.tryToShowLeftMenu(); this.leftMenu.showMenu('advancedsearch', undefined, true); - this.leftMenu.fireEvent('search:aftershow', this.leftMenu, findText); + this.leftMenu.fireEvent('search:aftershow', [findText]); } else { this.leftMenu.btnSearchBar.toggle(false, true); this.leftMenu.onBtnMenuClick(this.leftMenu.btnSearchBar); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 796a2ee933..5df5a0e36d 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -644,7 +644,10 @@ define([ var type = /^(?:(pdf|djvu|xps|oxps))$/.exec(this.document.fileType); if (type && typeof type[1] === 'string') { if (!(format && (typeof format == 'string')) || type[1]===format.toLowerCase()) { - this.api.asc_DownloadOrigin(true); + var options = new Asc.asc_CDownloadOptions(); + options.asc_setIsDownloadEvent(true); + options.asc_setIsSaveAs(true); + this.api.asc_DownloadOrigin(options); return; } if (/^xps|oxps$/.test(this.document.fileType)) @@ -662,12 +665,13 @@ define([ } if ( !_format || _supported.indexOf(_format) < 0 ) _format = _defaultFormat; + var options = new Asc.asc_CDownloadOptions(_format, true); + options.asc_setIsSaveAs(true); if (_format) { - var options = new Asc.asc_CDownloadOptions(_format, true); textParams && options.asc_setTextParams(textParams); this.api.asc_DownloadAs(options); } else { - this.api.asc_DownloadOrigin(true); + this.api.asc_DownloadOrigin(options); } }, @@ -729,11 +733,12 @@ define([ docIdPrev = (ver>0 && versions[ver-1]) ? versions[ver-1].key : version.key + '0'; user = usersStore.findUser(version.user.id); if (!user) { + var color = Common.UI.ExternalUsers.getColor(version.user.id || version.user.name || this.textAnonymous, true); user = new Common.Models.User({ id : version.user.id, username : version.user.name || this.textAnonymous, - colorval : Asc.c_oAscArrUserColors[usersCnt], - color : this.generateUserColor(Asc.c_oAscArrUserColors[usersCnt++]) + colorval : color, + color : this.generateUserColor(color) }); usersStore.add(user); } @@ -781,11 +786,12 @@ define([ user = usersStore.findUser(change.user.id); if (!user) { + var color = Common.UI.ExternalUsers.getColor(change.user.id || change.user.name || this.textAnonymous, true); user = new Common.Models.User({ id : change.user.id, username : change.user.name || this.textAnonymous, - colorval : Asc.c_oAscArrUserColors[usersCnt], - color : this.generateUserColor(Asc.c_oAscArrUserColors[usersCnt++]) + colorval : color, + color : this.generateUserColor(color) }); usersStore.add(user); } @@ -1677,9 +1683,8 @@ define([ this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions, this.api); this.editorConfig.customization && Common.UI.LayoutManager.init(this.editorConfig.customization.layout, this.appOptions.canBrandingExt); this.editorConfig.customization && Common.UI.FeaturesManager.init(this.editorConfig.customization.features, this.appOptions.canBrandingExt); - Common.UI.ExternalUsers.init(this.appOptions.canRequestUsers); - this.appOptions.user.image && Common.UI.ExternalUsers.setImage(this.appOptions.user.id, this.appOptions.user.image); - Common.UI.ExternalUsers.get('info', this.appOptions.user.id); + Common.UI.ExternalUsers.init(this.appOptions.canRequestUsers, this.api); + this.appOptions.user.image ? Common.UI.ExternalUsers.setImage(this.appOptions.user.id, this.appOptions.user.image) : Common.UI.ExternalUsers.get('info', this.appOptions.user.id); if (this.appOptions.canComments) Common.NotificationCenter.on('comments:cleardummy', _.bind(this.onClearDummyComment, this)); @@ -1730,10 +1735,8 @@ define([ } } fastCoauth = (value===null || parseInt(value) == 1); - - value = Common.localStorage.getItem((fastCoauth) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict"); - if (value == null) value = fastCoauth ? 'none' : 'last'; - Common.Utils.InternalSettings.set((fastCoauth) ? "de-settings-showchanges-fast" : "de-settings-showchanges-strict", value); + Common.Utils.InternalSettings.set("de-settings-showchanges-fast", Common.localStorage.getItem("de-settings-showchanges-fast") || 'none'); + Common.Utils.InternalSettings.set("de-settings-showchanges-strict", Common.localStorage.getItem("de-settings-showchanges-strict") || 'last'); } else if (!this.appOptions.isEdit && this.appOptions.isRestrictedEdit) { fastCoauth = true; } else if (this.appOptions.canLiveView && !this.appOptions.isOffline) { // viewer @@ -2388,6 +2391,16 @@ define([ Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationElements); if (this.appOptions.canBrandingExt) { Common.Utils.applyCustomization(this.appOptions.customization, mapCustomizationExtElements); + if (this.appOptions.customization && this.appOptions.customization.layout && this.appOptions.customization.layout.toolbar && (typeof this.appOptions.customization.layout.toolbar === 'object') && + this.appOptions.customization.layout.toolbar.home && (typeof this.appOptions.customization.layout.toolbar.home === 'object') && this.appOptions.customization.layout.toolbar.home.mailmerge===false) { + console.log("Obsolete: The 'mailmerge' parameter of the 'customization.layout.toolbar.home' section is deprecated. Please use 'mailmerge' parameter in the 'customization.layout.toolbar.collaboration' section instead."); + if (this.appOptions.customization.layout.toolbar.collaboration!==false) { + if (typeof this.appOptions.customization.layout.toolbar.collaboration !== 'object') + this.appOptions.customization.layout.toolbar.collaboration = {}; + if (this.appOptions.customization.layout.toolbar.collaboration.mailmerge===undefined) + this.appOptions.customization.layout.toolbar.collaboration.mailmerge = this.appOptions.customization.layout.toolbar.home.mailmerge; + } + } Common.UI.LayoutManager.applyCustomization(); if (this.appOptions.customization && (typeof (this.appOptions.customization) == 'object')) { if (this.appOptions.customization.leftMenu!==undefined) @@ -2887,8 +2900,8 @@ define([ DisableMailMerge: function() { this.appOptions.mergeFolderUrl = ""; - var toolbarController = this.getApplication().getController('Toolbar'); - toolbarController && toolbarController.DisableMailMerge(); + var reivewController = this.getApplication().getController('Common.Controllers.ReviewChanges'); + reivewController && reivewController.DisableMailMerge(); }, DisableVersionHistory: function() { diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index 1d1847acb6..0c931ad6d2 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -186,6 +186,9 @@ define([ }, 'DocumentHolder': { 'list:settings': this.onMarkerSettingsClick.bind(this) + }, + 'Common.Views.ReviewChanges': { + 'collaboration:mailmerge': _.bind(this.onSelectRecepientsClick, this) } }); @@ -285,6 +288,7 @@ define([ toolbar.btnPaste.on('click', _.bind(this.onCopyPaste, this, 'paste')); toolbar.btnCut.on('click', _.bind(this.onCopyPaste, this, 'cut')); toolbar.btnSelectAll.on('click', _.bind(this.onSelectAll, this)); + toolbar.btnReplace.on('click', _.bind(this.onReplace, this)); toolbar.btnIncFontSize.on('click', _.bind(this.onIncrease, this)); toolbar.btnDecFontSize.on('click', _.bind(this.onDecrease, this)); toolbar.mnuChangeCase.on('item:click', _.bind(this.onChangeCase, this)); @@ -367,7 +371,6 @@ define([ toolbar.mnuPageSize.on('item:click', _.bind(this.onPageSizeClick, this)); toolbar.mnuColorSchema.on('item:click', _.bind(this.onColorSchemaClick, this)); toolbar.mnuColorSchema.on('show:after', _.bind(this.onColorSchemaShow, this)); - toolbar.mnuMailRecepients.on('item:click', _.bind(this.onSelectRecepientsClick, this)); toolbar.mnuPageNumberPosPicker.on('item:click', _.bind(this.onInsertPageNumberClick, this)); toolbar.btnEditHeader.menu.on('item:click', _.bind(this.onEditHeaderFooterClick, this)); toolbar.btnInsDateTime.on('click', _.bind(this.onInsDateTimeClick, this)); @@ -1137,6 +1140,10 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Select All'); }, + onReplace: function(e) { + this.getApplication().getController('LeftMenu').onShortcut('replace'); + }, + onIncrease: function(e) { if (this.api) this.api.FontSizeIn(); @@ -3103,21 +3110,12 @@ define([ this.toolbar.lockToolbar(Common.enumLock.undoLock, this._state.can_undo!==true, {array: [this.toolbar.btnUndo]}); this.toolbar.lockToolbar(Common.enumLock.redoLock, this._state.can_redo!==true, {array: [this.toolbar.btnRedo]}); this.toolbar.lockToolbar(Common.enumLock.copyLock, this._state.can_copycut!==true, {array: [this.toolbar.btnCopy, this.toolbar.btnCut]}); - this.toolbar.lockToolbar(Common.enumLock.mmergeLock, !!this._state.mmdisable, {array: [this.toolbar.btnMailRecepients]}); - if (!this._state.mmdisable) { - this.toolbar.mnuMailRecepients.items[2].setVisible(this.toolbar.mode.fileChoiceUrl || this.toolbar.mode.canRequestSelectSpreadsheet || this.toolbar.mode.canRequestMailMergeRecipients); - } this._state.activated = true; var props = this.api.asc_GetSectionProps(); this.onApiPageSize(props.get_W(), props.get_H()); }, - DisableMailMerge: function() { - this._state.mmdisable = true; - this.toolbar && this.toolbar.btnMailRecepients && this.toolbar.lockToolbar(Common.enumLock.mmergeLock, true, {array: [this.toolbar.btnMailRecepients]}); - }, - updateThemeColors: function() { var updateColors = function(picker, defaultColorIndex) { if (picker) { @@ -3311,13 +3309,13 @@ define([ disable ? Common.util.Shortcuts.suspendEvents(hkComments) : Common.util.Shortcuts.resumeEvents(hkComments); }, - onSelectRecepientsClick: function(menu, item, e) { + onSelectRecepientsClick: function(type) { if (this._mailMergeDlg) return; var me = this; - if (item.value === 'file') { + if (type === 'file') { this.api && this.api.asc_StartMailMerge(); - } else if (item.value === 'url') { + } else if (type === 'url') { (new Common.Views.ImageFromUrlDialog({ title: me.dataUrl, handler: function(result, value) { @@ -3337,7 +3335,7 @@ define([ } } })).show(); - } else if (item.value === 'storage') { + } else if (type === 'storage') { Common.NotificationCenter.trigger('storage:spreadsheet-load', 'mailmerge'); } }, @@ -3428,7 +3426,7 @@ define([ me.toolbar.btnPaste.$el.detach().appendTo($box); me.toolbar.btnPaste.$el.find('button').attr('data-hint-direction', 'bottom'); me.toolbar.btnCopy.$el.removeClass('split'); - me.toolbar.processPanelVisible(null, true, true); + me.toolbar.processPanelVisible(null, true); } // if ( config.isDesktopApp ) { @@ -3554,7 +3552,9 @@ define([ callback: function(btn){ if (btn==='ok') { me.isFromFormSaveAs = config.canRequestSaveAs || !!config.saveAsUrl; - me.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, me.isFromFormSaveAs)); + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PDF, me.isFromFormSaveAs); + options.asc_setIsSaveAs(me.isFromFormSaveAs); + me.api.asc_DownloadAs(options); } Common.NotificationCenter.trigger('edit:complete'); } diff --git a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template index 8790e981e1..bc36cc8da2 100644 --- a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -181,15 +181,15 @@
-
+
-
+
-
+
diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index 87079162fe..0bacc61708 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -30,7 +30,7 @@
- +
@@ -38,7 +38,7 @@
-
+
@@ -54,6 +54,7 @@ +
@@ -75,19 +76,16 @@
-
-
-
- - -
-
- - -
-
+
+
+ +
+
+ +
+
@@ -156,6 +154,10 @@
+
+
+ +
diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index 4348889f26..6d3d63f974 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -611,9 +611,11 @@ define([ dataHintDirection: 'left', dataHintOffset: 'small' }); - this.rbCoAuthModeFast.on('change', function(){ - me.chAutosave.setValue(1); - me.onChangeCoAuthMode(1); + this.rbCoAuthModeFast.on('change', function(field, newValue, eOpts){ + if (newValue) { + me.chAutosave.setValue(1); + me.onChangeCoAuthMode(1); + } }); this.rbCoAuthModeFast.$el.parent().on('click', function (){me.rbCoAuthModeFast.setValue(true);}); @@ -624,7 +626,9 @@ define([ dataHintDirection: 'left', dataHintOffset: 'small' }); - this.rbCoAuthModeStrict.on('change', _.bind(this.onChangeCoAuthMode, this,0)); + this.rbCoAuthModeStrict.on('change', function(field, newValue, eOpts){ + newValue && me.onChangeCoAuthMode(0); + }); this.rbCoAuthModeStrict.$el.parent().on('click', function (){me.rbCoAuthModeStrict.setValue(true);}); this.rbChangesBallons = new Common.UI.RadioBox({ diff --git a/apps/documenteditor/main/app/view/LeftMenu.js b/apps/documenteditor/main/app/view/LeftMenu.js index 3211c31126..5a9b5b0b20 100644 --- a/apps/documenteditor/main/app/view/LeftMenu.js +++ b/apps/documenteditor/main/app/view/LeftMenu.js @@ -87,7 +87,11 @@ define([ enableToggle: true, toggleGroup: 'leftMenuGroup' }); - this.btnSearchBar.on('click', this.onBtnMenuClick.bind(this)); + this.btnSearchBar.on('click', _.bind(function () { + this.onBtnMenuClick(this.btnSearchBar); + if (this.btnSearchBar.pressed) + this.fireEvent('search:aftershow'); + }, this)); this.btnAbout = new Common.UI.Button({ action: 'about', @@ -205,7 +209,6 @@ define([ this.supressEvents = false; this.onCoauthOptions(); - btn.pressed && btn.options.action == 'advancedsearch' && this.fireEvent('search:aftershow', this); Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); }, @@ -380,7 +383,7 @@ define([ this.btnSearchBar.toggle(true); this.onBtnMenuClick(this.btnSearchBar); this.panelSearch.focus(); - !suspendAfter && this.fireEvent('search:aftershow', this); + !suspendAfter && this.fireEvent('search:aftershow'); } } /** coauthoring end **/ diff --git a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js index 323a2eb943..80225b9044 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -134,11 +134,11 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem }); this._arrTabLeader = [ - { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, - { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, - { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, - { value: Asc.c_oAscTabLeader.MiddleDot, displayValue: '·················' }, - { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } + { value: Asc.c_oAscTabLeader.None, cls: '', displayValue: this.textNone }, + { value: Asc.c_oAscTabLeader.Dot, cls: 'font-sans-serif', displayValue: '....................' }, + { value: Asc.c_oAscTabLeader.Hyphen, cls: 'font-sans-serif', displayValue: '-----------------' }, + { value: Asc.c_oAscTabLeader.MiddleDot, cls: 'font-sans-serif', displayValue: '·················' }, + { value: Asc.c_oAscTabLeader.Underscore,cls: 'font-sans-serif', displayValue: '__________' } ]; this._arrKeyTabLeader = []; this._arrTabLeader.forEach(function(item) { @@ -606,13 +606,21 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem }); this.cmbAlign.setValue(Asc.c_oAscTabType.Left); - this.cmbLeader = new Common.UI.ComboBox({ + this.cmbLeader = new Common.UI.ComboBoxCustom({ el : $('#paraadv-cmb-leader'), style : 'width: 108px;', menuStyle : 'min-width: 108px;', editable : false, cls : 'input-group-nr', data : this._arrTabLeader, + itemsTemplate: _.template([ + '<% _.each(items, function(item) { %>', + '
  • <%= scope.getDisplayValue(item) %>
  • ', + '<% }); %>', + ].join('')), + updateFormControl: function(record) { + this._input && this._input.toggleClass('font-sans-serif', record.get('value')!==Asc.c_oAscTabLeader.None); + }, takeFocusOnClose: true }); this.cmbLeader.setValue(Asc.c_oAscTabLeader.None); diff --git a/apps/documenteditor/main/app/view/RightMenu.js b/apps/documenteditor/main/app/view/RightMenu.js index 472934fe56..b76d1f4d75 100644 --- a/apps/documenteditor/main/app/view/RightMenu.js +++ b/apps/documenteditor/main/app/view/RightMenu.js @@ -157,7 +157,7 @@ define([ render: function (mode) { this.trigger('render:before', this); - this.defaultHideRightMenu = mode.customization && !!mode.customization.hideRightMenu; + this.defaultHideRightMenu = !(mode.customization && (mode.customization.hideRightMenu===false)); var open = !Common.localStorage.getBool("de-hide-right-settings", this.defaultHideRightMenu); Common.Utils.InternalSettings.set("de-hide-right-settings", !open); this.$el.css('width', ((open) ? MENU_SCALE_PART : SCALE_MIN) + 'px'); diff --git a/apps/documenteditor/main/app/view/TableOfContentsSettings.js b/apps/documenteditor/main/app/view/TableOfContentsSettings.js index 2b948c6f45..7f200929e5 100644 --- a/apps/documenteditor/main/app/view/TableOfContentsSettings.js +++ b/apps/documenteditor/main/app/view/TableOfContentsSettings.js @@ -131,7 +131,7 @@ define([ '', '', '', - '
    ', + '
    ', '', '', '', @@ -197,7 +197,7 @@ define([ } }, this)); - this.cmbLeader = new Common.UI.ComboBox({ + this.cmbLeader = new Common.UI.ComboBoxCustom({ el : $('#tableofcontents-combo-leader'), style : 'width: 85px;', menuStyle : 'min-width: 85px;', @@ -205,11 +205,19 @@ define([ takeFocusOnClose: true, cls : 'input-group-nr', data : [ - { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, - { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, - { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, - { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } - ] + { value: Asc.c_oAscTabLeader.None, cls: '', displayValue: this.textNone }, + { value: Asc.c_oAscTabLeader.Dot, cls: 'font-sans-serif', displayValue: '....................' }, + { value: Asc.c_oAscTabLeader.Hyphen, cls: 'font-sans-serif', displayValue: '-----------------' }, + { value: Asc.c_oAscTabLeader.Underscore,cls: 'font-sans-serif', displayValue: '__________' } + ], + itemsTemplate: _.template([ + '<% _.each(items, function(item) { %>', + '
  • <%= scope.getDisplayValue(item) %>
  • ', + '<% }); %>', + ].join('')), + updateFormControl: function(record) { + this._input && this._input.toggleClass('font-sans-serif', record.get('value')!==Asc.c_oAscTabLeader.None); + } }); this.cmbLeader.setValue(Asc.c_oAscTabLeader.Dot); this.cmbLeader.on('selected', _.bind(function(combo, record) { @@ -411,7 +419,7 @@ define([ this.cmbStyles = new Common.UI.ComboBox({ el: $('#tableofcontents-combo-styles'), cls: 'input-group-nr', - menuStyle: 'min-width: 95px;', + menuStyle: 'min-width: 100%;', editable: false, takeFocusOnClose: true, data: arr diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 4199ced018..f441542b7b 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -283,6 +283,16 @@ define([ }); this.toolbarControls.push(this.btnSelectAll); + this.btnReplace = new Common.UI.Button({ + id: 'id-toolbar-btn-replace', + cls: 'btn-toolbar', + iconCls: 'toolbar__icon btn-replace', + lock: [_set.viewFormMode, _set.disableOnStart], + dataHint: '1', + dataHintDirection: 'top' + }); + this.toolbarControls.push(this.btnReplace); + this.btnIncFontSize = new Common.UI.Button({ id: 'id-toolbar-btn-incfont', cls: 'btn-toolbar', @@ -1360,7 +1370,7 @@ define([ lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.inChart, _set.inSmartart, _set.inSmartartInternal, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.viewMode], dataHint: '1', - dataHintDirection: 'top' + dataHintDirection: 'bottom' }); this.toolbarControls.push(this.btnClearStyle); @@ -1377,37 +1387,21 @@ define([ this.btnColorSchemas = new Common.UI.Button({ id: 'id-toolbar-btn-colorschemas', - cls: 'btn-toolbar', - iconCls: 'toolbar__icon btn-colorschemas', + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-big-colorschemas', lock: [_set.docSchemaLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.viewMode], + caption: me.capColorScheme, menu: new Common.UI.Menu({ cls: 'shifted-left', items: [], restoreHeight: true }), dataHint: '1', - dataHintDirection: 'top', - dataHintOffset: '0, -6' + dataHintDirection: 'bottom', + dataHintOffset: 'small' }); this.toolbarControls.push(this.btnColorSchemas); - this.btnMailRecepients = new Common.UI.Button({ - id: 'id-toolbar-btn-mailrecepients', - cls: 'btn-toolbar', - iconCls: 'toolbar__icon btn-mailmerge', - lock: [_set.mmergeLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockForms, _set.docLockComments, _set.viewMode], - dataHint: '1', - dataHintDirection: 'bottom', - menu: new Common.UI.Menu({ - items: [ - {caption: this.mniFromFile, value: 'file'}, - {caption: this.mniFromUrl, value: 'url'}, - {caption: this.mniFromStorage, value: 'storage'} - ] - }) - }); - this.toolbarControls.push(this.btnMailRecepients); - me.btnImgAlign = new Common.UI.Button({ cls: 'btn-toolbar x-huge icon-top', iconCls: 'toolbar__icon btn-img-align', @@ -1499,7 +1493,6 @@ define([ this.mnuPageSize = this.btnPageSize.menu; this.mnuColorSchema = this.btnColorSchemas.menu; this.mnuChangeCase = this.btnChangeCase.menu; - this.mnuMailRecepients = this.btnMailRecepients.menu; this.cmbFontSize = new Common.UI.ComboBox({ cls: 'input-group-nr', @@ -1733,6 +1726,7 @@ define([ _injectComponent('#slot-btn-paste', this.btnPaste); _injectComponent('#slot-btn-cut', this.btnCut); _injectComponent('#slot-btn-select-all', this.btnSelectAll); + _injectComponent('#slot-btn-replace', this.btnReplace); _injectComponent('#slot-btn-incfont', this.btnIncFontSize); _injectComponent('#slot-btn-decfont', this.btnDecFontSize); _injectComponent('#slot-btn-bold', this.btnBold); @@ -1779,7 +1773,6 @@ define([ _injectComponent('#slot-btn-colorschemas', this.btnColorSchemas); _injectComponent('#slot-btn-paracolor', this.btnParagraphColor); _injectComponent('#slot-field-styles', this.listStyles); - _injectComponent('#slot-btn-mailrecepients', this.btnMailRecepients); _injectComponent('#slot-img-align', this.btnImgAlign); _injectComponent('#slot-img-group', this.btnImgGroup); _injectComponent('#slot-img-movefrwd', this.btnImgForward); @@ -2126,6 +2119,7 @@ define([ this.btnPaste.updateHint(this.tipPaste + Common.Utils.String.platformKey('Ctrl+V')); this.btnCut.updateHint(this.tipCut + Common.Utils.String.platformKey('Ctrl+X')); this.btnSelectAll.updateHint(this.tipSelectAll + Common.Utils.String.platformKey('Ctrl+A')); + this.btnReplace.updateHint(this.tipReplace + ' (' + Common.Utils.String.textCtrl + '+H)'); this.btnIncFontSize.updateHint(this.tipIncFont + Common.Utils.String.platformKey('Ctrl+]')); this.btnDecFontSize.updateHint(this.tipDecFont + Common.Utils.String.platformKey('Ctrl+[')); this.btnBold.updateHint(this.textBold + Common.Utils.String.platformKey('Ctrl+B')); @@ -2171,7 +2165,6 @@ define([ this.btnClearStyle.updateHint(this.tipClearStyle); this.btnCopyStyle.updateHint(this.tipCopyStyle + Common.Utils.String.platformKey('Alt+Ctrl+C')); this.btnColorSchemas.updateHint(this.tipColorSchemas); - this.btnMailRecepients.updateHint(this.tipMailRecepients); this.btnHyphenation.updateHint(this.tipHyphenation); // set menus @@ -2845,7 +2838,6 @@ define([ this.mode = mode; - this.btnMailRecepients.setVisible(mode.canCoAuthoring == true && mode.canUseMailMerge); this.listStylesAdditionalMenuItem.setVisible(mode.canEditStyles); this.btnContentControls.menu.items[10].setVisible(mode.canEditContentControl); this.mnuInsertImage.items[2].setVisible(this.mode.canRequestInsertImage || this.mode.fileChoiceUrl && this.mode.fileChoiceUrl.indexOf("{documentType}")>-1); @@ -3220,7 +3212,6 @@ define([ textEvenPage: 'Even Page', textOddPage: 'Odd Page', tipSaveCoauth: 'Save your changes for the other users to see them.', - tipMailRecepients: 'Mail Merge', textStyleMenuUpdate: 'Update from select', textStyleMenuRestore: 'Restore to default', textStyleMenuDelete: 'Delete style', @@ -3406,7 +3397,9 @@ define([ capBtnHyphenation: 'Hyphenation', textAuto: 'Automatic', textCustomHyphen: 'Hyphenation options', - tipHyphenation: 'Change hyphenation' + tipHyphenation: 'Change hyphenation', + capColorScheme: 'Color Scheme', + tipReplace: 'Replace' } })(), DE.Views.Toolbar || {})); }); diff --git a/apps/documenteditor/main/index.html b/apps/documenteditor/main/index.html index fcf7ffee6e..2ab030ebe4 100644 --- a/apps/documenteditor/main/index.html +++ b/apps/documenteditor/main/index.html @@ -139,10 +139,14 @@ right: 0; top: 0; bottom: 0; - left: 587px; + left: 522px; width: inherit; height: 44px; } + .rtl .loadmask > .sktoolbar li.fat { + right: 522px; + left: 0; + } .loadmask > .placeholder { background: #fff; @@ -249,6 +253,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; @@ -272,8 +277,8 @@
    - +
    @@ -51,7 +51,7 @@
    -
    +
    @@ -67,6 +67,7 @@ +
    @@ -101,16 +102,22 @@
    -
    -
    +
    +
    + +
    +
    + +
    +
    diff --git a/apps/presentationeditor/main/app/view/Animation.js b/apps/presentationeditor/main/app/view/Animation.js index 628d0b8f01..9d9b336261 100644 --- a/apps/presentationeditor/main/app/view/Animation.js +++ b/apps/presentationeditor/main/app/view/Animation.js @@ -206,6 +206,7 @@ define([ itemWidth: itemWidth, itemHeight: itemHeight, style: 'min-width:200px;', + autoWidth: true, itemTemplate: _.template([ '
    ', '
    ', diff --git a/apps/presentationeditor/main/app/view/FileMenuPanels.js b/apps/presentationeditor/main/app/view/FileMenuPanels.js index dce2cf57ff..f533ebdcdd 100644 --- a/apps/presentationeditor/main/app/view/FileMenuPanels.js +++ b/apps/presentationeditor/main/app/view/FileMenuPanels.js @@ -466,8 +466,8 @@ define([ dataHint : '2', dataHintDirection: 'left', dataHintOffset: 'small' - }).on('change', function () { - me.chAutosave.setValue(1); + }).on('change', function (field, newValue, eOpts) { + newValue && me.chAutosave.setValue(1); }); this.rbCoAuthModeFast.$el.parent().on('click', function (){me.rbCoAuthModeFast.setValue(true);}); diff --git a/apps/presentationeditor/main/app/view/LeftMenu.js b/apps/presentationeditor/main/app/view/LeftMenu.js index 967e3fc467..97dc1c6f8e 100644 --- a/apps/presentationeditor/main/app/view/LeftMenu.js +++ b/apps/presentationeditor/main/app/view/LeftMenu.js @@ -85,7 +85,11 @@ define([ enableToggle: true, toggleGroup: 'leftMenuGroup' }); - this.btnSearchBar.on('click', _.bind(this.onBtnMenuClick, this)); + this.btnSearchBar.on('click', _.bind(function () { + this.onBtnMenuClick(this.btnSearchBar); + if (this.btnSearchBar.pressed) + this.fireEvent('search:aftershow'); + }, this)); this.btnThumbs = new Common.UI.Button({ action: 'thumbs', @@ -199,7 +203,6 @@ define([ } this.fireEvent('panel:show', [this, btn.options.action, btn.pressed]); - btn.pressed && btn.options.action == 'advancedsearch' && this.fireEvent('search:aftershow', this); Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); }, @@ -335,7 +338,7 @@ define([ !this.btnSearchBar.isDisabled() && !this.btnSearchBar.pressed) { this.btnSearchBar.toggle(true); this.onBtnMenuClick(this.btnSearchBar); - !suspendAfter && this.fireEvent('search:aftershow', this); + !suspendAfter && this.fireEvent('search:aftershow'); } } /** coauthoring end **/ diff --git a/apps/presentationeditor/main/app/view/RightMenu.js b/apps/presentationeditor/main/app/view/RightMenu.js index 57f1940c5a..9b04ac9963 100644 --- a/apps/presentationeditor/main/app/view/RightMenu.js +++ b/apps/presentationeditor/main/app/view/RightMenu.js @@ -156,7 +156,7 @@ define([ this.trigger('render:before', this); - this.defaultHideRightMenu = mode.customization && !!mode.customization.hideRightMenu; + this.defaultHideRightMenu = !(mode.customization && (mode.customization.hideRightMenu===false)); var open = !Common.localStorage.getBool("pe-hide-right-settings", this.defaultHideRightMenu); Common.Utils.InternalSettings.set("pe-hide-right-settings", !open); el.css('width', ((open) ? MENU_SCALE_PART : SCALE_MIN) + 'px'); diff --git a/apps/presentationeditor/main/app/view/Toolbar.js b/apps/presentationeditor/main/app/view/Toolbar.js index 00cd5b8a3c..953bc8a332 100644 --- a/apps/presentationeditor/main/app/view/Toolbar.js +++ b/apps/presentationeditor/main/app/view/Toolbar.js @@ -300,6 +300,16 @@ define([ }); me.slideOnlyControls.push(me.btnSelectAll); + me.btnReplace = new Common.UI.Button({ + id: 'id-toolbar-btn-replace', + cls: 'btn-toolbar', + iconCls: 'toolbar__icon btn-replace', + lock: [_set.noSlides, _set.disableOnStart], + dataHint: '1', + dataHintDirection: 'top' + }); + me.slideOnlyControls.push(me.btnReplace); + me.cmbFontName = new Common.UI.ComboBoxFonts({ cls: 'input-group-nr', menuCls: 'scrollable-menu', @@ -495,7 +505,7 @@ define([ iconCls: 'toolbar__icon btn-clearstyle', lock: [_set.slideDeleted, _set.paragraphLock, _set.lostConnect, _set.noSlides, _set.noParagraphSelected], dataHint: '1', - dataHintDirection: 'top' + dataHintDirection: 'bottom' }); me.paragraphControls.push(me.btnClearStyle); @@ -1162,7 +1172,7 @@ define([ this.slideOnlyControls.push(this.cmbInsertShape); this.lockControls = [this.btnChangeSlide, this.btnSave, - this.btnCopy, this.btnPaste, this.btnCut, this.btnSelectAll,this.btnUndo, this.btnRedo, this.cmbFontName, this.cmbFontSize, this.btnIncFontSize, this.btnDecFontSize, + this.btnCopy, this.btnPaste, this.btnCut, this.btnSelectAll, this.btnReplace,this.btnUndo, this.btnRedo, this.cmbFontName, this.cmbFontSize, this.btnIncFontSize, this.btnDecFontSize, this.btnBold, this.btnItalic, this.btnUnderline, this.btnStrikeout, this.btnSuperscript, this.btnChangeCase, this.btnHighlightColor, this.btnSubscript, this.btnFontColor, this.btnClearStyle, this.btnCopyStyle, this.btnMarkers, this.btnNumbers, this.btnDecLeftOffset, this.btnIncLeftOffset, this.btnLineSpace, this.btnHorizontalAlign, this.btnColumns, @@ -1269,6 +1279,7 @@ define([ _injectComponent('#slot-btn-paste', this.btnPaste); _injectComponent('#slot-btn-cut', this.btnCut); _injectComponent('#slot-btn-select-all', this.btnSelectAll); + _injectComponent('#slot-btn-replace', this.btnReplace); _injectComponent('#slot-btn-bold', this.btnBold); _injectComponent('#slot-btn-italic', this.btnItalic); _injectComponent('#slot-btn-underline', this.btnUnderline); @@ -1456,6 +1467,7 @@ define([ this.btnPaste.updateHint(this.tipPaste + Common.Utils.String.platformKey('Ctrl+V')); this.btnCut.updateHint(this.tipCut + Common.Utils.String.platformKey('Ctrl+X')); this.btnSelectAll.updateHint(this.tipSelectAll + Common.Utils.String.platformKey('Ctrl+A')); + this.btnReplace.updateHint(this.tipReplace + ' (' + Common.Utils.String.textCtrl + '+H)'); this.btnIncFontSize.updateHint(this.tipIncFont + Common.Utils.String.platformKey('Ctrl+]')); this.btnDecFontSize.updateHint(this.tipDecFont + Common.Utils.String.platformKey('Ctrl+[')); this.btnBold.updateHint(this.textBold + Common.Utils.String.platformKey('Ctrl+B')); @@ -2378,7 +2390,8 @@ define([ textTradeMark: 'Trade Mark Sign', textYen: 'Yen Sign', capBtnInsHeaderFooter: 'Header & Footer', - tipEditHeaderFooter: 'Edit header or footer' + tipEditHeaderFooter: 'Edit header or footer', + tipReplace: 'Replace' } }()), PE.Views.Toolbar || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/Transitions.js b/apps/presentationeditor/main/app/view/Transitions.js index 3af84cd1e8..731a2b68e3 100644 --- a/apps/presentationeditor/main/app/view/Transitions.js +++ b/apps/presentationeditor/main/app/view/Transitions.js @@ -143,6 +143,7 @@ define([ itemWidth: itemWidth, itemHeight: itemHeight, style: 'min-width:108px;', + autoWidth: true, itemTemplate: _.template([ '
    ', '
    ', diff --git a/apps/presentationeditor/main/index.html b/apps/presentationeditor/main/index.html index 7f07020944..f65cf7071e 100644 --- a/apps/presentationeditor/main/index.html +++ b/apps/presentationeditor/main/index.html @@ -135,6 +135,10 @@ width: inherit; height: 44px; } + .rtl .loadmask > .sktoolbar li.fat { + right: 800px; + left: 0; + } .loadmask > .placeholder { display: flex; @@ -264,6 +268,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; @@ -334,10 +339,15 @@ if (stopLoading) { document.body.removeChild(document.getElementById('loading-mask')); } else { - var elem = document.querySelector('.loading-logo img'); - if (elem) { - (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); - elem.style.opacity = 1; + if (hideLogo) { + var elem = document.querySelector('.loading-logo'); + elem && (elem.style.display = 'none'); + } else { + var elem = document.querySelector('.loading-logo img'); + if (elem) { + (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); + elem.style.opacity = 1; + } } } diff --git a/apps/presentationeditor/main/index.html.deploy b/apps/presentationeditor/main/index.html.deploy index b7f75d2874..10a29173d9 100644 --- a/apps/presentationeditor/main/index.html.deploy +++ b/apps/presentationeditor/main/index.html.deploy @@ -123,6 +123,10 @@ width: inherit; height: 44px; } + .rtl .loadmask > .sktoolbar li.fat { + right: 800px; + left: 0; + } .loadmask > .placeholder { display: flex; @@ -256,6 +260,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; @@ -327,10 +332,15 @@ if (stopLoading) { document.body.removeChild(document.getElementById('loading-mask')); } else { - var elem = document.querySelector('.loading-logo img'); - if (elem) { - (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); - elem.style.opacity = 1; + if (hideLogo) { + var elem = document.querySelector('.loading-logo'); + elem && (elem.style.display = 'none'); + } else { + var elem = document.querySelector('.loading-logo img'); + if (elem) { + (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); + elem.style.opacity = 1; + } } } diff --git a/apps/presentationeditor/main/locale/ar.json b/apps/presentationeditor/main/locale/ar.json index 5ce843f961..2da2a8df1d 100644 --- a/apps/presentationeditor/main/locale/ar.json +++ b/apps/presentationeditor/main/locale/ar.json @@ -473,9 +473,9 @@ "Common.Utils.Metric.txtCm": "سم", "Common.Utils.Metric.txtPt": "نقطة", "Common.Utils.String.textAlt": "Alt", + "Common.Utils.String.textComma": "،", "Common.Utils.String.textCtrl": "Ctrl", "Common.Utils.String.textShift": "Shift", - "Common.Utils.String.textComma": "،", "Common.Utils.ThemeColor.txtaccent": "علامة التمييز", "Common.Utils.ThemeColor.txtAqua": "أزرق مائي", "Common.Utils.ThemeColor.txtbackground": "الخلفية", @@ -716,7 +716,7 @@ "Common.Views.ReviewChanges.hintNext": "إلى التغيير التالي", "Common.Views.ReviewChanges.hintPrev": "إلى التغيير السابق", "Common.Views.ReviewChanges.strFast": "سريع", - "Common.Views.ReviewChanges.strFastDesc": "تحرير مشترك في الزمن الحقيقي. كافة التغييرات يتم حفظها تلقائياًًًً", + "Common.Views.ReviewChanges.strFastDesc": "تحرير مشترك في الزمن الحقيقي. كافة التغيرات يتم حفظها تلقائيا", "Common.Views.ReviewChanges.strStrict": "صارم", "Common.Views.ReviewChanges.strStrictDesc": "استخدم زر \"حفظ\" لمزامنة التغييرات التي تجريها أنت و الآخرين", "Common.Views.ReviewChanges.tipAcceptCurrent": "الموافقة على التغيير الحالي", @@ -1992,7 +1992,7 @@ "PE.Views.FileMenuPanels.Settings.txtCm": "سم", "PE.Views.FileMenuPanels.Settings.txtCollaboration": "التعاون", "PE.Views.FileMenuPanels.Settings.txtEditingSaving": "التعديل و الحفظ", - "PE.Views.FileMenuPanels.Settings.txtFastTip": "التحرير المشترك في الوقت الحقيقي. يتم حفظ كافة التغييرات تلقائيا", + "PE.Views.FileMenuPanels.Settings.txtFastTip": "تحرير مشترك في الزمن الحقيقي. كافة التغيرات يتم حفظها تلقائيا", "PE.Views.FileMenuPanels.Settings.txtFitSlide": "الملائمة إلى الشريحة", "PE.Views.FileMenuPanels.Settings.txtFitWidth": "ملائم للعرض", "PE.Views.FileMenuPanels.Settings.txtHieroglyphs": "الهيروغليفية", diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index 6c5c8f06f6..6b2fcc727d 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -473,9 +473,9 @@ "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", "Common.Utils.String.textAlt": "Alt", + "Common.Utils.String.textComma": ",", "Common.Utils.String.textCtrl": "Ctrl", "Common.Utils.String.textShift": "Shift", - "Common.Utils.String.textComma": ",", "Common.Utils.ThemeColor.txtaccent": "Accent", "Common.Utils.ThemeColor.txtAqua": "Aqua", "Common.Utils.ThemeColor.txtbackground": "Background", @@ -2052,6 +2052,7 @@ "PE.Views.HyperlinkSettingsDialog.textEmptyTooltip": "Enter tooltip here", "PE.Views.HyperlinkSettingsDialog.textExternalLink": "External link", "PE.Views.HyperlinkSettingsDialog.textInternalLink": "Slide in this presentation", + "PE.Views.HyperlinkSettingsDialog.textSelectFile": "Select file", "PE.Views.HyperlinkSettingsDialog.textSlides": "Slides", "PE.Views.HyperlinkSettingsDialog.textTipText": "ScreenTip text", "PE.Views.HyperlinkSettingsDialog.textTitle": "Hyperlink settings", @@ -2064,7 +2065,6 @@ "PE.Views.HyperlinkSettingsDialog.txtSizeLimit": "This field is limited to 2083 characters", "PE.Views.HyperlinkSettingsDialog.txtSlide": "Slide", "PE.Views.HyperlinkSettingsDialog.txtUrlPlaceholder": "Enter the web address or select a file", - "PE.Views.HyperlinkSettingsDialog.textSelectFile": "Select file", "PE.Views.ImageSettings.textAdvanced": "Show advanced settings", "PE.Views.ImageSettings.textCrop": "Crop", "PE.Views.ImageSettings.textCropFill": "Fill", @@ -2322,15 +2322,15 @@ "PE.Views.SignatureSettings.txtRemoveWarning": "Do you want to remove this signature?
    It can't be undone.", "PE.Views.SignatureSettings.txtSigned": "Valid signatures have been added to the presentation. The presentation is protected from editing.", "PE.Views.SignatureSettings.txtSignedInvalid": "Some of the digital signatures in presentation are invalid or could not be verified. The presentation is protected from editing.", + "PE.Views.SlideSettings.strApplyAllSlides": "Apply to All Slides", "PE.Views.SlideSettings.strBackground": "Background color", + "PE.Views.SlideSettings.strBackgroundGraphics": "Show Background graphics", + "PE.Views.SlideSettings.strBackgroundReset": "Reset Background", "PE.Views.SlideSettings.strColor": "Color", "PE.Views.SlideSettings.strDateTime": "Show Date and Time", "PE.Views.SlideSettings.strFill": "Background", "PE.Views.SlideSettings.strForeground": "Foreground color", "PE.Views.SlideSettings.strPattern": "Pattern", - "PE.Views.SlideSettings.strBackgroundReset": "Reset Background", - "PE.Views.SlideSettings.strApplyAllSlides": "Apply to All Slides", - "PE.Views.SlideSettings.strBackgroundGraphics": "Show Background graphics", "PE.Views.SlideSettings.strSlideNum": "Show slide number", "PE.Views.SlideSettings.strTransparency": "Opacity", "PE.Views.SlideSettings.textAdvanced": "Show advanced settings", @@ -2691,6 +2691,7 @@ "PE.Views.Toolbar.tipPrint": "Print", "PE.Views.Toolbar.tipPrintQuick": "Quick print", "PE.Views.Toolbar.tipRedo": "Redo", + "PE.Views.Toolbar.tipReplace": "Replace", "PE.Views.Toolbar.tipSave": "Save", "PE.Views.Toolbar.tipSaveCoauth": "Save your changes for the other users to see them.", "PE.Views.Toolbar.tipSelectAll": "Select all", diff --git a/apps/presentationeditor/main/locale/fr.json b/apps/presentationeditor/main/locale/fr.json index 1a983b3485..5ac52be7b8 100644 --- a/apps/presentationeditor/main/locale/fr.json +++ b/apps/presentationeditor/main/locale/fr.json @@ -627,7 +627,7 @@ "Common.Views.Header.tipPrintQuick": "Impression rapide", "Common.Views.Header.tipRedo": "Rétablir", "Common.Views.Header.tipSave": "Enregistrer", - "Common.Views.Header.tipSearch": "Recherche", + "Common.Views.Header.tipSearch": "Rechercher", "Common.Views.Header.tipUndo": "Annuler", "Common.Views.Header.tipUndock": "Détacher en fenêtre séparée", "Common.Views.Header.tipUsers": "Afficher les utilisateurs", @@ -2185,7 +2185,7 @@ "PE.Views.PrintWithPreview.txtPages": "Diapositives", "PE.Views.PrintWithPreview.txtPaperSize": "Format de papier", "PE.Views.PrintWithPreview.txtPrint": "Imprimer", - "PE.Views.PrintWithPreview.txtPrintPdf": "Imprimer au PDF", + "PE.Views.PrintWithPreview.txtPrintPdf": "Imprimer en PDF", "PE.Views.PrintWithPreview.txtPrintRange": "Zone d'impression", "PE.Views.PrintWithPreview.txtPrintSides": "Impression sur les deux côtés", "PE.Views.RightMenu.txtChartSettings": "Paramètres du graphique", diff --git a/apps/presentationeditor/main/locale/ro.json b/apps/presentationeditor/main/locale/ro.json index b07ad21197..ae8544a69b 100644 --- a/apps/presentationeditor/main/locale/ro.json +++ b/apps/presentationeditor/main/locale/ro.json @@ -562,7 +562,7 @@ "Common.Views.Comments.mniPositionAsc": "De sus", "Common.Views.Comments.mniPositionDesc": "De jos", "Common.Views.Comments.textAdd": "Adaugă", - "Common.Views.Comments.textAddComment": "Adaugă comentariu", + "Common.Views.Comments.textAddComment": "Adăugare comentariu", "Common.Views.Comments.textAddCommentToDoc": "Adăugare comentariu la document", "Common.Views.Comments.textAddReply": "Adăugare răspuns", "Common.Views.Comments.textAll": "Toate", @@ -747,7 +747,7 @@ "Common.Views.ReviewChanges.txtCommentResolveAll": "Marchează toate comentariile ca rezolvate", "Common.Views.ReviewChanges.txtCommentResolveCurrent": "Rezolvare comentarii curente", "Common.Views.ReviewChanges.txtCommentResolveMy": "Rezolvarea comentariilor mele", - "Common.Views.ReviewChanges.txtCommentResolveMyCurrent": "Soluționarea comentariilor mele curente", + "Common.Views.ReviewChanges.txtCommentResolveMyCurrent": "Rezolvarea comentariilor mele curente", "Common.Views.ReviewChanges.txtDocLang": "Limbă", "Common.Views.ReviewChanges.txtFinal": "Toate modificările sunt acceptate (Previzualizare)", "Common.Views.ReviewChanges.txtFinalCap": "Final", @@ -1919,7 +1919,7 @@ "PE.Views.FileMenu.btnRecentFilesCaption": "Deschidere document recent", "PE.Views.FileMenu.btnRenameCaption": "Redenumire", "PE.Views.FileMenu.btnReturnCaption": "Înapoi la prezentarea", - "PE.Views.FileMenu.btnRightsCaption": "Permisiuni de acces", + "PE.Views.FileMenu.btnRightsCaption": "Drepturi de acces", "PE.Views.FileMenu.btnSaveAsCaption": "Salvare ca", "PE.Views.FileMenu.btnSaveCaption": "Salvează", "PE.Views.FileMenu.btnSaveCopyAsCaption": "Salvare copie ca", @@ -2416,7 +2416,7 @@ "PE.Views.TableSettings.textBanded": "Alternant", "PE.Views.TableSettings.textBorderColor": "Culoare", "PE.Views.TableSettings.textBorders": "Stil borduri", - "PE.Views.TableSettings.textCellSize": "Dimensiune celula", + "PE.Views.TableSettings.textCellSize": "Dimensiune celulă", "PE.Views.TableSettings.textColumns": "Coloane", "PE.Views.TableSettings.textDistributeCols": "Distribuire coloane", "PE.Views.TableSettings.textDistributeRows": "Distribuire rânduri", diff --git a/apps/presentationeditor/main/locale/vi.json b/apps/presentationeditor/main/locale/vi.json index db4b1ace00..899a6c56e3 100644 --- a/apps/presentationeditor/main/locale/vi.json +++ b/apps/presentationeditor/main/locale/vi.json @@ -114,12 +114,22 @@ "Common.Views.OpenDialog.txtTitleProtected": "File được bảo vệ", "Common.Views.PasswordDialog.txtWarning": "Chú ý: Nếu bạn mất hoặc quên mật khẩu, bạn không thể khôi phục mật khẩu.", "Common.Views.PluginDlg.textLoading": "Đang tải", - "Common.Views.Plugins.groupCaption": "Plugin", - "Common.Views.Plugins.strPlugins": "Plugin", + "Common.Views.PluginPanel.textClosePanel": "Đóng phần bổ trợ", + "Common.Views.Plugins.groupCaption": "Phần bổ trợ", + "Common.Views.Plugins.strPlugins": "Phần bổ trợ", + "Common.Views.Plugins.textBackgroundPlugins": "Phần bổ trợ trong nền", "Common.Views.Plugins.textStart": "Bắt đầu", "Common.Views.Plugins.textStop": "Dừng", + "Common.Views.Plugins.textTheListOfBackgroundPlugins": "Danh sách (các) phần bổ trợ chạy trong nền", + "Common.Views.Protection.hintSignature": "Thêm chữ ký số hoặc dòng chứ ký", + "Common.Views.Protection.txtInvisibleSignature": "Thêm chữ ký số", "Common.Views.RenameDialog.textName": "Tên file", "Common.Views.RenameDialog.txtInvalidName": "Tên file không được chứa bất kỳ ký tự nào sau đây:", + "Common.Views.ReviewChanges.tipAcceptCurrent": "Chấp nhận thay đổi hiện tại", + "Common.Views.ReviewChanges.txtAccept": "Chấp nhận", + "Common.Views.ReviewChanges.txtAcceptAll": "Chấp nhận mọi thay đổi", + "Common.Views.ReviewChanges.txtAcceptChanges": "Chấp nhận thay đổi", + "Common.Views.ReviewChanges.txtAcceptCurrent": "Chấp nhận thay đổi hiện tại", "PE.Controllers.LeftMenu.newDocumentTitle": "Bản trình chiếu không tên", "PE.Controllers.LeftMenu.requestEditRightsText": "Yêu cầu quyền chỉnh sửa...", "PE.Controllers.LeftMenu.textNoTextFound": "Không thể tìm thấy dữ liệu bạn đang tìm kiếm. Vui lòng điều chỉnh các tùy chọn tìm kiếm của bạn.", @@ -269,6 +279,7 @@ "PE.Controllers.Main.uploadImageTitleText": "Đang tải lên hình ảnh", "PE.Controllers.Main.warnBrowserIE9": "Ứng dụng vận hành kém trên IE9. Sử dụng IE10 hoặc cao hơn", "PE.Controllers.Main.warnBrowserZoom": "Hiện cài đặt thu phóng trình duyệt của bạn không được hỗ trợ đầy đủ. Vui lòng thiết lập lại chế độ thu phóng mặc định bằng cách nhấn Ctrl+0.", + "PE.Controllers.Main.warnLicenseAnonymous": "Truy cập bị từ chối cho người dùng ẩn danh.
    Tải liệu này sẽ được mở ở dạng chỉ xem.", "PE.Controllers.Main.warnLicenseExp": "Giấy phép của bạn đã hết hạn.
    Vui lòng cập nhật giấy phép và làm mới trang.", "PE.Controllers.Main.warnNoLicense": "Bạn đang sử dụng phiên bản nguồn mở của %1. Phiên bản có giới hạn các kết nối đồng thời với server tài liệu (20 kết nối cùng một lúc).
    Nếu bạn cần thêm, hãy cân nhắc mua giấy phép thương mại.", "PE.Controllers.Main.warnProcessRightsChange": "Bạn đã bị từ chối quyền chỉnh sửa file này.", @@ -800,11 +811,13 @@ "PE.Views.FileMenu.btnSaveCaption": "Lưu", "PE.Views.FileMenu.btnSettingsCaption": "Cài đặt nâng cao", "PE.Views.FileMenu.btnToEditCaption": "Chỉnh sửa bản trình chiếu", + "PE.Views.FileMenuPanels.DocumentInfo.txtAddAuthor": "Thêm tác giả", "PE.Views.FileMenuPanels.DocumentInfo.txtAuthor": "Tác giả", "PE.Views.FileMenuPanels.DocumentInfo.txtBtnAccessRights": "Thay đổi quyền truy cập", "PE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Địa điểm", "PE.Views.FileMenuPanels.DocumentInfo.txtRights": "Những cá nhân có quyền", "PE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Tiêu đề bản trình chiếu", + "PE.Views.FileMenuPanels.DocumentRights.txtAccessRights": "Quyền truy cập", "PE.Views.FileMenuPanels.DocumentRights.txtBtnAccessRights": "Thay đổi quyền truy cập", "PE.Views.FileMenuPanels.DocumentRights.txtRights": "Những cá nhân có quyền", "PE.Views.FileMenuPanels.Settings.okButtonText": "Áp dụng", @@ -874,7 +887,7 @@ "PE.Views.LeftMenu.tipAbout": "Giới thiệu", "PE.Views.LeftMenu.tipChat": "Chat", "PE.Views.LeftMenu.tipComments": "Bình luận", - "PE.Views.LeftMenu.tipPlugins": "Plugin", + "PE.Views.LeftMenu.tipPlugins": "Phần bổ trợ", "PE.Views.LeftMenu.tipSearch": "Tìm kiếm", "PE.Views.LeftMenu.tipSlides": "Slide", "PE.Views.LeftMenu.tipSupport": "Phản hồi & Hỗ trợ", @@ -950,6 +963,7 @@ "PE.Views.ShapeSettings.textStyle": "Kiểu", "PE.Views.ShapeSettings.textTexture": "Từ Texture", "PE.Views.ShapeSettings.textTile": "Đá lát", + "PE.Views.ShapeSettings.tipAddGradientPoint": "Thêm điểm chuyển màu", "PE.Views.ShapeSettings.txtBrownPaper": "Giấy nâu", "PE.Views.ShapeSettings.txtCanvas": "Canvas", "PE.Views.ShapeSettings.txtCarton": "Hộp bìa cứng", @@ -1019,6 +1033,7 @@ "PE.Views.SlideSettings.textStyle": "Kiểu", "PE.Views.SlideSettings.textTexture": "Từ Texture", "PE.Views.SlideSettings.textTile": "Đá lát", + "PE.Views.SlideSettings.tipAddGradientPoint": "Thêm điểm chuyển màu", "PE.Views.SlideSettings.txtBrownPaper": "Giấy nâu", "PE.Views.SlideSettings.txtCanvas": "Canvas", "PE.Views.SlideSettings.txtCarton": "Hộp bìa cứng", @@ -1143,6 +1158,7 @@ "PE.Views.TextArtSettings.textTexture": "Từ Texture", "PE.Views.TextArtSettings.textTile": "Đá lát", "PE.Views.TextArtSettings.textTransform": "Chuyển đổi", + "PE.Views.TextArtSettings.tipAddGradientPoint": "Thêm điểm chuyển màu", "PE.Views.TextArtSettings.txtBrownPaper": "Giấy nâu", "PE.Views.TextArtSettings.txtCanvas": "Canvas", "PE.Views.TextArtSettings.txtCarton": "Hộp bìa cứng", @@ -1156,6 +1172,7 @@ "PE.Views.TextArtSettings.txtPapyrus": "Giấy cói", "PE.Views.TextArtSettings.txtWood": "Gỗ", "PE.Views.Toolbar.capAddSlide": "Thêm slide", + "PE.Views.Toolbar.capBtnAddComment": "Thêm bình luận", "PE.Views.Toolbar.capBtnComment": "Bình luận", "PE.Views.Toolbar.capInsertChart": "Biểu đồ", "PE.Views.Toolbar.capInsertEquation": "Phương trình", diff --git a/apps/presentationeditor/main/resources/less/toolbar.less b/apps/presentationeditor/main/resources/less/toolbar.less index 18b4fbebe9..bd246d6398 100644 --- a/apps/presentationeditor/main/resources/less/toolbar.less +++ b/apps/presentationeditor/main/resources/less/toolbar.less @@ -145,7 +145,7 @@ } #slot-field-fontname { - width: 89px; + width: 111px; } #slot-field-fontsize { diff --git a/apps/presentationeditor/mobile/locale/ca.json b/apps/presentationeditor/mobile/locale/ca.json index 3605936b1c..a2633a0289 100644 --- a/apps/presentationeditor/mobile/locale/ca.json +++ b/apps/presentationeditor/mobile/locale/ca.json @@ -43,6 +43,12 @@ "textStandartColors": "Colors estàndard", "textThemeColors": "Colors del tema" }, + "Themes": { + "dark": "Fosc", + "light": "Clar", + "system": "Igual que el sistema", + "textTheme": "Tema" + }, "VersionHistory": { "notcriticalErrorTitle": "Advertiment", "textAnonymous": "Anònim", @@ -56,12 +62,6 @@ "textWarningRestoreVersion": "El fitxer actual es desarà a l'historial de versions.", "titleWarningRestoreVersion": "Voleu restaurar aquesta versió?", "txtErrorLoadHistory": "Ha fallat la càrrega del historial" - }, - "Themes": { - "dark": "Dark", - "light": "Light", - "system": "Same as system", - "textTheme": "Theme" } }, "ContextMenu": { @@ -248,8 +248,8 @@ "leaveButtonText": "Sortir d'aquesta Pàgina", "stayButtonText": "Queda't en aquesta Pàgina", "textCloseHistory": "Tanca l'historial", - "textEnterNewFileName": "Enter a new file name", - "textRenameFile": "Rename File" + "textEnterNewFileName": "Introduïu un nom de fitxer nou", + "textRenameFile": "Canvia el nom del fitxer" }, "View": { "Add": { @@ -373,10 +373,12 @@ "textHighlightColor": "Color de ressaltat", "textHorizontalIn": "Horitzontal entrant", "textHorizontalOut": "Horitzontal sortint", + "textHorizontalText": "Text horitzontal", "textHyperlink": "Enllaç", "textImage": "Imatge", "textImageURL": "URL de la imatge ", "textInsertImage": "Inserir una imatge", + "textInvalidName": "El nom del fitxer no pot contenir cap dels caràcters següents:", "textLastColumn": "Última columna", "textLastSlide": "Última diapositiva", "textLayout": "Disposició", @@ -416,6 +418,8 @@ "textReplaceImage": "Substituir la imatge", "textRequired": "Obligatori", "textRight": "Dreta", + "textRotateTextDown": "Gira el text cap avall", + "textRotateTextUp": "Gira el text cap amunt", "textScreenTip": "Consell de pantalla", "textSearch": "Cercar", "textSec": "S", @@ -437,6 +441,7 @@ "textSuperscript": "Superíndex", "textTable": "Taula", "textText": "Text", + "textTextOrientation": "Orientació del text", "textTheme": "Tema", "textTop": "Superior", "textTopLeft": "Superior-esquerra", @@ -452,18 +457,13 @@ "textZoom": "Zoom", "textZoomIn": "Ampliar", "textZoomOut": "Reduir", - "textZoomRotate": "Ampliar i girar", - "textHorizontalText": "Horizontal Text", - "textInvalidName": "The file name cannot contain any of the following characters: ", - "textRotateTextDown": "Rotate Text Down", - "textRotateTextUp": "Rotate Text Up", - "textTextOrientation": "Text Orientation" + "textZoomRotate": "Ampliar i girar" }, "Settings": { "mniSlideStandard": "Estàndard (4:3)", "mniSlideWide": "Pantalla panoràmica (16:9)", "notcriticalErrorTitle": "Advertiment", - "textAbout": "Quant a", + "textAbout": "Quant a...", "textAddress": "adreça:", "textApplication": "Aplicació", "textApplicationSettings": "Configuració de l'aplicació", @@ -475,6 +475,7 @@ "textColorSchemes": "Esquema de color", "textComment": "Comentari", "textCreated": "S'ha creat", + "textDark": "Fosc", "textDarkTheme": "Tema fosc", "textDisableAll": "Inhabilitar-ho tot", "textDisableAllMacrosWithNotification": "Inhabilitar totes les macros amb notificació", @@ -485,6 +486,7 @@ "textEmail": "correu electrònic:", "textEnableAll": "Habilitar-ho tot", "textEnableAllMacrosWithoutNotification": "Habilitar totes les macros sense notificació", + "textExplanationChangeDirection": "L'aplicació es reiniciarà per a l'activació de la interfície RTL", "textFeedback": "Comentaris i servei d'atenció al client", "textFind": "Cercar", "textFindAndReplace": "Cercar i substituir", @@ -494,6 +496,7 @@ "textInch": "Polzada", "textLastModified": "Última modificació", "textLastModifiedBy": "Última modificació feta per", + "textLight": "Clar", "textLoading": "S'està carregant...", "textLocation": "Ubicació", "textMacrosSettings": "Configuració de les macros", @@ -510,6 +513,8 @@ "textReplaceAll": "Substituir-ho tot ", "textRestartApplication": "Reiniciar l'aplicació perquè els canvis tinguin efecte.", "textRTL": "De dreta a esquerra", + "textRtlInterface": "Interfície RTL", + "textSameAsSystem": "Igual que el sistema", "textSearch": "Cercar", "textSettings": "Configuració", "textShowNotification": "Mostrar la notificació", @@ -517,6 +522,7 @@ "textSpellcheck": "Revisió ortogràfica", "textSubject": "Assumpte", "textTel": "tel:", + "textTheme": "Tema", "textTitle": "Títol", "textUnitOfMeasurement": "Unitat de mesura", "textUploaded": "S'ha carregat", @@ -543,13 +549,7 @@ "txtScheme6": "Esplanada", "txtScheme7": "Equitat", "txtScheme8": "Flux", - "txtScheme9": "Foneria", - "textDark": "Dark", - "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", - "textLight": "Light", - "textRtlInterface": "RTL Interface", - "textSameAsSystem": "Same As System", - "textTheme": "Theme" + "txtScheme9": "Foneria" } } } \ No newline at end of file diff --git a/apps/presentationeditor/mobile/locale/fr.json b/apps/presentationeditor/mobile/locale/fr.json index 316723b919..b3d7b7da52 100644 --- a/apps/presentationeditor/mobile/locale/fr.json +++ b/apps/presentationeditor/mobile/locale/fr.json @@ -282,7 +282,7 @@ "textPictureFromLibrary": "Image depuis la bibliothèque", "textPictureFromURL": "Image à partir d'une URL", "textPreviousSlide": "Diapositive précédente", - "textRecommended": "Recommandés", + "textRecommended": "Recommandations", "textRequired": "Obligatoire", "textRows": "Lignes", "textScreenTip": "Info-bulle", @@ -409,7 +409,7 @@ "textPreviousSlide": "Diapositive précédente", "textPt": "pt", "textPush": "Expulsion", - "textRecommended": "Recommandés", + "textRecommended": "Recommandations", "textRemoveChart": "Supprimer le graphique", "textRemoveShape": "Supprimer la forme", "textRemoveTable": "Supprimer le tableau", diff --git a/apps/presentationeditor/mobile/locale/hu.json b/apps/presentationeditor/mobile/locale/hu.json index 5cae4e2c02..3a3b2e78c7 100644 --- a/apps/presentationeditor/mobile/locale/hu.json +++ b/apps/presentationeditor/mobile/locale/hu.json @@ -67,7 +67,7 @@ "ContextMenu": { "errorCopyCutPaste": "A másolás, kivágás és beillesztés a helyi menü segítségével csak az aktuális fájlon belül történik.", "menuAddComment": "Megjegyzés hozzáadása", - "menuAddLink": "Link hozzáadása", + "menuAddLink": "Hivatkozás hozzáadása", "menuCancel": "Mégse", "menuDelete": "Törlés", "menuDeleteTable": "Táblázat törlése", @@ -303,14 +303,14 @@ "textAddress": "Cím", "textAfter": "után", "textAlign": "Rendez", - "textAlignBottom": "Alulra rendez", - "textAlignCenter": "Középre rendez", - "textAlignLeft": "Balra rendez", - "textAlignMiddle": "Középre rendez", - "textAlignRight": "Jobbra rendez", - "textAlignTop": "Felülre rendez ", + "textAlignBottom": "Alulra igazít", + "textAlignCenter": "Közzéppontba igazít", + "textAlignLeft": "Balra igazít", + "textAlignMiddle": "Középre igazít", + "textAlignRight": "Jobbra igazít", + "textAlignTop": "Felülre igazít", "textAllCaps": "Csupa nagybetűs", - "textApplyAll": "Minden diára alkalmaz", + "textApplyAll": "Minden diára alkalmazza", "textArrange": "Elrendez", "textAuto": "Automatikus", "textAutomatic": "Automatikus", @@ -486,6 +486,7 @@ "textEmail": "e-mail:", "textEnableAll": "Összes engedélyezése", "textEnableAllMacrosWithoutNotification": "Engedélyezze az összes makrót értesítés nélkül", + "textExplanationChangeDirection": "Az alkalmazás újraindul az RTL-interfész aktiválásához", "textFeedback": "Visszajelzés és Támogatás", "textFind": "Keresés", "textFindAndReplace": "Keresés és csere", @@ -548,7 +549,6 @@ "txtScheme7": "Saját tőke", "txtScheme8": "Folyam", "txtScheme9": "Öntöde", - "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", "textRtlInterface": "RTL Interface" } } diff --git a/apps/presentationeditor/mobile/locale/pt.json b/apps/presentationeditor/mobile/locale/pt.json index a1f9cdec2b..b5b5ea9f02 100644 --- a/apps/presentationeditor/mobile/locale/pt.json +++ b/apps/presentationeditor/mobile/locale/pt.json @@ -138,7 +138,7 @@ "textRemember": "Lembrar minha escolha", "textReplaceSkipped": "A substituição foi realizada. {0} ocorrências foram ignoradas.", "textReplaceSuccess": "A pesquisa foi realizada. Ocorrências substituídas: {0}", - "textRequestMacros": "Uma macro faz uma solicitação para URL. Deseja permitir a solicitação para %1?", + "textRequestMacros": "Uma macro faz uma solicitação para URL. Deseja permitir o pedido para %1?", "textYes": "Sim", "titleLicenseExp": "A licença expirou", "titleLicenseNotActive": "Licença inativa", @@ -486,6 +486,7 @@ "textEmail": "e-mail:", "textEnableAll": "Habilitar todos", "textEnableAllMacrosWithoutNotification": "Habilitar todas as macros sem notificação", + "textExplanationChangeDirection": "O aplicativo será reiniciado para ativação da interface RTL", "textFeedback": "Feedback e Suporte", "textFind": "Localizar", "textFindAndReplace": "Localizar e substituir", @@ -512,6 +513,7 @@ "textReplaceAll": "Substituir tudo", "textRestartApplication": "Reinicie o aplicativo para que as alterações entrem em vigor", "textRTL": "Da direita para esquerda", + "textRtlInterface": "Interface RTL", "textSameAsSystem": "O mesmo que sistema", "textSearch": "Pesquisar", "textSettings": "Configurações", @@ -547,9 +549,7 @@ "txtScheme6": "Concurso", "txtScheme7": "Patrimônio Líquido", "txtScheme8": "Fluxo", - "txtScheme9": "Fundição", - "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", - "textRtlInterface": "RTL Interface" + "txtScheme9": "Fundição" } } } \ No newline at end of file diff --git a/apps/presentationeditor/mobile/locale/zh-tw.json b/apps/presentationeditor/mobile/locale/zh-tw.json index 64adcd5b0a..5d6e2acd19 100644 --- a/apps/presentationeditor/mobile/locale/zh-tw.json +++ b/apps/presentationeditor/mobile/locale/zh-tw.json @@ -146,7 +146,7 @@ "titleUpdateVersion": "版本已更改", "txtIncorrectPwd": "密碼錯誤", "txtProtected": "一旦輸入密碼並開啟文件,目前的文件密碼將被重設", - "warnLicenseAnonymous": "拒絕匿名使用者存取。
    此文件只能以檢視模式開啟。", + "warnLicenseAnonymous": "拒絕匿名使用者存取。此文件只能以檢視模式開啟。", "warnLicenseBefore": "授權證書未啟用。
    請聯繫您的管理員。", "warnLicenseExceeded": "您已達到同時連線 %1 編輯者的限制。此文件將僅以檢視模式開啟。", "warnLicenseExp": "您的授權已過期。請更新您的授權並重新整理頁面。", @@ -175,11 +175,11 @@ "errorFilePassProtect": "該檔案受到密碼保護,無法開啟。", "errorFileSizeExceed": "檔案大小超過伺服器限制。
    ;請聯絡系統管理員。", "errorForceSave": "儲存檔案時發生錯誤。請使用「另存為」選項將檔案備份保存到您的電腦硬碟,或稍後再試。", - "errorInconsistentExt": "在打開檔案時發生錯誤。檔案內容與副檔名不符。", - "errorInconsistentExtDocx": "開啟檔案時發生錯誤。
    檔案內容對應於文字文件(例如 docx),但檔案的副檔名不一致:%1。", - "errorInconsistentExtPdf": "在打開檔案時發生錯誤。
    檔案內容對應以下格式之一:pdf/djvu/xps/oxps,但檔案的副檔名矛盾:%1。", - "errorInconsistentExtPptx": "開啟檔案時發生錯誤。
    檔案內容對應於簡報(例如 pptx),但檔案的副檔名不一致:%1。", - "errorInconsistentExtXlsx": "開啟檔案時發生錯誤。
    檔案內容對應於試算表(例如 xlsx),但檔案的副檔名不一致:%1。", + "errorInconsistentExt": "在打開檔案時發生錯誤。
    檔案內容與副檔名不符。", + "errorInconsistentExtDocx": "開啟檔案時發生錯誤。
    檔案內容對應到文字檔(例如 docx),但檔案副檔名不一致:%1。", + "errorInconsistentExtPdf": "在打開檔案時發生錯誤。檔案內容對應以下格式之一:pdf/djvu/xps/oxps,但檔案的副檔名矛盾:%1。", + "errorInconsistentExtPptx": "開啟檔案時發生錯誤。
    檔案內容對應到簡報檔(例如 pptx),但檔案副檔名不一致:%1。", + "errorInconsistentExtXlsx": "開啟檔案時發生錯誤。
    檔案內容對應到試算表檔案(例如 xlsx),但檔案副檔名不一致:%1。", "errorKeyEncrypt": "未知的按鍵快捷功能", "errorKeyExpire": "密鑰描述符已過期", "errorLoadingFont": "字型未載入。
    請聯絡您的文件伺服器管理員。", @@ -194,8 +194,8 @@ "errorUsersExceed": "已超出價格方案允許的使用者數量。", "errorViewerDisconnect": "連線已中斷。您仍然可以檢視文件,
    但在連線恢復並重新載入頁面之前,無法下載或列印文件。", "notcriticalErrorTitle": "警告", - "openErrorText": "打開檔案時發生錯誤", - "saveErrorText": "存檔時發生錯誤", + "openErrorText": "開啟文件時發生錯誤", + "saveErrorText": "儲存檔案時發生錯誤", "scriptLoadError": "連線速度太慢,部分元件無法載入。請重新載入頁面。", "splitDividerErrorText": "列數必須是 %1 的除數", "splitMaxColsErrorText": "欄位數量必須少於 %1", @@ -240,7 +240,7 @@ "txtEditingMode": "設定編輯模式...", "uploadImageTextText": "正在上傳圖片...", "uploadImageTitleText": "正在上傳圖片", - "waitText": "請耐心等待..." + "waitText": "請稍候..." }, "Toolbar": { "dlgLeaveMsgText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"等待自動儲存,或點擊\"離開此頁面\"放棄所有未儲存的變更。", diff --git a/apps/presentationeditor/mobile/src/controller/Main.jsx b/apps/presentationeditor/mobile/src/controller/Main.jsx index 3bd8397618..699f13223e 100644 --- a/apps/presentationeditor/mobile/src/controller/Main.jsx +++ b/apps/presentationeditor/mobile/src/controller/Main.jsx @@ -961,7 +961,9 @@ class MainController extends Component { return; } this._state.isFromGatewayDownloadAs = true; - this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PPTX, true)); + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.PPTX, true); + options.asc_setIsSaveAs(true); + this.api.asc_DownloadAs(options); } onRequestClose () { diff --git a/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx b/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx index 102956adf1..faa1c49f54 100644 --- a/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx +++ b/apps/presentationeditor/mobile/src/controller/add/AddLink.jsx @@ -3,7 +3,7 @@ import { f7, Popup, Popover, View } from 'framework7-react'; import {Device} from '../../../../../common/mobile/utils/device'; import { withTranslation} from 'react-i18next'; -import {PageLink, PageTypeLink, PageLinkTo} from '../../view/add/AddLink'; +import {PageTypeLink, PageLinkTo, ObservablePageLink} from '../../view/add/AddLink'; const routes = [ { @@ -140,17 +140,17 @@ class AddLinkController extends Component { Device.phone ? this.props.closeOptions('add-link')}> - + : this.props.closeOptions('add-link')}> - + : - + ) } } diff --git a/apps/presentationeditor/mobile/src/controller/edit/EditLink.jsx b/apps/presentationeditor/mobile/src/controller/edit/EditLink.jsx index 124b787b4d..7bdf8a3c22 100644 --- a/apps/presentationeditor/mobile/src/controller/edit/EditLink.jsx +++ b/apps/presentationeditor/mobile/src/controller/edit/EditLink.jsx @@ -4,16 +4,16 @@ import { Device } from '../../../../../common/mobile/utils/device'; import {observer, inject} from "mobx-react"; import { withTranslation } from 'react-i18next'; -import { EditLink, PageEditTypeLink, PageEditLinkTo } from '../../view/edit/EditLink'; +import { EditLink, ObservablePageEditTypeLink, ObservablePageEditLinkTo } from '../../view/edit/EditLink'; const routes = [ { path: '/edit-link-type/', - component: PageEditTypeLink + component: ObservablePageEditTypeLink }, { path: '/edit-link-to/', - component: PageEditLinkTo + component: ObservablePageEditLinkTo } ]; @@ -21,12 +21,9 @@ class EditLinkController extends Component { constructor (props) { super(props); - const api = Common.EditorApi.get(); - this.onEditLink = this.onEditLink.bind(this); this.onRemoveLink = this.onRemoveLink.bind(this); this.initLink = this.initLink.bind(this); - this.slidesCount = api.getCountPages(); this.initLink(); } @@ -200,7 +197,6 @@ class EditLinkController extends Component { slideNum={this.slideNum} onEditLink={this.onEditLink} onRemoveLink={this.onRemoveLink} - slidesCount={this.slidesCount} closeModal={this.closeModal} isNavigate={this.props.isNavigate} /> @@ -219,7 +215,6 @@ class EditLinkController extends Component { slideNum={this.slideNum} onEditLink={this.onEditLink} onRemoveLink={this.onRemoveLink} - slidesCount={this.slidesCount} closeModal={this.closeModal} isNavigate={this.props.isNavigate} /> @@ -236,7 +231,6 @@ class EditLinkController extends Component { slideNum={this.slideNum} onEditLink={this.onEditLink} onRemoveLink={this.onRemoveLink} - slidesCount={this.slidesCount} closeModal={this.closeModal} isNavigate={this.props.isNavigate} /> diff --git a/apps/presentationeditor/mobile/src/store/appOptions.js b/apps/presentationeditor/mobile/src/store/appOptions.js index fe2d42631d..34cfde081e 100644 --- a/apps/presentationeditor/mobile/src/store/appOptions.js +++ b/apps/presentationeditor/mobile/src/store/appOptions.js @@ -110,7 +110,7 @@ export class storeAppOptions { isSupportEditFeature; this.isEdit = this.canLicense && this.canEdit && this.config.mode !== 'view'; this.canReview = this.canLicense && this.isEdit && (permissions.review===true); - this.canUseHistory = this.canLicense && !this.isLightVersion && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp; + this.canUseHistory = this.canLicense && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp && !this.isOffline; this.canHistoryClose = this.config.canHistoryClose; this.canHistoryRestore= this.config.canHistoryRestore; this.canUseMailMerge = this.canLicense && this.canEdit && !this.isDesktopApp; diff --git a/apps/presentationeditor/mobile/src/view/Toolbar.jsx b/apps/presentationeditor/mobile/src/view/Toolbar.jsx index 62359eeb11..1f97346842 100644 --- a/apps/presentationeditor/mobile/src/view/Toolbar.jsx +++ b/apps/presentationeditor/mobile/src/view/Toolbar.jsx @@ -1,5 +1,5 @@ -import React, {Fragment, useEffect} from 'react'; -import {NavLeft, NavRight, NavTitle, Link} from 'framework7-react'; +import React, {Fragment} from 'react'; +import {NavLeft, NavRight, Link} from 'framework7-react'; import { Device } from '../../../../common/mobile/utils/device'; import EditorUIController from '../lib/patch' import { useTranslation } from 'react-i18next'; @@ -8,42 +8,13 @@ const ToolbarView = props => { const { t } = useTranslation(); const isDisconnected = props.isDisconnected; const docTitle = props.docTitle; - const docTitleLength = docTitle.length; const isVersionHistoryMode = props.isVersionHistoryMode; const isOpenModal = props.isOpenModal; - const correctOverflowedText = el => { - if(el) { - el.innerText = docTitle; - - if(el.scrollWidth > el.clientWidth) { - const arrDocTitle = docTitle.split('.'); - const ext = arrDocTitle[1]; - const name = arrDocTitle[0]; - const diff = Math.floor(docTitleLength * el.clientWidth / el.scrollWidth - ext.length - 6); - const shortName = name.substring(0, diff).trim(); - - return `${shortName}...${ext}`; - } - - return docTitle; - } - }; - - useEffect(() => { - if(!Device.phone) { - const elemTitle = document.querySelector('.subnavbar .title'); - - if (elemTitle) { - elemTitle.innerText = correctOverflowedText(elemTitle); - } - } - }, [docTitle]); - return ( - {(props.isShowBack && !isVersionHistoryMode) && Common.Notifications.trigger('goback')}>} + {(props.isShowBack && !isVersionHistoryMode) && Common.Notifications.trigger('goback')}>} {isVersionHistoryMode ? { e.preventDefault(); props.closeHistory(); @@ -57,10 +28,9 @@ const ToolbarView = props => { {(!Device.phone && !isVersionHistoryMode) &&
    props.changeTitleHandler()} style={{width: '71%'}}> - {props.docTitle} + {docTitle}
    } - {/* props.changeTitleHandler()} style={{width: '71%'}}>{props.docTitle}} */} {(Device.android && props.isEdit && EditorUIController.getUndoRedo && !isVersionHistoryMode) && EditorUIController.getUndoRedo({ disabledUndo: !props.isCanUndo || isDisconnected, diff --git a/apps/presentationeditor/mobile/src/view/add/Add.jsx b/apps/presentationeditor/mobile/src/view/add/Add.jsx index 83ae10ac50..219acdd181 100644 --- a/apps/presentationeditor/mobile/src/view/add/Add.jsx +++ b/apps/presentationeditor/mobile/src/view/add/Add.jsx @@ -7,7 +7,7 @@ import { PageAddTable } from "./AddOther"; import { AddLinkController } from "../../controller/add/AddLink"; import { PageTypeLink, PageLinkTo } from "./AddLink"; import { EditLinkController } from '../../controller/edit/EditLink'; -import { PageEditTypeLink, PageEditLinkTo } from '../../view/edit/EditLink'; +import { ObservablePageEditTypeLink, ObservablePageEditLinkTo } from '../../view/edit/EditLink'; import AddingPage from './AddingPage'; import { MainContext } from '../../page/main'; @@ -46,11 +46,11 @@ const routes = [ }, { path: '/edit-link-type/', - component: PageEditTypeLink + component: ObservablePageEditTypeLink }, { path: '/edit-link-to/', - component: PageEditLinkTo + component: ObservablePageEditLinkTo }, // Image diff --git a/apps/presentationeditor/mobile/src/view/add/AddLink.jsx b/apps/presentationeditor/mobile/src/view/add/AddLink.jsx index e3d06702db..06b8642730 100644 --- a/apps/presentationeditor/mobile/src/view/add/AddLink.jsx +++ b/apps/presentationeditor/mobile/src/view/add/AddLink.jsx @@ -1,6 +1,6 @@ import React, {useState} from 'react'; import {observer, inject} from "mobx-react"; -import {List, ListItem, Page, Navbar, Icon, ListButton, ListInput, Segmented, Button, Link, NavLeft, NavRight, NavTitle, f7} from 'framework7-react'; +import {List, ListItem, Page, Navbar, Icon, ListInput, Segmented, Button, Link, NavLeft, NavRight, NavTitle, f7} from 'framework7-react'; import { useTranslation } from 'react-i18next'; import {Device} from "../../../../../common/mobile/utils/device"; @@ -31,6 +31,7 @@ const PageLinkTo = props => { const isAndroid = Device.android; const { t } = useTranslation(); const _t = t('View.Add', {returnObjects: true}); + const countPages = props.countPages; const isNavigate = props.isNavigate; const [stateTypeTo, setTypeTo] = useState(props.curTo); @@ -39,17 +40,16 @@ const PageLinkTo = props => { props.changeTo(type); }; - const [stateNumberTo, setNumberTo] = useState(0); + const [stateNumberTo, setNumberTo] = useState(props.numberTo); + const changeNumber = (curNumber, isDecrement) => { - setTypeTo(4); - let value; - if (isDecrement) { - value = curNumber - 1; - } else { - value = curNumber + 1; + let value = isDecrement ? Math.max(curNumber - 1, 1) : Math.min(curNumber + 1, countPages); + + if (value !== curNumber) { + setTypeTo(4); + setNumberTo(value); + props.changeTo(4, value); } - setNumberTo(value); - props.changeTo(4, value); }; return ( @@ -67,13 +67,13 @@ const PageLinkTo = props => { {changeTypeTo(2)}}> {changeTypeTo(3)}}> - {!isAndroid &&
    {stateNumberTo + 1}
    } + {!isAndroid &&
    {stateNumberTo}
    }
    - {isAndroid && } + {isAndroid && } @@ -88,6 +88,7 @@ const PageLinkTo = props => { const PageLink = props => { const { t } = useTranslation(); const _t = t('View.Add', {returnObjects: true}); + const countPages = props.storeToolbarSettings?.countPages; const regx = /["https://"]/g const isNavigate = props.isNavigate; const [typeLink, setTypeLink] = useState(1); @@ -97,10 +98,10 @@ const PageLink = props => { }; const [link, setLink] = useState(''); - const [linkTo, setLinkTo] = useState(0); const [displayTo, setDisplayTo] = useState(_t.textNextSlide); - const [numberTo, setNumberTo] = useState(0); + const [numberTo, setNumberTo] = useState(1); + const changeTo = (type, number) => { setLinkTo(type); switch (type) { @@ -108,7 +109,7 @@ const PageLink = props => { case 1 : setDisplayTo(_t.textPreviousSlide); break; case 2 : setDisplayTo(_t.textFirstSlide); break; case 3 : setDisplayTo(_t.textLastSlide); break; - case 4 : setDisplayTo(`${_t.textSlide} ${number + 1}`); setNumberTo(number); break; + case 4 : setDisplayTo(`${_t.textSlide} ${number}`); setNumberTo(number); break; } }; @@ -158,7 +159,9 @@ const PageLink = props => { } { ) }; -export {PageLink, +const ObservablePageLink = inject('storeToolbarSettings')(observer(PageLink)) + +export {ObservablePageLink, PageLinkTo, PageTypeLink} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/src/view/edit/EditLink.jsx b/apps/presentationeditor/mobile/src/view/edit/EditLink.jsx index 5a0844f378..f2c9ef293d 100644 --- a/apps/presentationeditor/mobile/src/view/edit/EditLink.jsx +++ b/apps/presentationeditor/mobile/src/view/edit/EditLink.jsx @@ -1,4 +1,4 @@ -import React, {useState, useEffect} from 'react'; +import React, {useState} from 'react'; import {observer, inject} from "mobx-react"; import {f7, List, ListItem, Page, Navbar, Icon, ListButton, ListInput, Segmented, Button, NavRight, Link, NavLeft, NavTitle} from 'framework7-react'; import { useTranslation } from 'react-i18next'; @@ -10,6 +10,7 @@ const PageEditTypeLink = props => { const [typeLink, setTypeLink] = useState(props.curType); const settings = props.storeFocusObjects.settings; + if (settings.indexOf('hyperlink') === -1) { $$('.sheet-modal.modal-in').length > 0 && f7.sheet.close(); return null; @@ -36,7 +37,7 @@ const PageEditLinkTo = props => { const isAndroid = Device.android; const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); - const slidesCount = props.slidesCount; + const countPages = props.storeToolbarSettings?.countPages; const [stateTypeTo, setTypeTo] = useState(props.curTo); const changeTypeTo = (type) => { @@ -47,17 +48,13 @@ const PageEditLinkTo = props => { const [stateNumberTo, setNumberTo] = useState(props.numberTo); const changeNumber = (curNumber, isDecrement) => { - setTypeTo(4); - let value; + let value = isDecrement ? Math.max(curNumber - 1, 1) : Math.min(curNumber + 1, countPages); - if (isDecrement) { - value = Math.max(0, --curNumber); - } else { - value = Math.min(slidesCount - 1, ++curNumber); + if (value !== curNumber) { + setTypeTo(4); + setNumberTo(value); + props.changeTo(4, value); } - - setNumberTo(value); - props.changeTo(4, value); }; const settings = props.storeFocusObjects.settings; @@ -81,13 +78,13 @@ const PageEditLinkTo = props => { {changeTypeTo(2)}}> {changeTypeTo(3)}}> - {!isAndroid &&
    {stateNumberTo + 1}
    } + {!isAndroid &&
    {stateNumberTo}
    }
    - {isAndroid && } + {isAndroid && } @@ -114,7 +111,7 @@ const PageLink = props => { 1: `${_t.textPreviousSlide}`, 2: `${_t.textFirstSlide}`, 3: `${_t.textLastSlide}`, - 4: `${_t.textSlide} ${slideNum + 1}` + 4: `${_t.textSlide} ${slideNum}` }; const [typeLink, setTypeLink] = useState(valueTypeLink); @@ -136,7 +133,7 @@ const PageLink = props => { case 1 : setDisplayTo(_t.textPreviousSlide); break; case 2 : setDisplayTo(_t.textFirstSlide); break; case 3 : setDisplayTo(_t.textLastSlide); break; - case 4 : setDisplayTo(`${_t.textSlide} ${number + 1}`); setNumberTo(number); break; + case 4 : setDisplayTo(`${_t.textSlide} ${number}`); setNumberTo(number); break; } }; @@ -182,8 +179,7 @@ const PageLink = props => { changeTo: changeTo, curTo: linkTo, numberTo: numberTo, - initLink: props.initLink, - slidesCount: props.slidesCount + initLink: props.initLink }}/> } { ) }; -const _PageEditLinkTo = inject("storeFocusObjects")(observer(PageEditLinkTo)); -const _PageEditTypeLink = inject("storeFocusObjects")(observer(PageEditTypeLink)); +const ObservablePageEditLinkTo = inject("storeFocusObjects", "storeToolbarSettings")(observer(PageEditLinkTo)); +const ObservablePageEditTypeLink = inject("storeFocusObjects")(observer(PageEditTypeLink)); -export {PageLink as EditLink, - _PageEditLinkTo as PageEditLinkTo, - _PageEditTypeLink as PageEditTypeLink} \ No newline at end of file +export { + PageLink as EditLink, + ObservablePageEditLinkTo, + ObservablePageEditTypeLink +} \ No newline at end of file diff --git a/apps/presentationeditor/mobile/src/view/settings/SettingsPage.jsx b/apps/presentationeditor/mobile/src/view/settings/SettingsPage.jsx index 5c8cca6ff2..ce04763c8a 100644 --- a/apps/presentationeditor/mobile/src/view/settings/SettingsPage.jsx +++ b/apps/presentationeditor/mobile/src/view/settings/SettingsPage.jsx @@ -12,6 +12,7 @@ const SettingsPage = inject('storeAppOptions', 'storeToolbarSettings', 'storePre const {openOptions, isBranding} = useContext(MainContext); const settingsContext = useContext(SettingsContext); const appOptions = props.storeAppOptions; + const canUseHistory = appOptions.canUseHistory; const storeToolbarSettings = props.storeToolbarSettings; const disabledPreview = storeToolbarSettings.countPages <= 0; const storePresentationInfo = props.storePresentationInfo; @@ -81,7 +82,7 @@ const SettingsPage = inject('storeAppOptions', 'storeToolbarSettings', 'storePre - {_isEdit && + {_isEdit && canUseHistory && { if(Device.phone) { onOpenOptions('history'); diff --git a/apps/spreadsheeteditor/embed/index.html b/apps/spreadsheeteditor/embed/index.html index cc561d86e4..49dbff7d27 100644 --- a/apps/spreadsheeteditor/embed/index.html +++ b/apps/spreadsheeteditor/embed/index.html @@ -193,19 +193,24 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; var elem = document.querySelector('.loading-logo'); - if (elem && logo) { - elem.style.backgroundImage= 'none'; - elem.style.width = 'auto'; - elem.style.height = 'auto'; - var img = document.querySelector('.loading-logo img'); - img && img.setAttribute('src', logo); - img.style.opacity = 1; + if (elem) { + if (hideLogo) { + elem.style.display = 'none'; + } else if (logo) { + elem.style.backgroundImage= 'none'; + elem.style.width = 'auto'; + elem.style.height = 'auto'; + var img = document.querySelector('.loading-logo img'); + img && img.setAttribute('src', logo); + img.style.opacity = 1; + } } diff --git a/apps/spreadsheeteditor/embed/index.html.deploy b/apps/spreadsheeteditor/embed/index.html.deploy index 3b2c511069..65013a74ca 100644 --- a/apps/spreadsheeteditor/embed/index.html.deploy +++ b/apps/spreadsheeteditor/embed/index.html.deploy @@ -184,19 +184,24 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null; window.frameEditorId = params["frameEditorId"]; window.parentOrigin = params["parentOrigin"]; var elem = document.querySelector('.loading-logo'); - if (elem && logo) { - elem.style.backgroundImage= 'none'; - elem.style.width = 'auto'; - elem.style.height = 'auto'; - var img = document.querySelector('.loading-logo img'); - img && img.setAttribute('src', logo); - img.style.opacity = 1; + if (elem) { + if (hideLogo) { + elem.style.display = 'none'; + } else if (logo) { + elem.style.backgroundImage= 'none'; + elem.style.width = 'auto'; + elem.style.height = 'auto'; + var img = document.querySelector('.loading-logo img'); + img && img.setAttribute('src', logo); + img.style.opacity = 1; + } } diff --git a/apps/spreadsheeteditor/embed/js/ApplicationController.js b/apps/spreadsheeteditor/embed/js/ApplicationController.js index fd36201ffa..47d8611d19 100644 --- a/apps/spreadsheeteditor/embed/js/ApplicationController.js +++ b/apps/spreadsheeteditor/embed/js/ApplicationController.js @@ -435,9 +435,9 @@ SSE.ApplicationController = new(function(){ _right_width = $parent.next().outerWidth(); if ( _left_width < _right_width ) - $parent.css('padding-left', _right_width - _left_width); + $parent.css('padding-left', parseFloat($parent.css('padding-left')) + _right_width - _left_width); else - $parent.css('padding-right', _left_width - _right_width); + $parent.css('padding-right', parseFloat($parent.css('padding-right')) + _left_width - _right_width); onLongActionBegin(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); api.asc_setViewMode(true); @@ -658,7 +658,11 @@ SSE.ApplicationController = new(function(){ Common.Gateway.reportError(Asc.c_oAscError.ID.AccessDeny, me.errorAccessDeny); return; } - api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true)); + if (api) { + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true); + options.asc_setIsSaveAs(true); + api.asc_DownloadAs(options); + } } function onApiMouseMove(array) { @@ -717,6 +721,11 @@ SSE.ApplicationController = new(function(){ function setBranding(value) { if ( value && value.logo) { var logo = $('#header-logo'); + if (value.logo.visible===false) { + logo.addClass('hidden'); + return; + } + if (value.logo.image || value.logo.imageEmbedded) { logo.html(''); logo.css({'background-image': 'none', width: 'auto', height: 'auto'}); diff --git a/apps/spreadsheeteditor/embed/locale/fr.json b/apps/spreadsheeteditor/embed/locale/fr.json index 05b0219086..94109d7cab 100644 --- a/apps/spreadsheeteditor/embed/locale/fr.json +++ b/apps/spreadsheeteditor/embed/locale/fr.json @@ -47,6 +47,6 @@ "SSE.ApplicationView.txtFileLocation": "Ouvrir l'emplacement du fichier", "SSE.ApplicationView.txtFullScreen": "Plein écran", "SSE.ApplicationView.txtPrint": "Imprimer", - "SSE.ApplicationView.txtSearch": "Recherche", + "SSE.ApplicationView.txtSearch": "Rechercher", "SSE.ApplicationView.txtShare": "Partager" } \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/hu.json b/apps/spreadsheeteditor/embed/locale/hu.json index 6fd26a2389..60714333c9 100644 --- a/apps/spreadsheeteditor/embed/locale/hu.json +++ b/apps/spreadsheeteditor/embed/locale/hu.json @@ -4,7 +4,7 @@ "common.view.modals.txtHeight": "Magasság", "common.view.modals.txtIncorrectPwd": "Érvénytelen jelszó", "common.view.modals.txtOpenFile": "Írjon be egy jelszót a fájl megnyitáshoz", - "common.view.modals.txtShare": "Link megosztása", + "common.view.modals.txtShare": "Hivatkozás megosztása", "common.view.modals.txtTitleProtected": "Védett fájl", "common.view.modals.txtWidth": "Szélesség", "common.view.SearchBar.textFind": "Keres", diff --git a/apps/spreadsheeteditor/embed/locale/pt-pt.json b/apps/spreadsheeteditor/embed/locale/pt-pt.json index ef1c1f2842..f2115203e0 100644 --- a/apps/spreadsheeteditor/embed/locale/pt-pt.json +++ b/apps/spreadsheeteditor/embed/locale/pt-pt.json @@ -45,7 +45,7 @@ "SSE.ApplicationView.txtDownload": "Descarregar", "SSE.ApplicationView.txtEmbed": "Incorporar", "SSE.ApplicationView.txtFileLocation": "Abrir localização do ficheiro", - "SSE.ApplicationView.txtFullScreen": "Ecrã completo", + "SSE.ApplicationView.txtFullScreen": "Ecrã inteiro", "SSE.ApplicationView.txtPrint": "Imprimir", "SSE.ApplicationView.txtSearch": "Pesquisar", "SSE.ApplicationView.txtShare": "Partilhar" diff --git a/apps/spreadsheeteditor/embed/locale/vi.json b/apps/spreadsheeteditor/embed/locale/vi.json index 0ce35919d3..c5a4472ea8 100644 --- a/apps/spreadsheeteditor/embed/locale/vi.json +++ b/apps/spreadsheeteditor/embed/locale/vi.json @@ -1,7 +1,12 @@ { "common.view.modals.txtCopy": "Sao chép vào khay nhớ tạm", + "common.view.modals.txtEmbed": "Nhúng", "common.view.modals.txtHeight": "Chiều cao", + "common.view.modals.txtIncorrectPwd": "Mật khẩu sai", + "common.view.modals.txtOpenFile": "Nhập mật khẩu để mở tệp", "common.view.modals.txtWidth": "Chiều rộng", + "common.view.SearchBar.textFind": "Tìm", + "SSE.ApplicationController.convertationErrorText": "Chuyển đổi thất bại", "SSE.ApplicationController.convertationTimeoutText": "Đã quá thời gian chờ chuyển đổi.", "SSE.ApplicationController.criticalErrorTitle": "Lỗi", "SSE.ApplicationController.downloadErrorText": "Tải về không thành công.", @@ -9,14 +14,26 @@ "SSE.ApplicationController.errorAccessDeny": "Bạn đang cố gắng thực hiện hành động mà bạn không có quyền.
    Vui lòng liên hệ với quản trị viên Server Tài liệu của bạn.", "SSE.ApplicationController.errorDefaultMessage": "Mã lỗi: %1", "SSE.ApplicationController.errorFilePassProtect": "Tài liệu được bảo vệ bằng mật khẩu và không thể mở được.", + "SSE.ApplicationController.errorInconsistentExtPdf": "Xảy ra lỗi khi mở tệp.
    Nội dung tệp tương ứng với một trong các định dạng sau: pdf/djvu/xps/oxps, nhưng tệp có phần mở rộng không nhất quán: %1.", + "SSE.ApplicationController.errorInconsistentExtPptx": "Đã xảy ra lỗi khi mở tệp.
    Nội dung tệp tương ứng với bản trình bày (ví dụ: pptx), nhưng tệp có phần mở rộng không nhất quán: %1.", + "SSE.ApplicationController.errorLoadingFont": "Phông chữ không được tải.
    Vui lòng liên hệ quản trị viên Máy chủ Tài liệu.", + "SSE.ApplicationController.errorUpdateVersionOnDisconnect": "Kết nối đã được khôi phục và phiên bản tệp đã được thay đổi.
    Trước khi có thể tiếp tục làm việc, bạn cần tải xuống tệp hoặc sao chép nội dung của tệp để đảm bảo không có gì bị mất, sau đó tải lại trang này.", "SSE.ApplicationController.errorUserDrop": "Không thể truy cập file ngay lúc này.", "SSE.ApplicationController.notcriticalErrorTitle": "Cảnh báo", + "SSE.ApplicationController.openErrorText": "Xảy ra lỗi khi mở tệp", + "SSE.ApplicationController.textAnonymous": "Ẩn danh", + "SSE.ApplicationController.textGuest": "Khách", "SSE.ApplicationController.textLoadingDocument": "Đang tải bảng tính", "SSE.ApplicationController.textOf": "trên", + "SSE.ApplicationController.titleLicenseExp": "Giấy phép hết hạn", + "SSE.ApplicationController.titleLicenseNotActive": "Giấy phép không có hiệu lực", "SSE.ApplicationController.txtClose": "Đóng", "SSE.ApplicationController.unknownErrorText": "Lỗi không xác định.", "SSE.ApplicationController.unsupportedBrowserErrorText": "Trình duyệt của bạn không được hỗ trợ.", + "SSE.ApplicationController.warnLicenseBefore": "Giấy phép không có hiệu lực. Liện hệ quản trị viên của bạn", "SSE.ApplicationView.txtDownload": "Tải về", + "SSE.ApplicationView.txtEmbed": "Nhúng", + "SSE.ApplicationView.txtFileLocation": "Mở vị trí tệp", "SSE.ApplicationView.txtFullScreen": "Toàn màn hình", "SSE.ApplicationView.txtShare": "Chia sẻ" } \ No newline at end of file diff --git a/apps/spreadsheeteditor/embed/locale/zh-tw.json b/apps/spreadsheeteditor/embed/locale/zh-tw.json index d22f3b8e88..5951888acf 100644 --- a/apps/spreadsheeteditor/embed/locale/zh-tw.json +++ b/apps/spreadsheeteditor/embed/locale/zh-tw.json @@ -9,7 +9,7 @@ "SSE.ApplicationController.convertationTimeoutText": "轉換逾時。", "SSE.ApplicationController.criticalErrorTitle": "錯誤", "SSE.ApplicationController.downloadErrorText": "下載失敗。", - "SSE.ApplicationController.downloadTextText": "下載電子表格中...", + "SSE.ApplicationController.downloadTextText": "正在下載試算表...", "SSE.ApplicationController.errorAccessDeny": "您正試圖執行您無權限的操作。
    請聯繫您的文件伺服器管理員。", "SSE.ApplicationController.errorDefaultMessage": "錯誤碼:%1", "SSE.ApplicationController.errorFilePassProtect": "該文件已被密碼保護,無法打開。", @@ -20,7 +20,7 @@ "SSE.ApplicationController.errorInconsistentExtPdf": "在打開檔案時發生錯誤。
    檔案內容對應以下格式之一:pdf/djvu/xps/oxps,但檔案的副檔名矛盾:%1。", "SSE.ApplicationController.errorInconsistentExtPptx": "開啟檔案時發生錯誤。
    檔案內容對應於簡報(例如 pptx),但檔案的副檔名不一致:%1。", "SSE.ApplicationController.errorInconsistentExtXlsx": "開啟檔案時發生錯誤。
    檔案內容對應於試算表(例如 xlsx),但檔案的副檔名不一致:%1。", - "SSE.ApplicationController.errorLoadingFont": "字型未載入。
    請聯絡您的文件伺服器管理員。", + "SSE.ApplicationController.errorLoadingFont": "字型未載入。請聯絡您的文件伺服器管理員。", "SSE.ApplicationController.errorTokenExpire": "文件安全令牌已過期。
    請聯繫相關管理員。", "SSE.ApplicationController.errorUpdateVersionOnDisconnect": "連線已恢復,且檔案版本已更改。
    在您繼續工作之前,您需要下載該檔案或複製其內容以確保不會遺失任何內容,然後重新載入此頁面。", "SSE.ApplicationController.errorUserDrop": "目前無法存取該檔案。", @@ -34,7 +34,7 @@ "SSE.ApplicationController.txtClose": "關閉", "SSE.ApplicationController.unknownErrorText": "未知錯誤。", "SSE.ApplicationController.unsupportedBrowserErrorText": "不支援您的瀏覽器。", - "SSE.ApplicationController.waitText": "請耐心等待...", + "SSE.ApplicationController.waitText": "請稍候...", "SSE.ApplicationView.txtDownload": "下載", "SSE.ApplicationView.txtEmbed": "嵌入", "SSE.ApplicationView.txtFileLocation": "打開檔案位置", diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index 9777c09017..6173131bfa 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -383,7 +383,9 @@ define([ if (btn == 'ok') { me.showLostDataWarning(function () { me.isFromFileDownloadAs = ext; - Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, me.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format, true)); + var options = new Asc.asc_CDownloadOptions(format, true); + options.asc_setIsSaveAs(true); + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, me.api.asc_getAdvancedOptions(), 2, options); menu.hide(); }); } @@ -392,7 +394,9 @@ define([ } else me.showLostDataWarning(function () { me.isFromFileDownloadAs = ext; - Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, me.api.asc_getAdvancedOptions(), 2, new Asc.asc_CDownloadOptions(format, true)); + var options = new Asc.asc_CDownloadOptions(format, true); + options.asc_setIsSaveAs(true); + Common.NotificationCenter.trigger('download:advanced', Asc.c_oAscAdvancedOptionsID.CSV, me.api.asc_getAdvancedOptions(), 2, options); menu.hide(); }); } else if (format == Asc.c_oAscFileType.PDF || format == Asc.c_oAscFileType.PDFA) { @@ -401,7 +405,9 @@ define([ Common.NotificationCenter.trigger('download:settings', this.leftMenu, format, true); } else { this.isFromFileDownloadAs = ext; - this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(format, true)); + var options = new Asc.asc_CDownloadOptions(format, true); + options.asc_setIsSaveAs(true); + this.api.asc_DownloadAs(options); menu.hide(); } }, @@ -832,8 +838,7 @@ define([ return false; } } - if ( this.leftMenu.btnAbout.pressed || this.leftMenu.isPluginButtonPressed() || - ($(e.target).parents('#left-menu').length || this.leftMenu.btnComments.pressed) && this.api.isCellEdited!==true) { + if ( this.leftMenu.btnAbout.pressed) { if (!Common.UI.HintManager.isHintVisible()) { this.leftMenu.close(); Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index e597ec4d03..316be9d0d0 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -657,8 +657,11 @@ define([ _format = Asc.c_oAscFileType.XLSX; if (_format == Asc.c_oAscFileType.PDF || _format == Asc.c_oAscFileType.PDFA) Common.NotificationCenter.trigger('download:settings', this, _format, true); - else - this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format, true)); + else { + var options = new Asc.asc_CDownloadOptions(_format, true); + options.asc_setIsSaveAs(true); + this.api.asc_DownloadAs(options); + } }, onProcessMouse: function(data) { @@ -1433,9 +1436,8 @@ define([ this.getApplication().getController('Common.Controllers.Plugins').setMode(this.appOptions); this.editorConfig.customization && Common.UI.LayoutManager.init(this.editorConfig.customization.layout, this.appOptions.canBrandingExt); this.editorConfig.customization && Common.UI.FeaturesManager.init(this.editorConfig.customization.features, this.appOptions.canBrandingExt); - Common.UI.ExternalUsers.init(this.appOptions.canRequestUsers); - this.appOptions.user.image && Common.UI.ExternalUsers.setImage(this.appOptions.user.id, this.appOptions.user.image); - Common.UI.ExternalUsers.get('info', this.appOptions.user.id); + Common.UI.ExternalUsers.init(this.appOptions.canRequestUsers, this.api); + this.appOptions.user.image ? Common.UI.ExternalUsers.setImage(this.appOptions.user.id, this.appOptions.user.image) : Common.UI.ExternalUsers.get('info', this.appOptions.user.id); } this.appOptions.canUseHistory = this.appOptions.canLicense && this.editorConfig.canUseHistory && this.appOptions.canCoAuthoring && !this.appOptions.isOffline; @@ -3314,11 +3316,12 @@ define([ docIdPrev = (ver>0 && versions[ver-1]) ? versions[ver-1].key : version.key + '0'; user = usersStore.findUser(version.user.id); if (!user) { + var color = Common.UI.ExternalUsers.getColor(version.user.id || version.user.name || this.textAnonymous, true); user = new Common.Models.User({ id : version.user.id, username : version.user.name, - colorval : Asc.c_oAscArrUserColors[usersCnt], - color : this.generateUserColor(Asc.c_oAscArrUserColors[usersCnt++]) + colorval : color, + color : this.generateUserColor(color) }); usersStore.add(user); } @@ -3366,11 +3369,12 @@ define([ user = usersStore.findUser(change.user.id); if (!user) { + var color = Common.UI.ExternalUsers.getColor(change.user.id || change.user.name || this.textAnonymous, true); user = new Common.Models.User({ id : change.user.id, username : change.user.name, - colorval : Asc.c_oAscArrUserColors[usersCnt], - color : this.generateUserColor(Asc.c_oAscArrUserColors[usersCnt++]) + colorval : color, + color : this.generateUserColor(color) }); usersStore.add(user); } diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 888dec05ca..e887a9e541 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -384,6 +384,7 @@ define([ toolbar.btnPaste.on('click', _.bind(this.onCopyPaste, this, 'paste')); toolbar.btnCut.on('click', _.bind(this.onCopyPaste, this, 'cut')); toolbar.btnSelectAll.on('click', _.bind(this.onSelectAll, this)); + toolbar.btnReplace.on('click', _.bind(this.onReplace, this)); toolbar.btnIncFontSize.on('click', _.bind(this.onIncreaseFontSize, this)); toolbar.btnDecFontSize.on('click', _.bind(this.onDecreaseFontSize, this)); toolbar.mnuChangeCase.on('item:click', _.bind(this.onChangeCase, this)); @@ -646,6 +647,10 @@ define([ Common.component.Analytics.trackEvent('ToolBar', 'Select All'); }, + onReplace: function(e) { + this.getApplication().getController('LeftMenu').onShortcut('replace'); + }, + onIncreaseFontSize: function(e) { if (this.api) this.api.asc_increaseFontSize(); @@ -4636,7 +4641,7 @@ define([ me.toolbar.btnPaste.$el.detach().appendTo($box); me.toolbar.btnPaste.$el.find('button').attr('data-hint-direction', 'bottom'); me.toolbar.btnCopy.$el.removeClass('split'); - me.toolbar.processPanelVisible(null, true, true); + me.toolbar.processPanelVisible(null, true); } if ( config.canProtect ) { diff --git a/apps/spreadsheeteditor/main/app/template/Toolbar.template b/apps/spreadsheeteditor/main/app/template/Toolbar.template index 5ca23708d5..1b30cfdb91 100644 --- a/apps/spreadsheeteditor/main/app/template/Toolbar.template +++ b/apps/spreadsheeteditor/main/app/template/Toolbar.template @@ -30,7 +30,7 @@
    - +
    @@ -81,6 +81,7 @@
    +
    @@ -118,16 +119,22 @@
    -
    -
    -
    +
    +
    +
    + +
    +
    + +
    +
    diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 576572c4e2..09368b1e24 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -466,8 +466,8 @@ define([ dataHint : '2', dataHintDirection: 'left', dataHintOffset: 'small' - }).on('change', function () { - me.chAutosave.setValue(1); + }).on('change', function (field, newValue, eOpts) { + newValue && me.chAutosave.setValue(1); }); this.rbCoAuthModeFast.$el.parent().on('click', function (){me.rbCoAuthModeFast.setValue(true);}); diff --git a/apps/spreadsheeteditor/main/app/view/RightMenu.js b/apps/spreadsheeteditor/main/app/view/RightMenu.js index a7729b84c9..fa19cfd388 100644 --- a/apps/spreadsheeteditor/main/app/view/RightMenu.js +++ b/apps/spreadsheeteditor/main/app/view/RightMenu.js @@ -181,7 +181,7 @@ define([ this.trigger('render:before', this); - this.defaultHideRightMenu = mode.customization && !!mode.customization.hideRightMenu; + this.defaultHideRightMenu = !(mode.customization && (mode.customization.hideRightMenu===false)); var open = !Common.localStorage.getBool("sse-hide-right-settings", this.defaultHideRightMenu); Common.Utils.InternalSettings.set("sse-hide-right-settings", !open); el.css('width', ((open) ? MENU_SCALE_PART : SCALE_MIN) + 'px'); diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index 7d39eb0ea9..4baed947c5 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -798,6 +798,15 @@ define([ dataHintDirection: 'bottom' }); + me.btnReplace = new Common.UI.Button({ + id: 'id-toolbar-btn-replace', + cls: 'btn-toolbar', + iconCls: 'toolbar__icon btn-replace', + lock: [_set.disableOnStart], + dataHint: '1', + dataHintDirection: 'top' + }); + me.cmbFontSize = new Common.UI.ComboBox({ cls : 'input-group-nr', menuStyle : 'min-width: 55px;', @@ -1640,7 +1649,7 @@ define([ }), dataHint: '1', dataHintDirection: 'top', - dataHintOffset: '0, -16' + dataHintOffset: '0, -6' }); me.btnClearStyle = new Common.UI.Button({ @@ -1679,7 +1688,7 @@ define([ ] }), dataHint: '1', - dataHintDirection: 'top', + dataHintDirection: 'bottom', dataHintOffset: '0, -6' }); @@ -2209,7 +2218,7 @@ define([ me.btnTableTemplate, me.btnCellStyle, me.btnPercentStyle, me.btnCurrencyStyle, me.btnDecDecimal, me.btnAddCell, me.btnDeleteCell, me.btnCondFormat, me.cmbNumberFormat, me.btnBorders, me.btnInsertImage, me.btnInsertHyperlink, me.btnInsertChart, me.btnInsertChartRecommend, me.btnColorSchemas, me.btnInsertSparkline, - me.btnCopy, me.btnPaste, me.btnCut, me.btnSelectAll, me.listStyles, me.btnPrint, + me.btnCopy, me.btnPaste, me.btnCut, me.btnSelectAll, me.btnReplace, me.listStyles, me.btnPrint, /*me.btnSave,*/ me.btnClearStyle, me.btnCopyStyle, me.btnPageMargins, me.btnPageSize, me.btnPageOrient, me.btnPrintArea, me.btnPageBreak, me.btnPrintTitles, me.btnImgAlign, me.btnImgBackward, me.btnImgForward, me.btnImgGroup, me.btnScale, me.chPrintGridlines, me.chPrintHeadings, me.btnVisibleArea, me.btnVisibleAreaClose, me.btnTextFormatting, me.btnHorizontalAlign, me.btnVerticalAlign @@ -2346,6 +2355,7 @@ define([ _injectComponent('#slot-btn-paste', this.btnPaste); _injectComponent('#slot-btn-cut', this.btnCut); _injectComponent('#slot-btn-select-all', this.btnSelectAll); + _injectComponent('#slot-btn-replace', this.btnReplace); _injectComponent('#slot-btn-incfont', this.btnIncFontSize); _injectComponent('#slot-btn-decfont', this.btnDecFontSize); _injectComponent('#slot-btn-bold', this.btnBold); @@ -2446,6 +2456,7 @@ define([ _updateHint(this.btnPaste, this.tipPaste + Common.Utils.String.platformKey('Ctrl+V')); _updateHint(this.btnCut, this.tipCut + Common.Utils.String.platformKey('Ctrl+X')); _updateHint(this.btnSelectAll, this.tipSelectAll + Common.Utils.String.platformKey('Ctrl+A')); + _updateHint(this.btnReplace, this.tipReplace + ' (' + Common.Utils.String.textCtrl + '+H)'); _updateHint(this.btnUndo, this.tipUndo + Common.Utils.String.platformKey('Ctrl+Z')); _updateHint(this.btnRedo, this.tipRedo + Common.Utils.String.platformKey('Ctrl+Y')); _updateHint(this.btnIncFontSize, this.tipIncFont + Common.Utils.String.platformKey('Ctrl+]')); @@ -3754,7 +3765,8 @@ define([ textFillLeft: 'Left', textFillRight: 'Right', textSeries: 'Series', - txtFillNum: 'Fill' + txtFillNum: 'Fill', + tipReplace: 'Replace' }, SSE.Views.Toolbar || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/index.html b/apps/spreadsheeteditor/main/index.html index c70d4f388a..c52bfed7e1 100644 --- a/apps/spreadsheeteditor/main/index.html +++ b/apps/spreadsheeteditor/main/index.html @@ -130,9 +130,13 @@ top: 0; bottom: 0; left: 854px; - width: inherit; + width: 670px; height: 44px; } + .rtl .loadmask > .sktoolbar li.fat { + right: 854px; + left: 0; + } .loadmask > .skformula { height: 24px; @@ -272,6 +276,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; @@ -355,10 +360,15 @@ if (stopLoading) { document.body.removeChild(document.getElementById('loading-mask')); } else { - var elem = document.querySelector('.loading-logo img'); - if (elem) { - (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); - elem.style.opacity = 1; + if (hideLogo) { + var elem = document.querySelector('.loading-logo'); + elem && (elem.style.display = 'none'); + } else { + var elem = document.querySelector('.loading-logo img'); + if (elem) { + (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); + elem.style.opacity = 1; + } } } diff --git a/apps/spreadsheeteditor/main/index.html.deploy b/apps/spreadsheeteditor/main/index.html.deploy index f9fd5feba3..c8d40cb9a1 100644 --- a/apps/spreadsheeteditor/main/index.html.deploy +++ b/apps/spreadsheeteditor/main/index.html.deploy @@ -109,9 +109,13 @@ top: 0; bottom: 0; left: 854px; - width: inherit; + width: 670px; height: 44px; } + .rtl .loadmask > .sktoolbar li.fat { + right: 854px; + left: 0; + } .loadmask>.skformula { height: 24px; @@ -257,6 +261,7 @@ var params = getUrlParams(), lang = (params["lang"] || 'en').split(/[\-\_]/)[0], + hideLogo = params["headerlogo"]==='', logo = params["headerlogo"] ? encodeUrlParam(params["headerlogo"]) : null, logoDark = params["headerlogodark"] ? encodeUrlParam(params["headerlogodark"]) : null; @@ -341,10 +346,15 @@ if (stopLoading) { document.body.removeChild(document.getElementById('loading-mask')); } else { - var elem = document.querySelector('.loading-logo img'); - if (elem) { - (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); - elem.style.opacity = 1; + if (hideLogo) { + var elem = document.querySelector('.loading-logo'); + elem && (elem.style.display = 'none'); + } else { + var elem = document.querySelector('.loading-logo img'); + if (elem) { + (logo || logoDark) && elem.setAttribute('src', /theme-(?:[a-z]+-)?dark(?:-[a-z]*)?/.test(document.body.className) ? logoDark || logo : logo || logoDark); + elem.style.opacity = 1; + } } } diff --git a/apps/spreadsheeteditor/main/locale/ar.json b/apps/spreadsheeteditor/main/locale/ar.json index e4ea8f5a6b..0fafe04dda 100644 --- a/apps/spreadsheeteditor/main/locale/ar.json +++ b/apps/spreadsheeteditor/main/locale/ar.json @@ -323,9 +323,9 @@ "Common.Utils.Metric.txtCm": "سم", "Common.Utils.Metric.txtPt": "نقطة", "Common.Utils.String.textAlt": "Alt", + "Common.Utils.String.textComma": "،", "Common.Utils.String.textCtrl": "Ctrl", "Common.Utils.String.textShift": "Shift", - "Common.Utils.String.textComma": "،", "Common.Utils.ThemeColor.txtaccent": "علامات التشكيل", "Common.Utils.ThemeColor.txtAqua": "أزرق مائي", "Common.Utils.ThemeColor.txtbackground": "الخلفية", @@ -558,7 +558,7 @@ "Common.Views.ReviewChanges.hintNext": "إلى التغيير التالي", "Common.Views.ReviewChanges.hintPrev": "إلى التغيير السابق", "Common.Views.ReviewChanges.strFast": "سريع", - "Common.Views.ReviewChanges.strFastDesc": "تحرير مشترك في الزمن الحقيقي. كافة التغييرات يتم حفظها تلقائياًًًً", + "Common.Views.ReviewChanges.strFastDesc": "تحرير مشترك في الزمن الحقيقي. كافة التغيرات يتم حفظها تلقائيا", "Common.Views.ReviewChanges.strStrict": "صارم", "Common.Views.ReviewChanges.strStrictDesc": "استخدم زر \"حفظ\" لمزامنة التغييرات التي تجريها أنت و الآخرين", "Common.Views.ReviewChanges.tipAcceptCurrent": "الموافقة على التغيير الحالي", @@ -2626,7 +2626,7 @@ "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtEl": "اليونانية", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtEn": "الإنجليزية", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtEs": "الإسبانية", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtFastTip": "التحرير المشترك في الوقت الحقيقي. يتم حفظ كافة التغييرات تلقائيا", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtFastTip": "تحرير مشترك في الزمن الحقيقي. كافة التغيرات يتم حفظها تلقائيا", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtFi": "الفنلندية", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtFr": "الفرنسية", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtHu": "المجرية", diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 139e4f9518..f25f9a927c 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -161,109 +161,109 @@ "Common.define.smartArt.textDivergingArrows": "Diverging arrows", "Common.define.smartArt.textDivergingRadial": "Diverging radial", "Common.define.smartArt.textEquation": "Equation", - "Common.define.smartArt.textFramedTextPicture": "Framed Text Picture", + "Common.define.smartArt.textFramedTextPicture": "Framed text picture", "Common.define.smartArt.textFunnel": "Funnel", "Common.define.smartArt.textGear": "Gear", - "Common.define.smartArt.textGridMatrix": "Grid Matrix", - "Common.define.smartArt.textGroupedList": "Grouped List", - "Common.define.smartArt.textHalfCircleOrganizationChart": "Half Circle Organization Chart", - "Common.define.smartArt.textHexagonCluster": "Hexagon Cluster", - "Common.define.smartArt.textHexagonRadial": "Hexagon Radial", + "Common.define.smartArt.textGridMatrix": "Grid matrix", + "Common.define.smartArt.textGroupedList": "Grouped list", + "Common.define.smartArt.textHalfCircleOrganizationChart": "Half circle organization chart", + "Common.define.smartArt.textHexagonCluster": "Hexagon cluster", + "Common.define.smartArt.textHexagonRadial": "Hexagon radial", "Common.define.smartArt.textHierarchy": "Hierarchy", - "Common.define.smartArt.textHierarchyList": "Hierarchy List", - "Common.define.smartArt.textHorizontalBulletList": "Horizontal Bullet List", - "Common.define.smartArt.textHorizontalHierarchy": "Horizontal Hierarchy", - "Common.define.smartArt.textHorizontalLabeledHierarchy": "Horizontal Labeled Hierarchy", - "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "Horizontal Multi-Level Hierarchy", - "Common.define.smartArt.textHorizontalOrganizationChart": "Horizontal Organization Chart", - "Common.define.smartArt.textHorizontalPictureList": "Horizontal Picture List", - "Common.define.smartArt.textIncreasingArrowProcess": "Increasing Arrow Process", - "Common.define.smartArt.textIncreasingCircleProcess": "Increasing Circle Process", - "Common.define.smartArt.textInterconnectedBlockProcess": "Interconnected Block Process", - "Common.define.smartArt.textInterconnectedRings": "Interconnected Rings", - "Common.define.smartArt.textInvertedPyramid": "Inverted Pyramid", - "Common.define.smartArt.textLabeledHierarchy": "Labeled Hierarchy", + "Common.define.smartArt.textHierarchyList": "Hierarchy list", + "Common.define.smartArt.textHorizontalBulletList": "Horizontal bullet list", + "Common.define.smartArt.textHorizontalHierarchy": "Horizontal hierarchy", + "Common.define.smartArt.textHorizontalLabeledHierarchy": "Horizontal labeled hierarchy", + "Common.define.smartArt.textHorizontalMultiLevelHierarchy": "Horizontal multi-level hierarchy", + "Common.define.smartArt.textHorizontalOrganizationChart": "Horizontal organization chart", + "Common.define.smartArt.textHorizontalPictureList": "Horizontal picture list", + "Common.define.smartArt.textIncreasingArrowProcess": "Increasing arrow process", + "Common.define.smartArt.textIncreasingCircleProcess": "Increasing circle process", + "Common.define.smartArt.textInterconnectedBlockProcess": "Interconnected block process", + "Common.define.smartArt.textInterconnectedRings": "Interconnected rings", + "Common.define.smartArt.textInvertedPyramid": "Inverted pyramid", + "Common.define.smartArt.textLabeledHierarchy": "Labeled hierarchy", "Common.define.smartArt.textLinearVenn": "Linear Venn", - "Common.define.smartArt.textLinedList": "Lined List", + "Common.define.smartArt.textLinedList": "Lined list", "Common.define.smartArt.textList": "List", "Common.define.smartArt.textMatrix": "Matrix", - "Common.define.smartArt.textMultidirectionalCycle": "Multidirectional Cycle", - "Common.define.smartArt.textNameAndTitleOrganizationChart": "Name and Title Organization Chart", - "Common.define.smartArt.textNestedTarget": "Nested Target", - "Common.define.smartArt.textNondirectionalCycle": "Nondirectional Cycle", - "Common.define.smartArt.textOpposingArrows": "Opposing Arrows", - "Common.define.smartArt.textOpposingIdeas": "Opposing Ideas", - "Common.define.smartArt.textOrganizationChart": "Organization Chart", + "Common.define.smartArt.textMultidirectionalCycle": "Multidirectional cycle", + "Common.define.smartArt.textNameAndTitleOrganizationChart": "Name and title organization chart", + "Common.define.smartArt.textNestedTarget": "Nested target", + "Common.define.smartArt.textNondirectionalCycle": "Nondirectional cycle", + "Common.define.smartArt.textOpposingArrows": "Opposing arrows", + "Common.define.smartArt.textOpposingIdeas": "Opposing ideas", + "Common.define.smartArt.textOrganizationChart": "Organization chart", "Common.define.smartArt.textOther": "Other", - "Common.define.smartArt.textPhasedProcess": "Phased Process", + "Common.define.smartArt.textPhasedProcess": "Phased process", "Common.define.smartArt.textPicture": "Picture", - "Common.define.smartArt.textPictureAccentBlocks": "Picture Accent Blocks", - "Common.define.smartArt.textPictureAccentList": "Picture Accent List", - "Common.define.smartArt.textPictureAccentProcess": "Picture Accent Process", - "Common.define.smartArt.textPictureCaptionList": "Picture Caption List", + "Common.define.smartArt.textPictureAccentBlocks": "Picture accent blocks", + "Common.define.smartArt.textPictureAccentList": "Picture accent list", + "Common.define.smartArt.textPictureAccentProcess": "Picture accent process", + "Common.define.smartArt.textPictureCaptionList": "Picture caption list", "Common.define.smartArt.textPictureFrame": "PictureFrame", - "Common.define.smartArt.textPictureGrid": "Picture Grid", - "Common.define.smartArt.textPictureLineup": "Picture Lineup", - "Common.define.smartArt.textPictureOrganizationChart": "Picture Organization Chart", - "Common.define.smartArt.textPictureStrips": "Picture Strips", - "Common.define.smartArt.textPieProcess": "Pie Process", - "Common.define.smartArt.textPlusAndMinus": "Plus and Minus", + "Common.define.smartArt.textPictureGrid": "Picture grid", + "Common.define.smartArt.textPictureLineup": "Picture lineup", + "Common.define.smartArt.textPictureOrganizationChart": "Picture organization chart", + "Common.define.smartArt.textPictureStrips": "Picture strips", + "Common.define.smartArt.textPieProcess": "Pie process", + "Common.define.smartArt.textPlusAndMinus": "Plus and minus", "Common.define.smartArt.textProcess": "Process", - "Common.define.smartArt.textProcessArrows": "Process Arrows", - "Common.define.smartArt.textProcessList": "Process List", + "Common.define.smartArt.textProcessArrows": "Process arrows", + "Common.define.smartArt.textProcessList": "Process list", "Common.define.smartArt.textPyramid": "Pyramid", - "Common.define.smartArt.textPyramidList": "Pyramid List", - "Common.define.smartArt.textRadialCluster": "Radial Cluster", - "Common.define.smartArt.textRadialCycle": "Radial Cycle", - "Common.define.smartArt.textRadialList": "Radial List", - "Common.define.smartArt.textRadialPictureList": "Radial Picture List", + "Common.define.smartArt.textPyramidList": "Pyramid list", + "Common.define.smartArt.textRadialCluster": "Radial cluster", + "Common.define.smartArt.textRadialCycle": "Radial cycle", + "Common.define.smartArt.textRadialList": "Radial list", + "Common.define.smartArt.textRadialPictureList": "Radial picture list", "Common.define.smartArt.textRadialVenn": "Radial Venn", - "Common.define.smartArt.textRandomToResultProcess": "Random to Result Process", + "Common.define.smartArt.textRandomToResultProcess": "Random to result process", "Common.define.smartArt.textRelationship": "Relationship", - "Common.define.smartArt.textRepeatingBendingProcess": "Repeating Bending Process", - "Common.define.smartArt.textReverseList": "Reverse List", - "Common.define.smartArt.textSegmentedCycle": "Segmented Cycle", - "Common.define.smartArt.textSegmentedProcess": "Segmented Process", - "Common.define.smartArt.textSegmentedPyramid": "Segmented Pyramid", - "Common.define.smartArt.textSnapshotPictureList": "Snapshot Picture List", - "Common.define.smartArt.textSpiralPicture": "Spiral Picture", - "Common.define.smartArt.textSquareAccentList": "Square Accent List", - "Common.define.smartArt.textStackedList": "Stacked List", + "Common.define.smartArt.textRepeatingBendingProcess": "Repeating bending process", + "Common.define.smartArt.textReverseList": "Reverse list", + "Common.define.smartArt.textSegmentedCycle": "Segmented cycle", + "Common.define.smartArt.textSegmentedProcess": "Segmented process", + "Common.define.smartArt.textSegmentedPyramid": "Segmented pyramid", + "Common.define.smartArt.textSnapshotPictureList": "Snapshot picture list", + "Common.define.smartArt.textSpiralPicture": "Spiral picture", + "Common.define.smartArt.textSquareAccentList": "Square accent list", + "Common.define.smartArt.textStackedList": "Stacked list", "Common.define.smartArt.textStackedVenn": "Stacked Venn", - "Common.define.smartArt.textStaggeredProcess": "Staggered Process", - "Common.define.smartArt.textStepDownProcess": "Step Down Process", - "Common.define.smartArt.textStepUpProcess": "Step Up Process", - "Common.define.smartArt.textSubStepProcess": "Sub-Step Process", - "Common.define.smartArt.textTabbedArc": "Tabbed Arc", - "Common.define.smartArt.textTableHierarchy": "Table Hierarchy", - "Common.define.smartArt.textTableList": "Table List", + "Common.define.smartArt.textStaggeredProcess": "Staggered process", + "Common.define.smartArt.textStepDownProcess": "Step down process", + "Common.define.smartArt.textStepUpProcess": "Step up process", + "Common.define.smartArt.textSubStepProcess": "Sub-step process", + "Common.define.smartArt.textTabbedArc": "Tabbed arc", + "Common.define.smartArt.textTableHierarchy": "Table hierarchy", + "Common.define.smartArt.textTableList": "Table list", "Common.define.smartArt.textTabList": "Tab List", - "Common.define.smartArt.textTargetList": "Target List", - "Common.define.smartArt.textTextCycle": "Text Cycle", - "Common.define.smartArt.textThemePictureAccent": "Theme Picture Accent", - "Common.define.smartArt.textThemePictureAlternatingAccent": "Theme Picture Alternating Accent", - "Common.define.smartArt.textThemePictureGrid": "Theme Picture Grid", - "Common.define.smartArt.textTitledMatrix": "Titled Matrix", - "Common.define.smartArt.textTitledPictureAccentList": "Titled Picture Accent List", - "Common.define.smartArt.textTitledPictureBlocks": "Titled Picture Blocks", - "Common.define.smartArt.textTitlePictureLineup": "Title Picture Lineup", - "Common.define.smartArt.textTrapezoidList": "Trapezoid List", - "Common.define.smartArt.textUpwardArrow": "Upward Arrow", - "Common.define.smartArt.textVaryingWidthList": "Varying Width List", - "Common.define.smartArt.textVerticalAccentList": "Vertical Accent List", - "Common.define.smartArt.textVerticalArrowList": "Vertical Arrow List", - "Common.define.smartArt.textVerticalBendingProcess": "Vertical Bending Process", - "Common.define.smartArt.textVerticalBlockList": "Vertical Block List", - "Common.define.smartArt.textVerticalBoxList": "Vertical Box List", - "Common.define.smartArt.textVerticalBracketList": "Vertical Bracket List", - "Common.define.smartArt.textVerticalBulletList": "Vertical Bullet List", - "Common.define.smartArt.textVerticalChevronList": "Vertical Chevron List", - "Common.define.smartArt.textVerticalCircleList": "Vertical Circle List", - "Common.define.smartArt.textVerticalCurvedList": "Vertical Curved List", - "Common.define.smartArt.textVerticalEquation": "Vertical Equation", - "Common.define.smartArt.textVerticalPictureAccentList": "Vertical Picture Accent List", - "Common.define.smartArt.textVerticalPictureList": "Vertical Picture List", - "Common.define.smartArt.textVerticalProcess": "Vertical Process", + "Common.define.smartArt.textTargetList": "Target list", + "Common.define.smartArt.textTextCycle": "Text cycle", + "Common.define.smartArt.textThemePictureAccent": "Theme picture accent", + "Common.define.smartArt.textThemePictureAlternatingAccent": "Theme picture alternating accent", + "Common.define.smartArt.textThemePictureGrid": "Theme picture grid", + "Common.define.smartArt.textTitledMatrix": "Titled matrix", + "Common.define.smartArt.textTitledPictureAccentList": "Titled picture accent list", + "Common.define.smartArt.textTitledPictureBlocks": "Titled picture blocks", + "Common.define.smartArt.textTitlePictureLineup": "Title picture lineup", + "Common.define.smartArt.textTrapezoidList": "Trapezoid list", + "Common.define.smartArt.textUpwardArrow": "Upward arrow", + "Common.define.smartArt.textVaryingWidthList": "Varying width list", + "Common.define.smartArt.textVerticalAccentList": "Vertical accent list", + "Common.define.smartArt.textVerticalArrowList": "Vertical arrow list", + "Common.define.smartArt.textVerticalBendingProcess": "Vertical bending process", + "Common.define.smartArt.textVerticalBlockList": "Vertical block list", + "Common.define.smartArt.textVerticalBoxList": "Vertical box list", + "Common.define.smartArt.textVerticalBracketList": "Vertical bracket list", + "Common.define.smartArt.textVerticalBulletList": "Vertical bullet list", + "Common.define.smartArt.textVerticalChevronList": "Vertical chevron list", + "Common.define.smartArt.textVerticalCircleList": "Vertical circle list", + "Common.define.smartArt.textVerticalCurvedList": "Vertical curved list", + "Common.define.smartArt.textVerticalEquation": "Vertical equation", + "Common.define.smartArt.textVerticalPictureAccentList": "Vertical picture accent list", + "Common.define.smartArt.textVerticalPictureList": "Vertical picture list", + "Common.define.smartArt.textVerticalProcess": "Vertical process", "Common.Translation.textMoreButton": "More", "Common.Translation.tipFileLocked": "Document is locked for editing. You can make changes and save it as local copy later.", "Common.Translation.tipFileReadOnly": "The file is read-only. To keep your changes, save the file with a new name or in a different location.", @@ -323,9 +323,9 @@ "Common.Utils.Metric.txtCm": "cm", "Common.Utils.Metric.txtPt": "pt", "Common.Utils.String.textAlt": "Alt", + "Common.Utils.String.textComma": ",", "Common.Utils.String.textCtrl": "Ctrl", "Common.Utils.String.textShift": "Shift", - "Common.Utils.String.textComma": ",", "Common.Utils.ThemeColor.txtaccent": "Accent", "Common.Utils.ThemeColor.txtAqua": "Aqua", "Common.Utils.ThemeColor.txtbackground": "Background", @@ -415,7 +415,7 @@ "Common.Views.Comments.textEdit": "OK", "Common.Views.Comments.textEnterCommentHint": "Enter your comment here", "Common.Views.Comments.textHintAddComment": "Add comment", - "Common.Views.Comments.textOpenAgain": "Open Again", + "Common.Views.Comments.textOpenAgain": "Open again", "Common.Views.Comments.textReply": "Reply", "Common.Views.Comments.textResolve": "Resolve", "Common.Views.Comments.textResolved": "Resolved", @@ -607,7 +607,7 @@ "Common.Views.ReviewChanges.txtRejectChanges": "Reject changes", "Common.Views.ReviewChanges.txtRejectCurrent": "Reject Current Change", "Common.Views.ReviewChanges.txtSharing": "Sharing", - "Common.Views.ReviewChanges.txtSpelling": "Spell Checking", + "Common.Views.ReviewChanges.txtSpelling": "Spell checking", "Common.Views.ReviewChanges.txtTurnon": "Track Changes", "Common.Views.ReviewChanges.txtView": "Display Mode", "Common.Views.ReviewPopover.textAdd": "Add", @@ -618,7 +618,7 @@ "Common.Views.ReviewPopover.textEnterComment": "Enter your comment here", "Common.Views.ReviewPopover.textMention": "+mention will provide access to the document and send an email", "Common.Views.ReviewPopover.textMentionNotify": "+mention will notify the user via email", - "Common.Views.ReviewPopover.textOpenAgain": "Open Again", + "Common.Views.ReviewPopover.textOpenAgain": "Open again", "Common.Views.ReviewPopover.textReply": "Reply", "Common.Views.ReviewPopover.textResolve": "Resolve", "Common.Views.ReviewPopover.textViewResolved": "You have no permission to reopen the comment", @@ -1092,7 +1092,7 @@ "SSE.Controllers.Main.textGuest": "Guest", "SSE.Controllers.Main.textHasMacros": "The file contains automatic macros.
    Do you want to run macros?", "SSE.Controllers.Main.textKeep": "Keep", - "SSE.Controllers.Main.textLearnMore": "Learn More", + "SSE.Controllers.Main.textLearnMore": "Learn more", "SSE.Controllers.Main.textLoadingDocument": "Loading spreadsheet", "SSE.Controllers.Main.textLongName": "Enter a name that is less than 128 characters.", "SSE.Controllers.Main.textNeedSynchronize": "You have updates", @@ -1173,10 +1173,10 @@ "SSE.Controllers.Main.txtShape_actionButtonBlank": "Blank button", "SSE.Controllers.Main.txtShape_actionButtonDocument": "Document Button", "SSE.Controllers.Main.txtShape_actionButtonEnd": "End button", - "SSE.Controllers.Main.txtShape_actionButtonForwardNext": "Forward or Next Button", - "SSE.Controllers.Main.txtShape_actionButtonHelp": "Help Button", - "SSE.Controllers.Main.txtShape_actionButtonHome": "Home Button", - "SSE.Controllers.Main.txtShape_actionButtonInformation": "Information Button", + "SSE.Controllers.Main.txtShape_actionButtonForwardNext": "Forward or next button", + "SSE.Controllers.Main.txtShape_actionButtonHelp": "Help button", + "SSE.Controllers.Main.txtShape_actionButtonHome": "Home button", + "SSE.Controllers.Main.txtShape_actionButtonInformation": "Information button", "SSE.Controllers.Main.txtShape_actionButtonMovie": "Movie Button", "SSE.Controllers.Main.txtShape_actionButtonReturn": "Return Button", "SSE.Controllers.Main.txtShape_actionButtonSound": "Sound Button", @@ -1221,7 +1221,7 @@ "SSE.Controllers.Main.txtShape_ellipse": "Ellipse", "SSE.Controllers.Main.txtShape_ellipseRibbon": "Curved down ribbon", "SSE.Controllers.Main.txtShape_ellipseRibbon2": "Curved up ribbon", - "SSE.Controllers.Main.txtShape_flowChartAlternateProcess": "Flowchart: Alternate Process", + "SSE.Controllers.Main.txtShape_flowChartAlternateProcess": "Flowchart: Alternate process", "SSE.Controllers.Main.txtShape_flowChartCollate": "Flowchart: Collate", "SSE.Controllers.Main.txtShape_flowChartConnector": "Flowchart: Connector", "SSE.Controllers.Main.txtShape_flowChartDecision": "Flowchart: Decision", @@ -1230,44 +1230,44 @@ "SSE.Controllers.Main.txtShape_flowChartDocument": "Flowchart: Document", "SSE.Controllers.Main.txtShape_flowChartExtract": "Flowchart: Extract", "SSE.Controllers.Main.txtShape_flowChartInputOutput": "Flowchart: Data", - "SSE.Controllers.Main.txtShape_flowChartInternalStorage": "Flowchart: Internal Storage", - "SSE.Controllers.Main.txtShape_flowChartMagneticDisk": "Flowchart: Magnetic Disk", - "SSE.Controllers.Main.txtShape_flowChartMagneticDrum": "Flowchart: Direct Access Storage", - "SSE.Controllers.Main.txtShape_flowChartMagneticTape": "Flowchart: Sequential Access Storage", - "SSE.Controllers.Main.txtShape_flowChartManualInput": "Flowchart: Manual Input", - "SSE.Controllers.Main.txtShape_flowChartManualOperation": "Flowchart: Manual Operation", + "SSE.Controllers.Main.txtShape_flowChartInternalStorage": "Flowchart: Internal storage", + "SSE.Controllers.Main.txtShape_flowChartMagneticDisk": "Flowchart: Magnetic disk", + "SSE.Controllers.Main.txtShape_flowChartMagneticDrum": "Flowchart: Direct access storage", + "SSE.Controllers.Main.txtShape_flowChartMagneticTape": "Flowchart: Sequential access storage", + "SSE.Controllers.Main.txtShape_flowChartManualInput": "Flowchart: Manual input", + "SSE.Controllers.Main.txtShape_flowChartManualOperation": "Flowchart: Manual operation", "SSE.Controllers.Main.txtShape_flowChartMerge": "Flowchart: Merge", "SSE.Controllers.Main.txtShape_flowChartMultidocument": "Flowchart: Multidocument ", "SSE.Controllers.Main.txtShape_flowChartOffpageConnector": "Flowchart: Off-page Connector", - "SSE.Controllers.Main.txtShape_flowChartOnlineStorage": "Flowchart: Stored Data", + "SSE.Controllers.Main.txtShape_flowChartOnlineStorage": "Flowchart: Stored data", "SSE.Controllers.Main.txtShape_flowChartOr": "Flowchart: Or", "SSE.Controllers.Main.txtShape_flowChartPredefinedProcess": "Flowchart: Predefined Process", "SSE.Controllers.Main.txtShape_flowChartPreparation": "Flowchart: Preparation", "SSE.Controllers.Main.txtShape_flowChartProcess": "Flowchart: Process", "SSE.Controllers.Main.txtShape_flowChartPunchedCard": "Flowchart: Card", - "SSE.Controllers.Main.txtShape_flowChartPunchedTape": "Flowchart: Punched Tape", + "SSE.Controllers.Main.txtShape_flowChartPunchedTape": "Flowchart: Punched tape", "SSE.Controllers.Main.txtShape_flowChartSort": "Flowchart: Sort", - "SSE.Controllers.Main.txtShape_flowChartSummingJunction": "Flowchart: Summing Junction", + "SSE.Controllers.Main.txtShape_flowChartSummingJunction": "Flowchart: Summing junction", "SSE.Controllers.Main.txtShape_flowChartTerminator": "Flowchart: Terminator", "SSE.Controllers.Main.txtShape_foldedCorner": "Folded Corner", "SSE.Controllers.Main.txtShape_frame": "Frame", - "SSE.Controllers.Main.txtShape_halfFrame": "Half Frame", + "SSE.Controllers.Main.txtShape_halfFrame": "Half frame", "SSE.Controllers.Main.txtShape_heart": "Heart", "SSE.Controllers.Main.txtShape_heptagon": "Heptagon", "SSE.Controllers.Main.txtShape_hexagon": "Hexagon", "SSE.Controllers.Main.txtShape_homePlate": "Pentagon", - "SSE.Controllers.Main.txtShape_horizontalScroll": "Horizontal Scroll", + "SSE.Controllers.Main.txtShape_horizontalScroll": "Horizontal scroll", "SSE.Controllers.Main.txtShape_irregularSeal1": "Explosion 1", "SSE.Controllers.Main.txtShape_irregularSeal2": "Explosion 2", "SSE.Controllers.Main.txtShape_leftArrow": "Left Arrow", - "SSE.Controllers.Main.txtShape_leftArrowCallout": "Left Arrow Callout", - "SSE.Controllers.Main.txtShape_leftBrace": "Left Brace", - "SSE.Controllers.Main.txtShape_leftBracket": "Left Bracket", - "SSE.Controllers.Main.txtShape_leftRightArrow": "Left Right Arrow", - "SSE.Controllers.Main.txtShape_leftRightArrowCallout": "Left Right Arrow Callout", - "SSE.Controllers.Main.txtShape_leftRightUpArrow": "Left Right Up Arrow", - "SSE.Controllers.Main.txtShape_leftUpArrow": "Left Up Arrow", - "SSE.Controllers.Main.txtShape_lightningBolt": "Lightning Bolt", + "SSE.Controllers.Main.txtShape_leftArrowCallout": "Left arrow callout", + "SSE.Controllers.Main.txtShape_leftBrace": "Left brace", + "SSE.Controllers.Main.txtShape_leftBracket": "Left bracket", + "SSE.Controllers.Main.txtShape_leftRightArrow": "Left right arrow", + "SSE.Controllers.Main.txtShape_leftRightArrowCallout": "Left right arrow callout", + "SSE.Controllers.Main.txtShape_leftRightUpArrow": "Left right up arrow", + "SSE.Controllers.Main.txtShape_leftUpArrow": "Left up arrow", + "SSE.Controllers.Main.txtShape_lightningBolt": "Lightning bolt", "SSE.Controllers.Main.txtShape_line": "Line", "SSE.Controllers.Main.txtShape_lineWithArrow": "Arrow", "SSE.Controllers.Main.txtShape_lineWithTwoArrows": "Double arrow", @@ -1279,7 +1279,7 @@ "SSE.Controllers.Main.txtShape_mathPlus": "Plus", "SSE.Controllers.Main.txtShape_moon": "Moon", "SSE.Controllers.Main.txtShape_noSmoking": "\"No\" Symbol", - "SSE.Controllers.Main.txtShape_notchedRightArrow": "Notched Right Arrow", + "SSE.Controllers.Main.txtShape_notchedRightArrow": "Notched right arrow", "SSE.Controllers.Main.txtShape_octagon": "Octagon", "SSE.Controllers.Main.txtShape_parallelogram": "Parallelogram", "SSE.Controllers.Main.txtShape_pentagon": "Pentagon", @@ -1288,13 +1288,13 @@ "SSE.Controllers.Main.txtShape_plus": "Plus", "SSE.Controllers.Main.txtShape_polyline1": "Scribble", "SSE.Controllers.Main.txtShape_polyline2": "Freeform", - "SSE.Controllers.Main.txtShape_quadArrow": "Quad Arrow", - "SSE.Controllers.Main.txtShape_quadArrowCallout": "Quad Arrow Callout", + "SSE.Controllers.Main.txtShape_quadArrow": "Quad arrow", + "SSE.Controllers.Main.txtShape_quadArrowCallout": "Quad arrow callout", "SSE.Controllers.Main.txtShape_rect": "Rectangle", "SSE.Controllers.Main.txtShape_ribbon": "Down Ribbon", - "SSE.Controllers.Main.txtShape_ribbon2": "Up Ribbon", + "SSE.Controllers.Main.txtShape_ribbon2": "Up ribbon", "SSE.Controllers.Main.txtShape_rightArrow": "Right Arrow", - "SSE.Controllers.Main.txtShape_rightArrowCallout": "Right Arrow Callout", + "SSE.Controllers.Main.txtShape_rightArrowCallout": "Right arrow callout", "SSE.Controllers.Main.txtShape_rightBrace": "Right Brace", "SSE.Controllers.Main.txtShape_rightBracket": "Right Bracket", "SSE.Controllers.Main.txtShape_round1Rect": "Round Single Corner Rectangle", @@ -1303,9 +1303,9 @@ "SSE.Controllers.Main.txtShape_roundRect": "Round Corner Rectangle", "SSE.Controllers.Main.txtShape_rtTriangle": "Right Triangle", "SSE.Controllers.Main.txtShape_smileyFace": "Smiley Face", - "SSE.Controllers.Main.txtShape_snip1Rect": "Snip Single Corner Rectangle", - "SSE.Controllers.Main.txtShape_snip2DiagRect": "Snip Diagonal Corner Rectangle", - "SSE.Controllers.Main.txtShape_snip2SameRect": "Snip Same Side Corner Rectangle", + "SSE.Controllers.Main.txtShape_snip1Rect": "Snip single corner rectangle", + "SSE.Controllers.Main.txtShape_snip2DiagRect": "Snip diagonal corner rectangle", + "SSE.Controllers.Main.txtShape_snip2SameRect": "Snip same side corner rectangle", "SSE.Controllers.Main.txtShape_snipRoundRect": "Snip and Round Single Corner Rectangle", "SSE.Controllers.Main.txtShape_spline": "Curve", "SSE.Controllers.Main.txtShape_star10": "10-Point Star", @@ -1325,12 +1325,12 @@ "SSE.Controllers.Main.txtShape_trapezoid": "Trapezoid", "SSE.Controllers.Main.txtShape_triangle": "Triangle", "SSE.Controllers.Main.txtShape_upArrow": "Up Arrow", - "SSE.Controllers.Main.txtShape_upArrowCallout": "Up Arrow Callout", - "SSE.Controllers.Main.txtShape_upDownArrow": "Up Down Arrow", + "SSE.Controllers.Main.txtShape_upArrowCallout": "Up arrow callout", + "SSE.Controllers.Main.txtShape_upDownArrow": "Up down arrow", "SSE.Controllers.Main.txtShape_uturnArrow": "U-Turn Arrow", - "SSE.Controllers.Main.txtShape_verticalScroll": "Vertical Scroll", + "SSE.Controllers.Main.txtShape_verticalScroll": "Vertical scroll", "SSE.Controllers.Main.txtShape_wave": "Wave", - "SSE.Controllers.Main.txtShape_wedgeEllipseCallout": "Oval Callout", + "SSE.Controllers.Main.txtShape_wedgeEllipseCallout": "Oval callout", "SSE.Controllers.Main.txtShape_wedgeRectCallout": "Rectangular Callout", "SSE.Controllers.Main.txtShape_wedgeRoundRectCallout": "Rounded Rectangular Callout", "SSE.Controllers.Main.txtSheet": "Sheet", @@ -1361,7 +1361,7 @@ "SSE.Controllers.Main.txtTable": "Table", "SSE.Controllers.Main.txtTime": "Time", "SSE.Controllers.Main.txtUnlock": "Unlock", - "SSE.Controllers.Main.txtUnlockRange": "Unlock Range", + "SSE.Controllers.Main.txtUnlockRange": "Unlock range", "SSE.Controllers.Main.txtUnlockRangeDescription": "Enter the password to change this range:", "SSE.Controllers.Main.txtUnlockRangeWarning": "A range you are trying to change is password protected.", "SSE.Controllers.Main.txtValues": "Values", @@ -1782,7 +1782,7 @@ "SSE.Controllers.Toolbar.warnLongOperation": "The operation you are about to perform might take rather much time to complete.
    Are you sure you want to continue?", "SSE.Controllers.Toolbar.warnMergeLostData": "Only the data from the upper-left cell will remain in the merged cell.
    Are you sure you want to continue?", "SSE.Controllers.Toolbar.warnNoRecommended": "To create a chart, select the cells that contain the data you'd like to use.
    If you have names for the rows and columns and you'd like use them as labels, include them in your selection.", - "SSE.Controllers.Viewport.textFreezePanes": "Freeze Panes", + "SSE.Controllers.Viewport.textFreezePanes": "Freeze panes", "SSE.Controllers.Viewport.textFreezePanesShadow": "Show Frozen Panes Shadow", "SSE.Controllers.Viewport.textHideFBar": "Hide Formula Bar", "SSE.Controllers.Viewport.textHideGridlines": "Hide Gridlines", @@ -1824,18 +1824,18 @@ "SSE.Views.AutoFilterDialog.txtJuly": "July", "SSE.Views.AutoFilterDialog.txtJune": "June", "SSE.Views.AutoFilterDialog.txtLabelFilter": "Label filter", - "SSE.Views.AutoFilterDialog.txtLastMonth": "Last Month", - "SSE.Views.AutoFilterDialog.txtLastQuarter": "Last Quarter", - "SSE.Views.AutoFilterDialog.txtLastWeek": "Last Week", - "SSE.Views.AutoFilterDialog.txtLastYear": "Last Year", + "SSE.Views.AutoFilterDialog.txtLastMonth": "Last month", + "SSE.Views.AutoFilterDialog.txtLastQuarter": "Last quarter", + "SSE.Views.AutoFilterDialog.txtLastWeek": "Last week", + "SSE.Views.AutoFilterDialog.txtLastYear": "Last year", "SSE.Views.AutoFilterDialog.txtLess": "Less than...", "SSE.Views.AutoFilterDialog.txtLessEquals": "Less than or equal to...", "SSE.Views.AutoFilterDialog.txtMarch": "March", "SSE.Views.AutoFilterDialog.txtMay": "May", - "SSE.Views.AutoFilterDialog.txtNextMonth": "Next Month", - "SSE.Views.AutoFilterDialog.txtNextQuarter": "Next Quarter", - "SSE.Views.AutoFilterDialog.txtNextWeek": "Next Week", - "SSE.Views.AutoFilterDialog.txtNextYear": "Next Year", + "SSE.Views.AutoFilterDialog.txtNextMonth": "Next month", + "SSE.Views.AutoFilterDialog.txtNextQuarter": "Next quarter", + "SSE.Views.AutoFilterDialog.txtNextWeek": "Next week", + "SSE.Views.AutoFilterDialog.txtNextYear": "Next year", "SSE.Views.AutoFilterDialog.txtNotBegins": "Does not begin with...", "SSE.Views.AutoFilterDialog.txtNotBetween": "Not between...", "SSE.Views.AutoFilterDialog.txtNotContains": "Does not contain...", @@ -1857,15 +1857,15 @@ "SSE.Views.AutoFilterDialog.txtSortOption": "More sort options...", "SSE.Views.AutoFilterDialog.txtTextFilter": "Text filter", "SSE.Views.AutoFilterDialog.txtThisMonth": "This Month", - "SSE.Views.AutoFilterDialog.txtThisQuarter": "This Quarter", - "SSE.Views.AutoFilterDialog.txtThisWeek": "This Week", + "SSE.Views.AutoFilterDialog.txtThisQuarter": "This quarter", + "SSE.Views.AutoFilterDialog.txtThisWeek": "This week", "SSE.Views.AutoFilterDialog.txtThisYear": "This Year", "SSE.Views.AutoFilterDialog.txtTitle": "Filter", "SSE.Views.AutoFilterDialog.txtToday": "Today", "SSE.Views.AutoFilterDialog.txtTomorrow": "Tomorrow", "SSE.Views.AutoFilterDialog.txtTop10": "Top 10", "SSE.Views.AutoFilterDialog.txtValueFilter": "Value filter", - "SSE.Views.AutoFilterDialog.txtYearToDate": "Year to Date", + "SSE.Views.AutoFilterDialog.txtYearToDate": "Year to date", "SSE.Views.AutoFilterDialog.txtYesterday": "Yesterday", "SSE.Views.AutoFilterDialog.warnFilterError": "You need at least one field in the Values area in order to apply a value filter.", "SSE.Views.AutoFilterDialog.warnNoSelected": "You must choose at least one value", @@ -1887,21 +1887,21 @@ "SSE.Views.CellSettings.textColor": "Color fill", "SSE.Views.CellSettings.textColorScales": "Color scales", "SSE.Views.CellSettings.textCondFormat": "Conditional formatting", - "SSE.Views.CellSettings.textControl": "Text Control", + "SSE.Views.CellSettings.textControl": "Text control", "SSE.Views.CellSettings.textDataBars": "Data bars", "SSE.Views.CellSettings.textDirection": "Direction", "SSE.Views.CellSettings.textFill": "Fill", "SSE.Views.CellSettings.textForeground": "Foreground color", "SSE.Views.CellSettings.textGradient": "Gradient points", "SSE.Views.CellSettings.textGradientColor": "Color", - "SSE.Views.CellSettings.textGradientFill": "Gradient Fill", + "SSE.Views.CellSettings.textGradientFill": "Gradient fill", "SSE.Views.CellSettings.textIndent": "Indent", "SSE.Views.CellSettings.textItems": "Items", "SSE.Views.CellSettings.textLinear": "Linear", - "SSE.Views.CellSettings.textManageRule": "Manage Rules", - "SSE.Views.CellSettings.textNewRule": "New Rule", - "SSE.Views.CellSettings.textNoFill": "No Fill", - "SSE.Views.CellSettings.textOrientation": "Text Orientation", + "SSE.Views.CellSettings.textManageRule": "Manage rules", + "SSE.Views.CellSettings.textNewRule": "New rule", + "SSE.Views.CellSettings.textNoFill": "No fill", + "SSE.Views.CellSettings.textOrientation": "Text orientation", "SSE.Views.CellSettings.textPattern": "Pattern", "SSE.Views.CellSettings.textPatternFill": "Pattern", "SSE.Views.CellSettings.textPosition": "Position", @@ -1914,8 +1914,8 @@ "SSE.Views.CellSettings.tipAddGradientPoint": "Add gradient point", "SSE.Views.CellSettings.tipAll": "Set outer border and all inner lines", "SSE.Views.CellSettings.tipBottom": "Set outer bottom border only", - "SSE.Views.CellSettings.tipDiagD": "Set Diagonal Down Border", - "SSE.Views.CellSettings.tipDiagU": "Set Diagonal Up Border", + "SSE.Views.CellSettings.tipDiagD": "Set diagonal down border", + "SSE.Views.CellSettings.tipDiagU": "Set diagonal up border", "SSE.Views.CellSettings.tipInner": "Set inner lines only", "SSE.Views.CellSettings.tipInnerHor": "Set horizontal inner lines only", "SSE.Views.CellSettings.tipInnerVert": "Set vertical inner lines only", @@ -1962,7 +1962,7 @@ "SSE.Views.ChartDataRangeDialog.txtXValues": "X values", "SSE.Views.ChartDataRangeDialog.txtYValues": "Y values", "SSE.Views.ChartSettings.errorMaxRows": "The maximum number of data series per chart is 255.", - "SSE.Views.ChartSettings.strLineWeight": "Line Weight", + "SSE.Views.ChartSettings.strLineWeight": "Line weight", "SSE.Views.ChartSettings.strSparkColor": "Color", "SSE.Views.ChartSettings.strTemplate": "Template", "SSE.Views.ChartSettings.text3dDepth": "Depth (% of base)", @@ -1976,21 +1976,21 @@ "SSE.Views.ChartSettings.textDefault": "Default Rotation", "SSE.Views.ChartSettings.textDown": "Down", "SSE.Views.ChartSettings.textEditData": "Edit data and location", - "SSE.Views.ChartSettings.textFirstPoint": "First Point", + "SSE.Views.ChartSettings.textFirstPoint": "First point", "SSE.Views.ChartSettings.textHeight": "Height", - "SSE.Views.ChartSettings.textHighPoint": "High Point", + "SSE.Views.ChartSettings.textHighPoint": "High point", "SSE.Views.ChartSettings.textKeepRatio": "Constant proportions", - "SSE.Views.ChartSettings.textLastPoint": "Last Point", + "SSE.Views.ChartSettings.textLastPoint": "Last point", "SSE.Views.ChartSettings.textLeft": "Left", "SSE.Views.ChartSettings.textLowPoint": "Low Point", "SSE.Views.ChartSettings.textMarkers": "Markers", "SSE.Views.ChartSettings.textNarrow": "Narrow field of view", - "SSE.Views.ChartSettings.textNegativePoint": "Negative Point", + "SSE.Views.ChartSettings.textNegativePoint": "Negative point", "SSE.Views.ChartSettings.textPerspective": "Perspective", "SSE.Views.ChartSettings.textRanges": "Data range", "SSE.Views.ChartSettings.textRight": "Right", - "SSE.Views.ChartSettings.textRightAngle": "Right Angle Axes", - "SSE.Views.ChartSettings.textSelectData": "Select Data", + "SSE.Views.ChartSettings.textRightAngle": "Right angle axes", + "SSE.Views.ChartSettings.textSelectData": "Select data", "SSE.Views.ChartSettings.textShow": "Show", "SSE.Views.ChartSettings.textSize": "Size", "SSE.Views.ChartSettings.textStyle": "Style", @@ -2110,7 +2110,7 @@ "SSE.Views.ChartSettingsDlg.textTenMillions": "10 000 000", "SSE.Views.ChartSettingsDlg.textTenThousands": "10 000", "SSE.Views.ChartSettingsDlg.textThousands": "Thousands", - "SSE.Views.ChartSettingsDlg.textTickOptions": "Tick Options", + "SSE.Views.ChartSettingsDlg.textTickOptions": "Tick options", "SSE.Views.ChartSettingsDlg.textTitle": "Chart - advanced settings", "SSE.Views.ChartSettingsDlg.textTitleSparkline": "Sparkline - Advanced settings", "SSE.Views.ChartSettingsDlg.textTop": "Top", @@ -2296,7 +2296,7 @@ "SSE.Views.DocumentHolder.directionText": "Text direction", "SSE.Views.DocumentHolder.editChartText": "Edit Data", "SSE.Views.DocumentHolder.editHyperlinkText": "Edit Hyperlink", - "SSE.Views.DocumentHolder.hideEqToolbar": "Hide Equation Toolbar", + "SSE.Views.DocumentHolder.hideEqToolbar": "Hide equation toolbar", "SSE.Views.DocumentHolder.insertColumnLeftText": "Column left", "SSE.Views.DocumentHolder.insertColumnRightText": "Column right", "SSE.Views.DocumentHolder.insertRowAboveText": "Row Above", @@ -2434,7 +2434,7 @@ "SSE.Views.DocumentHolder.txtIndex": "Index", "SSE.Views.DocumentHolder.txtInsert": "Insert", "SSE.Views.DocumentHolder.txtInsHyperlink": "Hyperlink", - "SSE.Views.DocumentHolder.txtInsImage": "Insert image from File", + "SSE.Views.DocumentHolder.txtInsImage": "Insert image from file", "SSE.Views.DocumentHolder.txtInsImageUrl": "Insert image from URL", "SSE.Views.DocumentHolder.txtLabelFilter": "Label filters", "SSE.Views.DocumentHolder.txtMax": "Max", @@ -2569,7 +2569,7 @@ "SSE.Views.FileMenuPanels.DocumentInfo.txtOwner": "Owner", "SSE.Views.FileMenuPanels.DocumentInfo.txtPlacement": "Location", "SSE.Views.FileMenuPanels.DocumentInfo.txtRights": "Persons who have rights", - "SSE.Views.FileMenuPanels.DocumentInfo.txtSpreadsheetInfo": "Spreadsheet Info", + "SSE.Views.FileMenuPanels.DocumentInfo.txtSpreadsheetInfo": "Spreadsheet info", "SSE.Views.FileMenuPanels.DocumentInfo.txtSubject": "Subject", "SSE.Views.FileMenuPanels.DocumentInfo.txtTags": "Tags", "SSE.Views.FileMenuPanels.DocumentInfo.txtTitle": "Title", @@ -2583,15 +2583,15 @@ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strDecimalSeparator": "Decimal separator", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strDictionaryLanguage": "Dictionary language", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFast": "Fast", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFontRender": "Font Hinting", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFuncLocale": "Formula Language", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFontRender": "Font hinting", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFuncLocale": "Formula language", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strFuncLocaleEx": "Example: SUM; MIN; MAX; COUNT", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strIgnoreWordsInUPPERCASE": "Ignore words in UPPERCASE", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strIgnoreWordsWithNumbers": "Ignore words with numbers", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strMacrosSettings": "Macros Settings", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strPasteButton": "Show the Paste Options button when the content is pasted", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strMacrosSettings": "Macros settings", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strPasteButton": "Show the paste options button when the content is pasted", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strReferenceStyle": "R1C1 reference style", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strRegSettings": "Regional Settings", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strRegSettings": "Regional settings", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strRegSettingsEx": "Example: ", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strShowComments": "Show comments in sheet", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strShowOthersChanges": "Show changes from other users", @@ -2599,7 +2599,7 @@ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strStrict": "Strict", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strTheme": "Interface theme", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strThousandsSeparator": "Thousands separator", - "SSE.Views.FileMenuPanels.MainSettingsGeneral.strUnit": "Unit of Measurement", + "SSE.Views.FileMenuPanels.MainSettingsGeneral.strUnit": "Unit of measurement", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strUseSeparatorsBasedOnRegionalSettings": "Use separators based on regional settings", "SSE.Views.FileMenuPanels.MainSettingsGeneral.strZoom": "Default Zoom value", "SSE.Views.FileMenuPanels.MainSettingsGeneral.text10Minutes": "Every 10 minutes", @@ -2689,7 +2689,7 @@ "SSE.Views.FileMenuPanels.ProtectDoc.txtSignedInvalid": "Some of the digital signatures in spreadsheet are invalid or could not be verified. The spreadsheet is protected from editing.", "SSE.Views.FileMenuPanels.ProtectDoc.txtView": "View signatures", "SSE.Views.FileMenuPanels.ViewSaveAs.textDownloadAs": "Download as", - "SSE.Views.FileMenuPanels.ViewSaveCopy.textSaveCopyAs": "Save Copy as", + "SSE.Views.FileMenuPanels.ViewSaveCopy.textSaveCopyAs": "Save copy as", "SSE.Views.FillSeriesDialog.textAuto": "AutoFill", "SSE.Views.FillSeriesDialog.textCols": "Columns", "SSE.Views.FillSeriesDialog.textDate": "Date", @@ -2798,8 +2798,8 @@ "SSE.Views.FormatRulesEditDlg.txtAccounting": "Accounting", "SSE.Views.FormatRulesEditDlg.txtCurrency": "Currency", "SSE.Views.FormatRulesEditDlg.txtDate": "Date", - "SSE.Views.FormatRulesEditDlg.txtDateLong": "Long Date", - "SSE.Views.FormatRulesEditDlg.txtDateShort": "Short Date", + "SSE.Views.FormatRulesEditDlg.txtDateLong": "Long date", + "SSE.Views.FormatRulesEditDlg.txtDateShort": "Short date", "SSE.Views.FormatRulesEditDlg.txtEmpty": "This field is required", "SSE.Views.FormatRulesEditDlg.txtFraction": "Fraction", "SSE.Views.FormatRulesEditDlg.txtGeneral": "General", @@ -2936,18 +2936,18 @@ "SSE.Views.GoalSeekDlg.textMustSingleCell": "Reference must be to a single cell", "SSE.Views.GoalSeekDlg.textSelectData": "Select data", "SSE.Views.GoalSeekDlg.textSetCell": "Set cell", - "SSE.Views.GoalSeekDlg.textTitle": "Goal Seek", + "SSE.Views.GoalSeekDlg.textTitle": "Goal seek", "SSE.Views.GoalSeekDlg.textToValue": "To value", "SSE.Views.GoalSeekDlg.txtEmpty": "This field is required", "SSE.Views.GoalSeekStatusDlg.textContinue": "Continue", "SSE.Views.GoalSeekStatusDlg.textCurrentValue": "Current value:", - "SSE.Views.GoalSeekStatusDlg.textFoundSolution": "Goal Seeking with Cell {0} found a solution.", - "SSE.Views.GoalSeekStatusDlg.textNotFoundSolution": "Goal Seeking with Cell {0} may not have found a solution.", + "SSE.Views.GoalSeekStatusDlg.textFoundSolution": "Goal seeking with cell {0} found a solution.", + "SSE.Views.GoalSeekStatusDlg.textNotFoundSolution": "Goal seeking with cell {0} may not have found a solution.", "SSE.Views.GoalSeekStatusDlg.textPause": "Pause", - "SSE.Views.GoalSeekStatusDlg.textSearchIteration": "Goal Seeking with Cell {0} on iteration #{1}.", + "SSE.Views.GoalSeekStatusDlg.textSearchIteration": "Goal seeking with cell {0} on iteration #{1}.", "SSE.Views.GoalSeekStatusDlg.textStep": "Step", "SSE.Views.GoalSeekStatusDlg.textTargetValue": "Target value:", - "SSE.Views.GoalSeekStatusDlg.textTitle": "Goal Seek Status", + "SSE.Views.GoalSeekStatusDlg.textTitle": "Goal seek status", "SSE.Views.HeaderFooterDialog.textAlign": "Align with page margins", "SSE.Views.HeaderFooterDialog.textAll": "All pages", "SSE.Views.HeaderFooterDialog.textBold": "Bold", @@ -2997,6 +2997,7 @@ "SSE.Views.HyperlinkSettingsDialog.textInvalidRange": "ERROR! Invalid cells range", "SSE.Views.HyperlinkSettingsDialog.textNames": "Defined names", "SSE.Views.HyperlinkSettingsDialog.textSelectData": "Select data", + "SSE.Views.HyperlinkSettingsDialog.textSelectFile": "Select file", "SSE.Views.HyperlinkSettingsDialog.textSheets": "Sheets", "SSE.Views.HyperlinkSettingsDialog.textTipText": "ScreenTip text", "SSE.Views.HyperlinkSettingsDialog.textTitle": "Hyperlink settings", @@ -3004,7 +3005,6 @@ "SSE.Views.HyperlinkSettingsDialog.txtNotUrl": "This field should be a URL in the \"http://www.example.com\" format", "SSE.Views.HyperlinkSettingsDialog.txtSizeLimit": "This field is limited to 2083 characters", "SSE.Views.HyperlinkSettingsDialog.txtUrlPlaceholder": "Enter the web address or select a file", - "SSE.Views.HyperlinkSettingsDialog.textSelectFile": "Select file", "SSE.Views.ImageSettings.textAdvanced": "Show advanced settings", "SSE.Views.ImageSettings.textCrop": "Crop", "SSE.Views.ImageSettings.textCropFill": "Fill", @@ -3013,14 +3013,14 @@ "SSE.Views.ImageSettings.textEdit": "Edit", "SSE.Views.ImageSettings.textEditObject": "Edit object", "SSE.Views.ImageSettings.textFlip": "Flip", - "SSE.Views.ImageSettings.textFromFile": "From File", - "SSE.Views.ImageSettings.textFromStorage": "From Storage", + "SSE.Views.ImageSettings.textFromFile": "From file", + "SSE.Views.ImageSettings.textFromStorage": "From storage", "SSE.Views.ImageSettings.textFromUrl": "From URL", "SSE.Views.ImageSettings.textHeight": "Height", "SSE.Views.ImageSettings.textHint270": "Rotate 90° Counterclockwise", "SSE.Views.ImageSettings.textHint90": "Rotate 90° Clockwise", - "SSE.Views.ImageSettings.textHintFlipH": "Flip Horizontally", - "SSE.Views.ImageSettings.textHintFlipV": "Flip Vertically", + "SSE.Views.ImageSettings.textHintFlipH": "Flip horizontally", + "SSE.Views.ImageSettings.textHintFlipV": "Flip vertically", "SSE.Views.ImageSettings.textInsert": "Replace Image", "SSE.Views.ImageSettings.textKeepRatio": "Constant proportions", "SSE.Views.ImageSettings.textOriginalSize": "Actual size", @@ -3048,7 +3048,7 @@ "SSE.Views.ImportFromXmlDialog.textInvalidRange": "Invalid cells range", "SSE.Views.ImportFromXmlDialog.textNew": "New worksheet", "SSE.Views.ImportFromXmlDialog.textSelectData": "Select data", - "SSE.Views.ImportFromXmlDialog.textTitle": "Import Data", + "SSE.Views.ImportFromXmlDialog.textTitle": "Import data", "SSE.Views.ImportFromXmlDialog.txtEmpty": "This field is required", "SSE.Views.LeftMenu.tipAbout": "About", "SSE.Views.LeftMenu.tipChat": "Chat", @@ -3060,7 +3060,7 @@ "SSE.Views.LeftMenu.tipSupport": "Feedback & Support", "SSE.Views.LeftMenu.txtDeveloper": "DEVELOPER MODE", "SSE.Views.LeftMenu.txtEditor": "Spreadsheet Editor", - "SSE.Views.LeftMenu.txtLimit": "Limit Access", + "SSE.Views.LeftMenu.txtLimit": "Limit access", "SSE.Views.LeftMenu.txtTrial": "TRIAL MODE", "SSE.Views.LeftMenu.txtTrialDev": "Trial Developer Mode", "SSE.Views.MacroDialog.textMacro": "Macro name", @@ -3072,20 +3072,20 @@ "SSE.Views.MainSettingsPrint.strMargins": "Margins", "SSE.Views.MainSettingsPrint.strPortrait": "Portrait", "SSE.Views.MainSettingsPrint.strPrint": "Print", - "SSE.Views.MainSettingsPrint.strPrintTitles": "Print Titles", + "SSE.Views.MainSettingsPrint.strPrintTitles": "Print titles", "SSE.Views.MainSettingsPrint.strRight": "Right", "SSE.Views.MainSettingsPrint.strTop": "Top", "SSE.Views.MainSettingsPrint.textActualSize": "Actual size", "SSE.Views.MainSettingsPrint.textCustom": "Custom", "SSE.Views.MainSettingsPrint.textCustomOptions": "Custom options", - "SSE.Views.MainSettingsPrint.textFitCols": "Fit All Columns on One Page", - "SSE.Views.MainSettingsPrint.textFitPage": "Fit Sheet on One Page", - "SSE.Views.MainSettingsPrint.textFitRows": "Fit All Rows on One Page", - "SSE.Views.MainSettingsPrint.textPageOrientation": "Page Orientation", + "SSE.Views.MainSettingsPrint.textFitCols": "Fit all columns on one page", + "SSE.Views.MainSettingsPrint.textFitPage": "Fit sheet on one page", + "SSE.Views.MainSettingsPrint.textFitRows": "Fit all rows on one page", + "SSE.Views.MainSettingsPrint.textPageOrientation": "Page orientation", "SSE.Views.MainSettingsPrint.textPageScaling": "Scaling", - "SSE.Views.MainSettingsPrint.textPageSize": "Page Size", - "SSE.Views.MainSettingsPrint.textPrintGrid": "Print Gridlines", - "SSE.Views.MainSettingsPrint.textPrintHeadings": "Print Row and Column Headings", + "SSE.Views.MainSettingsPrint.textPageSize": "Page size", + "SSE.Views.MainSettingsPrint.textPrintGrid": "Print gridlines", + "SSE.Views.MainSettingsPrint.textPrintHeadings": "Print row and column headings", "SSE.Views.MainSettingsPrint.textRepeat": "Repeat...", "SSE.Views.MainSettingsPrint.textRepeatLeft": "Repeat columns at left", "SSE.Views.MainSettingsPrint.textRepeatTop": "Repeat rows at top", @@ -3459,7 +3459,7 @@ "SSE.Views.ProtectedRangesEditDlg.textAnonymous": "Anonymous", "SSE.Views.ProtectedRangesEditDlg.textInvalidName": "The range title must begin with a letter and may only contain letters, numbers, and spaces.", "SSE.Views.ProtectedRangesEditDlg.textInvalidRange": "ERROR! Invalid cells range", - "SSE.Views.ProtectedRangesEditDlg.textSelectData": "Select Data", + "SSE.Views.ProtectedRangesEditDlg.textSelectData": "Select data", "SSE.Views.ProtectedRangesEditDlg.textTipAdd": "Add user", "SSE.Views.ProtectedRangesEditDlg.textTipDelete": "Delete user", "SSE.Views.ProtectedRangesEditDlg.textYou": "you", @@ -3478,7 +3478,7 @@ "SSE.Views.ProtectedRangesManagerDlg.textFilter": "Filter", "SSE.Views.ProtectedRangesManagerDlg.textFilterAll": "All", "SSE.Views.ProtectedRangesManagerDlg.textNew": "New", - "SSE.Views.ProtectedRangesManagerDlg.textProtect": "Protect Sheet", + "SSE.Views.ProtectedRangesManagerDlg.textProtect": "Protect sheet", "SSE.Views.ProtectedRangesManagerDlg.textRange": "Range", "SSE.Views.ProtectedRangesManagerDlg.textRangesDesc": "You can restrict editing ranges to selected people.", "SSE.Views.ProtectedRangesManagerDlg.textTitle": "Title", @@ -3486,8 +3486,8 @@ "SSE.Views.ProtectedRangesManagerDlg.tipIsLocked": "This element is being edited by another user.", "SSE.Views.ProtectedRangesManagerDlg.txtEdit": "Edit", "SSE.Views.ProtectedRangesManagerDlg.txtEditRange": "Edit range", - "SSE.Views.ProtectedRangesManagerDlg.txtNewRange": "New Range", - "SSE.Views.ProtectedRangesManagerDlg.txtTitle": "Protected Ranges", + "SSE.Views.ProtectedRangesManagerDlg.txtNewRange": "New range", + "SSE.Views.ProtectedRangesManagerDlg.txtTitle": "Protected ranges", "SSE.Views.ProtectedRangesManagerDlg.txtView": "View", "SSE.Views.ProtectedRangesManagerDlg.warnDelete": "Are you sure you want to delete the protected range {0}?
    Anyone who has edit access to the spreadsheet will be able to edit content in the range.", "SSE.Views.ProtectedRangesManagerDlg.warnDeleteRanges": "Are you sure you want to delete the protected ranges?
    Anyone who has edit access to the spreadsheet will be able to edit content in those ranges.", @@ -3558,30 +3558,30 @@ "SSE.Views.ShapeSettings.textEditShape": "Edit shape", "SSE.Views.ShapeSettings.textEmptyPattern": "No Pattern", "SSE.Views.ShapeSettings.textFlip": "Flip", - "SSE.Views.ShapeSettings.textFromFile": "From File", - "SSE.Views.ShapeSettings.textFromStorage": "From Storage", + "SSE.Views.ShapeSettings.textFromFile": "From file", + "SSE.Views.ShapeSettings.textFromStorage": "From storage", "SSE.Views.ShapeSettings.textFromUrl": "From URL", "SSE.Views.ShapeSettings.textGradient": "Gradient points", - "SSE.Views.ShapeSettings.textGradientFill": "Gradient Fill", + "SSE.Views.ShapeSettings.textGradientFill": "Gradient fill", "SSE.Views.ShapeSettings.textHint270": "Rotate 90° Counterclockwise", "SSE.Views.ShapeSettings.textHint90": "Rotate 90° Clockwise", - "SSE.Views.ShapeSettings.textHintFlipH": "Flip Horizontally", - "SSE.Views.ShapeSettings.textHintFlipV": "Flip Vertically", - "SSE.Views.ShapeSettings.textImageTexture": "Picture or Texture", + "SSE.Views.ShapeSettings.textHintFlipH": "Flip horizontally", + "SSE.Views.ShapeSettings.textHintFlipV": "Flip vertically", + "SSE.Views.ShapeSettings.textImageTexture": "Picture or texture", "SSE.Views.ShapeSettings.textLinear": "Linear", - "SSE.Views.ShapeSettings.textNoFill": "No Fill", - "SSE.Views.ShapeSettings.textOriginalSize": "Original Size", + "SSE.Views.ShapeSettings.textNoFill": "No fill", + "SSE.Views.ShapeSettings.textOriginalSize": "Original size", "SSE.Views.ShapeSettings.textPatternFill": "Pattern", "SSE.Views.ShapeSettings.textPosition": "Position", "SSE.Views.ShapeSettings.textRadial": "Radial", "SSE.Views.ShapeSettings.textRecentlyUsed": "Recently used", "SSE.Views.ShapeSettings.textRotate90": "Rotate 90°", "SSE.Views.ShapeSettings.textRotation": "Rotation", - "SSE.Views.ShapeSettings.textSelectImage": "Select Picture", + "SSE.Views.ShapeSettings.textSelectImage": "Select picture", "SSE.Views.ShapeSettings.textSelectTexture": "Select", "SSE.Views.ShapeSettings.textStretch": "Stretch", "SSE.Views.ShapeSettings.textStyle": "Style", - "SSE.Views.ShapeSettings.textTexture": "From Texture", + "SSE.Views.ShapeSettings.textTexture": "From texture", "SSE.Views.ShapeSettings.textTile": "Tile", "SSE.Views.ShapeSettings.tipAddGradientPoint": "Add gradient point", "SSE.Views.ShapeSettings.tipRemoveGradientPoint": "Remove gradient point", @@ -3591,7 +3591,7 @@ "SSE.Views.ShapeSettings.txtDarkFabric": "Dark fabric", "SSE.Views.ShapeSettings.txtGrain": "Grain", "SSE.Views.ShapeSettings.txtGranite": "Granite", - "SSE.Views.ShapeSettings.txtGreyPaper": "Gray Paper", + "SSE.Views.ShapeSettings.txtGreyPaper": "Gray paper", "SSE.Views.ShapeSettings.txtKnit": "Knit", "SSE.Views.ShapeSettings.txtLeather": "Leather", "SSE.Views.ShapeSettings.txtNoBorders": "No Line", @@ -3643,10 +3643,10 @@ "SSE.Views.ShapeSettingsAdvanced.textWidth": "Width", "SSE.Views.SignatureSettings.notcriticalErrorTitle": "Warning", "SSE.Views.SignatureSettings.strDelete": "Remove Signature", - "SSE.Views.SignatureSettings.strDetails": "Signature Details", + "SSE.Views.SignatureSettings.strDetails": "Signature details", "SSE.Views.SignatureSettings.strInvalid": "Invalid signatures", "SSE.Views.SignatureSettings.strRequested": "Requested signatures", - "SSE.Views.SignatureSettings.strSetup": "Signature Setup", + "SSE.Views.SignatureSettings.strSetup": "Signature setup", "SSE.Views.SignatureSettings.strSign": "Sign", "SSE.Views.SignatureSettings.strSignature": "Signature", "SSE.Views.SignatureSettings.strSigner": "Signer", @@ -3795,7 +3795,7 @@ "SSE.Views.Spellcheck.textChange": "Change", "SSE.Views.Spellcheck.textChangeAll": "Change all", "SSE.Views.Spellcheck.textIgnore": "Ignore", - "SSE.Views.Spellcheck.textIgnoreAll": "Ignore All", + "SSE.Views.Spellcheck.textIgnoreAll": "Ignore all", "SSE.Views.Spellcheck.txtAddToDictionary": "Add to dictionary", "SSE.Views.Spellcheck.txtClosePanel": "Close spelling", "SSE.Views.Spellcheck.txtComplete": "Spellcheck has been completed", @@ -3822,7 +3822,7 @@ "SSE.Views.Statusbar.itemRename": "Rename", "SSE.Views.Statusbar.itemStatus": "Saving status", "SSE.Views.Statusbar.itemSum": "Sum", - "SSE.Views.Statusbar.itemTabColor": "Tab Color", + "SSE.Views.Statusbar.itemTabColor": "Tab color", "SSE.Views.Statusbar.itemUnProtect": "Unprotect", "SSE.Views.Statusbar.RenameDialog.errNameExists": "Worksheet with such a name already exists.", "SSE.Views.Statusbar.RenameDialog.errNameWrongChar": "A sheet name cannot contain the following characters: \\/*?[]: or the character ' as first or last character", @@ -3839,13 +3839,13 @@ "SSE.Views.Statusbar.tipAddTab": "Add worksheet", "SSE.Views.Statusbar.tipFirst": "Scroll to first sheet", "SSE.Views.Statusbar.tipLast": "Scroll to last sheet", - "SSE.Views.Statusbar.tipListOfSheets": "List of Sheets", + "SSE.Views.Statusbar.tipListOfSheets": "List of sheets", "SSE.Views.Statusbar.tipNext": "Scroll sheet list right", "SSE.Views.Statusbar.tipPrev": "Scroll sheet list left", "SSE.Views.Statusbar.tipZoomFactor": "Zoom", "SSE.Views.Statusbar.tipZoomIn": "Zoom in", "SSE.Views.Statusbar.tipZoomOut": "Zoom out", - "SSE.Views.Statusbar.ungroupSheets": "Ungroup Sheets", + "SSE.Views.Statusbar.ungroupSheets": "Ungroup sheets", "SSE.Views.Statusbar.zoomText": "Zoom {0}%", "SSE.Views.TableOptionsDialog.errorAutoFilterDataRange": "The operation could not be done for the selected range of cells.
    Select a uniform data range different from the existing one and try again.", "SSE.Views.TableOptionsDialog.errorFTChangeTableRangeError": "Operation could not be completed for the selected cell range.
    Select a range so that the first table row was on the same row
    and the resulting table overlapped the current one.", @@ -3859,15 +3859,15 @@ "SSE.Views.TableSettings.deleteColumnText": "Delete column", "SSE.Views.TableSettings.deleteRowText": "Delete row", "SSE.Views.TableSettings.deleteTableText": "Delete table", - "SSE.Views.TableSettings.insertColumnLeftText": "Insert Column Left", - "SSE.Views.TableSettings.insertColumnRightText": "Insert Column Right", - "SSE.Views.TableSettings.insertRowAboveText": "Insert Row Above", - "SSE.Views.TableSettings.insertRowBelowText": "Insert Row Below", + "SSE.Views.TableSettings.insertColumnLeftText": "Insert column left", + "SSE.Views.TableSettings.insertColumnRightText": "Insert column right", + "SSE.Views.TableSettings.insertRowAboveText": "Insert row above", + "SSE.Views.TableSettings.insertRowBelowText": "Insert row below", "SSE.Views.TableSettings.notcriticalErrorTitle": "Warning", - "SSE.Views.TableSettings.selectColumnText": "Select Entire Column", - "SSE.Views.TableSettings.selectDataText": "Select Column Data", - "SSE.Views.TableSettings.selectRowText": "Select Row", - "SSE.Views.TableSettings.selectTableText": "Select Table", + "SSE.Views.TableSettings.selectColumnText": "Select entire column", + "SSE.Views.TableSettings.selectDataText": "Select column data", + "SSE.Views.TableSettings.selectRowText": "Select row", + "SSE.Views.TableSettings.selectTableText": "Select table", "SSE.Views.TableSettings.textActions": "Table actions", "SSE.Views.TableSettings.textAdvanced": "Show advanced settings", "SSE.Views.TableSettings.textBanded": "Banded", @@ -3888,10 +3888,10 @@ "SSE.Views.TableSettings.textReservedName": "The name you are trying to use is already referenced in cell formulas. Please use some other name.", "SSE.Views.TableSettings.textResize": "Resize table", "SSE.Views.TableSettings.textRows": "Rows", - "SSE.Views.TableSettings.textSelectData": "Select Data", + "SSE.Views.TableSettings.textSelectData": "Select data", "SSE.Views.TableSettings.textSlicer": "Insert slicer", - "SSE.Views.TableSettings.textTableName": "Table Name", - "SSE.Views.TableSettings.textTemplate": "Select From Template", + "SSE.Views.TableSettings.textTableName": "Table name", + "SSE.Views.TableSettings.textTemplate": "Select from template", "SSE.Views.TableSettings.textTotal": "Total", "SSE.Views.TableSettings.txtGroupTable_Custom": "Custom", "SSE.Views.TableSettings.txtGroupTable_Dark": "Dark", @@ -3920,13 +3920,13 @@ "SSE.Views.TextArtSettings.textColor": "Color fill", "SSE.Views.TextArtSettings.textDirection": "Direction", "SSE.Views.TextArtSettings.textEmptyPattern": "No Pattern", - "SSE.Views.TextArtSettings.textFromFile": "From File", + "SSE.Views.TextArtSettings.textFromFile": "From file", "SSE.Views.TextArtSettings.textFromUrl": "From URL", "SSE.Views.TextArtSettings.textGradient": "Gradient points", - "SSE.Views.TextArtSettings.textGradientFill": "Gradient Fill", - "SSE.Views.TextArtSettings.textImageTexture": "Picture or Texture", + "SSE.Views.TextArtSettings.textGradientFill": "Gradient fill", + "SSE.Views.TextArtSettings.textImageTexture": "Picture or texture", "SSE.Views.TextArtSettings.textLinear": "Linear", - "SSE.Views.TextArtSettings.textNoFill": "No Fill", + "SSE.Views.TextArtSettings.textNoFill": "No fill", "SSE.Views.TextArtSettings.textPatternFill": "Pattern", "SSE.Views.TextArtSettings.textPosition": "Position", "SSE.Views.TextArtSettings.textRadial": "Radial", @@ -3934,7 +3934,7 @@ "SSE.Views.TextArtSettings.textStretch": "Stretch", "SSE.Views.TextArtSettings.textStyle": "Style", "SSE.Views.TextArtSettings.textTemplate": "Template", - "SSE.Views.TextArtSettings.textTexture": "From Texture", + "SSE.Views.TextArtSettings.textTexture": "From texture", "SSE.Views.TextArtSettings.textTile": "Tile", "SSE.Views.TextArtSettings.textTransform": "Transform", "SSE.Views.TextArtSettings.tipAddGradientPoint": "Add gradient point", @@ -3945,7 +3945,7 @@ "SSE.Views.TextArtSettings.txtDarkFabric": "Dark fabric", "SSE.Views.TextArtSettings.txtGrain": "Grain", "SSE.Views.TextArtSettings.txtGranite": "Granite", - "SSE.Views.TextArtSettings.txtGreyPaper": "Gray Paper", + "SSE.Views.TextArtSettings.txtGreyPaper": "Gray paper", "SSE.Views.TextArtSettings.txtKnit": "Knit", "SSE.Views.TextArtSettings.txtLeather": "Leather", "SSE.Views.TextArtSettings.txtNoBorders": "No Line", @@ -4185,6 +4185,7 @@ "SSE.Views.Toolbar.tipPrintQuick": "Quick print", "SSE.Views.Toolbar.tipPrintTitles": "Print titles", "SSE.Views.Toolbar.tipRedo": "Redo", + "SSE.Views.Toolbar.tipReplace": "Replace", "SSE.Views.Toolbar.tipSave": "Save", "SSE.Views.Toolbar.tipSaveCoauth": "Save your changes for the other users to see them.", "SSE.Views.Toolbar.tipScale": "Scale to fit", @@ -4385,9 +4386,9 @@ "SSE.Views.WBProtection.txtLockedText": "Lock Text", "SSE.Views.WBProtection.txtProtectRange": "Protect Range", "SSE.Views.WBProtection.txtProtectSheet": "Protect Sheet", - "SSE.Views.WBProtection.txtProtectWB": "Protect Workbook", + "SSE.Views.WBProtection.txtProtectWB": "Protect workbook", "SSE.Views.WBProtection.txtSheetUnlockDescription": "Enter a password to unprotect sheet", - "SSE.Views.WBProtection.txtSheetUnlockTitle": "Unprotect Sheet", + "SSE.Views.WBProtection.txtSheetUnlockTitle": "Unprotect sheet", "SSE.Views.WBProtection.txtWBUnlockDescription": "Enter a password to unprotect workbook", - "SSE.Views.WBProtection.txtWBUnlockTitle": "Unprotect Workbook" + "SSE.Views.WBProtection.txtWBUnlockTitle": "Unprotect workbook" } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/fr.json b/apps/spreadsheeteditor/main/locale/fr.json index 678a6d35e3..0a713d64d4 100644 --- a/apps/spreadsheeteditor/main/locale/fr.json +++ b/apps/spreadsheeteditor/main/locale/fr.json @@ -464,7 +464,7 @@ "Common.Views.Header.tipPrintQuick": "Impression rapide", "Common.Views.Header.tipRedo": "Rétablir", "Common.Views.Header.tipSave": "Enregistrer", - "Common.Views.Header.tipSearch": "Recherche", + "Common.Views.Header.tipSearch": "Rechercher", "Common.Views.Header.tipUndo": "Annuler", "Common.Views.Header.tipUndock": "Détacher en fenêtre séparée", "Common.Views.Header.tipUsers": "Afficher les utilisateurs", @@ -645,7 +645,7 @@ "Common.Views.SearchPanel.textReplace": "Remplacer", "Common.Views.SearchPanel.textReplaceAll": "Remplacer tout", "Common.Views.SearchPanel.textReplaceWith": "Remplacer par", - "Common.Views.SearchPanel.textSearch": "Recherche", + "Common.Views.SearchPanel.textSearch": "Rechercher", "Common.Views.SearchPanel.textSearchAgain": "{0}Effectuer une nouvelle recherche{1} pour obtenir des résultats précis.", "Common.Views.SearchPanel.textSearchHasStopped": "La recherche a été arrêtée", "Common.Views.SearchPanel.textSearchOptions": "Options de recherche", @@ -1004,7 +1004,7 @@ "SSE.Controllers.Main.errorLoadingFont": "Les polices ne sont pas téléchargées.
    Veuillez contacter l'administrateur de Document Server.", "SSE.Controllers.Main.errorLocationOrDataRangeError": "La référence de localisation ou la plage de données n'est pas valide.", "SSE.Controllers.Main.errorLockedAll": "L'opération ne peut pas être réalisée car la feuille a été verrouillée par un autre utilisateur.", - "SSE.Controllers.Main.errorLockedCellGoalSeek": "L'une des cellules impliquées dans le processus de recherche d'un objectif a été modifiée par un autre utilisateur.", + "SSE.Controllers.Main.errorLockedCellGoalSeek": "L'une des cellules impliquées dans le processus de la recherche d'objectifs a été modifiée par un autre utilisateur.", "SSE.Controllers.Main.errorLockedCellPivot": "Impossible de modifier les données d'un tableau croisé dynamique.", "SSE.Controllers.Main.errorLockedWorksheetRename": "La feuille ne peut pas être renommée pour le moment car elle est en train d'être renommée par un autre utilisateur", "SSE.Controllers.Main.errorMaxPoints": "Maximum de 4096 points en série par graphique.", @@ -2136,7 +2136,7 @@ "SSE.Views.ChartWizardDialog.errorMaxRows": "Le nombre maximum de séries de données par graphique est de 255.", "SSE.Views.ChartWizardDialog.errorSecondaryAxis": "Le type de graphique sélectionné nécessite l'axe secondaire utilisé par un graphique existant. Sélectionnez un autre type de graphique.", "SSE.Views.ChartWizardDialog.errorStockChart": "Ordre des lignes incorrect. Pour construire un graphique boursier, placez les données sur la feuille dans l'ordre suivant : prix d'ouverture, prix maximum, prix minimum, prix de clôture.", - "SSE.Views.ChartWizardDialog.textRecommended": "Recommandé", + "SSE.Views.ChartWizardDialog.textRecommended": "Recommandations", "SSE.Views.ChartWizardDialog.textSecondary": "Axe secondaire", "SSE.Views.ChartWizardDialog.textSeries": "Série", "SSE.Views.ChartWizardDialog.textTitle": "Insérer un graphique", @@ -2165,7 +2165,7 @@ "SSE.Views.DataTab.capBtnUngroup": "Dissocier", "SSE.Views.DataTab.capDataExternalLinks": "Liens externes", "SSE.Views.DataTab.capDataFromText": "Obtenir les données", - "SSE.Views.DataTab.capGoalSeek": "Recherche d'objectifs", + "SSE.Views.DataTab.capGoalSeek": "Valeur cible", "SSE.Views.DataTab.mniFromFile": "À partir du fichier local TXT/CSV", "SSE.Views.DataTab.mniFromUrl": "À partir de l'URL du fichier TXT/CSV", "SSE.Views.DataTab.mniFromXMLFile": "À partir du XML local", @@ -2394,7 +2394,7 @@ "SSE.Views.DocumentHolder.txtClearSparklines": "Supprimer les graphiques sparklines sélectionnés", "SSE.Views.DocumentHolder.txtClearText": "Texte", "SSE.Views.DocumentHolder.txtCollapse": "Réduire", - "SSE.Views.DocumentHolder.txtCollapseEntire": "Réduire tout le champ", + "SSE.Views.DocumentHolder.txtCollapseEntire": "Réduire le champ entièrement", "SSE.Views.DocumentHolder.txtColumn": "Colonne entière", "SSE.Views.DocumentHolder.txtColumnWidth": "Définir la largeur de la colonne", "SSE.Views.DocumentHolder.txtCondFormat": "Mise en forme conditionnelle", @@ -2414,9 +2414,9 @@ "SSE.Views.DocumentHolder.txtDistribHor": "Distribuer horizontalement", "SSE.Views.DocumentHolder.txtDistribVert": "Distribuer verticalement", "SSE.Views.DocumentHolder.txtEditComment": "Modifier le commentaire", - "SSE.Views.DocumentHolder.txtExpand": "Élargir", - "SSE.Views.DocumentHolder.txtExpandCollapse": "Élargir/Réduire", - "SSE.Views.DocumentHolder.txtExpandEntire": "Élargir le champ entier", + "SSE.Views.DocumentHolder.txtExpand": "Développer", + "SSE.Views.DocumentHolder.txtExpandCollapse": "Développer/Réduire", + "SSE.Views.DocumentHolder.txtExpandEntire": "Développer le champ entièrement", "SSE.Views.DocumentHolder.txtFieldSettings": "Paramètres de champs", "SSE.Views.DocumentHolder.txtFilter": "Filtre", "SSE.Views.DocumentHolder.txtFilterCellColor": "Filtrer par couleur des cellules", @@ -2696,7 +2696,7 @@ "SSE.Views.FillSeriesDialog.textLinear": "Linéaire", "SSE.Views.FillSeriesDialog.textMonth": "Mois", "SSE.Views.FillSeriesDialog.textRows": "Lignes", - "SSE.Views.FillSeriesDialog.textSeries": "Série en", + "SSE.Views.FillSeriesDialog.textSeries": "Série dans", "SSE.Views.FillSeriesDialog.textStep": "Valeur de l'étape", "SSE.Views.FillSeriesDialog.textStop": "Valeur limite", "SSE.Views.FillSeriesDialog.textTitle": "Série", @@ -2884,8 +2884,8 @@ "SSE.Views.FormulaDialog.sDescription": "Description", "SSE.Views.FormulaDialog.textGroupDescription": "Sélectionner un groupe de fonctions", "SSE.Views.FormulaDialog.textListDescription": "Sélectionner une fonction", - "SSE.Views.FormulaDialog.txtRecommended": "Recommandé", - "SSE.Views.FormulaDialog.txtSearch": "Recherche", + "SSE.Views.FormulaDialog.txtRecommended": "Recommandations", + "SSE.Views.FormulaDialog.txtSearch": "Rechercher", "SSE.Views.FormulaDialog.txtTitle": "Insérer une fonction", "SSE.Views.FormulaTab.capBtnRemoveArr": "Supprimer les flèches", "SSE.Views.FormulaTab.capBtnTraceDep": "Tracer les dépendants", @@ -2925,7 +2925,7 @@ "SSE.Views.FormulaWizard.textText": "Texte", "SSE.Views.FormulaWizard.textTitle": "Arguments de la fonction", "SSE.Views.FormulaWizard.textValue": "Résultat d'une formule ", - "SSE.Views.GoalSeekDlg.textChangingCell": "En changeant de cellule", + "SSE.Views.GoalSeekDlg.textChangingCell": "En modifiant la cellule", "SSE.Views.GoalSeekDlg.textDataRangeError": "Il manque une plage à la formule", "SSE.Views.GoalSeekDlg.textMustContainFormula": "La cellule doit contenir une formule", "SSE.Views.GoalSeekDlg.textMustContainValue": "La cellule doit contenir une valeur", @@ -2933,18 +2933,18 @@ "SSE.Views.GoalSeekDlg.textMustSingleCell": "La référence doit porter sur une seule cellule", "SSE.Views.GoalSeekDlg.textSelectData": "Sélection des données", "SSE.Views.GoalSeekDlg.textSetCell": "Définir la cellule", - "SSE.Views.GoalSeekDlg.textTitle": "Recherche d'objectifs", - "SSE.Views.GoalSeekDlg.textToValue": "Valeur", + "SSE.Views.GoalSeekDlg.textTitle": "Valeur cible", + "SSE.Views.GoalSeekDlg.textToValue": "Vers la valeur", "SSE.Views.GoalSeekDlg.txtEmpty": "Ce champ est obligatoire", "SSE.Views.GoalSeekStatusDlg.textContinue": "Continuer", "SSE.Views.GoalSeekStatusDlg.textCurrentValue": "Valeur actuelle :", - "SSE.Views.GoalSeekStatusDlg.textFoundSolution": "La recherche d'objectifs avec la cellule {0} a permis de trouver une solution.", - "SSE.Views.GoalSeekStatusDlg.textNotFoundSolution": "La recherche d'objectifs avec la cellule {0} peut ne pas avoir trouvé de solution.", + "SSE.Views.GoalSeekStatusDlg.textFoundSolution": "Recherche d'objectif avec la cellule {0} a permis de trouver une solution.", + "SSE.Views.GoalSeekStatusDlg.textNotFoundSolution": "Recherche d'objectif avec la cellule {0} n'a pas pu trouver de solution.", "SSE.Views.GoalSeekStatusDlg.textPause": "Pause", - "SSE.Views.GoalSeekStatusDlg.textSearchIteration": "Recherche d'un objectif avec la cellule {0} à l'itération #{1}.", + "SSE.Views.GoalSeekStatusDlg.textSearchIteration": "Recherche d'objectif avec la cellule {0} à l'itération #{1}.", "SSE.Views.GoalSeekStatusDlg.textStep": "Étape", "SSE.Views.GoalSeekStatusDlg.textTargetValue": "Valeur cible :", - "SSE.Views.GoalSeekStatusDlg.textTitle": "Statut de la recherche d'objectifs", + "SSE.Views.GoalSeekStatusDlg.textTitle": "Statut de la valeur cible", "SSE.Views.HeaderFooterDialog.textAlign": "Aligner sur les marges de page", "SSE.Views.HeaderFooterDialog.textAll": "Toutes les pages", "SSE.Views.HeaderFooterDialog.textBold": "Gras", @@ -3285,13 +3285,13 @@ "SSE.Views.PivotTable.textRowHeader": "En-têtes de lignes", "SSE.Views.PivotTable.tipCreatePivot": "Insérer un tableau croisé dynamique", "SSE.Views.PivotTable.tipGrandTotals": "Afficher ou masquer les totaux généraux", - "SSE.Views.PivotTable.tipRefresh": "Mettez à jour l'information depuis la source de données", + "SSE.Views.PivotTable.tipRefresh": "Mettre à jour les informations depuis la source de données", "SSE.Views.PivotTable.tipRefreshCurrent": "Mettre à jour les informations de la source de données pour le tableau actuel", "SSE.Views.PivotTable.tipSelect": "Sélectionner tout le tableau croisé dynamique", "SSE.Views.PivotTable.tipSubtotals": "Afficher ou masquer les sous-totaux", - "SSE.Views.PivotTable.txtCollapseEntire": "Réduire tout le champ", + "SSE.Views.PivotTable.txtCollapseEntire": "Réduire le champ entièrement", "SSE.Views.PivotTable.txtCreate": "Insérer un tableau", - "SSE.Views.PivotTable.txtExpandEntire": "Élargir le champ entier", + "SSE.Views.PivotTable.txtExpandEntire": "Développer le champ entièrement", "SSE.Views.PivotTable.txtGroupPivot_Custom": "Personnalisé", "SSE.Views.PivotTable.txtGroupPivot_Dark": "Sombre", "SSE.Views.PivotTable.txtGroupPivot_Light": "Clair", @@ -3404,7 +3404,7 @@ "SSE.Views.PrintWithPreview.txtPrintRange": "Zone d'impression", "SSE.Views.PrintWithPreview.txtPrintSides": "Impression sur les deux côtés", "SSE.Views.PrintWithPreview.txtPrintTitles": "Titres à imprimer", - "SSE.Views.PrintWithPreview.txtPrintToPDF": "Imprimer au PDF", + "SSE.Views.PrintWithPreview.txtPrintToPDF": "Imprimer en PDF", "SSE.Views.PrintWithPreview.txtRepeat": "Répéter...", "SSE.Views.PrintWithPreview.txtRepeatColumnsAtLeft": "Répéter les colonnes à gauche", "SSE.Views.PrintWithPreview.txtRepeatRowsAtTop": "Répéter les lignes en haut", @@ -4150,7 +4150,7 @@ "SSE.Views.Toolbar.tipIncDecimal": "Ajouter une décimale", "SSE.Views.Toolbar.tipIncFont": "Augmenter la taille de police", "SSE.Views.Toolbar.tipInsertChart": "Insérer un graphique", - "SSE.Views.Toolbar.tipInsertChartRecommend": "Insérer le graphique recommandéas", + "SSE.Views.Toolbar.tipInsertChartRecommend": "Insérer le graphique recommandé", "SSE.Views.Toolbar.tipInsertChartSpark": "Insérer un graphique", "SSE.Views.Toolbar.tipInsertEquation": "Insérer une équation", "SSE.Views.Toolbar.tipInsertHorizontalText": "Insérer une zone de texte horizontale", diff --git a/apps/spreadsheeteditor/main/locale/pt-pt.json b/apps/spreadsheeteditor/main/locale/pt-pt.json index aa7b187c9c..65962382c6 100644 --- a/apps/spreadsheeteditor/main/locale/pt-pt.json +++ b/apps/spreadsheeteditor/main/locale/pt-pt.json @@ -3778,6 +3778,8 @@ "SSE.Views.Top10FilterDialog.txtTitle": "Filtro automático dos 10 Mais", "SSE.Views.Top10FilterDialog.txtTop": "Parte superior", "SSE.Views.Top10FilterDialog.txtValueTitle": "Filtro Top 10", + "SSE.Views.ValueFieldSettingsDialog.textNext": "(seguinte)", + "SSE.Views.ValueFieldSettingsDialog.textPrev": "(anterior)", "SSE.Views.ValueFieldSettingsDialog.textTitle": "Definições de campo de valor", "SSE.Views.ValueFieldSettingsDialog.txtAverage": "Média", "SSE.Views.ValueFieldSettingsDialog.txtBaseField": "Campo base", diff --git a/apps/spreadsheeteditor/main/locale/vi.json b/apps/spreadsheeteditor/main/locale/vi.json index f6d4725fec..e3c90cf4dd 100644 --- a/apps/spreadsheeteditor/main/locale/vi.json +++ b/apps/spreadsheeteditor/main/locale/vi.json @@ -110,7 +110,7 @@ "Common.Views.PasswordDialog.txtWarning": "Chú ý: Nếu bạn mất hoặc quên mật khẩu, bạn không thể khôi phục mật khẩu.", "Common.Views.PluginDlg.textLoading": "Đang tải", "Common.Views.Plugins.groupCaption": "Plugin", - "Common.Views.Plugins.strPlugins": "Plugin", + "Common.Views.Plugins.strPlugins": "Phần mở rộng", "Common.Views.Plugins.textStart": "Bắt đầu", "Common.Views.Plugins.textStop": "Dừng", "Common.Views.RenameDialog.textName": "Tên file", @@ -356,6 +356,9 @@ "SSE.Controllers.Main.txtMath": "Toán", "SSE.Controllers.Main.txtRectangles": "Hình chữ nhật", "SSE.Controllers.Main.txtSeries": "Chuỗi", + "SSE.Controllers.Main.txtShape_noSmoking": "Biểu tượng \"Không\"", + "SSE.Controllers.Main.txtShape_star4": "Sao 4 cánh", + "SSE.Controllers.Main.txtShape_star5": "Sao 5 cánh", "SSE.Controllers.Main.txtStarsRibbons": "Sao & Ruy-băng", "SSE.Controllers.Main.txtStyle_Bad": "Xấu", "SSE.Controllers.Main.txtStyle_Calculation": "Tính toán", @@ -963,6 +966,7 @@ "SSE.Views.DocumentHolder.textArrangeBackward": "Gửi về phía sau", "SSE.Views.DocumentHolder.textArrangeForward": "Di chuyển tiến lên", "SSE.Views.DocumentHolder.textArrangeFront": "Đưa lên Cận cảnh", + "SSE.Views.DocumentHolder.textAverage": "TRUNG BÌNH", "SSE.Views.DocumentHolder.textEntriesList": "Chọn từ danh sách thả xuống", "SSE.Views.DocumentHolder.textFreezePanes": "Freeze Panes", "SSE.Views.DocumentHolder.textNone": "Không", @@ -1002,6 +1006,8 @@ "SSE.Views.DocumentHolder.txtInsert": "Chèn", "SSE.Views.DocumentHolder.txtInsHyperlink": "Siêu liên kết", "SSE.Views.DocumentHolder.txtPaste": "Dán", + "SSE.Views.DocumentHolder.txtPercent": "% của", + "SSE.Views.DocumentHolder.txtPercentDiff": "% khác biệt so với", "SSE.Views.DocumentHolder.txtReapply": "Áp dụng lại", "SSE.Views.DocumentHolder.txtRow": "Toàn bộ hàng", "SSE.Views.DocumentHolder.txtRowHeight": "Đặt chiều cao cột", @@ -1071,6 +1077,7 @@ "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtPt": "Điểm", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtRu": "Nga", "SSE.Views.FileMenuPanels.MainSettingsGeneral.txtWin": "như Windows", + "SSE.Views.FillSeriesDialog.textAuto": "Tự động điền", "SSE.Views.FormatRulesEditDlg.textNewColor": "Màu tùy chỉnh", "SSE.Views.FormatSettingsDialog.textCategory": "Danh mục", "SSE.Views.FormatSettingsDialog.textDecimal": "Thập phân", @@ -1233,6 +1240,7 @@ "SSE.Views.ParagraphSettingsAdvanced.textTabPosition": "Vị trí Tab", "SSE.Views.ParagraphSettingsAdvanced.textTabRight": "Bên phải", "SSE.Views.ParagraphSettingsAdvanced.textTitle": "Đoạn văn bản - Cài đặt Nâng cao", + "SSE.Views.PivotSettingsAdvanced.textAutofitColWidth": "Tự động khớp độ rộng cột khi cập nhật", "SSE.Views.PrintSettings.btnPrint": "Lưu & In", "SSE.Views.PrintSettings.strBottom": "Dưới cùng", "SSE.Views.PrintSettings.strLandscape": "Nằm ngang", @@ -1319,6 +1327,7 @@ "SSE.Views.ShapeSettingsAdvanced.textAltTip": "Miêu tả thay thế dưới dạng văn bản thông tin đối tượng trực quan, sẽ được đọc cho những người bị suy giảm thị lực hoặc nhận thức để giúp họ hiểu rõ hơn về những thông tin có trong hình ảnh, autoshape, biểu đồ hoặc bảng.", "SSE.Views.ShapeSettingsAdvanced.textAltTitle": "Tiêu đề", "SSE.Views.ShapeSettingsAdvanced.textArrows": "Mũi tên", + "SSE.Views.ShapeSettingsAdvanced.textAutofit": "Tự động khớp", "SSE.Views.ShapeSettingsAdvanced.textBeginSize": "Kích thước khởi đầu", "SSE.Views.ShapeSettingsAdvanced.textBeginStyle": "Kiểu khởi đầu", "SSE.Views.ShapeSettingsAdvanced.textBevel": "Xiên góc", @@ -1349,6 +1358,7 @@ "SSE.Views.Statusbar.CopyDialog.textMoveBefore": "Di chuyển trước trang tính", "SSE.Views.Statusbar.filteredRecordsText": "{0} trên {1} bản ghi được lọc", "SSE.Views.Statusbar.filteredText": "Chế độ bộ lọc", + "SSE.Views.Statusbar.itemAverage": "TRUNG BÌNH", "SSE.Views.Statusbar.itemCopy": "Sao chép", "SSE.Views.Statusbar.itemDelete": "Xóa", "SSE.Views.Statusbar.itemHidden": "Ẩn", @@ -1635,5 +1645,8 @@ "SSE.Views.Top10FilterDialog.txtItems": "Mục", "SSE.Views.Top10FilterDialog.txtPercent": "Phần trăm", "SSE.Views.Top10FilterDialog.txtTitle": "Tự động lọc Tốp 10", - "SSE.Views.Top10FilterDialog.txtTop": "Tốp" + "SSE.Views.Top10FilterDialog.txtTop": "Tốp", + "SSE.Views.ValueFieldSettingsDialog.txtPercent": "% của", + "SSE.Views.ValueFieldSettingsDialog.txtPercentDiff": "% khác biệt so với", + "SSE.Views.ValueFieldSettingsDialog.txtPercentOfCol": "% của cột" } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/zh.json b/apps/spreadsheeteditor/main/locale/zh.json index 33dfcb3ec7..f009b59ccb 100644 --- a/apps/spreadsheeteditor/main/locale/zh.json +++ b/apps/spreadsheeteditor/main/locale/zh.json @@ -1159,7 +1159,7 @@ "SSE.Controllers.Main.txtRow": "行", "SSE.Controllers.Main.txtRowLbls": "行标签", "SSE.Controllers.Main.txtSeconds": "秒", - "SSE.Controllers.Main.txtSeries": "系列", + "SSE.Controllers.Main.txtSeries": "序列", "SSE.Controllers.Main.txtShape_accentBorderCallout1": "线形标注1(带边框和强调线)", "SSE.Controllers.Main.txtShape_accentBorderCallout2": "线形标注2(带边框和强调线)", "SSE.Controllers.Main.txtShape_accentBorderCallout3": "线形标注3(带边框和强调线)", @@ -1953,9 +1953,9 @@ "SSE.Views.ChartDataRangeDialog.textSelectData": "选择数据", "SSE.Views.ChartDataRangeDialog.txtAxisLabel": "轴标签范围", "SSE.Views.ChartDataRangeDialog.txtChoose": "选择范围", - "SSE.Views.ChartDataRangeDialog.txtSeriesName": "系列名称", + "SSE.Views.ChartDataRangeDialog.txtSeriesName": "序列名称", "SSE.Views.ChartDataRangeDialog.txtTitleCategory": "轴标签", - "SSE.Views.ChartDataRangeDialog.txtTitleSeries": "编辑数据系列", + "SSE.Views.ChartDataRangeDialog.txtTitleSeries": "编辑数据序列", "SSE.Views.ChartDataRangeDialog.txtValues": "值", "SSE.Views.ChartDataRangeDialog.txtXValues": "X值", "SSE.Views.ChartDataRangeDialog.txtYValues": "Y值", @@ -2092,7 +2092,7 @@ "SSE.Views.ChartSettingsDlg.textSameAll": "全都相同", "SSE.Views.ChartSettingsDlg.textSelectData": "选择数据", "SSE.Views.ChartSettingsDlg.textSeparator": "数据标签分隔符", - "SSE.Views.ChartSettingsDlg.textSeriesName": "系列名称", + "SSE.Views.ChartSettingsDlg.textSeriesName": "序列名称", "SSE.Views.ChartSettingsDlg.textShow": "显示", "SSE.Views.ChartSettingsDlg.textShowBorders": "显示图表边框", "SSE.Views.ChartSettingsDlg.textShowData": "以隐藏的行和列显示数据", @@ -2127,7 +2127,7 @@ "SSE.Views.ChartTypeDialog.errorComboSeries": "若要创建组合图表,请至少选择两个系列的数据。", "SSE.Views.ChartTypeDialog.errorSecondaryAxis": "所选图表类型需要现有图表正在使用的辅助轴。选择其他图表类型。", "SSE.Views.ChartTypeDialog.textSecondary": "副轴", - "SSE.Views.ChartTypeDialog.textSeries": "系列", + "SSE.Views.ChartTypeDialog.textSeries": "序列", "SSE.Views.ChartTypeDialog.textStyle": "样式", "SSE.Views.ChartTypeDialog.textTitle": "图表类型", "SSE.Views.ChartTypeDialog.textType": "类型", @@ -2138,7 +2138,7 @@ "SSE.Views.ChartWizardDialog.errorStockChart": "行顺序不正确。要创建股票图表,请按以下顺序将数据放在工作表上:开盘价、最高价格、最低价格、收盘价。", "SSE.Views.ChartWizardDialog.textRecommended": "推荐的", "SSE.Views.ChartWizardDialog.textSecondary": "副轴", - "SSE.Views.ChartWizardDialog.textSeries": "系列", + "SSE.Views.ChartWizardDialog.textSeries": "序列", "SSE.Views.ChartWizardDialog.textTitle": "插入图表", "SSE.Views.ChartWizardDialog.textTitleChange": "更改图表类型", "SSE.Views.ChartWizardDialog.textType": "类型", @@ -2355,7 +2355,7 @@ "SSE.Views.DocumentHolder.textRotate270": "逆时针旋转90°", "SSE.Views.DocumentHolder.textRotate90": "顺时针旋转90°", "SSE.Views.DocumentHolder.textSaveAsPicture": "另存为图片", - "SSE.Views.DocumentHolder.textSeries": "系列", + "SSE.Views.DocumentHolder.textSeries": "序列", "SSE.Views.DocumentHolder.textShapeAlignBottom": "底部对齐", "SSE.Views.DocumentHolder.textShapeAlignCenter": "居中对齐", "SSE.Views.DocumentHolder.textShapeAlignLeft": "左对齐", @@ -2696,10 +2696,10 @@ "SSE.Views.FillSeriesDialog.textLinear": "线性", "SSE.Views.FillSeriesDialog.textMonth": "月", "SSE.Views.FillSeriesDialog.textRows": "行", - "SSE.Views.FillSeriesDialog.textSeries": "系列产生在", + "SSE.Views.FillSeriesDialog.textSeries": "序列产生在", "SSE.Views.FillSeriesDialog.textStep": "步进值", "SSE.Views.FillSeriesDialog.textStop": "步进值", - "SSE.Views.FillSeriesDialog.textTitle": "系列", + "SSE.Views.FillSeriesDialog.textTitle": "序列", "SSE.Views.FillSeriesDialog.textTrend": "趋势", "SSE.Views.FillSeriesDialog.textType": "类型", "SSE.Views.FillSeriesDialog.textWeek": "星期", @@ -4080,7 +4080,7 @@ "SSE.Views.Toolbar.textScaleCustom": "自定义", "SSE.Views.Toolbar.textSection": "章节标志", "SSE.Views.Toolbar.textSelection": "从当前选择", - "SSE.Views.Toolbar.textSeries": "系列", + "SSE.Views.Toolbar.textSeries": "序列", "SSE.Views.Toolbar.textSetPrintArea": "设置打印区域", "SSE.Views.Toolbar.textShowVA": "显示可见区域", "SSE.Views.Toolbar.textSmile": "白色笑脸", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/be.json b/apps/spreadsheeteditor/main/resources/formula-lang/be.json index 66a980c9bd..1fbc3b7575 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/be.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/be.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "МАССИВВТЕКСТ", "SORT": "СОРТ", "SORTBY": "СОРТПО", + "GETPIVOTDATA": "ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ", "LocalFormulaOperands": { "StructureTables": { "h": "Заголовки", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/be_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/be_desc.json index 64988798fa..57a666b1a8 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/be_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/be_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(массив, ключевой_массив, [порядок_сортировки], ...)", "d": "Сортирует диапазон или массив на основе значений в сопоставленном с ним диапазоне или массиве" + }, + "GETPIVOTDATA": { + "a": "(поле_данных; сводная_таблица; [поле]; [элемент]; ...)", + "d": "Извлекает данные, хранящиеся в сводной таблице." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/bg.json b/apps/spreadsheeteditor/main/resources/formula-lang/bg.json index 19e6a1f5ca..83d119446b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/bg.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/bg.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/bg_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/bg_desc.json index 4c08ac9215..e5a1fb0331 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/bg_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/bg_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(масив, от_масив, [ред_сортиране], ...)", "d": "Сортира диапазон или масив на базата на стойностите в съответния диапазон или масив" + }, + "GETPIVOTDATA": { + "a": "(данни_поле; обобщена_таблица; [поле]; [елемент]; ...)", + "d": "Извлича данни, съхранявани в обобщена таблица." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ca.json b/apps/spreadsheeteditor/main/resources/formula-lang/ca.json index b08b9f1de6..8c8a94d02b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ca.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ca.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIUATEXT", "SORT": "ORDENA", "SORTBY": "ORDENAPER", + "GETPIVOTDATA": "OBTEN.DADES.DINAMIQUES", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ca_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/ca_desc.json index dd00b4f47c..1f20ed6cb8 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ca_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ca_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matriu, per_matriu, [criteri_ordenació], ...)", "d": "Ordena un interval o una matriu segons els valors d'un interval o d'una matriu corresponent" + }, + "GETPIVOTDATA": { + "a": "(camp_dades; taula_dinàmica; [camp]; [element]; ...)", + "d": "Extreu les dades emmagatzemades en una taula dinàmica." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/cs.json b/apps/spreadsheeteditor/main/resources/formula-lang/cs.json index 3d878f91c8..b9594e63c7 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/cs.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/cs.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "ZÍSKATKONTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/cs_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/cs_desc.json index 235814a0b7..c9dca11f45 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/cs_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/cs_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matice, podle_matice, [pořadí_řazení], ...)", "d": "Seřadí oblast nebo matici na základě hodnot v odpovídající oblasti nebo matici." + }, + "GETPIVOTDATA": { + "a": "(datové_pole; kontingenční_tabulka; [pole]; [položka]; ...)", + "d": "Extrahuje data uložená v kontingenční tabulce." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/da.json b/apps/spreadsheeteditor/main/resources/formula-lang/da.json index 10e2e20684..e4deaa1932 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/da.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/da.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIXTILTEKST", "SORT": "SORTER", "SORTBY": "SORTER.EFTER", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/da_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/da_desc.json index b940b4ceeb..3e4f98b9b6 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/da_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/da_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matrix, efter_matrix, [sorteringsrækkefølge], ...)", "d": "Sorterer et område eller en matrix baseret på værdierne i et tilsvarende område eller en tilsvarende matrix" + }, + "GETPIVOTDATA": { + "a": "(datafelt; pivottabel; [felt]; [element]; ...)", + "d": "Uddrager data, der er gemt i en pivottabel" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/de.json b/apps/spreadsheeteditor/main/resources/formula-lang/de.json index ed9fcfcc09..8f988e551a 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/de.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/de.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIXZUTEXT", "SORT": "SORTIEREN", "SORTBY": "SORTIERENNACH", + "GETPIVOTDATA": "PIVOTDATENZUORDNEN", "LocalFormulaOperands": { "StructureTables": { "h": "Kopfzeilen", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/de_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/de_desc.json index 9acf91b874..8b8ef0343e 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/de_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/de_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(Matrix, nach_Matrix, [Sortierreihenfolge], ...)", "d": "Sortiert einen Bereich oder eine Matrix, basierend auf den Werten in einem entsprechenden Bereich oder einer entsprechenden Matrix." + }, + "GETPIVOTDATA": { + "a": "(Datenfeld; PivotTable; [Feld]; [Element]; ...)", + "d": "Extrahiert Daten, die in einer PivotTable gespeichert sind" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/el.json b/apps/spreadsheeteditor/main/resources/formula-lang/el.json index 1c6fb94e15..9153f57d8d 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/el.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/el.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/el_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/el_desc.json index 6acc564a9a..6b073697c1 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/el_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/el_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(πίνακας, κατά_πίνακα, [σειρά_ταξινόμησης], ...)", "d": "Ταξινομεί ένα εύρος τιμών ή έναν πίνακα με βάση τις τιμές σε ένα αντίστοιχο εύρος τιμών ή πίνακα" + }, + "GETPIVOTDATA": { + "a": "(πεδίο_δεδομένων; συγκεντρωτικός_πίνακας; [πεδίο]; [στοιχείο]; ...)", + "d": "Εξάγει δεδομένα που είναι αποθηκευμένα σε έναν Συγκεντρωτικό Πίνακα" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/en.json b/apps/spreadsheeteditor/main/resources/formula-lang/en.json index c009a1d6e1..7580de9c56 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/en.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/en.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/en_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/en_desc.json index 17b1aed955..882e8fccdf 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/en_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/en_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "Sorts a range or array based on the values in a corresponding range or array" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "Extracts data stored in a PivotTable." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/es.json b/apps/spreadsheeteditor/main/resources/formula-lang/es.json index 6482cbad95..607b7bd42f 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/es.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/es.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIZATEXTO", "SORT": "ORDENAR", "SORTBY": "ORDENARPOR", + "GETPIVOTDATA": "IMPORTARDATOSDINAMICOS", "LocalFormulaOperands": { "StructureTables": { "h": "Encabezados", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/es_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/es_desc.json index 37a3132583..1b506a5e6c 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/es_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/es_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matriz, por_matriz, [orden], ...)", "d": "Ordena un rango o una matriz basándose en los valores de una matriz o un rango correspondiente" + }, + "GETPIVOTDATA": { + "a": "(camp_datos; tabla_dinámica; [campo]; [elemento]; ...)", + "d": "Extrae datos almacenados en una tabla dinámica" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/fi.json b/apps/spreadsheeteditor/main/resources/formula-lang/fi.json index 5f1ac70deb..ff0c252fed 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/fi.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/fi.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIISI.TEKSTIKSI", "SORT": "LAJITTELE", "SORTBY": "LAJITTELE.ARVOJEN.PERUSTEELLA", + "GETPIVOTDATA": "NOUDA.PIVOT.TIEDOT", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/fi_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/fi_desc.json index af96ad2122..f35953e29e 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/fi_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/fi_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matriisi, matriisin_mukaan, [lajittelujärjestys], ...)", "d": "Lajittelee alueen tai matriisin vastaavan alueen tai matriisin arvojen perusteella" + }, + "GETPIVOTDATA": { + "a": "(tietokenttä; pivot_taulukko; [kenttä]; [osa]; ...)", + "d": "Poimii Pivot-taulukkoon tallennettuja tietoja." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/fr.json b/apps/spreadsheeteditor/main/resources/formula-lang/fr.json index 1408cd54ea..10b6f21394 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/fr.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/fr.json @@ -478,6 +478,7 @@ "ARRAYTOTEXT": "TABLEAU.EN.TEXTE", "SORT": "TRIER", "SORTBY": "TRIERPAR", + "GETPIVOTDATA": "LIREDONNEESTABCROISDYNAMIQUE", "LocalFormulaOperands": { "StructureTables": { "h": "En-têtes", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/fr_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/fr_desc.json index 19b32fbab9..f6eee64dac 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/fr_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/fr_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(tableau, par_tableau, [ordre_tri], ...)", "d": "Trie une plage ou un tableau sur la base des valeurs d’une plage ou d’un tableau correspondant" + }, + "GETPIVOTDATA": { + "a": "(champ_données; tableau_croisé_dyn; [champ]; [élément]; ...)", + "d": "Extrait des données d'un tableau croisé dynamique." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/hu.json b/apps/spreadsheeteditor/main/resources/formula-lang/hu.json index 3e3414b595..92976fab33 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/hu.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/hu.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "TÖMB.SZÖVEGGÉ", "SORT": "SORBA.RENDEZ", "SORTBY": "RENDEZÉS.ALAP.SZERINT", + "GETPIVOTDATA": "KIMUTATÁSADATOT.VESZ", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/hu_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/hu_desc.json index c0da72e261..8fcdc6e60b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/hu_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/hu_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(tömb, tömb_szerint, [rendezési_sorrend], ...)", "d": "Tartományt vagy tömböt rendez a megfelelő tartományban vagy tömbben lévő értékek alapján." + }, + "GETPIVOTDATA": { + "a": "(adat_mező; kimutatás; [mező]; [tétel]; ...)", + "d": "Kimutatásban tárolt adatokat gyűjt ki" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/hy.json b/apps/spreadsheeteditor/main/resources/formula-lang/hy.json index ebdd0e332a..8c131c02b7 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/hy.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/hy.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Էջագլուխներ", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/hy_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/hy_desc.json index abd2ba517f..db12088b77 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/hy_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/hy_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "Տեսակավորում է ընդգրկույթը կամ զանգվածը՝ ըստ համապատասխան ընդգրկույթում կամ զանգվածում առկա արժեքների" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "Արտահանում է PivotTable-ում պահեստավորված տվյալները" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/id.json b/apps/spreadsheeteditor/main/resources/formula-lang/id.json index cca4c72b8e..d8d6f99fcb 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/id.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/id.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/id_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/id_desc.json index 551e5c56c7..1ff15ba223 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/id_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/id_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "Mengurutkan rentang atau larik berdasarkan nilai dalam rentang atau larik yang sesuai" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "Mengekstrak data yang tersimpan dalam sebuah PivotTable." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/it.json b/apps/spreadsheeteditor/main/resources/formula-lang/it.json index f180463afd..62099fdff8 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/it.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/it.json @@ -469,6 +469,7 @@ "ARRAYTOTEXT": "MATRICE.A.TESTO", "SORT": "DATI.ORDINA", "SORTBY": "DATI.ORDINA.PER", + "GETPIVOTDATA": "INFO.DATI.TAB.PIVOT", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/it_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/it_desc.json index d87bb7b8be..178e49188f 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/it_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/it_desc.json @@ -1878,5 +1878,9 @@ "SORTBY": { "a": "(matrice, con_matrice, [ordinamento], ...)", "d": "Ordina un intervallo o una matrice in base ai valori di una matrice o intervallo corrispondente" + }, + "GETPIVOTDATA": { + "a": "(campo_dati; tabella_pivot; [campo]; [elemento]; ...)", + "d": "Estrae i dati memorizzati in una tabella pivot." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ja.json b/apps/spreadsheeteditor/main/resources/formula-lang/ja.json index 99b66b6af4..d412f2397b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ja.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ja.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ja_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/ja_desc.json index 43dcb8505e..b8dfc49cea 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ja_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ja_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(配列, 基準配列, [並べ替え順序], ...)", "d": "範囲または配列を、対応する範囲または配列の値に基づいて並べ替えます。" + }, + "GETPIVOTDATA": { + "a": "(データフィールド; ピボットテーブル; [フィールド]; [アイテム]; ...)", + "d": "ピボットテーブルに保存されているデータを取得します。" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ko.json b/apps/spreadsheeteditor/main/resources/formula-lang/ko.json index 149b24c30b..b9af414b43 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ko.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ko.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ko_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/ko_desc.json index 6aaf331d2a..d677becb96 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ko_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ko_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "해당 범위 또는 배열의 값을 기준으로 범위 또는 배열을 정렬합니다" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "피벗 테이블 보고서 내에 저장된 데이터를 반환합니다." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/lo.json b/apps/spreadsheeteditor/main/resources/formula-lang/lo.json index 4d2c63f1bf..e72311b9a4 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/lo.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/lo.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ການຈັດຮອບວຽນເປັນຂໍ້ຄວາມ", "SORT": "ຈັດຮຽງ", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/lo_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/lo_desc.json index b344fd79f9..b94d1d5505 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/lo_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/lo_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "ຈັດຮຽງໄລຍະ ຫຼື ອະເຣໂດຍອ້າງອີງຈາກຄ່າໃນໄລຍະ ຫຼື ອະເຣທີ່ກ່ຽວຂ້ອງ" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "ແຍກຂໍ້ມູນທີ່ເກັບໃນຕາຕະລາງPivotTable" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/lv.json b/apps/spreadsheeteditor/main/resources/formula-lang/lv.json index 0634eee58b..4cc9d5cffd 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/lv.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/lv.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/lv_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/lv_desc.json index f300607c23..752b923e74 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/lv_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/lv_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(masīvs, pēc_masīva, [kārtošanas_secība], ...)", "d": "Kārto diapazonu vai masīvu pēc vērtībām atbilstošā diapazonā vai masīvā" + }, + "GETPIVOTDATA": { + "a": "(datu_lauks; rakurstabula; [lauks]; [objekts]; ...)", + "d": "Izgūst datus, kas tiek glabāti rakurstabulā." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/nb.json b/apps/spreadsheeteditor/main/resources/formula-lang/nb.json index e36df0c5e1..0bcb344f9d 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/nb.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/nb.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRISETILTEKST", "SORT": "SORTER", "SORTBY": "SORTER.ETTER", + "GETPIVOTDATA": "HENTPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/nb_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/nb_desc.json index 17ea46e108..bf47de4035 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/nb_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/nb_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matrise, etter_matrise, [sorteringsrekkefølge], ...)", "d": "Sorterer et område eller en matrise basert på verdiene i et tilsvarende område eller en tilsvarende matrise" + }, + "GETPIVOTDATA": { + "a": "(data_felt; pivottabell; [felt]; [element]; ...)", + "d": "Trekker ut data som er lagret i en pivottabell." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/nl.json b/apps/spreadsheeteditor/main/resources/formula-lang/nl.json index 0ef124b197..37ab246f74 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/nl.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/nl.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORTEREN", "SORTBY": "SORTEREN.OP", + "GETPIVOTDATA": "DRAAITABEL.OPHALEN", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/nl_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/nl_desc.json index bbc639ca72..9ebfc7780e 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/nl_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/nl_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matrix, op_matrix, [sorteervolgorde], ...)", "d": "Sorteert een bereik of matrix op basis van de waarden in een bijbehorend bereik of een bijbehorende matrix" + }, + "GETPIVOTDATA": { + "a": "(gegevensveld; draaitabel; [veld]; [item]; ...)", + "d": "Haalt gegevens op uit een draaitabel" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pl.json b/apps/spreadsheeteditor/main/resources/formula-lang/pl.json index 378ca04f80..bd33f30e83 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pl.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pl.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "TABLICA.NA.TEKST", "SORT": "SORTUJ", "SORTBY": "SORTUJ.WEDŁUG", + "GETPIVOTDATA": "WEŹDANETABELI", "LocalFormulaOperands": { "StructureTables": { "h": "Wszystkie", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pl_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/pl_desc.json index eb8cfb0fed..6f9a61a064 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pl_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pl_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(tablica, według_tablicy, [kolejność_sortowania], ...)", "d": "Sortuje zakres lub tablicę na podstawie wartości w odpowiednim zakresie lub odpowiedniej tablicy" + }, + "GETPIVOTDATA": { + "a": "(pole_danych; tabela_przestawna; [pole]; [element]; ...)", + "d": "Wyodrębnia dane przechowywane w tabeli przestawnej." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pt-br.json b/apps/spreadsheeteditor/main/resources/formula-lang/pt-br.json index b62f6b5200..7847ae3164 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pt-br.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pt-br.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIZPARATEXTO", "SORT": "CLASSIFICAR", "SORTBY": "CLASSIFICARPOR", + "GETPIVOTDATA": "INFODADOSTABELADINÂMICA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pt-br_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/pt-br_desc.json index 7a75e76220..34364f2a86 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pt-br_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pt-br_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matriz, índice_de_classificação, [ordem_de_classificação], ...)", "d": "Classifica um intervalo ou matriz com base nos valores de uma matriz ou intervalo correspondente" + }, + "GETPIVOTDATA": { + "a": "(campo_dados; tab_din; [campo]; [item]; ...)", + "d": "Extrai os dados armazenados em uma tabela dinâmica" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pt.json b/apps/spreadsheeteditor/main/resources/formula-lang/pt.json index 6e03562f26..b617aed056 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pt.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pt.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRIZPARATEXTO", "SORT": "ORDENAR", "SORTBY": "ORDENARPOR", + "GETPIVOTDATA": "OBTERDADOSDIN", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/pt_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/pt_desc.json index 72a5c85887..105fab4495 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/pt_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/pt_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matriz, por_matriz, [sequência_ordenação], ...)", "d": "Ordena um intervalo ou matriz com base nos valores num intervalo ou matriz correspondente" + }, + "GETPIVOTDATA": { + "a": "(campo_dados; tabela_dinâmica; [campo]; [item]; ...)", + "d": "Extrai os dados guardados numa Tabela Dinâmica." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ro.json b/apps/spreadsheeteditor/main/resources/formula-lang/ro.json index 10210e3623..6c7d2ff64b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ro.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ro.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ro_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/ro_desc.json index 4096525c7f..01bf6f5a08 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ro_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ro_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matrice, după_matrice, [ordine_sortare], ...)", "d": "Sortează o zonă sau o matrice pe baza valorilor dintr-o zonă sau dintr-o matrice corespunzătoare" + }, + "GETPIVOTDATA": { + "a": "(câmp_date; tabel_pivot; [câmp]; [element]; ...)", + "d": "Extrage date stocate într-un PivotTable" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ru.json b/apps/spreadsheeteditor/main/resources/formula-lang/ru.json index 66a980c9bd..1fbc3b7575 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ru.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ru.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "МАССИВВТЕКСТ", "SORT": "СОРТ", "SORTBY": "СОРТПО", + "GETPIVOTDATA": "ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ", "LocalFormulaOperands": { "StructureTables": { "h": "Заголовки", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/ru_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/ru_desc.json index 0e6107ad5c..fcc5a8784f 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/ru_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/ru_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(массив, ключевой_массив, [порядок_сортировки], ...)", "d": "Сортирует диапазон или массив на основе значений в сопоставленном с ним диапазоне или массиве" + }, + "GETPIVOTDATA": { + "a": "(поле_данных; сводная_таблица; [поле]; [элемент]; ...)", + "d": "Извлекает данные, хранящиеся в сводной таблице" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sk.json b/apps/spreadsheeteditor/main/resources/formula-lang/sk.json index 41570533b5..f86fbef9ab 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sk.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sk.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sk_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/sk_desc.json index d54e5667dd..48821b304b 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sk_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sk_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(pole, podľa_poľa, [poradie_zoradenia], ...)", "d": "Zoradí rozsah alebo pole podľa hodnôt v zodpovedajúcom rozsahu alebo poli" + }, + "GETPIVOTDATA": { + "a": "(údajové_pole; kontingenčná_tabuľka; [pole]; [položka]; ...)", + "d": "Extrahuje údaje uložené v kontingenčnej tabuľke" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sl.json b/apps/spreadsheeteditor/main/resources/formula-lang/sl.json index 3619b77043..79f8db50a2 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sl.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sl.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sl_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/sl_desc.json index 86153eaf05..425111b627 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sl_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sl_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "Razvrsti obseh ali polje glede na vrednosti v pripadajočem obsegu ali polju" + }, + "GETPIVOTDATA": { + "a": "(podatkovno_polje; vrtilna_tabela; [polje]; [element]; ...)", + "d": "Ekstrahira podatke, ki so shranjeni v vrtilni tabeli." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sv.json b/apps/spreadsheeteditor/main/resources/formula-lang/sv.json index 3c71951846..175c69e443 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sv.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sv.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "MATRISTILLTEXT", "SORT": "SORTERA", "SORTBY": "SORTERAEFTER", + "GETPIVOTDATA": "HÄMTA.PIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/sv_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/sv_desc.json index ec5c4cb844..3c0aaa777a 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/sv_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/sv_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(matris, efter_matris, [sorteringsordning], ...)", "d": "Sorterar ett intervall eller en matris utifrån värdena i ett motsvarande intervall eller en motsvarande matris" + }, + "GETPIVOTDATA": { + "a": "(datafält; pivottabell; [fält]; [objekt]; ...)", + "d": "Extraherar data som sparats i en pivottabell." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/tr.json b/apps/spreadsheeteditor/main/resources/formula-lang/tr.json index f2608b4caf..bf789f1841 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/tr.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/tr.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "DİZİMETİN", "SORT": "SIRALA", "SORTBY": "SIRALAÖLÇÜT", + "GETPIVOTDATA": "ÖZETVERİAL", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/tr_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/tr_desc.json index 7fedb9d8f5..b750baa135 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/tr_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/tr_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(dizi, diziye_göre, [sıralama_düzeni], ...)", "d": "Bir aralığı veya diziyi, karşılık gelen aralık veya dizideki değerlere göre sıralar" + }, + "GETPIVOTDATA": { + "a": "(veri_alanı; pivot_table; [alan]; [öğe]; ...)", + "d": "PivotTable'da depolanmış verileri verir" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/uk.json b/apps/spreadsheeteditor/main/resources/formula-lang/uk.json index c0230636cf..e4b2c9dd1c 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/uk.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/uk.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/uk_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/uk_desc.json index 1e5f390246..37ae885f8a 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/uk_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/uk_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(масив, ключовий_масив, [порядок_сортування], ...)", "d": "Сортування діапазону або масиву на основі значень у зіставленому діапазоні або масиві" + }, + "GETPIVOTDATA": { + "a": "(поле_даних; зведена_таблиця; [поле]; [елем]; ...)", + "d": "Витягає дані, які зберігаються у зведеній таблиці" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/vi.json b/apps/spreadsheeteditor/main/resources/formula-lang/vi.json index f137eb7ebc..1a1a13f717 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/vi.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/vi.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/vi_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/vi_desc.json index be5275c7ba..71f0bb9062 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/vi_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/vi_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(mảng, theo_mảng, [thứ_tự_sắp_xếp], ...)", "d": "Sắp xếp một dải ô hoặc mảng dựa trên các giá trị trong dải ô hoặc mảng tương ứng" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "Trích xuất dữ liệu lưu trong PivotTable." } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/zh.json b/apps/spreadsheeteditor/main/resources/formula-lang/zh.json index fd2b1b6579..c837fbaebb 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/zh.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/zh.json @@ -479,6 +479,7 @@ "ARRAYTOTEXT": "ARRAYTOTEXT", "SORT": "SORT", "SORTBY": "SORTBY", + "GETPIVOTDATA": "GETPIVOTDATA", "LocalFormulaOperands": { "StructureTables": { "h": "Headers", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/zh_desc.json b/apps/spreadsheeteditor/main/resources/formula-lang/zh_desc.json index 3efdf3d2cb..3eda32a836 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/zh_desc.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/zh_desc.json @@ -1918,5 +1918,9 @@ "SORTBY": { "a": "(array, by_array, [sort_order], ...)", "d": "根据相应范围或数组中的值对范围或数组排序" + }, + "GETPIVOTDATA": { + "a": "(data_field; pivot_table; [field]; [item]; ...)", + "d": "提取存储在数据透视表中的数据" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/resources/less/celleditor.less b/apps/spreadsheeteditor/main/resources/less/celleditor.less index 2300df4d64..2cd33491f3 100644 --- a/apps/spreadsheeteditor/main/resources/less/celleditor.less +++ b/apps/spreadsheeteditor/main/resources/less/celleditor.less @@ -34,6 +34,7 @@ border: 0 none; border-left: @scaled-one-px-value-ie solid @border-toolbar-ie; border-left: @scaled-one-px-value solid @border-toolbar; + direction: rtl; } &[disabled] { diff --git a/apps/spreadsheeteditor/mobile/locale/fr.json b/apps/spreadsheeteditor/mobile/locale/fr.json index 3d6b5c813a..c081172bcb 100644 --- a/apps/spreadsheeteditor/mobile/locale/fr.json +++ b/apps/spreadsheeteditor/mobile/locale/fr.json @@ -441,7 +441,7 @@ "textPictureFromLibrary": "Image depuis la bibliothèque", "textPictureFromURL": "Image à partir d'une URL", "textRange": "Plage", - "textRecommended": "Recommandés", + "textRecommended": "Recommandations", "textRequired": "Obligatoire", "textScreenTip": "Info-bulle", "textSelectedRange": "Plage sélectionnée", @@ -602,7 +602,7 @@ "textPound": "Livre", "textPt": "pt", "textRange": "Plage", - "textRecommended": "Recommandés", + "textRecommended": "Recommandations", "textRemoveChart": "Supprimer le graphique", "textRemoveShape": "Supprimer la forme", "textReplace": "Remplacer", diff --git a/apps/spreadsheeteditor/mobile/locale/pt.json b/apps/spreadsheeteditor/mobile/locale/pt.json index 2c3afa2e61..3667e5bcb6 100644 --- a/apps/spreadsheeteditor/mobile/locale/pt.json +++ b/apps/spreadsheeteditor/mobile/locale/pt.json @@ -102,9 +102,9 @@ "notcriticalErrorTitle": "Aviso", "SDK": { "txtAccent": "Acento", - "txtAll": "(Todos)", + "txtAll": "(Tudo)", "txtArt": "Seu texto aqui", - "txtBlank": "Em branco", + "txtBlank": "(vazio)", "txtByField": "%1 de %2", "txtClearFilter": "Limpar Filtro", "txtColLbls": "Rótulos da coluna", @@ -178,7 +178,7 @@ "textRemember": "Lembrar minha escolha", "textReplaceSkipped": "A substituição foi realizada. {0} ocorrências foram ignoradas.", "textReplaceSuccess": "A pesquisa foi realizada. Ocorrências substituídas: {0}", - "textRequestMacros": "Uma macro faz uma solicitação para URL. Deseja permitir a solicitação para %1?", + "textRequestMacros": "Uma macro faz uma solicitação ao URL. Você deseja permitir o acesso para o %1?", "textUpdate": "Atualizar", "textWarnUpdateExternalData": "Esta pasta de trabalho contém links para uma ou mais fontes externas que podem não ser seguras. Se você confia nos links, atualize-os para obter os dados mais recentes.", "textYes": "Sim", @@ -377,7 +377,7 @@ "textMore": "Mais", "textMove": "Mover", "textMoveBefore": "Mover antes da folha", - "textMoveToEnd": "(Mover para fim)", + "textMoveToEnd": "(Mover para o final)", "textOk": "OK", "textRename": "Renomear", "textRenameSheet": "Renomear Folha", @@ -544,9 +544,9 @@ "textHorizontal": "Horizontal", "textHorizontalAxis": "Eixo horizontal", "textHorizontalText": "Texto horizontal", - "textHundredMil": "100.000.000 ", + "textHundredMil": "100 000 000 ", "textHundreds": "Centenas", - "textHundredThousands": "100.000 ", + "textHundredThousands": "100 000 ", "textHyperlink": "Hiperlink", "textImage": "Imagem", "textImageURL": "URL da imagem", @@ -626,8 +626,8 @@ "textSheet": "Folha", "textSize": "Tamanho", "textStyle": "Estilo", - "textTenMillions": "10.000.000 ", - "textTenThousands": "10.000 ", + "textTenMillions": "10 000 000 ", + "textTenThousands": "10 000 ", "textText": "Тexto", "textTextColor": "Cor do texto", "textTextFormat": "Formatação do texto", @@ -697,6 +697,7 @@ "textEnableAllMacrosWithoutNotification": "Habilitar todas as macros sem uma notificação", "textEncoding": "Codificação", "textExample": "Exemplo", + "textExplanationChangeDirection": "O aplicativo será reiniciado para ativação da interface RTL", "textFeedback": "Feedback e Suporte", "textFind": "Localizar", "textFindAndReplace": "Localizar e substituir", @@ -738,6 +739,7 @@ "textRestartApplication": "Reinicie o aplicativo para que as alterações entrem em vigor", "textRight": "Direita", "textRightToLeft": "Da direita para a esquerda", + "textRtlInterface": "Interface RTL", "textSameAsSystem": "O mesmo que sistema", "textSearch": "Pesquisar", "textSearchBy": "Pesquisar", @@ -825,9 +827,7 @@ "txtUk": "Ucraniano", "txtVi": "Vietnamita", "txtZh": "Chinês", - "warnDownloadAs": "Se você continuar salvando neste formato, todos os recursos com exceção do texto serão perdidos.
    Você tem certeza que quer continuar?", - "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", - "textRtlInterface": "RTL Interface" + "warnDownloadAs": "Se você continuar salvando neste formato, todos os recursos com exceção do texto serão perdidos.
    Você tem certeza que quer continuar?" } } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/locale/vi.json b/apps/spreadsheeteditor/mobile/locale/vi.json index b5d681906a..6547edc2b0 100644 --- a/apps/spreadsheeteditor/mobile/locale/vi.json +++ b/apps/spreadsheeteditor/mobile/locale/vi.json @@ -1,110 +1,13 @@ { - "About": { - "textAbout": "About", - "textAddress": "Address", - "textBack": "Back", - "textEmail": "Email", - "textPoweredBy": "Powered By", - "textTel": "Tel", - "textVersion": "Version", - "textEditor": "Spreadsheet Editor" - }, - "Common": { - "Collaboration": { - "notcriticalErrorTitle": "Warning", - "textAddComment": "Add Comment", - "textAddReply": "Add Reply", - "textBack": "Back", - "textCancel": "Cancel", - "textCollaboration": "Collaboration", - "textComments": "Comments", - "textDeleteComment": "Delete Comment", - "textDeleteReply": "Delete Reply", - "textDone": "Done", - "textEdit": "Edit", - "textEditComment": "Edit Comment", - "textEditReply": "Edit Reply", - "textEditUser": "Users who are editing the file:", - "textMessageDeleteComment": "Do you really want to delete this comment?", - "textMessageDeleteReply": "Do you really want to delete this reply?", - "textNoComments": "This document doesn't contain comments", - "textReopen": "Reopen", - "textResolve": "Resolve", - "textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.", - "textUsers": "Users", - "textOk": "Ok", - "textSharingSettings": "Sharing Settings" - }, - "ThemeColorPalette": { - "textCustomColors": "Custom Colors", - "textStandartColors": "Standard Colors", - "textThemeColors": "Theme Colors" - }, - "VersionHistory": { - "notcriticalErrorTitle": "Warning", - "textAnonymous": "Anonymous", - "textBack": "Back", - "textCancel": "Cancel", - "textCurrent": "Current", - "textOk": "Ok", - "textRestore": "Restore", - "textVersion": "Version", - "textVersionHistory": "Version History", - "textWarningRestoreVersion": "Current file will be saved in version history.", - "titleWarningRestoreVersion": "Restore this version?", - "txtErrorLoadHistory": "Loading history failed" - }, - "Themes": { - "textTheme": "Theme", - "system": "Same as system", - "dark": "Dark", - "light": "Light" - } - }, - "ContextMenu": { - "errorCopyCutPaste": "Copy, cut, and paste actions using the context menu will be performed within the current file only.", - "menuAddComment": "Add Comment", - "menuAddLink": "Add Link", - "menuCancel": "Cancel", - "menuCell": "Cell", - "menuDelete": "Delete", - "menuEdit": "Edit", - "menuFreezePanes": "Freeze Panes", - "menuHide": "Hide", - "menuMerge": "Merge", - "menuMore": "More", - "menuOpenLink": "Open Link", - "menuShow": "Show", - "menuUnfreezePanes": "Unfreeze Panes", - "menuUnmerge": "Unmerge", - "menuUnwrap": "Unwrap", - "menuViewComment": "View Comment", - "menuWrap": "Wrap", - "notcriticalErrorTitle": "Warning", - "textCopyCutPasteActions": "Copy, Cut and Paste Actions", - "textDoNotShowAgain": "Don't show again", - "warnMergeLostData": "The operation can destroy data in the selected cells. Continue?", - "errorInvalidLink": "The link reference does not exist. Please correct the link or delete it.", - "textOk": "Ok", - "txtWarnUrl": "Clicking this link can be harmful to your device and data.
    Are you sure you want to continue?", - "menuEditLink": "Edit Link", - "menuAutofill": "Autofill" - }, "Controller": { "Main": { - "criticalErrorTitle": "Error", - "errorAccessDeny": "You are trying to perform an action you do not have rights for.
    Please, contact your admin.", - "errorProcessSaveResult": "Saving is failed.", - "errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.", - "errorUpdateVersion": "The file version has been changed. The page will be reloaded.", - "leavePageText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", - "notcriticalErrorTitle": "Warning", "SDK": { - "txtAccent": "Accent", - "txtAll": "(All)", + "txtAccent": "Dấu phụ", + "txtAll": "(Tất cả)", + "txtBlank": "(trống)", + "txtByField": "%1 của %2", + "txtOr": "%1 hoặc %2", "txtArt": "Your text here", - "txtBlank": "(blank)", - "txtByField": "%1 of %2", "txtClearFilter": "Clear Filter (Alt+C)", "txtColLbls": "Column Labels", "txtColumn": "Column", @@ -119,7 +22,6 @@ "txtMinutes": "Minutes", "txtMonths": "Months", "txtMultiSelect": "Multi-Select (Alt+S)", - "txtOr": "%1 or %2", "txtPage": "Page", "txtPageOf": "Page %1 of %2", "txtPages": "Pages", @@ -160,312 +62,80 @@ "txtYAxis": "Y Axis", "txtYears": "Years" }, + "warnLicenseAnonymous": "Truy cập bị từ chối cho người dùng ẩn danh.
    Tải liệu này sẽ được mở ở dạng chỉ xem.", + "criticalErrorTitle": "Error", + "errorAccessDeny": "You are trying to perform an action you do not have rights for.
    Please, contact your admin.", + "errorOpensource": "Using the free Community version, you can open documents for viewing only. To access mobile web editors, a commercial license is required.", + "errorProcessSaveResult": "Saving is failed.", + "errorServerVersion": "The editor version has been updated. The page will be reloaded to apply the changes.", + "errorUpdateVersion": "The file version has been changed. The page will be reloaded.", + "leavePageText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", + "notcriticalErrorTitle": "Warning", "textAnonymous": "Anonymous", "textBuyNow": "Visit website", "textClose": "Close", "textContactUs": "Contact sales", "textCustomLoader": "Sorry, you are not entitled to change the loader. Please, contact our sales department to get a quote.", + "textDontUpdate": "Don't Update", "textGuest": "Guest", "textHasMacros": "The file contains automatic macros.
    Do you want to run macros?", "textNo": "No", + "textNoChoices": "There are no choices for filling the cell.
    Only text values from the column can be selected for replacement.", "textNoLicenseTitle": "License limit reached", + "textNoMatches": "No Matches", + "textOk": "Ok", "textPaidFeature": "Paid feature", "textRemember": "Remember my choice", + "textReplaceSkipped": "The replacement has been made. {0} occurrences were skipped.", + "textReplaceSuccess": "The search has been done. Occurrences replaced: {0}", + "textRequestMacros": "A macro makes a request to URL. Do you want to allow the request to the %1?", + "textUpdate": "Update", + "textWarnUpdateExternalData": "This workbook contains links to one or more external sources that could be unsafe. If you trust the links, update them to get the latest data.", "textYes": "Yes", + "titleLicenseExp": "License expired", + "titleLicenseNotActive": "License not active", "titleServerVersion": "Editor updated", "titleUpdateVersion": "Version changed", + "warnLicenseBefore": "License not active.
    Please contact your administrator.", "warnLicenseExceeded": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only. Contact your administrator to learn more.", + "warnLicenseExp": "Your license has expired. Please, update your license and refresh the page.", "warnLicenseLimitedNoAccess": "License expired. You have no access to document editing functionality. Please, contact your admin.", "warnLicenseLimitedRenewed": "License needs to be renewed. You have limited access to document editing functionality.
    Please contact your administrator to get full access", "warnLicenseUsersExceeded": "You've reached the user limit for %1 editors. Contact your administrator to learn more.", "warnNoLicense": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only. Contact %1 sales team for personal upgrade terms.", "warnNoLicenseUsers": "You've reached the user limit for %1 editors. Contact %1 sales team for personal upgrade terms.", - "warnProcessRightsChange": "You don't have permission to edit the file.", - "textNoChoices": "There are no choices for filling the cell.
    Only text values from the column can be selected for replacement.", - "textOk": "Ok", - "textReplaceSuccess": "The search has been done. Occurrences replaced: {0}", - "textReplaceSkipped": "The replacement has been made. {0} occurrences were skipped.", - "textNoTextFound": "Text not found", - "errorOpensource": "Using the free Community version, you can open documents for viewing only. To access mobile web editors, a commercial license is required.", - "textRequestMacros": "A macro makes a request to URL. Do you want to allow the request to the %1?", - "titleLicenseExp": "License expired", - "warnLicenseExp": "Your license has expired. Please, update your license and refresh the page.", - "textDontUpdate": "Don't Update", - "textUpdate": "Update", - "textWarnUpdateExternalData": "This workbook contains links to one or more external sources that could be unsafe. If you trust the links, update them to get the latest data.", - "warnLicenseBefore": "License not active.
    Please contact your administrator.", - "titleLicenseNotActive": "License not active", - "del_textNoTextFound": "Text not found", - "textNoMatches": "No Matches", - "warnLicenseAnonymous": "Access denied for anonymous users.
    This document will be opened for viewing only." + "warnProcessRightsChange": "You don't have permission to edit the file." } }, - "Error": { - "convertationTimeoutText": "Conversion timeout exceeded.", - "criticalErrorExtText": "Press 'OK' to go back to the document list.", - "criticalErrorTitle": "Error", - "downloadErrorText": "Download failed.", - "errorAccessDeny": "You are trying to perform an action you do not have rights for.
    Please, contact your admin.", - "errorArgsRange": "An error in the formula.
    Incorrect arguments range.", - "errorAutoFilterChange": "The operation is not allowed as it is attempting to shift cells in a table on your worksheet.", - "errorAutoFilterChangeFormatTable": "The operation could not be done for the selected cells as you cannot move a part of a table.
    Select another data range so that the whole table is shifted and try again.", - "errorAutoFilterDataRange": "The operation could not be done for the selected range of cells.
    Select a uniform data range inside or outside the table and try again.", - "errorAutoFilterHiddenRange": "The operation cannot be performed because the area contains filtered cells.
    Please, unhide the filtered elements and try again.", - "errorBadImageUrl": "Image url is incorrect", - "errorChangeArray": "You cannot change part of an array.", - "errorConnectToServer": "Can't save this doc. Check your connection settings or contact your admin.
    When you click the 'OK' button, you will be prompted to download the document.", - "errorCopyMultiselectArea": "This command cannot be used with multiple selections.
    Select a single range and try again.", - "errorCountArg": "An error in the formula.
    Invalid number of arguments.", - "errorCountArgExceed": "An error in the formula.
    Maximum number of arguments exceeded.", - "errorCreateDefName": "The existing named ranges cannot be edited and the new ones cannot be created
    at the moment as some of them are being edited.", - "errorDatabaseConnection": "External error.
    Database connection error. Please, contact support.", - "errorDataEncrypted": "Encrypted changes have been received, they cannot be deciphered.", - "errorDataRange": "Incorrect data range.", - "errorDataValidate": "The value you entered is not valid.
    A user has restricted values that can be entered into this cell.", - "errorDefaultMessage": "Error code: %1", - "errorEditingDownloadas": "An error occurred during the work with the document.
    Use the 'Download' option to save the file backup copy locally.", - "errorFilePassProtect": "The file is password protected and could not be opened.", - "errorFileRequest": "External error.
    File Request. Please, contact support.", - "errorFileSizeExceed": "The file size exceeds your server limitation.
    Please, contact your admin for details.", - "errorFileVKey": "External error.
    Incorrect security key. Please, contact support.", - "errorFillRange": "Could not fill the selected range of cells.
    All the merged cells need to be the same size.", - "errorFormulaName": "An error in the formula.
    Incorrect formula name.", - "errorFormulaParsing": "Internal error while the formula parsing.", - "errorFrmlMaxLength": "You cannot add this formula as its length exceeds the allowed number of characters.
    Please, edit it and try again.", - "errorFrmlMaxReference": "You cannot enter this formula because it has too many values,
    cell references, and/or names.", - "errorFrmlMaxTextLength": "Text values in formulas are limited to 255 characters.
    Use the CONCATENATE function or concatenation operator (&)", - "errorFrmlWrongReferences": "The function refers to a sheet that does not exist.
    Please, check the data and try again.", - "errorInvalidRef": "Enter a correct name for the selection or a valid reference to go to.", - "errorKeyEncrypt": "Unknown key descriptor", - "errorKeyExpire": "Key descriptor expired", - "errorLockedAll": "The operation could not be done as the sheet has been locked by another user.", - "errorLockedCellPivot": "You cannot change data inside a pivot table.", - "errorLockedWorksheetRename": "The sheet cannot be renamed at the moment as it is being renamed by another user", - "errorMaxPoints": "The maximum number of points in series per chart is 4096.", - "errorMoveRange": "Cannot change a part of a merged cell", - "errorMultiCellFormula": "Multi-cell array formulas are not allowed in tables.", - "errorOpenWarning": "The length of one of the formulas in the file exceeded
    the allowed number of characters and it was removed.", - "errorOperandExpected": "The entered function syntax is not correct. Please, check if you missed one of the parentheses - '(' or ')'.", - "errorPasteMaxRange": "The copy and paste area does not match. Please, select an area of the same size or click the first cell in a row to paste the copied cells.", - "errorPrintMaxPagesCount": "Unfortunately, it’s not possible to print more than 1500 pages at once in the current version of the program.
    This restriction will be eliminated in upcoming releases.", - "errorSessionAbsolute": "The document editing session has expired. Please, reload the page.", - "errorSessionIdle": "The document has not been edited for quite a long time. Please, reload the page.", - "errorSessionToken": "The connection to the server has been interrupted. Please, reload the page.", - "errorStockChart": "Incorrect row order. To build a stock chart, place the data on the sheet in the following order:
    opening price, max price, min price, closing price.", - "errorUnexpectedGuid": "External error.
    Unexpected Guid. Please, contact support.", - "errorUpdateVersionOnDisconnect": "Internet connection has been restored, and the file version has been changed.
    Before you can continue working, you need to download the file or copy its content to make sure nothing is lost, and then reload this page.", - "errorUserDrop": "The file cannot be accessed right now.", - "errorUsersExceed": "The number of users allowed by the pricing plan was exceeded", - "errorViewerDisconnect": "Connection is lost. You can still view the document,
    but you won't be able to download it until the connection is restored and the page is reloaded.", - "errorWrongBracketsCount": "An error in the formula.
    Wrong number of brackets.", - "errorWrongOperator": "An error in the entered formula. Wrong operator is used.
    Please correct the error.", - "notcriticalErrorTitle": "Warning", - "openErrorText": "An error has occurred while opening the file", - "pastInMergeAreaError": "Cannot change a part of a merged cell", - "saveErrorText": "An error has occurred while saving the file", - "scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please, reload the page.", - "unknownErrorText": "Unknown error.", - "uploadImageExtMessage": "Unknown image format.", - "uploadImageFileCountMessage": "No images uploaded.", - "uploadImageSizeMessage": "The image is too big. The maximum size is 25 MB.", - "errorLoadingFont": "Fonts are not loaded.
    Please contact your Document Server administrator.", - "errorChangeOnProtectedSheet": "The cell or chart you are trying to change is on a protected sheet. To make a change, unprotect the sheet. You might be requested to enter a password.", - "textErrorPasswordIsNotCorrect": "The password you supplied is not correct.
    Verify that the CAPS LOCK key is off and be sure to use the correct capitalization.", - "errorCannotUseCommandProtectedSheet": "You cannot use this command on a protected sheet. To use this command, unprotect the sheet.
    You might be requested to enter a password.", - "errorDirectUrl": "Please verify the link to the document.
    This link must be a direct link to the file for downloading.", - "textCancel": "Cancel", - "textOk": "Ok", - "errorInconsistentExtDocx": "An error has occurred while opening the file.
    The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.", - "errorInconsistentExtXlsx": "An error has occurred while opening the file.
    The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.", - "errorInconsistentExtPptx": "An error has occurred while opening the file.
    The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.", - "errorInconsistentExtPdf": "An error has occurred while opening the file.
    The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.", - "errorInconsistentExt": "An error has occurred while opening the file.
    The file content does not match the file extension.", - "errorToken": "The document security token is not correctly formed.
    Please contact your Document Server administrator.", - "errorTokenExpire": "The document security token has expired.
    Please contact your Document Server administrator.", - "errorProtectedRange": "This range is not allowed for editing.", - "errNoDuplicates": "No duplicate values found.", - "errorCannotUngroup": "Cannot ungroup. To start an outline, select the detail rows or columns and group them.", - "errorChangeFilteredRange": "This will change a filtered range on your worksheet.
    To complete this task, please remove AutoFilters.", - "errorComboSeries": "To create a combination chart, select at least two series of data.", - "errorDeleteColumnContainsLockedCell": "You are trying to delete a column that contains a locked cell. Locked cells cannot be deleted while the worksheet is protected.
    To delete a locked cell, unprotect the sheet. You might be requested to enter a password.", - "errorDeleteRowContainsLockedCell": "You are trying to delete a row that contains a locked cell. Locked cells cannot be deleted while the worksheet is protected.
    To delete a locked cell, unprotect the sheet. You might be requested to enter a password.", - "errorDependentsNoFormulas": "The Trace Dependents command found no formulas that refer to the active cell.", - "errorEditView": "The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.", - "errorEmailClient": "No email client could be found", - "errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.", - "errorFTChangeTableRangeError": "Operation could not be completed for the selected cell range.
    Select a range so that the first table row was on the same row
    and the resulting table overlapped the current one.", - "errorFTRangeIncludedOtherTables": "Operation could not be completed for the selected cell range.
    Select a range which does not include other tables.", - "errorLabledColumnsPivot": "To create a pivot table report, you must use data that is organized as a list with labeled columns.", - "errorLocationOrDataRangeError": "The reference for the location or data range is not valid.", - "errorMaxRows": "ERROR! The maximum number of data series per chart is 255.", - "errorMoveSlicerError": "Table slicers cannot be copied from one workbook to another.
    Try again by selecting the entire table and the slicers.", - "errorNoDataToParse": "No data was selected to parse.", - "errorPasteMultiSelect": "This action cannot be done on a multiple range selection.
    Select a single range and try again.", - "errorPasteSlicerError": "Table slicers cannot be copied from one workbook to another.", - "errorPivotGroup": "Cannot group that selection.", - "errorPivotOverlap": "A pivot table report cannot overlap a table.", - "errorPivotWithoutUnderlying": "The Pivot Table report was saved without the underlying data.
    Use the 'Refresh' button to update the report.", - "errorPrecedentsNoValidRef": "The Trace Precedents command requires that the active cell contain a formula which includes a valid references.", - "errorSetPassword": "Password could not be set.", - "errorSingleColumnOrRowError": "Location reference is not valid because the cells are not all in the same column or row.
    Select cells that are all in a single column or row.", - "errRemDuplicates": "Duplicate values found and deleted: {0}, unique values left: {1}.", - "textClose": "Close", - "textFillOtherRows": "Fill other rows", - "textFormulaFilledAllRows": "Formula filled {0} rows have data. Filling other empty rows may take a few minutes.", - "textFormulaFilledAllRowsWithEmpty": "Formula filled first {0} rows. Filling other empty rows may take a few minutes.", - "textFormulaFilledFirstRowsOtherHaveData": "Formula filled only first {0} rows have data by memory save reason. There are other {1} rows have data in this sheet. You can fill them manually.", - "textFormulaFilledFirstRowsOtherIsEmpty": "Formula filled only first {0} rows by memory save reason. Other rows in this sheet don't have data.", - "textInformation": "Information", - "uploadDocExtMessage": "Unknown document format.", - "uploadDocFileCountMessage": "No documents uploaded.", - "uploadDocSizeMessage": "Maximum document size limit exceeded." - }, - "LongActions": { - "applyChangesTextText": "Loading data...", - "applyChangesTitleText": "Loading Data", - "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", - "confirmPutMergeRange": "The source data contains merged cells.
    They will be unmerged before they are pasted into the table.", - "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
    Do you want to continue?", - "downloadTextText": "Downloading document...", - "downloadTitleText": "Downloading Document", - "loadFontsTextText": "Loading data...", - "loadFontsTitleText": "Loading Data", - "loadFontTextText": "Loading data...", - "loadFontTitleText": "Loading Data", - "loadImagesTextText": "Loading images...", - "loadImagesTitleText": "Loading Images", - "loadImageTextText": "Loading image...", - "loadImageTitleText": "Loading Image", - "loadingDocumentTextText": "Loading document...", - "loadingDocumentTitleText": "Loading document", - "notcriticalErrorTitle": "Warning", - "openTextText": "Opening document...", - "openTitleText": "Opening Document", - "printTextText": "Printing document...", - "printTitleText": "Printing Document", - "savePreparingText": "Preparing to save", - "savePreparingTitle": "Preparing to save. Please wait...", - "saveTextText": "Saving document...", - "saveTitleText": "Saving Document", - "textLoadingDocument": "Loading document", - "textNo": "No", - "textOk": "Ok", - "textYes": "Yes", - "txtEditingMode": "Set editing mode...", - "uploadImageTextText": "Uploading image...", - "uploadImageTitleText": "Uploading Image", - "waitText": "Please, wait...", - "advDRMPassword": "Password", - "textCancel": "Cancel", - "textErrorWrongPassword": "The password you supplied is not correct.", - "textUnlockRange": "Unlock Range", - "textUnlockRangeWarning": "A range you are trying to change is password protected.", - "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
    Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", - "textUndo": "Undo", - "textContinue": "Continue" - }, "Statusbar": { + "textMoveToEnd": "(Di chuyển đến cuối)", "notcriticalErrorTitle": "Warning", "textCancel": "Cancel", "textDelete": "Delete", "textDuplicate": "Duplicate", "textErrNameExists": "Worksheet with this name already exists.", - "textErrNameWrongChar": "A sheet name cannot contains characters: \\, /, *, ?, [, ], :", + "textErrNameWrongChar": "A sheet name cannot contains characters: \\, /, *, ?, [, ], : or the character ' as first or last character", "textErrNotEmpty": "Sheet name must not be empty", "textErrorLastSheet": "The workbook must have at least one visible worksheet.", "textErrorRemoveSheet": "Can't delete the worksheet.", + "textHidden": "Hidden", "textHide": "Hide", "textMore": "More", + "textMove": "Move", + "textMoveBefore": "Move before sheet", + "textOk": "Ok", "textRename": "Rename", "textRenameSheet": "Rename Sheet", "textSheet": "Sheet", "textSheetName": "Sheet Name", + "textTabColor": "Tab Color", "textUnhide": "Unhide", - "textWarnDeleteSheet": "The worksheet maybe has data. Proceed operation?", - "textOk": "Ok", - "textMove": "Move", - "textMoveBack": "Move back", - "textMoveForward": "Move forward", - "textHidden": "Hidden", - "textMoveBefore": "Move before sheet", - "textMoveToEnd": "(Move to end)", - "textTabColor": "Tab Color" - }, - "Toolbar": { - "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", - "dlgLeaveTitleText": "You leave the application", - "leaveButtonText": "Leave this Page", - "stayButtonText": "Stay on this Page", - "textCloseHistory": "Close History", - "textEnterNewFileName": "Enter a new file name", - "textRenameFile": "Rename File" + "textWarnDeleteSheet": "The worksheet maybe has data. Proceed operation?" }, "View": { - "Add": { - "errorMaxRows": "ERROR! The maximum number of data series per chart is 255.", - "errorStockChart": "Incorrect row order. To build a stock chart, place the data on the sheet in the following order:
    opening price, max price, min price, closing price.", - "notcriticalErrorTitle": "Warning", - "sCatDateAndTime": "Date and time", - "sCatEngineering": "Engineering", - "sCatFinancial": "Financial", - "sCatInformation": "Information", - "sCatLogical": "Logical", - "sCatLookupAndReference": "Lookup and Reference", - "sCatMathematic": "Math and trigonometry", - "sCatStatistical": "Statistical", - "sCatTextAndData": "Text and data", - "textAddLink": "Add Link", - "textAddress": "Address", - "textBack": "Back", - "textCancel": "Cancel", - "textChart": "Chart", - "textComment": "Comment", - "textDisplay": "Display", - "textEmptyImgUrl": "You need to specify the image URL.", - "textExternalLink": "External Link", - "textFilter": "Filter", - "textFunction": "Function", - "textGroups": "CATEGORIES", - "textImage": "Image", - "textImageURL": "Image URL", - "textInsert": "Insert", - "textInsertImage": "Insert Image", - "textInternalDataRange": "Internal Data Range", - "textInvalidRange": "ERROR! Invalid cells range", - "textLink": "Link", - "textLinkSettings": "Link Settings", - "textLinkType": "Link Type", - "textOther": "Other", - "textPictureFromLibrary": "Picture from library", - "textPictureFromURL": "Picture from URL", - "textRange": "Range", - "textRequired": "Required", - "textScreenTip": "Screen Tip", - "textShape": "Shape", - "textSheet": "Sheet", - "textSortAndFilter": "Sort and Filter", - "txtExpand": "Expand and sort", - "txtExpandSort": "The data next to the selection will not be sorted. Do you want to expand the selection to include the adjacent data or continue with sorting the currently selected cells only?", - "txtNotUrl": "This field should be a URL in the format \"http://www.example.com\"", - "txtSorting": "Sorting", - "txtSortSelected": "Sort selected", - "textSelectedRange": "Selected Range", - "txtLockSort": "Data is found next to your selection, but you do not have sufficient permissions to change those cells.
    Do you wish to continue with the current selection?", - "txtNo": "No", - "txtYes": "Yes", - "textOk": "Ok", - "textThisRowHint": "Choose only this row of the specified column", - "textAllTableHint": "Returns the entire contents of the table or specified table columns including column headers, data and total rows", - "textDataTableHint": "Returns the data cells of the table or specified table columns", - "textHeadersTableHint": "Returns the column headers for the table or specified table columns", - "textTotalsTableHint": "Returns the total rows for the table or specified table columns", - "textDone": "Done", - "textRecommended": "Recommended", - "textPasteImageUrl": "Paste an image URL" - }, "Edit": { + "textAccounting": "Kế toán", "notcriticalErrorTitle": "Warning", - "textAccounting": "Accounting", "textActualSize": "Actual Size", "textAddCustomColor": "Add Custom Color", "textAddress": "Address", @@ -479,7 +149,9 @@ "textAllBorders": "All Borders", "textAngleClockwise": "Angle Clockwise", "textAngleCounterclockwise": "Angle Counterclockwise", + "textArrange": "Arrange", "textAuto": "Auto", + "textAutomatic": "Automatic", "textAxisCrosses": "Axis Crosses", "textAxisOptions": "Axis Options", "textAxisPosition": "Axis Position", @@ -491,32 +163,42 @@ "textBorderStyle": "Border Style", "textBottom": "Bottom", "textBottomBorder": "Bottom Border", - "textBringToForeground": "Bring to Foreground", + "textBringToForeground": "Bring to foreground", + "textCancel": "Cancel", "textCell": "Cell", - "textCellStyles": "Cell Styles", + "textCellStyle": "Cell Style", "textCenter": "Center", + "textChangeShape": "Change Shape", "textChart": "Chart", "textChartTitle": "Chart Title", "textClearFilter": "Clear Filter", "textColor": "Color", + "textCreateCustomFormat": "Create Custom Format", + "textCreateFormat": "Create Format", "textCross": "Cross", "textCrossesValue": "Crosses Value", "textCurrency": "Currency", "textCustomColor": "Custom Color", + "textCustomFormat": "Custom Format", + "textCustomFormatWarning": "Please enter the custom number format carefully. Spreadsheet Editor does not check custom formats for errors that may affect the xlsx file.", "textDataLabels": "Data Labels", "textDate": "Date", "textDefault": "Selected range", "textDeleteFilter": "Delete Filter", + "textDeleteImage": "Delete Image", + "textDeleteLink": "Delete Link", "textDesign": "Design", "textDiagonalDownBorder": "Diagonal Down Border", "textDiagonalUpBorder": "Diagonal Up Border", "textDisplay": "Display", "textDisplayUnits": "Display Units", "textDollar": "Dollar", + "textDone": "Done", "textEditLink": "Edit Link", "textEffects": "Effects", "textEmptyImgUrl": "You need to specify the image URL.", "textEmptyItem": "{Blanks}", + "textEnterFormat": "Enter Format", "textErrorMsg": "You must choose at least one value", "textErrorTitle": "Warning", "textEuro": "Euro", @@ -550,6 +232,7 @@ "textInsideVerticalBorder": "Inside Vertical Border", "textInteger": "Integer", "textInternalDataRange": "Internal Data Range", + "textInvalidName": "The file name cannot contain any of the following characters: ", "textInvalidRange": "Invalid cells range", "textJustified": "Justified", "textLabelOptions": "Label Options", @@ -580,6 +263,7 @@ "textNoOverlay": "No Overlay", "textNotUrl": "This field should be a URL in the format \"http://www.example.com\"", "textNumber": "Number", + "textOk": "Ok", "textOnTickMarks": "On Tick Marks", "textOpacity": "Opacity", "textOut": "Out", @@ -592,11 +276,9 @@ "textPound": "Pound", "textPt": "pt", "textRange": "Range", + "textRecommended": "Recommended", "textRemoveChart": "Remove Chart", - "textRemoveImage": "Remove Image", - "textRemoveLink": "Remove Link", "textRemoveShape": "Remove Shape", - "textReorder": "Reorder", "textReplace": "Replace", "textReplaceImage": "Replace Image", "textRequired": "Required", @@ -607,6 +289,7 @@ "textRotateTextDown": "Rotate Text Down", "textRotateTextUp": "Rotate Text Up", "textRouble": "Rouble", + "textSave": "Save", "textScientific": "Scientific", "textScreenTip": "Screen Tip", "textSelectAll": "Select All", @@ -641,33 +324,18 @@ "textYen": "Yen", "txtNotUrl": "This field should be a URL in the format \"http://www.example.com\"", "txtSortHigh2Low": "Sort Highest to Lowest", - "txtSortLow2High": "Sort Lowest to Highest", - "textAutomatic": "Automatic", - "textOk": "Ok", - "textCellStyle": "Cell Style", - "textArrange": "Arrange", - "textCancel": "Cancel", - "textChangeShape": "Change Shape", - "textDeleteImage": "Delete Image", - "textDeleteLink": "Delete Link", - "textDone": "Done", - "textRecommended": "Recommended", - "textCustomFormat": "Custom Format", - "textCreateFormat": "Create Format", - "textCreateCustomFormat": "Create Custom Format", - "textSave": "Save", - "textEnterFormat": "Enter Format", - "textCustomFormatWarning": "Please enter the custom number format carefully. Spreadsheet Editor does not check custom formats for errors that may affect the xlsx file.", - "textInvalidName": "The file name cannot contain any of the following characters: " + "txtSortLow2High": "Sort Lowest to Highest" }, "Settings": { + "textAbout": "Giới thiệu", "advCSVOptions": "Choose CSV options", "advDRMEnterPassword": "Your password, please:", "advDRMOptions": "Protected File", "advDRMPassword": "Password", "closeButtonText": "Close File", "notcriticalErrorTitle": "Warning", - "textAbout": "About", + "strFuncLocale": "Formula Language", + "strFuncLocaleEx": "Example: SUM; MIN; MAX; COUNT", "textAddress": "Address", "textApplication": "Application", "textApplicationSettings": "Application Settings", @@ -678,6 +346,9 @@ "textByRows": "By rows", "textCancel": "Cancel", "textCentimeter": "Centimeter", + "textChooseCsvOptions": "Choose CSV Options", + "textChooseDelimeter": "Choose Delimeter", + "textChooseEncoding": "Choose Encoding", "textCollaboration": "Collaboration", "textColorSchemes": "Color Schemes", "textComment": "Comment", @@ -685,6 +356,10 @@ "textComments": "Comments", "textCreated": "Created", "textCustomSize": "Custom Size", + "textDark": "Dark", + "textDarkTheme": "Dark Theme", + "textDelimeter": "Delimiter", + "textDirection": "Direction", "textDisableAll": "Disable All", "textDisableAllMacrosWithNotification": "Disable all macros with a notification", "textDisableAllMacrosWithoutNotification": "Disable all macros without a notification", @@ -694,6 +369,10 @@ "textEmail": "Email", "textEnableAll": "Enable All", "textEnableAllMacrosWithoutNotification": "Enable all macros without a notification", + "textEncoding": "Encoding", + "textExample": "Example", + "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", + "textFeedback": "Feedback & Support", "textFind": "Find", "textFindAndReplace": "Find and Replace", "textFindAndReplaceAll": "Find and Replace All", @@ -709,13 +388,16 @@ "textLastModified": "Last Modified", "textLastModifiedBy": "Last Modified By", "textLeft": "Left", + "textLeftToRight": "Left To Right", + "textLight": "Light", "textLocation": "Location", "textLookIn": "Look In", "textMacrosSettings": "Macros Settings", "textMargins": "Margins", "textMatchCase": "Match Case", "textMatchCell": "Match Cell", - "textNoTextFound": "Text not found", + "textNoMatches": "No Matches", + "textOk": "Ok", "textOpenFile": "Enter a password to open the file", "textOrientation": "Orientation", "textOwner": "Owner", @@ -728,7 +410,11 @@ "textReplace": "Replace", "textReplaceAll": "Replace All", "textResolvedComments": "Resolved Comments", + "textRestartApplication": "Please restart the application for the changes to take effect", "textRight": "Right", + "textRightToLeft": "Right To Left", + "textRtlInterface": "RTL Interface", + "textSameAsSystem": "Same As System", "textSearch": "Search", "textSearchBy": "Search", "textSearchIn": "Search In", @@ -741,17 +427,48 @@ "textSpreadsheetTitle": "Spreadsheet Title", "textSubject": "Subject", "textTel": "Tel", + "textTheme": "Theme", "textTitle": "Title", "textTop": "Top", "textUnitOfMeasurement": "Unit Of Measurement", "textUploaded": "Uploaded", "textValues": "Values", "textVersion": "Version", + "textVersionHistory": "Version History", "textWorkbook": "Workbook", + "txtBe": "Belarusian", + "txtBg": "Bulgarian", + "txtCa": "Catalan", + "txtColon": "Colon", + "txtComma": "Comma", + "txtCs": "Czech", + "txtDa": "Danish", + "txtDe": "German", "txtDelimiter": "Delimiter", + "txtDownloadCsv": "Download CSV", + "txtEl": "Greek", + "txtEn": "English", "txtEncoding": "Encoding", + "txtEs": "Spanish", + "txtFi": "Finnish", + "txtFr": "French", + "txtHu": "Hungarian", + "txtId": "Indonesian", "txtIncorrectPwd": "Password is incorrect", + "txtIt": "Italian", + "txtJa": "Japanese", + "txtKo": "Korean", + "txtLo": "Lao", + "txtLv": "Latvian", + "txtNb": "Norwegian", + "txtNl": "Dutch", + "txtOk": "Ok", + "txtPl": "Polish", "txtProtected": "Once you enter the password and open the file, the current password to the file will be reset", + "txtPtbr": "Portuguese (Brazil)", + "txtPtlang": "Portuguese (Portugal)", + "txtRo": "Romanian", + "txtRu": "Russian", "txtScheme1": "Office", "txtScheme10": "Median", "txtScheme11": "Metro", @@ -774,70 +491,343 @@ "txtScheme7": "Equity", "txtScheme8": "Flow", "txtScheme9": "Foundry", - "txtSpace": "Space", - "txtTab": "Tab", - "warnDownloadAs": "If you continue saving in this format all features except the text will be lost.
    Are you sure you want to continue?", - "textOk": "Ok", - "textChooseCsvOptions": "Choose CSV Options", - "textChooseDelimeter": "Choose Delimeter", - "textChooseEncoding": "Choose Encoding", - "textDelimeter": "Delimiter", - "textEncoding": "Encoding", - "txtColon": "Colon", - "txtComma": "Comma", - "txtDownloadCsv": "Download CSV", - "txtOk": "Ok", "txtSemicolon": "Semicolon", - "textExample": "Example", - "textDarkTheme": "Dark Theme", - "textFeedback": "Feedback & Support", - "textLeftToRight": "Left To Right", - "textRightToLeft": "Right To Left", - "textDirection": "Direction", - "textRestartApplication": "Please restart the application for the changes to take effect", - "strFuncLocale": "Formula Language", - "strFuncLocaleEx": "Example: SUM; MIN; MAX; COUNT", - "txtBe": "Belarusian", - "txtBg": "Bulgarian", - "txtCa": "Catalan", - "txtCs": "Czech", - "txtDa": "Danish", - "txtDe": "Deutsch", - "txtEl": "Greek", - "txtEn": "English", - "txtEs": "Spanish", - "txtFi": "Finnish", - "txtFr": "French", - "txtHu": "Hungarian", - "txtId": "Indonesian", - "txtIt": "Italian", - "txtJa": "Japanese", - "txtKo": "Korean", - "txtLo": "Lao", - "txtLv": "Latvian", - "txtNb": "Norwegian", - "txtNl": "Dutch", - "txtPl": "Polish", - "txtPtbr": "Portuguese (Brazil)", - "txtPtlang": "Portuguese (Portugal)", - "txtRo": "Romanian", - "txtRu": "Russian", "txtSk": "Slovak", "txtSl": "Slovenian", + "txtSpace": "Space", "txtSv": "Swedish", + "txtTab": "Tab", "txtTr": "Turkish", "txtUk": "Ukrainian", "txtVi": "Vietnamese", "txtZh": "Chinese", - "del_textNoTextFound": "Text not found", - "textNoMatches": "No Matches", - "textVersionHistory": "Version History", - "textDark": "Dark", - "textLight": "Light", - "textTheme": "Theme", - "textSameAsSystem": "Same As System", - "textExplanationChangeDirection": "Application will be restarted for RTL interface activation", - "textRtlInterface": "RTL Interface" + "warnDownloadAs": "If you continue saving in this format all features except the text will be lost.
    Are you sure you want to continue?" + }, + "Add": { + "errorMaxRows": "ERROR! The maximum number of data series per chart is 255.", + "errorStockChart": "Incorrect row order. To build a stock chart, place the data on the sheet in the following order:
    opening price, max price, min price, closing price.", + "notcriticalErrorTitle": "Warning", + "sCatDateAndTime": "Date and time", + "sCatEngineering": "Engineering", + "sCatFinancial": "Financial", + "sCatInformation": "Information", + "sCatLogical": "Logical", + "sCatLookupAndReference": "Lookup and Reference", + "sCatMathematic": "Math and trigonometry", + "sCatStatistical": "Statistical", + "sCatTextAndData": "Text and data", + "textAddLink": "Add Link", + "textAddress": "Address", + "textAllTableHint": "Returns the entire contents of the table or specified table columns including column headers, data and total rows", + "textBack": "Back", + "textCancel": "Cancel", + "textChart": "Chart", + "textComment": "Comment", + "textDataTableHint": "Returns the data cells of the table or specified table columns", + "textDisplay": "Display", + "textDone": "Done", + "textEmptyImgUrl": "You need to specify the image URL.", + "textExternalLink": "External Link", + "textFilter": "Filter", + "textFunction": "Function", + "textGroups": "CATEGORIES", + "textHeadersTableHint": "Returns the column headers for the table or specified table columns", + "textImage": "Image", + "textImageURL": "Image URL", + "textInsert": "Insert", + "textInsertImage": "Insert Image", + "textInternalDataRange": "Internal Data Range", + "textInvalidRange": "ERROR! Invalid cells range", + "textLink": "Link", + "textLinkSettings": "Link Settings", + "textLinkType": "Link Type", + "textOk": "Ok", + "textOther": "Other", + "textPasteImageUrl": "Paste an image URL", + "textPictureFromLibrary": "Picture from library", + "textPictureFromURL": "Picture from URL", + "textRange": "Range", + "textRecommended": "Recommended", + "textRequired": "Required", + "textScreenTip": "Screen Tip", + "textSelectedRange": "Selected Range", + "textShape": "Shape", + "textSheet": "Sheet", + "textSortAndFilter": "Sort and Filter", + "textThisRowHint": "Choose only this row of the specified column", + "textTotalsTableHint": "Returns the total rows for the table or specified table columns", + "txtExpand": "Expand and sort", + "txtExpandSort": "The data next to the selection will not be sorted. Do you want to expand the selection to include the adjacent data or continue with sorting the currently selected cells only?", + "txtLockSort": "Data is found next to your selection, but you do not have sufficient permissions to change those cells.
    Do you wish to continue with the current selection?", + "txtNo": "No", + "txtNotUrl": "This field should be a URL in the format \"http://www.example.com\"", + "txtSorting": "Sorting", + "txtSortSelected": "Sort selected", + "txtYes": "Yes" } + }, + "About": { + "textAbout": "About", + "textAddress": "Address", + "textBack": "Back", + "textEditor": "Spreadsheet Editor", + "textEmail": "Email", + "textPoweredBy": "Powered By", + "textTel": "Tel", + "textVersion": "Version" + }, + "Common": { + "Collaboration": { + "notcriticalErrorTitle": "Warning", + "textAddComment": "Add Comment", + "textAddReply": "Add Reply", + "textBack": "Back", + "textCancel": "Cancel", + "textCollaboration": "Collaboration", + "textComments": "Comments", + "textDeleteComment": "Delete Comment", + "textDeleteReply": "Delete Reply", + "textDone": "Done", + "textEdit": "Edit", + "textEditComment": "Edit Comment", + "textEditReply": "Edit Reply", + "textEditUser": "Users who are editing the file:", + "textMessageDeleteComment": "Do you really want to delete this comment?", + "textMessageDeleteReply": "Do you really want to delete this reply?", + "textNoComments": "No Comments", + "textOk": "Ok", + "textReopen": "Reopen", + "textResolve": "Resolve", + "textSharingSettings": "Sharing Settings", + "textTryUndoRedo": "The Undo/Redo functions are disabled for the Fast co-editing mode.", + "textUsers": "Users" + }, + "ThemeColorPalette": { + "textCustomColors": "Custom Colors", + "textStandartColors": "Standard Colors", + "textThemeColors": "Theme Colors" + }, + "Themes": { + "dark": "Dark", + "light": "Light", + "system": "Same as system", + "textTheme": "Theme" + }, + "VersionHistory": { + "notcriticalErrorTitle": "Warning", + "textAnonymous": "Anonymous", + "textBack": "Back", + "textCancel": "Cancel", + "textCurrent": "Current", + "textOk": "Ok", + "textRestore": "Restore", + "textVersion": "Version", + "textVersionHistory": "Version History", + "textWarningRestoreVersion": "Current file will be saved in version history.", + "titleWarningRestoreVersion": "Restore this version?", + "txtErrorLoadHistory": "Loading history failed" + } + }, + "ContextMenu": { + "errorCopyCutPaste": "Copy, cut, and paste actions using the context menu will be performed within the current file only.", + "errorInvalidLink": "The link reference does not exist. Please correct the link or delete it.", + "menuAddComment": "Add Comment", + "menuAddLink": "Add Link", + "menuAutofill": "Autofill", + "menuCancel": "Cancel", + "menuCell": "Cell", + "menuDelete": "Delete", + "menuEdit": "Edit", + "menuEditLink": "Edit Link", + "menuFreezePanes": "Freeze Panes", + "menuHide": "Hide", + "menuMerge": "Merge", + "menuMore": "More", + "menuOpenLink": "Open Link", + "menuShow": "Show", + "menuUnfreezePanes": "Unfreeze Panes", + "menuUnmerge": "Unmerge", + "menuUnwrap": "Unwrap", + "menuViewComment": "View Comment", + "menuWrap": "Wrap", + "notcriticalErrorTitle": "Warning", + "textCopyCutPasteActions": "Copy, Cut and Paste Actions", + "textDoNotShowAgain": "Don't show again", + "textOk": "Ok", + "txtWarnUrl": "Clicking this link can be harmful to your device and data.
    Are you sure you want to continue?", + "warnMergeLostData": "Only the data from the upper-left cell will remain in the merged cell.
    Are you sure you want to continue?" + }, + "Error": { + "convertationTimeoutText": "Conversion timeout exceeded.", + "criticalErrorExtText": "Press 'OK' to go back to the document list.", + "criticalErrorTitle": "Error", + "downloadErrorText": "Download failed.", + "errNoDuplicates": "No duplicate values found.", + "errorAccessDeny": "You are trying to perform an action you do not have rights for.
    Please, contact your admin.", + "errorArgsRange": "An error in the formula.
    Incorrect arguments range.", + "errorAutoFilterChange": "The operation is not allowed as it is attempting to shift cells in a table on your worksheet.", + "errorAutoFilterChangeFormatTable": "The operation could not be done for the selected cells as you cannot move a part of a table.
    Select another data range so that the whole table is shifted and try again.", + "errorAutoFilterDataRange": "The operation could not be done for the selected range of cells.
    Select a uniform data range inside or outside the table and try again.", + "errorAutoFilterHiddenRange": "The operation cannot be performed because the area contains filtered cells.
    Please, unhide the filtered elements and try again.", + "errorBadImageUrl": "Image URL is incorrect", + "errorCannotUngroup": "Cannot ungroup. To start an outline, select the detail rows or columns and group them.", + "errorCannotUseCommandProtectedSheet": "You cannot use this command on a protected sheet. To use this command, unprotect the sheet.
    You might be requested to enter a password.", + "errorChangeArray": "You cannot change part of an array.", + "errorChangeFilteredRange": "This will change a filtered range on your worksheet.
    To complete this task, please remove AutoFilters.", + "errorChangeOnProtectedSheet": "The cell or chart you are trying to change is on a protected sheet. To make a change, unprotect the sheet. You might be requested to enter a password.", + "errorComboSeries": "To create a combination chart, select at least two series of data.", + "errorConnectToServer": "Can't save this doc. Check your connection settings or contact your admin.
    When you click the 'OK' button, you will be prompted to download the document.", + "errorCopyMultiselectArea": "This command cannot be used with multiple selections.
    Select a single range and try again.", + "errorCountArg": "An error in the formula.
    Invalid number of arguments.", + "errorCountArgExceed": "An error in the formula.
    Maximum number of arguments exceeded.", + "errorCreateDefName": "The existing named ranges cannot be edited and the new ones cannot be created
    at the moment as some of them are being edited.", + "errorDatabaseConnection": "External error.
    Database connection error. Please, contact support.", + "errorDataEncrypted": "Encrypted changes have been received, they cannot be deciphered.", + "errorDataRange": "Incorrect data range.", + "errorDataValidate": "The value you entered is not valid.
    A user has restricted values that can be entered into this cell.", + "errorDefaultMessage": "Error code: %1", + "errorDeleteColumnContainsLockedCell": "You are trying to delete a column that contains a locked cell. Locked cells cannot be deleted while the worksheet is protected.
    To delete a locked cell, unprotect the sheet. You might be requested to enter a password.", + "errorDeleteRowContainsLockedCell": "You are trying to delete a row that contains a locked cell. Locked cells cannot be deleted while the worksheet is protected.
    To delete a locked cell, unprotect the sheet. You might be requested to enter a password.", + "errorDependentsNoFormulas": "The Trace Dependents command found no formulas that refer to the active cell.", + "errorDirectUrl": "Please verify the link to the document.
    This link must be a direct link to the file for downloading.", + "errorEditingDownloadas": "An error occurred during the work with the document.
    Use the 'Download' option to save the file backup copy locally.", + "errorEditView": "The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.", + "errorEmailClient": "No email client could be found", + "errorFilePassProtect": "The file is password protected and could not be opened.", + "errorFileRequest": "External error.
    File Request. Please, contact support.", + "errorFileSizeExceed": "The file size exceeds your server limitation.
    Please, contact your admin for details.", + "errorFileVKey": "External error.
    Incorrect security key. Please, contact support.", + "errorFillRange": "Could not fill the selected range of cells.
    All the merged cells need to be the same size.", + "errorForceSave": "An error occurred while saving the file. Please use the 'Download as' option to save the file to your computer hard drive or try again later.", + "errorFormulaName": "An error in the formula.
    Incorrect formula name.", + "errorFormulaParsing": "Internal error while the formula parsing.", + "errorFrmlMaxLength": "You cannot add this formula as its length exceeds the allowed number of characters.
    Please, edit it and try again.", + "errorFrmlMaxReference": "You cannot enter this formula because it has too many values,
    cell references, and/or names.", + "errorFrmlMaxTextLength": "Text values in formulas are limited to 255 characters.
    Use the CONCATENATE function or concatenation operator (&)", + "errorFrmlWrongReferences": "The function refers to a sheet that does not exist.
    Please, check the data and try again.", + "errorFTChangeTableRangeError": "Operation could not be completed for the selected cell range.
    Select a range so that the first table row was on the same row
    and the resulting table overlapped the current one.", + "errorFTRangeIncludedOtherTables": "Operation could not be completed for the selected cell range.
    Select a range which does not include other tables.", + "errorInconsistentExt": "An error has occurred while opening the file.
    The file content does not match the file extension.", + "errorInconsistentExtDocx": "An error has occurred while opening the file.
    The file content corresponds to text documents (e.g. docx), but the file has the inconsistent extension: %1.", + "errorInconsistentExtPdf": "An error has occurred while opening the file.
    The file content corresponds to one of the following formats: pdf/djvu/xps/oxps, but the file has the inconsistent extension: %1.", + "errorInconsistentExtPptx": "An error has occurred while opening the file.
    The file content corresponds to presentations (e.g. pptx), but the file has the inconsistent extension: %1.", + "errorInconsistentExtXlsx": "An error has occurred while opening the file.
    The file content corresponds to spreadsheets (e.g. xlsx), but the file has the inconsistent extension: %1.", + "errorInvalidRef": "Enter a correct name for the selection or a valid reference to go to.", + "errorKeyEncrypt": "Unknown key descriptor", + "errorKeyExpire": "Key descriptor expired", + "errorLabledColumnsPivot": "To create a pivot table report, you must use data that is organized as a list with labeled columns.", + "errorLoadingFont": "Fonts are not loaded.
    Please contact your Document Server administrator.", + "errorLocationOrDataRangeError": "The reference for the location or data range is not valid.", + "errorLockedAll": "The operation could not be done as the sheet has been locked by another user.", + "errorLockedCellPivot": "You cannot change data inside a pivot table.", + "errorLockedWorksheetRename": "The sheet cannot be renamed at the moment as it is being renamed by another user", + "errorMaxPoints": "The maximum number of points in series per chart is 4096.", + "errorMaxRows": "ERROR! The maximum number of data series per chart is 255.", + "errorMoveRange": "Cannot change a part of a merged cell", + "errorMoveSlicerError": "Table slicers cannot be copied from one workbook to another.
    Try again by selecting the entire table and the slicers.", + "errorMultiCellFormula": "Multi-cell array formulas are not allowed in tables.", + "errorNoDataToParse": "No data was selected to parse.", + "errorOpenWarning": "The length of one of the formulas in the file exceeded
    the allowed number of characters and it was removed.", + "errorOperandExpected": "The entered function syntax is not correct. Please, check if you missed one of the parentheses - '(' or ')'.", + "errorPasteMaxRange": "The copy and paste area does not match. Please, select an area of the same size or click the first cell in a row to paste the copied cells.", + "errorPasteMultiSelect": "This action cannot be done on a multiple range selection.
    Select a single range and try again.", + "errorPasteSlicerError": "Table slicers cannot be copied from one workbook to another.", + "errorPivotGroup": "Cannot group that selection.", + "errorPivotOverlap": "A pivot table report cannot overlap a table.", + "errorPivotWithoutUnderlying": "The Pivot Table report was saved without the underlying data.
    Use the 'Refresh' button to update the report.", + "errorPrecedentsNoValidRef": "The Trace Precedents command requires that the active cell contain a formula which includes a valid references.", + "errorPrintMaxPagesCount": "Unfortunately, it’s not possible to print more than 1500 pages at once in the current version of the program.
    This restriction will be eliminated in upcoming releases.", + "errorProtectedRange": "This range is not allowed for editing.", + "errorSessionAbsolute": "The document editing session has expired. Please, reload the page.", + "errorSessionIdle": "The document has not been edited for quite a long time. Please, reload the page.", + "errorSessionToken": "The connection to the server has been interrupted. Please, reload the page.", + "errorSetPassword": "Password could not be set.", + "errorSingleColumnOrRowError": "Location reference is not valid because the cells are not all in the same column or row.
    Select cells that are all in a single column or row.", + "errorStockChart": "Incorrect row order. To build a stock chart, place the data on the sheet in the following order:
    opening price, max price, min price, closing price.", + "errorToken": "The document security token is not correctly formed.
    Please contact your Document Server administrator.", + "errorTokenExpire": "The document security token has expired.
    Please contact your Document Server administrator.", + "errorUnexpectedGuid": "External error.
    Unexpected Guid. Please, contact support.", + "errorUpdateVersionOnDisconnect": "Connection has been restored, and the file version has been changed.
    Before you can continue working, you need to download the file or copy its content to make sure nothing is lost, and then reload this page.", + "errorUserDrop": "The file cannot be accessed right now.", + "errorUsersExceed": "The number of users allowed by the pricing plan was exceeded", + "errorViewerDisconnect": "Connection is lost. You can still view the document,
    but you won't be able to download or print it until the connection is restored and the page is reloaded.", + "errorWrongBracketsCount": "An error in the formula.
    Wrong number of brackets.", + "errorWrongOperator": "An error in the entered formula. Wrong operator is used.
    Please correct the error.", + "errRemDuplicates": "Duplicate values found and deleted: {0}, unique values left: {1}.", + "notcriticalErrorTitle": "Warning", + "openErrorText": "An error has occurred while opening the file", + "pastInMergeAreaError": "Cannot change a part of a merged cell", + "saveErrorText": "An error has occurred while saving the file", + "scriptLoadError": "The connection is too slow, some of the components could not be loaded. Please, reload the page.", + "textCancel": "Cancel", + "textClose": "Close", + "textErrorPasswordIsNotCorrect": "The password you supplied is not correct.
    Verify that the CAPS LOCK key is off and be sure to use the correct capitalization.", + "textFillOtherRows": "Fill other rows", + "textFormulaFilledAllRows": "Formula filled {0} rows have data. Filling other empty rows may take a few minutes.", + "textFormulaFilledAllRowsWithEmpty": "Formula filled first {0} rows. Filling other empty rows may take a few minutes.", + "textFormulaFilledFirstRowsOtherHaveData": "Formula filled only first {0} rows have data by memory save reason. There are other {1} rows have data in this sheet. You can fill them manually.", + "textFormulaFilledFirstRowsOtherIsEmpty": "Formula filled only first {0} rows by memory save reason. Other rows in this sheet don't have data.", + "textInformation": "Information", + "textOk": "Ok", + "unknownErrorText": "Unknown error.", + "uploadDocExtMessage": "Unknown document format.", + "uploadDocFileCountMessage": "No documents uploaded.", + "uploadDocSizeMessage": "Maximum document size limit exceeded.", + "uploadImageExtMessage": "Unknown image format.", + "uploadImageFileCountMessage": "No images uploaded.", + "uploadImageSizeMessage": "The image is too big. The maximum size is 25 MB." + }, + "LongActions": { + "advDRMPassword": "Password", + "applyChangesTextText": "Loading data...", + "applyChangesTitleText": "Loading Data", + "confirmMaxChangesSize": "The size of actions exceeds the limitation set for your server.
    Press \"Undo\" to cancel your last action or press \"Continue\" to keep action locally (you need to download the file or copy its content to make sure nothing is lost).", + "confirmMoveCellRange": "The destination cells range can contain data. Continue the operation?", + "confirmPutMergeRange": "The source data contains merged cells.
    They will be unmerged before they are pasted into the table.", + "confirmReplaceFormulaInTable": "Formulas in the header row will be removed and converted to static text.
    Do you want to continue?", + "downloadTextText": "Downloading document...", + "downloadTitleText": "Downloading Document", + "loadFontsTextText": "Loading data...", + "loadFontsTitleText": "Loading Data", + "loadFontTextText": "Loading data...", + "loadFontTitleText": "Loading Data", + "loadImagesTextText": "Loading images...", + "loadImagesTitleText": "Loading Images", + "loadImageTextText": "Loading image...", + "loadImageTitleText": "Loading Image", + "loadingDocumentTextText": "Loading document...", + "loadingDocumentTitleText": "Loading document", + "notcriticalErrorTitle": "Warning", + "openTextText": "Opening document...", + "openTitleText": "Opening Document", + "printTextText": "Printing document...", + "printTitleText": "Printing Document", + "savePreparingText": "Preparing to save", + "savePreparingTitle": "Preparing to save. Please wait...", + "saveTextText": "Saving document...", + "saveTitleText": "Saving Document", + "textCancel": "Cancel", + "textContinue": "Continue", + "textErrorWrongPassword": "The password you supplied is not correct.", + "textLoadingDocument": "Loading document", + "textNo": "No", + "textOk": "Ok", + "textUndo": "Undo", + "textUnlockRange": "Unlock Range", + "textUnlockRangeWarning": "A range you are trying to change is password protected.", + "textYes": "Yes", + "txtEditingMode": "Set editing mode...", + "uploadImageTextText": "Uploading image...", + "uploadImageTitleText": "Uploading Image", + "waitText": "Please, wait..." + }, + "Toolbar": { + "dlgLeaveMsgText": "You have unsaved changes in this document. Click 'Stay on this Page' to wait for autosave. Click 'Leave this Page' to discard all the unsaved changes.", + "dlgLeaveTitleText": "You leave the application", + "leaveButtonText": "Leave this Page", + "stayButtonText": "Stay on this Page", + "textCloseHistory": "Close History", + "textEnterNewFileName": "Enter a new file name", + "textRenameFile": "Rename File" } } \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/locale/zh-tw.json b/apps/spreadsheeteditor/mobile/locale/zh-tw.json index 3a5247ca42..53aafb3b72 100644 --- a/apps/spreadsheeteditor/mobile/locale/zh-tw.json +++ b/apps/spreadsheeteditor/mobile/locale/zh-tw.json @@ -24,21 +24,21 @@ "textEdit": "編輯", "textEditComment": "編輯評論", "textEditReply": "編輯回覆", - "textEditUser": "正在編輯文件的用戶:", + "textEditUser": "正在編輯文件的使用者:", "textMessageDeleteComment": "確定要刪除評論嗎?", "textMessageDeleteReply": "確定要刪除回覆嗎?", "textNoComments": "沒評論", "textOk": "好", - "textReopen": "重開", + "textReopen": "重新開啟", "textResolve": "解決", - "textSharingSettings": "分享設定", - "textTryUndoRedo": "在快速共同編輯模式下,撤消/重做功能被禁用。", + "textSharingSettings": "共用設定", + "textTryUndoRedo": "在快速共同編輯模式下,復原/重做功能被禁用。", "textUsers": "使用者" }, "ThemeColorPalette": { "textCustomColors": "自訂顏色", "textStandartColors": "標準顏色", - "textThemeColors": "主題顏色" + "textThemeColors": "主題色彩" }, "Themes": { "dark": "Dark", @@ -63,7 +63,7 @@ }, "ContextMenu": { "errorCopyCutPaste": "使用右鍵選單動作的複製、剪下和貼上的動作將只在目前的檔案中執行。", - "errorInvalidLink": "連結引用不存在。請更正連結或將其刪除。", + "errorInvalidLink": "引用的連結不存在。請更正連結或將其刪除。", "menuAddComment": "新增註解", "menuAddLink": "新增連結", "menuCancel": "取消", @@ -79,9 +79,9 @@ "menuShow": "顯示", "menuUnfreezePanes": "取消凍結窗格", "menuUnmerge": "取消合併", - "menuUnwrap": "攤開", - "menuViewComment": "查看評論", - "menuWrap": "包覆", + "menuUnwrap": "取消自動換行", + "menuViewComment": "查看註解", + "menuWrap": "換行", "notcriticalErrorTitle": "警告", "textCopyCutPasteActions": "複製, 剪下, 與貼上之動作", "textDoNotShowAgain": "不再顯示", @@ -93,17 +93,17 @@ "Controller": { "Main": { "criticalErrorTitle": "錯誤", - "errorAccessDeny": "您正在嘗試執行您無權執行的動作。
    請聯繫您的管理員。", - "errorOpensource": "在使用免費社群版本時,您只能瀏覽開啟的文件。欲使用移動版本的編輯功能,您需要付費的憑證。", - "errorProcessSaveResult": "保存失敗。", - "errorServerVersion": "編輯器版本已更新。該頁面將被重新加載以應用更改。", - "errorUpdateVersion": "文件版本已更改。該頁面將重新加載。", - "leavePageText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"以等待自動儲存。點擊\"離開此頁面\"以放棄所有未儲存的變更。", + "errorAccessDeny": "您正在嘗試執行一個無權限的操作。
    請聯絡系統管理員。", + "errorOpensource": "目前版本只能以檢視模式打開文件。若要使用行動網頁編輯器,需要額外授權。", + "errorProcessSaveResult": "儲存失敗", + "errorServerVersion": "編輯器版本已更新。將重新載入頁面以更新改動。", + "errorUpdateVersion": "文件版本已更改。將重新載入頁面。", + "leavePageText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"等待自動儲存,或點擊\"離開此頁面\"放棄所有未儲存的變更。", "notcriticalErrorTitle": "警告", "SDK": { "txtAccent": "強調", "txtAll": "(所有)", - "txtArt": "在這輸入文字", + "txtArt": "在此輸入文字", "txtBlank": "(空白)", "txtByField": "第%1個,共%2個", "txtClearFilter": "清除過濾器(Alt + C)", @@ -159,28 +159,28 @@ "txtValues": "值", "txtXAxis": "X軸", "txtYAxis": "Y軸", - "txtYears": "年" + "txtYears": "年份" }, "textAnonymous": "匿名", - "textBuyNow": "訪問網站", + "textBuyNow": "瀏覽網站", "textClose": "關閉", "textContactUs": "聯絡銷售人員", - "textCustomLoader": "很抱歉,您無權變更載入程序。 請聯繫我們的業務部門取得報價。", + "textCustomLoader": "很抱歉,您無權更改載入程式。", "textDontUpdate": "不要升級", "textGuest": "訪客", "textHasMacros": "此檔案包含自動巨集程式。
    是否要執行這些巨集?", "textNo": "否", - "textNoChoices": "無法選擇要填充儲存格的內容。
    只能選擇列中的文本值進行替換。", + "textNoChoices": "在填充單元格的選擇中沒有項目。
    只能從列中選擇文字進行替換。", "textNoLicenseTitle": "達到許可限制", "textNoMatches": "無匹配", "textOk": "好", "textPaidFeature": "付費功能", "textRemember": "記住我的選擇", - "textReplaceSkipped": "替換已完成。 {0}個事件被跳過。", - "textReplaceSuccess": "搜索已完成。發生的事件已替換:{0}", + "textReplaceSkipped": "替換已完成。有 {0} 個項目被跳過。", + "textReplaceSuccess": "已完成搜尋。已替換的次數:{0}。", "textRequestMacros": "有一個巨集指令要求連結至URL。是否允許該要求至%1?", - "textUpdate": "升級", - "textWarnUpdateExternalData": "此工作表包含一個或多個可能不安全的外部源連結。如果您信任這些連結,請更新它們以得到最新數據。", + "textUpdate": "更新", + "textWarnUpdateExternalData": "此活頁簿包含對一個或多個不安全的外部來源的連結。如果您信任這些連結,請更新它們以獲取最新資料。", "textYes": "是", "titleLicenseExp": "證件過期", "titleLicenseNotActive": "授權未啟用", @@ -188,14 +188,14 @@ "titleUpdateVersion": "版本已更改", "warnLicenseAnonymous": "匿名使用者無法存取。
    此文件將僅供檢視。", "warnLicenseBefore": "授權未啟用。
    請聯絡您的管理員。", - "warnLicenseExceeded": "您已達到同時連接到 %1 編輯器的限制。此文件將只提供檢視。請聯繫您的管理員以了解更多資訊。", - "warnLicenseExp": "您的憑證已過期,請升級並刷新此頁面。", + "warnLicenseExceeded": "您已達到同時連線 %1 編輯者的限制。此文件將僅以檢視模式開啟。", + "warnLicenseExp": "您的授權已過期。請更新您的授權並重新整理頁面。", "warnLicenseLimitedNoAccess": "憑證已過期。您無法使用文件編輯功能。請聯絡您的帳號管理員", "warnLicenseLimitedRenewed": "憑證需要續約。您目前只有文件編輯的部份功能。
    欲使用完整功能,請聯絡您的帳號管理員。", - "warnLicenseUsersExceeded": "您已達到 %1 個編輯器的使用者限制。請聯繫您的管理員以了解更多資訊。", - "warnNoLicense": "您已達到同時連接到 %1 編輯器的限制。此文件將只提供檢視。有關個人升級條款,請聯繫 %1 業務團隊。", - "warnNoLicenseUsers": "您已達到%1個編輯器的用戶限制。與%1銷售團隊聯繫以了解個人升級條款。", - "warnProcessRightsChange": "您沒有編輯此文件的權限。" + "warnLicenseUsersExceeded": "您已達到 %1 編輯器的使用者限制。請聯繫您的管理員以了解詳情。", + "warnNoLicense": "您已達到同時連線 %1 編輯者的限制。此文件將僅以檢視模式開啟。", + "warnNoLicenseUsers": "您已達到編輯器的使用者限制。", + "warnProcessRightsChange": "您無權編輯此檔案。" } }, "Error": { @@ -203,69 +203,69 @@ "criticalErrorExtText": "點擊\"好\"回到文件列表。", "criticalErrorTitle": "錯誤", "downloadErrorText": "下載失敗", - "errorAccessDeny": "您正在嘗試執行您無權執行的動作。
    請聯繫您的管理員。", + "errorAccessDeny": "您正在嘗試執行一個無權限的操作。
    請聯絡系統管理員。", "errorArgsRange": "公式中有錯誤。
    不正確的引數範圍。", - "errorAutoFilterChange": "不允許該動作,因為它試圖移動您的工作表上表格中的儲存格。", - "errorAutoFilterChangeFormatTable": "無法對所選儲存格執行該動作,因為無法移動表格的一部分。
    請選擇另一個資料範圍以便移動整個表格並重試。", - "errorAutoFilterDataRange": "無法對選定的儲存格區域執行該動作。
    請選擇工作表內部或外部的統一資料範圍並重試。", - "errorAutoFilterHiddenRange": "無法執行該動作,因為該區域包含過濾的儲存格。
    請取消隱藏過濾的元素並重試。", + "errorAutoFilterChange": "此操作不允許移動工作表中的表格儲存格。", + "errorAutoFilterChangeFormatTable": "此操作無法針對所選儲存格進行,因為您無法移動表格的一部分。請選擇另一個資料範圍,以便整個表格移動,然後重試。", + "errorAutoFilterDataRange": "無法對所選儲存格範圍進行此操作。請選擇表格內或表格外的統一資料範圍,然後重試。", + "errorAutoFilterHiddenRange": "無法執行該操作,因為區域中包含篩選的儲存格。請取消隱藏篩選的元素,然後重試。", "errorBadImageUrl": "不正確的圖像 URL", - "errorCannotUseCommandProtectedSheet": "您無法在受保護的工作表使用這個指令,若要使用這個指令,請取消保護該工作表。
    您可能需要輸入密碼。", - "errorChangeArray": "您不能更改數組的一部分。", - "errorChangeOnProtectedSheet": "您嘗試變更的儲存格或圖表位於受保護的工作表上。 要進行變更,請取消工作表的保護。您將可能會被要求您輸入密碼。", + "errorCannotUseCommandProtectedSheet": "您無法在受保護的工作表上使用此命令。要使用此命令,請取消保護工作表。<br>您可能需要輸入密碼。", + "errorChangeArray": "您無法更改數組的一部分。", + "errorChangeOnProtectedSheet": "您嘗試更改的儲存格或圖表位於受保護的工作表上。若要進行更改,請取消保護工作表。您可能需要輸入密碼。", "errorConnectToServer": "您已達到同時連接到 %1 編輯器的限制。此文件將只提供檢視。請聯繫您的管理員以了解更多資訊。", - "errorCopyMultiselectArea": "此命令不能用於多個選擇。
    選擇單個範圍,然後重試。", + "errorCopyMultiselectArea": "此命令無法與多個選擇一起使用。請選擇單一範圍並重試。", "errorCountArg": "公式中有錯誤。
    無效的引數數字。", "errorCountArgExceed": "公式中有錯誤。
    超過最大的引數數字。", - "errorCreateDefName": "由於其中一些正在被編輯,因此目前無法編輯現有命名範圍,也無法創建新的命名範圍。", + "errorCreateDefName": "現有的命名範圍無法編輯,並且無法創建新的<br>因為其中一些正在進行編輯。", "errorDatabaseConnection": "外部錯誤
    資料庫連結錯誤, 請聯絡技術支援。", "errorDataEncrypted": "已收到加密的更改,無法解密。", "errorDataRange": "不正確的資料範圍", - "errorDataValidate": "您輸入的值無效。
    用戶具有可以在此儲存格中輸入的限制值。", + "errorDataValidate": "您輸入的值無效。<br>用戶對可在此單元格中輸入的值進行了限制。", "errorDefaultMessage": "錯誤編號:%1", "errorDirectUrl": "請確認文件的連結。
    該連結必須可直接下載檔案。", "errorEditingDownloadas": "處理文件檔時發生錯誤。
    請使用\"下載\"來儲存一份備份檔案到本機端。", "errorFilePassProtect": "此文件使用密碼保護功能,無法開啟。", "errorFileRequest": "外部錯誤。
    檔案請求。請聯絡支援。", - "errorFileSizeExceed": "檔案大小已超過了您的伺服器限制。
    請聯繫您的管理員了解詳情。", + "errorFileSizeExceed": "檔案大小超過伺服器限制。詳情請聯絡您的管理員。", "errorFileVKey": "外部錯誤。
    錯誤的安全金鑰。請聯絡支援。", "errorFillRange": "無法填充所選的單元格範圍。
    所有合併的儲存格必須具有相同的大小。", "errorFormulaName": "公式中有錯誤。
    錯誤的公式名稱。", "errorFormulaParsing": "公式分析時出現內部錯誤。", - "errorFrmlMaxLength": "您無法添加此公式,因為它的長度超過了允許的字符數。
    請編輯它,然後重試。", - "errorFrmlMaxReference": "您無法輸入此公式,因為它具有太多的值,
    單元格引用和/或名稱。", - "errorFrmlMaxTextLength": "在公式中的文字數值有255字元的限制。
    使用 CONCATENATE 函數或序連運算子(&)", - "errorFrmlWrongReferences": "該函數引用了一個不存在的工作表。
    請檢查內容並重試。", + "errorFrmlMaxLength": "無法新增此公式,因為其長度超過允許的字符數。請進行編輯後再試一次。", + "errorFrmlMaxReference": "您無法輸入此公式,因為它包含太多值、儲存格引用和/或名稱。", + "errorFrmlMaxTextLength": "公式中的文字限制為255個字元。請使用CONCATENATE函數或串連運算子 &。", + "errorFrmlWrongReferences": "函數參照了不存在的工作表。請檢查資料並重試。", "errorInconsistentExt": "開啟檔案時發生錯誤。
    檔案內容與副檔名不一致。", "errorInconsistentExtDocx": "開啟檔案時發生錯誤。
    檔案內容對應到文字檔(例如 docx),但檔案副檔名不一致:%1。", "errorInconsistentExtPdf": "開啟檔案時發生錯誤。
    檔案內容對應到下列格式之一:pdf/djvu/xps/oxps,但檔案副檔名不一致:%1。", "errorInconsistentExtPptx": "開啟檔案時發生錯誤。
    檔案內容對應到簡報檔(例如 pptx),但檔案副檔名不一致:%1。", "errorInconsistentExtXlsx": "開啟檔案時發生錯誤。
    檔案內容對應到試算表檔案(例如 xlsx),但檔案副檔名不一致:%1。", "errorInvalidRef": "輸入正確的選擇名稱或有效參考。", - "errorKeyEncrypt": "未知密鑰描述符", + "errorKeyEncrypt": "未知的按鍵快捷功能", "errorKeyExpire": "密鑰描述符已過期", "errorLoadingFont": "字體未載入。
    請聯絡檔案伺服器管理員。", - "errorLockedAll": "該工作表已被另一位用戶鎖定,因此無法完成該操作。", - "errorLockedCellPivot": "您不能在數據透視表中更改數據。", - "errorLockedWorksheetRename": "該工作表目前無法重命名,因為它正在被其他用戶重命名", - "errorMaxPoints": "每個圖表的最大串聯點數為4096。", + "errorLockedAll": "由於其他用戶鎖定了工作表,因此無法執行操作。", + "errorLockedCellPivot": "您無法更改樞紐分析表中的數據。", + "errorLockedWorksheetRename": "目前無法對工作表進行重新命名,因為其正由其他用戶重新命名。", + "errorMaxPoints": "每個圖表系列中的最大點數量為4096。", "errorMoveRange": "無法改變合併儲存格內的一部分", "errorMultiCellFormula": "表中不允許使用多儲存格數組公式。", - "errorOpenWarning": "文件中的一個公式長度超過了
    允許的字元數並已被移除。", - "errorOperandExpected": "輸入的函數語法不正確。請檢查您是否遺漏了任何括號之一 - '(' 或 ')'。", - "errorPasteMaxRange": "複製和貼上的區域不匹配。 請選擇一個相同大小的區域或點擊一行中的第一個儲存格以貼上已複製的儲存格。", - "errorPrintMaxPagesCount": "不幸的是,在目前版本的程式中一次不可列印超過 1500 頁。
    在即將發布的版本中將會取消此限制。", - "errorProtectedRange": "此範圍不允許進行編輯。", - "errorSessionAbsolute": "該檔案編輯時效已逾期。請重新載入此頁面。", - "errorSessionIdle": "無 該文件已經有一段時間沒有進行編輯了。 請重新載入頁面。", - "errorSessionToken": "主機連線被中斷,請重新載入此頁面。", + "errorOpenWarning": "檔案中的其中一個公式長度超過了允許的字符數,已被刪除。", + "errorOperandExpected": "輸入的函數語法不正確。請檢查是否遺漏了其中一個括號 - ( 或 )。", + "errorPasteMaxRange": "複製和貼上區域不相符。請選擇相同大小的區域,或點擊行中的第一個儲存格以貼上複製的儲存格。", + "errorPrintMaxPagesCount": "很抱歉,目前版本的程式無法一次列印超過1500頁。這個限制將在未來的版本中消除。", + "errorProtectedRange": "不允許編輯此範圍。", + "errorSessionAbsolute": "文件編輯工作階段已過期。請重新載入頁面。", + "errorSessionIdle": "該文件已很長時間未進行編輯。請重新載入頁面。", + "errorSessionToken": "與伺服器的連線中斷。請重新載入頁面。", "errorStockChart": "行序錯誤。要建立股票圖表,請將數據按照以下順序工作表:
    開盤價、最高價、最低價、收盤價。 ", - "errorToken": "檔案安全憑證格式不正確。
    請聯絡您的檔案伺服器管理員。", - "errorTokenExpire": "檔案安全憑證已過期。
    請聯絡您的檔案伺服器管理員。", + "errorToken": "文件安全令牌格式不正確。
    請聯繫您的相關管理員。", + "errorTokenExpire": "文件安全令牌已過期。
    請聯繫相關管理員。", "errorUnexpectedGuid": "外部錯誤。
    未預期的導向。請聯絡支援。", "errorUpdateVersionOnDisconnect": "網路連接已恢復,文件版本已更改。
    在繼續工作之前,您需要下載文件或複制其內容以確保沒有丟失,然後重新加載此頁面。", - "errorUserDrop": "目前無法存取該文件。", - "errorUsersExceed": "超出了定價計劃所允許的用戶數量", + "errorUserDrop": "目前無法存取該檔案。", + "errorUsersExceed": "已超出價格方案允許的使用者數量。", "errorViewerDisconnect": "網路連線失敗。您可以繼續瀏覽這份文件,
    在連線恢復前以及頁面重新加載之前,您無法下載或列印此文件。", "errorWrongBracketsCount": "公式中有錯誤。
    括號數字錯誤。", "errorWrongOperator": "輸入的公式中有錯誤。使用了錯誤的運算符。
    請更正錯誤。", @@ -273,14 +273,14 @@ "openErrorText": "開啟文件時發生錯誤", "pastInMergeAreaError": "無法改變合併儲存格內的一部分", "saveErrorText": "存檔時發生錯誤", - "scriptLoadError": "連線速度過慢,某些組件無法加載。 請重新載入頁面。", + "scriptLoadError": "連線速度太慢,部分元件無法載入。請重新載入頁面。", "textCancel": "取消", - "textErrorPasswordIsNotCorrect": "密碼錯誤。
    核實蓋帽封鎖鍵關閉並且是肯定使用正確資本化。", + "textErrorPasswordIsNotCorrect": "您提供的密碼不正確。
    請確保大寫鎖定鍵已關閉,並確保使用正確的大小寫。", "textOk": "好", "unknownErrorText": "未知錯誤。", - "uploadImageExtMessage": "圖片格式未知。", + "uploadImageExtMessage": "未知圖片格式。", "uploadImageFileCountMessage": "沒有上傳圖片。", - "uploadImageSizeMessage": "圖像超出最大大小限制。最大大小為25MB。", + "uploadImageSizeMessage": "圖片超出最大大小限制。最大大小為25MB。", "errNoDuplicates": "No duplicate values found.", "errorCannotUngroup": "Cannot ungroup. To start an outline, select the detail rows or columns and group them.", "errorChangeFilteredRange": "This will change a filtered range on your worksheet.
    To complete this task, please remove AutoFilters.", @@ -322,9 +322,9 @@ "advDRMPassword": "密碼", "applyChangesTextText": "加載數據中...", "applyChangesTitleText": "加載數據中", - "confirmMaxChangesSize": "您執行的動作超出伺服器設定的大小限制。
    點選\"復原\"以取消動作,或點選\"繼續\"保留該動作(您需要下載檔案或複製其內容以確保沒有資料遺失)。", - "confirmMoveCellRange": "目標儲存格的範圍可以包含資料。繼續動作?", - "confirmPutMergeRange": "資料來源包含合併的儲存格。
    它們在貼上到表格之前將被取消合併。", + "confirmMaxChangesSize": "操作的大小超出了您的伺服器設定的限制。
    按一下「復原」來取消上一個動作,或按一下「繼續」在本地保留動作(您需要下載該文件或複製其內容,以確保不會丟失任何內容)。", + "confirmMoveCellRange": "目標儲存格範圍可能包含資料。是否繼續操作?", + "confirmPutMergeRange": "來源資料包含合併的儲存格。在將其貼到表格中之前,這些儲存格將被取消合併。", "confirmReplaceFormulaInTable": "標題行中的公式將被刪除並轉換為靜態文本。
    是否繼續?", "downloadTextText": "文件下載中...", "downloadTitleText": "文件下載中", @@ -345,21 +345,21 @@ "printTitleText": "列印文件", "savePreparingText": "準備儲存", "savePreparingTitle": "正在準備儲存。請耐心等候...", - "saveTextText": "儲存文件...", - "saveTitleText": "儲存文件", + "saveTextText": "正在儲存文件...", + "saveTitleText": "正在儲存文件", "textCancel": "取消", "textContinue": "繼續", - "textErrorWrongPassword": "密碼錯誤", + "textErrorWrongPassword": "您輸入的密碼不正確。", "textLoadingDocument": "載入文件", "textNo": "否", "textOk": "好", "textUndo": "復原", - "textUnlockRange": "範圍解鎖", + "textUnlockRange": "解除鎖定範圍", "textUnlockRangeWarning": "試圖改變的範圍受密碼保護。", "textYes": "是", "txtEditingMode": "設定編輯模式...", "uploadImageTextText": "正在上傳圖片...", - "uploadImageTitleText": "上載圖片", + "uploadImageTitleText": "正在上傳圖片", "waitText": "請耐心等待..." }, "Statusbar": { @@ -370,7 +370,7 @@ "textErrNameExists": "具有此名稱的工作表已存在。", "textErrNameWrongChar": "工作表名稱不能包含以下字符:\\,/,*,?,[,] 、:", "textErrNotEmpty": "表格名稱不能為空", - "textErrorLastSheet": "工作簿必須至少有一個可見的工作表。", + "textErrorLastSheet": "活頁簿必須至少有一個可見的工作表。", "textErrorRemoveSheet": "無法刪除工作表。", "textHidden": "隱長", "textHide": "隱藏", @@ -385,11 +385,11 @@ "textSheetName": "表格名稱", "textTabColor": "標籤顏色", "textUnhide": "取消隱藏", - "textWarnDeleteSheet": "工作表內可能有資料。 進行動作?" + "textWarnDeleteSheet": "工作表可能包含資料。是否繼續操作?" }, "Toolbar": { - "dlgLeaveMsgText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"以等待自動儲存。點擊\"離開此頁面\"以放棄所有未儲存的變更。", - "dlgLeaveTitleText": "您離開應用程式。", + "dlgLeaveMsgText": "您在此文件中有未儲存的變更。點擊\"留在此頁面\"等待自動儲存,或點擊\"離開此頁面\"放棄所有未儲存的變更。", + "dlgLeaveTitleText": "您離開應用程式", "leaveButtonText": "離開此頁面", "stayButtonText": "留在此頁面", "textCloseHistory": "Close History", @@ -420,7 +420,7 @@ "textDataTableHint": "回傳表格儲存格,或指定的表格儲存格", "textDisplay": "顯示", "textDone": "完成", - "textEmptyImgUrl": "您需要指定影像的 URL。", + "textEmptyImgUrl": "您需要指定圖片的URL。", "textExternalLink": "外部連結", "textFilter": "篩選條件", "textFunction": "功能", @@ -441,7 +441,7 @@ "textPictureFromLibrary": "圖片來自圖庫", "textPictureFromURL": "網址圖片", "textRange": "範圍", - "textRecommended": "建議", + "textRecommended": "推薦", "textRequired": "必填", "textScreenTip": "螢幕提示", "textSelectedRange": "選擇範圍", @@ -451,10 +451,10 @@ "textThisRowHint": "在選定的列裡選擇這列", "textTotalsTableHint": "回傳表格或指定表格列的總行數", "txtExpand": "展開和排序", - "txtExpandSort": "選擇項旁邊的數據將不會排序。您是否要擴展選擇範圍以包括相鄰數據,還是僅對當前選定的單元格進行排序?", + "txtExpandSort": "選擇範圍旁邊的數據將不會被刪除。您要擴展選擇範圍以包括相鄰數據還是僅繼續使用當前選定的單元格?", "txtLockSort": "您選材的比鄰有數據,可您更改權限不足。
    是否繼續當前選材?", "txtNo": "沒有", - "txtNotUrl": "此字段應為格式為\"http://www.example.com\"的URL。", + "txtNotUrl": "此字段應為格式為“ http://www.example.com”的URL。", "txtSorting": "排序", "txtSortSelected": "排序已選擇項目", "txtYes": "是" @@ -518,9 +518,9 @@ "textDone": "完成", "textEditLink": "編輯連結", "textEffects": "效果", - "textEmptyImgUrl": "您需要指定影像的 URL。", + "textEmptyImgUrl": "您需要指定圖片的URL。", "textEmptyItem": "{空白}", - "textErrorMsg": "您必須選擇至少一個值", + "textErrorMsg": "您必須至少選擇一個值", "textErrorTitle": "警告", "textEuro": "歐元", "textExternalLink": "外部連結", @@ -581,7 +581,7 @@ "textNoBorder": "無邊界", "textNone": "無", "textNoOverlay": "無覆蓋", - "textNotUrl": "此字段應為格式為\"http://www.example.com\"的URL。", + "textNotUrl": "此字段應為格式為“ http://www.example.com”的URL。", "textNumber": "數字", "textOk": "好", "textOnTickMarks": "在勾號上", @@ -596,11 +596,11 @@ "textPound": "英鎊", "textPt": "pt", "textRange": "範圍", - "textRecommended": "建議", - "textRemoveChart": "刪除圖表", - "textRemoveShape": "去除形狀", + "textRecommended": "推薦", + "textRemoveChart": "移除圖表", + "textRemoveShape": "移除形狀", "textReplace": "取代", - "textReplaceImage": "替換圖片", + "textReplaceImage": "取代圖片", "textRequired": "必填", "textRight": "右", "textRightBorder": "右邊界", @@ -627,10 +627,10 @@ "textTextOrientation": "文字方向", "textThick": "粗", "textThin": "細", - "textThousands": "千", - "textTickOptions": "勾號選項", + "textThousands": "千位數", + "textTickOptions": "刻度選項", "textTime": "時間", - "textTop": "上方", + "textTop": "頂部", "textTopBorder": "上邊框", "textTrillions": "兆", "textType": "類型", @@ -639,9 +639,9 @@ "textVertical": "垂直", "textVerticalAxis": "垂直軸", "textVerticalText": "垂直文字", - "textWrapText": "包覆文字", - "textYen": "日圓", - "txtNotUrl": "此字段應為格式為\"http://www.example.com\"的URL。", + "textWrapText": "換行文字", + "textYen": "日元", + "txtNotUrl": "此字段應為格式為“ http://www.example.com”的URL。", "txtSortHigh2Low": "從最高到最低排序", "txtSortLow2High": "從最低到最高排序", "textCreateCustomFormat": "Create Custom Format", @@ -731,11 +731,11 @@ "textR1C1Style": "R1C1參考樣式", "textRegionalSettings": "區域設置", "textReplace": "取代", - "textReplaceAll": "全部替換", + "textReplaceAll": "全部取代", "textResolvedComments": "已解決的評論", "textRestartApplication": "請重新啟動應用程式以讓變更生效", "textRight": "右", - "textRightToLeft": "右到左", + "textRightToLeft": "從右到左", "textSearch": "搜尋", "textSearchBy": "搜尋", "textSearchIn": "搜尋", @@ -749,9 +749,9 @@ "textSubject": "主旨", "textTel": "電話", "textTitle": "標題", - "textTop": "上方", + "textTop": "頂部", "textUnitOfMeasurement": "測量單位", - "textUploaded": "\n已上傳", + "textUploaded": "已上傳", "textValues": "值", "textVersion": "版本", "textWorkbook": "工作簿", @@ -800,8 +800,8 @@ "txtScheme18": "技術", "txtScheme19": "跋涉", "txtScheme2": "灰階", - "txtScheme20": "市區", - "txtScheme21": "感染力", + "txtScheme20": "城市", + "txtScheme21": "活力", "txtScheme22": "新的Office", "txtScheme3": "頂尖", "txtScheme4": "方面", diff --git a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx index 2844029e93..9ca01233ad 100644 --- a/apps/spreadsheeteditor/mobile/src/controller/Main.jsx +++ b/apps/spreadsheeteditor/mobile/src/controller/Main.jsx @@ -1149,7 +1149,9 @@ class MainController extends Component { return; } this._state.isFromGatewayDownloadAs = true; - this.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true)); + var options = new Asc.asc_CDownloadOptions(Asc.c_oAscFileType.XLSX, true); + options.asc_setIsSaveAs(true); + this.api.asc_DownloadAs(options); } onRequestClose () { diff --git a/apps/spreadsheeteditor/mobile/src/store/appOptions.js b/apps/spreadsheeteditor/mobile/src/store/appOptions.js index 2368c65205..4c63c24774 100644 --- a/apps/spreadsheeteditor/mobile/src/store/appOptions.js +++ b/apps/spreadsheeteditor/mobile/src/store/appOptions.js @@ -146,7 +146,7 @@ export class storeAppOptions { this.canUseCommentPermissions && AscCommon.UserInfoParser.setCommentPermissions(permissions.commentGroups); this.canUseUserInfoPermissions && AscCommon.UserInfoParser.setUserInfoPermissions(permissions.userInfoGroups); - this.canUseHistory = this.canLicense && !this.isLightVersion && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp; + this.canUseHistory = this.canLicense && this.config.canUseHistory && this.canCoAuthoring && !this.isDesktopApp && !this.isOffline; this.canHistoryClose = this.config.canHistoryClose; this.canHistoryRestore= this.config.canHistoryRestore; diff --git a/apps/spreadsheeteditor/mobile/src/view/Statusbar.jsx b/apps/spreadsheeteditor/mobile/src/view/Statusbar.jsx index d452ec552f..10846ec1a8 100644 --- a/apps/spreadsheeteditor/mobile/src/view/Statusbar.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/Statusbar.jsx @@ -220,11 +220,11 @@ const StatusbarView = inject('storeAppOptions', 'storeWorksheets', 'users')(obse {isEdit && -
    +
    - f7.popover.open('#idx-all-list', e.target)}> + f7.popover.open('#idx-all-list', e.target)}>
    diff --git a/apps/spreadsheeteditor/mobile/src/view/Toolbar.jsx b/apps/spreadsheeteditor/mobile/src/view/Toolbar.jsx index 9adece850f..9a40ac1ef5 100644 --- a/apps/spreadsheeteditor/mobile/src/view/Toolbar.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/Toolbar.jsx @@ -1,4 +1,4 @@ -import React, {Fragment, useEffect} from 'react'; +import React, {Fragment} from 'react'; import {NavLeft, NavRight, Link} from 'framework7-react'; import { Device } from '../../../../common/mobile/utils/device'; import EditorUIController from '../lib/patch' @@ -17,42 +17,13 @@ const ToolbarView = props => { onRedoClick: props.onRedo }) : null; const docTitle = props.docTitle; - const docTitleLength = docTitle.length; const isVersionHistoryMode = props.isVersionHistoryMode; const isOpenModal = props.isOpenModal; - - const correctOverflowedText = el => { - if(el) { - el.innerText = docTitle; - - if(el.scrollWidth > el.clientWidth) { - const arrDocTitle = docTitle.split('.'); - const ext = arrDocTitle[1]; - const name = arrDocTitle[0]; - const diff = Math.floor(docTitleLength * el.clientWidth / el.scrollWidth - ext.length - 6); - const shortName = name.substring(0, diff).trim(); - - return `${shortName}...${ext}`; - } - - return docTitle; - } - }; - - useEffect(() => { - if(!Device.phone) { - const elemTitle = document.querySelector('.subnavbar .title'); - - if (elemTitle) { - elemTitle.innerText = correctOverflowedText(elemTitle); - } - } - }, [docTitle]); return ( - {(props.isShowBack && !isVersionHistoryMode) && Common.Notifications.trigger('goback')}>} + {(props.isShowBack && !isVersionHistoryMode) && Common.Notifications.trigger('goback')}>} {isVersionHistoryMode ?
    { e.preventDefault(); props.closeHistory(); @@ -61,7 +32,7 @@ const ToolbarView = props => { {(!Device.phone && !isVersionHistoryMode) &&
    props.changeTitleHandler()} style={{width: '71%'}}> - {props.docTitle} + {docTitle}
    } diff --git a/apps/spreadsheeteditor/mobile/src/view/settings/SettingsPage.jsx b/apps/spreadsheeteditor/mobile/src/view/settings/SettingsPage.jsx index 7b187c69b9..8984f2a08f 100644 --- a/apps/spreadsheeteditor/mobile/src/view/settings/SettingsPage.jsx +++ b/apps/spreadsheeteditor/mobile/src/view/settings/SettingsPage.jsx @@ -10,6 +10,7 @@ const SettingsPage = inject('storeAppOptions', 'storeSpreadsheetInfo')(observer( const { t } = useTranslation(); const appOptions = props.storeAppOptions; const storeSpreadsheetInfo = props.storeSpreadsheetInfo; + const canUseHistory = appOptions.canUseHistory; const {openOptions, isBranding} = useContext(MainContext); const settingsContext = useContext(SettingsContext); const _t = t('View.Settings', {returnObjects: true}); @@ -81,7 +82,7 @@ const SettingsPage = inject('storeAppOptions', 'storeSpreadsheetInfo')(observer( - {_isEdit && + {_isEdit && canUseHistory && { if(Device.phone) { onOpenOptions('history'); diff --git a/vendor/framework7-react/build/webpack.config.js b/vendor/framework7-react/build/webpack.config.js index 8db88e5200..fe2475eb8b 100644 --- a/vendor/framework7-react/build/webpack.config.js +++ b/vendor/framework7-react/build/webpack.config.js @@ -50,7 +50,7 @@ const config = { jquery: 'jQuery' }, - devtool: env === 'production' ? false/*'source-map'*/ : 'source-map', // TODO: turn off debugger source map before release + devtool: env === 'production' ? 'source-map' : 'source-map', // TODO: turn off debugger source map before release optimization: { minimizer: [new TerserPlugin({ })],