i18n 1/2
This commit is contained in:
parent
db5182c0a5
commit
4463f26bb2
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { T } from '../i18n';
|
||||
|
||||
interface HeaderProps {
|
||||
showDebugPanel: boolean;
|
||||
@ -20,8 +21,8 @@ const Header: React.FC<HeaderProps> = ({
|
||||
{/* Title on its own row */}
|
||||
<div className="text-center">
|
||||
<h1 className="text-2xl md:text-3xl font-bold accent-text drop-shadow-sm flex justify-center gap-4">
|
||||
<span>Image</span>
|
||||
<span>Wizard</span>
|
||||
<span><T>Image</T></span>
|
||||
<span><T>Wizard</T></span>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import log from "../lib/log";
|
||||
import Header from "./Header";
|
||||
import PromptForm from "./PromptForm";
|
||||
import DebugPanel from "./DebugPanel";
|
||||
import { T } from "../i18n";
|
||||
|
||||
function arrayBufferToBase64(buffer: number[]) {
|
||||
let binary = '';
|
||||
|
||||
@ -7,6 +7,7 @@ import TemplateManager from './TemplateManager';
|
||||
import { tauriApi } from '../lib/tauriApi';
|
||||
import log from '../lib/log';
|
||||
import { Eraser, Sparkles, Crop, Palette, Package, FolderOpen, Plus, History, ChevronUp, ChevronDown } from 'lucide-react';
|
||||
import { T } from '../i18n';
|
||||
|
||||
function arrayBufferToBase64(buffer: number[]) {
|
||||
let binary = '';
|
||||
@ -258,10 +259,10 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
<circle className="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4" fill="none" />
|
||||
<path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" />
|
||||
</svg>
|
||||
Generating...
|
||||
<T>Generating...</T>
|
||||
</span>
|
||||
) : (
|
||||
'🎨 Generate Image'
|
||||
<>🎨 <T>Generate Image</T></>
|
||||
)}
|
||||
</button>
|
||||
|
||||
@ -291,7 +292,7 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
</div>
|
||||
{/* Quick Styles - Compact */}
|
||||
<div>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">Styles</h4>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2"><T>Styles</T></h4>
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{quickStyles.map((style) => (
|
||||
<button
|
||||
@ -308,7 +309,7 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
|
||||
{/* Quick Actions - Icons Only */}
|
||||
<div>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">Actions</h4>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2"><T>Actions</T></h4>
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{quickActions.map((action) => {
|
||||
const hasSelectedImages = getSelectedImages().length > 0;
|
||||
@ -355,7 +356,7 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
{/* Left: Output destination */}
|
||||
<div className="border border-slate-200/50 dark:border-slate-700/50 rounded-xl p-4 bg-slate-50/30 dark:bg-slate-800/30">
|
||||
<label htmlFor="output-path" className="block text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">
|
||||
Output File Path
|
||||
<T>Output File Path</T>
|
||||
</label>
|
||||
<div className="flex flex-col sm:flex-row gap-3">
|
||||
<input
|
||||
@ -373,7 +374,7 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
title="Browse for save location"
|
||||
>
|
||||
<FolderOpen size={16} />
|
||||
Browse
|
||||
<T>Browse</T>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -390,7 +391,7 @@ const PromptForm: React.FC<PromptFormProps> = ({
|
||||
className="w-full glass-button font-semibold py-4 px-6 rounded-xl hover:border-slate-400/60 dark:hover-border-slate-500/60 flex items-center justify-center gap-2 border-2 border-dashed border-slate-300 dark:border-slate-600 hover:border-indigo-400 dark:hover:border-indigo-500 transition-colors"
|
||||
>
|
||||
<FolderOpen size={20} />
|
||||
Select Images (or Drop Here)
|
||||
<T>Select Images (or Drop Here)</T>
|
||||
</button>
|
||||
<div className="flex flex-col sm:flex-row gap-2 justify-center">
|
||||
<button
|
||||
|
||||
@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
|
||||
import { ArrowLeft } from 'lucide-react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { saveToStore } from '../lib/init';
|
||||
import { T } from '../i18n';
|
||||
|
||||
interface SettingsProps {
|
||||
apiKey: string;
|
||||
@ -60,7 +61,7 @@ const Settings: React.FC<SettingsProps> = ({
|
||||
>
|
||||
<ArrowLeft className="w-4 h-4 sm:w-5 sm:h-5 text-slate-700 dark:text-slate-300" />
|
||||
</button>
|
||||
<h1 className="text-2xl md:text-3xl font-bold accent-text drop-shadow-sm">Settings</h1>
|
||||
<h1 className="text-2xl md:text-3xl font-bold accent-text drop-shadow-sm"><T>Settings</T></h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -71,7 +72,7 @@ const Settings: React.FC<SettingsProps> = ({
|
||||
<div className="space-y-3">
|
||||
<div>
|
||||
<label htmlFor="api-key" className="block text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">
|
||||
Google AI API Key
|
||||
<T>Google AI API Key</T>
|
||||
</label>
|
||||
<div className="space-y-2">
|
||||
<input
|
||||
@ -85,19 +86,19 @@ const Settings: React.FC<SettingsProps> = ({
|
||||
<div className="flex items-center gap-2">
|
||||
<div className={`h-2 w-2 rounded-full ${localApiKey ? 'bg-green-500' : 'bg-red-500'}`}></div>
|
||||
<span className="text-xs text-slate-500 dark:text-slate-400">
|
||||
{localApiKey ? 'API key configured' : 'API key required for image generation'}
|
||||
{localApiKey ? <T>API key configured</T> : <T>API key required for image generation</T>}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-xs text-slate-500 dark:text-slate-400 mt-2">
|
||||
Get your API key from{' '}
|
||||
<T>Get your API key from</T>{' '}
|
||||
<a
|
||||
href="https://aistudio.google.com/app/apikey"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-blue-600 dark:text-blue-400 hover:underline"
|
||||
>
|
||||
Google AI Studio
|
||||
<T>Google AI Studio</T>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
@ -107,8 +108,8 @@ const Settings: React.FC<SettingsProps> = ({
|
||||
<div>
|
||||
<div className="flex items-center justify-between">
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-slate-700 dark:text-slate-300">Theme</h3>
|
||||
<p className="text-xs text-slate-500 dark:text-slate-400">Choose your preferred color scheme</p>
|
||||
<h3 className="text-sm font-semibold text-slate-700 dark:text-slate-300"><T>Theme</T></h3>
|
||||
<p className="text-xs text-slate-500 dark:text-slate-400"><T>Choose your preferred color scheme</T></p>
|
||||
</div>
|
||||
<button
|
||||
onClick={toggleTheme}
|
||||
@ -134,12 +135,12 @@ const Settings: React.FC<SettingsProps> = ({
|
||||
|
||||
{/* Save Button */}
|
||||
<div>
|
||||
<button
|
||||
onClick={handleSave}
|
||||
className="w-full glass-button bg-gradient-to-r from-indigo-500 to-purple-600 hover:from-indigo-600 hover:to-purple-700 text-white px-6 py-3 rounded-xl font-semibold transition-all duration-300"
|
||||
>
|
||||
Save Settings
|
||||
</button>
|
||||
<button
|
||||
onClick={handleSave}
|
||||
className="w-full glass-button bg-gradient-to-r from-indigo-500 to-purple-600 hover:from-indigo-600 hover:to-purple-700 text-white px-6 py-3 rounded-xl font-semibold transition-all duration-300"
|
||||
>
|
||||
<T>Save Settings</T>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import { PromptTemplate } from '../types';
|
||||
import { Save, Download, Upload } from 'lucide-react';
|
||||
import { T } from '../i18n';
|
||||
|
||||
interface TemplateManagerProps {
|
||||
prompts: PromptTemplate[];
|
||||
@ -33,10 +34,10 @@ const TemplateManager: React.FC<TemplateManagerProps> = ({
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
{/* Left: Template Picker */}
|
||||
<div>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">Templates</h4>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2"><T>Templates</T></h4>
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{prompts.length === 0 ? (
|
||||
<span className="text-xs text-slate-500 dark:text-slate-400">No templates saved yet</span>
|
||||
<span className="text-xs text-slate-500 dark:text-slate-400"><T>No templates saved yet</T></span>
|
||||
) : (
|
||||
prompts.map((template) => (
|
||||
<button
|
||||
@ -55,7 +56,7 @@ const TemplateManager: React.FC<TemplateManagerProps> = ({
|
||||
|
||||
{/* Right: Template Management Icons */}
|
||||
<div>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2">Manage</h4>
|
||||
<h4 className="text-sm font-semibold text-slate-700 dark:text-slate-300 mb-2"><T>Manage</T></h4>
|
||||
<div className="flex flex-col sm:flex-row gap-2">
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@ -1,379 +1,23 @@
|
||||
{
|
||||
"Download English Translations": "Download English Translations",
|
||||
"Connect": "Connect",
|
||||
"PolyMech - Cassandra": "PolyMech - Cassandra",
|
||||
"OFFLINE": "OFFLINE",
|
||||
"System Information": "System Information",
|
||||
"API URL": "API URL",
|
||||
"System Messages": "System Messages",
|
||||
"Clear": "Clear",
|
||||
"No enabled profile": "No enabled profile",
|
||||
"Stop Profile": "Stop Profile",
|
||||
"N/A": "N/A",
|
||||
"Press": "Press",
|
||||
"Stop": "Stop",
|
||||
"MANUAL": "MANUAL",
|
||||
"AUTO": "AUTO",
|
||||
"MANUAL MULTI": "MANUAL MULTI",
|
||||
"AUTO MULTI": "AUTO MULTI",
|
||||
"AUTO MULTI BALANCED": "AUTO MULTI BALANCED",
|
||||
"Press Cylinder Controls": "Press Cylinder Controls",
|
||||
"PV": "PV",
|
||||
"Mode": "Mode",
|
||||
"SP:": "SP:",
|
||||
"Interlocked": "Interlocked",
|
||||
"Low": "Low",
|
||||
"Mid": "Mid",
|
||||
"Max": "Max",
|
||||
"Press Cylinder": "Press Cylinder",
|
||||
"Dashboard": "Dashboard",
|
||||
"Signals": "Signals",
|
||||
"Profiles": "Profiles",
|
||||
"Playground": "Playground",
|
||||
"Advanced": "Advanced",
|
||||
"This is where you'll design and configure your HMI layouts.": "This is where you'll design and configure your HMI layouts.",
|
||||
"Widget editor and drag-and-drop functionality coming soon...": "Widget editor and drag-and-drop functionality coming soon...",
|
||||
"HMI Edit Mode Active": "HMI Edit Mode Active",
|
||||
"Drag and resize widgets": "Drag and resize widgets",
|
||||
"Edit": "Edit",
|
||||
"View": "View",
|
||||
"Add Widget": "Add Widget",
|
||||
"Clear All": "Clear All",
|
||||
"No widgets yet": "No widgets yet",
|
||||
"Click \"Add Widget\" to start building your HMI": "Click \"Add Widget\" to start building your HMI",
|
||||
"Empty Canvas": "Empty Canvas",
|
||||
"Switch to edit mode to add widgets": "Switch to edit mode to add widgets",
|
||||
"Edit mode: Add, move, and configure widgets": "Edit mode: Add, move, and configure widgets",
|
||||
"View mode: Interact with your widgets": "View mode: Interact with your widgets",
|
||||
"Widgets": "Widgets",
|
||||
"Last updated": "Last updated",
|
||||
"No widgets found": "No widgets found",
|
||||
"Import": "Import",
|
||||
"Export": "Export",
|
||||
"Add Container": "Add Container",
|
||||
"Edit mode: Configure containers and add widgets": "Edit mode: Configure containers and add widgets",
|
||||
"Containers": "Containers",
|
||||
"No containers yet": "No containers yet",
|
||||
"Click \"Add Container\" to start building your layout": "Click \"Add Container\" to start building your layout",
|
||||
"Empty Layout": "Empty Layout",
|
||||
"Switch to edit mode to add containers": "Switch to edit mode to add containers",
|
||||
"Address Picker": "Address Picker",
|
||||
"Select a register or coil address": "Select a register or coil address",
|
||||
"Image": "Image",
|
||||
"Wizard": "Wizard",
|
||||
"Settings": "Settings",
|
||||
"Network": "Network",
|
||||
"Coils": "Coils",
|
||||
"Registers": "Registers",
|
||||
"Charts": "Charts",
|
||||
"Logs": "Logs",
|
||||
"Favorites": "Favorites",
|
||||
"Connect to view register data.": "Connect to view register data.",
|
||||
"Cancel": "Cancel",
|
||||
"Reset": "Reset",
|
||||
"Disconnect": "Disconnect",
|
||||
"ONLINE": "ONLINE",
|
||||
"No register data available. Try refreshing.": "No register data available. Try refreshing.",
|
||||
"Connect to a Modbus server to see controller data.": "Connect to a Modbus server to see controller data.",
|
||||
"Connected, but no register data received yet. Waiting for data...": "Connected, but no register data received yet. Waiting for data...",
|
||||
"Start Profile": "Start Profile",
|
||||
"IDLE": "IDLE",
|
||||
"Commons": "Commons",
|
||||
"Slave Mode": "Slave Mode",
|
||||
"When Slave Mode is enabled, all Omron controllers will be disabled for processing.": "When Slave Mode is enabled, all Omron controllers will be disabled for processing.",
|
||||
"All Stop": "All Stop",
|
||||
"COM Write": "COM Write",
|
||||
"Set All SP": "Set All SP",
|
||||
"Total Cost": "Total Cost",
|
||||
"Custom Widgets": "Custom Widgets",
|
||||
"Watched Items": "Watched Items",
|
||||
"DEC": "DEC",
|
||||
"HEX": "HEX",
|
||||
"MINLOAD": "MINLOAD",
|
||||
"MAX_TIME": "MAX_TIME",
|
||||
"STALLED": "STALLED",
|
||||
"BALANCE": "BALANCE",
|
||||
"LOADCELL": "LOADCELL",
|
||||
"MULTI_TIMEOUT": "MULTI_TIMEOUT",
|
||||
"NONE": "NONE",
|
||||
"MANUAL_MULTI": "MANUAL_MULTI",
|
||||
"AUTO_MULTI": "AUTO_MULTI",
|
||||
"AUTO_MULTI_BALANCED": "AUTO_MULTI_BALANCED",
|
||||
"REMOTE": "REMOTE",
|
||||
"Temperature Profiles": "Temperature Profiles",
|
||||
"Controller Chart": "Controller Chart",
|
||||
"Global Settings": "Global Settings",
|
||||
"Show PV": "Show PV",
|
||||
"Show SP": "Show SP",
|
||||
"Profile SP": "Profile SP",
|
||||
"Window (min)": "Window (min)",
|
||||
"Visible Controllers": "Visible Controllers",
|
||||
"Cassandra Left": "Cassandra Left",
|
||||
"Cassandra Right": "Cassandra Right",
|
||||
"Clear Chart": "Clear Chart",
|
||||
"Reset Zoom": "Reset Zoom",
|
||||
"Export to CSV": "Export to CSV",
|
||||
"Sequential Heating Control": "Sequential Heating Control",
|
||||
"Sequential Heating": "Sequential Heating",
|
||||
"Heating Time": "Heating Time",
|
||||
"in seconds": "in seconds",
|
||||
"Max Simultaneous": "Max Simultaneous",
|
||||
"Window Offset": "Window Offset",
|
||||
"Start Index": "Start Index",
|
||||
"End Index": "End Index",
|
||||
"Current Status": "Current Status",
|
||||
"Unknown": "Unknown",
|
||||
"Controller Partitions": "Controller Partitions",
|
||||
"Carina": "Carina",
|
||||
"Stopped": "Stopped",
|
||||
"SP": "SP",
|
||||
"Castor": "Castor",
|
||||
"Cetus": "Cetus",
|
||||
"Corona": "Corona",
|
||||
"Coma B": "Coma B",
|
||||
"Corvus": "Corvus",
|
||||
"Crater": "Crater",
|
||||
"Crux": "Crux",
|
||||
"Copy \"{plotName}\" to...": "Copy \"{plotName}\" to...",
|
||||
"Select a destination plot. The content of \"{plotName}\" will overwrite the selected plot. This action cannot be undone.": "Select a destination plot. The content of \"{plotName}\" will overwrite the selected plot. This action cannot be undone.",
|
||||
"Select a plot to overwrite": "Select a plot to overwrite",
|
||||
"Signal Plot Editor": "Signal Plot Editor",
|
||||
"Download All JSON": "Download All JSON",
|
||||
"Upload All JSON": "Upload All JSON",
|
||||
"Signal plots configuration loaded from API.": "Signal plots configuration loaded from API.",
|
||||
"Slot:": "Slot:",
|
||||
"Enable control unavailable for {name}": "Enable control unavailable for {name}",
|
||||
"Total:": "Total:",
|
||||
"Add a set of sample control points to this plot": "Add a set of sample control points to this plot",
|
||||
"Remove all control points from this plot": "Remove all control points from this plot",
|
||||
"Download JSON for {name}": "Download JSON for {name}",
|
||||
"Upload JSON for {name}": "Upload JSON for {name}",
|
||||
"Copy this plot to another slot...": "Copy this plot to another slot...",
|
||||
"Slot": "Slot",
|
||||
"Duration:": "Duration:",
|
||||
"Timeline:": "Timeline:",
|
||||
"Play from start": "Play from start",
|
||||
"Pause": "Pause",
|
||||
"Stop and reset": "Stop and reset",
|
||||
"Control Points": "Control Points",
|
||||
"Control Points List": "Control Points List",
|
||||
"Move control point up": "Move control point up",
|
||||
"Move control point down": "Move control point down",
|
||||
"Delete control point": "Delete control point",
|
||||
"Properties:": "Properties:",
|
||||
"Select a control point to see its properties.": "Select a control point to see its properties.",
|
||||
"Add Samples": "Add Samples",
|
||||
"Clear All CPs": "Clear All CPs",
|
||||
"Download Plot": "Download Plot",
|
||||
"Upload Plot": "Upload Plot",
|
||||
"Copy to...": "Copy to...",
|
||||
"No Operation": "No Operation",
|
||||
"Write Coil": "Write Coil",
|
||||
"Write Holding Register": "Write Holding Register",
|
||||
"Call Method": "Call Method",
|
||||
"Call Function": "Call Function",
|
||||
"Call REST API": "Call REST API",
|
||||
"Write GPIO": "Write GPIO",
|
||||
"Display Message": "Display Message",
|
||||
"User Defined": "User Defined",
|
||||
"Pause Profile": "Pause Profile",
|
||||
"Start PID Controllers": "Start PID Controllers",
|
||||
"Stop PID Controllers": "Stop PID Controllers",
|
||||
"Buzzer: Off": "Buzzer: Off",
|
||||
"Buzzer: Solid On": "Buzzer: Solid On",
|
||||
"Buzzer: Slow Blink": "Buzzer: Slow Blink",
|
||||
"Buzzer: Fast Blink": "Buzzer: Fast Blink",
|
||||
"Buzzer: Long Beep/Short Pause": "Buzzer: Long Beep/Short Pause",
|
||||
"Send IFTTT Notification": "Send IFTTT Notification",
|
||||
"Buzzer": "Buzzer",
|
||||
"General": "General",
|
||||
"Hardware I/O": "Hardware I/O",
|
||||
"Integrations": "Integrations",
|
||||
"Modbus": "Modbus",
|
||||
"PID Control": "PID Control",
|
||||
"System Calls": "System Calls",
|
||||
"Addr:": "Addr:",
|
||||
"Run this control point action now": "Run this control point action now",
|
||||
"Select type": "Select type",
|
||||
"Enter CP name": "Enter CP name",
|
||||
"Enter CP description": "Enter CP description",
|
||||
"ID:": "ID:",
|
||||
"Run Action": "Run Action",
|
||||
"Time:": "Time:",
|
||||
"Scale:": "Scale:",
|
||||
"State:": "State:",
|
||||
"Type:": "Type:",
|
||||
"CP Name (Optional):": "CP Name (Optional):",
|
||||
"CP Description (Optional):": "CP Description (Optional):",
|
||||
"Arguments:": "Arguments:",
|
||||
"Argument 0:": "Argument 0:",
|
||||
"Argument 1:": "Argument 1:",
|
||||
"Argument 2 (Optional):": "Argument 2 (Optional):",
|
||||
"Loading profiles from Modbus...": "Loading profiles from Modbus...",
|
||||
"This will permanently clear the profile \"{profileName}\" from the server. This action cannot be undone.": "This will permanently clear the profile \"{profileName}\" from the server. This action cannot be undone.",
|
||||
"Copy \"{profileName}\" to...": "Copy \"{profileName}\" to...",
|
||||
"Select a destination profile. The content of \"{profileName}\" will overwrite the selected profile. This action cannot be undone.": "Select a destination profile. The content of \"{profileName}\" will overwrite the selected profile. This action cannot be undone.",
|
||||
"Select a profile to overwrite": "Select a profile to overwrite",
|
||||
"Help": "Help",
|
||||
"Download": "Download",
|
||||
"Upload": "Upload",
|
||||
"Associated Controllers:": "Associated Controllers:",
|
||||
"Edit Profile": "Edit Profile",
|
||||
"Duplicate Profile": "Duplicate Profile",
|
||||
"Copy to existing slot...": "Copy to existing slot...",
|
||||
"Delete Profile": "Delete Profile",
|
||||
"Enabled": "Enabled",
|
||||
"Total": "Total",
|
||||
"Idle": "Idle",
|
||||
"Start": "Start",
|
||||
"E.g., Quick Ramp Up": "E.g., Quick Ramp Up",
|
||||
"Select a signal plot to associate and edit": "Select a signal plot to associate and edit",
|
||||
"Slave:": "Slave:",
|
||||
"SP CMD Addr:": "SP CMD Addr:",
|
||||
"Profile Name": "Profile Name",
|
||||
"Description": "Description",
|
||||
"Duration (hh:mm:ss)": "Duration (hh:mm:ss)",
|
||||
"Profile Curves": "Profile Curves",
|
||||
"Temperature Control Points": "Temperature Control Points",
|
||||
"Associated Signal Plot (Optional)": "Associated Signal Plot (Optional)",
|
||||
"Child Profiles (Sub-plots)": "Child Profiles (Sub-plots)",
|
||||
"Selected child profiles will start, stop, pause, and resume with this parent profile.": "Selected child profiles will start, stop, pause, and resume with this parent profile.",
|
||||
"Target Controllers (Registers)": "Target Controllers (Registers)",
|
||||
"Add all": "Add all",
|
||||
"Remove all": "Remove all",
|
||||
"Export": "Export",
|
||||
"Markdown": "Markdown",
|
||||
"Import": "Import",
|
||||
"Update Profile": "Update Profile",
|
||||
"None": "None",
|
||||
"Signal Control Point Details": "Signal Control Point Details",
|
||||
"Save Signal Plot": "Save Signal Plot",
|
||||
"Loading Cassandra settings...": "Loading Cassandra settings...",
|
||||
"General Settings": "General Settings",
|
||||
"Master Configuration": "Master Configuration",
|
||||
"Master Name": "Master Name",
|
||||
"Slaves": "Slaves",
|
||||
"Manage slave devices (max 1).": "Manage slave devices (max 1).",
|
||||
"Add Slave": "Add Slave",
|
||||
"Partitions": "Partitions",
|
||||
"Import JSON": "Import JSON",
|
||||
"Export JSON": "Export JSON",
|
||||
"Save All Settings": "Save All Settings",
|
||||
"Loading network settings...": "Loading network settings...",
|
||||
"Network Settings": "Network Settings",
|
||||
"Hostname": "Hostname",
|
||||
"Device Hostname": "Device Hostname",
|
||||
"This hostname is used for both STA and AP modes. Changes here will be saved with either form.": "This hostname is used for both STA and AP modes. Changes here will be saved with either form.",
|
||||
"Station (STA) Mode": "Station (STA) Mode",
|
||||
"Connects to an existing Wi-Fi network.": "Connects to an existing Wi-Fi network.",
|
||||
"STA SSID": "STA SSID",
|
||||
"STA Password": "STA Password",
|
||||
"STA IP Address": "STA IP Address",
|
||||
"STA Gateway": "STA Gateway",
|
||||
"STA Subnet Mask": "STA Subnet Mask",
|
||||
"STA Primary DNS": "STA Primary DNS",
|
||||
"STA Secondary DNS": "STA Secondary DNS",
|
||||
"Save STA Settings": "Save STA Settings",
|
||||
"Access Point (AP) Mode": "Access Point (AP) Mode",
|
||||
"Creates its own Wi-Fi network.": "Creates its own Wi-Fi network.",
|
||||
"AP SSID": "AP SSID",
|
||||
"AP Password": "AP Password",
|
||||
"AP IP Address": "AP IP Address",
|
||||
"AP Gateway": "AP Gateway",
|
||||
"AP Subnet Mask": "AP Subnet Mask",
|
||||
"Save AP Settings": "Save AP Settings",
|
||||
"Enable All": "Enable All",
|
||||
"Disable All": "Disable All",
|
||||
"Operatorswitch": "Operatorswitch",
|
||||
"Set All": "Set All",
|
||||
"Presscylinder": "Presscylinder",
|
||||
"MAXLOAD": "MAXLOAD",
|
||||
"ERROR": "ERROR",
|
||||
"OK": "OK",
|
||||
"OVERLOAD": "OVERLOAD",
|
||||
"BALANCE_MAX_DIFF": "BALANCE_MAX_DIFF",
|
||||
"AUTO_TIMEOUT": "AUTO_TIMEOUT",
|
||||
"Loadcell[25]": "Loadcell[25]",
|
||||
"Loadcell[26]": "Loadcell[26]",
|
||||
"Real-time Charts": "Real-time Charts",
|
||||
"Real time Charting": "Real time Charting",
|
||||
"X-Axis": "X-Axis",
|
||||
"Refresh Rate": "Refresh Rate",
|
||||
"Y-Axis Left": "Y-Axis Left",
|
||||
"Min": "Min",
|
||||
"Series": "Series",
|
||||
"Settings...": "Settings...",
|
||||
"Copy...": "Copy...",
|
||||
"Show Legend": "Show Legend",
|
||||
"Apply": "Apply",
|
||||
"CSV": "CSV",
|
||||
"Pop-out": "Pop-out",
|
||||
"Save As": "Save As",
|
||||
"Set as Default": "Set as Default",
|
||||
"Delete": "Delete",
|
||||
"Series Toggles": "Series Toggles",
|
||||
"Continue": "Continue",
|
||||
"Stop at end": "Stop at end",
|
||||
"Restart at end": "Restart at end",
|
||||
"Series settings": "Series settings",
|
||||
"Configure the series to be displayed on the chart.": "Configure the series to be displayed on the chart.",
|
||||
"Color": "Color",
|
||||
"Offset": "Offset",
|
||||
"Scale": "Scale",
|
||||
"Title (Optional)": "Title (Optional)",
|
||||
"Source": "Source",
|
||||
"File name": "File name",
|
||||
"Search...": "Search...",
|
||||
"No source found.": "No source found.",
|
||||
"Select source...": "Select source...",
|
||||
"Favorite Registers": "Favorite Registers",
|
||||
"Favorite Coils": "Favorite Coils",
|
||||
"e.g., Start Heating": "e.g., Start Heating",
|
||||
"e.g., Turn on coil for pre-heating stage": "e.g., Turn on coil for pre-heating stage",
|
||||
"Select Known Coil...": "Select Known Coil...",
|
||||
"Create New Control Point": "Create New Control Point",
|
||||
"Configure the new control point. Press Enter to confirm or Esc to cancel.": "Configure the new control point. Press Enter to confirm or Esc to cancel.",
|
||||
"Coil to Write:": "Coil to Write:",
|
||||
"Value:": "Value:",
|
||||
"ON": "ON",
|
||||
"Create Control Point": "Create Control Point",
|
||||
"Phapp": "Phapp",
|
||||
"Aux": "Aux",
|
||||
"Joystick": "Joystick",
|
||||
"Samplesignalplot 0": "Samplesignalplot 0",
|
||||
"Shortplot 70s": "Shortplot 70s",
|
||||
"Signalplot 922 Slot 2": "Signalplot 922 Slot 2",
|
||||
"Signalplot 923 Slot 3": "Signalplot 923 Slot 3",
|
||||
"Delta Vfd[15]": "Delta Vfd[15]",
|
||||
"none": "none",
|
||||
"OC": "OC",
|
||||
"OV": "OV",
|
||||
"OL": "OL",
|
||||
"CE": "CE",
|
||||
"stop": "stop",
|
||||
"run": "run",
|
||||
"accel": "accel",
|
||||
"decel": "decel",
|
||||
"err": "err",
|
||||
"fwd": "fwd",
|
||||
"rev": "rev",
|
||||
"reset": "reset",
|
||||
"info": "info",
|
||||
"setup": "setup",
|
||||
"reset_fault": "reset_fault",
|
||||
"Plunger": "Plunger",
|
||||
"HomingMan": "HomingMan",
|
||||
"HomingAuto": "HomingAuto",
|
||||
"PlungingMan": "PlungingMan",
|
||||
"PlungingAuto": "PlungingAuto",
|
||||
"Stopping": "Stopping",
|
||||
"Jammed": "Jammed",
|
||||
"ResettingJam": "ResettingJam",
|
||||
"Record": "Record",
|
||||
"Replay": "Replay",
|
||||
"Filling": "Filling",
|
||||
"PostFlow": "PostFlow",
|
||||
"Home": "Home",
|
||||
"Plunge": "Plunge",
|
||||
"Info": "Info",
|
||||
"Fill": "Fill",
|
||||
"No coils data available. Try refreshing.": "No coils data available. Try refreshing."
|
||||
"Google AI API Key": "Google AI API Key",
|
||||
"API key configured": "API key configured",
|
||||
"API key required for image generation": "API key required for image generation",
|
||||
"Get your API key from": "Get your API key from",
|
||||
"Google AI Studio": "Google AI Studio",
|
||||
"Theme": "Theme",
|
||||
"Choose your preferred color scheme": "Choose your preferred color scheme",
|
||||
"Save Settings": "Save Settings",
|
||||
"Generate Image": "Generate Image",
|
||||
"Generating...": "Generating...",
|
||||
"Styles": "Styles",
|
||||
"Actions": "Actions",
|
||||
"Output File Path": "Output File Path",
|
||||
"Browse": "Browse",
|
||||
"Select Images (or Drop Here)": "Select Images (or Drop Here)",
|
||||
"Templates": "Templates",
|
||||
"No templates saved yet": "No templates saved yet",
|
||||
"Manage": "Manage"
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user