From 4d8c716d0bb55ac6708f728079e32431b1d599a2 Mon Sep 17 00:00:00 2001
From: j <0x006A@0x2620.org>
Date: Thu, 9 May 2013 13:03:33 +0000
Subject: [PATCH] add localization to Ox
---
source/Ox.UI/js/Audio/AudioPlayer.js | 32 ++--
source/Ox.UI/js/Bar/Progressbar.js | 14 +-
source/Ox.UI/js/Bar/Resizebar.js | 6 +-
source/Ox.UI/js/Calendar/Calendar.js | 20 +--
source/Ox.UI/js/Calendar/CalendarEditor.js | 74 +++++----
source/Ox.UI/js/Code/DocPage.js | 4 +-
source/Ox.UI/js/Code/DocPanel.js | 6 +-
source/Ox.UI/js/Code/ExamplePage.js | 12 +-
source/Ox.UI/js/Code/ExamplePanel.js | 2 +-
source/Ox.UI/js/Form/ArrayEditable.js | 4 +-
source/Ox.UI/js/Form/FileInput.js | 10 +-
source/Ox.UI/js/Form/Filter.js | 150 +++++++++----------
source/Ox.UI/js/Form/FormPanel.js | 4 +-
source/Ox.UI/js/Form/InsertHTMLDialog.js | 40 ++---
source/Ox.UI/js/Form/Picker.js | 2 +-
source/Ox.UI/js/Form/PlacePicker.js | 2 +-
source/Ox.UI/js/Form/Spreadsheet.js | 12 +-
source/Ox.UI/js/Map/Map.js | 22 +--
source/Ox.UI/js/Map/MapEditor.js | 110 +++++++-------
source/Ox.UI/js/Video/AnnotationFolder.js | 4 +-
source/Ox.UI/js/Video/AnnotationPanel.js | 50 +++----
source/Ox.UI/js/Video/VideoEditor.js | 36 ++---
source/Ox.UI/js/Video/VideoEditorPlayer.js | 6 +-
source/Ox.UI/js/Video/VideoPlayer.js | 48 +++---
source/Ox.UI/js/Video/VideoTimelinePlayer.js | 10 +-
source/Ox.UI/js/Window/SortDialog.js | 6 +-
source/Ox/js/Constants.js | 12 +-
source/Ox/js/Locale.js | 6 +-
source/Ox/json/locale.ar.json | 56 +++++++
source/Ox/json/locale.de.json | 89 +++++++++++
tools/build/build.py | 2 +-
31 files changed, 499 insertions(+), 352 deletions(-)
create mode 100644 source/Ox/json/locale.ar.json
create mode 100644 source/Ox/json/locale.de.json
diff --git a/source/Ox.UI/js/Audio/AudioPlayer.js b/source/Ox.UI/js/Audio/AudioPlayer.js
index f2c32841..54ef7abf 100644
--- a/source/Ox.UI/js/Audio/AudioPlayer.js
+++ b/source/Ox.UI/js/Audio/AudioPlayer.js
@@ -105,13 +105,13 @@ Ox.AudioPlayer = function(options, self) {
{
id: 'current',
title: 'playPrevious',
- tooltip: 'Play Current Track'
+ tooltip: Ox._('Play Current Track')
},
Ox.extend({id: 'play'}, getButtonOptions('play')),
{
id: 'next',
title: 'playNext',
- tooltip: 'Play Next Track'
+ tooltip: Ox._('Play Next Track')
}
],
overlap: 'right',
@@ -134,7 +134,7 @@ Ox.AudioPlayer = function(options, self) {
self.$positionLabel = Ox.Label({
textAlign: 'center',
title: '00:00:00',
- tooltip: 'Show Remaining Time',
+ tooltip: Ox._('Show Remaining Time'),
width: 80
})
.addClass('OxPositionLabel')
@@ -160,7 +160,7 @@ Ox.AudioPlayer = function(options, self) {
self.$muteButton = Ox.Button({
overlap: 'right',
title: 'mute',
- tooltip: 'Mute',
+ tooltip: Ox._('Mute'),
type: 'image'
})
.addClass('OxMuteButton')
@@ -217,26 +217,26 @@ Ox.AudioPlayer = function(options, self) {
var options;
if (id == 'mute') {
options = self.options.muted || self.options.volume == 0
- ? {title: 'unmute', tooltip: 'Unmute'}
+ ? {title: 'unmute', tooltip: Ox._('Unmute')}
: self.options.volume < 1/3
- ? {title: 'volumeUp', tooltip: 'Mute'}
+ ? {title: 'volumeUp', tooltip: Ox._('Mute')}
: self.options.volume < 2/3
- ? {title: 'volumeDown', tooltip: 'Mute'}
- : {title: 'mute', tooltip: 'Mute'};
+ ? {title: 'volumeDown', tooltip: Ox._('Mute')}
+ : {title: 'mute', tooltip: Ox._('Mute')};
} else if (id == 'play') {
options = self.options.paused
- ? {title: 'play', tooltip: 'Play'}
- : {title: 'pause', tooltip: 'Pause'};
+ ? {title: 'play', tooltip: Ox._('Play')}
+ : {title: 'pause', tooltip: Ox._('Pause')};
} else if (id == 'repeat') {
options = self.options.repeat == 0
- ? {title: 'repeatNone', tooltip: 'Repeat All'}
+ ? {title: 'repeatNone', tooltip: Ox._('Repeat All')}
: self.options.repeat == -1
- ? {title: 'repeatAll', tooltip: 'Repeat One'}
- : {title: 'repeatOne', tooltip: 'Repeat None'};
+ ? {title: 'repeatAll', tooltip: Ox._('Repeat One')}
+ : {title: 'repeatOne', tooltip: Ox._('Repeat None')};
} else if (id == 'shuffle') {
options = self.options.shuffle
- ? {title: 'shuffleAll', tooltip: 'Don\'t Shuffle'}
- : {title: 'shuffleNone', tooltip: 'Shuffle'};
+ ? {title: 'shuffleAll', tooltip: Ox._('Don\'t Shuffle')}
+ : {title: 'shuffleNone', tooltip: Ox._('Shuffle')};
}
return options;
}
@@ -355,4 +355,4 @@ Ox.AudioPlayer = function(options, self) {
return that;
-};
\ No newline at end of file
+};
diff --git a/source/Ox.UI/js/Bar/Progressbar.js b/source/Ox.UI/js/Bar/Progressbar.js
index 45a0522f..2db32f01 100644
--- a/source/Ox.UI/js/Bar/Progressbar.js
+++ b/source/Ox.UI/js/Bar/Progressbar.js
@@ -86,7 +86,7 @@ Ox.Progressbar = function(options, self) {
if (self.options.showPauseButton) {
self.$pauseButton = Ox.Button({
style: 'symbol',
- tooltip: self.options.showTooltips ? ['Pause', 'Resume'] : '',
+ tooltip: self.options.showTooltips ? [Ox._('Pause'), Ox._('Resume')] : '',
type: 'image',
value: !self.options.paused ? 'pause' : 'redo',
values: ['pause', 'redo']
@@ -102,12 +102,12 @@ Ox.Progressbar = function(options, self) {
style: 'symbol',
type: 'image'
}, self.options.showRestartButton ? {
- tooltip: self.options.showTooltips ? ['Cancel', 'Restart'] : '',
+ tooltip: self.options.showTooltips ? [Ox._('Cancel'), Ox._('Restart')] : '',
value: 'close',
values: ['close', 'redo']
} : {
title: 'close',
- tooltip: self.options.showTooltips ? 'Cancel' : ''
+ tooltip: self.options.showTooltips ? Ox._('Cancel') : ''
}))
.bindEvent({
click: toggleCancelled
@@ -141,7 +141,7 @@ Ox.Progressbar = function(options, self) {
self.$progress.removeClass('OxAnimate');
($.browser.mozilla || $.browser.opera) && clearInterval(self.interval);
self.$time && self.$time.html(
- self.options.cancelled ? 'Cancelled' : 'Paused'
+ self.options.cancelled ? Ox._('Cancelled') : Ox._('Paused')
);
}
@@ -169,7 +169,7 @@ Ox.Progressbar = function(options, self) {
}, 1000 / 32);
}
self.$time && self.$time.html(
- self.options.progress ? Ox.formatDuration(that.status().remaining) : 'unknown'
+ self.options.progress ? Ox.formatDuration(that.status().remaining) : Ox._('unknown')
);
}
@@ -178,7 +178,7 @@ Ox.Progressbar = function(options, self) {
Math.floor(self.options.progress * 100) + '%'
);
self.$time && self.$time.html(
- self.options.progress ? Ox.formatDuration(that.status().remaining) : 'unknown'
+ self.options.progress ? Ox.formatDuration(that.status().remaining) : Ox._('unknown')
);
self.$progress.stop().animate({
width: Math.round(14 + Math.abs(self.options.progress) * (self.trackWidth - 16)) + 'px'
@@ -190,7 +190,7 @@ Ox.Progressbar = function(options, self) {
function stop() {
pause();
self.$time && self.$time.html(
- self.options.cancelled ? 'Cancelled' : 'Complete'
+ self.options.cancelled ? Ox._('Cancelled') : Ox._('Complete')
);
if (self.$pauseButton && (self.options.cancelled || self.complete)) {
self.$pauseButton.options({disabled: true});
diff --git a/source/Ox.UI/js/Bar/Resizebar.js b/source/Ox.UI/js/Bar/Resizebar.js
index d1586bdc..ad7a5950 100644
--- a/source/Ox.UI/js/Bar/Resizebar.js
+++ b/source/Ox.UI/js/Bar/Resizebar.js
@@ -147,13 +147,13 @@ Ox.Resizebar = function(options, self) {
function getTitle() {
var title = '';
if (self.options.collapsed) {
- title = 'Click to show';
+ title = Ox._('Click to show');
} else {
if (self.options.resizable) {
- title = 'Drag to resize'
+ title = Ox._('Drag to resize');
}
if (self.options.collapsible) {
- title = (title ? title + ' or c' : 'C') + 'lick to hide'
+ title = Ox._((title ? title + ' or c' : 'C') + 'lick to hide');
}
}
if (title && Ox.isString(self.options.tooltip)) {
diff --git a/source/Ox.UI/js/Calendar/Calendar.js b/source/Ox.UI/js/Calendar/Calendar.js
index 860913b4..45b4ac82 100644
--- a/source/Ox.UI/js/Calendar/Calendar.js
+++ b/source/Ox.UI/js/Calendar/Calendar.js
@@ -152,8 +152,8 @@ Ox.Calendar = function(options, self) {
},
name: function(i) {
return i > -2
- ? Ox.formatOrdinal(i + 2) + ' Millennium'
- : Ox.formatOrdinal(-i - 1) + ' Millennium BC'
+ ? Ox._('{0} Millennium', Ox.formatOrdinal(i + 2))
+ : Ox._('{0} Millennium BC', Ox.formatOrdinal(-i - 1))
},
value: function(date) {
return Math.floor(date.getUTCFullYear() / 1000) - 1;
@@ -167,8 +167,8 @@ Ox.Calendar = function(options, self) {
},
name: function(i) {
return i > -20
- ? Ox.formatOrdinal(i + 20) + ' Century'
- : Ox.formatOrdinal(-i - 19) + ' Century BC'
+ ? Ox._('{0} Century', Ox.formatOrdinal(i + 20))
+ : Ox._('{0} Century BC', Ox.formatOrdinal(-i - 19))
},
value: function(date) {
return Math.floor(date.getUTCFullYear() / 100) - 19;
@@ -334,10 +334,10 @@ Ox.Calendar = function(options, self) {
self.$menu = Ox.Select({
items: [
- {id: 'date', title: 'Show Dates'},
- {id: 'place', title: 'Show Places'},
- {id: 'person', title: 'Show People'},
- {id: 'other', title: 'Show Other'}
+ {id: 'date', title: Ox._('Show Dates')},
+ {id: 'place', title: Ox._('Show Places')},
+ {id: 'person', title: Ox._('Show People')},
+ {id: 'other', title: Ox._('Show Other')}
],
max: -1,
min: 1,
@@ -536,7 +536,7 @@ Ox.Calendar = function(options, self) {
self.$eventControls = {
name: Ox.Label({
textAlign: 'center',
- tooltip: 'Click to pan, doubleclick to zoom'
+ tooltip: Ox._('Click to pan, doubleclick to zoom')
})
.addClass('OxEventControl OxEventName')
.css({bottom: 20 + (self.options.showZoombar * 16) + 'px'})
@@ -551,7 +551,7 @@ Ox.Calendar = function(options, self) {
.appendTo(that),
deselectButton: Ox.Button({
title: 'close',
- tooltip: 'Deselect',
+ tooltip: Ox._('Deselect'),
type: 'image'
})
.addClass('OxEventControl OxEventDeselectButton')
diff --git a/source/Ox.UI/js/Calendar/CalendarEditor.js b/source/Ox.UI/js/Calendar/CalendarEditor.js
index 3a554050..dd74de9e 100644
--- a/source/Ox.UI/js/Calendar/CalendarEditor.js
+++ b/source/Ox.UI/js/Calendar/CalendarEditor.js
@@ -76,7 +76,7 @@ Ox.CalendarEditor = function(options, self) {
},
id: 'type',
operator: '+',
- title: 'Type',
+ title: Ox._('Type'),
titleImage: 'icon',
visible: true,
width: 16
@@ -90,7 +90,7 @@ Ox.CalendarEditor = function(options, self) {
id: 'name',
operator: '+',
removable: false,
- title: 'Name',
+ title: Ox._('Name'),
visible: true,
width: 144
},
@@ -101,7 +101,7 @@ Ox.CalendarEditor = function(options, self) {
},
id: 'alternativeNames',
operator: '+',
- title: 'Alternative Names',
+ title: Ox._('Alternative Names'),
visible: true,
width: 144
},
@@ -111,7 +111,7 @@ Ox.CalendarEditor = function(options, self) {
sort: function(value) {
return Ox.parseDate(value);
},
- title: 'Start',
+ title: Ox._('Start'),
visible: true,
width: 144
},
@@ -121,7 +121,7 @@ Ox.CalendarEditor = function(options, self) {
sort: function(value) {
return Ox.parseDate(value);
},
- title: 'End',
+ title: Ox._('End'),
visible: true,
width: 144
},
@@ -140,7 +140,7 @@ Ox.CalendarEditor = function(options, self) {
sort: function(value, data) {
return Ox.parseDate(data.end) - Ox.parseDate(data.start);
},
- title: 'Duration',
+ title: Ox._('Duration'),
visible: true,
width: 256
},
@@ -150,7 +150,7 @@ Ox.CalendarEditor = function(options, self) {
},
id: 'user',
operator: '+',
- title: 'User',
+ title: Ox._('User'),
visible: false,
width: 96
},
@@ -160,7 +160,7 @@ Ox.CalendarEditor = function(options, self) {
},
id: 'created',
operator: '-',
- title: 'Date Created',
+ title: Ox._('Date Created'),
visible: false,
width: 128
},
@@ -170,7 +170,7 @@ Ox.CalendarEditor = function(options, self) {
},
id: 'modified',
operator: '-',
- title: 'Date Modified',
+ title: Ox._('Date Modified'),
visible: false,
width: 128
}
@@ -180,7 +180,7 @@ Ox.CalendarEditor = function(options, self) {
align: 'right',
id: 'matches',
operator: '-',
- title: 'Matches',
+ title: Ox._('Matches'),
visible: true,
width: 64
});
@@ -193,9 +193,9 @@ Ox.CalendarEditor = function(options, self) {
elements: [
self.$findSelect = Ox.Select({
items: [
- {id: 'all', title: 'Find: All'},
- {id: 'name', title: 'Find: Name'},
- {id: 'alternativeNames', title: 'Find: Alternative Names'},
+ {id: 'all', title: Ox._('Find: All')},
+ {id: 'name', title: Ox._('Find: Name')},
+ {id: 'alternativeNames', title: Ox._('Find: Alternative Names')},
],
overlap: 'right',
type: 'image'
@@ -209,7 +209,7 @@ Ox.CalendarEditor = function(options, self) {
}),
self.$findInput = Ox.Input({
clear: true,
- placeholder: 'Find in List',
+ placeholder: Ox._('Find in List'),
width: 234
})
.bindEvent({
@@ -271,9 +271,7 @@ Ox.CalendarEditor = function(options, self) {
self.$status = Ox.Element()
.css({paddingTop: '2px', margin: 'auto', fontSize: '9px', textAlign: 'center'})
.html(
- Ox.formatNumber(self.options.events.length) + ' Event' + (
- self.options.events.length == 1 ? '' : 's'
- )
+ Ox.formatCount(self.options.events, Ox._('Event'), Ox._('Events'))
)
.appendTo(self.$listStatusbar);
@@ -320,7 +318,7 @@ Ox.CalendarEditor = function(options, self) {
.appendTo(self.$eventTitle);
self.$deselectEventButton = Ox.Button({
title: 'close',
- tooltip: 'Done',
+ tooltip: Ox._('Done'),
type: 'image'
})
.css({float: 'left', margin: '4px 4px 4px 0'})
@@ -339,13 +337,13 @@ Ox.CalendarEditor = function(options, self) {
items: [
self.$nameInput = Ox.Input({
id: 'name',
- label: 'Name',
+ label: Ox._('Name'),
labelWidth: 64,
width: 240
}),
self.$alternativeNamesInput = Ox.ArrayInput({
id: 'alternativeNames',
- label: 'Alternative Names',
+ label: Ox._('Alternative Names'),
max: 10,
values: [],
width: 240
@@ -353,31 +351,31 @@ Ox.CalendarEditor = function(options, self) {
Ox.Select({
id: 'type',
items: [
- {id: 'date', title: 'Date'},
- {id: 'place', title: 'Place'},
- {id: 'person', title: 'Person'},
- {id: 'other', title: 'Other'}
+ {id: 'date', title: Ox._('Date')},
+ {id: 'place', title: Ox._('Place')},
+ {id: 'person', title: Ox._('Person')},
+ {id: 'other', title: Ox._('Other')}
],
- label: 'Type',
+ label: Ox._('Type'),
labelWidth: 64,
width: 240
}),
self.$startInput = Ox.Input({
id: 'start',
- label: 'Start',
+ label: Ox._('Start'),
labelWidth: 64,
width: 240
}),
self.$endInput = Ox.Input({
id: 'end',
- label: 'End',
+ label: Ox._('End'),
labelWidth: 64,
width: 240
}),
self.$durationInput = Ox.Input({
disabled: true,
id: 'durationText',
- label: 'Duration',
+ label: Ox._('Duration'),
labelWidth: 64,
width: 240
})
@@ -435,7 +433,7 @@ Ox.CalendarEditor = function(options, self) {
self.$matchesInput = Ox.Input({
disabled: true,
id: 'matches',
- label: 'Matches',
+ label: Ox._('Matches'),
labelWidth: 64,
type: 'int',
width: 240
@@ -450,7 +448,7 @@ Ox.CalendarEditor = function(options, self) {
});
self.$removeEventButton = Ox.Button({
- title: 'Remove Event',
+ title: Ox._('Remove Event'),
width: 90
})
.css({float: 'left', margin: '4px'})
@@ -461,7 +459,7 @@ Ox.CalendarEditor = function(options, self) {
.appendTo(self.$eventStatusbar);
self.$newEventButton = Ox.Button({
- title: 'New Event',
+ title: Ox._('New Event'),
width: 70
})
.css({float: 'right', margin: '4px'})
@@ -472,13 +470,13 @@ Ox.CalendarEditor = function(options, self) {
if (self.options.mode == 'define') {
self.$defineEventButton = Ox.Button({
- title: 'Define Event',
+ title: Ox._('Define Event'),
width: 80
})
.css({float: 'right', margin: '4px 0 4px 0'})
.bindEvent({
click: function() {
- if (this.options('title') == 'Define Event') {
+ if (this.options('title') == Ox._('Define Event')) {
defineEvent();
} else {
clearEvent();
@@ -611,7 +609,7 @@ Ox.CalendarEditor = function(options, self) {
alternativeNames: [], type: '',
start: '', end: ''
};
- self.$defineEventButton.options({disabled: true, title: 'Clear Event'});
+ self.$defineEventButton.options({disabled: true, title: Ox._('Clear Event')});
self.options.editEvent(encodeValues(values), function() {
Ox.forEach(values, function(value, key) {
self.$list.value(self.options.selected, key, value);
@@ -619,7 +617,7 @@ Ox.CalendarEditor = function(options, self) {
self.$list.reloadList();
self.$calendar.removeEvent();
self.$eventForm.hide();
- self.$defineEventButton.options({disabled: false, title: 'Define Event'});
+ self.$defineEventButton.options({disabled: false, title: Ox._('Define Event')});
});
}
@@ -647,7 +645,7 @@ Ox.CalendarEditor = function(options, self) {
event.end = Ox.formatDate(endTime, '%Y-%m-%d %H:%M:%S', true);
self.$list.options({items: Ox.clone(self.options.events, true)});
self.$calendar.addEvent(event);
- self.$defineEventButton.options({title: 'Clear Event'});
+ self.$defineEventButton.options({title: Ox._('Clear Event')});
}
function editEvent(key, value) {
@@ -698,9 +696,7 @@ Ox.CalendarEditor = function(options, self) {
function initList(data) {
self.$status.html(
- Ox.formatNumber(data.items) + ' Event' + (
- data.items == 1 ? '' : 's'
- )
+ Ox.formatCount(data.items, Ox._('Event'), Ox._('Events'))
);
}
diff --git a/source/Ox.UI/js/Code/DocPage.js b/source/Ox.UI/js/Code/DocPage.js
index cb4f615a..a35cc5ea 100644
--- a/source/Ox.UI/js/Code/DocPage.js
+++ b/source/Ox.UI/js/Code/DocPage.js
@@ -28,7 +28,7 @@ Ox.DocPage = function(options, self) {
self.$homeButton = Ox.Button({
title: 'home',
- tooltip: 'Home',
+ tooltip: Ox._('Home'),
type: 'image'
})
.css({float: 'left', margin: '4px 2px 4px 4px'})
@@ -56,7 +56,7 @@ Ox.DocPage = function(options, self) {
if (self.options.item.examples) {
self.$examplesMenu = Ox.MenuButton({
items: self.options.item.examples,
- title: 'Examples...',
+ title: Ox._('Examples...'),
})
.css({float: 'right', margin: '4px 4px 4px 2px'})
.bindEvent({
diff --git a/source/Ox.UI/js/Code/DocPanel.js b/source/Ox.UI/js/Code/DocPanel.js
index c011a59b..bf7de07d 100644
--- a/source/Ox.UI/js/Code/DocPanel.js
+++ b/source/Ox.UI/js/Code/DocPanel.js
@@ -86,7 +86,7 @@ Ox.DocPanel = function(options, self) {
.appendTo(self.$toolbar);
if (!self.options.results) {
self.options.results = {};
- self.$testsButton = Ox.Button({title: 'Run Tests'})
+ self.$testsButton = Ox.Button({title: Ox._('Run Tests')})
.css({margin: '4px auto'})
.bindEvent({click: runTests})
.appendTo(self.$toolbar);
@@ -152,7 +152,7 @@ Ox.DocPanel = function(options, self) {
var path = self.options.examplesPath + example;
Ox.get(path + '/index.html', function(html) {
var match = html.match(/
(.+)<\/title>/),
- title = match ? match[1] : 'Untitled';
+ title = match ? match[1] : Ox._('Untitled');
Ox.get(path + '/js/example.js', function(js) {
var references = js.match(self.options.references);
if (references) {
@@ -386,7 +386,7 @@ Ox.DocPanel = function(options, self) {
width: 256,
textAlign: 'center'
})
- .html('Generating Documentation...')
+ .html(Ox._('Generating Documentation...'))
.appendTo(self.$page);
}
diff --git a/source/Ox.UI/js/Code/ExamplePage.js b/source/Ox.UI/js/Code/ExamplePage.js
index 3d899b33..e731bf98 100644
--- a/source/Ox.UI/js/Code/ExamplePage.js
+++ b/source/Ox.UI/js/Code/ExamplePage.js
@@ -33,7 +33,7 @@ Ox.ExamplePage = function(options, self) {
self.$homeButton = Ox.Button({
title: 'home',
- tooltip: 'Home',
+ tooltip: Ox._('Home'),
type: 'image'
})
.css({float: 'left', margin: '4px 2px 4px 4px'})
@@ -54,7 +54,7 @@ Ox.ExamplePage = function(options, self) {
self.$openButton = Ox.Button({
disabled: self.options.selected == 'source',
title: 'open',
- tooltip: 'Open in New Tab',
+ tooltip: Ox._('Open in New Tab'),
type: 'image'
})
.css({float: 'right', margin: '4px 4px 4px 2px'})
@@ -68,7 +68,7 @@ Ox.ExamplePage = function(options, self) {
self.$reloadButton = Ox.Button({
disabled: self.options.selected == 'source',
title: 'redo',
- tooltip: 'Reload',
+ tooltip: Ox._('Reload'),
type: 'image'
})
.css({float: 'right', margin: '4px 2px 4px 2px'})
@@ -82,7 +82,7 @@ Ox.ExamplePage = function(options, self) {
self.$switchButton = Ox.Button({
disabled: self.options.selected == 'source',
title: 'switch',
- tooltip: 'Switch Theme',
+ tooltip: Ox._('Switch Theme'),
type: 'image'
})
.css({float: 'right', margin: '4px 2px 4px 2px'})
@@ -104,12 +104,12 @@ Ox.ExamplePage = function(options, self) {
buttons: [
{
id: 'source',
- title: 'View Source',
+ title: Ox._('View Source'),
width: 80
},
{
id: 'live',
- title: 'View Live',
+ title: Ox._('View Live'),
width: 80
}
],
diff --git a/source/Ox.UI/js/Code/ExamplePanel.js b/source/Ox.UI/js/Code/ExamplePanel.js
index e136e56e..1b8bd859 100644
--- a/source/Ox.UI/js/Code/ExamplePanel.js
+++ b/source/Ox.UI/js/Code/ExamplePanel.js
@@ -119,7 +119,7 @@ Ox.ExamplePanel = function(options, self) {
var match = html.match(/(.+)<\/title>/);
item.title = match ? match[1] : 'Untitled';
match = html.match(//);
- item.sectionTitle = match ? match[1] : 'Untitled';
+ item.sectionTitle = match ? match[1] : Ox._('Untitled');
Ox.get(item.js, function(js) {
var references = js.match(self.options.references);
item.references = references ? Ox.unique(references).sort(function(a, b) {
diff --git a/source/Ox.UI/js/Form/ArrayEditable.js b/source/Ox.UI/js/Form/ArrayEditable.js
index ae27cc90..6c65d882 100644
--- a/source/Ox.UI/js/Form/ArrayEditable.js
+++ b/source/Ox.UI/js/Form/ArrayEditable.js
@@ -172,8 +172,8 @@ Ox.ArrayEditable = function(options, self) {
: ''
) + (
self.options.editable
- ? 'Click to select' + (
- item.editable ? ', doubleclick to edit' : ''
+ ? Ox._('Click to select') + (
+ item.editable ? Ox._(', doubleclick to edit') : ''
)
: ''
),
diff --git a/source/Ox.UI/js/Form/FileInput.js b/source/Ox.UI/js/Form/FileInput.js
index c4b992c7..93880273 100644
--- a/source/Ox.UI/js/Form/FileInput.js
+++ b/source/Ox.UI/js/Form/FileInput.js
@@ -131,7 +131,7 @@ Ox.FileInput = function(options, self) {
title: 'close',
type: 'image'
})
- .attr({title: 'Remove File'})
+ .attr({title: Ox._('Remove File')})
.css({margin: '-1px -4px 0 0'})
.bindEvent({
click: function() {
@@ -206,7 +206,7 @@ Ox.FileInput = function(options, self) {
}
self.$input = renderInput();
} else {
- self.$button.options({title: 'close'}).attr({title: 'Clear'});
+ self.$button.options({title: 'close'}).attr({title: Ox._('Clear')});
self.$input.remove();
}
that.triggerEvent('change', {value: self.options.value});
@@ -257,9 +257,9 @@ Ox.FileInput = function(options, self) {
function getTitleText() {
var length = self.options.value.length
return length == 0
- ? 'No file' + (self.multiple ? 's' : '') + ' selected'
+ ? Ox._('No file' + (self.multiple ? 's' : '') + ' selected')
: self.multiple
- ? length + ' file' + (length == 1 ? '' : 's')
+ ? Ox.formatCount(length, Ox._('file'), Ox._('files'))
: self.options.value[0].name;
}
@@ -287,7 +287,7 @@ Ox.FileInput = function(options, self) {
return $('')
.attr(
Ox.extend({
- title: self.multiple ? 'Add Files' : 'Select File',
+ title: self.multiple ? Ox._('Add Files') : Ox._('Select File'),
type: 'file'
}, self.multiple ? {
multiple: true
diff --git a/source/Ox.UI/js/Form/Filter.js b/source/Ox.UI/js/Form/Filter.js
index 50da0889..ceabf951 100644
--- a/source/Ox.UI/js/Form/Filter.js
+++ b/source/Ox.UI/js/Form/Filter.js
@@ -48,66 +48,66 @@ Ox.Filter = function(options, self) {
self.conditionOperators = {
boolean: [
- {id: '=', title: 'is'},
- {id: '!=', title: 'is not'}
+ {id: '=', title: Ox._('is')},
+ {id: '!=', title: Ox._('is not')}
],
date: [
- {id: '=', title: 'is'},
- {id: '!=', title: 'is not'},
- {id: '<', title: 'is before'},
- {id: '!<', title: 'is not before'},
- {id: '>', title: 'is after'},
- {id: '!>', title: 'is not after'},
- {id: '=,', title: 'is between'},
- {id: '!=,', title: 'is not between'}
+ {id: '=', title: Ox._('is')},
+ {id: '!=', title: Ox._('is not')},
+ {id: '<', title: Ox._('is before')},
+ {id: '!<', title: Ox._('is not before')},
+ {id: '>', title: Ox._('is after')},
+ {id: '!>', title: Ox._('is not after')},
+ {id: '=,', title: Ox._('is between')},
+ {id: '!=,', title: Ox._('is not between')}
],
'enum': [
- {id: '=', title: 'is'},
- {id: '!=', title: 'is not'},
- {id: '<', title: 'is less than'},
- {id: '!<', title: 'is not less than'},
- {id: '>', title: 'is greater than'},
- {id: '!>', title: 'is not greater than'},
- {id: '=,', title: 'is between'},
- {id: '!=,', title: 'is not between'}
+ {id: '=', title: Ox._('is')},
+ {id: '!=', title: Ox._('is not')},
+ {id: '<', title: Ox._('is less than')},
+ {id: '!<', title: Ox._('is not less than')},
+ {id: '>', title: Ox._('is greater than')},
+ {id: '!>', title: Ox._('is not greater than')},
+ {id: '=,', title: Ox._('is between')},
+ {id: '!=,', title: Ox._('is not between')}
],
list: [
- {id: '==', title: 'is'},
- {id: '!==', title: 'is not'}
+ {id: '==', title: Ox._('is')},
+ {id: '!==', title: Ox._('is not')}
],
number: [
- {id: '=', title: 'is'},
- {id: '!=', title: 'is not'},
- {id: '<', title: 'is less than'},
- {id: '!<', title: 'is not less than'},
- {id: '>', title: 'is greater than'},
- {id: '!>', title: 'is not greater than'},
- {id: '=,', title: 'is between'},
- {id: '!=,', title: 'is not between'}
+ {id: '=', title: Ox._('is')},
+ {id: '!=', title: Ox._('is not')},
+ {id: '<', title: Ox._('is less than')},
+ {id: '!<', title: Ox._('is not less than')},
+ {id: '>', title: Ox._('is greater than')},
+ {id: '!>', title: Ox._('is not greater than')},
+ {id: '=,', title: Ox._('is between')},
+ {id: '!=,', title: Ox._('is not between')}
],
string: [
- {id: '==', title: 'is'},
- {id: '!==', title: 'is not'},
- {id: '=', title: 'contains'},
- {id: '!=', title: 'does not contain'},
- {id: '^', title: 'starts with'},
- {id: '!^', title: 'does not start with'},
- {id: '$', title: 'ends with'},
- {id: '!$', title: 'does not end with'}
+ {id: '==', title: Ox._('is')},
+ {id: '!==', title: Ox._('is not')},
+ {id: '=', title: Ox._('contains')},
+ {id: '!=', title: Ox._('does not contain')},
+ {id: '^', title: Ox._('starts with')},
+ {id: '!^', title: Ox._('does not start with')},
+ {id: '$', title: Ox._('ends with')},
+ {id: '!$', title: Ox._('does not end with')}
],
text: [
- {id: '=', title: 'contains'},
- {id: '!=', title: 'does not contain'}
+ {id: '=', title: Ox._('contains')},
+ {id: '!=', title: Ox._('does not contain')}
],
year: [
- {id: '==', title: 'is'},
- {id: '!==', title: 'is not'},
- {id: '<', title: 'is before'},
- {id: '!<', title: 'is not before'},
- {id: '>', title: 'is after'},
- {id: '!>', title: 'is not after'},
- {id: '=,', title: 'is between'},
- {id: '!=,', title: 'is not between'}
+ {id: '==', title: Ox._('is')},
+ {id: '!==', title: Ox._('is not')},
+ {id: '<', title: Ox._('is before')},
+ {id: '!<', title: Ox._('is not before')},
+ {id: '>', title: Ox._('is after')},
+ {id: '!>', title: Ox._('is not after')},
+ {id: '=,', title: Ox._('is between')},
+ {id: '!=,', title: Ox._('is not between')}
]
};
self.defaultValue = {
@@ -124,8 +124,8 @@ Ox.Filter = function(options, self) {
year: new Date().getFullYear().toString()
};
self.operators = [
- {id: '&', title: 'all'},
- {id: '|', title: 'any'}
+ {id: '&', title: Ox._('all')},
+ {id: '|', title: Ox._('any')}
];
if (!self.options.query.conditions.length) {
@@ -141,7 +141,7 @@ Ox.Filter = function(options, self) {
self.$operator = Ox.FormElementGroup({
elements: [
Ox.Label({
- title: 'Match',
+ title: Ox._('Match'),
overlap: 'right',
width: 48
}),
@@ -157,7 +157,7 @@ Ox.Filter = function(options, self) {
}),
Ox.Label({
overlap: 'left',
- title: 'of the following conditions',
+ title: Ox._('of the following conditions'),
width: 160
})
],
@@ -180,7 +180,7 @@ Ox.Filter = function(options, self) {
})
],
separators: [
- {title: 'Save as Smart List', width: 112}
+ {title: Ox._('Save as Smart List'), width: 112}
]
});
@@ -197,10 +197,10 @@ Ox.Filter = function(options, self) {
}),
Ox.Select({
items: [
- {id: 'items', title: 'items'},
+ {id: 'items', title: Ox._('items')},
{},
- {id: 'hours', title: 'hours'},
- {id: 'days', title: 'days'},
+ {id: 'hours', title: Ox._('hours')},
+ {id: 'days', title: Ox._('days')},
{},
{id: 'GB', title: 'GB'}
],
@@ -219,14 +219,14 @@ Ox.Filter = function(options, self) {
elements: [
Ox.Select({
items: [
- {id: 'ascending', title: 'ascending'},
- {id: 'descending', title: 'descending'}
+ {id: 'ascending', title: Ox._('ascending')},
+ {id: 'descending', title: Ox._('descending')}
],
width: 128
}),
Ox.Label({
overlap: 'left',
- title: 'order',
+ title: Ox._('order'),
width: 72
})
],
@@ -235,9 +235,9 @@ Ox.Filter = function(options, self) {
})
],
separators: [
- {title: 'Limit to', width: 56},
- {title: 'sorted by', width: 60}, // fixme: this is odd, should be 64
- {title: 'in', width: 32}
+ {title: Ox._('Limit to'), width: 56},
+ {title: Ox._('sorted by'), width: 60}, // fixme: this is odd, should be 64
+ {title: Ox._('in'), width: 32}
]
});
@@ -258,14 +258,14 @@ Ox.Filter = function(options, self) {
elements: [
Ox.Select({
items: [
- {id: 'ascending', title: 'ascending'},
- {id: 'descending', title: 'descending'}
+ {id: 'ascending', title: Ox._('ascending')},
+ {id: 'descending', title: Ox._('descending')}
],
width: 128
}),
Ox.Label({
overlap: 'left',
- title: 'order',
+ title: Ox._('order'),
width: 72
})
],
@@ -274,9 +274,9 @@ Ox.Filter = function(options, self) {
})
],
separators: [
- {title: 'View', width: 48},
- {title: 'sorted by', width: 60},
- {title: 'in', width: 32}
+ {title: Ox._('View'), width: 48},
+ {title: Ox._('sorted by'), width: 60},
+ {title: Ox._('in'), width: 32}
]
});
@@ -453,9 +453,9 @@ Ox.Filter = function(options, self) {
Ox.Button({
id: 'remove',
title: self.options.query.conditions.length == 1 ? 'close' : 'remove',
- tooltip: self.options.query.conditions.length == 1 ? 'Reset this condition'
- : isGroup ? 'Remove this group of conditions'
- : 'Remove this condition',
+ tooltip: self.options.query.conditions.length == 1 ? Ox._('Reset this condition')
+ : isGroup ? Ox._('Remove this group of conditions')
+ : Ox._('Remove this condition'),
type: 'image'
})
.css({margin: '0 4px 0 ' + (isGroup ? '292px' : '8px')}) // fixme: 296 is probably correct, but labels seem to be too wide
@@ -483,8 +483,8 @@ Ox.Filter = function(options, self) {
}),
Ox.Button({
id: 'add',
- title: 'add',
- tooltip: 'Add a condition',
+ title: Ox._('add'),
+ tooltip: Ox._('Add a condition'),
type: 'image'
})
.css({margin: '0 ' + (subpos == -1 ? '4px' : '0') + ' 0 4px'})
@@ -504,8 +504,8 @@ Ox.Filter = function(options, self) {
], subpos == -1 ? [
Ox.Button({
id: 'addgroup',
- title: 'bracket',
- tooltip: 'Add a group of conditions',
+ title: Ox._('bracket'),
+ tooltip: Ox._('Add a group of conditions'),
type: 'image'
})
.css({margin: '0 0 0 4px'})
@@ -587,7 +587,7 @@ Ox.Filter = function(options, self) {
renderInput(condition, 1).options({id: 'end'})
],
separators: [
- {title: 'and', width: 32}
+ {title: Ox._('and'), width: 32}
]
})
).bindEvent({
@@ -654,7 +654,7 @@ Ox.Filter = function(options, self) {
}),
Ox.Label({
overlap: 'left',
- title: 'of the following conditions',
+ title: Ox._('of the following conditions'),
width: 160
})
],
diff --git a/source/Ox.UI/js/Form/FormPanel.js b/source/Ox.UI/js/Form/FormPanel.js
index ff4d9890..4cf5c331 100644
--- a/source/Ox.UI/js/Form/FormPanel.js
+++ b/source/Ox.UI/js/Form/FormPanel.js
@@ -40,7 +40,7 @@ Ox.FormPanel = function(options, self) {
})
},
id: 'valid',
- title: 'Valid',
+ title: Ox._('Valid'),
visible: true,
width: 16
},
@@ -51,7 +51,7 @@ Ox.FormPanel = function(options, self) {
}) + 1) + '. ' + value;
},
id: 'title',
- title: 'Title',
+ title: Ox._('Title'),
visible: true,
width: 240
}
diff --git a/source/Ox.UI/js/Form/InsertHTMLDialog.js b/source/Ox.UI/js/Form/InsertHTMLDialog.js
index 7a7ce956..2bc2f08a 100644
--- a/source/Ox.UI/js/Form/InsertHTMLDialog.js
+++ b/source/Ox.UI/js/Form/InsertHTMLDialog.js
@@ -22,24 +22,24 @@ Ox.InsertHTMLDialog = function(options, self) {
? 'textarea' : 'input';
self.items = [
- {id: 'img', title: 'Image'},
- {id: 'a', title: 'Link'},
- {id: 'li', title: 'List'},
+ {id: 'img', title: Ox._('Image')},
+ {id: 'a', title: Ox._('Link')},
+ {id: 'li', title: Ox._('List')},
{},
- {id: 'blockquote', title: 'Blockquote'},
- {id: 'h1', title: 'Headline'},
- {id: 'p', title: 'Paragraph'},
- {id: 'div', title: 'Right-to-Left'},
+ {id: 'blockquote', title: Ox._('Blockquote')},
+ {id: 'h1', title: Ox._('Headline')},
+ {id: 'p', title: Ox._('Paragraph')},
+ {id: 'div', title: Ox._('Right-to-Left')},
{},
- {id: 'b', title: 'Bold'},
- {id: 'i', title: 'Italic'},
- {id: 'code', title: 'Monospace'},
- {id: 's', title: 'Strike'},
- {id: 'sub', title: 'Subscript'},
- {id: 'sup', title: 'Superscript'},
- {id: 'u', title: 'Underline'},
+ {id: 'b', title: Ox._('Bold')},
+ {id: 'i', title: Ox._('Italic')},
+ {id: 'code', title: Ox._('Monospace')},
+ {id: 's', title: Ox._('Strike')},
+ {id: 'sub', title: Ox._('Subscript')},
+ {id: 'sup', title: Ox._('Superscript')},
+ {id: 'u', title: Ox._('Underline')},
{},
- {id: 'br', title: 'Linebreak'}
+ {id: 'br', title: Ox._('Linebreak')}
].map(function(item, i) {
var form, format;
if (item.id == 'img') {
@@ -81,8 +81,8 @@ Ox.InsertHTMLDialog = function(options, self) {
Ox.Select({
id: 'style',
items: [
- {id: 'ul', title: 'Bullets'},
- {id: 'ol', title: 'Numbers'}
+ {id: 'ul', title: Ox._('Bullets')},
+ {id: 'ol', title: Ox._('Numbers')}
],
label: 'Style',
labelWidth: 128,
@@ -168,7 +168,7 @@ Ox.InsertHTMLDialog = function(options, self) {
buttons: [
Ox.Button({
id: 'cancel',
- title: 'Cancel',
+ title: Ox._('Cancel'),
width: 64
})
.bindEvent({
@@ -178,7 +178,7 @@ Ox.InsertHTMLDialog = function(options, self) {
}),
Ox.Button({
id: 'insert',
- title: 'Insert',
+ title: Ox._('Insert'),
width: 64
})
.bindEvent({
@@ -201,7 +201,7 @@ Ox.InsertHTMLDialog = function(options, self) {
content: self.$content,
height: 184,
keys: {enter: 'insert', escape: 'cancel'},
- title: 'Insert HTML',
+ title: Ox._('Insert HTML'),
width: 416 + Ox.UI.SCROLLBAR_SIZE
});
diff --git a/source/Ox.UI/js/Form/Picker.js b/source/Ox.UI/js/Form/Picker.js
index c2d84d1c..f401097e 100644
--- a/source/Ox.UI/js/Form/Picker.js
+++ b/source/Ox.UI/js/Form/Picker.js
@@ -62,7 +62,7 @@ Ox.Picker = function(options, self) {
.appendTo(self.$bar);
self.$doneButton = Ox.Button({
- title: 'Done',
+ title: Ox._('Done'),
width: 48
})
.click(hideMenu)
diff --git a/source/Ox.UI/js/Form/PlacePicker.js b/source/Ox.UI/js/Form/PlacePicker.js
index 3c706c6c..4c906d1d 100644
--- a/source/Ox.UI/js/Form/PlacePicker.js
+++ b/source/Ox.UI/js/Form/PlacePicker.js
@@ -36,7 +36,7 @@ Ox.PlacePicker = function(options, self) {
self.$input = Ox.Input({
clear: true,
id: self.options.id + 'Input',
- placeholder: 'Find',
+ placeholder: Ox._('Find'),
width: 256
})
.bindEvent('submit', findPlace)
diff --git a/source/Ox.UI/js/Form/Spreadsheet.js b/source/Ox.UI/js/Form/Spreadsheet.js
index 1d376e8f..45e2baf6 100644
--- a/source/Ox.UI/js/Form/Spreadsheet.js
+++ b/source/Ox.UI/js/Form/Spreadsheet.js
@@ -128,9 +128,9 @@ Ox.Spreadsheet = function(options, self) {
style: 'square',
type: 'image',
items: [
- {id: 'before', title: 'Add column before'},
- {id: 'after', title: 'Add column after'},
- {id: 'remove', title: 'Remove this column', disabled: self.columns == 1}
+ {id: 'before', title: Ox._('Add column before')},
+ {id: 'after', title: Ox._('Add column after')},
+ {id: 'remove', title: Ox._('Remove this column'), disabled: self.columns == 1}
]
})
.bindEvent({
@@ -166,9 +166,9 @@ Ox.Spreadsheet = function(options, self) {
style: 'square',
type: 'image',
items: [
- {id: 'before', title: 'Add row above'},
- {id: 'after', title: 'Add row below'},
- {id: 'remove', title: 'Remove this row', disabled: self.rows == 1}
+ {id: 'before', title: Ox._('Add row above')},
+ {id: 'after', title: Ox._('Add row below')},
+ {id: 'remove', title: Ox._('Remove this row'), disabled: self.rows == 1}
]
})
.bindEvent({
diff --git a/source/Ox.UI/js/Map/Map.js b/source/Ox.UI/js/Map/Map.js
index e8e1ed6b..849e3b63 100644
--- a/source/Ox.UI/js/Map/Map.js
+++ b/source/Ox.UI/js/Map/Map.js
@@ -290,20 +290,20 @@ Ox.Map = function(options, self) {
{
id: 'toggleLabels',
title: self.options.showLabels
- ? ['Hide Labels', 'Show Labels']
- : ['Show Labels', 'Hide Labels'],
+ ? [Ox._('Hide Labels'), Ox._('Show Labels')]
+ : [Ox._('Show Labels'), Ox._('Hide Labels')],
keyboard: 'l'
},
{
id: 'toggleControls',
title: self.options.showControls
- ? ['Hide Controls', 'Show Controls']
- : ['Show Controls', 'Hide Controls'],
+ ? [Ox._('Hide Controls'), Ox._('Show Controls')]
+ : [Ox._('Show Controls'), Ox._('Hide Controls')],
keyboard: 'c'
}
],
title: 'set',
- tooltip: 'Map Options',
+ tooltip: Ox._('Map Options'),
type: 'image'
})
.css({float: 'left', margin: '4px'})
@@ -482,7 +482,7 @@ Ox.Map = function(options, self) {
}),
name: Ox.Label({
textAlign: 'center',
- tooltip: 'Click to pan, doubleclick to zoom'
+ tooltip: Ox._('Click to pan, doubleclick to zoom')
})
.addClass('OxPlaceControl OxPlaceName')
.bindEvent({
@@ -495,7 +495,7 @@ Ox.Map = function(options, self) {
}),
deselectButton: Ox.Button({
title: 'close',
- tooltip: 'Deselect',
+ tooltip: Ox._('Deselect'),
type: 'image'
})
.addClass('OxPlaceControl OxPlaceDeselectButton')
@@ -626,9 +626,9 @@ Ox.Map = function(options, self) {
function clickPlaceButton() {
var place = getSelectedPlace(),
title = self.$placeButton.options('title');
- if (title == 'New Place') {
+ if (title == Ox._('New Place')) {
addPlaceToMap();
- } else if (title == 'Add Place') {
+ } else if (title == Ox._('Add Place')) {
addPlaceToPlaces();
}
}
@@ -1279,9 +1279,9 @@ Ox.Map = function(options, self) {
code = country ? country.code : 'NTHH';
disabled = place && !place.editable;
if (place) {
- title = place.id[0] == '_' ? 'Add Place' : 'Remove Place';
+ title = place.id[0] == '_' ? Ox._('Add Place') : Ox._('Remove Place');
} else {
- title = 'New Place';
+ title = Ox._('New Place');
}
self.$placeFlag.attr({
src: Ox.PATH + 'Ox.Geo/png/icons/16/' + code + '.png'
diff --git a/source/Ox.UI/js/Map/MapEditor.js b/source/Ox.UI/js/Map/MapEditor.js
index 25e67047..8f677512 100644
--- a/source/Ox.UI/js/Map/MapEditor.js
+++ b/source/Ox.UI/js/Map/MapEditor.js
@@ -102,7 +102,7 @@ Ox.MapEditor = function(options, self) {
}
return names.reverse().join(', ');
},
- title: 'Flag',
+ title: Ox._('Flag'),
titleImage: 'flag',
tooltip: function(data) {
return Ox.toTitleCase(data.geoname || '')
@@ -136,7 +136,7 @@ Ox.MapEditor = function(options, self) {
},
id: 'type',
operator: '+',
- title: 'Type',
+ title: Ox._('Type'),
titleImage: 'icon',
tooltip: function(data) {
return Ox.toTitleCase(data.type || '');
@@ -153,7 +153,7 @@ Ox.MapEditor = function(options, self) {
id: 'name',
operator: '+',
removable: false,
- title: 'Name',
+ title: Ox._('Name'),
visible: true,
width: 144
},
@@ -163,7 +163,7 @@ Ox.MapEditor = function(options, self) {
},
id: 'alternativeNames',
operator: '+',
- title: 'Alternative Names',
+ title: Ox._('Alternative Names'),
visible: true,
width: 144
},
@@ -177,7 +177,7 @@ Ox.MapEditor = function(options, self) {
}
return names.reverse().join(', ');
},
- title: 'Geoname',
+ title: Ox._('Geoname'),
visible: false,
width: 192
},
@@ -186,7 +186,7 @@ Ox.MapEditor = function(options, self) {
format: toFixed,
id: 'lat',
operator: '+',
- title: 'Latitude',
+ title: Ox._('Latitude'),
visible: true,
width: 64
},
@@ -195,7 +195,7 @@ Ox.MapEditor = function(options, self) {
format: toFixed,
id: 'lng',
operator: '+',
- title: 'Longitude',
+ title: Ox._('Longitude'),
visible: true,
width: 64
},
@@ -204,7 +204,7 @@ Ox.MapEditor = function(options, self) {
format: toFixed,
id: 'south',
operator: '+',
- title: 'South',
+ title: Ox._('South'),
visible: false,
width: 64
},
@@ -212,7 +212,7 @@ Ox.MapEditor = function(options, self) {
align: 'right',
id: 'west',
operator: '+',
- title: 'West',
+ title: Ox._('West'),
visible: false,
width: 64
},
@@ -221,7 +221,7 @@ Ox.MapEditor = function(options, self) {
format: toFixed,
id: 'north',
operator: '+',
- title: 'North',
+ title: Ox._('North'),
visible: false,
width: 64
},
@@ -230,7 +230,7 @@ Ox.MapEditor = function(options, self) {
format: toFixed,
id: 'east',
operator: '+',
- title: 'East',
+ title: Ox._('East'),
visible: false,
width: 64
},
@@ -239,7 +239,7 @@ Ox.MapEditor = function(options, self) {
format: {type: 'area', args: []},
id: 'area',
operator: '-',
- title: 'Area',
+ title: Ox._('Area'),
visible: true,
width: 128
},
@@ -249,7 +249,7 @@ Ox.MapEditor = function(options, self) {
},
id: 'user',
operator: '+',
- title: 'User',
+ title: Ox._('User'),
visible: false,
width: 96
},
@@ -259,7 +259,7 @@ Ox.MapEditor = function(options, self) {
},
id: 'created',
operator: '-',
- title: 'Date Created',
+ title: Ox._('Date Created'),
visible: false,
width: 128
},
@@ -269,7 +269,7 @@ Ox.MapEditor = function(options, self) {
},
id: 'modified',
operator: '-',
- title: 'Date Modified',
+ title: Ox._('Date Modified'),
visible: false,
width: 128
}
@@ -279,7 +279,7 @@ Ox.MapEditor = function(options, self) {
align: 'right',
id: 'matches',
operator: '-',
- title: 'Matches',
+ title: Ox._('Matches'),
visible: true,
width: 64
});
@@ -292,10 +292,10 @@ Ox.MapEditor = function(options, self) {
elements: [
self.$findSelect = Ox.Select({
items: [
- {id: 'all', title: 'Find: All'},
- {id: 'name', title: 'Find: Name'},
- {id: 'alternativeNames', title: 'Find: Alternative Names'},
- {id: 'geoname', title: 'Find: Geoname'}
+ {id: 'all', title: Ox._('Find: All')},
+ {id: 'name', title: Ox._('Find: Name')},
+ {id: 'alternativeNames', title: Ox._('Find: Alternative Names')},
+ {id: 'geoname', title: Ox._('Find: Geoname')}
],
overlap: 'right',
type: 'image'
@@ -433,7 +433,7 @@ Ox.MapEditor = function(options, self) {
if (self.options.mode == 'define') {
self.$findPlaceButton = Ox.Button({
title: 'find',
- tooltip: 'Find',
+ tooltip: Ox._('Find'),
type: 'image'
})
.css({float: 'left', margin: '4px'})
@@ -466,7 +466,7 @@ Ox.MapEditor = function(options, self) {
.appendTo(self.$placeTitle);
self.$deselectPlaceButton = Ox.Button({
title: 'close',
- tooltip: 'Done',
+ tooltip: Ox._('Done'),
type: 'image'
})
.css({float: 'left', margin: '4px'})
@@ -485,13 +485,13 @@ Ox.MapEditor = function(options, self) {
items: [].concat([
self.$nameInput = Ox.Input({
id: 'name',
- label: 'Name',
+ label: Ox._('Name'),
labelWidth: 80,
width: 240
}),
self.$alternativeNamesInput = Ox.ArrayInput({
id: 'alternativeNames',
- label: 'Alternative Names',
+ label: Ox._('Alternative Names'),
max: 10,
//sort: true,
values: [],
@@ -499,7 +499,7 @@ Ox.MapEditor = function(options, self) {
}),
self.$geonameInput = Ox.Input({
id: 'geoname',
- label: 'Geoname',
+ label: Ox._('Geoname'),
labelWidth: 80,
width: 240
}),
@@ -509,15 +509,15 @@ Ox.MapEditor = function(options, self) {
Ox.Select({
id: 'type',
items: [
- {id: 'country', title: 'Country'},
- {id: 'region', title: 'Region'}, // administative (Kansas) or colloquial (Midwest)
- {id: 'city', title: 'City'},
- {id: 'borough', title: 'Borough'},
- {id: 'street', title: 'Street'}, // streets, squares, bridges, tunnels, ...
- {id: 'building', title: 'Building'}, // airports, stations, stadiums, military installations, ...
- {id: 'feature', title: 'Feature'} // continents, islands, rivers, lakes, seas, oceans, mountains...
+ {id: 'country', title: Ox._('Country')},
+ {id: 'region', title: Ox._('Region')}, // administative (Kansas) or colloquial (Midwest)
+ {id: 'city', title: Ox._('City')},
+ {id: 'borough', title: Ox._('Borough')},
+ {id: 'street', title: Ox._('Street')}, // streets, squares, bridges, tunnels, ...
+ {id: 'building', title: Ox._('Building')}, // airports, stations, stadiums, military installations, ...
+ {id: 'feature', title: Ox._('Feature')} // continents, islands, rivers, lakes, seas, oceans, mountains...
],
- label: 'Type',
+ label: Ox._('Type'),
labelWidth: 80,
width: 240
})
@@ -531,7 +531,7 @@ Ox.MapEditor = function(options, self) {
decimals: 8,
disabled: ['lat', 'lng'].indexOf(id) > -1,
id: id,
- label: v,
+ label: Ox._(v),
labelWidth: 80,
min: -max,
max: max,
@@ -615,7 +615,7 @@ Ox.MapEditor = function(options, self) {
self.$areaKmInput = Ox.Input({
disabled: true,
id: 'areaKm',
- label: 'Area',
+ label: Ox._('Area'),
labelWidth: 80,
textAlign: 'right',
width: 240
@@ -628,7 +628,7 @@ Ox.MapEditor = function(options, self) {
self.$matchesInput = Ox.Input({
disabled: true,
id: 'matches',
- label: 'Matches',
+ label: Ox._('Matches'),
labelWidth: 80,
type: 'int',
width: 240
@@ -643,13 +643,13 @@ Ox.MapEditor = function(options, self) {
});
self.$addPlaceButton = Ox.Button({
- title: 'Add Place',
+ title: Ox._('Add Place'),
width: 90
})
.css({float: 'left', margin: '4px'})
.bindEvent({
click: function() {
- if (this.options('title') == 'Add Place') {
+ if (this.options('title') == Ox._('Add Place')) {
addPlace();
} else {
removePlace();
@@ -660,7 +660,7 @@ Ox.MapEditor = function(options, self) {
.appendTo(self.$placeStatusbar);
self.$newPlaceButton = Ox.Button({
- title: 'New Place',
+ title: Ox._('New Place'),
width: 70
})
.css({float: 'right', margin: '4px'})
@@ -673,13 +673,13 @@ Ox.MapEditor = function(options, self) {
if (self.options.mode == 'define') {
self.$definePlaceButton = Ox.Button({
- title: 'Define Place',
+ title: Ox._('Define Place'),
width: 80
})
.css({float: 'right', margin: '4px 0 4px 0'})
.bindEvent({
click: function() {
- if (this.options('title') == 'Define Place') {
+ if (this.options('title') == Ox._('Define Place')) {
definePlace();
} else {
clearPlace();
@@ -797,10 +797,10 @@ Ox.MapEditor = function(options, self) {
selected: [place.id]
});
self.$map.addPlace(place);
- self.$addPlaceButton.options({title: 'Remove Place'});
+ self.$addPlaceButton.options({title: Ox._('Remove Place')});
//setStatus();
} else {
- self.$addPlaceButton.options({disabled: true, title: 'Adding...'});
+ self.$addPlaceButton.options({disabled: true, title: Ox._('Adding...')});
self.options.addPlace(encodeValues(place), function(result) {
if (result.status.code == 200) {
place.id = result.data.id;
@@ -813,18 +813,18 @@ Ox.MapEditor = function(options, self) {
).show();
self.options.mode == 'define' && self.$definePlaceButton.options({
disabled: !result.data.matches,
- title: 'Clear Place'
+ title: Ox._('Clear Place')
}).show();
self.$addPlaceButton.options({
disabled: false,
- title: 'Remove Place'
+ title: Ox._('Remove Place')
}).show();
} else if (result.status.code == 409) {
if (result.data.names.indexOf(self.$nameInput.value()) > -1) {
self.$nameInput.addClass('OxError');
}
self.$alternativeNamesInput.setErrors(result.data.names);
- self.$addPlaceButton.options({disabled: false, title: 'Add Place'});
+ self.$addPlaceButton.options({disabled: false, title: Ox._('Add Place')});
}
});
}
@@ -837,14 +837,14 @@ Ox.MapEditor = function(options, self) {
lat: null, lng: null,
south: null, west: null, north: null, east: null, area: null
};
- self.$definePlaceButton.options({disabled: true, title: 'Clearing...'});
+ self.$definePlaceButton.options({disabled: true, title: Ox._('Clearing...')});
self.options.editPlace(values, function() {
self.$map.removePlace();
self.$list.reloadList();
self.$findPlaceButton.show();
self.$placeFlag.hide();
hideForm();
- self.$definePlaceButton.options({disabled: false, title: 'Define Place'})
+ self.$definePlaceButton.options({disabled: false, title: Ox._('Define Place')})
});
}
@@ -861,7 +861,7 @@ Ox.MapEditor = function(options, self) {
function definePlace() {
self.$map.newPlace(); // this will call selectPlace, then editPlace
- self.$definePlaceButton.options({title: 'Clear Place'});
+ self.$definePlaceButton.options({title: Ox._('Clear Place')});
}
function encodeValues(place) {
@@ -912,7 +912,7 @@ Ox.MapEditor = function(options, self) {
if (self.options.mode == 'define') {
self.$definePlaceButton.options({
disabled: !result.data.matches,
- title: 'Clear Place'
+ title: Ox._('Clear Place')
});
self.$addPlaceButton.options({
disabled: !!result.data.matches
@@ -979,12 +979,12 @@ Ox.MapEditor = function(options, self) {
self.options.selected = '';
self.options.places.splice(index, 1);
self.$list.options({items: Ox.clone(self.options.places)});
- self.$addPlaceButton.options({title: 'Add Place'});
+ self.$addPlaceButton.options({title: Ox._('Add Place')});
//setStatus();
}
// fixme: what is this? both options.removePlace and event removeplace??
if (self.isAsync) {
- self.$addPlaceButton.options({disabled: true, title: 'Removing...'})
+ self.$addPlaceButton.options({disabled: true, title: Ox._('Removing...')})
self.options.removePlace({id: self.selectedPlace}, function() {
self.options.selected = '';
self.$list.options({selected: []}).reloadList(true);
@@ -992,7 +992,7 @@ Ox.MapEditor = function(options, self) {
self.options.mode == 'define' && self.$definePlaceButton.options({
disabled: true
});
- self.$addPlaceButton.options({disabled: false, title: 'Add Place'});
+ self.$addPlaceButton.options({disabled: false, title: Ox._('Add Place')});
});
}
self.$map.removePlace();
@@ -1029,7 +1029,7 @@ Ox.MapEditor = function(options, self) {
}).show();
self.$addPlaceButton.options({
disabled: self.options.mode == 'define' && !!place.matches,
- title: 'Remove Place'
+ title: Ox._('Remove Place')
}).show();
} else {
self.$placeTitle.hide();
@@ -1077,7 +1077,7 @@ Ox.MapEditor = function(options, self) {
getMatches(place);
}
self.options.mode == 'define' && self.$definePlaceButton.hide();
- self.$addPlaceButton.options({disabled: false, title: 'Add Place'}).show();
+ self.$addPlaceButton.options({disabled: false, title: Ox._('Add Place')}).show();
} else if (!self.selectedPlace && !self.options.selected) {
// deselect result place
self.$placeFlag.hide();
diff --git a/source/Ox.UI/js/Video/AnnotationFolder.js b/source/Ox.UI/js/Video/AnnotationFolder.js
index 2d25a513..d55fc83c 100644
--- a/source/Ox.UI/js/Video/AnnotationFolder.js
+++ b/source/Ox.UI/js/Video/AnnotationFolder.js
@@ -122,7 +122,7 @@ Ox.AnnotationFolder = function(options, self) {
id: 'add',
style: 'symbol',
title: 'add',
- tooltip: 'Add ' + self.options.item,
+ tooltip: Ox._('Add {0}', self.options.item),
type: 'image'
})
.bindEvent({
@@ -238,7 +238,7 @@ Ox.AnnotationFolder = function(options, self) {
.appendTo(self.$inner);
}
self.$resizebar = Ox.Element({
- tooltip: 'Drag to resize or click to toggle map' // fixme: update as w/ splitpanels
+ tooltip: Ox._('Drag to resize or click to toggle map') // fixme: update as w/ splitpanels
})
.addClass('OxResizebar OxHorizontal')
.css({
diff --git a/source/Ox.UI/js/Video/AnnotationPanel.js b/source/Ox.UI/js/Video/AnnotationPanel.js
index cd868931..4fd38a02 100644
--- a/source/Ox.UI/js/Video/AnnotationPanel.js
+++ b/source/Ox.UI/js/Video/AnnotationPanel.js
@@ -205,19 +205,19 @@ Ox.AnnotationPanel = function(options, self) {
annotationTitle = folder.options('item') + ': "' + value + '"';
}
}
- manageTitle = (isDefined ? 'Edit' : 'Define') + ' '
- + (isPlace ? 'Place' : isEvent ? 'Event' : 'Place or Event') + '...'
+ manageTitle = Ox._((isDefined ? 'Edit' : 'Define') + ' '
+ + (isPlace ? 'Place' : isEvent ? 'Event' : 'Place or Event') + '...');
self.$editMenuButton && self.$editMenuButton.remove();
self.$editMenuButton = Ox.MenuButton({
items: [].concat(
[
- {id: 'deselect', title: 'Deselect Annotation', disabled: !self.options.selected || self.editing, keyboard: 'escape'},
- {id: 'edit', title: 'Edit Annotation', disabled: !self.options.selected || !isEditable || self.editing, keyboard: 'return'},
- {id: 'delete', title: 'Delete Annotation', disabled: !self.options.selected || !isEditable, keyboard: 'delete'},
+ {id: 'deselect', title: Ox._('Deselect Annotation'), disabled: !self.options.selected || self.editing, keyboard: 'escape'},
+ {id: 'edit', title: Ox._('Edit Annotation'), disabled: !self.options.selected || !isEditable || self.editing, keyboard: 'return'},
+ {id: 'delete', title: Ox._('Delete Annotation'), disabled: !self.options.selected || !isEditable, keyboard: 'delete'},
{},
- {id: 'insert', title: 'Insert...', disabled: isString || !self.editing, keyboard: 'control i'},
- {id: 'undo', title: 'Undo Changes', disabled: !self.editing, keyboard: 'escape'},
- {id: 'save', title: 'Save Changes', disabled: !self.editing, keyboard: isString ? 'return' : 'shift return'},
+ {id: 'insert', title: Ox._('Insert...'), disabled: isString || !self.editing, keyboard: 'control i'},
+ {id: 'undo', title: Ox._('Undo Changes'), disabled: !self.editing, keyboard: 'escape'},
+ {id: 'save', title: Ox._('Save Changes'), disabled: !self.editing, keyboard: isString ? 'return' : 'shift return'},
],
pandora.site.map == 'manual' ? [
{},
@@ -226,14 +226,14 @@ Ox.AnnotationPanel = function(options, self) {
isString ? [
{},
{id: 'annotation', title: annotationTitle, disabled: true},
- {id: 'find', title: 'Find in This ' + pandora.site.itemName.singular},
- {id: 'findannotations', title: 'Find in All ' + pandora.site.itemName.plural}
+ {id: 'find', title: Ox._('Find in This ') + pandora.site.itemName.singular},
+ {id: 'findannotations', title: Ox._('Find in All {0}', pandora.site.itemName.plural)}
] : []
),
maxWidth: 256,
style: 'square',
title: 'edit',
- tooltip: 'Editing Options',
+ tooltip: Ox._('Editing Options'),
type: 'image'
})
.css({float: 'right'})
@@ -388,32 +388,32 @@ Ox.AnnotationPanel = function(options, self) {
self.$optionsMenuButton = Ox.MenuButton({
items: [].concat(
[
- {id: 'showannotations', title: 'Show Annotations', disabled: true},
+ {id: 'showannotations', title: Ox._('Show Annotations'), disabled: true},
{group: 'range', min: 1, max: 1, items: [
- {id: 'all', title: 'All', checked: self.options.range == 'all'},
- {id: 'selection', title: 'In Current Selection', checked: self.options.range == 'selection'},
- {id: 'position', title: 'At Current Position', checked: self.options.range == 'position'}
+ {id: 'all', title: Ox._('All'), checked: self.options.range == 'all'},
+ {id: 'selection', title: Ox._('In Current Selection'), checked: self.options.range == 'selection'},
+ {id: 'position', title: Ox._('At Current Position'), checked: self.options.range == 'position'}
]},
{},
- {id: 'sortannotations', title: 'Sort Annotations', disabled: true},
+ {id: 'sortannotations', title: Ox._('Sort Annotations'), disabled: true},
{group: 'sort', min: 1, max: 1, items: [
- {id: 'position', title: 'By Position', checked: self.options.sort == 'position'},
- {id: 'duration', title: 'By Duration', checked: self.options.sort == 'duration'},
- {id: 'text', title: 'By Text', checked: self.options.sort == 'text'}
+ {id: 'position', title: Ox._('By Position'), checked: self.options.sort == 'position'},
+ {id: 'duration', title: Ox._('By Duration'), checked: self.options.sort == 'duration'},
+ {id: 'text', title: Ox._('By Text'), checked: self.options.sort == 'text'}
]}
],
self.options.showFonts ? [
{},
- {id: 'fontsize', title: 'Font Size', disabled: true},
+ {id: 'fontsize', title: Ox._('Font Size'), disabled: true},
{group: 'font', min: 1, max: 1, items: [
- {id: 'small', title: 'Small', checked: self.options.font == 'small'},
- {id: 'medium', title: 'Medium', checked: self.options.font == 'medium'},
- {id: 'large', title: 'Large', checked: self.options.font == 'large'}
+ {id: 'small', title: Ox._('Small'), checked: self.options.font == 'small'},
+ {id: 'medium', title: Ox._('Medium'), checked: self.options.font == 'medium'},
+ {id: 'large', title: Ox._('Large'), checked: self.options.font == 'large'}
]}
] : [],
self.options.showUsers && self.users.length ? [
{},
- {id: 'users', title: 'Show Users', disabled: true},
+ {id: 'users', title: Ox._('Show Users'), disabled: true},
{group: 'users', min: 1, max: -1, items: self.users.map(function(user) {
return {id: user, title: Ox.encodeHTMLEntities(user), checked:
self.enabledUsers == 'all' || self.enabledUsers.indexOf(user) > -1
@@ -423,7 +423,7 @@ Ox.AnnotationPanel = function(options, self) {
),
style: 'square',
title: 'set',
- tooltip: 'Options',
+ tooltip: Ox._('Options'),
type: 'image'
})
.css({float: 'left'})
diff --git a/source/Ox.UI/js/Video/VideoEditor.js b/source/Ox.UI/js/Video/VideoEditor.js
index 80ea555d..535a42e7 100644
--- a/source/Ox.UI/js/Video/VideoEditor.js
+++ b/source/Ox.UI/js/Video/VideoEditor.js
@@ -53,7 +53,7 @@ Ox.VideoEditor = function(options, self) {
annotationsRange: 'all',
annotationsSize: 256,
annotationsSort: 'position',
- annotationsTooltip: 'annotations',
+ annotationstooltip: Ox._('annotations'),
censored: [],
censoredIcon: '',
censoredTooltip: '',
@@ -516,17 +516,17 @@ Ox.VideoEditor = function(options, self) {
self.$menuButton = Ox.MenuButton({
items: [].concat(
[
- {id: 'size', title: 'Large Player', checked: self.options.videoSize == 'large'},
+ {id: 'size', title: Ox._('Large Player'), checked: self.options.videoSize == 'large'},
{},
{group: 'resolution', min: 1, max: 1, items: self.resolutions}
],
self.options.subtitles.length ? [
{},
- {id: 'subtitles', title: 'Show Subtitles', checked: self.options.enableSubtitles}
+ {id: 'subtitles', title: Ox._('Show Subtitles'), checked: self.options.enableSubtitles}
] : [],
[
{},
- {id: 'timelines', title: 'Timeline', disabled: true},
+ {id: 'timelines', title: Ox._('Timeline'), disabled: true},
{group: 'timeline', min: 1, max: 1, items: Ox.map(
self.options.timelines,
function(timeline) {
@@ -536,25 +536,25 @@ Ox.VideoEditor = function(options, self) {
}
)},
{},
- {id: 'downloadVideo', title: 'Download Video...', disabled: !self.options.enableDownload },
- {id: 'downloadSelection', title: 'Download Selection...', disabled: !self.options.enableDownload},
- {id: 'embedSelection', title: 'Embed Selection...'}
+ {id: 'downloadVideo', title: Ox._('Download Video...'), disabled: !self.options.enableDownload },
+ {id: 'downloadSelection', title: Ox._('Download Selection...'), disabled: !self.options.enableDownload},
+ {id: 'embedSelection', title: Ox._('Embed Selection...')}
],
self.options.enableImport ? [
{},
- {id: 'importAnnotations', title: 'Import Annotations...'}
+ {id: 'importAnnotations', title: Ox._('Import Annotations...')}
] : [],
[
{},
- {id: 'gotoPosterFrame', title: 'Go to Poster Frame'},
- {id: 'setPosterFrame', title: 'Set Poster Frame', disabled: !self.options.enableSetPosterFrame},
+ {id: 'gotoPosterFrame', title: Ox._('Go to Poster Frame')},
+ {id: 'setPosterFrame', title: Ox._('Set Poster Frame'), disabled: !self.options.enableSetPosterFrame},
{},
- {id: 'keyboard', title: 'Keyboard Shortcuts...', keyboard: 'h'}
+ {id: 'keyboard', title: Ox._('Keyboard Shortcuts...'), keyboard: 'h'}
]
),
style: 'square',
title: 'set',
- tooltip: 'Options',
+ tooltip: Ox._('Options'),
type: 'image'
})
.css({float: 'left'})
@@ -616,7 +616,7 @@ Ox.VideoEditor = function(options, self) {
disabled: self.options.find === '',
style: 'symbol',
title: 'close',
- tooltip: 'Clear',
+ tooltip: Ox._('Clear'),
type: 'image'
})
.css({float: 'right'})
@@ -638,7 +638,7 @@ Ox.VideoEditor = function(options, self) {
autocompleteSelectMax: 10,
autocompleteSelectSubmit: true,
changeOnKeypress: true,
- placeholder: 'Find...',
+ placeholder: Ox._('Find...'),
value: self.options.find,
width: 128
})
@@ -657,7 +657,7 @@ Ox.VideoEditor = function(options, self) {
disabled: true,
style: 'symbol',
title: 'arrowRight',
- tooltip: 'Next Result',
+ tooltip: Ox._('Next Result'),
type: 'image'
})
.css({float: 'right'})
@@ -672,7 +672,7 @@ Ox.VideoEditor = function(options, self) {
disabled: true,
style: 'symbol',
title: 'arrowLeft',
- tooltip: 'Previous Result',
+ tooltip: Ox._('Previous Result'),
type: 'image'
})
.css({float: 'right'})
@@ -1265,13 +1265,13 @@ Ox.VideoEditor = function(options, self) {
function showKeyboardShortcuts() {
var dialog = Ox.Dialog({
buttons: [
- Ox.Button({id: 'close', title: 'Close'})
+ Ox.Button({id: 'close', title: Ox._('Close')})
.bindEvent({click: function() { dialog.close(); }})
],
content: self.$keyboardShortcuts,
height: 384,
keys: {enter: 'close', escape: 'close'},
- title: 'Keyboard Shortcuts',
+ title: Ox._('Keyboard Shortcuts'),
width: 256
}).open();
}
diff --git a/source/Ox.UI/js/Video/VideoEditorPlayer.js b/source/Ox.UI/js/Video/VideoEditorPlayer.js
index 0c2f37aa..91234925 100644
--- a/source/Ox.UI/js/Video/VideoEditorPlayer.js
+++ b/source/Ox.UI/js/Video/VideoEditorPlayer.js
@@ -142,7 +142,7 @@ Ox.VideoEditorPlayer = function(options, self) {
self.$playInToOutButton = Ox.Button({
id: self.options.id + 'PlayInToOut',
title: 'PlayInToOut',
- tooltip: 'Play In to Out',
+ tooltip: Ox._('Play In to Out'),
type: 'image'
})
.bindEvent('click', function() {
@@ -173,7 +173,7 @@ Ox.VideoEditorPlayer = function(options, self) {
self.$goToPointButton = Ox.Button({
id: self.options.id + 'GoTo' + Ox.toTitleCase(self.options.type),
title: 'GoTo' + Ox.toTitleCase(self.options.type),
- tooltip: 'Go to ' + Ox.toTitleCase(self.options.type) + ' Point',
+ tooltip: Ox._('Go to ' + Ox.toTitleCase(self.options.type) + ' Point'),
type: 'image'
})
.bindEvent('click', goToPoint)
@@ -181,7 +181,7 @@ Ox.VideoEditorPlayer = function(options, self) {
self.$setPointButton = Ox.Button({
id: self.options.id + 'Set' + Ox.toTitleCase(self.options.type),
title: 'Set' + Ox.toTitleCase(self.options.type),
- tooltip: 'Set ' + Ox.toTitleCase(self.options.type) + ' Point',
+ tooltip: Ox._('Set ' + Ox.toTitleCase(self.options.type) + ' Point'),
type: 'image'
})
.bindEvent('click', setPoint)
diff --git a/source/Ox.UI/js/Video/VideoPlayer.js b/source/Ox.UI/js/Video/VideoPlayer.js
index 71b19991..37ebc342 100644
--- a/source/Ox.UI/js/Video/VideoPlayer.js
+++ b/source/Ox.UI/js/Video/VideoPlayer.js
@@ -625,7 +625,7 @@ Ox.VideoPlayer = function(options, self) {
self.$closeButton = Ox.Button({
style: 'video',
title: 'close',
- tooltip: 'Close',
+ tooltip: Ox._('Close'),
type: 'image'
})
.bindEvent({
@@ -640,7 +640,7 @@ Ox.VideoPlayer = function(options, self) {
self.$findButton = Ox.Button({
style: 'video',
title: 'find',
- tooltip: 'Find',
+ tooltip: Ox._('Find'),
type: 'image'
})
.bindEvent({
@@ -652,7 +652,7 @@ Ox.VideoPlayer = function(options, self) {
self.$fullscreenButton = Ox.Button({
style: 'video',
- tooltip: ['Enter Fullscreen', 'Exit Fullscreen'],
+ tooltip: [Ox._('Enter Fullscreen'), Ox._('Exit Fullscreen')],
type: 'image',
value: self.options.fullscreen ? 'shrink' : 'grow',
values: ['grow', 'shrink']
@@ -669,7 +669,7 @@ Ox.VideoPlayer = function(options, self) {
self.$setButton = Ox.Button({
style: 'video',
title: 'goTo' + Ox.toTitleCase(self.options.type),
- tooltip: 'Go to ' + Ox.toTitleCase(self.options.type) + ' Point',
+ tooltip: Ox._('Go to ' + Ox.toTitleCase(self.options.type) + ' Point'),
type: 'image'
})
.bindEvent({
@@ -681,7 +681,7 @@ Ox.VideoPlayer = function(options, self) {
self.$muteButton = Ox.Button({
style: 'video',
- tooltip: ['Mute', 'Unmute'],
+ tooltip: [Ox._('Mute'), Ox._('Unmute')],
type: 'image',
value: self.options.muted ? 'unmute' : 'mute',
values: ['mute', 'unmute']
@@ -698,7 +698,7 @@ Ox.VideoPlayer = function(options, self) {
self.$nextClipButton = Ox.Button({
style: 'video',
title: 'arrowRight',
- tooltip: 'Next',
+ tooltip: Ox._('Next'),
type: 'image'
})
.bindEvent({
@@ -728,7 +728,7 @@ Ox.VideoPlayer = function(options, self) {
self.$playButton = Ox.Button({
style: 'video',
// FIXME: this is retarded, fix Ox.Button
- tooltip: ['Play', 'Pause'],
+ tooltip: [Ox._('Play'), Ox._('Pause')],
type: 'image',
value: self.options.paused ? 'play' : 'pause',
values: ['play', 'pause']
@@ -745,7 +745,7 @@ Ox.VideoPlayer = function(options, self) {
self.$playInToOutButton = Ox.Button({
style: 'video',
title: 'playInToOut',
- tooltip: 'Play In to Out',
+ tooltip: Ox._('Play In to Out'),
type: 'image'
})
.bindEvent({
@@ -821,7 +821,7 @@ Ox.VideoPlayer = function(options, self) {
self.$previousClipButton = Ox.Button({
style: 'video',
title: 'arrowLeft',
- tooltip: 'Previous',
+ tooltip: Ox._('Previous'),
type: 'image'
})
.bindEvent({
@@ -835,7 +835,7 @@ Ox.VideoPlayer = function(options, self) {
self.$scaleButton = Ox.Button({
style: 'video',
- tooltip: ['Scale to Fill', 'Scale to Fit'],
+ tooltip: [Ox._('Scale to Fill'), Ox._('Scale to Fit')],
type: 'image',
value: self.options.scaleToFill ? 'fit' : 'fill',
values: ['fill', 'fit']
@@ -850,7 +850,7 @@ Ox.VideoPlayer = function(options, self) {
self.$setButton = Ox.Button({
style: 'video',
title: 'set' + Ox.toTitleCase(self.options.type),
- tooltip: 'Set ' + Ox.toTitleCase(self.options.type) + ' Point',
+ tooltip: Ox._('Set ' + Ox.toTitleCase(self.options.type) + ' Point'),
type: 'image'
})
.bindEvent({
@@ -863,7 +863,7 @@ Ox.VideoPlayer = function(options, self) {
self.$settingsButton = Ox.Button({
style: 'video',
title: 'set',
- tooltip: 'Settings',
+ tooltip: Ox._('Settings'),
type: 'image'
})
.bindEvent({
@@ -879,7 +879,7 @@ Ox.VideoPlayer = function(options, self) {
self.$sizeButton = Ox.Button({
style: 'video',
- tooltip: ['Larger', 'Smaller'],
+ tooltip: [Ox._('Larger'), Ox._('Smaller')],
type: 'image',
value: self.options.sizeIsLarge ? 'shrink' : 'grow',
values: ['grow', 'shrink']
@@ -938,7 +938,7 @@ Ox.VideoPlayer = function(options, self) {
self.$volumeButton = Ox.Button({
style: 'video',
title: getVolumeImage(),
- tooltip: 'Volume',
+ tooltip: Ox._('Volume'),
type: 'image'
})
.bindEvent({
@@ -951,7 +951,7 @@ Ox.VideoPlayer = function(options, self) {
self.$zapHomeButton = Ox.Button({
style: 'video',
title: 'up',
- tooltip: 'Home Channel',
+ tooltip: Ox._('Home Channel'),
type: 'image'
})
.bindEvent({
@@ -966,7 +966,7 @@ Ox.VideoPlayer = function(options, self) {
self.$zapNextButton = Ox.Button({
style: 'video',
title: 'right',
- tooltip: 'Next Channel',
+ tooltip: Ox._('Next Channel'),
type: 'image'
})
.bindEvent({
@@ -981,7 +981,7 @@ Ox.VideoPlayer = function(options, self) {
self.$zapPreviousButton = Ox.Button({
style: 'video',
title: 'left',
- tooltip: 'Previous Channel',
+ tooltip: Ox._('Previous Channel'),
type: 'image'
})
.bindEvent({
@@ -1015,7 +1015,7 @@ Ox.VideoPlayer = function(options, self) {
.appendTo(that);
self.$results = Ox.Element({
- tooltip: 'Results'
+ tooltip: Ox._('Results')
})
.addClass('OxResults')
.html('0')
@@ -1025,7 +1025,7 @@ Ox.VideoPlayer = function(options, self) {
disabled: true,
style: 'symbol',
title: 'arrowLeft',
- tooltip: 'Previous',
+ tooltip: Ox._('Previous'),
type: 'image'
})
.bindEvent({
@@ -1039,7 +1039,7 @@ Ox.VideoPlayer = function(options, self) {
disabled: true,
style: 'symbol',
title: 'arrowRight',
- tooltip: 'Next',
+ tooltip: Ox._('Next'),
type: 'image'
})
.bindEvent({
@@ -1074,7 +1074,7 @@ Ox.VideoPlayer = function(options, self) {
disabled: !self.options.find,
style: 'symbol',
title: 'delete',
- tooltip: 'Clear',
+ tooltip: Ox._('Clear'),
type: 'image'
})
.bindEvent({
@@ -1096,7 +1096,7 @@ Ox.VideoPlayer = function(options, self) {
self.$hideFindButton = Ox.Button({
style: 'symbol',
title: 'close',
- tooltip: 'Hide',
+ tooltip: Ox._('Hide'),
type: 'image'
})
.bindEvent({
@@ -1124,7 +1124,7 @@ Ox.VideoPlayer = function(options, self) {
self.$hideVolumeButton = Ox.Button({
style: 'symbol',
title: 'close',
- tooltip: 'Hide',
+ tooltip: Ox._('Hide'),
type: 'image'
})
.bindEvent({
@@ -1134,7 +1134,7 @@ Ox.VideoPlayer = function(options, self) {
self.$muteButton = Ox.Button({
style: 'symbol',
- tooltip: ['Mute', 'Unmute'],
+ tooltip: [Ox._('Mute'), Ox._('Unmute')],
type: 'image',
value: self.options.muted ? 'unmute' : 'mute',
values: ['mute', 'unmute']
diff --git a/source/Ox.UI/js/Video/VideoTimelinePlayer.js b/source/Ox.UI/js/Video/VideoTimelinePlayer.js
index 696e2d78..c6ce3a2a 100644
--- a/source/Ox.UI/js/Video/VideoTimelinePlayer.js
+++ b/source/Ox.UI/js/Video/VideoTimelinePlayer.js
@@ -97,7 +97,7 @@ Ox.VideoTimelinePlayer = function(options, self) {
],
style: 'square',
title: 'set',
- tooltip: 'Options',
+ tooltip: Ox._('Options'),
type: 'image'
})
.css({float: 'left'})
@@ -127,7 +127,7 @@ Ox.VideoTimelinePlayer = function(options, self) {
self.$scrollButton = Ox.Button({
style: 'symbol',
title: 'arrowDown',
- tooltip: 'Scroll to Player',
+ tooltip: Ox._('Scroll to Player'),
type: 'image'
})
.css({float: 'right'})
@@ -197,7 +197,7 @@ Ox.VideoTimelinePlayer = function(options, self) {
self.$playButton = Ox.Button({
style: 'symbol',
title: 'play',
- tooltip: 'Play',
+ tooltip: Ox._('Play'),
type: 'image'
})
.css({
@@ -213,7 +213,7 @@ Ox.VideoTimelinePlayer = function(options, self) {
self.$muteButton = Ox.Button({
style: 'symbol',
title: self.options.muted ? 'unmute' : 'mute',
- tooltip: self.options.muted ? 'Unmute' : 'Mute',
+ tooltip: self.options.muted ? Ox._('Unmute') : Ox._('Mute'),
type: 'image'
})
.css({float: 'left'})
@@ -787,7 +787,7 @@ Ox.VideoTimelinePlayer = function(options, self) {
self.$video.options({muted: self.options.muted});
self.$muteButton.options({
title: self.options.muted ? 'unmute' : 'mute',
- tooltip: self.options.muted ? 'Unmute' : 'Mute'
+ tooltip: self.options.muted ? Ox._('Unmute') : Ox._('Mute')
});
that.triggerEvent('muted', {
muted: self.options.muted
diff --git a/source/Ox.UI/js/Window/SortDialog.js b/source/Ox.UI/js/Window/SortDialog.js
index 9357ab4c..b1c8bd24 100644
--- a/source/Ox.UI/js/Window/SortDialog.js
+++ b/source/Ox.UI/js/Window/SortDialog.js
@@ -44,7 +44,7 @@ Ox.SortDialog = function(options, self) {
if (self.hasDefaults) {
self.$defaultsButton = Ox.Button({
- title: 'Restore Defaults'
+ title: Ox._('Restore Defaults')
})
.bindEvent({
click: function() {
@@ -55,7 +55,7 @@ Ox.SortDialog = function(options, self) {
}
self.$doneButton = Ox.Button({
- title: 'Done'
+ title: Ox._('Done')
})
.bindEvent({
click: function() {
@@ -95,4 +95,4 @@ Ox.SortDialog = function(options, self) {
return that;
-};
\ No newline at end of file
+};
diff --git a/source/Ox/js/Constants.js b/source/Ox/js/Constants.js
index 8e8ac77f..32d410ee 100644
--- a/source/Ox/js/Constants.js
+++ b/source/Ox/js/Constants.js
@@ -53,7 +53,15 @@ Ox.KEYS = {
190: 'dot', 191: 'slash', 192: 'backtick', 219: 'openbracket',
220: 'backslash', 221: 'closebracket', 222: 'quote', 224: 'meta'
// see dojo, for ex.
-},
+};
+//@ Ox.LOCALE current locale
+Ox.LOCALE = 'en';
+//@ Ox.LOCALE <[s]> array of available locales
+Ox.LOCALES = {
+ 'ar': 'العربية',
+ 'de': 'Deutsch',
+ 'en': 'English'
+};
//@ Ox.MAX_LATITUDE Maximum latitude of a Mercator projection
Ox.MAX_LATITUDE = Ox.deg(Math.atan(Ox.sinh(Math.PI)));
//@ Ox.MIN_LATITUDE Minimum latitude of a Mercator projection
@@ -66,7 +74,7 @@ Ox.MODIFIER_KEYS = {
ctrlKey: 'control',
shiftKey: 'shift',
metaKey: 'meta' // Mac: command
-}
+};
//@ Ox.MONTHS <[s]> Names of months
Ox.MONTHS = [
'January', 'February', 'March', 'April', 'May', 'June',
diff --git a/source/Ox/js/Locale.js b/source/Ox/js/Locale.js
index 690a164a..5a1ef406 100644
--- a/source/Ox/js/Locale.js
+++ b/source/Ox/js/Locale.js
@@ -54,9 +54,7 @@
var translation = translations[value];
log && log(value, translation);
translation = translation || value;
- return options
- ? Ox.formatString(translation, options, true)
- : translation
+ return Ox.formatString(translation, options, true);
};
/*@
@@ -70,4 +68,4 @@
log = callback;
};
-})();
\ No newline at end of file
+})();
diff --git a/source/Ox/json/locale.ar.json b/source/Ox/json/locale.ar.json
new file mode 100644
index 00000000..cfcb7d45
--- /dev/null
+++ b/source/Ox/json/locale.ar.json
@@ -0,0 +1,56 @@
+{
+ "AD": "",
+ "AM": "",
+ "Apr": "",
+ "April": "",
+ "Aug": "",
+ "August": "",
+ "BC": "",
+ "Dec": "",
+ "December": "",
+ "Fall": "",
+ "Feb": "",
+ "February": "",
+ "Fri": "",
+ "Friday": "",
+ "Jan": "",
+ "January": "",
+ "Jun": "",
+ "June": "",
+ "Jul": "",
+ "July": "",
+ "Mar": "",
+ "March": "",
+ "May": "",
+ "Mon": "",
+ "Monday": "",
+ "no": "",
+ "Nov": "",
+ "November": "",
+ "Oct": "",
+ "October": "",
+ "PM": "",
+ "Sat": "",
+ "Saturday": "",
+ "Sep": "",
+ "September": "",
+ "Spring": "",
+ "Summer": "",
+ "Sun": "",
+ "Sunday": "",
+ "Thu": "",
+ "Thursday": "",
+ "Tue": "",
+ "Tuesday": "",
+ "Wed": "",
+ "Wednesday": "",
+ "Winter": "",
+ "%A, %B %e, %Y": "",
+ "%a, %b %e, %Y": "",
+ "%B %e, %Y": "",
+ "%b %e, %Y": "",
+ "%I:%M:%S %p": "",
+ "%I:%M %p": "",
+ "%m/%d/%Y": "",
+ "%m/%d/%y": ""
+}
diff --git a/source/Ox/json/locale.de.json b/source/Ox/json/locale.de.json
new file mode 100644
index 00000000..a936c99a
--- /dev/null
+++ b/source/Ox/json/locale.de.json
@@ -0,0 +1,89 @@
+{
+ "AD": "n. Chr.",
+ "AM": "AM",
+ "Apr": "Apr",
+ "April": "April",
+ "Aug": "Aug",
+ "August": "August",
+ "BC": "v. Chr.",
+ "d": " Tg.",
+ "day": "Tag",
+ "days": "Tage",
+ "days{2}": "Tage",
+ "Dec": "Dez",
+ "December": "Dezember",
+ "Fall": "Herbst",
+ "Feb": "Feb",
+ "February": "Februar",
+ "Fri": "Fr",
+ "Friday": "Friday",
+ "h": " Std.",
+ "hour": "Stunde",
+ "hours": "Stunden",
+ "hours{2}": "Stunden",
+ "Jan": "Jan",
+ "January": "Januar",
+ "Jun": "Jun",
+ "June": "Juni",
+ "Jul": "Jul",
+ "July": "Juli",
+ "m": " Min.",
+ "Mar": "Mär",
+ "March": "März",
+ "May": "Mai",
+ "Mon": "Mo",
+ "Monday": "Montag",
+ "minute": "Minute",
+ "minutes": "Minuten",
+ "minutes{2}": "Minuten",
+ "nd": ".",
+ "nd{22}": ".",
+ "no": "keine",
+ "Nov": "Nov",
+ "November": "November",
+ "Oct": "Okt",
+ "October": "Oktober",
+ "PM": "PM",
+ "rd": ".",
+ "rd{23}": ".",
+ "s": " Sek.",
+ "Sat": "Sa",
+ "Saturday": "Samstag",
+ "second": "Sekunde",
+ "seconds": "Sekunden",
+ "seconds{2}": "Sekunden",
+ "Sep": "Sep",
+ "September": "September",
+ "Spring": "Frühjahr",
+ "st": ".",
+ "st{21}": ".",
+ "Summer": "Sommer",
+ "Sun": "So",
+ "Sunday": "Sonntag",
+ "th": ".",
+ "th{11}": ".",
+ "th{12}": ".",
+ "th{13}": ".",
+ "Thu": "Do",
+ "Thursday": "Donnerstag",
+ "Tue": "Di",
+ "Tuesday": "Dienstag",
+ "Wed": "Mi",
+ "Wednesday": "Mittwoch",
+ "Winter": "Winter",
+ "y": " Jhr.",
+ "year": "Jahr",
+ "years": "Jahre",
+ "years{2}": "Jahre",
+ ".": ",",
+ ",": ".",
+ "%": "%",
+ "%A, %B %e, %Y": "%A, %e. %B %Y",
+ "%a, %b %e, %Y": "%a, %e. %b %Y",
+ "%B %e, %Y": "%e. %B %Y",
+ "%b %e, %Y": "%e. %b %Y",
+ "%I:%M %p": "%H:%M",
+ "%I:%M:%S %p": "%H:%M:%S",
+ "%m/%d/%Y": "%d.%m.%Y",
+ "%m/%d/%y": "%d.%m.%y"
+}
diff --git a/tools/build/build.py b/tools/build/build.py
index 341f0b7b..5bd57b80 100755
--- a/tools/build/build.py
+++ b/tools/build/build.py
@@ -101,7 +101,7 @@ def build_oxjs(downloads=False, geo=False):
if is_jquery_plugin:
ui_files['build'].append(target.replace(build_path, ''))
ui_files['dev'].append(target.replace(build_path, ''))
- if not '/Ox/js' in source and not '/Ox.UI/js/' in source and not is_jquery:
+ if not '/Ox/js/' in source and not '/Ox.UI/js/' in source and not is_jquery:
if re.match('^Ox\..+\.js$', filename) or is_jsonc:
js = read_file(source)
write_file(target, ox.js.minify(js, '' if is_jsonc else comment))