${hasData
- ? html``
+ >`
: html`${this.hass.localize(
"ui.panel.lovelace.cards.energy.no_data_period"
)}`}
diff --git a/src/panels/lovelace/common/validate-condition.ts b/src/panels/lovelace/common/validate-condition.ts
index 382ffdddfe..e0cf6792fb 100644
--- a/src/panels/lovelace/common/validate-condition.ts
+++ b/src/panels/lovelace/common/validate-condition.ts
@@ -78,7 +78,7 @@ function checkStateCondition(
: UNAVAILABLE;
let value = condition.state ?? condition.state_not;
- // Handle entity_id, UI should be updated for conditionnal card (filters does not have UI for now)
+ // Handle entity_id, UI should be updated for conditional card (filters does not have UI for now)
if (Array.isArray(value)) {
const entityValues = value
.map((v) => getValueFromEntityId(hass, v))
@@ -106,7 +106,7 @@ function checkStateNumericCondition(
let above = condition.above;
let below = condition.below;
- // Handle entity_id, UI should be updated for conditionnal card (filters does not have UI for now)
+ // Handle entity_id, UI should be updated for conditional card (filters does not have UI for now)
if (typeof above === "string") {
above = getValueFromEntityId(hass, above) ?? above;
}
diff --git a/src/panels/lovelace/create-element/create-element-base.ts b/src/panels/lovelace/create-element/create-element-base.ts
index a29cb3ef91..5b01ff4193 100644
--- a/src/panels/lovelace/create-element/create-element-base.ts
+++ b/src/panels/lovelace/create-element/create-element-base.ts
@@ -218,7 +218,7 @@ const _lazyCreate = (
// @ts-ignore
element.setConfig(config);
} catch (err: any) {
- // We let it rebuild and the error wil be handled by _createElement
+ // We let it rebuild and the error will be handled by _createElement
fireEvent(element, "ll-rebuild");
}
});
diff --git a/src/panels/lovelace/elements/hui-service-button-element.ts b/src/panels/lovelace/elements/hui-service-button-element.ts
index 7699e3e2f4..21343932af 100644
--- a/src/panels/lovelace/elements/hui-service-button-element.ts
+++ b/src/panels/lovelace/elements/hui-service-button-element.ts
@@ -49,7 +49,7 @@ export class HuiServiceButtonElement
}
if (!this._service) {
- throw Error("Action does not have a action name");
+ throw Error("Action does not have an action name");
}
this._config = config;
diff --git a/src/panels/lovelace/views/hui-masonry-view.ts b/src/panels/lovelace/views/hui-masonry-view.ts
index 697a237a90..d50f42dcac 100644
--- a/src/panels/lovelace/views/hui-masonry-view.ts
+++ b/src/panels/lovelace/views/hui-masonry-view.ts
@@ -231,7 +231,7 @@ export class MasonryView extends LitElement implements LovelaceViewElement {
// An other create columns is started, abort this one
return;
}
- // Calculate in wich column the card should go based on the size and the cards already in there
+ // Calculate in which column the card should go based on the size and the cards already in there
this._addCardToColumn(
columnElements[getColumnIndex(columnSizes, cardSize as number)],
index,
diff --git a/src/state/translations-mixin.ts b/src/state/translations-mixin.ts
index 58f732d89e..e7bb4db8e2 100644
--- a/src/state/translations-mixin.ts
+++ b/src/state/translations-mixin.ts
@@ -298,7 +298,7 @@ export default >(superClass: T) =>
}
const resources = await getHassTranslationsPre109(this.hass!, language);
- // Ignore the repsonse if user switched languages before we got response
+ // Ignore the response if user switched languages before we got response
if (this.hass!.language !== language) {
return this.hass!.localize;
}
@@ -359,7 +359,7 @@ export default >(superClass: T) =>
configFlow
);
- // Ignore the repsonse if user switched languages before we got response
+ // Ignore the response if user switched languages before we got response
if (this.hass!.language !== language) {
return this.hass!.localize;
}
diff --git a/src/translations/en.json b/src/translations/en.json
index 688df34b20..02586cbd70 100644
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -1054,7 +1054,7 @@
},
"end_after": {
"label": "End after",
- "ocurrences": "ocurrences"
+ "ocurrences": "occurrences"
}
},
"rrule": {
@@ -1269,7 +1269,6 @@
"clear_skipped": "Clear skipped",
"install": "Install",
"update": "Update",
- "create_backup": "Create backup before updating",
"auto_update_enabled_title": "Can not skip version",
"auto_update_enabled_text": "Automatic updates for this item have been enabled; skipping it is, therefore, unavailable. You can either install this update now or wait for Home Assistant to do it automatically."
},
@@ -2437,7 +2436,7 @@
},
"create_helper": "Create helper",
"no_helpers": "Looks like you don't have any helpers yet!",
- "search": "Search {number} helpers",
+ "search": "Search {number} {number, plural,\n one {helper}\n other {helpers}\n}",
"error_information": "Error information"
},
"dialog": {
@@ -2496,7 +2495,7 @@
"enable_remote": "[%key:ui::common::enable%]",
"internal_url_automatic": "Automatic",
"internal_url_https_error_title": "Invalid local network URL",
- "internal_url_https_error_description": "You have configured an HTTPS certificate in Home Assistant. This means that your internal URL needs to be set to a domain covered by the certficate.",
+ "internal_url_https_error_description": "You have configured an HTTPS certificate in Home Assistant. This means that your internal URL needs to be set to a domain covered by the certificate.",
"internal_url_automatic_description": "Use the configured network settings",
"internal_url_placeholder": "http://:8123"
},
@@ -2962,7 +2961,7 @@
"assign_category": "Assign category",
"no_category_support": "You can't assign a category to this automation",
"no_category_entity_reg": "To assign a category to an automation it needs to have a unique ID.",
- "search": "Search {number} automations",
+ "search": "Search {number} {number, plural,\n one {automation}\n other {automations}\n}",
"headers": {
"toggle": "Enable/disable",
"name": "Name",
@@ -3877,13 +3876,13 @@
},
"edit_category": "[%key:ui::panel::config::automation::picker::edit_category%]",
"assign_category": "[%key:ui::panel::config::automation::picker::assign_category%]",
- "no_category_support": "You can't assign an category to this script",
- "no_category_entity_reg": "To assign an category to an script it needs to have a unique ID.",
+ "no_category_support": "You can't assign a category to this script",
+ "no_category_entity_reg": "To assign a category to a script it needs to have a unique ID.",
"delete": "[%key:ui::common::delete%]",
"duplicate": "[%key:ui::common::duplicate%]",
"empty_header": "Create your first script",
"empty_text": "A script is a sequence of actions that can be run from a dashboard, an automation, or be triggered by voice. For example, a ''Wake-up routine''' script that gradually turns on the light in the bedroom and opens the blinds after a delay.",
- "search": "Search {number} scripts",
+ "search": "Search {number} {number, plural,\n one {script}\n other {scripts}\n}",
"migrate_script": "Migrate script?",
"migrate_script_description": "You can migrate this script, so it can be edited from the UI. After it is migrated and you have saved it, you will have to manually delete your old script from your configuration. Do you want to migrate this script?"
},
@@ -3993,11 +3992,11 @@
},
"edit_category": "[%key:ui::panel::config::automation::picker::edit_category%]",
"assign_category": "[%key:ui::panel::config::automation::picker::assign_category%]",
- "no_category_support": "You can't assign an category to this scene",
- "no_category_entity_reg": "To assign an category to an scene it needs to have a unique ID.",
+ "no_category_support": "You can't assign a category to this scene",
+ "no_category_entity_reg": "To assign a category to an scene it needs to have a unique ID.",
"empty_header": "Create your first scene",
"empty_text": "Scenes capture entities' states, so you can re-experience the same scene later on. For example, a ''Watching TV'' scene that dims the living room lights, sets a warm white color and turns on the TV.",
- "search": "Search {number} scenes"
+ "search": "Search {number} {number, plural,\n one {scene}\n other {scenes}\n}"
},
"editor": {
"review_mode": "Review Mode",
@@ -4241,6 +4240,7 @@
"add_device": "Add device",
"caption": "Devices",
"description": "Manage configured devices",
+ "filtering_by_config_entry": "[%key:ui::panel::config::entities::picker::filtering_by_config_entry%]",
"device_info": "{type} info",
"edit_settings": "Edit settings",
"unnamed_device": "Unnamed {type}",
@@ -4369,7 +4369,7 @@
"confirm_delete_integration": "Are you sure you want to remove this device from {integration}?",
"error_delete": "Error deleting device",
"picker": {
- "search": "Search {number} devices",
+ "search": "Search {number} {number, plural,\n one {device}\n other {devices}\n}",
"state": "Status",
"bulk_actions": {
"move_area": "Move to area",
@@ -4385,8 +4385,9 @@
"header": "Entities",
"introduction": "Home Assistant keeps a registry of every entity it has ever seen that can be uniquely identified. Each of these entities will have an entity ID assigned which will be reserved for just this entity.",
"introduction2": "Use the entity registry to override the name, change the entity ID or remove the entry from Home Assistant.",
- "search": "Search {number} entities",
+ "search": "Search {number} {number, plural,\n one {entity}\n other {entities}\n}",
"unnamed_entity": "Unnamed entity",
+ "filtering_by_config_entry": "Filtering by config entry",
"status": {
"available": "Available",
"unavailable": "Unavailable",
@@ -4583,7 +4584,7 @@
"application_credentials": {
"delete_title": "Application credentials",
"delete_prompt": "Would you like to also delete Application Credentials for this integration?",
- "delete_detail": "If you delete them, you will need to enter credentials when setting up the integration again. If you keep them, they will be used automatically when setting up the integration again or may be acccessed from the Application Credentials menu.",
+ "delete_detail": "If you delete them, you will need to enter credentials when setting up the integration again. If you keep them, they will be used automatically when setting up the integration again or may be accessed from the Application Credentials menu.",
"delete_error_title": "Deleting application credentials failed",
"dismiss": "Keep",
"learn_more": "Learn more about application credentials"
@@ -5510,7 +5511,7 @@
"ping_node": {
"title": "Ping a Matter device",
"introduction": "Perform a (server-side) ping on your Matter device on all its (known) IP-addresses.",
- "battery_device_warning": "Note that especially for battery powered devices this can take a a while. You may need to wake up battery powered devices before starting the pinging to speed up the process. Refer to your device's manual for instructions on how to wake the device.",
+ "battery_device_warning": "Note that especially for battery powered devices this can take a while. You may need to wake up battery powered devices before starting the pinging to speed up the process. Refer to your device's manual for instructions on how to wake the device.",
"start_ping": "Start ping",
"in_progress": "The device is being pinged. This may take some time.",
"ping_failed": "The device ping failed. Additional information may be available in the logs.",
@@ -5679,7 +5680,7 @@
},
"version": {
"title": "Samba/Windows (CIFS) version",
- "description": "This choses the version of the protocol to use"
+ "description": "This chooses the version of the protocol to use"
},
"username": {
"title": "Username",
@@ -7999,8 +8000,7 @@
"update_available": {
"update_name": "Update {name}",
"open_release_notes": "Open release notes",
- "create_backup": "Create backup before updating",
- "description": "You have {version} installed. Click update to update to version {newest_version}",
+ "description": "You have {version} installed. Press update to update to version {newest_version}",
"updating": "Updating {name} to version {version}",
"no_update": "No update available for {name}"
},
diff --git a/src/util/common-translation.ts b/src/util/common-translation.ts
index 7cae549c0a..105da9b977 100644
--- a/src/util/common-translation.ts
+++ b/src/util/common-translation.ts
@@ -42,7 +42,7 @@ export function findAvailableLanguage(language: string) {
return language;
}
- // Perform case-insenstive comparison since browser isn't required to
+ // Perform case-insensitive comparison since browser isn't required to
// report languages with specific cases.
const langLower = language.toLowerCase();
diff --git a/test/common/entity/attribute_class_names.test.ts b/test/common/entity/attribute_class_names.test.ts
index d3377beddd..51e9339f00 100644
--- a/test/common/entity/attribute_class_names.test.ts
+++ b/test/common/entity/attribute_class_names.test.ts
@@ -9,7 +9,7 @@ describe("attributeClassNames", () => {
assert.strictEqual(attributeClassNames(stateObj, attrs), "");
});
- it("Matches no attrbutes", () => {
+ it("Matches no attributes", () => {
const stateObj: any = {
attributes: {
other_attr_1: 1,
@@ -19,7 +19,7 @@ describe("attributeClassNames", () => {
assert.strictEqual(attributeClassNames(stateObj, attrs), "");
});
- it("Matches one attrbute", () => {
+ it("Matches one attribute", () => {
const stateObj: any = {
attributes: {
other_attr_1: 1,
@@ -30,7 +30,7 @@ describe("attributeClassNames", () => {
assert.strictEqual(attributeClassNames(stateObj, attrs), "has-mock_attr1");
});
- it("Matches two attrbutes", () => {
+ it("Matches two attributes", () => {
const stateObj: any = {
attributes: {
other_attr_1: 1,