diff --git a/src/core/file.ts b/src/core/file.ts
index ffab3ea0..848a7905 100644
--- a/src/core/file.ts
+++ b/src/core/file.ts
@@ -4,6 +4,7 @@ export class KnownFileType {
public static readonly JSON = new KnownFileType('json', 'application/json');
public static readonly CSV = new KnownFileType('csv', 'text/csv');
public static readonly TSV = new KnownFileType('tsv', 'text/tab-separated-values');
+ public static readonly SSV = new KnownFileType('txt', 'text/plain');
public static readonly TXT = new KnownFileType('txt', 'text/plain');
public static readonly MARKDOWN = new KnownFileType('md', 'text/markdown');
public static readonly JS = new KnownFileType('js', 'application/javascript');
diff --git a/src/icons/desktop/extend_mdi_icons.ts b/src/icons/desktop/extend_mdi_icons.ts
new file mode 100644
index 00000000..aef2df28
--- /dev/null
+++ b/src/icons/desktop/extend_mdi_icons.ts
@@ -0,0 +1 @@
+export const extendMdiSemicolon: string = 'M15.6,2.4H8V10H15.6V6.6Z M5.6,12.4H15.56V18.368L12.368,21.752 H8.4L11.576,18.368H8V12.4Z';
diff --git a/src/locales/de.json b/src/locales/de.json
index 0c9d8e0c..f8517c57 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "Benutzerdaten löschen",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/en.json b/src/locales/en.json
index 13b4fd2b..bf02ab32 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "Clear User Data",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/es.json b/src/locales/es.json
index 94da9e96..bf1d5614 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Exportar a archivo CSV (Valores Separados por Comas)",
"Export to TSV (Tab-separated values) File": "Exportar a archivo TSV (Valores Separados por Tabulaciones)",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Archivo Markdown",
"Clear User Data": "Borrar Datos de Usuario",
"Clear All Transactions": "Eliminar Todas las Transacciones",
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 27e35403..c901295f 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Exporter vers un fichier CSV (valeurs séparées par virgules)",
"Export to TSV (Tab-separated values) File": "Exporter vers un fichier TSV (valeurs séparées par tabulations)",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Fichier Markdown",
"Clear User Data": "Effacer les données utilisateur",
"Clear All Transactions": "Effacer toutes les transactions",
diff --git a/src/locales/it.json b/src/locales/it.json
index 93e3f638..757296ae 100644
--- a/src/locales/it.json
+++ b/src/locales/it.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "Cancella dati utente",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/ja.json b/src/locales/ja.json
index 325eb0d1..1bfa525c 100644
--- a/src/locales/ja.json
+++ b/src/locales/ja.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "ユーザーデータをクリア",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/kn.json b/src/locales/kn.json
index 5125d068..e24438aa 100644
--- a/src/locales/kn.json
+++ b/src/locales/kn.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "CSV (ಕಾಮಾ-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್ಗೆ ರಫ್ತು ಮಾಡಿ",
"Export to TSV (Tab-separated values) File": "TSV (ಟ್ಯಾಬ್-ಪ್ರತ್ಯೇಕಿತ ಮೌಲ್ಯಗಳು) ಫೈಲ್ಗೆ ರಫ್ತು ಮಾಡಿ",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown ಫೈಲ್",
"Clear User Data": "ಬಳಕೆದಾರ ಡೇಟಾ ತೆರವುಗೊಳಿಸಿ",
"Clear All Transactions": "ಎಲ್ಲಾ ವಹಿವಾಟುಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index 344161e7..7072720c 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (세미콜론으로 구분된 값) 파일",
"Export to CSV (Comma-separated values) File": "CSV (쉼표로 구분된 값) 파일로 내보내기",
"Export to TSV (Tab-separated values) File": "TSV (탭으로 구분된 값) 파일로 내보내기",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown 파일",
"Clear User Data": "사용자 데이터 지우기",
"Clear All Transactions": "모든 거래 지우기",
diff --git a/src/locales/nl.json b/src/locales/nl.json
index 11d9923f..71dc59ba 100644
--- a/src/locales/nl.json
+++ b/src/locales/nl.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Exporteren naar CSV-bestand (komma-gescheiden waarden)",
"Export to TSV (Tab-separated values) File": "Exporteren naar TSV-bestand (tab-gescheiden waarden)",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown-bestand",
"Clear User Data": "Gebruikersgegevens wissen",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/pt_BR.json b/src/locales/pt_BR.json
index b5818a22..3ba9974b 100644
--- a/src/locales/pt_BR.json
+++ b/src/locales/pt_BR.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Arquivo Markdown",
"Clear User Data": "Limpar Dados do Usuário",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index df8c20b9..1413a3ca 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Значения, разделенные точкой с запятой) File",
"Export to CSV (Comma-separated values) File": "Экспорт в файл CSV (значения, разделенные запятыми)",
"Export to TSV (Tab-separated values) File": "Экспорт в файл TSV (значения, разделенные табуляцией)",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Файл Markdown",
"Clear User Data": "Очистить данные пользователя",
"Clear All Transactions": "Отчистить все транзакции",
diff --git a/src/locales/sl.json b/src/locales/sl.json
index d618cea9..fcda8774 100644
--- a/src/locales/sl.json
+++ b/src/locales/sl.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Izvozi v CSV datoteko",
"Export to TSV (Tab-separated values) File": "Izvozi v TSV datoteko",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown datoteka",
"Clear User Data": "Počisti uporabniške podatke",
"Clear All Transactions": "Počisti vse transakcije",
diff --git a/src/locales/ta.json b/src/locales/ta.json
index 9960de3d..0d2a784f 100644
--- a/src/locales/ta.json
+++ b/src/locales/ta.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "CSV (காற்புள்ளி-தனிப்பட்ட மதிப்புகள்) கோப்புக்கு ஏற்றுமதி செய்",
"Export to TSV (Tab-separated values) File": "TSV (தாவல்-தனிப்பட்ட மதிப்புகள்) கோப்புக்கு ஏற்றுமதி செய்",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown கோப்பு",
"Clear User Data": "பயனர் தரவை அழி",
"Clear All Transactions": "அனைத்தும் பரிவர்த்தனைகளை அழி",
diff --git a/src/locales/th.json b/src/locales/th.json
index e0879b4d..e0245371 100644
--- a/src/locales/th.json
+++ b/src/locales/th.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "ส่งออกเป็นไฟล์ CSV (คั่นด้วยเครื่องหมายจุลภาค)",
"Export to TSV (Tab-separated values) File": "ส่งออกเป็นไฟล์ TSV (คั่นด้วยแท็บ)",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "ไฟล์ Markdown",
"Clear User Data": "ลบข้อมูลผู้ใช้",
"Clear All Transactions": "ลบรายการทั้งหมด",
diff --git a/src/locales/tr.json b/src/locales/tr.json
index 1547ae6d..2939e213 100644
--- a/src/locales/tr.json
+++ b/src/locales/tr.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "CSV (Virgülle ayrılmış değerler) Dosyasına Dışa Aktar",
"Export to TSV (Tab-separated values) File": "TSV (Sekmeyle ayrılmış değerler) Dosyasına Dışa Aktar",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown Dosyası",
"Clear User Data": "Kullanıcı Verilerini Temizle",
"Clear All Transactions": "Tüm İşlemleri Temizle",
diff --git a/src/locales/uk.json b/src/locales/uk.json
index 41f713e3..c1088bc9 100644
--- a/src/locales/uk.json
+++ b/src/locales/uk.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "Очистити дані користувача",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/vi.json b/src/locales/vi.json
index eee30bd5..b58114bd 100644
--- a/src/locales/vi.json
+++ b/src/locales/vi.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (Semicolon-separated values) File",
"Export to CSV (Comma-separated values) File": "Export to CSV (Comma-separated values) File",
"Export to TSV (Tab-separated values) File": "Export to TSV (Tab-separated values) File",
+ "Export to SSV (Semicolon-separated values) File": "Export to SSV (Semicolon-separated values) File",
"Markdown File": "Markdown File",
"Clear User Data": "Xóa dữ liệu người dùng",
"Clear All Transactions": "Clear All Transactions",
diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json
index fea7f812..238f5f88 100644
--- a/src/locales/zh_Hans.json
+++ b/src/locales/zh_Hans.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (分号分隔的值) 文件",
"Export to CSV (Comma-separated values) File": "导出到 CSV (逗号分隔的值) 文件",
"Export to TSV (Tab-separated values) File": "导出到 TSV (制表符分隔的值) 文件",
+ "Export to SSV (Semicolon-separated values) File": "导出到 SSV (分号分隔的值) 文件",
"Markdown File": "Markdown 文件",
"Clear User Data": "清除用户数据",
"Clear All Transactions": "清除所有交易",
diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json
index d9d29873..db349356 100644
--- a/src/locales/zh_Hant.json
+++ b/src/locales/zh_Hant.json
@@ -2298,6 +2298,7 @@
"SSV (Semicolon-separated values) File": "SSV (分號分隔的值) 檔案",
"Export to CSV (Comma-separated values) File": "匯出為 CSV (逗號分隔的值) 檔案",
"Export to TSV (Tab-separated values) File": "匯出為 TSV (定位點分隔的值) 檔案",
+ "Export to SSV (Semicolon-separated values) File": "匯出為 SSV (分號分隔的值) 檔案",
"Markdown File": "Markdown 檔案",
"Clear User Data": "清除使用者資料",
"Clear All Transactions": "清除所有交易",
diff --git a/src/views/base/accounts/ReconciliationStatementPageBase.ts b/src/views/base/accounts/ReconciliationStatementPageBase.ts
index 5ff0deb3..d4e95844 100644
--- a/src/views/base/accounts/ReconciliationStatementPageBase.ts
+++ b/src/views/base/accounts/ReconciliationStatementPageBase.ts
@@ -234,6 +234,8 @@ export function useReconciliationStatementPageBase() {
if (fileType === KnownFileType.TSV) {
separator = '\t';
+ } else if (fileType === KnownFileType.SSV) {
+ separator = ';';
}
const accountBalanceName = isCurrentLiabilityAccount.value ? 'Account Outstanding Balance' : 'Account Balance';
@@ -252,9 +254,9 @@ export function useReconciliationStatementPageBase() {
const rows = transactions.map(transaction => {
const transactionTime = parseDateTimeFromUnixTimeWithTimezoneOffset(transaction.time, transaction.utcOffset);
const type = getDisplayTransactionType(transaction);
- let categoryName = transaction.categoryName;
+ let categoryName = replaceAll(transaction.categoryName, separator, ' ');
let displayAmount = formatAmountToWesternArabicNumeralsWithoutDigitGrouping(transaction.sourceAmount);
- let displayAccountName = transaction.sourceAccountName;
+ let displayAccountName = replaceAll(transaction.sourceAccountName, separator, ' ');
if (transaction.type === TransactionType.ModifyBalance) {
categoryName = tt('Modify Balance');
@@ -263,7 +265,7 @@ export function useReconciliationStatementPageBase() {
}
if (transaction.type === TransactionType.Transfer && transaction.destinationAccount) {
- displayAccountName = displayAccountName + ' → ' + (transaction.destinationAccount?.name || '');
+ displayAccountName = replaceAll(displayAccountName + ' → ' + (transaction.destinationAccount?.name || ''), separator, ' ');
}
let displayAccountBalance = '';
diff --git a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue
index 6cfa82e9..81060352 100644
--- a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue
+++ b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue
@@ -77,6 +77,11 @@
@click="exportReconciliationStatements(KnownFileType.TSV)">
{{ tt('Export to TSV (Tab-separated values) File') }}
+
+ {{ tt('Export to SSV (Semicolon-separated values) File') }}
+
@@ -301,6 +306,9 @@ import { isEquals } from '@/lib/common.ts';
import { getCurrentUnixTime } from '@/lib/datetime.ts';
import { startDownloadFile } from '@/lib/ui/common.ts';
+import {
+ extendMdiSemicolon
+} from '@/icons/desktop/extend_mdi_icons.ts';
import {
mdiRefresh,
mdiArrowRight,
diff --git a/src/views/desktop/statistics/transaction/dialogs/ExportDialog.vue b/src/views/desktop/statistics/transaction/dialogs/ExportDialog.vue
index 64efa20e..26eb4369 100644
--- a/src/views/desktop/statistics/transaction/dialogs/ExportDialog.vue
+++ b/src/views/desktop/statistics/transaction/dialogs/ExportDialog.vue
@@ -26,6 +26,10 @@
:append-icon="fileFormat === KnownFileType.TSV.extension ? mdiCheck : undefined"
:title="tt('TSV (Tab-separated values) File')"
@click="fileFormat = KnownFileType.TSV.extension">
+
(() => {
const exportedData = computed(() => {
let ret = '';
- if (fileFormat.value === KnownFileType.CSV.extension || fileFormat.value === KnownFileType.TSV.extension) {
+ if (fileFormat.value === KnownFileType.CSV.extension || fileFormat.value === KnownFileType.TSV.extension || fileFormat.value === KnownFileType.SSV.extension) {
let separator = ',';
if (fileFormat.value === KnownFileType.TSV.extension) {
separator = '\t';
+ } else if (fileFormat.value === KnownFileType.SSV.extension) {
+ separator = ';';
}
if (headers.value.length > 0) {
diff --git a/src/views/desktop/transactions/import/tabs/ImportTransactionCheckDataTab.vue b/src/views/desktop/transactions/import/tabs/ImportTransactionCheckDataTab.vue
index 74783e81..0a36b7ac 100644
--- a/src/views/desktop/transactions/import/tabs/ImportTransactionCheckDataTab.vue
+++ b/src/views/desktop/transactions/import/tabs/ImportTransactionCheckDataTab.vue
@@ -449,6 +449,9 @@ import {
} from '@/lib/category.ts';
import { startDownloadFile } from '@/lib/ui/common.ts';
+import {
+ extendMdiSemicolon
+} from '@/icons/desktop/extend_mdi_icons.ts';
import {
mdiCheck,
mdiArrowRight,
@@ -956,6 +959,12 @@ const toolMenus = computed(() => [
title: tt('Export to TSV (Tab-separated values) File'),
disabled: isEditing.value || selectedImportTransactionCount.value < 1,
onClick: () => exportData(KnownFileType.TSV)
+ },
+ {
+ prependIcon: extendMdiSemicolon,
+ title: tt('Export to SSV (Semicolon-separated values) File'),
+ disabled: isEditing.value || selectedImportTransactionCount.value < 1,
+ onClick: () => exportData(KnownFileType.SSV)
}
]);
@@ -2147,9 +2156,13 @@ function exportData(fileType: KnownFileType): void {
}
let separator = ',';
+ let tagSeparator = ';';
if (fileType === KnownFileType.TSV) {
separator = '\t';
+ } else if (fileType === KnownFileType.SSV) {
+ separator = ';';
+ tagSeparator = ',';
}
const header = [
@@ -2203,7 +2216,7 @@ function exportData(fileType: KnownFileType): void {
if (tagName) {
tagName = replaceAll(tagName, separator, ' ');
- tagName = replaceAll(tagName, ';', ' ');
+ tagName = replaceAll(tagName, tagSeparator, ' ');
tagNames.push(tagName);
}
}
@@ -2221,7 +2234,7 @@ function exportData(fileType: KnownFileType): void {
relatedAccountCurrency ?? '',
relatedAmount ?? '',
geographicLocation,
- tagNames.join(';'),
+ tagNames.join(tagSeparator),
replaceAll(transaction.comment || '', separator, ' ')
].join(separator);
});