Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit b14e76a

Browse files
committed
More transalations
1 parent 19285a3 commit b14e76a

17 files changed

+150
-68
lines changed

src/components/modals/newColumn/handlers/QuickOptionsColumnsHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export class QuickOptionsColumnsHandler extends AbstractHandlerClass<AddColumnMo
6060
.addButton(button => {
6161
button
6262
.setIcon("gear")
63-
.setTooltip(t("add_row_modal_quick_options_desc_button_add_tooltip"))
63+
.setTooltip(t("add_row_modal_quick_options_desc_button_add_tooltip", column.label))
6464
.onClick(openSettingsHandler)
6565
});
6666
// Add extra options for non-metadata columns

src/helpers/Constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,9 @@ export const SUGGESTER_REGEX = Object.freeze({
473473
EMBED_HEADING: /\B!\[\[([^#\]]+)#([^\]]*)$/,
474474

475475
LINK_BLOCK: /\B\[\[([^#\]]+)#?\^([^\]]*)$/,
476-
EMBED_BLOCK: /\B!\[\[([^#\]]+)#?\^([^\]]*)$/
476+
EMBED_BLOCK: /\B!\[\[([^#\]]+)#?\^([^\]]*)$/,
477+
478+
TEXT_ARRAY: /(^\[{1})([^\[]{1}.*)(\]{1})$/g
477479
});
478480

479481
/******************************************************************************

src/lang/locale/en.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,4 +196,61 @@ export default {
196196
"settings_formula_toggle_title": "Enable JavaScript formulas",
197197
"settings_formula_toggle_desc": "Enable/disable to use JavaScript formulas",
198198
/** COLUMN SETTINGS */
199+
"settings_file_column_title": "Columns to group files by",
200+
"settings_file_column_desc": "The folder structure will mirror the values of these columns",
201+
"settings_file_column_conf_display": "Selected columns: ",
202+
"settings_group_folder_column_title": "Group all files into folders automatically",
203+
"settings_group_folder_column_desc": "By default, files are groupped individually, after a value is updated",
204+
"settings_group_folder_column_delete_toggle_title": "Delete empty folders",
205+
"settings_group_folder_column_delete_toggle_desc": "Automatically remove empty folders after grouping files.",
206+
"settings_group_folder_column_hoist_toggle_title": "Hoist files with missing attributes to root folder",
207+
"settings_group_folder_column_hoist_toggle_desc": "By default, files with missing attributes are hoisted to the lowest possible folder",
208+
"settings_inline_options_title": "Inline fields options",
209+
"settings_inline_options_default_toggle_title": "Enable inline fields as default",
210+
"settings_inline_options_default_toggle_desc": "New columns will be created as inline fields by default",
211+
"settings_inline_options_position_title": "Select position of new inline fields",
212+
"settings_inline_options_position_desc": "New inline fields will be created in the selected position on your notes",
213+
"settings_metatata_title": "Metadata toggle group",
214+
"settings_metatata_create_toggle_title": "Created date",
215+
"settings_metatata_create_toggle_desc": "Enable/disable Created Metadata Column",
216+
"settings_metatata_modified_toggle_title": "Modified date",
217+
"settings_metatata_modified_toggle_desc": "Enable/disable Modified Metadata Column",
218+
"settings_metatata_task_toggle_title": "File Tasks",
219+
"settings_metatata_task_toggle_desc": "Enable/disable File Tasks Column",
220+
"settings_metatata_inlinks_toggle_title": "File Inlinks",
221+
"settings_metatata_inlinks_toggle_desc": "Enable/disable File Inlinks Column",
222+
"settings_metatata_outlinks_toggle_title": "File Outlinks",
223+
"settings_metatata_outlinks_toggle_desc": "Enable/disable File Outlinks Column",
224+
"settings_remove_fields_title": "Remove fields",
225+
"settings_remove_fields_desc": "Enable/disable remove fields when a column is deleted",
226+
"settings_template_title": "Header templates",
227+
"settings_template_file_title": "Select file as columns template",
228+
"settings_template_file_desc": "Select file to use as template for database columns. Click the button to apply the template.",
229+
"settings_template_file_button_tooltip": "Save columns from file",
230+
"settings_template_file_notice_success_on_save": "{0} Columns were loaded from file '{1}'. Total: {2}\nClose settings modal to show the database changes",
231+
"settings_template_all_title": "Use all fields",
232+
"settings_template_all_desc": "Use all fields from all your notes as columns. WARNING! This will override any previous columns",
233+
"settings_template_all_button_tooltip": "Save all possible columns",
234+
"settings_template_all_notice_success_on_save": "{0} Columns were loaded from all fields avaliable in the current source! Close this dialog to show the database changes",
235+
/** CSV */
236+
"settings_csv__header_title": "Mandatory header key",
237+
"settings_csv__header_desc": "This setting defines the mandatory header key that must be present in the csv file",
238+
"settings_csv__header_placeholder": "file key...",
239+
/** DEVELOPER */
240+
"settings_developer_enable_toggle_title": "Enable developer settings. Logger will be enabled",
241+
"settings_developer_enable_toggle_desc": "This will log all the errors and warnings in the console",
242+
"settings_developer_log_level_title": "Select level info of logs",
243+
"settings_developer_log_level_desc": "This setting assigns the level of logs that will be shown in the console",
244+
"settings_developer_table_state_toggle_title": "Show table state",
245+
"settings_developer_table_state_toggle_desc": "This will show/hide properties of the table on the bottom of the view",
246+
/** EDITING ENGINE */
247+
"settings_editing_engine_date_format_title": "Date format",
248+
"settings_editing_engine_date_format_desc": "The format of the date with Luxon standard",
249+
"settings_editing_engine_datetime_format_title": "Datetime format",
250+
"settings_editing_engine_datetime_format_desc": "The format of the datetime with Luxon standard",
251+
"settings_editing_engine_metadata_datetime_format_title": "Metadata datetime format",
252+
"settings_editing_engine_metadata_datetime_format_desc": "The format of the datetime with Luxon standard",
253+
"settings_editing_engine_frontmatter_quotes_toggle_title": "Frontmatter quotes",
254+
"settings_editing_engine_frontmatter_quotes_toggle_desc": "Enable/disable quotes in frontmatter",
255+
/** FOLDER */
199256
};

src/services/MarkdownRenderService.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { CellContext } from "@tanstack/react-table";
22
import { NormalizedPath, RowDataType, TableColumn } from "cdm/FolderModel";
33
import { DatabaseView } from "DatabaseView";
4-
import { MediaExtensions } from "helpers/Constants";
4+
import { MediaExtensions, SUGGESTER_REGEX } from "helpers/Constants";
55
import { c } from "helpers/StylesHelper";
66
import { getNormalizedPath } from "helpers/VaultManagement";
77
import { CachedMetadata, MarkdownRenderer, setIcon, TFile } from "obsidian";
@@ -22,6 +22,7 @@ class MarkdownRenderService {
2222
const view = table.options.meta.view;
2323
const column = defaultCell.column.columnDef as TableColumn;
2424
const { media_height, media_width, enable_media_view } = column.config;
25+
// URL modifiers
2526
if (this.isValidHttpUrl(markdownString)) {
2627
const media_inclusion = enable_media_view ? `|${media_height}x${media_width}` : "";
2728

@@ -34,7 +35,18 @@ class MarkdownRenderService {
3435
markdownString = `!${markdownString}`;
3536
}
3637
}
37-
38+
// Array modifiers
39+
if (SUGGESTER_REGEX.TEXT_ARRAY.test(markdownString)) {
40+
console.log("Array detected");
41+
let alternativeString = "";
42+
markdownString
43+
.replaceAll(SUGGESTER_REGEX.TEXT_ARRAY, "$2")
44+
.split(",")
45+
.forEach((item) => {
46+
alternativeString = alternativeString.concat(`- ${item}\n`);
47+
});
48+
markdownString = alternativeString;
49+
}
3850
await this.renderStringAsMarkdown(
3951
view,
4052
markdownString,

src/services/ParseService.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DEFAULT_SETTINGS, InputType, MarkdownBreakerRules } from "helpers/Constants";
1+
import { DEFAULT_SETTINGS, InputType, MarkdownBreakerRules, SUGGESTER_REGEX } from "helpers/Constants";
22
import { DataObject, Link, Literal, WrappedLiteral } from "obsidian-dataview/lib/data-model/value";
33
import { DateTime } from "luxon";
44
import { LOGGER } from "services/Logger";
@@ -108,9 +108,9 @@ class Parse {
108108
// Check if is a valid JSON
109109
if (newValue.startsWith("{") && newValue.endsWith("}")) {
110110
newValue = JSON.parse(newValue);
111-
} else if (newValue.startsWith("[") && newValue.endsWith("]")) {
111+
} else if (SUGGESTER_REGEX.TEXT_ARRAY.test(newValue)) {
112112
// Remove brackets
113-
newValue = newValue.substring(1, newValue.length - 1);
113+
newValue = newValue.replaceAll(SUGGESTER_REGEX.TEXT_ARRAY, "$2");
114114
// Split by comma
115115
newValue = newValue.split(",");
116116
}
@@ -238,7 +238,7 @@ class Parse {
238238
return this.parseArrayToText(wrapped.value, localSettings);
239239

240240
case 'link':
241-
return wrapped.value.markdown()
241+
return wrapped.value.markdown();
242242
// Else go to default
243243
default:
244244
return DataviewService.getDataviewAPI().value.toString(wrapped.value);

src/settings/handlers/columns/FileGroupingColumnsSetting.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { DatabaseView } from "DatabaseView";
2+
import { t } from "lang/helpers";
23
import { ButtonComponent, SearchComponent, Setting } from "obsidian";
34
import { FileAttributeSuggester } from "settings/suggesters/FileAttributeSuggester";
45

@@ -12,12 +13,12 @@ export class FileGroupingColumnsSetting {
1213
constructor(
1314
private view: DatabaseView,
1415
private allowedColumns: Set<string>,
15-
) {}
16+
) { }
1617

1718
init = (containerEl: HTMLElement) => {
1819
new Setting(containerEl)
19-
.setName("Columns to group files by")
20-
.setDesc("The folder structure will mirror the values of these columns")
20+
.setName(t("settings_file_column_title"))
21+
.setDesc(t("settings_file_column_desc"))
2122
.addSearch((sc) => {
2223
sc.setPlaceholder("").setValue("").onChange(this.onSearchChange);
2324
this.searchComponent = sc;
@@ -71,7 +72,7 @@ export class FileGroupingColumnsSetting {
7172
this.labelContainer.style.display = "none";
7273
}
7374
};
74-
75+
7576
private onClearButtonClick = (button: ButtonComponent) => {
7677
button.setButtonText("Reset");
7778
button.onClick(async () => {
@@ -84,11 +85,11 @@ export class FileGroupingColumnsSetting {
8485
});
8586
};
8687

87-
88+
8889
private configureDisplay = (containerEl: HTMLElement) => {
8990
this.labelContainer = containerEl.createEl("div");
9091
const label = containerEl.createEl("span", {
91-
text: "Selected columns: ",
92+
text: t("settings_file_column_conf_display"),
9293
});
9394
label.style.color = "#666";
9495
this.labelContainer.appendChild(label);

src/settings/handlers/columns/GroupFolderColumnTextInputHandler.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import { FileGroupingService } from "services/FileGroupingService";
44
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
55
import { add_toggle } from "settings/SettingsComponents";
66
import { FileGroupingColumnsSetting } from "settings/handlers/columns/FileGroupingColumnsSetting";
7+
import { t } from "lang/helpers";
78

89
export class GroupFolderColumnTextInputHandler extends AbstractSettingsHandler {
9-
settingTitle: string = 'Define a schema to group files into folders';
10+
settingTitle = t("settings_group_folder_column_title");
1011
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
1112
const { containerEl, local, view, settingsManager } = settingHandlerResponse;
1213
if (local) {
@@ -31,17 +32,17 @@ export class GroupFolderColumnTextInputHandler extends AbstractSettingsHandler {
3132

3233
add_toggle(
3334
containerEl,
34-
"Group all files into folders automatically",
35-
"By default, files are groupped individually, after a value is updated",
35+
this.settingTitle,
36+
t("settings_group_folder_column_desc"),
3637
view.diskConfig.yaml.config.automatically_group_files,
3738
async (value) => {
3839
view.diskConfig.updateConfig({ automatically_group_files: value });
3940
}
4041
)
4142
add_toggle(
4243
containerEl,
43-
"Remove empty folders",
44-
"Automatically remove empty folders after grouping files.",
44+
t("settings_group_folder_column_delete_toggle_title"),
45+
t("settings_group_folder_column_delete_toggle_desc"),
4546
view.diskConfig.yaml.config.remove_empty_folders,
4647
async (value) => {
4748
view.diskConfig.updateConfig({ remove_empty_folders: value });
@@ -50,8 +51,8 @@ export class GroupFolderColumnTextInputHandler extends AbstractSettingsHandler {
5051

5152
add_toggle(
5253
containerEl,
53-
"Hoist files with missing attributes to root folder",
54-
"By default, files with missing attributes are hoisted to the lowest possible folder",
54+
t("settings_group_folder_column_hoist_toggle_title"),
55+
t("settings_group_folder_column_hoist_toggle_desc"),
5556
view.diskConfig.yaml.config.hoist_files_with_empty_attributes,
5657
async (value) => {
5758
view.diskConfig.updateConfig({ hoist_files_with_empty_attributes: value });

src/settings/handlers/columns/InlineFieldsOptionsHandler.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handle
33
import { INLINE_POSITION } from "helpers/Constants";
44
import { t } from "lang/helpers";
55
export class InlineFieldsOptionsHandler extends AbstractSettingsHandler {
6-
settingTitle: string = 'Inline fields options';
6+
settingTitle: string = t("settings_inline_options_title");
77
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
88
const { settingsManager, containerEl, local, view } = settingHandlerResponse;
99
const inline_section = containerEl.createDiv("configuration-section-container-columns-inline");
@@ -28,8 +28,8 @@ export class InlineFieldsOptionsHandler extends AbstractSettingsHandler {
2828
}
2929
add_toggle(
3030
containerEl,
31-
"Enable inline fields as default",
32-
"New columns will be created as inline fields by default",
31+
t("settings_inline_options_default_toggle_title"),
32+
t("settings_inline_options_default_toggle_desc"),
3333
local ? view.diskConfig.yaml.config.inline_default : settingsManager.plugin.settings.local_settings.inline_default,
3434
logger_togle_promise
3535
);
@@ -56,8 +56,8 @@ export class InlineFieldsOptionsHandler extends AbstractSettingsHandler {
5656
});
5757
add_dropdown(
5858
containerEl,
59-
'Select position of new inline fields',
60-
'New inline fields will be created in the selected position on your notes',
59+
t("settings_inline_options_position_title"),
60+
t("settings_inline_options_position_desc"),
6161
local ? view.diskConfig.yaml.config.inline_new_position : settingsManager.plugin.settings.local_settings.inline_new_position,
6262
options,
6363
inline_position_dropdown_promise

src/settings/handlers/columns/MetadataToggleGroupHandler.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1+
import { t } from "lang/helpers";
12
import { Setting } from "obsidian";
23
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
34
import { add_setting_header } from "settings/SettingsComponents";
45

56
export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
6-
settingTitle: string = 'Metadata toggle group';
7+
settingTitle: string = t("settings_metatata_title");
78
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
89
const { settingsManager, containerEl, local, view } = settingHandlerResponse;
910
const metadata_section = containerEl.createDiv("configuration-section-container-columns-metadata");
1011
// title of the section
11-
add_setting_header(metadata_section, "Metadata", 'h4');
12+
add_setting_header(metadata_section, this.settingTitle, 'h4');
1213
/*************************
1314
* METADATA CREATED COLUMN
1415
*************************/
@@ -29,8 +30,8 @@ export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
2930
}
3031

3132
new Setting(metadata_section)
32-
.setName("Created")
33-
.setDesc("Enable/disable Created Metadata Column")
33+
.setName(t("settings_metatata_create_toggle_title"))
34+
.setDesc(t("settings_metatata_create_toggle_desc"))
3435
.addToggle(toggle =>
3536
toggle.setValue(local ? view.diskConfig.yaml.config.show_metadata_created : settingsManager.plugin.settings.local_settings.show_metadata_created)
3637
.onChange(metadata_created_toggle_promise)
@@ -56,8 +57,8 @@ export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
5657
}
5758

5859
new Setting(metadata_section)
59-
.setName("Modified")
60-
.setDesc("Enable/disable Modified Metadata Column")
60+
.setName(t("settings_metatata_modified_toggle_title"))
61+
.setDesc(t("settings_metatata_modified_toggle_desc"))
6162
.addToggle(toggle =>
6263
toggle.setValue(local ? view.diskConfig.yaml.config.show_metadata_modified : settingsManager.plugin.settings.local_settings.show_metadata_modified)
6364
.onChange(metadata_modified_toggle_promise)
@@ -83,8 +84,8 @@ export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
8384
}
8485

8586
new Setting(metadata_section)
86-
.setName("Tasks")
87-
.setDesc("Enable/disable File Tasks Column")
87+
.setName(t("settings_metatata_task_toggle_title"))
88+
.setDesc(t("settings_metatata_task_toggle_desc"))
8889
.addToggle(toggle =>
8990
toggle.setValue(local ? view.diskConfig.yaml.config.show_metadata_tasks : settingsManager.plugin.settings.local_settings.show_metadata_tasks)
9091
.onChange(metadata_tasks_toggle_promise)
@@ -110,8 +111,8 @@ export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
110111
}
111112

112113
new Setting(metadata_section)
113-
.setName("Inlinks")
114-
.setDesc("Enable/disable File Inlinks Column")
114+
.setName(t("settings_metatata_inlinks_toggle_title"))
115+
.setDesc(t("settings_metatata_inlinks_toggle_desc"))
115116
.addToggle(toggle =>
116117
toggle.setValue(local ? view.diskConfig.yaml.config.show_metadata_inlinks : settingsManager.plugin.settings.local_settings.show_metadata_inlinks)
117118
.onChange(metadata_inlinks_toggle_promise)
@@ -137,8 +138,8 @@ export class MetadataToggleGroupHandler extends AbstractSettingsHandler {
137138
}
138139

139140
new Setting(metadata_section)
140-
.setName("Outlinks")
141-
.setDesc("Enable/disable File Outlinks Column")
141+
.setName(t("settings_metatata_outlinks_toggle_title"))
142+
.setDesc(t("settings_metatata_outlinks_toggle_desc"))
142143
.addToggle(toggle =>
143144
toggle.setValue(local ? view.diskConfig.yaml.config.show_metadata_outlinks : settingsManager.plugin.settings.local_settings.show_metadata_outlinks)
144145
.onChange(metadata_outlinks_toggle_promise)

src/settings/handlers/columns/RemoveFieldsWhenDeleteToggleHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { add_toggle } from "settings/SettingsComponents";
22
import { AbstractSettingsHandler, SettingHandlerResponse } from "settings/handlers/AbstractSettingHandler";
3+
import { t } from "lang/helpers";
34
export class RemoveFieldsWhenDeleteToggleHandler extends AbstractSettingsHandler {
4-
settingTitle: string = 'Remove fields';
5+
settingTitle = t("settings_remove_fields_title");
56
handle(settingHandlerResponse: SettingHandlerResponse): SettingHandlerResponse {
67
const { settingsManager, containerEl, local, view } = settingHandlerResponse;
78
const remove_fields_toggle_promise = async (value: boolean): Promise<void> => {
@@ -22,7 +23,7 @@ export class RemoveFieldsWhenDeleteToggleHandler extends AbstractSettingsHandler
2223
add_toggle(
2324
containerEl,
2425
this.settingTitle,
25-
"Enable/disable remove fields when a column is deleted",
26+
t("settings_remove_fields_desc"),
2627
local ? view.diskConfig.yaml.config.remove_field_when_delete_column : settingsManager.plugin.settings.local_settings.remove_field_when_delete_column,
2728
remove_fields_toggle_promise
2829
);

0 commit comments

Comments
 (0)