diff --git a/src/consts/file.js b/src/consts/file.js
index aea82dd2..a2e35587 100644
--- a/src/consts/file.js
+++ b/src/consts/file.js
@@ -4,27 +4,47 @@ const supportedImportFileTypes = [
{
type: 'ezbookkeeping_csv',
name: 'ezbookkeeping Data Export File (CSV)',
- extensions: '.csv'
+ extensions: '.csv',
+ document: {
+ supportMultiLanguages: true,
+ anchor: 'export-transactions'
+ }
},
{
type: 'ezbookkeeping_tsv',
name: 'ezbookkeeping Data Export File (TSV)',
- extensions: '.tsv'
+ extensions: '.tsv',
+ document: {
+ supportMultiLanguages: true,
+ anchor: 'export-transactions'
+ }
},
{
type: 'feidee_mymoney_csv',
name: 'Feidee MyMoney (App) Data Export File',
- extensions: '.csv'
+ extensions: '.csv',
+ document: {
+ supportMultiLanguages: 'zh-Hans',
+ anchor: '如何获取金蝶随手记app数据导出文件'
+ }
},
{
type: 'feidee_mymoney_xls',
name: 'Feidee MyMoney (Web) Data Export File',
- extensions: '.xls'
+ extensions: '.xls',
+ document: {
+ supportMultiLanguages: 'zh-Hans',
+ anchor: '如何获取金蝶随手记web版数据导出文件'
+ }
},
{
type: 'alipay_csv',
- name: 'Alipay Data Export File',
- extensions: '.csv'
+ name: 'Alipay (Web) Data Export File',
+ extensions: '.csv',
+ document: {
+ supportMultiLanguages: 'zh-Hans',
+ anchor: '如何获取支付宝网页版数据导出文件'
+ }
}
];
diff --git a/src/lib/i18n.js b/src/lib/i18n.js
index a06b7e0e..6627e736 100644
--- a/src/lib/i18n.js
+++ b/src/lib/i18n.js
@@ -62,6 +62,10 @@ import {
import logger from './logger.js';
import services from './services.js';
+function getLanguageDisplayName(translateFn, languageName) {
+ return translateFn(`language.${languageName}`);
+}
+
function getAllLanguageInfoArray(translateFn, includeSystemDefault) {
const ret = [];
@@ -72,7 +76,7 @@ function getAllLanguageInfoArray(translateFn, includeSystemDefault) {
const languageInfo = allLanguages[languageTag];
let displayName = languageInfo.displayName;
- let languageNameInCurrentLanguage = translateFn(`language.${languageInfo.name}`);
+ let languageNameInCurrentLanguage = getLanguageDisplayName(translateFn, languageInfo.name);
if (languageNameInCurrentLanguage && languageNameInCurrentLanguage !== displayName) {
displayName = `${languageNameInCurrentLanguage} (${displayName})`;
@@ -1255,16 +1259,51 @@ function getAllDisplayExchangeRates(exchangeRatesData, translateFn) {
return availableExchangeRates;
}
-function getAllSupportedImportFileTypes(translateFn) {
+function getAllSupportedImportFileTypes(i18nGlobal, translateFn) {
const allSupportedImportFileTypes = [];
for (let i = 0; i < fileConstants.supportedImportFileTypes.length; i++) {
const fileType = fileConstants.supportedImportFileTypes[i];
+ let document = {
+ language: '',
+ displayLanguageName: '',
+ anchor: ''
+ };
+
+ if (fileType.document) {
+ if (fileType.document.supportMultiLanguages === true) {
+ document.language = getCurrentLanguageTag(i18nGlobal);
+ document.anchor = translateFn(`document.anchor.export_and_import.${fileType.document.anchor}`);
+ } else if (isString(fileType.document.supportMultiLanguages) && allLanguages[fileType.document.supportMultiLanguages]) {
+ document.language = fileType.document.supportMultiLanguages;
+
+ if (document.language !== getCurrentLanguageTag(i18nGlobal)) {
+ document.displayLanguageName = getLanguageDisplayName(translateFn, allLanguages[fileType.document.supportMultiLanguages].name);
+ }
+
+ document.anchor = fileType.document.anchor;
+ }
+
+ if (document.language) {
+ document.language = document.language.replace(/-/g, '_');
+ }
+
+ if (document.anchor) {
+ document.anchor = document.anchor.toLowerCase().replace(/ /g, '-');
+ }
+
+ if (document.language === defaultLanguage) {
+ document.language = '';
+ }
+ } else {
+ document = null;
+ }
allSupportedImportFileTypes.push({
type: fileType.type,
displayName: translateFn(fileType.name),
- extensions: fileType.extensions
+ extensions: fileType.extensions,
+ document: document
});
}
@@ -1618,7 +1657,7 @@ export function i18nFunctions(i18nGlobal) {
getAllTransactionScheduledFrequencyTypes: () => getAllTransactionScheduledFrequencyTypes(i18nGlobal.t),
getAllTransactionDefaultCategories: (categoryType, locale) => getAllTransactionDefaultCategories(categoryType, locale, i18nGlobal.t),
getAllDisplayExchangeRates: (exchangeRatesData) => getAllDisplayExchangeRates(exchangeRatesData, i18nGlobal.t),
- getAllSupportedImportFileTypes: () => getAllSupportedImportFileTypes(i18nGlobal.t),
+ getAllSupportedImportFileTypes: () => getAllSupportedImportFileTypes(i18nGlobal, i18nGlobal.t),
getEnableDisableOptions: () => getEnableDisableOptions(i18nGlobal.t),
getCategorizedAccountsWithDisplayBalance: (allVisibleAccounts, showAccountBalance, defaultCurrency, settingsStore, userStore, exchangeRatesStore) => getCategorizedAccountsWithDisplayBalance(allVisibleAccounts, showAccountBalance, defaultCurrency, userStore, settingsStore, exchangeRatesStore, i18nGlobal.t),
joinMultiText: (textArray) => joinMultiText(textArray, i18nGlobal.t),
diff --git a/src/locales/en.json b/src/locales/en.json
index 67fcbb70..c86f62bf 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1183,6 +1183,13 @@
"parameter invalid color": "{parameter} is invalid format",
"parameter invalid amount filter": "{parameter} is invalid format"
},
+ "document": {
+ "anchor": {
+ "export_and_import": {
+ "export-transactions": "export-transactions"
+ }
+ }
+ },
"OK": "OK",
"Cancel": "Cancel",
"Operation": "Operation",
@@ -1504,11 +1511,12 @@
"Check and Modify Your Data": "Check and Modify Your Data",
"Data Import Completed": "Data Import Completed",
"File Type": "File Type",
+ "How to export this file?": "How to export this file?",
"ezbookkeeping Data Export File (CSV)": "ezbookkeeping Data Export File (CSV)",
"ezbookkeeping Data Export File (TSV)": "ezbookkeeping Data Export File (TSV)",
"Feidee MyMoney (Web) Data Export File": "Feidee MyMoney (Web) Data Export File",
"Feidee MyMoney (App) Data Export File": "Feidee MyMoney (App) Data Export File",
- "Alipay Data Export File": "Alipay Data Export File",
+ "Alipay (Web) Data Export File": "Alipay (Web) Data Export File",
"Data File": "Data File",
"No data to import": "No data to import",
"Cannot import invalid transactions": "Cannot import invalid transactions",
diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json
index c511df7e..9601d6a7 100644
--- a/src/locales/zh_Hans.json
+++ b/src/locales/zh_Hans.json
@@ -1183,6 +1183,13 @@
"parameter invalid color": "{parameter}格式错误",
"parameter invalid amount filter": "{parameter}格式错误"
},
+ "document": {
+ "anchor": {
+ "export_and_import": {
+ "export-transactions": "导出交易"
+ }
+ }
+ },
"OK": "确定",
"Cancel": "取消",
"Operation": "操作",
@@ -1504,11 +1511,12 @@
"Check and Modify Your Data": "检查及修改您的数据",
"Data Import Completed": "数据导入完成",
"File Type": "文件类型",
+ "How to export this file?": "如何导出该文件?",
"ezbookkeeping Data Export File (CSV)": "ezbookkeeping 数据导出文件 (CSV)",
"ezbookkeeping Data Export File (TSV)": "ezbookkeeping 数据导出文件 (TSV)",
"Feidee MyMoney (Web) Data Export File": "金蝶随手记 (Web版) 数据导出文件",
"Feidee MyMoney (App) Data Export File": "金蝶随手记 (App) 数据导出文件",
- "Alipay Data Export File": "支付宝数据导出文件",
+ "Alipay (Web) Data Export File": "支付宝 (网页版) 数据导出文件",
"Data File": "数据文件",
"No data to import": "没有可以导入的数据",
"Cannot import invalid transactions": "不能导入无效的交易",
diff --git a/src/views/desktop/transactions/list/dialogs/ImportDialog.vue b/src/views/desktop/transactions/list/dialogs/ImportDialog.vue
index 8ab5e4ba..6a4ea4bc 100644
--- a/src/views/desktop/transactions/list/dialogs/ImportDialog.vue
+++ b/src/views/desktop/transactions/list/dialogs/ImportDialog.vue
@@ -91,6 +91,14 @@
@click="showOpenFileDialog"
/>
+
+
+
+
+ {{ $t('How to export this file?') }}
+ ({{ exportFileGuideDocumentLanguageName }})
+
+
@@ -486,6 +494,7 @@ import {
import {
mdiDotsVertical,
+ mdiHelpCircleOutline,
mdiFindReplace,
mdiClose,
mdiArrowRight,
@@ -527,6 +536,7 @@ export default {
reject: null,
icons: {
more: mdiDotsVertical,
+ document: mdiHelpCircleOutline,
replace: mdiFindReplace,
previous: mdiClose,
next: mdiArrowRight,
@@ -632,6 +642,26 @@ export default {
supportedImportFileExtensions() {
return getNameByKeyValue(this.allSupportedImportFileTypes, this.fileType, 'type', 'extensions');
},
+ exportFileGuideDocumentUrl() {
+ const document = getNameByKeyValue(this.allSupportedImportFileTypes, this.fileType, 'type', 'document');
+
+ if (!document) {
+ return null;
+ }
+
+ const language = document.language ? document.language + '/' : '';
+ const anchor = document.anchor ? '#' + document.anchor : '';
+ return `https://ezbookkeeping.mayswind.net/${language}export_and_import${anchor}`;
+ },
+ exportFileGuideDocumentLanguageName() {
+ const document = getNameByKeyValue(this.allSupportedImportFileTypes, this.fileType, 'type', 'document');
+
+ if (!document) {
+ return null;
+ }
+
+ return document.displayLanguageName;
+ },
fileName: {
get: function () {
if (this.importFile == null) {