Add CSV/TSV/PSV rainbow highlighters (light/dark) support
build / build (push) Has been cancelled
build / publish (push) Has been cancelled

This commit is contained in:
ema
2026-04-17 11:18:49 +08:00
parent ed8c2997f5
commit 0cda83c26d
12 changed files with 436 additions and 5 deletions
@@ -0,0 +1,43 @@
// Copyright © 2017-2026 QL-Win Contributors
//
// This file is part of QuickLook program.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using QuickLook.Common.Commands;
using QuickLook.Common.Controls;
using QuickLook.Common.Helpers;
using QuickLook.Common.Plugin;
using QuickLook.Common.Plugin.MoreMenu;
using System.Collections.Generic;
using System.IO;
namespace QuickLook.Plugin.CsvViewer;
public sealed partial class Plugin : IViewer, IMoreMenu
{
public IEnumerable<IMenuItem> MenuItems => GetMenuItems();
public IEnumerable<IMenuItem> GetMenuItems()
{
string translationFile = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Translations.config");
yield return new MoreMenuItem()
{
Icon = FontSymbols.Code,
Header = TranslationHelper.Get("MW_ReopenAsTextPreview", translationFile),
Command = new RelayCommand(() => PluginHelper.InvokePluginPreview("QuickLook.Plugin.TextViewer", _currentPath)),
};
}
}
@@ -16,15 +16,17 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using QuickLook.Common.Plugin;
using QuickLook.Common.Plugin.MoreMenu;
using System;
using System.IO;
using System.Windows;
namespace QuickLook.Plugin.CsvViewer;
public sealed class Plugin : IViewer
public sealed partial class Plugin : IViewer, IMoreMenu
{
private CsvViewerPanel _panel;
private string _currentPath;
public int Priority => 0;
@@ -49,6 +51,8 @@ public sealed class Plugin : IViewer
public void View(string path, ContextObject context)
{
_currentPath = path;
_panel = new CsvViewerPanel();
context.ViewerContent = _panel;
@@ -83,6 +83,12 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Translations.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\GitVersion.cs">
<Link>Properties\GitVersion.cs</Link>
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<Translations>
<ar>
<MW_ReopenAsTextPreview>إعادة فتح كمعاينة نص</MW_ReopenAsTextPreview>
</ar>
<ca>
<MW_ReopenAsTextPreview>Torna a obrir com a previsualització de text</MW_ReopenAsTextPreview>
</ca>
<de>
<MW_ReopenAsTextPreview>Als Text-Vorschau erneut öffnen</MW_ReopenAsTextPreview>
</de>
<en>
<MW_ReopenAsTextPreview>Reopen as text preview</MW_ReopenAsTextPreview>
</en>
<es>
<MW_ReopenAsTextPreview>Reabrir como vista previa de texto</MW_ReopenAsTextPreview>
</es>
<fr>
<MW_ReopenAsTextPreview>Rouvrir en aperçu texte</MW_ReopenAsTextPreview>
</fr>
<it>
<MW_ReopenAsTextPreview>Riapri come anteprima testo</MW_ReopenAsTextPreview>
</it>
<ja-JP>
<MW_ReopenAsTextPreview>テキストとして再度開く</MW_ReopenAsTextPreview>
</ja-JP>
<ko>
<MW_ReopenAsTextPreview>텍스트 미리보기로 다시 열기</MW_ReopenAsTextPreview>
</ko>
<nb-NO>
<MW_ReopenAsTextPreview>Åpne på nytt som tekst-forhåndsvisning</MW_ReopenAsTextPreview>
</nb-NO>
<nl-NL>
<MW_ReopenAsTextPreview>Opnieuw openen als tekst-voorbeeld</MW_ReopenAsTextPreview>
</nl-NL>
<pl>
<MW_ReopenAsTextPreview>Otwórz ponownie jako podgląd tekstu</MW_ReopenAsTextPreview>
</pl>
<pt-BR>
<MW_ReopenAsTextPreview>Reabrir como visualização de texto</MW_ReopenAsTextPreview>
</pt-BR>
<pt-PT>
<MW_ReopenAsTextPreview>Reabrir como pré-visualização de texto</MW_ReopenAsTextPreview>
</pt-PT>
<ro>
<MW_ReopenAsTextPreview>Redeschideți ca previzualizare text</MW_ReopenAsTextPreview>
</ro>
<ru-RU>
<MW_ReopenAsTextPreview>Переоткрыть как предварительный просмотр текста</MW_ReopenAsTextPreview>
</ru-RU>
<tr-TR>
<MW_ReopenAsTextPreview>Metin önizlemesi olarak yeniden aç</MW_ReopenAsTextPreview>
</tr-TR>
<uk-UA>
<MW_ReopenAsTextPreview>Перевідкрити як попередній перегляд тексту</MW_ReopenAsTextPreview>
</uk-UA>
<vi>
<MW_ReopenAsTextPreview>Mở lại dưới dạng xem trước văn bản</MW_ReopenAsTextPreview>
</vi>
<zh-CN>
<MW_ReopenAsTextPreview>重新作为文本预览打开</MW_ReopenAsTextPreview>
</zh-CN>
<zh-TW>
<MW_ReopenAsTextPreview>重新作為文本預覽開啟</MW_ReopenAsTextPreview>
</zh-TW>
<mr>
<MW_ReopenAsTextPreview>पुनः टेक्स्ट पूर्वावलोकन म्हणून उघडा</MW_ReopenAsTextPreview>
</mr>
<hi>
<MW_ReopenAsTextPreview>टेक्स्ट पूर्वावलोकन के रूप में फिर से खोलें</MW_ReopenAsTextPreview>
</hi>
<he>
<MW_ReopenAsTextPreview>פתח מחדש כתצוגת טקסט</MW_ReopenAsTextPreview>
</he>
<hu-HU>
<MW_ReopenAsTextPreview>Újranyitás szöveg előnézetként</MW_ReopenAsTextPreview>
</hu-HU>
<id-ID>
<MW_ReopenAsTextPreview>Buka ulang sebagai pratinjau teks</MW_ReopenAsTextPreview>
</id-ID>
<sk>
<MW_ReopenAsTextPreview>Znova otvoriť ako náhľad textu</MW_ReopenAsTextPreview>
</sk>
<el>
<MW_ReopenAsTextPreview>Επανανοίξτε ως προεπισκόπηση κειμένου</MW_ReopenAsTextPreview>
</el>
<sv>
<MW_ReopenAsTextPreview>Öppna på nytt som textförhandsgranskning</MW_ReopenAsTextPreview>
</sv>
</Translations>
@@ -19,6 +19,7 @@ using QuickLook.Common.Commands;
using QuickLook.Common.Controls;
using QuickLook.Common.Helpers;
using QuickLook.Common.Plugin.MoreMenu;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
@@ -30,14 +31,16 @@ public sealed partial class Plugin
public IEnumerable<IMenuItem> GetMenuItems()
{
string translationFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Translations.config");
string extension = "";
string extension = string.Empty;
try
{
// Get the file extension in lowercase for comparison
extension = Path.GetExtension(_currentPath).ToLower();
} catch (System.Exception)
{
}
catch (Exception)
{
}
var reopen = extension switch
{
@@ -58,6 +61,14 @@ public sealed partial class Plugin
Header = TranslationHelper.Get("MW_ReopenAsImagePreview", translationFile),
Command = new RelayCommand(() => PluginHelper.InvokePluginPreview("QuickLook.Plugin.ImageViewer", _currentPath)),
},
// CSV, TSV, PSV <=> CSV viewer
".csv" or ".tsv" or ".psv" => new MoreMenuItem()
{
Icon = FontSymbols.Code,
Header = TranslationHelper.Get("MW_ReopenAsCsvPreview", translationFile),
Command = new RelayCommand(() => PluginHelper.InvokePluginPreview("QuickLook.Plugin.CsvViewer", _currentPath)),
},
_ => null,
};
@@ -0,0 +1,94 @@
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Rendering;
using System.Windows.Media;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Dark;
/// <summary>
/// Rainbow CSV Highlighting Definition
/// </summary>
public class CSVHighlightingDefinition : DarkHighlightingDefinition
{
public override string Name => "CSV";
public override string Extension => ".csv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new RainbowTransformer(',')];
public class RainbowTransformer(char sep) : DocumentColorizingTransformer
{
private readonly char _sep = sep;
private readonly Brush[] _brushes =
[
Colors.OrangeRed.ToBrush(),
Colors.CornflowerBlue.ToBrush(),
Colors.LimeGreen.ToBrush(),
Colors.MediumVioletRed.ToBrush(),
Colors.Peru.ToBrush(),
Colors.CadetBlue.ToBrush(),
Colors.Khaki.ToBrush(),
Colors.MediumSlateBlue.ToBrush(),
];
protected override void ColorizeLine(DocumentLine line)
{
var text = CurrentContext.Document.GetText(line);
if (string.IsNullOrEmpty(text))
return;
int offset = line.Offset;
int i = 0;
int col = 0;
int len = text.Length;
while (i < len)
{
int contentStart = i;
int contentEnd = i;
if (text[i] == '"')
{
contentStart = i + 1;
i++;
while (i < len)
{
if (text[i] == '"')
{
if (i + 1 < len && text[i + 1] == '"')
{
i += 2;
continue;
}
else
{
contentEnd = i;
i++;
break;
}
}
i++;
}
while (i < len && text[i] != _sep) i++;
}
else
{
contentStart = i;
while (i < len && text[i] != _sep) i++;
contentEnd = i;
}
if (contentEnd > contentStart)
{
int a = offset + contentStart;
int b = offset + contentEnd;
var brush = _brushes[col % _brushes.Length];
ChangeLinePart(a, b, el => el.TextRunProperties.SetForegroundBrush(brush));
}
if (i < len && text[i] == _sep) i++;
col++;
}
}
}
}
@@ -0,0 +1,15 @@
using ICSharpCode.AvalonEdit.Rendering;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Dark;
/// <summary>
/// Rainbow PSV Highlighting Definition
/// </summary>
public class PSVHighlightingDefinition : DarkHighlightingDefinition
{
public override string Name => "PSV";
public override string Extension => ".psv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new CSVHighlightingDefinition.RainbowTransformer('|')];
}
@@ -0,0 +1,15 @@
using ICSharpCode.AvalonEdit.Rendering;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Dark;
/// <summary>
/// Rainbow TSV Highlighting Definition
/// </summary>
public class TSVHighlightingDefinition : DarkHighlightingDefinition
{
public override string Name => "TSV";
public override string Extension => ".tsv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new CSVHighlightingDefinition.RainbowTransformer('\t')];
}
@@ -0,0 +1,102 @@
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Rendering;
using System.Windows.Media;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Light;
/// <summary>
/// Rainbow CSV Highlighting Definition
/// </summary>
public class CSVHighlightingDefinition : LightHighlightingDefinition
{
public override string Name => "CSV";
public override string Extension => ".csv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new RainbowTransformer(',')];
public class RainbowTransformer(char sep) : DocumentColorizingTransformer
{
private readonly char _sep = sep;
private readonly Brush[] _brushes =
[
Colors.DarkRed.ToBrush(),
Colors.DarkBlue.ToBrush(),
Colors.DarkGreen.ToBrush(),
Colors.DarkMagenta.ToBrush(),
Colors.SaddleBrown.ToBrush(),
Colors.Teal.ToBrush(),
Colors.Olive.ToBrush(),
Colors.SlateBlue.ToBrush(),
];
protected override void ColorizeLine(DocumentLine line)
{
var text = CurrentContext.Document.GetText(line);
if (string.IsNullOrEmpty(text))
return;
int offset = line.Offset;
int i = 0;
int col = 0;
int len = text.Length;
while (i < len)
{
int fieldStart = i;
int contentStart = i;
int contentEnd = i;
if (text[i] == '"')
{
// quoted field
contentStart = i + 1;
i++;
while (i < len)
{
if (text[i] == '"')
{
if (i + 1 < len && text[i + 1] == '"')
{
// escaped quote
i += 2;
continue;
}
else
{
// end quote
contentEnd = i;
i++;
break;
}
}
i++;
}
// skip to separator
while (i < len && text[i] != _sep) i++;
}
else
{
// unquoted
contentStart = i;
while (i < len && text[i] != _sep) i++;
contentEnd = i;
}
// color content [contentStart, contentEnd)
if (contentEnd > contentStart)
{
int a = offset + contentStart;
int b = offset + contentEnd;
var brush = _brushes[col % _brushes.Length];
ChangeLinePart(a, b, el => el.TextRunProperties.SetForegroundBrush(brush));
}
// advance past separator
if (i < len && text[i] == _sep) i++;
col++;
}
}
}
}
@@ -0,0 +1,15 @@
using ICSharpCode.AvalonEdit.Rendering;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Light;
/// <summary>
/// Rainbow PSV Highlighting Definition
/// </summary>
public class PSVHighlightingDefinition : LightHighlightingDefinition
{
public override string Name => "PSV";
public override string Extension => ".psv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new CSVHighlightingDefinition.RainbowTransformer('|')];
}
@@ -0,0 +1,15 @@
using ICSharpCode.AvalonEdit.Rendering;
namespace QuickLook.Plugin.TextViewer.Themes.HighlightingDefinitions.Light;
/// <summary>
/// Rainbow TSV Highlighting Definition
/// </summary>
public class TSVHighlightingDefinition : LightHighlightingDefinition
{
public override string Name => "TSV";
public override string Extension => ".tsv";
public override DocumentColorizingTransformer[] LineTransformers { get; } = [new CSVHighlightingDefinition.RainbowTransformer('\t')];
}
@@ -7,6 +7,7 @@
<Editor_SelectAll>حدد الكل</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>إعادة فتح كمعاينة HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>إعادة فتح كمعاينة صورة</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>إعادة فتح كمعاينة CSV</MW_ReopenAsCsvPreview>
</ar>
<ca>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -14,6 +15,7 @@
<Editor_SelectAll>Selecciona-ho tot</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Torna a obrir com a previsualització HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Torna a obrir com a previsualització d'imatge</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Torna a obrir com a previsualització CSV</MW_ReopenAsCsvPreview>
</ca>
<de>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -21,6 +23,7 @@
<Editor_SelectAll>Alles markieren</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Als HTML-Vorschau erneut öffnen</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Als Bildvorschau erneut öffnen</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Als CSV-Vorschau erneut öffnen</MW_ReopenAsCsvPreview>
</de>
<en>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -28,6 +31,7 @@
<Editor_SelectAll>Select All</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Reopen as HTML preview</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Reopen as image preview</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Reopen as CSV preview</MW_ReopenAsCsvPreview>
</en>
<es>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -35,6 +39,7 @@
<Editor_SelectAll>Seleccionar Todo</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Reabrir como vista previa HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Reabrir como vista previa de imagen</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Reabrir como vista previa CSV</MW_ReopenAsCsvPreview>
</es>
<fr>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -42,6 +47,7 @@
<Editor_SelectAll>Tout sélectionner</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Rouvrir en aperçu HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Rouvrir en aperçu d'image</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Rouvrir en aperçu CSV</MW_ReopenAsCsvPreview>
</fr>
<it>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -49,6 +55,7 @@
<Editor_SelectAll>Seleziona tutto</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Riapri come anteprima HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Riapri come anteprima immagine</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Riapri come anteprima CSV</MW_ReopenAsCsvPreview>
</it>
<ja-JP>
<Editor_FontFamily>Consolas,Meiryo UI,MS UI Gothic,MS Gothic</Editor_FontFamily>
@@ -56,6 +63,7 @@
<Editor_SelectAll>すべて選択</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>HTML プレビューとして再度開く</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>画像プレビューとして再度開く</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>CSV プレビューとして再度開く</MW_ReopenAsCsvPreview>
</ja-JP>
<ko>
<Editor_FontFamily>Consolas,Malgun Gothic,Gulim</Editor_FontFamily>
@@ -63,6 +71,7 @@
<Editor_SelectAll>모두 선택</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>HTML 미리보기로 다시 열기</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>이미지 미리보기로 다시 열기</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>CSV 미리보기로 다시 열기</MW_ReopenAsCsvPreview>
</ko>
<nb-NO>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -70,6 +79,7 @@
<Editor_SelectAll>Merk alt</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Åpne på nytt som HTML-forhåndsvisning</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Åpne på nytt som bilde-forhåndsvisning</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Åpne på nytt som CSV-forhåndsvisning</MW_ReopenAsCsvPreview>
</nb-NO>
<nl-NL>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -77,6 +87,7 @@
<Editor_SelectAll>Alles selecteren</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Opnieuw openen als HTML-voorbeeld</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Opnieuw openen als afbeelding-voorbeeld</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Opnieuw openen als CSV-voorbeeld</MW_ReopenAsCsvPreview>
</nl-NL>
<pl>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -84,6 +95,7 @@
<Editor_SelectAll>Zaznacz wszystko</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Otwórz ponownie jako podgląd HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Otwórz ponownie jako podgląd obrazu</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Otwórz ponownie jako podgląd CSV</MW_ReopenAsCsvPreview>
</pl>
<pt-BR>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -91,6 +103,7 @@
<Editor_SelectAll>Selecionar tudo</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Reabrir como visualização HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Reabrir como visualização de imagem</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Reabrir como visualização CSV</MW_ReopenAsCsvPreview>
</pt-BR>
<pt-PT>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -98,6 +111,7 @@
<Editor_SelectAll>Selecionar tudo</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Reabrir como pré-visualização HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Reabrir como pré-visualização de imagem</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Reabrir como pré-visualização CSV</MW_ReopenAsCsvPreview>
</pt-PT>
<ro>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -105,6 +119,7 @@
<Editor_SelectAll>Selectați tot</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Redeschideți ca previzualizare HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Redeschideți ca previzualizare imagine</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Redeschideți ca previzualizare CSV</MW_ReopenAsCsvPreview>
</ro>
<ru-RU>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -112,6 +127,7 @@
<Editor_SelectAll>Выделить всё</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Переоткрыть как предварительный просмотр HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Переоткрыть как предварительный просмотр изображения</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Переоткрыть как предварительный просмотр CSV</MW_ReopenAsCsvPreview>
</ru-RU>
<tr-TR>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -119,6 +135,7 @@
<Editor_SelectAll>Tümünü seç</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>HTML önizlemesi olarak yeniden aç</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Resim önizlemesi olarak yeniden aç</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>CSV önizlemesi olarak yeniden aç</MW_ReopenAsCsvPreview>
</tr-TR>
<uk-UA>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -126,6 +143,7 @@
<Editor_SelectAll>Виділити Все</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Перевідкрити як попередній перегляд HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Перевідкрити як попередній перегляд зображення</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Перевідкрити як попередній перегляд CSV</MW_ReopenAsCsvPreview>
</uk-UA>
<vi>
<Editor_FontFamily>Consolas</Editor_FontFamily>
@@ -133,6 +151,7 @@
<Editor_SelectAll>Chọn tất cả</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>Mở lại dưới dạng xem trước HTML</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>Mở lại dưới dạng xem trước hình ảnh</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>Mở lại dưới dạng xem trước CSV</MW_ReopenAsCsvPreview>
</vi>
<zh-CN>
<Editor_FontFamily>Consolas,Microsoft Yahei UI,Microsoft Yahei,SimSun</Editor_FontFamily>
@@ -140,6 +159,7 @@
<Editor_SelectAll>全选</Editor_SelectAll>
<MW_ReopenAsHtmlPreview>重新作为 HTML 预览打开</MW_ReopenAsHtmlPreview>
<MW_ReopenAsImagePreview>重新作为图像预览打开</MW_ReopenAsImagePreview>
<MW_ReopenAsCsvPreview>重新作为 CSV 预览打开</MW_ReopenAsCsvPreview>
</zh-CN>
<zh-TW>
<Editor_FontFamily>Consolas,Microsoft JhengHei UI,Microsoft JhengHei,MingLiU</Editor_FontFamily>