cleaned for new home

This commit is contained in:
2025-06-23 12:40:35 +02:00
parent e426efb80f
commit 1f4970c17c
173 changed files with 16228 additions and 24225 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,130 @@
import { LitElement, TemplateResult } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../types';
declare module 'custom-card-helpers' {
interface HomeAssistant {
__uvc_template_strings?: {
[key: string]: string;
};
}
}
export declare class UltraVehicleCard extends LitElement {
hass: HomeAssistant;
private config;
private _templateService?;
private static readonly DEFAULT_ACTIVE_STATES;
private static readonly DEFAULT_INACTIVE_STATES;
private _lastRenderTime;
private _lastImageUrl;
private _mapPopupData;
private _iconActiveStates;
private _iconsAwaitingConfirmation;
private _templateSubscriptions;
private _templateResults;
private _confirmationCancelListeners;
private _iconStateDebounceTimers;
private _highlightedSections;
static getConfigElement(): HTMLElement;
static getStubConfig(): {
title: string;
title_alignment: string;
title_size: number;
formatted_entities: boolean;
show_units: boolean;
vehicle_image_type: string;
sections_order: string[];
};
static get properties(): {
hass: {};
config: {};
};
static get styles(): import("lit").CSSResult;
setConfig(config: UltraVehicleCardConfig): void;
private _migrateBarsToIndividual;
private _cleanupInfoSections;
private _saveConfigChanges;
private _checkForGradientOrAnimationChanges;
private _forceFullRender;
protected render(): TemplateResult<1>;
private _renderImage;
private _getFriendlyName;
/**
* Check if an entity is a location tracking entity with coordinate data
*/
private _isLocationTrackingEntity;
/**
* Render a map view for location tracking entities
*/
private _renderMapImage;
private _formatValue;
private _handleImageError;
private _renderBar;
private _renderPercentageText;
private _getBarAnimationClass;
private _getEntityState;
private _renderIconRows;
private _renderIconRow;
private _renderCardIcon;
private _debouncedIconStateUpdate;
private _handleIconClick;
/**
* Shows a toast notification
* @param message The message to display
* @param type The type of toast (success, error, or info)
*/
private _showToast;
/**
* Opens a location map for the entity
*/
private _openLocationMap;
private _handleDragStart;
private _handleDragEnd;
private _hexToRgb;
private _hsToRgb;
private _colorTempToRgb;
private _getZoneInfo;
private _renderVehicleInfo;
private _computeImageStyle;
private _normalizeState;
private _renderBarLabels;
/**
* Process bar template and return the rendered result
* Similar to how templates are handled for icons
*/
private _processBarTemplate;
private _showMoreInfo;
firstUpdated(): void;
connectedCallback(): void;
disconnectedCallback(): void;
private _handleForceGradientRefresh;
private _refreshInterval;
private _setupRefreshInterval;
private _entityStates;
private _entityImageUrls;
protected updated(changedProperties: Map<string, any>): void;
private _evaluateTemplate;
private _subscribeToTemplate;
private _parseTemplateResult;
private _unsubscribeAllTemplates;
private _renderMapPopup;
private _formatCoordinates;
private _getEntityForCoordinates;
private _isDarkMode;
private _closeMapPopup;
private _shouldRenderSection;
private _cancelConfirmation;
private _checkBarSideCondition;
private _processPercentageTemplate;
private _renderInfoRowsFromConfig;
private _renderSingleInfoRow;
private _renderSingleInfoEntity;
private _handleInfoEntityClick;
private _getDisplaySections;
private _cleanupSectionsOrder;
private _ensureInfoAndIconRowsInSectionsOrder;
private _handleHighlightSections;
private _isHighlighted;
private _getHighlightClass;
private _getImageHighlightStyle;
private _handleClearHighlight;
}

View File

@@ -0,0 +1,9 @@
import { LitElement } from 'lit';
export declare class UltraVehicleColorPicker extends LitElement {
value?: string;
label?: string;
private _getDisplayColor;
private _colorChanged;
render(): import("lit").TemplateResult<1>;
static get styles(): import("lit").CSSResult;
}

View File

@@ -0,0 +1,39 @@
import { LitElement, TemplateResult } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { ActionImageConfig } from '../types';
export declare class ActionImageRow extends LitElement {
hass: HomeAssistant;
config: ActionImageConfig;
lang: string;
initialExpanded: boolean;
private expanded;
private _cropExpanded;
private _sliderInputValue?;
private _hasInitialized;
protected updated(changedProperties: Map<string, any>): void;
protected render(): TemplateResult<1>;
private _renderPreview;
private _renderImageInput;
private _toggleExpand;
private _handleDelete;
private _handleDuplicate;
private _handleEntityFormChange;
private _handleStateChange;
private _handleImageTypeChange;
private _handleImageUrlChange;
private _handleImageEntityFormChange;
private _handleFileUpload;
private _handleConfigChange;
private _getImageTypeName;
private _truncatePath;
private _handleDragStart;
private _handleDragEnd;
private _renderCropControls;
private _createDefaultCropSettings;
private _updateImageCrop;
private _handleWidthChange;
private _handleSliderInput;
private _handleWidthInput;
private _handleWidthInputChange;
static styles: import("lit").CSSResult;
}

View File

@@ -0,0 +1,14 @@
import { LitElement } from 'lit';
export declare class ColorPicker extends LitElement {
value?: string;
label?: string;
configValue?: string;
showResetButton: boolean;
private _getDisplayColor;
private _rgbToHex;
private _onColorChanged;
private _fireChangeEvent;
private _resetColor;
render(): import("lit").TemplateResult<1>;
static get styles(): import("lit").CSSResult;
}

View File

@@ -0,0 +1,11 @@
import { LitElement } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
export declare class UltraEntityPicker extends LitElement {
hass: HomeAssistant;
label: string;
value?: string;
entityFilter?: (entityId: string) => boolean;
static get styles(): import("lit").CSSResult;
protected render(): import("lit").TemplateResult<1>;
private _valueChanged;
}

View File

@@ -0,0 +1,39 @@
import { LitElement } from 'lit';
export interface GradientStop {
id: string;
position: number;
color: string;
}
export declare function generateGradientString(stops: GradientStop[]): string;
export declare function createDefaultGradientStops(): GradientStop[];
export declare function createLinearGradient(stops: GradientStop[]): string;
export declare function getColorAtPosition(stops: GradientStop[], position: number): string;
export declare function createStopAtLargestGap(stops: GradientStop[]): GradientStop;
export declare function normalizeBoundaryStops(stops: GradientStop[]): GradientStop[];
export declare class GradientEditor extends LitElement {
stops: GradientStop[];
barSize: 'thin' | 'regular' | 'thick' | 'thiccc';
barRadius: 'round' | 'square' | 'rounded-square';
barStyle: string;
private _draggedIndex;
static styles: import("lit").CSSResult;
render(): import("lit").TemplateResult<1>;
private _renderStopItem;
private _addStop;
private _resetStops;
private _deleteStop;
private _handleColorChange;
private _handlePositionChange;
private _validateAndSortStops;
private _notifyChange;
private _dispatchResetEvent;
private _handleDragStart;
private _handleDragEnd;
private _handleDragOver;
private _handleDrop;
}
declare global {
interface HTMLElementTagNameMap {
'gradient-editor': GradientEditor;
}
}

View File

@@ -0,0 +1,4 @@
// Ultra Vehicle Card Debug Info
// Version: 2.9.1
// Build Date: 2025-06-04T20:50:34.534Z
// Build Mode: production

View File

@@ -0,0 +1 @@
export declare const editorStyles: import("lit").CSSResult;

View File

@@ -0,0 +1,8 @@
import { LitElement, TemplateResult, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
export declare class AboutTab extends LitElement {
hass: HomeAssistant;
private _t;
protected render(): TemplateResult | typeof nothing;
static styles: import("lit").CSSResult;
}

View File

@@ -0,0 +1,23 @@
import { LitElement } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
import '../../components/action-image-row';
export declare class ActionImagesTab extends LitElement {
hass: HomeAssistant;
config: UltraVehicleCardConfig;
private _dragOverIndex;
private _newlyAddedImageIds;
protected render(): import("lit").TemplateResult<1>;
private _handleImageConfigChange;
private _addActionImage;
private _duplicateActionImage;
private _deleteActionImage;
private _updateConfig;
private _handleRowDragOver;
private _handleDragOver;
private _handleDragLeave;
private _handleDrop;
private _handlePriorityChange;
private _t;
static styles: import("lit").CSSResult;
}

View File

@@ -0,0 +1,77 @@
import { LitElement, TemplateResult, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
import '../../components/entity-picker';
import '../../components/color-picker';
import '../../components/gradient-editor';
export declare class BarsTab extends LitElement {
hass: HomeAssistant;
config: UltraVehicleCardConfig;
private _expandedBar;
private _preventExpandCollapse;
private _activeBarTabs;
private _updateStopDebounceTimer;
private _removeStopDebounceTimer;
private _updateOrderDebounceTimer;
private _gradientChangedDebounceTimer;
private _isUpdatingGradient;
private readonly DEBOUNCE_DELAY;
private readonly MAX_STOPS;
private _t;
private _generateUniqueId;
private _getFriendlyName;
private _truncateText;
private _fireConfigChanged;
private _fireForceRefreshEvent;
private _fireForceGradientRefreshEvent;
private _navigateToCustomizeTab;
private _handleGlobalBarAlignmentChange;
private _toggleBarExpand;
private _syncSectionsOrderWithBars;
private _addBar;
private _duplicateBar;
private _removeBar;
private _barValueChanged;
private _handleColorChange;
private _setNestedBarValue;
private _setActiveBarTab;
private _updateBarProperty;
private _resetBarColor;
private _resetBarSize;
private _getEnsuredGradientStops;
private _addGradientStop;
private _updateGradientStop;
private _removeGradientStop;
private _handleDuplicateStop;
private _handleGradientStopColorChange;
private _handleGradientChanged;
private _handleGradientStopDelete;
private _handleGradientReset;
protected render(): TemplateResult | typeof nothing;
private _renderBar;
private _renderBarContent;
private _renderBarConfigurationTab;
private _renderAlignmentControl;
private _renderBarColorsTab;
private _handleGradientFormChange;
private _renderBarAnimationTab;
private _renderPercentageTextSize;
private _renderPercentageOptions;
private _renderColorPickersGrid;
private _renderGradientEditor;
private _getMainBarSchema;
private _getLeftSideSchema;
private _getRightSideSchema;
private _getLeftTitleSizeSchema;
private _getLeftTextSizeSchema;
private _getRightTitleSizeSchema;
private _getRightTextSizeSchema;
private _getGradientToggleSchema;
private _prepareBarData;
static styles: import("lit").CSSResult;
private _generateGradientPreview;
private _updateGradientStopsOrder;
private _updateBarCondition;
private _renderLeftSideConditionFields;
private _renderRightSideConditionFields;
}

View File

@@ -0,0 +1,49 @@
import { LitElement, TemplateResult, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
export declare class CustomizeTab extends LitElement {
hass: HomeAssistant;
config: UltraVehicleCardConfig;
private _draggedSection;
private _expandedSectionId;
private _dropTargetSection;
private _layoutDescriptionsExpanded;
private _dropTargetColumn;
private _t;
private _fireConfigChanged;
private _getFriendlyName;
private _truncateText;
private _valueChanged;
private _handleSectionDragStart;
private _handleSectionDragEnd;
private _handleSectionDragOver;
private _handleSectionDragLeave;
private _handleSectionDrop;
private _handleColumnDragOver;
private _handleColumnDragLeave;
private _getDisplaySections;
private _getExpandedConfigSections;
private _handleColumnDrop;
private _rearrangeSections;
private _toggleSectionExpand;
private _updateSectionMargin;
private _updateSectionCondition;
private _updateSectionBreakConfig;
private _resetSectionBreakColor;
private _handleAddSectionBreak;
private _handleDeleteSectionBreak;
protected render(): TemplateResult | typeof nothing;
protected updated(changedProperties: Map<string, any>): void;
private _renderCustomizeTab;
private _renderDraggableSections;
private _renderGlobalCssSection;
getSectionIcon(sectionId: string): string;
getSectionLabel(sectionId: string): string;
private _cleanupSectionsOrder;
private _handleConditionTypeChange;
private _updateEntityCondition;
private _updateStateCondition;
private _getSectionTemplate;
private _updateSectionTemplate;
static styles: import("lit").CSSResult;
}

View File

@@ -0,0 +1,65 @@
import { LitElement, TemplateResult, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
import '../../components/entity-picker';
import '../../components/color-picker';
import '../../components/gradient-editor';
export declare class IconsTab extends LitElement {
hass: HomeAssistant;
config: UltraVehicleCardConfig;
private _expandedIconRow;
private _expandedIcon;
private _activeIconTabs;
private _layoutHelpExpanded;
private _rowSettingsExpanded;
private _stateSettingsExpanded;
private _t;
private _generateUniqueId;
private _getFriendlyName;
private _truncateText;
private _formatFieldName;
private _fireConfigChanged;
private _addIconRow;
private _removeIconRow;
private _duplicateIconRow;
private _duplicateIcon;
private _toggleIconRowExpand;
private _updateIconRowConfig;
private _addIcon;
private _removeIcon;
private _toggleIconEdit;
private _updateIconConfig;
private _createDefaultIconRow;
private _createDefaultIcon;
private _resetIconColor;
private _resetIconNameColor;
private _resetIconStateColor;
private _resetIconAppearanceColor;
private _resetIconSize;
/**
* Helper to get the icon defined for an entity in Home Assistant,
* falling back to domain/device_class defaults.
*/
private _getEntityIcon;
protected render(): TemplateResult | typeof nothing;
private _renderIconRow;
private _renderIconRowContent;
private _renderIcon;
private _renderIconContent;
private _renderIconGeneralTab;
private _getIconGeneralSchema;
private _getClickActionDescription;
private _renderIconAppearanceTab;
private _getIconAppearanceGeneralSchema;
private _getIconAppearanceIconSchema;
private _getIconAppearanceContainerSchema;
private _getIconAppearanceTextSizeSchema;
private _getIconAppearanceTextAlignmentSchema;
private _renderIconStatesTab;
private _renderColorPicker;
private _toggleLayoutHelp;
private _toggleRowSettings;
private _toggleStateSettings;
static styles: import("lit").CSSResult;
private _navigateToCustomizeTab;
}

View File

@@ -0,0 +1,61 @@
import { LitElement, TemplateResult, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
import '../../components/entity-picker';
import '../../components/color-picker';
export declare class InfoTab extends LitElement {
hass: HomeAssistant;
config: UltraVehicleCardConfig;
private _templateService?;
private _expandedInfoRow;
private _expandedInfoEntity;
private _activeInfoTabs;
private _rowSettingsExpanded;
private _draggedEntity;
private _dropTargetEntity;
private _isTemplateEditing;
private _t;
private _generateUniqueId;
private _getFriendlyName;
private _truncateText;
private _formatFieldName;
private _fireConfigChanged;
private _addInfoRow;
private _removeInfoRow;
private _duplicateInfoRow;
private _toggleInfoRowExpand;
private _updateInfoRowConfig;
private _addInfoEntity;
private _removeInfoEntity;
private _duplicateInfoEntity;
private _toggleInfoEntityEdit;
private _updateInfoEntityConfig;
/**
* Helper to get the icon defined for an entity in Home Assistant,
* falling back to domain/device_class defaults.
*/
private _getEntityIcon;
private _createDefaultInfoRow;
private _createDefaultInfoEntity;
private _toggleRowSettings;
private _navigateToCustomizeTab;
private _setTemplateEditingMode;
protected render(): TemplateResult | typeof nothing;
private _renderMigrationNotice;
private _migrateFromLegacy;
private _renderInfoRow;
private _renderInfoRowContent;
private _renderInfoEntity;
private _renderInfoEntityContent;
private _handleInfoEntityDragStart;
private _handleInfoEntityDragEnd;
private _handleInfoEntityDragOver;
private _handleInfoEntityDragLeave;
private _handleInfoEntityDrop;
private _rearrangeInfoEntities;
static styles: import("lit").CSSResult;
connectedCallback(): void;
disconnectedCallback(): void;
protected updated(changedProperties: Map<string, any>): void;
private _handleGlobalClick;
}

View File

@@ -0,0 +1,41 @@
import { LitElement, TemplateResult } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../../types';
import '../../components/entity-picker';
import '../../components/color-picker';
import '../..//components/gradient-editor';
import './action-images-tab';
export declare class SettingsTab extends LitElement {
hass: HomeAssistant;
private _internalConfig;
set config(value: UltraVehicleCardConfig);
get config(): UltraVehicleCardConfig;
private get _config();
private _vehicleCropExpanded;
private _activeSubTab;
private _displayedWidth;
private _rowSettingsExpanded;
private _activeEntityTabs;
private _t;
private _generateUniqueId;
private _formatFieldName;
private _truncatePath;
private _valueChanged;
private _getImageSchema;
private _dispatchFileUpload;
private _resetTitleSize;
private _createDefaultCropSettings;
private _renderCropSliders;
private _updateImageCrop;
private _renderGeneralTab;
protected render(): TemplateResult;
private _handleConfigChangedFromActionImages;
private _handleFileUploadEvent;
private _handleInputWidth;
private _handleInputWidthChange;
private _handleSliderInput;
private _handleImageWidthChange;
private _needsMigration;
private _performMigration;
static styles: import("lit").CSSResult;
}

View File

@@ -0,0 +1,171 @@
import { LitElement, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../types';
import '../components/entity-picker';
import '../components/color-picker';
import '../components/gradient-editor';
export declare class UltraVehicleCardEditor extends LitElement {
hass: HomeAssistant;
private config;
private activeTab;
private _showEntityList;
private _activeField;
private _entityFilter;
private _entities;
private _expandedBar;
private _preventExpandCollapse;
private _draggedBarIndex;
private _dropTargetIndex;
private _expandedIconRow;
private _expandedIcon;
private _draggedIconRow;
private _draggedIcon;
private _dropTargetRow;
private _dropTargetIcon;
private _cropperActive;
private _cropperImage;
private _cropperTargetField;
private _vehicleCropExpanded;
private _actionCropExpanded;
private _draggedBar;
private _dropTargetBar;
private _dropTargetIconRow;
private _draggedSection;
private _expandedSectionId;
private _editorVersion;
private _activeIconTabs;
private _activeBarTabs;
private _gradientEditorKeys;
private _latestStopPositions;
setConfig(config: UltraVehicleCardConfig): void;
private _migrateToIndividualSections;
private handleFileUpload;
private _getCleanConfig;
private _updateConfig;
private _configChangedTimeout;
private _valueChanged;
private _barValueChanged;
private _setNestedValue;
private _toggleBarExpand;
private _addBar;
private _duplicateBar;
private _removeBar;
private _renderSettingsTab;
private _renderCustomizeTab;
private _renderBarsTab;
private _truncateText;
private _getFriendlyName;
private _renderBar;
private _renderBarConfigurationTab;
private _renderBarColorsTab;
private _renderBarAnimationTab;
private _setActiveBarTab;
private _getMainBarSchema;
private _getLeftSideSchema;
private _getRightSideSchema;
private _prepareBarData;
private _renderColorPickersGrid;
private _convertCssVariableToColor;
private _resetBarColor;
private _updateBarProperty;
private _fireForceGradientRefreshEvent;
private _renderActionSchema;
private _getEntityStateOptions;
private _handleActionImageUpload;
private _renderIconsTab;
private _renderIconRow;
private _renderIcon;
private _addIconRow;
private _removeIconRow;
private _duplicateIconRow;
private _duplicateIcon;
private _toggleIconRowExpand;
private _updateIconRowConfig;
private _addIcon;
private _removeIcon;
private _toggleIconEdit;
private _updateIconConfig;
private _getAlignmentLabel;
private _getSpacingValue;
private _handleIconRowDragStart;
private _handleIconRowDragEnd;
private _handleIconRowDragOver;
private _handleIconRowDragLeave;
private _handleIconRowDrop;
private _handleIconDragStart;
private _handleIconDragEnd;
private _handleIconDragOver;
private _handleIconDragLeave;
private _handleIconDrop;
private _rearrangeIcons;
render(): import("lit").TemplateResult<1> | typeof nothing;
static get styles(): import("lit").CSSResult;
firstUpdated(): void;
private _refreshEntityList;
private _onEntityInputChange;
private _onEntityFocus;
private _getFilteredEntities;
private _selectEntity;
private _handleDragStart;
private _handleDragEnd;
private _handleDragOver;
private _handleDragLeave;
private _handleDrop;
private _rearrangeBars;
private _createDefaultConfig;
private _handleFileInputChange;
private _formatFieldName;
private _createDefaultIconRow;
private _createDefaultIcon;
private _generateUniqueId;
private _rearrangeIconRows;
private _createDefaultCropSettings;
private _loadCropperJS;
private _renderImageCropper;
private _applyCrop;
updated(changedProperties: any): void;
private _renderCropSliders;
private _renderIconRows;
private _renderCardIconRow;
private _renderCardIcon;
private _truncatePath;
private _resetIconNameColor;
private _getImageSchema;
private _handleImageUpload;
private _resetIconColor;
private _resetIconAppearanceColor;
private _resetIconSize;
private _handleIconClick;
private _updateImageCrop;
private _resetTitleSize;
private _resetBarSize;
private _ensureGradientStops;
private _renderDraggableSections;
private _dropTargetSection;
private _dropTargetColumn;
private _handleSectionDragStart;
private _handleSectionDragEnd;
private _handleSectionDragOver;
private _handleSectionDragLeave;
private _handleSectionDrop;
private _handleColumnDragOver;
private _handleColumnDragLeave;
private _handleColumnDrop;
private _rearrangeSections;
private _toggleSectionExpand;
private _updateSectionMargin;
private _getLeftTitleSizeSchema;
private _getLeftTextSizeSchema;
private _getRightTitleSizeSchema;
private _getRightTextSizeSchema;
private _getGradientToggleSchema;
private _renderGradientEditor;
private _addGradientStop;
private _updateGradientStop;
private _removeGradientStop;
private _updateGradientStopsOrder;
private _generateGradientPreview;
private _renderGlobalCssSection;
private _renderAboutTab;
private _t;
}

View File

@@ -0,0 +1,63 @@
import { LitElement, nothing } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
import { UltraVehicleCardConfig } from '../types';
import '../components/entity-picker';
import '../components/color-picker';
import '../components/gradient-editor';
import './tabs/settings-tab';
import './tabs/bars-tab';
import './tabs/icons-tab';
import './tabs/customize-tab';
import './tabs/about-tab';
import './tabs/info-tab';
export declare class UltraVehicleCardEditor extends LitElement {
hass: HomeAssistant;
private config;
private activeTab;
private _highlightedSections;
private _highlightTimeout;
private _cropperActive;
private _cropperImage;
private _cropperTargetField;
private _vehicleCropExpanded;
private _actionCropExpanded;
private _showEntityList;
private _activeField;
private _entityFilter;
private _entities;
private _editorVersion;
private _configChangedTimeout;
setConfig(config: UltraVehicleCardConfig): void;
private _migrateToIndividualSections;
private _handleFileUploadEvent;
private _getCleanConfig;
private _updateConfig;
private _updateConfigFromEvent;
private _fireConfigChanged;
private _getFriendlyName;
private _truncateText;
private _generateUniqueId;
private _formatFieldName;
private _getImageSchema;
private _renderCropSliders;
private _updateImageCrop;
private _resetTitleSize;
private _t;
private _fireForceGradientRefreshEvent;
private _forceSaveConfig;
private _handleRequestTabChange;
private _getHighlightedSectionsForTab;
private _updateHighlightedSections;
render(): import("lit").TemplateResult<1> | typeof nothing;
static get styles(): import("lit").CSSResult;
firstUpdated(): void;
private _refreshEntityList;
private _onEntityInputChange;
private _onEntityFocus;
private _getFilteredEntities;
private _selectEntity;
private _loadCropperJS;
private _renderImageCropper;
private _applyCrop;
updated(changedProperties: any): void;
}

View File

@@ -0,0 +1,11 @@
import { LitElement } from 'lit';
import { HomeAssistant } from 'custom-card-helpers';
export declare class UltraEntityPicker extends LitElement {
hass: HomeAssistant;
label: string;
value?: string;
entityFilter?: (entityId: string) => boolean;
static get styles(): import("lit").CSSResult;
protected render(): import("lit").TemplateResult<1>;
private _valueChanged;
}

View File

@@ -0,0 +1,4 @@
import './cards/ultra-vehicle-card';
import './editor/ultra-vehicle-card-editor';
import './components/entity-picker';
export { TemplateService } from './services/template-service';

View File

@@ -1,62 +0,0 @@
import { dedupingMixin } from "https://unpkg.com/@polymer/polymer@3.4.1/lib/utils/mixin.js?module";
const LocalizeMixin = dedupingMixin(
(superClass) =>
class extends superClass {
static get properties() {
return {
hass: Object,
localize: Function,
};
}
connectedCallback() {
super.connectedCallback();
this.loadResources(this.hass.language);
}
async loadResources(language) {
let resources;
const languagesToTry = [language, language.split('-')[0], 'en'];
for (const lang of languagesToTry) {
try {
resources = await this.loadTranslationFile(lang);
if (resources) {
break;
}
} catch (e) {
console.error(`Failed to load translations for ${lang}:`, e);
}
}
if (!resources) {
console.warn('No translations could be loaded. Using default strings.');
resources = {};
}
this.localize = (key, ...args) => {
const translatedValue = key.split('.').reduce((o, i) => o && o[i], resources);
if (translatedValue === undefined) return key;
return translatedValue;
};
}
loadTranslationFile(lang) {
const url = `./translations/${lang}.js`;
return import(url)
.then(module => {
if (typeof module.default !== 'object') {
throw new Error('Translation file does not export a default object');
}
return module.default;
})
.catch(error => {
console.error(`Failed to load translations for ${lang}:`, error);
return null;
});
}
}
);
export const localize = LocalizeMixin;

View File

@@ -0,0 +1,26 @@
export declare function localize(key: string, lang: string, fallback?: string): string;
/**
* Utility function to check if a translation key exists in the English translations
* This is used during development to ensure all used keys have been added to the translation files
*
* @param key The translation key to check
* @returns True if the key exists, false otherwise
*/
export declare function hasTranslation(key: string): boolean;
/**
* Development helper function to log missing translations
* Use during development to identify keys that need to be added to translations
*
* @param key The translation key being accessed
* @param fallback The fallback text provided
*/
export declare function logMissingTranslation(key: string, fallback?: string): void;
/**
* Enhanced localize function that also logs missing translations during development
*
* @param key The translation key
* @param lang The current language
* @param fallback Optional fallback text
* @returns The translated string
*/
export declare function localizeWithLogging(key: string, lang: string, fallback?: string): string;

View File

@@ -1,167 +0,0 @@
export function formatEntityValue(entity, useFormattedEntities, hass, localize) {
if (!entity || !hass) return null;
// If formatting is not enabled, return the state as-is
if (!useFormattedEntities) {
return entity.state;
}
// Use Home Assistant's built-in formatting functions
if (typeof hass.formatEntityState === 'function') {
return hass.formatEntityState(entity);
}
// Fallback to basic formatting if Home Assistant functions are not available
return entity.state;
}
function formatBinaryState(state, attributes, hass, localize) {
const isOn = state.toLowerCase() === 'on';
if (attributes.device_class) {
const key = `state.${attributes.device_class}.${isOn ? 'on' : 'off'}`;
return hass.localize(`component.binary_sensor.${key}`) || localize(key) || (isOn ? 'On' : 'Off');
}
return isOn ? 'On' : 'Off';
}
function formatDeviceTrackerState(state, attributes) {
const locationName = attributes.location_name || state;
if (locationName.toLowerCase() === 'home') {
return 'Home';
} else if (locationName.toLowerCase() === 'not_home') {
return 'Away';
} else {
return locationName.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
}
}
function formatSensorState(state, attributes) {
if (isISODateString(state)) {
return formatChargingEndTime(state);
}
if (!isNaN(parseFloat(state))) {
// Remove trailing zeros and decimal point if necessary
return formatNumberWithCommas(parseFloat(state).toFixed(0));
}
return formatGenericState(state);
}
function formatGenericState(state) {
// Convert snake_case to Title Case
return state.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
}
export async function getIconActiveState(entityId, hass, config) {
const state = hass.states[entityId];
if (!state) return false;
const stateStr = state.state.toLowerCase();
// Check custom active and inactive states from config
const activeState = config.activeState;
const inactiveState = config.inactiveState;
if (activeState) {
if (activeState === 'default') {
return isActiveState(stateStr);
} else if (activeState.startsWith('template:')) {
const templateResp = await (new Promise((resolve, reject) => {
hass.connection.subscribeMessage(
(msg) => resolve(msg),
{
type: "render_template",
template: activeState.slice(9),
}
)
}));
return templateResp.result === true ? true : false;
} else if (activeState.startsWith('attribute:')) {
const [, attributeName, attributeValue] = activeState.split(':');
return state.attributes[attributeName] === attributeValue;
} else if (activeState.startsWith('option:')) {
return stateStr === activeState.split(':')[1].toLowerCase();
} else {
return stateStr === activeState.toLowerCase();
}
}
if (inactiveState) {
if (inactiveState === 'default') {
return !isActiveState(stateStr);
} else if (inactiveState.startsWith('template:')) {
const renderResult = await hass.callApi("post", "template", {template: inactiveState.slice(9)});
return renderResult === "True" ? true : false;
} else if (inactiveState.startsWith('attribute:')) {
const [, attributeName, attributeValue] = inactiveState.split(':');
return state.attributes[attributeName] !== attributeValue;
} else if (inactiveState.startsWith('option:')) {
return stateStr !== inactiveState.split(':')[1].toLowerCase();
} else {
return stateStr !== inactiveState.toLowerCase();
}
}
// If no custom states are set, use the default behavior
return isActiveState(stateStr);
}
function isActiveState(state) {
const activeStates = [
"on", "active", "open", "connected", "running", "true", "1", "home", "above_horizon",
"charging", "full", "yes", "online", "present",
"armed", "occupied", "unlocked", "playing", "motion", "engaged", "awake", "detected"
];
return activeStates.includes(state);
}
export function formatBinarySensorState(state, attributes) {
return state;
}
export function isEngineOn(engineOnEntity) {
if (!engineOnEntity) return false;
const state = engineOnEntity.state.toLowerCase();
const attributes = engineOnEntity.attributes;
// Check attributes for 'engine_on' status
if (attributes) {
for (const [key, value] of Object.entries(attributes)) {
if (typeof value === 'string' && value.toLowerCase() === 'on') {
return true;
}
}
}
// Handle boolean entities
if (['on', 'off', 'true', 'false'].includes(state)) {
return state === 'on' || state === 'true';
}
// Handle numeric entities
if (!isNaN(state)) {
return parseFloat(state) > 0;
}
// Handle string-based entities
const engineOnStates = ['on', 'running', 'active', 'true'];
return engineOnStates.includes(state);
}
function formatNumberWithCommas(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function isISODateString(value) {
return /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/.test(value);
}
function formatChargingEndTime(isoDateString) {
const date = new Date(isoDateString);
const hours = date.getHours();
const minutes = date.getMinutes();
const ampm = hours >= 12 ? "PM" : "AM";
const formattedHours = hours % 12 || 12;
const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;
return `${formattedHours}:${formattedMinutes} ${ampm}`;
}

View File

@@ -0,0 +1,62 @@
import { HomeAssistant } from 'custom-card-helpers';
/**
* Extended HomeAssistant interface to store template string results
* This is declared in the main file as well for backwards compatibility
*/
declare module 'custom-card-helpers' {
interface HomeAssistant {
__uvc_template_strings?: {
[key: string]: string;
};
}
}
/**
* Service class for handling template evaluation and subscription in Ultra Vehicle Card
*/
export declare class TemplateService {
private hass;
private _templateSubscriptions;
private _templateResults;
private _evaluationCache;
private readonly CACHE_TTL;
constructor(hass: HomeAssistant);
/**
* Get a specific template result
*/
getTemplateResult(templateKey: string): boolean | undefined;
/**
* Check if a template subscription exists
*/
hasTemplateSubscription(templateKey: string): boolean;
/**
* Get all template results as a map
*/
getAllTemplateResults(): Map<string, boolean>;
/**
* Evaluates a template string and returns a boolean result
* @param template The template string to evaluate
* @returns Promise resolving to a boolean representing the template evaluation
*/
evaluateTemplate(template: string): Promise<boolean>;
/**
* Subscribe to a template and store results for later use
* @param template The template string to subscribe to
* @param templateKey The unique key to identify this template subscription
*/
subscribeToTemplate(template: string, templateKey: string, onResultChanged?: () => void): Promise<void>;
/**
* Helper method to parse template results consistently
* @param result The raw result from the template evaluation
* @param templateKey Optional template key for context
* @returns Boolean interpretation of the template result
*/
parseTemplateResult(result: any, templateKey?: string): boolean;
/**
* Unsubscribe from all template subscriptions
*/
unsubscribeAllTemplates(): Promise<void>;
/**
* Update the Home Assistant reference
*/
updateHass(hass: HomeAssistant): void;
}

View File

@@ -1,213 +0,0 @@
import { html, LitElement } from "https://unpkg.com/lit-element@2.4.0/lit-element.js?module";
class StateDropdown extends LitElement {
static get properties() {
return {
hass: { type: Object },
config: { type: Object },
entityId: { type: String },
stateType: { type: String }, // 'inactive' or 'active'
value: { type: String },
templateValue: { type: String },
attributeValue: { type: String },
disableDropdown: { type: Boolean },
localize: { type: Function },
};
}
constructor() {
super();
this.value = 'default';
this.templateValue = '';
this.attributeValue = '';
this.disableDropdown = false;
this.localize = (key) => key; // Default to returning the key if no localize function is provided
}
updated(changedProperties) {
super.updated(changedProperties);
if (changedProperties.has('config') || changedProperties.has('stateType')) {
this._updateValueFromConfig();
}
}
_updateValueFromConfig() {
const configValue = this.config[`${this.stateType}State`];
if (configValue) {
if (configValue.startsWith('template:')) {
this.value = 'template';
this.templateValue = configValue.slice(9);
} else if (configValue.startsWith('attribute:')) {
const [, attributeName, attributeValue] = configValue.split(':');
this.value = `attribute:${attributeName}`;
this.attributeValue = attributeValue || '';
} else {
this.value = configValue;
}
}
}
render() {
const options = this._getOptions();
const isTemplateSelected = this.value === 'template';
return html`
<style>
:host {
display: block;
}
ha-select {
width: 100%;
}
.template-input, .attribute-input {
margin-top: 8px;
}
.beta-warning {
color: #ff9800;
font-weight: bold;
margin-top: 4px;
margin-bottom: 4px;
}
ha-select[disabled] {
opacity: 0.5;
pointer-events: none;
}
</style>
<div @click="${this._handleContainerClick}" class="${isTemplateSelected ? 'template-selected' : ''}" data-state-type="${this.stateType}">
<ha-select
.value=${this.value}
@selected=${this._valueChanged}
@closed=${this._handleClick}
?disabled=${this.disableDropdown}
>
${options.map(option => html`
<mwc-list-item .value=${option.value}>${option.label}</mwc-list-item>
`)}
</ha-select>
${this.value === 'template' ? html`
<div class="template-info">
<h4>${this.localize("editor.template_mode")}</h4>
<p>${this.localize("editor.template_mode_description")}</p>
</div>
<div class="template-input">
${this._renderTemplateInput()}
</div>
` : ''}
${this.value.startsWith('attribute:') ? html`
<div class="attribute-input">
<ha-textfield
.value=${this.attributeValue}
@input=${this._attributeValueChanged}
placeholder="Enter attribute value"
style="width: 100%;"
></ha-textfield>
</div>
` : ''}
</div>
`;
}
_handleContainerClick(e) {
e.stopPropagation();
}
_getOptions() {
const options = [
{ value: 'default', label: 'Default' },
{ value: 'template', label: 'Template' },
];
if (this.entityId && this.hass.states[this.entityId]) {
const entity = this.hass.states[this.entityId];
if (entity.attributes.options) {
entity.attributes.options.forEach(option => {
options.push({ value: `option:${option}`, label: `Option: ${option}` });
});
}
Object.keys(entity.attributes).forEach(attr => {
if (attr !== 'options' && attr !== 'friendly_name' && attr !== 'icon') {
options.push({ value: `attribute:${attr}`, label: `Attribute: ${attr}` });
}
});
}
return options;
}
_renderTemplateInput() {
return html`
<ha-code-editor
mode="jinja2"
.value=${this.templateValue}
@value-changed=${this._templateChanged}
dir="ltr"
autocomplete-entities
autocomplete-icons
.hass=${this.hass}
style="width: 100%; overflow: hidden; resize: vertical;"
></ha-code-editor>
`;
}
_valueChanged(e) {
e.stopPropagation();
const newValue = e.target.value;
this.value = newValue;
if (newValue === 'template') {
this._updateConfig(`template:${this.templateValue}`);
} else if (newValue.startsWith('attribute:')) {
this._updateConfig(`${newValue}:${this.attributeValue}`);
} else {
this._updateConfig(newValue);
}
this.requestUpdate();
// Dispatch an event to notify the parent component about the template selection
const event = new CustomEvent('template-selected', {
detail: { selected: newValue === 'template', stateType: this.stateType },
bubbles: true,
composed: true
});
this.dispatchEvent(event);
}
_handleClick(e) {
e.stopPropagation();
}
_updateConfig(newValue) {
const newConfig = {
...this.config,
[`${this.stateType}State`]: newValue,
};
const event = new CustomEvent('state-dropdown-changed', {
detail: {
config: newConfig,
entityId: this.entityId,
stateType: this.stateType,
attributeValue: this.attributeValue
},
bubbles: true,
composed: true
});
this.dispatchEvent(event);
}
_templateChanged(e) {
e.stopPropagation();
this.templateValue = e.detail.value;
this._updateConfig(`template:${this.templateValue}`);
}
_attributeValueChanged(e) {
this.attributeValue = e.target.value;
this._updateConfig(`${this.value}:${this.attributeValue}`);
}
}
customElements.define('state-dropdown', StateDropdown);

File diff suppressed because it is too large Load Diff

View File

@@ -1,287 +0,0 @@
export default {
common: {
battery: "Batteri",
fuel: "Brændstof",
range: "Rækkevidde",
charging: "Oplader",
mileage: "Kilometerstand",
location: "Placering",
car_state: "Bilstatus",
charge_limit: "Opladningsgrænse",
engine_on: "Motor Tændt",
away: "Ikke Hjemme",
charging_end_time: "Opladningen slutter",
charging_ending_soon: "Opladning er snart færdig",
charging_ending_in: "Opladning slutter om",
charging_until: "Oplader indtil",
minutes: "minutter",
minute: "minut",
hours: "timer",
hour: "time",
state: {
default: {
on: "Tændt",
off: "Slukket"
}
}
},
vehicle_types: {
ev: "Elbil",
fuel: "Benzin-/Dieselbil",
hybrid: "Hybridbil"
},
editor: {
title: "Ultra Vehicle Card",
layout_type: "Layout Type",
single_column: "Enkelt Kolonne",
double_column: "Dobbelt Kolonne",
card_title: "Korttitel",
vehicle_type: "Køretøjstype",
unit_type: "Enhedstype",
engine_on_image: "Motor Tændt Billede",
engine_on_image_height: "Motor Tændt Billedhøjde",
engine_off_image: "Motor Slukket Billede",
engine_off_image_height: "Motor Slukket Billedhøjde",
engine_on_image_section: "Motor Tændt Billedindstillinger",
show_battery: "Vis Batteri",
show_battery_range: "Vis Batterirækkevidde",
show_fuel: "Vis Brændstof",
show_fuel_range: "Vis Brændstofrækkevidde",
show_location: "Vis Placering",
show_mileage: "Vis Kilometerstand",
show_car_state: "Vis Bilstatus",
show_charge_limit: "Vis Opladningsgrænse",
hybrid_display_order: "Hybridvisningsrækkefølge",
fuel_first: "Brændstof Først",
battery_first: "Batteri Først",
images: "Billeder",
main_image: "Hovedbillede",
charging_image: "Opladningsbillede",
enter_image_url: "Indtast Billedets URL",
upload_image: "Upload Billede",
entity_settings: "Entitetsindstillinger",
battery_level: "Batteriniveau",
battery_range: "Batterirækkevidde",
fuel_level: "Brændstofniveau",
fuel_range: "Brændstofrækkevidde",
charging_status: "Opladningsstatus",
location: "Placering",
mileage: "Kilometerstand",
car_state: "Bilstatus",
charge_limit: "Opladningsgrænse",
engine_on: "Motor Tændt",
add_entity: "Tilføj Entitet",
add_row_separator: "Tilføj Rækkeseparator",
custom_icons: "Brugerdefinerede Ikoner",
inactive_icon: "Inaktivt Ikon",
active_icon: "Aktivt Ikon",
no_icon: "INTET IKON",
inactive_icon_color: "Inaktiv Ikonfarve",
active_icon_color: "Aktiv Ikonfarve",
icon_style: "Ikonstil",
icon_size: "Ikonstørrelse",
icon_size_description: "Størrelsen på ikonet.",
icon_label_position: "Placering af ikonetiket",
left: "Venstre",
top: "Top",
right: "Højre",
bottom: "Bund",
interaction: "Interaktion",
colors: "Farver",
cardBackgroundColor: "Kort Baggrundsfarve",
barBackgroundColor: "Bar Baggrundsfarve",
barBorderColor: "Bar Kantfarve",
barFillColor: "Bar Fyldfarve",
limitIndicatorColor: "Grænseindikatorfarve",
infoTextColor: "Info Tekstfarve",
carStateTextColor: "Bilstatus Tekstfarve",
rangeTextColor: "Rækkevidde Tekstfarve",
percentageTextColor: "Procent Tekstfarve",
none: "Ingen",
local_url: "local/url",
entity: "Entitet",
search_entities: "Søg Entiteter",
battery_level_description: "Vælg den entitet, der repræsenterer batteriniveauet i dit køretøj.",
battery_range_description: "Vælg den entitet, der repræsenterer den resterende rækkevidde af din elbil.",
charging_status_description: "Vælg den entitet, der angiver, om dit køretøj oplader.",
charge_limit_description: "Vælg den entitet, der repræsenterer opladningsgrænsen for dit køretøj.",
location_description: "Vælg den entitet, der angiver køretøjets nuværende placering.",
mileage_description: "Vælg den entitet, der repræsenterer den samlede kilometerstand eller kilometertæller for dit køretøj.",
car_state_description: "Vælg den entitet, der repræsenterer køretøjets aktuelle tilstand (f.eks. parkeret, kører, oplader).",
icon_grid_description: "Tilføj entiteter til ikongitteret. Søg og vælg entiteter for at tilføje dem. Brug trækgrebet for at ændre rækkefølgen på entiteterne. Klik på ikonet for at ændre det, og brug (×) for at fjerne en entitet fra gitteret.",
custom_colors_description: "Tilpas farverne på forskellige elementer for at matche din foretrukne stil eller tema.",
row_separator: "Rækkeseparator",
add_row_separator: "Tilføj Rækkeseparator",
separator_color: "Separator Farve",
separator_color_description: "Vælg farven til rækkeseparatoren.",
transparent: "Transparent",
set_color: "Indstil Farve",
separator_height: "Separator Højde",
separator_height_description: "Indstil højden på rækkeseparatoren i pixels.",
icon_gap_size: "Ikonafstand",
icon_gap_description: "Indstil afstanden mellem ikoner i pixels.",
horizontal_alignment: "Horisontal Justering",
vertical_alignment: "Vertikal Justering",
inactive_icon: "Inaktivt Ikon",
active_icon: "Aktivt Ikon",
no_icon: "INTET IKON",
inactive_icon_color: "Inaktiv Ikonfarve",
active_icon_color: "Aktiv Ikonfarve",
icon_style: "Ikonstil",
icon_size: "Ikonstørrelse",
icon_size_description: "Størrelsen på ikonet.",
icon_label_position: "Placering af ikonetiket",
interaction: "Interaktion",
more_info: "Mere Info",
bottom: "Bund",
select_entity: "Vælg en Entitet",
entity_provides_image: "Denne entitet leverer billedet til visningen.",
separator_color: "Separator Farve",
separator_color_description: "Vælg farven til rækkeseparatoren.",
inactive_icon_color: "Inaktiv Ikonfarve",
active_icon_color: "Aktiv Ikonfarve",
custom_colors_description: "Tilpas farverne på forskellige elementer for at matche din foretrukne stil eller tema.",
toggle: "Skift",
navigate: "Naviger",
url: "Åbn URL",
trigger: "Trigger",
none: "Ingen",
formatted_entities: "Formaterede Entiteter",
formatted_entities_description: "Ryd op i entitetsværdier ved at afrunde tal, erstatte understregninger med mellemrum, kapitalisere ord og tilføje kommaer til store tal.",
fuel_level_description: "Vælg den entitet, der repræsenterer brændstofniveauet i dit køretøj.",
fuel_range_description: "Vælg den entitet, der repræsenterer den resterende brændstofrækkevidde i dit køretøj.",
engine_on_description: "Vælg den entitet, der angiver, om køretøjets motor er tændt.",
main_image_height: "Hovedbilledhøjde",
charging_image_height: "Opladningsbilledhøjde",
main_image_section: "Hovedbilledindstillinger",
charging_image_section: "Opladningsbilledindstillinger",
use_bar_gradient: "Brug Bar Gradient",
bar_gradient_description: "Aktiver en farvegradient for statusbjælken. Dette giver dig mulighed for at indstille flere farvestop for en mere dynamisk visuel repræsentation af køretøjets status.",
percentage: "Procent",
color: "Farve",
cardTitleColor: "Kort Titelfarve",
add_gradient_stop: "Tilføj Gradient Stop",
reset_all_colors: "Nulstil Alle Farver",
reset_all_icon_colors: "Nulstil Alle Ikonfarver",
settings: "Indstillinger",
icon_grid: "Ikongitter",
customize: "Tilpas",
inactive_custom_label: "Inaktiv brugerdefineret etiket",
active_custom_label: "Aktiv brugerdefineret etiket",
custom_label_placeholder: "Indtast brugerdefineret etiket"
},
device_class: {
battery: {
on: "Lav",
off: "Normal"
},
battery_charging: {
on: "Oplader",
off: "Oplader Ikke"
},
carbon_monoxide: {
on: "Registreret",
off: "Intet Registreret"
},
cold: {
on: "Koldt",
off: "Normal"
},
connectivity: {
on: "Forbundet",
off: "Ikke Forbundet"
},
door: {
on: "Åben",
off: "Lukket"
},
garage_door: {
on: "Åben",
off: "Lukket"
},
gas: {
on: "Registreret",
off: "Ikke Registreret"
},
heat: {
on: "Varmt",
off: "Normal"
},
light: {
on: "Registreret",
off: "Ikke Registreret"
},
lock: {
on: "Ulåst",
off: "Låst"
},
moisture: {
on: "Vådt",
off: "Tørt"
},
motion: {
on: "Registreret",
off: "Ikke Registreret"
},
moving: {
on: "I Bevægelse",
off: "Standset"
},
occupancy: {
on: "Optaget",
off: "Ledig"
},
opening: {
on: "Åben",
off: "Lukket"
},
plug: {
on: "Tilsluttet",
off: "Frakoblet"
},
power: {
on: "Registreret",
off: "Ingen Strøm"
},
presence: {
on: "Hjemme",
off: "Ikke Hjemme"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Kører",
off: "Standset"
},
safety: {
on: "Usikkert",
off: "Sikkert"
},
smoke: {
on: "Registreret",
off: "Ikke Registreret"
},
sound: {
on: "Registreret",
off: "Ikke Registreret"
},
tamper: {
on: "Registreret",
off: "Ikke Registreret"
},
update: {
on: "Tilgængelig",
off: "Opdateret"
},
vibration: {
on: "Registreret",
off: "Ikke Registreret"
},
window: {
on: "Åben",
off: "Lukket"
}
}
}

View File

@@ -1,265 +0,0 @@
export default {
common: {
battery: "Batterie",
fuel: "Kraftstoff",
range: "Reichweite",
charging: "Laden",
mileage: "Kilometerstand",
location: "Standort",
car_state: "Fahrzeugzustand",
charge_limit: "Ladelimit",
engine_on: "Motor an",
away: "Abwesend",
charging_end_time: "Ladeende",
charging_ending_soon: "Ladevorgang endet bald",
charging_ending_in: "Ladevorgang endet in",
charging_until: "Laden bis",
minutes: "Minuten",
minute: "Minute",
hours: "Stunden",
hour: "Stunde",
state: {
default: {
on: "An",
off: "Aus"
}
}
},
vehicle_types: {
ev: "Elektrofahrzeug",
fuel: "Kraftstofffahrzeug",
hybrid: "Hybridfahrzeug"
},
editor: {
title: "Ultra Fahrzeugkarte",
card_title: "Kartentitel",
vehicle_type: "Fahrzeugtyp",
unit_type: "Einheitentyp",
show_battery: "Batterie anzeigen",
show_battery_range: "Batteriereichweite anzeigen",
show_fuel: "Kraftstoff anzeigen",
show_fuel_range: "Kraftstoffreichweite anzeigen",
show_location: "Standort anzeigen",
show_mileage: "Kilometerstand anzeigen",
show_car_state: "Fahrzeugzustand anzeigen",
show_charge_limit: "Ladelimit anzeigen",
hybrid_display_order: "Hybridanzeige-Reihenfolge",
fuel_first: "Kraftstoff zuerst",
battery_first: "Batterie zuerst",
images: "Bilder",
main_image: "Hauptbild",
charging_image: "Ladebild",
enter_image_url: "Bild-URL eingeben",
upload_image: "Bild hochladen",
entity_settings: "Entitätseinstellungen",
battery_level: "Batteriestand",
battery_range: "Batteriereichweite",
fuel_level: "Kraftstoffstand",
fuel_range: "Kraftstoffreichweite",
charging_status: "Ladestatus",
location: "Standort",
mileage: "Kilometerstand",
car_state: "Fahrzeugzustand",
charge_limit: "Ladelimit",
engine_on: "Motor an",
icon_grid: "Symbol-Raster",
add_entity: "Entität hinzufügen",
add_row_separator: "Zeilentrennzeichen hinzufügen",
custom_icons: "Benutzerdefinierte Symbole",
inactive_icon: "Inaktives Symbol",
active_icon: "Aktives Symbol",
no_icon: "KEIN SYMBOL",
inactive_icon_color: "Inaktive Symbolfarbe",
active_icon_color: "Aktive Symbolfarbe",
icon_style: "Symbolstil",
icon_size: "Symbolgröße",
icon_size_description: "Größe des Symbols.",
icon_label_position: "Position der Symbolbeschriftung",
left: "Links",
top: "Oben",
right: "Rechts",
bottom: "Unten",
interaction: "Interaktion",
colors: "Farben",
cardBackgroundColor: "Kartenhintergrundfarbe",
barBackgroundColor: "Balkenhintergrundfarbe",
barBorderColor: "Balkenrahmenfarbe",
barFillColor: "Balkenfüllfarbe",
limitIndicatorColor: "Limitindikatorfarbe",
infoTextColor: "Infotextfarbe",
carStateTextColor: "Fahrzeugzustandtextfarbe",
rangeTextColor: "Reichweitentextfarbe",
percentageTextColor: "Prozenttextfarbe",
none: "Keine",
local_url: "Lokal/URL",
entity: "Entität",
search_entities: "Entitäten suchen",
battery_level_description: "Wählen Sie die Entität, die den Batteriestand Ihres Fahrzeugs repräsentiert.",
battery_range_description: "Wählen Sie die Entität, die die verbleibende Reichweite Ihres Elektrofahrzeugs repräsentiert.",
charging_status_description: "Wählen Sie die Entität, die anzeigt, ob Ihr Fahrzeug gerade lädt.",
charge_limit_description: "Wählen Sie die Entität, die das eingestellte Ladelimit für Ihr Fahrzeug repräsentiert.",
location_description: "Wählen Sie die Entität, die den aktuellen Standort Ihres Fahrzeugs angibt.",
mileage_description: "Wählen Sie die Entität, die den Gesamtkilometerstand oder die Tachoanzeige Ihres Fahrzeugs repräsentiert.",
car_state_description: "Wählen Sie die Entität, die den aktuellen Zustand Ihres Fahrzeugs repräsentiert (z.B. geparkt, fahrend, ladend).",
icon_grid_description: "Fügen Sie Entitäten zum Symbol-Raster hinzu. Suchen und wählen Sie Entitäten zum Hinzufügen. Verwenden Sie den Ziehgriff, um Entitäten neu anzuordnen. Klicken Sie auf das Symbol, um es zu ändern, und verwenden Sie (×), um eine Entität aus dem Raster zu entfernen.",
custom_colors_description: "Passen Sie die Farben verschiedener Elemente in der Karte an Ihren bevorzugten Stil oder Ihr Thema an.",
row_separator: "Zeilentrennzeichen",
add_row_separator: "Zeilentrennzeichen hinzufügen",
separator_color: "Trennzeichenfarbe",
separator_color_description: "Wählen Sie die Farbe für das Zeilentrennzeichen.",
transparent: "Transparent",
set_color: "Farbe festlegen",
separator_height: "Trennzeichenhöhe",
separator_height_description: "Legen Sie die Höhe des Zeilentrennzeichens in Pixeln fest.",
icon_gap_size: "Symbollückengrößen",
icon_gap_description: "Legen Sie den Abstand zwischen Symbolen in Pixeln fest.",
horizontal_alignment: "Horizontale Ausrichtung",
vertical_alignment: "Vertikale Ausrichtung",
more_info: "Mehr Informationen",
select_entity: "Entität auswählen",
entity_provides_image: "Diese Entität stellt das Bild für die Anzeige bereit.",
toggle: "Umschalten",
navigate: "Navigieren",
url: "URL öffnen",
trigger: "Auslösen",
formatted_entities: "Formatierte Entitäten",
formatted_entities_description: "Bereinigen Sie Entitätswerte, indem Sie Zahlen runden, Unterstriche durch Leerzeichen ersetzen, Wörter großschreiben und große Zahlen mit Kommas versehen.",
fuel_level_description: "Wählen Sie die Entität, die den Kraftstoffstand Ihres Fahrzeugs repräsentiert.",
fuel_range_description: "Wählen Sie die Entität, die die verbleibende Kraftstoffreichweite Ihres Fahrzeugs repräsentiert.",
engine_on_description: "Wählen Sie die Entität, die anzeigt, ob der Motor Ihres Fahrzeugs gerade läuft.",
main_image_height: "Hauptbildhöhe",
charging_image_height: "Ladebildhöhe",
main_image_section: "Hauptbild-Einstellungen",
charging_image_section: "Ladebild-Einstellungen",
layout_type: "Layout-Typ",
single_column: "Einzelspalte",
double_column: "Doppelspalte",
engine_on_image: "Bild für Motor an",
engine_on_image_height: "Höhe des Bildes für Motor an",
engine_off_image: "Bild für Motor aus",
engine_off_image_height: "Höhe des Bildes für Motor aus",
engine_on_image_section: "Einstellungen für Bild mit Motor an",
use_bar_gradient: "Balkengradient verwenden",
bar_gradient_description: "Aktivieren Sie einen Farbverlauf für den Fortschrittsbalken. Dies ermöglicht es Ihnen, mehrere Farbstopps für eine dynamischere visuelle Darstellung des Fahrzeugstatus festzulegen.",
percentage: "Prozentsatz",
color: "Farbe",
add_gradient_stop: "Gradientenstopp hinzufügen",
inactive_custom_label: "Inaktives benutzerdefiniertes Label",
active_custom_label: "Aktives benutzerdefiniertes Label",
custom_label_placeholder: "Benutzerdefiniertes Label eingeben"
},
device_class: {
battery: {
on: "Niedrig",
off: "Normal"
},
battery_charging: {
on: "Lädt",
off: "Lädt nicht"
},
carbon_monoxide: {
on: "Erkannt",
off: "Frei"
},
cold: {
on: "Kalt",
off: "Normal"
},
connectivity: {
on: "Verbunden",
off: "Getrennt"
},
door: {
on: "Offen",
off: "Geschlossen"
},
garage_door: {
on: "Offen",
off: "Geschlossen"
},
gas: {
on: "Erkannt",
off: "Frei"
},
heat: {
on: "Heiß",
off: "Normal"
},
light: {
on: "Erkannt",
off: "Frei"
},
lock: {
on: "Entriegelt",
off: "Verriegelt"
},
moisture: {
on: "Feucht",
off: "Trocken"
},
motion: {
on: "Erkannt",
off: "Frei"
},
moving: {
on: "Bewegt sich",
off: "Steht"
},
occupancy: {
on: "Belegt",
off: "Frei"
},
opening: {
on: "Offen",
off: "Geschlossen"
},
plug: {
on: "Eingesteckt",
off: "Ausgesteckt"
},
power: {
on: "Erkannt",
off: "Kein Strom"
},
presence: {
on: "Zuhause",
off: "Abwesend"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Läuft",
off: "Läuft nicht"
},
safety: {
on: "Unsicher",
off: "Sicher"
},
smoke: {
on: "Erkannt",
off: "Frei"
},
sound: {
on: "Erkannt",
off: "Frei"
},
tamper: {
on: "Erkannt",
off: "Frei"
},
update: {
on: "Verfügbar",
off: "Aktuell"
},
vibration: {
on: "Erkannt",
off: "Frei"
},
window: {
on: "Offen",
off: "Geschlossen"
}
}
}

View File

@@ -1,268 +0,0 @@
export default {
common: {
battery: "Battery",
fuel: "Fuel",
range: "Range",
charging: "Charging",
mileage: "Mileage",
location: "Location",
car_state: "Car State",
charge_limit: "Charge Limit",
engine_on: "Engine On",
away: "Away",
charging_end_time: "Charging End Time",
charging_ending_soon: "Charging ending soon",
charging_ending_in: "Charging ending in",
charging_until: "Charging until",
minutes: "minutes",
minute: "minute",
hours: "hours",
hour: "hour",
state: {
default: {
on: "On",
off: "Off"
}
}
},
vehicle_types: {
ev: "Electric Vehicle",
fuel: "Fuel Vehicle",
hybrid: "Hybrid"
},
editor: {
title: "Ultra Vehicle Card",
card_title: "Card Title",
vehicle_type: "Vehicle Type",
unit_type: "Unit Type",
show_battery: "Show Battery",
show_battery_range: "Show Battery Range",
show_fuel: "Show Fuel",
show_fuel_range: "Show Fuel Range",
show_location: "Show Location",
show_mileage: "Show Mileage",
show_car_state: "Show Car State",
show_charge_limit: "Show Charge Limit",
hybrid_display_order: "Hybrid Display Order",
fuel_first: "Fuel First",
battery_first: "Battery First",
images: "Images",
main_image: "Main Image",
charging_image: "Charging Image",
enter_image_url: "Enter image URL",
upload_image: "Upload Image",
entity_settings: "Entity Settings",
battery_level: "Battery Level",
battery_range: "Battery Range",
fuel_level: "Fuel Level",
fuel_range: "Fuel Range",
charging_status: "Charging Status",
location: "Location",
mileage: "Mileage",
car_state: "Car State",
charge_limit: "Charge Limit",
engine_on: "Engine On",
icon_grid: "Icon Grid",
add_entity: "Add Entity",
add_row_separator: "Add Row Separator",
custom_icons: "Custom Icons",
inactive_icon: "Inactive Icon",
active_icon: "Active Icon",
no_icon: "NO ICON",
inactive_icon_color: "Inactive Icon Colour",
active_icon_color: "Active Icon Colour",
icon_style: "Icon Style",
icon_size: "Icon Size",
icon_size_description: "Size of the icon.",
icon_label_position: "Icon Label Position",
left: "Left",
top: "Top",
right: "Right",
bottom: "Bottom",
interaction: "Interaction",
colors: "Colours",
cardBackgroundColor: "Card Background Colour",
barBackgroundColor: "Bar Background Colour",
barBorderColor: "Bar Border Colour",
barFillColor: "Bar Fill Colour",
limitIndicatorColor: "Limit Indicator Colour",
infoTextColor: "Info Text Colour",
carStateTextColor: "Car State Text Colour",
rangeTextColor: "Range Text Colour",
percentageTextColor: "Percentage Text Colour",
none: "None",
local_url: "Local/URL",
entity: "Entity",
search_entities: "Search Entities",
battery_level_description: "Select the entity that represents the battery level of your vehicle.",
battery_range_description: "Select the entity that represents the remaining range of your electric vehicle.",
charging_status_description: "Select the entity that indicates whether your vehicle is currently charging.",
charge_limit_description: "Select the entity that represents the charging limit set for your vehicle.",
location_description: "Select the entity that provides the current location of your vehicle.",
mileage_description: "Select the entity that represents the total mileage or odometer reading of your vehicle.",
car_state_description: "Select the entity that represents the current state of your vehicle (e.g., parked, driving, charging).",
icon_grid_description: "Add entities to the icon grid. Search and select entities to add. Use the drag handle to reorder entities. Click on the icon to change it, and use (×) to remove an entity from the grid.",
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
row_separator: "Row Separator",
add_row_separator: "Add Row Separator",
separator_color: "Separator Colour",
separator_color_description: "Choose the colour for the row separator.",
transparent: "Transparent",
set_color: "Set Colour",
separator_height: "Separator Height",
separator_height_description: "Set the height of the row separator in pixels.",
icon_gap_size: "Icon Gap Size",
icon_gap_description: "Set the gap between icons in pixels.",
horizontal_alignment: "Horizontal Alignment",
vertical_alignment: "Vertical Alignment",
more_info: "More Info",
select_entity: "Select an Entity",
entity_provides_image: "This entity provides the image for the display.",
toggle: "Toggle",
navigate: "Navigate",
url: "Open URL",
trigger: "Trigger",
formatted_entities: "Formatted Entities",
formatted_entities_description: "Clean up entity values by rounding numbers, replacing underscores with spaces, capitalizing words, and adding commas to large numbers.",
fuel_level_description: "Select the entity that represents the fuel level of your vehicle.",
fuel_range_description: "Select the entity that represents the remaining fuel range of your vehicle.",
engine_on_description: "Select the entity that indicates whether your vehicle's engine is currently running.",
main_image_height: "Main Image Height",
charging_image_height: "Charging Image Height",
main_image_section: "Main Image Settings",
charging_image_section: "Charging Image Settings",
layout_type: "Layout Type",
single_column: "Single Column",
double_column: "Double Column",
engine_on_image: "Engine On Image",
engine_on_image_height: "Engine On Image Height",
engine_off_image: "Engine Off Image",
engine_off_image_height: "Engine Off Image Height",
engine_on_image_section: "Engine On Image Settings",
use_bar_gradient: "Use Bar Gradient",
bar_gradient_description: "Enable a colour gradient for the progress bar. This allows you to set multiple colour stops for a more dynamic visual representation of the vehicle's status.",
percentage: "Percentage",
color: "Colour",
add_gradient_stop: "Add Gradient Stop",
reset_all_colors: "Reset All Colours",
reset_all_icon_colors: "Reset All Icon Colours",
settings: "Settings",
customize: "Customise",
template_mode: "Template Mode",
template_mode_description: "Enter your template code below. To exit template mode, select a different state from the dropdown above. Use {{ true }} and {{ false }} like statements to represent on and off states."
},
device_class: {
battery: {
on: "Low",
off: "Normal"
},
battery_charging: {
on: "Charging",
off: "Not Charging"
},
carbon_monoxide: {
on: "Detected",
off: "Clear"
},
cold: {
on: "Cold",
off: "Normal"
},
connectivity: {
on: "Connected",
off: "Disconnected"
},
door: {
on: "Open",
off: "Closed"
},
garage_door: {
on: "Open",
off: "Closed"
},
gas: {
on: "Detected",
off: "Clear"
},
heat: {
on: "Hot",
off: "Normal"
},
light: {
on: "Detected",
off: "Clear"
},
lock: {
on: "Unlocked",
off: "Locked"
},
moisture: {
on: "Wet",
off: "Dry"
},
motion: {
on: "Detected",
off: "Clear"
},
moving: {
on: "Moving",
off: "Stopped"
},
occupancy: {
on: "Occupied",
off: "Clear"
},
opening: {
on: "Open",
off: "Closed"
},
plug: {
on: "Plugged In",
off: "Unplugged"
},
power: {
on: "Detected",
off: "No Power"
},
presence: {
on: "Home",
off: "Away"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Running",
off: "Not Running"
},
safety: {
on: "Unsafe",
off: "Safe"
},
smoke: {
on: "Detected",
off: "Clear"
},
sound: {
on: "Detected",
off: "Clear"
},
tamper: {
on: "Detected",
off: "Clear"
},
update: {
on: "Available",
off: "Up-to-date"
},
vibration: {
on: "Detected",
off: "Clear"
},
window: {
on: "Open",
off: "Closed"
}
}
}

View File

@@ -1,289 +0,0 @@
export default {
common: {
battery: "Battery",
fuel: "Fuel",
range: "Range",
charging: "Charging",
mileage: "Mileage",
location: "Location",
car_state: "Car State",
charge_limit: "Charge Limit",
engine_on: "Engine On",
away: "Away",
charging_end_time: "Charging End Time",
charging_ending_soon: "Charging ending soon",
charging_ending_in: "Charging ending in",
charging_until: "Charging until",
minutes: "minutes",
minute: "minute",
hours: "hours",
hour: "hour",
state: {
default: {
on: "On",
off: "Off"
}
}
},
vehicle_types: {
ev: "Electric Vehicle",
fuel: "Fuel Vehicle",
hybrid: "Hybrid"
},
editor: {
title: "Ultra Vehicle Card",
layout_type: "Layout Type",
single_column: "Single Column",
double_column: "Double Column",
card_title: "Card Title",
vehicle_type: "Vehicle Type",
unit_type: "Unit Type",
engine_on_image: "Engine On Image",
engine_on_image_height: "Engine On Image Height",
engine_off_image: "Engine Off Image",
engine_off_image_height: "Engine Off Image Height",
engine_on_image_section: "Engine On Image Settings",
show_battery: "Show Battery",
show_battery_range: "Show Battery Range",
show_fuel: "Show Fuel",
show_fuel_range: "Show Fuel Range",
show_location: "Show Location",
show_mileage: "Show Mileage",
show_car_state: "Show Car State",
show_charge_limit: "Show Charge Limit",
hybrid_display_order: "Hybrid Display Order",
fuel_first: "Fuel First",
battery_first: "Battery First",
images: "Images",
main_image: "Main Image",
charging_image: "Charging Image",
enter_image_url: "Enter image URL",
upload_image: "Upload Image",
entity_settings: "Entity Settings",
battery_level: "Battery Level",
battery_range: "Battery Range",
fuel_level: "Fuel Level",
fuel_range: "Fuel Range",
charging_status: "Charging Status",
location: "Location",
mileage: "Mileage",
car_state: "Car State",
charge_limit: "Charge Limit",
engine_on: "Engine On",
add_entity: "Add Entity",
add_row_separator: "Add Row Separator",
custom_icons: "Custom Icons",
inactive_icon: "Inactive Icon",
active_icon: "Active Icon",
no_icon: "NO ICON",
inactive_icon_color: "Inactive Icon Color",
active_icon_color: "Active Icon Color",
icon_style: "Icon Style",
icon_size: "Icon Size",
icon_size_description: "Size of the icon.",
icon_label_position: "Icon Label Position",
left: "Left",
top: "Top",
right: "Right",
bottom: "Bottom",
interaction: "Interaction",
colors: "Colors",
cardBackgroundColor: "Card Background Color",
barBackgroundColor: "Bar Background Color",
barBorderColor: "Bar Border Color",
barFillColor: "Bar Fill Color",
limitIndicatorColor: "Limit Indicator Color",
infoTextColor: "Info Text Color",
carStateTextColor: "Car State Text Color",
rangeTextColor: "Range Text Color",
percentageTextColor: "Percentage Text Color",
none: "None",
local_url: "Local/URL",
entity: "Entity",
search_entities: "Search Entities",
battery_level_description: "Select the entity that represents the battery level of your vehicle.",
battery_range_description: "Select the entity that represents the remaining range of your electric vehicle.",
charging_status_description: "Select the entity that indicates whether your vehicle is currently charging.",
charge_limit_description: "Select the entity that represents the charging limit set for your vehicle.",
location_description: "Select the entity that provides the current location of your vehicle.",
mileage_description: "Select the entity that represents the total mileage or odometer reading of your vehicle.",
car_state_description: "Select the entity that represents the current state of your vehicle (e.g., parked, driving, charging).",
icon_grid_description: "Add entities to the icon grid. Search and select entities to add. Use the drag handle to reorder entities. Click on the icon to change it, and use (×) to remove an entity from the grid.",
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
row_separator: "Row Separator",
add_row_separator: "Add Row Separator",
separator_color: "Separator Color",
separator_color_description: "Choose the color for the row separator.",
transparent: "Transparent",
set_color: "Set Color",
separator_height: "Separator Height",
separator_height_description: "Set the height of the row separator in pixels.",
icon_gap_size: "Icon Gap Size",
icon_gap_description: "Set the gap between icons in pixels.",
horizontal_alignment: "Horizontal Alignment",
vertical_alignment: "Vertical Alignment",
inactive_icon: "Inactive Icon",
active_icon: "Active Icon",
no_icon: "NO ICON",
inactive_icon_color: "Inactive Icon Color",
active_icon_color: "Active Icon Color",
icon_style: "Icon Style",
icon_size: "Icon Size",
icon_size_description: "Size of the icon.",
icon_label_position: "Icon Label Position",
interaction: "Interaction",
more_info: "More Info",
bottom: "Bottom",
select_entity: "Select an Entity",
entity_provides_image: "This entity provides the image for the display.",
separator_color: "Separator Color",
separator_color_description: "Choose the color for the row separator.",
inactive_icon_color: "Inactive Icon Color",
active_icon_color: "Active Icon Color",
custom_colors_description: "Customize the colors of various elements in the card to match your preferred style or theme.",
toggle: "Toggle",
navigate: "Navigate",
url: "Open URL",
trigger: "Trigger",
none: "None",
formatted_entities: "Formatted Entities",
formatted_entities_description: "Clean up entity values by rounding numbers, replacing underscores with spaces, capitalizing words, and adding commas to large numbers.",
fuel_level_description: "Select the entity that represents the fuel level of your vehicle.",
fuel_range_description: "Select the entity that represents the remaining fuel range of your vehicle.",
engine_on_description: "Select the entity that indicates whether your vehicle's engine is currently running.",
main_image_height: "Main Image Height",
charging_image_height: "Charging Image Height",
main_image_section: "Main Image Settings",
charging_image_section: "Charging Image Settings",
use_bar_gradient: "Use Bar Gradient",
bar_gradient_description: "Enable a color gradient for the progress bar. This allows you to set multiple color stops for a more dynamic visual representation of the vehicle's status.",
percentage: "Percentage",
color: "Color",
cardTitleColor: "Card Title Color",
add_gradient_stop: "Add Gradient Stop",
reset_all_colors: "Reset All Colors",
reset_all_icon_colors: "Reset All Icon Colors",
settings: "Settings",
icon_grid: "Icon Grid",
customize: "Customize",
inactive_custom_label: "Inactive Custom Label",
active_custom_label: "Active Custom Label",
custom_label_placeholder: "Enter custom label",
template_mode: "Template Mode",
template_mode_description: "Enter your template code below. To exit template mode, select a different state from the dropdown above. Use {{ true }} and {{ false }} like statements to represent on and off states."
},
device_class: {
battery: {
on: "Low",
off: "Normal"
},
battery_charging: {
on: "Charging",
off: "Not Charging"
},
carbon_monoxide: {
on: "Detected",
off: "Clear"
},
cold: {
on: "Cold",
off: "Normal"
},
connectivity: {
on: "Connected",
off: "Disconnected"
},
door: {
on: "Open",
off: "Closed"
},
garage_door: {
on: "Open",
off: "Closed"
},
gas: {
on: "Detected",
off: "Clear"
},
heat: {
on: "Hot",
off: "Normal"
},
light: {
on: "Detected",
off: "Clear"
},
lock: {
on: "Unlocked",
off: "Locked"
},
moisture: {
on: "Wet",
off: "Dry"
},
motion: {
on: "Detected",
off: "Clear"
},
moving: {
on: "Moving",
off: "Stopped"
},
occupancy: {
on: "Occupied",
off: "Clear"
},
opening: {
on: "Open",
off: "Closed"
},
plug: {
on: "Plugged In",
off: "Unplugged"
},
power: {
on: "Detected",
off: "No Power"
},
presence: {
on: "Home",
off: "Away"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Running",
off: "Not Running"
},
safety: {
on: "Unsafe",
off: "Safe"
},
smoke: {
on: "Detected",
off: "Clear"
},
sound: {
on: "Detected",
off: "Clear"
},
tamper: {
on: "Detected",
off: "Clear"
},
update: {
on: "Available",
off: "Up-to-date"
},
vibration: {
on: "Detected",
off: "Clear"
},
window: {
on: "Open",
off: "Closed"
}
}
}

View File

@@ -1,268 +0,0 @@
export default {
common: {
battery: "Batería",
fuel: "Combustible",
range: "Autonomía",
charging: "Cargando",
mileage: "Kilometraje",
location: "Ubicación",
car_state: "Estado del coche",
charge_limit: "Límite de carga",
engine_on: "Motor encendido",
away: "Fuera",
charging_end_time: "Fin de carga",
charging_ending_soon: "Carga finalizando pronto",
charging_ending_in: "Carga finalizando en",
charging_until: "Cargando hasta",
minutes: "minutos",
minute: "minuto",
hours: "horas",
hour: "hora",
state: {
default: {
on: "Encendido",
off: "Apagado"
}
}
},
vehicle_types: {
ev: "Vehículo eléctrico",
fuel: "Vehículo de combustible",
hybrid: "Híbrido"
},
editor: {
title: "Tarjeta Ultra de Vehículo",
card_title: "Título de la tarjeta",
vehicle_type: "Tipo de vehículo",
unit_type: "Tipo de unidad",
show_battery: "Mostrar batería",
show_battery_range: "Mostrar autonomía de batería",
show_fuel: "Mostrar combustible",
show_fuel_range: "Mostrar autonomía de combustible",
show_location: "Mostrar ubicación",
show_mileage: "Mostrar kilometraje",
show_car_state: "Mostrar estado del coche",
show_charge_limit: "Mostrar límite de carga",
hybrid_display_order: "Orden de visualización híbrida",
fuel_first: "Combustible primero",
battery_first: "Batería primero",
images: "Imágenes",
main_image: "Imagen principal",
charging_image: "Imagen de carga",
enter_image_url: "Introducir URL de imagen",
upload_image: "Subir imagen",
entity_settings: "Configuración de entidades",
battery_level: "Nivel de batería",
battery_range: "Autonomía de batería",
fuel_level: "Nivel de combustible",
fuel_range: "Autonomía de combustible",
charging_status: "Estado de carga",
location: "Ubicación",
mileage: "Kilometraje",
car_state: "Estado del coche",
charge_limit: "Límite de carga",
engine_on: "Motor encendido",
icon_grid: "Cuadrícula de iconos",
add_entity: "Añadir entidad",
add_row_separator: "Añadir separador de fila",
custom_icons: "Iconos personalizados",
inactive_icon: "Icono inactivo",
active_icon: "Icono activo",
no_icon: "SIN ICONO",
inactive_icon_color: "Color de icono inactivo",
active_icon_color: "Color de icono activo",
icon_style: "Estilo de icono",
icon_size: "Tamaño de icono",
icon_size_description: "Tamaño del icono.",
icon_label_position: "Posición de la etiqueta del icono",
left: "Izquierda",
top: "Arriba",
right: "Derecha",
bottom: "Abajo",
interaction: "Interacción",
colors: "Colores",
cardBackgroundColor: "Color de fondo de la tarjeta",
barBackgroundColor: "Color de fondo de la barra",
barBorderColor: "Color del borde de la barra",
barFillColor: "Color de relleno de la barra",
limitIndicatorColor: "Color del indicador de límite",
infoTextColor: "Color del texto de información",
carStateTextColor: "Color del texto del estado del coche",
rangeTextColor: "Color del texto de autonomía",
percentageTextColor: "Color del texto de porcentaje",
none: "Ninguno",
local_url: "Local/URL",
entity: "Entidad",
search_entities: "Buscar entidades",
battery_level_description: "Seleccione la entidad que representa el nivel de batería de su vehículo.",
battery_range_description: "Seleccione la entidad que representa la autonomía restante de su vehículo eléctrico.",
charging_status_description: "Seleccione la entidad que indica si su vehículo está cargando actualmente.",
charge_limit_description: "Seleccione la entidad que representa el límite de carga establecido para su vehículo.",
location_description: "Seleccione la entidad que proporciona la ubicación actual de su vehículo.",
mileage_description: "Seleccione la entidad que representa el kilometraje total o la lectura del odómetro de su vehículo.",
car_state_description: "Seleccione la entidad que representa el estado actual de su vehículo (por ejemplo, estacionado, en movimiento, cargando).",
icon_grid_description: "Añada entidades a la cuadrícula de iconos. Busque y seleccione entidades para añadir. Use el controlador de arrastre para reordenar entidades. Haga clic en el icono para cambiarlo y use (×) para eliminar una entidad de la cuadrícula.",
custom_colors_description: "Personalice los colores de varios elementos en la tarjeta para que coincidan con su estilo o tema preferido.",
row_separator: "Separador de fila",
add_row_separator: "Añadir separador de fila",
separator_color: "Color del separador",
separator_color_description: "Elija el color para el separador de fila.",
transparent: "Transparente",
set_color: "Establecer color",
separator_height: "Altura del separador",
separator_height_description: "Establezca la altura del separador de fila en píxeles.",
icon_gap_size: "Tamaño del espacio entre iconos",
icon_gap_description: "Establezca el espacio entre iconos en píxeles.",
horizontal_alignment: "Alineación horizontal",
vertical_alignment: "Alineación vertical",
more_info: "Más información",
select_entity: "Seleccionar una entidad",
entity_provides_image: "Esta entidad proporciona la imagen para la visualización.",
toggle: "Alternar",
navigate: "Navegar",
url: "Abrir URL",
trigger: "Activar",
formatted_entities: "Entidades formateadas",
formatted_entities_description: "Limpie los valores de las entidades redondeando números, reemplazando guiones bajos con espacios, capitalizando palabras y agregando comas a números grandes.",
fuel_level_description: "Seleccione la entidad que representa el nivel de combustible de su vehículo.",
fuel_range_description: "Seleccione la entidad que representa la autonomía de combustible restante de su vehículo.",
engine_on_description: "Seleccione la entidad que indica si el motor de su vehículo está actualmente en funcionamiento.",
main_image_height: "Altura de la imagen principal",
charging_image_height: "Altura de la imagen de carga",
main_image_section: "Configuración de la imagen principal",
charging_image_section: "Configuración de la imagen de carga",
layout_type: "Tipo de diseño",
single_column: "Columna única",
double_column: "Doble columna",
engine_on_image: "Imagen de motor encendido",
engine_on_image_height: "Altura de la imagen de motor encendido",
engine_off_image: "Imagen de motor apagado",
engine_off_image_height: "Altura de la imagen de motor apagado",
engine_on_image_section: "Configuración de la imagen de motor encendido",
use_bar_gradient: "Usar gradiente en la barra",
bar_gradient_description: "Habilita un gradiente de color para la barra de progreso. Esto te permite establecer múltiples puntos de color para una representación visual más dinámica del estado del vehículo.",
percentage: "Porcentaje",
color: "Color",
add_gradient_stop: "Añadir punto de gradiente",
customize: "Personalizar",
inactive_custom_label: "Etiqueta personalizada inactiva",
active_custom_label: "Etiqueta personalizada activa",
custom_label_placeholder: "Ingrese etiqueta personalizada",
template_mode: "Modo plantilla",
template_mode_description: "Ingrese su código de plantilla a continuación. Para salir del modo plantilla, seleccione un estado diferente del menú desplegable de arriba. Use {{ true }} y {{ false }} como expresiones para representar los estados de encendido y apagado."
},
device_class: {
battery: {
on: "Baja",
off: "Normal"
},
battery_charging: {
on: "Cargando",
off: "No cargando"
},
carbon_monoxide: {
on: "Detectado",
off: "Despejado"
},
cold: {
on: "Frío",
off: "Normal"
},
connectivity: {
on: "Conectado",
off: "Desconectado"
},
door: {
on: "Abierta",
off: "Cerrada"
},
garage_door: {
on: "Abierta",
off: "Cerrada"
},
gas: {
on: "Detectado",
off: "Despejado"
},
heat: {
on: "Caliente",
off: "Normal"
},
light: {
on: "Detectada",
off: "Despejado"
},
lock: {
on: "Desbloqueado",
off: "Bloqueado"
},
moisture: {
on: "Húmedo",
off: "Seco"
},
motion: {
on: "Detectado",
off: "Despejado"
},
moving: {
on: "Moviéndose",
off: "Parado"
},
occupancy: {
on: "Ocupado",
off: "Despejado"
},
opening: {
on: "Abierto",
off: "Cerrado"
},
plug: {
on: "Enchufado",
off: "Desenchufado"
},
power: {
on: "Detectada",
off: "Sin energía"
},
presence: {
on: "En casa",
off: "Fuera"
},
problem: {
on: "Problema",
off: "OK"
},
running: {
on: "Funcionando",
off: "Parado"
},
safety: {
on: "Inseguro",
off: "Seguro"
},
smoke: {
on: "Detectado",
off: "Despejado"
},
sound: {
on: "Detectado",
off: "Despejado"
},
tamper: {
on: "Detectado",
off: "Despejado"
},
update: {
on: "Disponible",
off: "Actualizado"
},
vibration: {
on: "Detectada",
off: "Despejado"
},
window: {
on: "Abierta",
off: "Cerrada"
}
}
}

View File

@@ -1,268 +0,0 @@
export default {
common: {
battery: "Batterie",
fuel: "Carburant",
range: "Autonomie",
charging: "Chargement",
mileage: "Kilométrage",
location: "Emplacement",
car_state: "État du véhicule",
charge_limit: "Limite de charge",
engine_on: "Moteur en marche",
away: "Absent",
charging_end_time: "Fin de charge",
charging_ending_soon: "Charge se terminant bientôt",
charging_ending_in: "Charge se terminant dans",
charging_until: "Charge jusqu'à",
minutes: "minutes",
minute: "minute",
hours: "heures",
hour: "heure",
state: {
default: {
on: "Allumé",
off: "Éteint"
}
}
},
vehicle_types: {
ev: "Véhicule électrique",
fuel: "Véhicule à carburant",
hybrid: "Hybride"
},
editor: {
title: "Carte Ultra Véhicule",
card_title: "Titre de la carte",
vehicle_type: "Type de véhicule",
unit_type: "Type d'unité",
show_battery: "Afficher la batterie",
show_battery_range: "Afficher l'autonomie de la batterie",
show_fuel: "Afficher le carburant",
show_fuel_range: "Afficher l'autonomie du carburant",
show_location: "Afficher l'emplacement",
show_mileage: "Afficher le kilométrage",
show_car_state: "Afficher l'état du véhicule",
show_charge_limit: "Afficher la limite de charge",
hybrid_display_order: "Ordre d'affichage hybride",
fuel_first: "Carburant en premier",
battery_first: "Batterie en premier",
images: "Images",
main_image: "Image principale",
charging_image: "Image de charge",
enter_image_url: "Entrer l'URL de l'image",
upload_image: "Télécharger une image",
entity_settings: "Paramètres des entités",
battery_level: "Niveau de batterie",
battery_range: "Autonomie de la batterie",
fuel_level: "Niveau de carburant",
fuel_range: "Autonomie du carburant",
charging_status: "État de charge",
location: "Emplacement",
mileage: "Kilométrage",
car_state: "État du véhicule",
charge_limit: "Limite de charge",
engine_on: "Moteur en marche",
icon_grid: "Grille d'icônes",
add_entity: "Ajouter une entité",
add_row_separator: "Ajouter un séparateur de ligne",
custom_icons: "Icônes personnalisées",
inactive_icon: "Icône inactive",
active_icon: "Icône active",
no_icon: "PAS D'ICÔNE",
inactive_icon_color: "Couleur de l'icône inactive",
active_icon_color: "Couleur de l'icône active",
icon_style: "Style d'icône",
icon_size: "Taille de l'icône",
icon_size_description: "Taille de l'icône.",
icon_label_position: "Position de l'étiquette de l'icône",
left: "Gauche",
top: "Haut",
right: "Droite",
bottom: "Bas",
interaction: "Interaction",
colors: "Couleurs",
cardBackgroundColor: "Couleur de fond de la carte",
barBackgroundColor: "Couleur de fond de la barre",
barBorderColor: "Couleur de bordure de la barre",
barFillColor: "Couleur de remplissage de la barre",
limitIndicatorColor: "Couleur de l'indicateur de limite",
infoTextColor: "Couleur du texte d'information",
carStateTextColor: "Couleur du texte d'état du véhicule",
rangeTextColor: "Couleur du texte d'autonomie",
percentageTextColor: "Couleur du texte de pourcentage",
none: "Aucun",
local_url: "Local/URL",
entity: "Entité",
search_entities: "Rechercher des entités",
battery_level_description: "Sélectionnez l'entité qui représente le niveau de batterie de votre véhicule.",
battery_range_description: "Sélectionnez l'entité qui représente l'autonomie restante de votre véhicule électrique.",
charging_status_description: "Sélectionnez l'entité qui indique si votre véhicule est actuellement en charge.",
charge_limit_description: "Sélectionnez l'entité qui représente la limite de charge définie pour votre véhicule.",
location_description: "Sélectionnez l'entité qui fournit l'emplacement actuel de votre véhicule.",
mileage_description: "Sélectionnez l'entité qui représente le kilométrage total ou la lecture de l'odomètre de votre véhicule.",
car_state_description: "Sélectionnez l'entité qui représente l'état actuel de votre véhicule (par exemple, stationné, en mouvement, en charge).",
icon_grid_description: "Ajoutez des entités à la grille d'icônes. Recherchez et sélectionnez des entités à ajouter. Utilisez la poignée de glissement pour réorganiser les entités. Cliquez sur l'icône pour la modifier et utilisez (×) pour supprimer une entité de la grille.",
custom_colors_description: "Personnalisez les couleurs de divers éléments de la carte pour correspondre à votre style ou thème préféré.",
row_separator: "Séparateur de ligne",
add_row_separator: "Ajouter un séparateur de ligne",
separator_color: "Couleur du séparateur",
separator_color_description: "Choisissez la couleur du séparateur de ligne.",
transparent: "Transparent",
set_color: "Définir la couleur",
separator_height: "Hauteur du séparateur",
separator_height_description: "Définissez la hauteur du séparateur de ligne en pixels.",
icon_gap_size: "Taille de l'espace entre les icônes",
icon_gap_description: "Définissez l'espace entre les icônes en pixels.",
horizontal_alignment: "Alignement horizontal",
vertical_alignment: "Alignement vertical",
more_info: "Plus d'informations",
select_entity: "Sélectionner une entité",
entity_provides_image: "Cette entité fournit l'image pour l'affichage.",
toggle: "Basculer",
navigate: "Naviguer",
url: "Ouvrir l'URL",
trigger: "Déclencher",
formatted_entities: "Entités formatées",
formatted_entities_description: "Nettoyez les valeurs des entités en arrondissant les nombres, en remplaçant les tirets bas par des espaces, en mettant les mots en majuscules et en ajoutant des virgules aux grands nombres.",
fuel_level_description: "Sélectionnez l'entité qui représente le niveau de carburant de votre véhicule.",
fuel_range_description: "Sélectionnez l'entité qui représente l'autonomie de carburant restante de votre véhicule.",
engine_on_description: "Sélectionnez l'entité qui indique si le moteur de votre véhicule est actuellement en marche.",
main_image_height: "Hauteur de l'image principale",
charging_image_height: "Hauteur de l'image de charge",
main_image_section: "Paramètres de l'image principale",
charging_image_section: "Paramètres de l'image de charge",
layout_type: "Type de mise en page",
single_column: "Colonne unique",
double_column: "Double colonne",
engine_on_image: "Image moteur en marche",
engine_on_image_height: "Hauteur de l'image moteur en marche",
engine_off_image: "Image moteur arrêté",
engine_off_image_height: "Hauteur de l'image moteur arrêté",
engine_on_image_section: "Paramètres de l'image moteur en marche",
use_bar_gradient: "Utiliser un dégradé pour la barre",
bar_gradient_description: "Activer un dégradé de couleur pour la barre de progression. Cela vous permet de définir plusieurs arrêts de couleur pour une représentation visuelle plus dynamique de l'état du véhicule.",
percentage: "Pourcentage",
color: "Couleur",
add_gradient_stop: "Ajouter un arrêt de dégradé",
customize: "Personnaliser",
inactive_custom_label: "Étiquette personnalisée inactive",
active_custom_label: "Étiquette personnalisée active",
custom_label_placeholder: "Entrez une étiquette personnalisée",
template_mode: "Mode modèle",
template_mode_description: "Entrez votre code de modèle ci-dessous. Pour quitter le mode modèle, sélectionnez un état différent dans la liste déroulante ci-dessus. Utilisez {{ true }} et {{ false }} comme expressions pour représenter les états activé et désactivé."
},
device_class: {
battery: {
on: "Faible",
off: "Normal"
},
battery_charging: {
on: "En charge",
off: "Pas en charge"
},
carbon_monoxide: {
on: "Détecté",
off: "Aucun"
},
cold: {
on: "Froid",
off: "Normal"
},
connectivity: {
on: "Connecté",
off: "Déconnecté"
},
door: {
on: "Ouverte",
off: "Fermée"
},
garage_door: {
on: "Ouverte",
off: "Fermée"
},
gas: {
on: "Détecté",
off: "Aucun"
},
heat: {
on: "Chaud",
off: "Normal"
},
light: {
on: "Détectée",
off: "Aucune"
},
lock: {
on: "Déverrouillé",
off: "Verrouillé"
},
moisture: {
on: "Humide",
off: "Sec"
},
motion: {
on: "Détecté",
off: "Aucun"
},
moving: {
on: "En mouvement",
off: "Arrêté"
},
occupancy: {
on: "Occupé",
off: "Libre"
},
opening: {
on: "Ouvert",
off: "Fermé"
},
plug: {
on: "Branché",
off: "Débranché"
},
power: {
on: "Détectée",
off: "Pas d'alimentation"
},
presence: {
on: "Présent",
off: "Absent"
},
problem: {
on: "Problème",
off: "OK"
},
running: {
on: "En marche",
off: "Arrêté"
},
safety: {
on: "Dangereux",
off: "Sûr"
},
smoke: {
on: "Détectée",
off: "Aucune"
},
sound: {
on: "Détecté",
off: "Aucun"
},
tamper: {
on: "Détectée",
off: "Aucune"
},
update: {
on: "Disponible",
off: "À jour"
},
vibration: {
on: "Détectée",
off: "Aucune"
},
window: {
on: "Ouverte",
off: "Fermée"
}
}
}

View File

@@ -1,273 +0,0 @@
export default {
common: {
battery: "Batteri",
fuel: "Drivstoff",
range: "Rekkevidde",
charging: "Lader",
mileage: "Kilometerstand",
location: "Plassering",
car_state: "Bilstatus",
charge_limit: "Ladelimit",
engine_on: "Motor på",
away: "Borte",
charging_end_time: "Ladeslutt",
charging_ending_soon: "Lading avsluttes snart",
charging_ending_in: "Lading avsluttes om",
charging_until: "Lader til",
minutes: "minutter",
minute: "minutt",
hours: "timer",
hour: "time",
state: {
default: {
on: "På",
off: "Av"
}
}
},
vehicle_types: {
ev: "Elektrisk kjøretøy",
fuel: "Drivstoffkjøretøy",
hybrid: "Hybrid"
},
editor: {
title: "Ultra Kjøretøykort",
card_title: "Korttittel",
vehicle_type: "Kjøretøytype",
unit_type: "Enhetstype",
show_battery: "Vis batteri",
show_battery_range: "Vis batterirekkevidde",
show_fuel: "Vis drivstoff",
show_fuel_range: "Vis drivstoffrekkevidde",
show_location: "Vis plassering",
show_mileage: "Vis kilometerstand",
show_car_state: "Vis bilstatus",
show_charge_limit: "Vis ladelimit",
hybrid_display_order: "Hybrid visningsrekkefølge",
fuel_first: "Drivstoff først",
battery_first: "Batteri først",
images: "Bilder",
main_image: "Hovedbilde",
charging_image: "Ladebilde",
enter_image_url: "Skriv inn bilde-URL",
upload_image: "Last opp bilde",
entity_settings: "Enhetsinnstillinger",
battery_level: "Batterinivå",
battery_range: "Batterirekkevidde",
fuel_level: "Drivstoffnivå",
fuel_range: "Drivstoffrekkevidde",
charging_status: "Ladestatus",
location: "Plassering",
mileage: "Kilometerstand",
car_state: "Bilstatus",
charge_limit: "Ladelimit",
engine_on: "Motor på",
icon_grid: "Ikonrutenett",
add_entity: "Legg til enhet",
add_row_separator: "Legg til radskiller",
custom_icons: "Tilpassede ikoner",
inactive_icon: "Inaktivt ikon",
active_icon: "Aktivt ikon",
no_icon: "INGEN IKON",
inactive_icon_color: "Inaktiv ikonfarge",
active_icon_color: "Aktiv ikonfarge",
icon_style: "Ikonstil",
icon_size: "Ikonstørrelse",
icon_size_description: "Størrelse på ikonet.",
icon_label_position: "Ikonetikettposisjon",
left: "Venstre",
top: "Topp",
right: "Høyre",
bottom: "Bunn",
interaction: "Interaksjon",
colors: "Farger",
cardBackgroundColor: "Kortbakgrunnsfarge",
barBackgroundColor: "Linjebakgrunnsfarge",
barBorderColor: "Linjekantfarge",
barFillColor: "Linjefyllfarge",
limitIndicatorColor: "Limitindikatorfarge",
infoTextColor: "Infotekstfarge",
carStateTextColor: "Bilstatustekstfarge",
rangeTextColor: "Rekkeviddtekstfarge",
percentageTextColor: "Prosenttekstfarge",
none: "Ingen",
local_url: "Lokal/URL",
entity: "Enhet",
search_entities: "Søk enheter",
battery_level_description: "Velg enheten som representerer batterinivået til kjøretøyet ditt.",
battery_range_description: "Velg enheten som representerer gjenværende rekkevidde for ditt elektriske kjøretøy.",
charging_status_description: "Velg enheten som indikerer om kjøretøyet ditt lader for øyeblikket.",
charge_limit_description: "Velg enheten som representerer ladelimiten satt for kjøretøyet ditt.",
location_description: "Velg enheten som gir den nåværende plasseringen til kjøretøyet ditt.",
mileage_description: "Velg enheten som representerer total kjørelengde eller kilometerstand for kjøretøyet ditt.",
car_state_description: "Velg enheten som representerer den nåværende tilstanden til kjøretøyet ditt (f.eks. parkert, kjrer, lader).",
icon_grid_description: "Legg til enheter i ikonrutenettet. Søk og velg enheter å legge til. Bruk drahåndtaket for å omorganisere enheter. Klikk på ikonet for å endre det, og bruk (×) for å fjerne en enhet fra rutenettet.",
custom_colors_description: "Tilpass fargene på ulike elementer i kortet for å matche din foretrukne stil eller tema.",
row_separator: "Radskiller",
add_row_separator: "Legg til radskiller",
separator_color: "Skillefarge",
separator_color_description: "Velg farge for radskilleren.",
transparent: "Gjennomsiktig",
set_color: "Sett farge",
separator_height: "Skillerhøyde",
separator_height_description: "Sett høyden på radskilleren i piksler.",
icon_gap_size: "Ikongapstørrelse",
icon_gap_description: "Sett gapet mellom ikoner i piksler.",
horizontal_alignment: "Horisontal justering",
vertical_alignment: "Vertikal justering",
more_info: "Mer info",
select_entity: "Velg en enhet",
entity_provides_image: "Denne enheten gir bildet for visningen.",
toggle: "Veksle",
navigate: "Naviger",
url: "Åpne URL",
trigger: "Utløs",
formatted_entities: "Formaterte enheter",
formatted_entities_description: "Rens enhetsverdier ved å runde av tall, erstatte understreker med mellomrom, kapitalisere ord og legge til komma i store tall.",
fuel_level_description: "Velg enheten som representerer drivstoffnivået til kjøretøyet ditt.",
fuel_range_description: "Velg enheten som representerer gjenværende drivstoffrekkevidde for kjøretøyet ditt.",
engine_on_description: "Velg enheten som indikerer om motoren til kjøretøyet ditt er i gang.",
main_image_height: "Hovedbildehøyde",
charging_image_height: "Ladebildehøyde",
main_image_section: "Hovedbildeinnstillinger",
charging_image_section: "Ladebildeinnstillinger",
layout_type: "Layouttype",
single_column: "Enkeltkolonne",
double_column: "Dobbeltkolonne",
engine_on_image: "Bilde for motor på",
engine_on_image_height: "Høyde på bilde for motor på",
engine_off_image: "Bilde for motor av",
engine_off_image_height: "Høyde på bilde for motor av",
engine_on_image_section: "Innstillinger for bilde med motor på",
use_bar_gradient: "Bruk gradientlinje",
bar_gradient_description: "Aktiver en fargegradient for fremdriftslinjen. Dette lar deg sette flere fargepunkter for en mer dynamisk visuell representasjon av kjøretøyets status.",
percentage: "Prosent",
color: "Farge",
add_gradient_stop: "Legg til gradientstoppunkt",
reset_all_colors: "Tilbakestill alle farger",
reset_all_icon_colors: "Tilbakestill alle ikonfarger",
settings: "Innstillinger",
customize: "Tilpass",
icon_grid: "Ikonrutenett",
customize: "Tilpass",
inactive_custom_label: "Inaktiv tilpasset etikett",
active_custom_label: "Aktiv tilpasset etikett",
custom_label_placeholder: "Skriv inn tilpasset etikett",
template_mode: "Mal-modus",
template_mode_description: "Skriv inn malkoden din nedenfor. For å avslutte mal-modus, velg en annen tilstand fra rullegardinmenyen ovenfor. Bruk {{ true }} og {{ false }} som uttrykk for å representere på- og av-tilstander."
},
device_class: {
battery: {
on: "Lav",
off: "Normal"
},
battery_charging: {
on: "Lader",
off: "Lader ikke"
},
carbon_monoxide: {
on: "Oppdaget",
off: "Klar"
},
cold: {
on: "Kald",
off: "Normal"
},
connectivity: {
on: "Tilkoblet",
off: "Frakoblet"
},
door: {
on: "Åpen",
off: "Lukket"
},
garage_door: {
on: "Åpen",
off: "Lukket"
},
gas: {
on: "Oppdaget",
off: "Klar"
},
heat: {
on: "Varm",
off: "Normal"
},
light: {
on: "Oppdaget",
off: "Klar"
},
lock: {
on: "Ulåst",
off: "Låst"
},
moisture: {
on: "Fuktig",
off: "Tørr"
},
motion: {
on: "Oppdaget",
off: "Klar"
},
moving: {
on: "Beveger seg",
off: "Stoppet"
},
occupancy: {
on: "Opptatt",
off: "Klar"
},
opening: {
on: "Åpen",
off: "Lukket"
},
plug: {
on: "Tilkoblet",
off: "Frakoblet"
},
power: {
on: "Oppdaget",
off: "Ingen strøm"
},
presence: {
on: "Hjemme",
off: "Borte"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Kjører",
off: "Kjører ikke"
},
safety: {
on: "Usikker",
off: "Sikker"
},
smoke: {
on: "Oppdaget",
off: "Klar"
},
sound: {
on: "Oppdaget",
off: "Klar"
},
tamper: {
on: "Oppdaget",
off: "Klar"
},
update: {
on: "Tilgjengelig",
off: "Oppdatert"
},
vibration: {
on: "Oppdaget",
off: "Klar"
},
window: {
on: "Åpen",
off: "Lukket"
}
}
}

View File

@@ -1,272 +0,0 @@
export default {
common: {
battery: "Accu",
fuel: "Brandstof",
range: "Bereik",
charging: "Opladen",
mileage: "Kilometerstand",
location: "Locatie",
car_state: "Autostatus",
charge_limit: "Oplaadlimiet",
engine_on: "Motor aan",
away: "Afwezig",
charging_end_time: "Einde oplaadtijd",
charging_ending_soon: "Opladen eindigt binnenkort",
charging_ending_in: "Opladen eindigt over",
charging_until: "Opladen tot",
minutes: "minuten",
minute: "minuut",
hours: "uren",
hour: "uur",
state: {
default: {
on: "Aan",
off: "Uit"
}
}
},
vehicle_types: {
ev: "Elektrisch voertuig",
fuel: "Brandstofvoertuig",
hybrid: "Hybride"
},
editor: {
title: "Ultra Voertuigkaart",
card_title: "Kaarttitel",
vehicle_type: "Voertuigtype",
unit_type: "Eenheidstype",
show_battery: "Toon accu",
show_battery_range: "Toon accubereik",
show_fuel: "Toon brandstof",
show_fuel_range: "Toon brandstofbereik",
show_location: "Toon locatie",
show_mileage: "Toon kilometerstand",
show_car_state: "Toon autostatus",
show_charge_limit: "Toon oplaadlimiet",
hybrid_display_order: "Hybride weergavevolgorde",
fuel_first: "Brandstof eerst",
battery_first: "Accu eerst",
images: "Afbeeldingen",
main_image: "Hoofdafbeelding",
charging_image: "Oplaadafbeelding",
enter_image_url: "Voer afbeeldings-URL in",
upload_image: "Upload afbeelding",
entity_settings: "Entiteitsinstellingen",
battery_level: "Accuniveau",
battery_range: "Accubereik",
fuel_level: "Brandstofniveau",
fuel_range: "Brandstofbereik",
charging_status: "Oplaadstatus",
location: "Locatie",
mileage: "Kilometerstand",
car_state: "Autostatus",
charge_limit: "Oplaadlimiet",
engine_on: "Motor aan",
icon_grid: "Iconenraster",
add_entity: "Entiteit toevoegen",
add_row_separator: "Rijscheiding toevoegen",
custom_icons: "Aangepaste iconen",
inactive_icon: "Inactief icoon",
active_icon: "Actief icoon",
no_icon: "GEEN ICOON",
inactive_icon_color: "Inactieve icoonkleur",
active_icon_color: "Actieve icoonkleur",
icon_style: "Icoonstijl",
icon_size: "Icoongrootte",
icon_size_description: "Grootte van het icoon.",
icon_label_position: "Positie icoonlabel",
left: "Links",
top: "Boven",
right: "Rechts",
bottom: "Onder",
interaction: "Interactie",
colors: "Kleuren",
cardBackgroundColor: "Kaartachtergrondkleur",
barBackgroundColor: "Balkachtergrondkleur",
barBorderColor: "Balkrandkleur",
barFillColor: "Balkvulkleur",
limitIndicatorColor: "Limietindicatorkleur",
infoTextColor: "Infotekstkleur",
carStateTextColor: "Autostatustekstkleur",
rangeTextColor: "Bereiktekstkleur",
percentageTextColor: "Percentagetekstkleur",
none: "Geen",
local_url: "Lokaal/URL",
entity: "Entiteit",
search_entities: "Zoek entiteiten",
battery_level_description: "Selecteer de entiteit die het accuniveau van uw voertuig weergeeft.",
battery_range_description: "Selecteer de entiteit die het resterende bereik van uw elektrische voertuig weergeeft.",
charging_status_description: "Selecteer de entiteit die aangeeft of uw voertuig momenteel aan het opladen is.",
charge_limit_description: "Selecteer de entiteit die de ingestelde oplaadlimiet voor uw voertuig weergeeft.",
location_description: "Selecteer de entiteit die de huidige locatie van uw voertuig weergeeft.",
mileage_description: "Selecteer de entiteit die de totale kilometerstand of kilometertellerstand van uw voertuig weergeeft.",
car_state_description: "Selecteer de entiteit die de huidige status van uw voertuig weergeeft (bijv. geparkeerd, rijdend, opladen).",
icon_grid_description: "Voeg entiteiten toe aan het iconenraster. Zoek en selecteer entiteiten om toe te voegen. Gebruik de sleepgreep om entiteiten te herschikken. Klik op het icoon om het te wijzigen en gebruik (×) om een entiteit uit het raster te verwijderen.",
custom_colors_description: "Pas de kleuren van verschillende elementen in de kaart aan om te passen bij uw voorkeurssstijl of thema.",
row_separator: "Rijscheiding",
add_row_separator: "Rijscheiding toevoegen",
separator_color: "Scheidingskleur",
separator_color_description: "Kies de kleur voor de rijscheiding.",
transparent: "Transparant",
set_color: "Kleur instellen",
separator_height: "Scheidingshoogte",
separator_height_description: "Stel de hoogte van de rijscheiding in pixels in.",
icon_gap_size: "Icoonafstandgrootte",
icon_gap_description: "Stel de afstand tussen iconen in pixels in.",
horizontal_alignment: "Horizontale uitlijning",
vertical_alignment: "Verticale uitlijning",
more_info: "Meer info",
select_entity: "Selecteer een entiteit",
entity_provides_image: "Deze entiteit levert de afbeelding voor de weergave.",
toggle: "Schakelen",
navigate: "Navigeren",
url: "URL openen",
trigger: "Activeren",
formatted_entities: "Geformatteerde entiteiten",
formatted_entities_description: "Maak entiteitswaarden op door getallen af te ronden, underscores te vervangen door spaties, woorden te kapitaliseren en komma's toe te voegen aan grote getallen.",
fuel_level_description: "Selecteer de entiteit die het brandstofniveau van uw voertuig weergeeft.",
fuel_range_description: "Selecteer de entiteit die het resterende brandstofbereik van uw voertuig weergeeft.",
engine_on_description: "Selecteer de entiteit die aangeeft of de motor van uw voertuig momenteel draait.",
main_image_height: "Hoofdafbeeldingshoogte",
charging_image_height: "Oplaadafbeeldingshoogte",
main_image_section: "Hoofdafbeeldingsinstellingen",
charging_image_section: "Oplaadafbeeldingsinstellingen",
layout_type: "Lay-outtype",
single_column: "Enkele kolom",
double_column: "Dubbele kolom",
engine_on_image: "Afbeelding voor motor aan",
engine_on_image_height: "Hoogte van afbeelding voor motor aan",
engine_off_image: "Afbeelding voor motor uit",
engine_off_image_height: "Hoogte van afbeelding voor motor uit",
engine_on_image_section: "Instellingen voor afbeelding met motor aan",
use_bar_gradient: "Gebruik balkgradiënt",
bar_gradient_description: "Schakel een kleurgradiënt in voor de voortgangsbalk. Hiermee kunt u meerdere kleurstops instellen voor een meer dynamische visuele weergave van de voertuigstatus.",
percentage: "Percentage",
color: "Kleur",
add_gradient_stop: "Voeg gradiëntstop toe",
reset_all_colors: "Alle kleuren resetten",
reset_all_icon_colors: "Alle icoonkleuren resetten",
settings: "Instellingen",
icon_grid: "Iconenraster",
customize: "Aanpassen",
inactive_custom_label: "Inactief aangepast label",
active_custom_label: "Actief aangepast label",
custom_label_placeholder: "Voer aangepast label in",
template_mode: "Sjabloonmodus",
template_mode_description: "Voer hieronder uw sjablooncode in. Om de sjabloonmodus te verlaten, selecteert u een andere status uit de bovenstaande vervolgkeuzelijst. Gebruik {{ true }} en {{ false }} als uitdrukkingen om aan- en uit-toestanden weer te geven."
},
device_class: {
battery: {
on: "Laag",
off: "Normaal"
},
battery_charging: {
on: "Opladen",
off: "Niet opladen"
},
carbon_monoxide: {
on: "Gedetecteerd",
off: "Vrij"
},
cold: {
on: "Koud",
off: "Normaal"
},
connectivity: {
on: "Verbonden",
off: "Niet verbonden"
},
door: {
on: "Open",
off: "Gesloten"
},
garage_door: {
on: "Open",
off: "Gesloten"
},
gas: {
on: "Gedetecteerd",
off: "Vrij"
},
heat: {
on: "Heet",
off: "Normaal"
},
light: {
on: "Gedetecteerd",
off: "Vrij"
},
lock: {
on: "Ontgrendeld",
off: "Vergrendeld"
},
moisture: {
on: "Vochtig",
off: "Droog"
},
motion: {
on: "Gedetecteerd",
off: "Vrij"
},
moving: {
on: "Bewegend",
off: "Gestopt"
},
occupancy: {
on: "Bezet",
off: "Vrij"
},
opening: {
on: "Open",
off: "Gesloten"
},
plug: {
on: "Aangesloten",
off: "Niet aangesloten"
},
power: {
on: "Gedetecteerd",
off: "Geen stroom"
},
presence: {
on: "Thuis",
off: "Afwezig"
},
problem: {
on: "Probleem",
off: "OK"
},
running: {
on: "Actief",
off: "Inactief"
},
safety: {
on: "Onveilig",
off: "Veilig"
},
smoke: {
on: "Gedetecteerd",
off: "Vrij"
},
sound: {
on: "Gedetecteerd",
off: "Vrij"
},
tamper: {
on: "Gedetecteerd",
off: "Vrij"
},
update: {
on: "Beschikbaar",
off: "Bijgewerkt"
},
vibration: {
on: "Gedetecteerd",
off: "Vrij"
},
window: {
on: "Open",
off: "Gesloten"
}
}
}

View File

@@ -1,272 +0,0 @@
export default {
common: {
battery: "Batteri",
fuel: "Drivstoff",
range: "Rekkevidde",
charging: "Lading",
mileage: "Kilometerstand",
location: "Plassering",
car_state: "Bilstatus",
charge_limit: "Ladelimit",
engine_on: "Motor på",
away: "Borte",
charging_end_time: "Ladeslutt",
charging_ending_soon: "Lading avsluttast snart",
charging_ending_in: "Lading avsluttast om",
charging_until: "Lader til",
minutes: "minutt",
minute: "minutt",
hours: "timar",
hour: "time",
state: {
default: {
on: "På",
off: "Av"
}
}
},
vehicle_types: {
ev: "Elektrisk køyretøy",
fuel: "Drivstoffkøyretøy",
hybrid: "Hybrid"
},
editor: {
title: "Ultra Køyretøykort",
card_title: "Korttittel",
vehicle_type: "Køyretøytype",
unit_type: "Einingstype",
show_battery: "Vis batteri",
show_battery_range: "Vis batterirekkevidde",
show_fuel: "Vis drivstoff",
show_fuel_range: "Vis drivstoffrekkevidde",
show_location: "Vis plassering",
show_mileage: "Vis kilometerstand",
show_car_state: "Vis bilstatus",
show_charge_limit: "Vis ladelimit",
hybrid_display_order: "Hybrid visingsrekkjefølgje",
fuel_first: "Drivstoff først",
battery_first: "Batteri først",
images: "Bilete",
main_image: "Hovudbilete",
charging_image: "Ladebilete",
enter_image_url: "Skriv inn bilete-URL",
upload_image: "Last opp bilete",
entity_settings: "Einingsinnstillingar",
battery_level: "Batterinivå",
battery_range: "Batterirekkevidde",
fuel_level: "Drivstoffnivå",
fuel_range: "Drivstoffrekkevidde",
charging_status: "Ladestatus",
location: "Plassering",
mileage: "Kilometerstand",
car_state: "Bilstatus",
charge_limit: "Ladelimit",
engine_on: "Motor på",
icon_grid: "Ikonrutenett",
add_entity: "Legg til eining",
add_row_separator: "Legg til radskiljar",
custom_icons: "Tilpassa ikon",
inactive_icon: "Inaktivt ikon",
active_icon: "Aktivt ikon",
no_icon: "INGA IKON",
inactive_icon_color: "Inaktiv ikonfarge",
active_icon_color: "Aktiv ikonfarge",
icon_style: "Ikonstil",
icon_size: "Ikonstorleik",
icon_size_description: "Storleik på ikonet.",
icon_label_position: "Ikonetikettposisjon",
left: "Venstre",
top: "Topp",
right: "Høgre",
bottom: "Botn",
interaction: "Interaksjon",
colors: "Fargar",
cardBackgroundColor: "Kortbakgrunnsfarge",
barBackgroundColor: "Linjebakgrunnsfarge",
barBorderColor: "Linjekantfarge",
barFillColor: "Linjefyllfarge",
limitIndicatorColor: "Limitindikatorfarge",
infoTextColor: "Infotekstfarge",
carStateTextColor: "Bilstatustekstfarge",
rangeTextColor: "Rekkjeviddetekstfarge",
percentageTextColor: "Prosenttekstfarge",
none: "Ingen",
local_url: "Lokal/URL",
entity: "Eining",
search_entities: "Søk einingar",
battery_level_description: "Vel eininga som representerer batterinivået til køyretøyet ditt.",
battery_range_description: "Vel eininga som representerer attverande rekkevidde for det elektriske køyretøyet ditt.",
charging_status_description: "Vel eininga som indikerer om køyretøyet ditt ladar for augneblinken.",
charge_limit_description: "Vel eininga som representerer ladelimiten sett for køyretøyet ditt.",
location_description: "Vel eininga som gir den noverande plasseringa til køyretøyet ditt.",
mileage_description: "Vel eininga som representerer total køyrelengd eller kilometerstand for køyretøyet ditt.",
car_state_description: "Vel eininga som representerer den noverande tilstanden til køyretøyet ditt (t.d. parkert, køyrer, ladar).",
icon_grid_description: "Legg til einingar i ikonrutenettet. Søk og vel einingar å leggje til. Bruk drahandtaket for å omorganisere einingar. Klikk på ikonet for å endre det, og bruk (×) for å fjerne ei eining frå rutenettet.",
custom_colors_description: "Tilpass fargane på ulike element i kortet for å matche din føretrekte stil eller tema.",
row_separator: "Radskiljar",
add_row_separator: "Legg til radskiljar",
separator_color: "Skiljarfarge",
separator_color_description: "Vel farge for radskiljaren.",
transparent: "Gjennomsiktig",
set_color: "Set farge",
separator_height: "Skiljarhøgd",
separator_height_description: "Set høgda på radskiljaren i pikslar.",
icon_gap_size: "Ikongapstorleik",
icon_gap_description: "Set gapet mellom ikon i pikslar.",
horizontal_alignment: "Horisontal justering",
vertical_alignment: "Vertikal justering",
more_info: "Meir info",
select_entity: "Vel ei eining",
entity_provides_image: "Denne eininga gir biletet for visinga.",
toggle: "Veksle",
navigate: "Naviger",
url: "Opne URL",
trigger: "Utløys",
formatted_entities: "Formaterte einingar",
formatted_entities_description: "Reins einingsverdiar ved å runde av tal, erstatte understrek med mellomrom, kapitalisere ord og leggje til komma i store tal.",
fuel_level_description: "Vel eininga som representerer drivstoffnivået til køyretøyet ditt.",
fuel_range_description: "Vel eininga som representerer attverande drivstoffrekkevidde for køyretøyet ditt.",
engine_on_description: "Vel eininga som indikerer om motoren til køyretøyet ditt er i gang.",
main_image_height: "Hovudbiletehøgd",
charging_image_height: "Ladebiletehøgd",
main_image_section: "Hovudbiletinnstillingar",
charging_image_section: "Ladebiletinnstillingar",
layout_type: "Layouttype",
single_column: "Enkelkolonne",
double_column: "Dobbeltkolonne",
engine_on_image: "Bilete for motor på",
engine_on_image_height: "Høgd på bilete for motor på",
engine_off_image: "Bilete for motor av",
engine_off_image_height: "Høgd på bilete for motor av",
engine_on_image_section: "Innstillingar for bilete med motor på",
use_bar_gradient: "Bruk gradientlinje",
bar_gradient_description: "Aktiver ein fargegradient for framdriftslinjen. Dette lar deg setje fleire fargepunkt for ein meir dynamisk visuell representasjon av køyretøyet sin status.",
percentage: "Prosent",
color: "Farge",
add_gradient_stop: "Legg til gradientstoppunkt",
reset_all_colors: "Tilbakestill alle farger",
reset_all_icon_colors: "Tilbakestill alle ikonfarger",
settings: "Innstillinger",
icon_grid: "Ikonrutenett",
customize: "Tilpass",
inactive_custom_label: "Inaktiv tilpassa etikett",
active_custom_label: "Aktiv tilpassa etikett",
custom_label_placeholder: "Skriv inn tilpassa etikett",
template_mode: "Malskildringsmodus",
template_mode_description: "Skriv inn malskildringa di nedanfor. For å gå ut av malskildringsmodus, vel ein annan tilstand frå nedtrekkslista ovanfor. Bruk {{ true }} og {{ false }} som uttrykk for å representere på- og av-tilstandar."
},
device_class: {
battery: {
on: "Låg",
off: "Normal"
},
battery_charging: {
on: "Ladar",
off: "Ladar ikkje"
},
carbon_monoxide: {
on: "Oppdaga",
off: "Klart"
},
cold: {
on: "Kald",
off: "Normal"
},
connectivity: {
on: "Tilkopla",
off: "Fråkopla"
},
door: {
on: "Open",
off: "Lukka"
},
garage_door: {
on: "Open",
off: "Lukka"
},
gas: {
on: "Oppdaga",
off: "Klart"
},
heat: {
on: "Varm",
off: "Normal"
},
light: {
on: "Oppdaga",
off: "Klart"
},
lock: {
on: "Ulåst",
off: "Låst"
},
moisture: {
on: "Fuktig",
off: "Tørt"
},
motion: {
on: "Oppdaga",
off: "Klart"
},
moving: {
on: "Rører seg",
off: "Stoppa"
},
occupancy: {
on: "Opptatt",
off: "Klart"
},
opening: {
on: "Open",
off: "Lukka"
},
plug: {
on: "Tilkopla",
off: "Fråkopla"
},
power: {
on: "Oppdaga",
off: "Ingen straum"
},
presence: {
on: "Heime",
off: "Borte"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Køyrer",
off: "Køyrer ikkje"
},
safety: {
on: "Utrygt",
off: "Trygt"
},
smoke: {
on: "Oppdaga",
off: "Klart"
},
sound: {
on: "Oppdaga",
off: "Klart"
},
tamper: {
on: "Oppdaga",
off: "Klart"
},
update: {
on: "Tilgjengeleg",
off: "Oppdatert"
},
vibration: {
on: "Oppdaga",
off: "Klart"
},
window: {
on: "Open",
off: "Lukka"
}
}
}

View File

@@ -1,272 +0,0 @@
export default {
common: {
battery: "Batteri",
fuel: "Bränsle",
range: "Räckvidd",
charging: "Laddar",
mileage: "Körsträcka",
location: "Plats",
car_state: "Bilstatus",
charge_limit: "Laddgräns",
engine_on: "Motor på",
away: "Borta",
charging_end_time: "Laddning slutar",
charging_ending_soon: "Laddning avslutas snart",
charging_ending_in: "Laddning avslutas om",
charging_until: "Laddar till",
minutes: "minuter",
minute: "minut",
hours: "timmar",
hour: "timme",
state: {
default: {
on: "På",
off: "Av"
}
}
},
vehicle_types: {
ev: "Elfordon",
fuel: "Bränslefordon",
hybrid: "Hybrid"
},
editor: {
title: "Ultra Fordonskort",
card_title: "Korttitel",
vehicle_type: "Fordonstyp",
unit_type: "Enhetstyp",
show_battery: "Visa batteri",
show_battery_range: "Visa batteriräckvidd",
show_fuel: "Visa bränsle",
show_fuel_range: "Visa bränsleräckvidd",
show_location: "Visa plats",
show_mileage: "Visa körsträcka",
show_car_state: "Visa bilstatus",
show_charge_limit: "Visa laddgräns",
hybrid_display_order: "Hybridvisningsordning",
fuel_first: "Bränsle först",
battery_first: "Batteri först",
images: "Bilder",
main_image: "Huvudbild",
charging_image: "Laddningsbild",
enter_image_url: "Ange bild-URL",
upload_image: "Ladda upp bild",
entity_settings: "Enhetsinställningar",
battery_level: "Batterinivå",
battery_range: "Batteriräckvidd",
fuel_level: "Bränslenivå",
fuel_range: "Bränsleräckvidd",
charging_status: "Laddningsstatus",
location: "Plats",
mileage: "Körsträcka",
car_state: "Bilstatus",
charge_limit: "Laddgräns",
engine_on: "Motor på",
icon_grid: "Ikonrutnät",
add_entity: "Lägg till enhet",
add_row_separator: "Lägg till radavskiljare",
custom_icons: "Anpassade ikoner",
inactive_icon: "Inaktiv ikon",
active_icon: "Aktiv ikon",
no_icon: "INGEN IKON",
inactive_icon_color: "Inaktiv ikonfärg",
active_icon_color: "Aktiv ikonfärg",
icon_style: "Ikonstil",
icon_size: "Ikonstorlek",
icon_size_description: "Storlek på ikonen.",
icon_label_position: "Ikonetikettposition",
left: "Vänster",
top: "Topp",
right: "Höger",
bottom: "Botten",
interaction: "Interaktion",
colors: "Färger",
cardBackgroundColor: "Kortbakgrundsfärg",
barBackgroundColor: "Stapelbakgrundsfärg",
barBorderColor: "Stapelkantfärg",
barFillColor: "Stapelfyllnadsfärg",
limitIndicatorColor: "Gränsindikatorsfärg",
infoTextColor: "Infotextfärg",
carStateTextColor: "Bilstatustextfärg",
rangeTextColor: "Räckviddsextfärg",
percentageTextColor: "Procenttextfärg",
none: "Ingen",
local_url: "Lokal/URL",
entity: "Enhet",
search_entities: "Sök enheter",
battery_level_description: "Välj enheten som representerar batterinivån för ditt fordon.",
battery_range_description: "Välj enheten som representerar återstående räckvidd för ditt elfordon.",
charging_status_description: "Välj enheten som indikerar om ditt fordon för närvarande laddas.",
charge_limit_description: "Välj enheten som representerar laddgränsen inställd för ditt fordon.",
location_description: "Välj enheten som ger den aktuella platsen för ditt fordon.",
mileage_description: "Välj enheten som representerar total körsträcka eller vägmätarställning för ditt fordon.",
car_state_description: "Välj enheten som representerar det aktuella tillståndet för ditt fordon (t.ex. parkerad, kör, laddar).",
icon_grid_description: "Lägg till enheter i ikonrutnätet. Sök och välj enheter att lägga till. Använd draghandtaget för att omorganisera enheter. Klicka på ikonen för att ändra den och använd (×) för att ta bort en enhet från rutnätet.",
custom_colors_description: "Anpassa färgerna på olika element i kortet för att matcha din föredragna stil eller tema.",
row_separator: "Radavskiljare",
add_row_separator: "Lägg till radavskiljare",
separator_color: "Avskiljarfärg",
separator_color_description: "Välj färg för radavskiljaren.",
transparent: "Transparent",
set_color: "Ställ in färg",
separator_height: "Avskiljarhöjd",
separator_height_description: "Ställ in höjden på radavskiljaren i pixlar.",
icon_gap_size: "Ikonavståndsstorlek",
icon_gap_description: "Ställ in avståndet mellan ikoner i pixlar.",
horizontal_alignment: "Horisontell justering",
vertical_alignment: "Vertikal justering",
more_info: "Mer info",
select_entity: "Välj en enhet",
entity_provides_image: "Denna enhet tillhandahåller bilden för visningen.",
toggle: "Växla",
navigate: "Navigera",
url: "Öppna URL",
trigger: "Utlös",
formatted_entities: "Formaterade enheter",
formatted_entities_description: "Rensa enhetsvärden genom att avrunda tal, ersätta understreck med mellanslag, kapitalisera ord och lägga till kommatecken i stora tal.",
fuel_level_description: "Välj enheten som representerar bränslenivån för ditt fordon.",
fuel_range_description: "Välj enheten som representerar återstående bränsleräckvidd för ditt fordon.",
engine_on_description: "Välj enheten som indikerar om motorn på ditt fordon för närvarande är igång.",
main_image_height: "Huvudbildhöjd",
charging_image_height: "Laddningsbildhöjd",
main_image_section: "Huvudbildinställningar",
charging_image_section: "Laddningsbildinställningar",
layout_type: "Layouttyp",
single_column: "Enkel kolumn",
double_column: "Dubbel kolumn",
engine_on_image: "Bild för motor på",
engine_on_image_height: "Höjd på bild för motor på",
engine_off_image: "Bild för motor av",
engine_off_image_height: "Höjd på bild för motor av",
engine_on_image_section: "Inställningar för bild med motor på",
use_bar_gradient: "Använd gradientfält",
bar_gradient_description: "Aktivera en färggradient för förloppsfältet. Detta låter dig ställa in flera färgstopp för en mer dynamisk visuell representation av fordonets status.",
percentage: "Procent",
color: "Färg",
add_gradient_stop: "Lägg till gradientstop",
reset_all_colors: "Återställ alla färger",
reset_all_icon_colors: "Återställ alla ikonfärger",
settings: "Inställningar",
icon_grid: "Ikonrutnät", // This entry already exists
customize: "Anpassa", // This entry already exists
inactive_custom_label: "Inaktiv anpassad etikett",
active_custom_label: "Aktiv anpassad etikett",
custom_label_placeholder: "Ange anpassad etikett",
template_mode: "Mallläge",
template_mode_description: "Ange din mallkod nedan. För att avsluta mallläget, välj ett annat tillstånd från rullgardinsmenyn ovan. Använd {{ true }} och {{ false }} som uttryck för att representera på- och av-tillstånd."
},
device_class: {
battery: {
on: "Låg",
off: "Normal"
},
battery_charging: {
on: "Laddar",
off: "Laddar inte"
},
carbon_monoxide: {
on: "Detekterad",
off: "Klar"
},
cold: {
on: "Kall",
off: "Normal"
},
connectivity: {
on: "Ansluten",
off: "Frånkopplad"
},
door: {
on: "Öppen",
off: "Stängd"
},
garage_door: {
on: "Öppen",
off: "Stängd"
},
gas: {
on: "Detekterad",
off: "Klar"
},
heat: {
on: "Varm",
off: "Normal"
},
light: {
on: "Detekterad",
off: "Klar"
},
lock: {
on: "Olåst",
off: "Låst"
},
moisture: {
on: "Fuktig",
off: "Torr"
},
motion: {
on: "Detekterad",
off: "Klar"
},
moving: {
on: "Rör sig",
off: "Stillastående"
},
occupancy: {
on: "Upptagen",
off: "Klar"
},
opening: {
on: "Öppen",
off: "Stängd"
},
plug: {
on: "Inkopplad",
off: "Urkopplad"
},
power: {
on: "Detekterad",
off: "Ingen ström"
},
presence: {
on: "Hemma",
off: "Borta"
},
problem: {
on: "Problem",
off: "OK"
},
running: {
on: "Kör",
off: "Kör inte"
},
safety: {
on: "Osäker",
off: "Säker"
},
smoke: {
on: "Detekterad",
off: "Klar"
},
sound: {
on: "Detekterad",
off: "Klar"
},
tamper: {
on: "Detekterad",
off: "Klar"
},
update: {
on: "Tillgänglig",
off: "Uppdaterad"
},
vibration: {
on: "Detekterad",
off: "Klar"
},
window: {
on: "Öppet",
off: "Stängt"
}
}
}

View File

@@ -0,0 +1,289 @@
import { GradientStop } from './components/gradient-editor';
export { GradientStop };
export interface SectionCondition {
type: 'none' | 'show' | 'hide';
entity: string;
state: string;
}
export interface SectionConditions {
[sectionId: string]: SectionCondition;
}
export interface SectionTemplate {
template_mode?: boolean;
template?: string;
}
export interface SectionTemplates {
[sectionId: string]: SectionTemplate;
}
export type UltraVehicleCardConfig = {
type?: string;
title?: string;
title_alignment?: 'left' | 'center' | 'right';
title_size?: string | number;
title_color?: string;
card_background?: string;
vehicle_image_type?: 'default' | 'upload' | 'url' | 'entity' | 'none';
vehicle_image?: string;
vehicle_image_entity?: string;
vehicle_image_width?: number;
default_vehicle_image?: string;
status_image_type?: 'none' | 'upload' | 'entity';
status_image?: string;
status_image_entity?: string;
status_image_trigger_entity?: string;
layout_type?: 'single' | 'double' | 'dashboard' | 'half_full' | 'full_half';
column_width?: '50-50' | '30-70' | '70-30' | '40-60' | '60-40';
formatted_entities?: boolean;
show_units?: boolean;
show_action_toasts?: boolean;
help_highlight?: boolean;
top_view_side_margin?: number;
top_view_middle_spacing?: number;
top_view_vertical_spacing?: number;
icon_text_position?: 'bottom' | 'top' | 'left' | 'right';
icon_vertical_alignment?: 'top' | 'center' | 'bottom';
icon_text_size?: 'small' | 'medium' | 'large';
battery_level_entity?: string;
show_battery?: boolean;
battery_range_entity?: string;
show_battery_range?: boolean;
charging_status_entity?: string;
show_charging_status?: boolean;
charge_limit_entity?: string;
show_charge_limit?: boolean;
location_entity?: string;
show_location?: boolean;
location_icon_color?: string;
location_text_color?: string;
location_text_size?: string | number;
mileage_entity?: string;
show_mileage?: boolean;
mileage_icon_color?: string;
mileage_text_color?: string;
mileage_text_size?: string | number;
car_state_entity?: string;
show_car_state?: boolean;
car_state_text_color?: string;
car_state_text_size?: string | number;
car_state_template_mode?: boolean;
car_state_template?: string;
show_info_icons?: boolean;
bars?: BarConfig[];
action_entity?: string;
action_state?: string;
action_image_type?: 'default' | 'upload' | 'url' | 'entity' | 'none';
action_image?: string;
action_image_entity?: string;
action_image_width?: number;
action_images?: ActionImageConfig[];
action_image_priority?: 'priority' | 'newest';
icon_rows?: IconRowConfig[];
info_rows?: InfoRowConfig[];
vehicle_image_crop?: ImageCropSettings;
action_image_crop?: ImageCropSettings;
sections_order?: string[];
sections_columns?: SectionColumns;
bar_row_alignment?: 'flex-start' | 'center' | 'flex-end';
hidden_sections?: string[];
section_styles?: SectionStyles;
section_conditions?: SectionConditions;
section_templates?: SectionTemplates;
global_css?: string;
section_breaks?: SectionBreakConfig[];
};
export type SectionColumns = {
[sectionId: string]: 'right' | 'top' | 'top_middle' | 'left_middle' | 'right_middle' | 'bottom_middle' | 'bottom' | 'middle' | 'half_full_row1_left' | 'half_full_row1_right' | 'half_full_row2_full' | 'full_half_row1_full' | 'full_half_row2_left' | 'full_half_row2_right';
};
export interface BarConfig {
entity: string;
limit_entity?: string;
limit_indicator_color?: string;
left_entity?: string;
right_entity?: string;
left_title?: string;
right_title?: string;
bar_color?: string;
background_color?: string;
border_color?: string;
left_title_color?: string;
left_text_color?: string;
right_title_color?: string;
right_text_color?: string;
percentage_text_color?: string;
left_title_size?: string | number;
left_text_size?: string | number;
right_title_size?: string | number;
right_text_size?: string | number;
percentage_text_size?: string | number;
bar_size?: 'thin' | 'regular' | 'thick' | 'thiccc';
bar_radius?: 'round' | 'square' | 'rounded-square';
bar_style?: 'flat' | 'glossy' | 'embossed' | 'inset' | 'gradient' | 'neon' | 'outline' | 'glass' | 'metallic' | 'neumorphic' | 'dashed';
show_left?: boolean;
show_right?: boolean;
show_percentage?: boolean;
alignment?: string;
width?: string;
use_gradient?: boolean;
gradient_stops?: GradientStop[];
gradient_display_mode?: 'full' | 'value_based' | 'cropped';
animation_entity?: string;
animation_state?: string;
animation_type?: string;
action_animation_entity?: string;
action_animation_state?: string;
action_animation?: string;
left_condition?: SectionCondition;
right_condition?: SectionCondition;
left_template_mode?: boolean;
left_template?: string;
right_template_mode?: boolean;
right_template?: string;
percentage_type?: 'entity' | 'difference';
percentage_amount_entity?: string;
percentage_total_entity?: string;
}
export interface CustomCard {
type: string;
name: string;
description: string;
draggable?: boolean;
}
export interface IconConfig {
entity: string;
name?: string;
icon_inactive?: string;
icon_active?: string;
color_inactive?: string;
color_active?: string;
inactive_state?: string;
active_state?: string;
inactive_template_mode?: boolean;
active_template_mode?: boolean;
inactive_template?: string;
active_template?: string;
active_state_text?: string;
inactive_state_text?: string;
active_animation?: 'none' | 'pulse' | 'vibrate' | 'rotate-left' | 'rotate-right' | 'hover' | 'fade' | 'scale' | 'bounce' | 'shake' | 'tada';
inactive_animation?: 'none' | 'pulse' | 'vibrate' | 'rotate-left' | 'rotate-right' | 'hover' | 'fade' | 'scale' | 'bounce' | 'shake' | 'tada';
show_state?: boolean;
show_name?: boolean;
show_name_active?: boolean;
show_name_inactive?: boolean;
show_state_active?: boolean;
show_state_inactive?: boolean;
show_units?: boolean;
show_icon_active?: boolean;
show_icon_inactive?: boolean;
use_entity_color_for_icon?: boolean;
use_entity_color_for_icon_active?: boolean;
use_entity_color_for_icon_inactive?: boolean;
use_entity_color_for_icon_background?: boolean;
use_entity_color_for_container_background?: boolean;
on_click_action?: 'toggle' | 'more-info' | 'navigate' | 'url' | 'call-service' | 'perform-action' | 'show-location-map' | 'location-map' | 'voice-assistant' | 'trigger' | 'no-action';
navigation_path?: string;
url?: string;
service?: string;
service_data?: Record<string, any> | string;
action?: Record<string, any> | string;
text_position?: 'top' | 'bottom' | 'left' | 'right';
vertical_alignment?: 'flex-start' | 'center' | 'flex-end';
text_alignment?: 'left' | 'center' | 'right';
icon_size?: string | number;
text_size?: string | number;
name_color_active?: string;
name_color_inactive?: string;
state_color_active?: string;
state_color_inactive?: string;
icon_background?: 'none' | 'circle' | 'square' | 'rounded-square';
icon_background_color?: string;
container_background?: 'none' | 'circle' | 'square' | 'rounded-square';
container_background_color?: string;
container_width?: number;
draggable?: boolean;
active_icon_template?: string;
inactive_icon_template?: string;
active_state_template?: string;
inactive_state_template?: string;
}
export interface IconRowConfig {
id: string;
width?: string;
alignment?: string;
vertical_alignment?: string;
spacing?: string;
columns?: number;
icons: IconConfig[];
}
export interface ImageCropSettings {
top: number;
right: number;
bottom: number;
left: number;
width?: number;
height?: number;
x?: number;
y?: number;
}
export interface SectionStyleSettings {
marginTop?: number;
marginBottom?: number;
}
export interface SectionStyles {
[sectionId: string]: SectionStyleSettings;
}
export interface ActionImageConfig {
id: string;
entity: string;
state: string;
image_type: 'upload' | 'url' | 'entity' | 'none';
image?: string;
image_entity?: string;
image_width?: number;
image_crop?: ImageCropSettings;
priority?: number;
template_mode?: boolean;
template?: string;
}
export interface SectionBreakConfig {
id: string;
break_style?: 'blank' | 'line' | 'double_line' | 'dotted' | 'double_dotted' | 'shadow';
break_thickness?: number;
break_width_percent?: number;
break_color?: string;
}
export interface InfoEntityConfig {
id: string;
entity: string;
name?: string;
icon?: string;
show_icon?: boolean;
show_name?: boolean;
text_size?: string | number;
name_size?: string | number;
icon_size?: string | number;
icon_color?: string;
name_color?: string;
text_color?: string | 'primary' | 'secondary' | 'accent' | 'custom' | '';
custom_text_color?: string;
value_template?: string;
template_mode?: boolean;
on_click_action?: 'more-info' | 'navigate' | 'url' | 'call-service' | 'none';
navigation_path?: string;
url?: string;
service?: string;
service_data?: Record<string, any> | string;
}
export interface InfoRowConfig {
id: string;
width: string;
alignment: string;
vertical_alignment?: string;
spacing: string;
columns?: number;
allow_wrap?: boolean;
info_entities: InfoEntityConfig[];
row_header?: string;
row_header_size?: number;
row_header_color?: string;
show_row_header?: boolean;
}

View File

@@ -0,0 +1,165 @@
import { GradientStop } from '../components/gradient-editor';
export interface UltraVehicleCardConfig {
type?: string;
title?: string;
title_alignment?: 'left' | 'center' | 'right';
vehicle_image_type?: 'default' | 'upload' | 'url' | 'entity' | 'none';
vehicle_image?: string;
vehicle_image_entity?: string;
vehicle_image_width?: number;
default_vehicle_image?: string;
status_image_type?: 'none' | 'upload' | 'entity';
status_image?: string;
status_image_entity?: string;
status_image_trigger_entity?: string;
layout_type?: 'single' | 'double';
formatted_entities?: boolean;
show_units?: boolean;
battery_level_entity?: string;
show_battery?: boolean;
battery_range_entity?: string;
show_battery_range?: boolean;
charging_status_entity?: string;
show_charging_status?: boolean;
charge_limit_entity?: string;
show_charge_limit?: boolean;
location_entity?: string;
show_location?: boolean;
mileage_entity?: string;
show_mileage?: boolean;
car_state_entity?: string;
show_car_state?: boolean;
bars?: BarConfig[];
action_entity?: string;
action_state?: string;
action_image_type?: 'default' | 'upload' | 'url' | 'entity' | 'none';
action_image?: string;
action_image_entity?: string;
action_image_width?: number;
action_images?: {
[entityId: string]: {
[state: string]: string;
};
};
icon_rows?: IconRowConfig[];
vehicle_image_crop?: ImageCropSettings;
action_image_crop?: ImageCropSettings;
sections_order?: string[];
sections_columns?: {
[key: string]: 'left' | 'right';
};
}
export interface BarConfig {
entity: string;
left_title?: string;
left_entity?: string;
right_title?: string;
right_entity?: string;
bar_color?: string;
background_color?: string;
border_color?: string;
left_title_color?: string;
left_text_color?: string;
right_title_color?: string;
right_text_color?: string;
percentage_text_color?: string;
limit_entity?: string;
limit_indicator_color?: string;
left_title_size?: string | number;
left_text_size?: string | number;
right_title_size?: string | number;
right_text_size?: string | number;
percentage_text_size?: string | number;
bar_size?: 'thin' | 'regular' | 'thick' | 'thiccc';
bar_radius?: 'round' | 'square' | 'rounded-square';
show_left?: boolean;
show_right?: boolean;
show_percentage?: boolean;
alignment?: 'flex-start' | 'center' | 'flex-end' | 'space-between';
width?: '25' | '50' | '75' | '100';
use_gradient?: boolean;
gradient_stops?: GradientStop[];
gradient_display_mode?: 'full' | 'value_based';
animation_entity?: string;
animation_state?: string;
animation_type?: 'charging_lines' | 'fill_repeat' | 'pulse' | 'glow' | 'rainbow';
percentage_type?: 'entity' | 'difference' | 'attribute' | 'template';
percentage_amount_entity?: string;
percentage_total_entity?: string;
percentage_attribute?: string;
percentage_template?: string;
action_animation_entity?: string;
action_animation_state?: string;
action_animation?: string;
}
export interface CustomCard {
type: string;
name: string;
description: string;
preview?: boolean;
documentationURL?: string;
version?: string;
}
export interface IconConfig {
entity: string;
icon_inactive: string;
icon_active?: string;
color_inactive: string;
color_active?: string;
inactive_state?: string;
active_state?: string;
show_state?: boolean;
show_name?: boolean;
show_units?: boolean;
name?: string;
on_click_action?: string;
active_template_mode?: boolean;
active_template?: string;
inactive_template_mode?: boolean;
inactive_template?: string;
active_state_text?: string;
inactive_state_text?: string;
icon_size?: number | string;
text_size?: number | string;
text_position?: 'bottom' | 'top' | 'left' | 'right';
vertical_alignment?: 'flex-start' | 'center' | 'flex-end';
text_alignment?: 'left' | 'center' | 'right';
icon_background?: 'none' | 'circle' | 'square' | 'rounded-square';
icon_background_color?: string;
container_background?: 'none' | 'circle' | 'square' | 'rounded-square';
container_background_color?: string;
container_width?: number;
use_entity_color_for_icon?: boolean;
use_entity_color_for_icon_active?: boolean;
use_entity_color_for_icon_inactive?: boolean;
use_entity_color_for_icon_background?: boolean;
use_entity_color_for_container_background?: boolean;
show_icon_active?: boolean;
show_icon_inactive?: boolean;
show_name_active?: boolean;
show_name_inactive?: boolean;
show_state_active?: boolean;
show_state_inactive?: boolean;
name_color_active?: string;
name_color_inactive?: string;
state_color_active?: string;
state_color_inactive?: string;
service?: string;
service_data?: string | Record<string, any>;
navigation_path?: string;
}
export interface IconRowConfig {
id: string;
width?: string;
alignment?: string;
vertical_alignment?: string;
spacing?: string;
columns?: number;
icons: IconConfig[];
}
export interface ImageCropSettings {
top: number;
right: number;
bottom: number;
left: number;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,17 @@
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/

View File

@@ -0,0 +1,8 @@
export declare const DEFAULT_VEHICLE_IMAGE = "/hacsfiles/Ultra-Vehicle-Card/assets/default-car.png";
export declare const DEFAULT_CONFIG: {
title: string;
title_alignment: string;
formatted_entities: boolean;
};
export declare const truncateText: (text: string, maxLength?: number) => string;
export declare const hexToRgb: (colorValue: string) => string;

View File

@@ -0,0 +1,23 @@
import { HomeAssistant } from 'custom-card-helpers';
export interface ImageUploadResponse {
path: string;
file_id: string;
success: boolean;
error?: string;
warning?: string;
}
/**
* Uploads a file to the Home Assistant media source OR older image API.
* @param hass The Home Assistant object.
* @param file The file to upload.
* @returns The path of the uploaded file (/api/image/serve/<id> format).
* @throws An error if the upload fails or the response is invalid.
*/
export declare function uploadImage(hass: HomeAssistant, file: File): Promise<string>;
/**
* Gets the full URL for an uploaded image
* @param hass - Home Assistant instance
* @param path - Image path returned from upload
* @returns Full URL to the image
*/
export declare function getImageUrl(hass: HomeAssistant, path: string): string;

View File

@@ -0,0 +1,7 @@
import { UltraVehicleCardConfig } from '../types';
/**
* Migrates a configuration object from version 1.x to the current format.
* @param oldConfig The configuration object from version 1.x.
* @returns The migrated configuration object conforming to UltraVehicleCardConfig.
*/
export declare function migrateV1Config(oldConfig: any): UltraVehicleCardConfig;

View File

@@ -0,0 +1,27 @@
/**
* Translation Helper Utilities
*
* This file provides utilities to help developers manage translations
* in the Ultra Vehicle Card project. These functions are intended
* for development use only and will not be included in production builds.
*/
/**
* Adds a new translation entry to the collection.
* This is used during development to mark strings that need to be added
* to the translation files.
*
* @param fullKey The full dot-notation key for the translation (e.g., 'editor.vehicle_info.title')
* @param text The English text for this translation
* @param description Optional description to explain the context of this string
*/
export declare function addTranslation(fullKey: string, text: string, description?: string): void;
/**
* Logs all collected translation entries that need to be added to the translation files.
* Call this function in development to see all the translations that need to be added.
*/
export declare function logNewTranslations(): void;
/**
* Clears all collected translation entries.
* Call this after you've added the translations to the files.
*/
export declare function clearNewTranslations(): void;

View File

@@ -0,0 +1,5 @@
/**
* Ultra Vehicle Card Version
* This is the single source of truth for version information
*/
export declare const VERSION = "2.9.1";

View File

@@ -1,9 +1,18 @@
// Upon any change to this file update 'import ... from 'version.js?v=0'' with a newer version number.
// In all files importing this file.
/**
* Ultra Vehicle Card Version
* v2.9.1
*
* This file is auto-generated from src/version.ts
* DO NOT MODIFY DIRECTLY
*/
let version = "undefined";
let version = 'undefined';
function setVersion(value) {
version = value;
}
export { version, setVersion };
// Set default version (will be overridden by card)
setVersion('2.9.1');
export { version, setVersion };