').html(self.options.title[0]).html()
- )
- )
+ Ox.isString(self.options.title[0])
+ ? self.options.title[0]
+ : Ox.$('
').html(self.options.title[0]).html()
+ ).on({
+ click: self.options.file ? function(event) {
+ !self.options.disabled && self.$input.click()
+ event.preventDefault()
+ event.stopPropagation()
+ } : null
+
+ })
)
.append(
that.$modifiers = Ox.$('
')
diff --git a/source/UI/js/Video/AnnotationFolder.js b/source/UI/js/Video/AnnotationFolder.js
index f6fb3127..4b04dcd4 100644
--- a/source/UI/js/Video/AnnotationFolder.js
+++ b/source/UI/js/Video/AnnotationFolder.js
@@ -371,7 +371,8 @@ Ox.AnnotationFolder = function(options, self) {
'equal', 'e', 'f', 'g', 'h', 'i', 'minus', 'n', 'o',
'openbracket', 'p', 'shift_0', 'shift_equal',
'shift_g', 'shift_i', 'shift_minus', 'shift_o',
- 'slash', 'space'
+ 'slash', 'space',
+ 'control_c', 'control_v',
].forEach(function(key) {
key = 'key.' + key;
self.$annotations.bindEvent(key, function() {
@@ -401,7 +402,8 @@ Ox.AnnotationFolder = function(options, self) {
'equal', 'f', 'g', 'h', 'i', 'minus', 'n', 'o',
'openbracket', 'p', 'shift_0', 'shift_equal',
'shift_g', 'shift_i', 'shift_minus', 'shift_o',
- 'slash', 'space'
+ 'slash', 'space',
+ 'control_c', 'control_v',
].forEach(function(key) {
key = 'key_' + key;
self.$annotations.bindEvent(key, function() {
diff --git a/source/UI/js/Video/AnnotationPanel.js b/source/UI/js/Video/AnnotationPanel.js
index 83036b77..7e03f779 100644
--- a/source/UI/js/Video/AnnotationPanel.js
+++ b/source/UI/js/Video/AnnotationPanel.js
@@ -325,9 +325,9 @@ Ox.AnnotationPanel = function(options, self) {
} else if (data.id == 'export') {
that.triggerEvent('exportannotations');
} else if (data.id == 'find') {
- that.triggerEvent('find', {value: value});
+ that.triggerEvent('find', {value: Ox.decodeHTMLEntities(value)});
} else if (data.id == 'findannotations') {
- that.triggerEvent('findannotations', {key: key, value: value});
+ that.triggerEvent('findannotations', {key: key, value: Ox.decodeHTMLEntities(value)});
} else if (data.id == 'import') {
that.triggerEvent('importannotations');
} else if (data.id == 'insert') {
@@ -457,7 +457,8 @@ Ox.AnnotationPanel = function(options, self) {
'equal', 'f', 'g', 'h', 'i', 'minus', 'n', 'o',
'openbracket', 'p', 'shift_0', 'shift_equal',
'shift_g', 'shift_i', 'shift_minus', 'shift_o',
- 'slash', 'space'
+ 'slash', 'space',
+ 'control_c', 'control_v',
].forEach(function(key) {
key = 'key.' + key;
self.$folder[index].bindEvent(key, function() {
diff --git a/source/UI/js/Video/ClipPanel.js b/source/UI/js/Video/ClipPanel.js
index 275da1d9..ea9eb562 100644
--- a/source/UI/js/Video/ClipPanel.js
+++ b/source/UI/js/Video/ClipPanel.js
@@ -89,7 +89,7 @@ Ox.ClipPanel = function(options, self) {
}
});
- self.columns = [
+ self.columns = [].concat([
{
align: 'right',
id: 'index',
@@ -183,7 +183,9 @@ Ox.ClipPanel = function(options, self) {
visible: true,
width: 90
},
- {
+ ],
+ hasVolume() ?
+ [{
align: 'right',
editable: self.options.editable,
format: function(value, data) {
@@ -198,6 +200,8 @@ Ox.ClipPanel = function(options, self) {
visible: false,
width: 45
},
+ ] : [],
+ [
{
addable: false,
id: 'sort',
@@ -205,7 +209,8 @@ Ox.ClipPanel = function(options, self) {
// title: Ox._('Sort'),
visible: false
}
- ];
+ ]
+ );
self.$menubar = Ox.Bar({
size: 24
@@ -587,6 +592,12 @@ Ox.ClipPanel = function(options, self) {
&& self.options.sort[0].operator == '+';
}
+ function hasVolume() {
+ return self.options.editable
+ && self.options.sort && self.options.sort.length
+ && self.options.sort[0].key == 'index'
+ }
+
function joinClips() {
var clips = getEditable(self.options.selected).map(function(id) {
return Ox.clone(Ox.getObjectById(self.options.clips, id));
diff --git a/source/UI/js/Video/VideoAnnotationPanel.js b/source/UI/js/Video/VideoAnnotationPanel.js
index 639fa1fa..5ce19326 100644
--- a/source/UI/js/Video/VideoAnnotationPanel.js
+++ b/source/UI/js/Video/VideoAnnotationPanel.js
@@ -109,6 +109,11 @@ Ox.VideoAnnotationPanel = function(options, self) {
})
.options(options || {})
.update({
+ enableSubtitles: function() {
+ self.$player.forEach(function($player) {
+ $player.options('enableSubtitles', self.options.enableSubtitles);
+ });
+ },
height: setSizes,
'in': function() {
setPoint('in', self.options['in']);
@@ -967,7 +972,8 @@ Ox.VideoAnnotationPanel = function(options, self) {
'equal', 'f', 'g', 'h', 'i', 'minus', 'n', 'o',
'openbracket', 'p', 'shift_0', 'shift_equal',
'shift_g', 'shift_i', 'shift_minus', 'shift_o',
- 'slash', 'space'
+ 'slash', 'space',
+ 'control_c', 'control_v',
].forEach(function(key) {
key = 'key.' + key;
self.$annotationPanel.bindEvent(key, function() {
@@ -1744,6 +1750,9 @@ Ox.VideoAnnotationPanel = function(options, self) {
self.$annotationPanel[i].removeItem(id);
};
*/
+ that.playInToOut = function() {
+ self.$player[0].playInToOut();
+ }
return that;
diff --git a/source/UI/js/Video/VideoEditPanel.js b/source/UI/js/Video/VideoEditPanel.js
index 0a4f8627..cc40507e 100644
--- a/source/UI/js/Video/VideoEditPanel.js
+++ b/source/UI/js/Video/VideoEditPanel.js
@@ -266,9 +266,6 @@ Ox.VideoEditPanel = function(options, self) {
.bindEvent({
durationchange: function(data) {
self.options.duration = data.duration;
- self.$timeline && self.$timeline.replaceWith(
- self.$timeline = getTimeline()
- );
setPosition(self.$video.options('position'), true);
self.$clipPanel.options({duration: self.options.duration});
},
diff --git a/source/UI/js/Video/VideoElement.js b/source/UI/js/Video/VideoElement.js
index 0e4e33a9..72bdfac6 100644
--- a/source/UI/js/Video/VideoElement.js
+++ b/source/UI/js/Video/VideoElement.js
@@ -31,8 +31,10 @@ Ox.VideoElement = function(options, self) {
.defaults({
autoplay: false,
loop: false,
+ muted: false,
playbackRate: 1,
- items: []
+ items: [],
+ volume: 1
})
.options(options || {})
.update({
@@ -101,7 +103,8 @@ Ox.VideoElement = function(options, self) {
self.$videos = [getVideo(), getVideo()];
self.$video = self.$videos[self.currentVideo];
self.video = self.$video[0];
- self.volume = 1;
+ self.volume = self.options.volume;
+ self.muted = self.options.muted;
self.$brightness = $('').css({
width: '100%',
height: '100%',
@@ -162,15 +165,33 @@ Ox.VideoElement = function(options, self) {
},
progress: function() {
// stop buffering if buffered to end point
- if (self.video == this && self.buffering) {
- var item = self.items[self.currentItem];
- Ox.range(self.video.buffered.length).forEach(function(i) {
- if (self.video.buffered.start(i) <= item['in']
+ var video = this,
+ item = self.items[self.currentItem],
+ nextItem = Ox.mod(self.currentItem + 1, self.numberOfItems),
+ next = self.items[nextItem],
+ nextVideo = self.$videos[Ox.mod(self.currentVideo + 1, self.$videos.length)][0];
+ if (self.video == video && (video.preload != 'none' || self.buffering)) {
+ if (clipCached(video, item)) {
+ self.video.preload = 'none';
+ self.buffering = false;
+ if (nextVideo != self.video) {
+ nextVideo.preload = 'auto';
+ }
+ }
+ } else if (!self.buffering && nextVideo == video && video.preload != 'none') {
+ if (clipCached(video, next)) {
+ video.preload = 'none';
+ }
+ }
+ function clipCached(video, item) {
+ var cached = false
+ Ox.range(video.buffered.length).forEach(function(i) {
+ if (video.buffered.start(i) <= item['in']
&& self.video.buffered.end(i) >= item.out) {
- self.video.preload = 'none';
- self.buffering = false;
+ cached = true
}
});
+ return cached
}
},
seeking: function() {
@@ -202,6 +223,10 @@ Ox.VideoElement = function(options, self) {
} else {
video = document.createElement('video');
}
+ video.playsinline = true
+ video.setAttribute('playsinline', 'playsinline')
+ video.setAttribute('webkit-playsinline', 'webkit-playsinline')
+ video.WebKitPlaysInline = true
return $(video);
};
@@ -331,7 +356,7 @@ Ox.VideoElement = function(options, self) {
function setCurrentVideo(callback) {
var css = {},
- muted = false,
+ muted = self.muted,
item = self.items[self.currentItem],
next;
Ox.Log('Video', 'sCV', item);
@@ -343,7 +368,6 @@ Ox.VideoElement = function(options, self) {
if (self.video) {
self.$videos[self.currentVideo].hide();
self.video.pause();
- muted = self.video.muted;
}
self.currentVideo = Ox.mod(self.currentVideo + 1, self.$videos.length);
self.$video = self.$videos[self.currentVideo];
@@ -352,8 +376,8 @@ Ox.VideoElement = function(options, self) {
if (self.$video.attr('src') != item.src) {
self.loadedMetadata && Ox.Log('Video', 'caching next item failed, reset src');
self.video.src = item.src;
- self.video.preload = 'auto';
}
+ self.video.preload = 'auto';
self.video.volume = getVolume();
self.video.playbackRate = self.options.playbackRate;
self.$video.css(css);
@@ -530,8 +554,11 @@ Ox.VideoElement = function(options, self) {
/*@
muted get/set muted
@*/
- that.muted = function() {
- return getset('muted', arguments[0]);
+ that.muted = function(value) {
+ if (!Ox.isUndefined(value)) {
+ self.muted = value;
+ }
+ return getset('muted', value);
};
/*@
diff --git a/source/UI/js/Video/VideoPlayer.js b/source/UI/js/Video/VideoPlayer.js
index 36c2822b..9a15bcf4 100644
--- a/source/UI/js/Video/VideoPlayer.js
+++ b/source/UI/js/Video/VideoPlayer.js
@@ -444,7 +444,9 @@ Ox.VideoPlayer = function(options, self) {
self.$video = Ox.VideoElement({
items: self.video,
loop: self.options.loop,
- playbackRate: self.options.playbackRate
+ muted: self.options.muted,
+ playbackRate: self.options.playbackRate,
+ volume: self.options.volume
})
.bindEvent(Ox.extend({
durationchange: durationchange,
@@ -1792,20 +1794,22 @@ Ox.VideoPlayer = function(options, self) {
function goToNext(type, direction) {
// type can be 'chapter' or 'result'
var position, positions;
- if (type == 'chapter') {
+ if (type == 'chapter' && self.options.chapters) {
positions = self.options.chapters.map(function(chapter) {
return chapter.position;
});
- } else if (type == 'result') {
+ } else if (type == 'result' && self.results) {
positions = Ox.unique(self.results.map(function(result) {
return result['in'];
}));
}
- position = Ox.nextValue(positions, self.options.position, direction);
- setPosition(position);
- that.triggerEvent('position', {
- position: self.options.position
- });
+ if (positions) {
+ position = Ox.nextValue(positions, self.options.position, direction);
+ setPosition(position);
+ that.triggerEvent('position', {
+ position: self.options.position
+ });
+ }
}
function goToPoint() {
diff --git a/source/UI/js/Video/VideoPlayerPanel.js b/source/UI/js/Video/VideoPlayerPanel.js
index 1b376d81..336277e4 100644
--- a/source/UI/js/Video/VideoPlayerPanel.js
+++ b/source/UI/js/Video/VideoPlayerPanel.js
@@ -478,7 +478,7 @@ Ox.VideoPlayerPanel = function(options, self) {
}
function getAnnotations() {
- return Ox.flatten(self.options.layers.map(function(layer) {
+ return !self.options.layers ? [] : Ox.flatten(self.options.layers.map(function(layer) {
return layer.items.map(function(item) {
return {id: item.id, 'in': item['in'], out: item.out, text: item.value};
});
@@ -722,6 +722,10 @@ Ox.VideoPlayerPanel = function(options, self) {
self.$videoPanel.toggleElement(1);
};
+ that.playInToOut = function() {
+ self.$video.playInToOut();
+ };
+
return that;
}
diff --git a/source/UI/json/locale.tr.json b/source/UI/json/locale.tr.json
new file mode 100644
index 00000000..7f671f86
--- /dev/null
+++ b/source/UI/json/locale.tr.json
@@ -0,0 +1,281 @@
+{
+ ", doubleclick to edit": ", düzenlemek için çift tıkla",
+ "Add": "Ekle",
+ "Add Files": "Dosya Ekle",
+ "Add Place": "Yer Ekle",
+ "Add a condition": "koşul ekle",
+ "Add a group of conditions": "Bir grup koşul ekle",
+ "Add column after": "Sonrasına sütun ekle",
+ "Add column before": "Önce sütun ekle",
+ "Add row above": "Üste satır ekle",
+ "Add row below": "Altına satır ekle",
+ "Add {0}": "{0} ekle",
+ "Adding...": "Ekleniyor..",
+ "All": "Tüm",
+ "Alternative Names": "Alternatif İsimler",
+ "Area": "Alan",
+ "At Current Position": "Mevcut Konumda",
+ "Blockquote": "Blok halinde alıntıla",
+ "Bold": "Kalın",
+ "Borough": "Mahalle",
+ "Building": "Bina",
+ "Bullets": "Madde İşaretleri",
+ "By Duration": "Süreye göre",
+ "By Position": "Pozisyona Göre",
+ "By Text": "Metne gore",
+ "Cancel": "İptal et",
+ "Cancel/Deselect": "İptal et/Seçimi kaldır",
+ "Cancelled": "İptal edildi",
+ "City": "Şehir",
+ "Clear": "Temizle",
+ "Clear Event": "Etkinliği temizle",
+ "Clear Place": "Yeri Temizle",
+ "Clearing...": "Temizleniyor",
+ "Click to hide": "gizlemek için tıklayın",
+ "Click to pan, doubleclick to zoom": "Kaydırmak için tıklayın, yakınlaştırmak için çift tıklayın",
+ "Click to select": "Seçmek için tıklayın",
+ "Click to select, doubleclick to edit": "Seçmek için tıklayın, düzenlemek için çift tıklayın",
+ "Click to show": "Göstermek için tıklayın",
+ "Close": "Kapat",
+ "Complete": "Tamamlandı",
+ "Country": "Ülke",
+ "Date": "Tarih",
+ "Date Created": "Oluşturulma Tarihi",
+ "Date Modified": "Değiştirilme Tarihi",
+ "Define": "Tanımla",
+ "Define Event": "Etkinlik Tanımla",
+ "Define Place": "Yer Tanımla",
+ "Delete Annotation": "Ek Açıklamayı Sil",
+ "Deselect": "Seçimi Kaldır",
+ "Deselect Annotation": "Ek Açıklamanın Seçimini Kaldır",
+ "Don't Shuffle": "Karıştırma",
+ "Done": "Bitti",
+ "Download": "İndir",
+ "Download Selection...": "Seçimi İndir...",
+ "Download Video...": "Video İndir",
+ "Drag to resize": "Yeniden boyutlandırmak için sürükleyin",
+ "Drag to resize or click to hide": "Yeniden boyutlandırmak için sürükleyin veya gizlemek için tıklayın",
+ "Drag to resize or click to toggle map": "eniden boyutlandırmak için sürükleyin veya haritayı değiştirmek için tıklayın",
+ "Duration": "Süre",
+ "East": "Doğu",
+ "Edit": "Kurgula",
+ "Edit Annotation": "Ek Açıklamayı Kurgula",
+ "Edit/Submit": "Kurgula/Gönder",
+ "Editing Options": "Kurgulama Seçenekleri",
+ "Embed Selection...": "Seçimi Yerleştir",
+ "End": "Son",
+ "Enter Fullscreen": "Tam Ekran Gir",
+ "Event": "Etkinlik",
+ "Events": "Etkinlikler",
+ "Examples...": "Örnekler...",
+ "Exit Fullscreen": "Tam Ekrandan Çık",
+ "Feature": "Özellik",
+ "Find": "Bul",
+ "Find in All {0}": "Tüm {0} İçinde Bul",
+ "Find in List": "Listede Bul",
+ "Find in This {0}": "Bu {0}'da Bul",
+ "Find on Map": "Haritada Bul",
+ "Find...": "Bul...",
+ "Find: All": "Bul: Tümü",
+ "Find: Alternative Names": "Bul: Alternatif İsimler",
+ "Find: Geoname": "Bul: Geoisim",
+ "Find: Name": "Bul: İsim",
+ "Flag": "Bayrak",
+ "Font Size": "Yazı Tipi Boyutu",
+ "Generating Documentation...": "Dokümantasyon Oluşturuyor...",
+ "Geoname": "Geo isim",
+ "Go One Frame Back": "Bir Kare Geri Git",
+ "Go One Frame Forward": "Bir Kare İleri Git",
+ "Go One Line Down": "Bir Satır Aşağı Git",
+ "Go One Line Up": "Bir Satır Yukarı Git",
+ "Go One Second Back": "Bir Saniye Geri Git",
+ "Go One Second Forward": "Bir Saniye İleriye Git",
+ "Go to First Frame": "İlk Kareye Git",
+ "Go to In Point": "Giriş Noktasına Git",
+ "Go to Last Frame": "Son Kareye Git",
+ "Go to Next Annotation": "Sonraki Açıklamaya Git",
+ "Go to Next Cut": "Sonraki Kesime Git",
+ "Go to Next Result": "Sonraki Sonuca Git",
+ "Go to Out Point": "Çıkış Noktasına Git",
+ "Go to Poster Frame": "Poster Çerçevesine Git",
+ "Go to Previous Annotation": "Önceki Ek Açıklamaya Git",
+ "Go to Previous Cut": "Önceki Kesmeye Git",
+ "Go to Previous Result": "Önceki Sonuca Git",
+ "Headline": "Başlık",
+ "Hide": "Sakla",
+ "Hide Controls": "Kontrolleri Gizle",
+ "Hide Labels": "Etiketleri Gizle",
+ "Home": "Ana Sayfa",
+ "Home Channel": "Ana Kanal",
+ "Image": "İmge",
+ "Import Annotations...": "Ek Açıklamaları İçe Aktar...",
+ "In Current Selection": "Mevcut Seçimde",
+ "Insert": "Ekle",
+ "Insert HTML": "HTML Ekle",
+ "Insert...": "Ekle...",
+ "Italic": "İtalik",
+ "Join Clip(s) at Cuts": "Klip(ler)i Kesimlerde Birleştir",
+ "Keyboard Shortcuts": "Klavye Kısayolları",
+ "Keyboard Shortcuts...": "Klavye Kısayolları...",
+ "Large": "Büyük",
+ "Large Player": "Büyük Oynatıcı",
+ "Larger": "Daha Büyük",
+ "Latitude": "Enlem",
+ "Limit to": "Sınırla",
+ "Linebreak": "Satır Sonu",
+ "Link": "Link",
+ "List": "Liste",
+ "Longitude": "Boylam",
+ "Make Clip(s) Static": "Klip(ler)i Statik Yap",
+ "Map Options": "Harita Seçenekleri",
+ "Match": "Eşleme",
+ "Matches": "Eşlemeler",
+ "Medium": "Orta",
+ "Monospace": "Monospace",
+ "Mute": "Sessiz",
+ "Mute/Unmute": "Sesi Kapat/Sesi Aç",
+ "Name": "İsim",
+ "New Event": "Yeni Etkinlik",
+ "New Place": "Yeni Yer",
+ "Next": "Sıradaki",
+ "Next Channel": "Yeni Kanal",
+ "Next Result": "Bir Sonraki Sonuç",
+ "No file selected": "Seçili dosya yok",
+ "No files selected": "Seçili dosya yok",
+ "North": "Kuzey",
+ "Numbers": "Sayılar",
+ "Open in New Tab": "Yeni Sekmede Aç",
+ "Options": "Seçenekler",
+ "Other": "Diğer",
+ "Paragraph": "Paragraf",
+ "Pause": "Durdur",
+ "Paused": "Durduruldu",
+ "Person": "Kişi",
+ "Place": "Yer",
+ "Place or Event": "Yer ya da Etkinlik",
+ "Play": "Oynat",
+ "Play Current Track": "Seçili Parçayı Çal",
+ "Play In to Out": "Giriş-Çıkış Arasında Oynat",
+ "Play Next Track": "Bir Sonraki Parçayı Çal",
+ "Play/Pause": "Başlat/Durdur",
+ "Previous": "Önceki",
+ "Previous Channel": "Önceki Kanal",
+ "Previous Result": "Önceki Sonuç",
+ "Region": "Bölge",
+ "Reload": "Yeniden Yükle",
+ "Remove": "Kaldır",
+ "Remove Event": "Etkinliği Kaldır",
+ "Remove File": "Dosyayı Kaldır",
+ "Remove Place": "Yeri Kaldır",
+ "Remove this column": "Bu sütunu kaldır",
+ "Remove this condition": "Bu koşulu kaldır",
+ "Remove this group of conditions": "Bu koşul grubunu kaldır ",
+ "Remove this row": "Bu satırı kaldır",
+ "Removing...": "Kaldırıyor...",
+ "Repeat All": "Hepsini Tekrarla",
+ "Repeat None": "Hiçbirini Tekrarlama",
+ "Repeat One": "Birini Tekrarla",
+ "Reset this condition": "Bu koşulu sıfırla",
+ "Resolution": "Çözünürlük",
+ "Restart": "Yeniden Başlat",
+ "Restore Defaults": "Varsayılanları Geri Yükle",
+ "Results": "Sonuçlar",
+ "Resume": "Devam Et",
+ "Right-to-Left": "Sağdan Sola",
+ "Run Tests": "Testleri Çalıştır",
+ "Save Changes": "Değişiklikleri Kaydet",
+ "Save as Smart List": "Akıllı Liste olarak Kaydet",
+ "Scale to Fill": "Doldurmak için Ölç",
+ "Scale to Fit": "Sığacak Şekilde Ölç",
+ "Scroll to Player": "Oyuncuya Kaydır",
+ "Select Current Annotation": "Geçerli Ek Açılamayı Seç",
+ "Select Current Cut": "Geçerli Kesimi Seç",
+ "Select File": "Dosya Seç",
+ "Select Next Annotation": "Sonraki Açıklamayı Seç",
+ "Select Previous Annotation": "Önceki Açıklamayı Seç",
+ "Set ": "Berlie",
+ "Set In Point": "Giriş Noktası Belirle",
+ "Set Out Point": "Çıkış Noktası Belirle",
+ "Set Poster Frame": "Poster Karesi Belirle",
+ "Settings": "Ayarlar",
+ "Show Annotations": "Ek Açıklamayı Göster",
+ "Show Controls": "Kontrol Çubuğunu Göster",
+ "Show Dates": "Tarihleri Göster",
+ "Show Labels": "Etiketleri Göster",
+ "Show Other": "Diğerini Göster",
+ "Show People": "İnsanları Göster",
+ "Show Places": "Yerleri Göster",
+ "Show Remaining Time": "Kalan Zamanı Göster",
+ "Show Subtitles": "Altyazıları Göster",
+ "Show Users": "Kullanıcıları Göster",
+ "Shuffle": "Karıştır",
+ "Small": "Küçük",
+ "Small Player": "Küçük Oynatıcı",
+ "Smaller": "Daha Küçük",
+ "Sort Annotations": "Ek Açıklamayı Düzenle",
+ "South": "Güney",
+ "Split Clip(s) at Cuts": "Klip(ler)i Kesimlerde Böl",
+ "Start": "Başlat",
+ "Street": "Sokak",
+ "Strike": "Üstünü Çiz",
+ "Subscript": "Alt Simge",
+ "Subtitles": "Altyazılar",
+ "Superscript": "Üst Simge",
+ "Switch Theme": "Temayı Değiştir",
+ "Timeline": "Zaman Çizelgesi",
+ "Title": "Başlık",
+ "Turn Volume Down": "Sesi Kıs",
+ "Turn Volume Up": "Sesi Aç",
+ "Type": "Tür",
+ "Underline": "Altını Çiz",
+ "Undo Changes": "Değişiklikleri Geri Al",
+ "Unmute": "Sesi Aç",
+ "Untitled": "İsimsiz",
+ "User": "Kullanıcı",
+ "Valid": "Geçerli",
+ "View": "Görüntüle",
+ "View Live": "Canlı Görüntüle",
+ "View Source": "Kaynağı Görüntüle",
+ "View as Grid": "Izgara Olarak Görüntüle",
+ "View as List": "Liste Olarak Görüntüle",
+ "Volume": "Ses Seviyesi",
+ "West": "Batı",
+ "add": "ekle",
+ "all": "hepsi",
+ "and": "ve",
+ "annotations": "ek açıklamalar",
+ "any": "herhangi",
+ "ascending": "artan",
+ "bracket": "parantez",
+ "contains": "içerir",
+ "descending": "azalan",
+ "does not contain": "içermez",
+ "does not end with": "ile bitmiyor",
+ "does not start with": "ile başlamaz",
+ "ends with": "ile biter",
+ "file": "dosya",
+ "files": "dosyalar",
+ "in": "içinde",
+ "is": "",
+ "is after": "sonra",
+ "is before": "önce",
+ "is between": "arasında",
+ "is greater than": "'den büyüktür",
+ "is less than": "daha azdır",
+ "is not": "değil",
+ "is not after": "sonra değil",
+ "is not before": "önce değil",
+ "is not between": "arasında değil",
+ "is not greater than": "daha büyük değil",
+ "is not less than": "daha az değil",
+ "items": "öğeler",
+ "of the following conditions": "aşağıdaki koşullardan",
+ "order": "sırala",
+ "sorted by": "göre sırala",
+ "starts with": "ile başla",
+ "unknown": "bilinmiyor",
+ "{0} Century": "Yüzyıl",
+ "{0} Century BC": "Yüzyıl MÖ",
+ "{0} Millennium": "{0} Milenyum",
+ "{0} Millennium BC": "MÖ {0} Milenyum"
+}
diff --git a/source/UI/svg/markerChapter.svg b/source/UI/svg/markerChapter.svg
index a967b034..77c27515 100644
--- a/source/UI/svg/markerChapter.svg
+++ b/source/UI/svg/markerChapter.svg
@@ -1,3 +1,3 @@
- |