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

Commit 252524e

Browse files
committed
Translation on settings modal ready
1 parent fe13505 commit 252524e

18 files changed

+203
-72
lines changed

src/components/modals/columnSettings/ColumnSections.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { RollupPersistToggleHandler } from "components/modals/columnSettings/han
1818
import { InputType } from "helpers/Constants";
1919
import { AbstractChain } from "patterns/chain/AbstractFactoryChain";
2020
import { AbstractHandler } from "patterns/chain/AbstractHandler";
21+
import { t } from "lang/helpers";
2122

2223

2324
class StyleSetttingsSection extends AbstractChain<ColumnSettingsHandlerResponse> {
@@ -28,7 +29,13 @@ class StyleSetttingsSection extends AbstractChain<ColumnSettingsHandlerResponse>
2829
}
2930
protected customHandle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
3031
const style_section = columnHandlerResponse.containerEl.createDiv("column-section-container-style");
31-
add_setting_header(style_section, "Style", "h3");
32+
add_setting_header(
33+
style_section,
34+
t("column_settings_modal_section_style_title"),
35+
"h3"
36+
);
37+
38+
3239
columnHandlerResponse.containerEl = style_section;
3340
return columnHandlerResponse;
3441
}
@@ -62,7 +69,7 @@ class BehaviorSetttingsSection extends AbstractChain<ColumnSettingsHandlerRespon
6269
}
6370
protected customHandle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
6471
const behavior_section = columnHandlerResponse.containerEl.createDiv("column-section-container-behavior");
65-
add_setting_header(behavior_section, "Behavior", "h3");
72+
add_setting_header(behavior_section, t("column_settings_modal_section_behaviour_title"), "h3");
6673
columnHandlerResponse.containerEl = behavior_section;
6774
return columnHandlerResponse;
6875
}
@@ -105,7 +112,11 @@ class ParticularSetttingsSection extends AbstractChain<ColumnSettingsHandlerResp
105112
protected customHandle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
106113
const particular_section = columnHandlerResponse.containerEl.createDiv("column-section-container-particular");
107114
// title of the section
108-
add_setting_header(particular_section, `Particular properties of "${columnHandlerResponse.column.input}" column type`, 'h3');
115+
add_setting_header(
116+
particular_section,
117+
t("column_settings_modal_section_type_title", columnHandlerResponse.column.input),
118+
'h3'
119+
);
109120
columnHandlerResponse.containerEl = particular_section;
110121
return columnHandlerResponse;
111122
}

src/components/modals/columnSettings/handlers/ColumnIdInputHandler.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ import { ColumnSettingsHandlerResponse } from "cdm/ModalsModel";
33
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
44
import { dbTrim } from "helpers/StylesHelper";
55
import { TableColumn } from "cdm/FolderModel";
6+
import { t } from "lang/helpers";
67

78
export class ColumnIdInputHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
8-
settingTitle: string = 'Column id';
9+
settingTitle = t("column_settings_modal_column_id_title");
910
handle(response: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
1011
const { column, containerEl, columnSettingsManager } = response;
1112
const { columnsState, dataState, configState } = columnSettingsManager.modal;
1213
let value = `${column.key}${column.nestedKey ? `.${column.nestedKey}` : ''}`;
1314
new Setting(containerEl)
1415
.setName(this.settingTitle)
15-
.setDesc("Enter the column id of the column")
16+
.setDesc(t("column_settings_modal_column_id_desc"))
1617
.addText(text => {
1718
text.setPlaceholder("Write your nested key...")
1819
.setValue(value)
@@ -21,13 +22,15 @@ export class ColumnIdInputHandler extends AbstractHandlerClass<ColumnSettingsHan
2122
})
2223
}).addExtraButton((cb) => {
2324
cb.setIcon("save")
24-
.setTooltip("Save column id")
25+
.setTooltip(t("column_settings_modal_column_id_button_tooltip"))
2526
.onClick(async (): Promise<void> => {
2627
const arrayKey = value.split('.');
2728
const rootKey = arrayKey.shift();
2829
const validateMessage = this.validateNewId(rootKey, arrayKey, columnsState.info.getAllColumns());
2930
if (validateMessage) {
30-
new Notice(`Error saving id. ${validateMessage}`, 3000);
31+
new Notice(
32+
t("column_settings_modal_column_id_notice_error_on_save", validateMessage),
33+
3000);
3134
return;
3235
}
3336
// Update state of altered column
@@ -53,7 +56,10 @@ export class ColumnIdInputHandler extends AbstractHandlerClass<ColumnSettingsHan
5356
await dataState.actions.groupFiles();
5457
}
5558
}
56-
new Notice(`new column id was saved: ${value}`, 1500);
59+
new Notice(
60+
t("column_settings_modal_column_id_notice_success_on_save", value),
61+
1500
62+
);
5763
columnSettingsManager.modal.enableReset = true;
5864
});
5965
});
@@ -65,18 +71,18 @@ export class ColumnIdInputHandler extends AbstractHandlerClass<ColumnSettingsHan
6571
const candidateId = `${rootKey}${arrayKey.length > 0 ? `-${arrayKey.join('-')}` : ''}`;
6672
// Check if new root key is not empty
6773
if (!rootKey) {
68-
return "The root key is required";
74+
return t("column_settings_modal_column_id_error_empty_root_key");
6975
}
7076
// Validate special characters in root key
7177
if (rootKey.match(/[^a-zA-Z0-9_]/)) {
72-
return "The root key can only contain letters, numbers and underscores";
78+
return t("column_settings_modal_column_id_error_invalid_key");
7379
}
7480
// Validate if new root key is not duplicated
7581
const conflictId = columns.some((column: TableColumn) =>
7682
column.id === candidateId
7783
);
7884
if (conflictId) {
79-
return "The id already exists";
85+
return t("column_settings_modal_column_id_error_already_exists");
8086
}
8187
return '';
8288
}

src/components/modals/columnSettings/handlers/InlineToggleHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { add_toggle } from "settings/SettingsComponents";
22
import { ColumnSettingsHandlerResponse } from "cdm/ModalsModel";
33
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
4+
import { t } from "lang/helpers";
45
export class InlineToggleHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
5-
settingTitle: string = 'Inline field';
6+
settingTitle = t("column_settings_modal_inline_toggle_title");
67
handle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
78
const { column, containerEl, columnSettingsManager } = columnHandlerResponse;
89
const { view } = columnSettingsManager.modal;
@@ -18,7 +19,7 @@ export class InlineToggleHandler extends AbstractHandlerClass<ColumnSettingsHand
1819
add_toggle(
1920
containerEl,
2021
this.settingTitle,
21-
"Convert field to inline (field:: value) or leave it as frontmatter (---field: value---)",
22+
t("column_settings_modal_inline_toggle_desc"),
2223
column.config.isInline,
2324
inline_togle_promise
2425
);

src/components/modals/columnSettings/handlers/SelectedColumnOptionsHandler.tsx

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ import { RowSelectOption } from "cdm/ComponentsModel";
22
import { ColumnSettingsHandlerResponse } from "cdm/ModalsModel";
33
import { randomColor, castStringtoHsl, castHslToString } from "helpers/Colors";
44
import { satinizedColumnOption } from "helpers/FileManagement";
5+
import { t } from "lang/helpers";
56
import { ButtonComponent, Notice, Setting } from "obsidian";
67
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
78
import { LOGGER } from "services/Logger";
9+
import { add_setting_header } from "settings/SettingsComponents";
810

911
export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
10-
settingTitle: string = "Column Options";
12+
settingTitle = t("column_settings_modal_selected_column_options_title");
1113
handle(
1214
columnHandlerResponse: ColumnSettingsHandlerResponse
1315
): ColumnSettingsHandlerResponse {
@@ -19,11 +21,21 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
1921
const addLabelPromise = async (): Promise<void> => {
2022
// Error handling
2123
if (newLabel === "") {
22-
new Notice("Empty label could not be added!");
24+
new Notice(
25+
t(
26+
"column_settings_modal_selected_column_options_notice_error_empty_label"
27+
),
28+
1500
29+
);
2330
return;
2431
}
2532
if (options.find((option) => option.label === newLabel)) {
26-
new Notice("Duplicate labels could not be added!");
33+
new Notice(
34+
t(
35+
"column_settings_modal_selected_column_options_notice_error_duplicate_label"
36+
),
37+
1500
38+
);
2739
return;
2840
}
2941
// Add new label
@@ -45,13 +57,19 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
4557
columnHandlerResponse
4658
);
4759
};
48-
60+
add_setting_header(containerEl, this.settingTitle, "h3");
4961
new Setting(containerEl)
50-
.setName("Add new label")
51-
.setDesc("Add new label to the list of options available for this column")
62+
.setName(t("column_settings_modal_selected_column_options_new_option"))
63+
.setDesc(
64+
t("column_settings_modal_selected_column_options_new_option_desc")
65+
)
5266
.addText((text) => {
5367
text
54-
.setPlaceholder("label of option")
68+
.setPlaceholder(
69+
t(
70+
"column_settings_modal_selected_column_options_new_option_placeholder"
71+
)
72+
)
5573
.setValue(newLabel)
5674
.onChange(async (value: string): Promise<void> => {
5775
newLabel = satinizedColumnOption(value);
@@ -68,7 +86,11 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
6886
})
6987
.addButton((button: ButtonComponent) => {
7088
button
71-
.setTooltip("Adds new option of Selected column")
89+
.setTooltip(
90+
t(
91+
"column_settings_modal_selected_column_options_new_option_button_tooltip"
92+
)
93+
)
7294
.setButtonText("+")
7395
.setCta()
7496
.onClick(addLabelPromise);
@@ -119,7 +141,7 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
119141
// Edit label button
120142
.addExtraButton((cb) => {
121143
cb.setIcon("pencil")
122-
.setTooltip("Save new label")
144+
.setTooltip(t("column_settings_modal_selected_column_options_edit"))
123145
.onClick(async (): Promise<void> => {
124146
const oldLabel = option.label;
125147
if (currentLabel === oldLabel) {
@@ -145,12 +167,17 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
145167
)
146168
.then(() => {
147169
new Notice(
148-
`Option was updated for all rows. Please refresh the view to see the changes.`,
170+
t(
171+
"column_settings_modal_selected_column_options_notice_update_success"
172+
),
149173
1500
150174
);
151175
})
152176
.catch((err) => {
153-
const errMsg = `Error editing ${currentLabel}`;
177+
const errMsg = t(
178+
"column_settings_modal_selected_column_options_notice_update_error",
179+
currentLabel
180+
);
154181
LOGGER.error(errMsg, err);
155182
new Notice(errMsg, 3000);
156183
});
@@ -192,12 +219,18 @@ export class SelectedColumnOptionsHandler extends AbstractHandlerClass<ColumnSet
192219
)
193220
.then(() => {
194221
new Notice(
195-
`Option ${removedOption.label} was removed from all rows`,
222+
t(
223+
"column_settings_modal_selected_column_options_notice_delete_success",
224+
removedOption.label
225+
),
196226
1500
197227
);
198228
})
199229
.catch((err) => {
200-
const errMsg = `Error removing ${removedOption.label}`;
230+
const errMsg = t(
231+
"column_settings_modal_selected_column_options_notice_delete_error",
232+
removedOption.label
233+
);
201234
LOGGER.error(errMsg, err);
202235
new Notice(errMsg, 3000);
203236
});

src/components/modals/columnSettings/handlers/automations/FormulaInputHandler.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ColumnSettingsHandlerResponse } from "cdm/ModalsModel";
22
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
33
import { Setting } from "obsidian";
44
import { add_toggle } from "settings/SettingsComponents";
5+
import { t } from "lang/helpers";
56
export class FormulaInputHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
67
settingTitle: string = 'Formula properties';
78
handle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
@@ -27,18 +28,18 @@ export class FormulaInputHandler extends AbstractHandlerClass<ColumnSettingsHand
2728
}
2829
add_toggle(
2930
containerEl,
30-
"Persist formula output",
31-
"Enable/disable to persist formula output on your notes (Only persisted formulas could be searchable and sortable)",
31+
t("column_settings_modal_formula_input_persist_toggle_title"),
32+
t("column_settings_modal_formula_input_persist_toggle_desc"),
3233
column.config.persist_formula,
3334
persist_Formula_toggle_promise
3435
);
3536

3637
new Setting(containerEl)
37-
.setName('Formula input')
38-
.setDesc('Enter your formula here using your js function names')
38+
.setName(t("column_settings_modal_formula_input_textarea_title"))
39+
.setDesc(t("column_settings_modal_formula_input_textarea_desc"))
3940
.addTextArea((textArea) => {
4041
textArea.setValue(config.formula_query);
41-
textArea.setPlaceholder('Write here your formula');
42+
textArea.setPlaceholder(t("column_settings_modal_formula_input_textarea_placeholder"));
4243
textArea.onChange(formula_promise);
4344
// style textarea size in function of formula length
4445
const formula_length = config.formula_query ? config.formula_query.length : 0;
@@ -49,15 +50,12 @@ export class FormulaInputHandler extends AbstractHandlerClass<ColumnSettingsHand
4950
});
5051
const mainDesc = containerEl.createEl('p');
5152

52-
mainDesc.appendText('Check our ');
5353
mainDesc.appendChild(
5454
createEl('a', {
55-
text: "documentation",
55+
text: t("column_settings_modal_formula_input_textarea_docu_link_text"),
5656
href: "https://rafaelgb.github.io/obsidian-db-folder/features/Formulas/",
5757
})
5858
);
59-
60-
mainDesc.appendText(' for more information about how to use formulas');
6159
return this.goNext(columnHandlerResponse);
6260
}
6361
}

src/components/modals/columnSettings/handlers/dropdowns/DatabaseSelectorHandler.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
33
import { Setting } from "obsidian";
44
import { StringSuggest } from "settings/suggesters/StringSuggester";
55
import { recordAllDatabases } from "helpers/RelationHelper";
6+
import { t } from "lang/helpers";
67

78
export class DatabaseSelectorHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
8-
settingTitle: string = 'Select another table to relate with';
9+
settingTitle: string = t("column_settings_modal_database_selector_title");
910
handle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
1011
const { column, containerEl, columnSettingsManager } = columnHandlerResponse;
1112
const { view } = columnSettingsManager.modal;
@@ -22,13 +23,13 @@ export class DatabaseSelectorHandler extends AbstractHandlerClass<ColumnSettings
2223

2324
new Setting(containerEl)
2425
.setName(this.settingTitle)
25-
.setDesc('Select from the existing tables to relate with the current column')
26+
.setDesc(t("column_settings_modal_database_selector_desc"))
2627
.addSearch((cb) => {
2728
new StringSuggest(
2829
cb.inputEl,
2930
avaliableDDBB
3031
);
31-
cb.setPlaceholder("Search Relation...")
32+
cb.setPlaceholder(t("column_settings_modal_database_selector_placeholder"))
3233
.setValue(column.config.related_note_path)
3334
.onChange(database_selector_promise);
3435
});

src/components/modals/columnSettings/handlers/media/LinkAliasToggleHandler.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { add_text, add_toggle } from "settings/SettingsComponents";
22
import { ColumnSettingsHandlerResponse } from "cdm/ModalsModel";
33
import { AbstractHandlerClass } from "patterns/chain/AbstractHandler";
4+
import { t } from "lang/helpers";
45
export class LinkAliasToggleHandler extends AbstractHandlerClass<ColumnSettingsHandlerResponse> {
5-
settingTitle: string = 'Enable link alias';
6+
settingTitle: string = t("column_settings_modal_link_alias_title");
67
handle(columnHandlerResponse: ColumnSettingsHandlerResponse): ColumnSettingsHandlerResponse {
78
const { column, containerEl, columnSettingsManager } = columnHandlerResponse;
89
const { view } = columnSettingsManager.modal;
@@ -29,16 +30,16 @@ export class LinkAliasToggleHandler extends AbstractHandlerClass<ColumnSettingsH
2930
add_toggle(
3031
containerEl,
3132
this.settingTitle,
32-
"Enable/disable alias for media links using column label",
33+
t("column_settings_modal_link_alias_desc"),
3334
column.config.link_alias_enabled,
3435
link_alias_togle_promise
3536
);
3637
if (column.config.link_alias_enabled) {
3738
add_text(
3839
containerEl,
39-
'Custom link alias',
40-
'Custom alias for media links (leave blank to use column label)',
41-
'insert alias...',
40+
t("column_settings_modal_link_alias_text_title"),
41+
t("column_settings_modal_link_alias_text_desc"),
42+
t("column_settings_modal_link_alias_text_placeholder"),
4243
column.config.custom_link_alias,
4344
custom_link_alias_promise,
4445
)

0 commit comments

Comments
 (0)