diff --git a/VisuStruct-iOS/VisuStructCore/Sources/VisuStructCore/VisuStructSimulationEngine.swift b/VisuStruct-iOS/VisuStructCore/Sources/VisuStructCore/VisuStructSimulationEngine.swift index 61480211..ed9e6fc9 100644 --- a/VisuStruct-iOS/VisuStructCore/Sources/VisuStructCore/VisuStructSimulationEngine.swift +++ b/VisuStruct-iOS/VisuStructCore/Sources/VisuStructCore/VisuStructSimulationEngine.swift @@ -102,9 +102,11 @@ public struct VisuStructSimulationState: Equatable, Sendable { public var variables: [String: VisuStructSimulationValue] public var outputLines: [String] public var inputRequest: VisuStructSimulationInputRequest? - public var inputError: String? + /// Fehler zur letzten Eingabe (z. B. keine Zahl); Text in der App über `VisuStructSimulationNotice` lokalisieren. + public var inputErrorNotice: VisuStructSimulationNotice? public var lastTrace: String? - public var message: String? + /// Hinweis nach dem letzten Schritt (Ende, Fehler); `nil` während die Simulation normal läuft. + public var notice: VisuStructSimulationNotice? /// Nach einem Fehler bleibt die Simulation auf dem fehlerhaften Schritt stehen, bis sie zurückgesetzt wird. public var isHalted: Bool @@ -113,22 +115,29 @@ public struct VisuStructSimulationState: Equatable, Sendable { variables: [String: VisuStructSimulationValue] = [:], outputLines: [String] = [], inputRequest: VisuStructSimulationInputRequest? = nil, - inputError: String? = nil, + inputErrorNotice: VisuStructSimulationNotice? = nil, lastTrace: String? = nil, - message: String? = nil, + notice: VisuStructSimulationNotice? = nil, isHalted: Bool = false ) { self.stepIndex = stepIndex self.variables = variables self.outputLines = outputLines self.inputRequest = inputRequest - self.inputError = inputError + self.inputErrorNotice = inputErrorNotice self.lastTrace = lastTrace - self.message = message + self.notice = notice self.isHalted = isHalted } } +extension VisuStructSimulationState { + /// Englischer Text von `notice` (Tests, Protokolle). + public var message: String? { notice?.englishText } + /// Englischer Text von `inputErrorNotice`. + public var inputError: String? { inputErrorNotice?.englishText } +} + public struct VisuStructSimulationEngine: Equatable, Sendable { public private(set) var steps: [VisuStructSimulationStep] public private(set) var state: VisuStructSimulationState @@ -157,7 +166,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { public mutating func step() { guard canStep else { if state.inputRequest == nil && !state.isHalted { - state.message = "Simulation finished." + state.notice = .finished } return } @@ -196,13 +205,13 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { return } if state.inputRequest != nil { - state.message = nil + state.notice = nil return } state.stepIndex += 1 - state.message = state.stepIndex >= steps.count ? "Simulation finished." : nil + state.notice = state.stepIndex >= steps.count ? .finished : nil } catch { - state.message = error.localizedDescription + state.notice = VisuStructSimulationNotice(error) state.isHalted = true } } @@ -214,13 +223,13 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { try assignValue(value, to: request.variableName) state.lastTrace = "\(request.variableName) = input -> \(value.description)" } catch { - state.inputError = error.localizedDescription + state.inputErrorNotice = VisuStructSimulationNotice(error) return } state.inputRequest = nil - state.inputError = nil + state.inputErrorNotice = nil state.stepIndex += 1 - state.message = state.stepIndex >= steps.count ? "Simulation finished." : nil + state.notice = state.stepIndex >= steps.count ? .finished : nil } private static func parseInputValue(_ rawValue: String, as valueType: VisuStructSimulationValueType) throws -> VisuStructSimulationValue { @@ -230,12 +239,12 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { switch valueType { case .int: guard let value = Int(trimmed) else { - throw SimulationError.invalidInput("Please enter a whole number.") + throw SimulationError.invalidInput(.wholeNumberExpected) } return .int(value) case .double: guard let value = Double(trimmed) else { - throw SimulationError.invalidInput("Please enter a number.") + throw SimulationError.invalidInput(.numberExpected) } return .double(value) case .string: @@ -346,7 +355,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { steps.remove(at: state.stepIndex) steps.insert(contentsOf: branchSteps, at: state.stepIndex) state.lastTrace = "\(condition) -> \(result ? "true" : "false")" - state.message = !branchSteps.isEmpty ? nil : (state.stepIndex >= steps.count ? "Simulation finished." : nil) + state.notice = !branchSteps.isEmpty ? nil : (state.stepIndex >= steps.count ? .finished : nil) } private mutating func executeSwitchSelection(_ step: VisuStructSimulationStep) throws { @@ -366,7 +375,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { steps.remove(at: state.stepIndex) steps.insert(contentsOf: caseSteps, at: state.stepIndex) state.lastTrace = "\(selector) -> \(selectedCase.name)" - state.message = !caseSteps.isEmpty ? nil : (state.stepIndex >= steps.count ? "Simulation finished." : nil) + state.notice = !caseSteps.isEmpty ? nil : (state.stepIndex >= steps.count ? .finished : nil) } private mutating func executeForLoopStart(_ step: VisuStructSimulationStep) throws { @@ -419,7 +428,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { steps.insert(contentsOf: bodySteps + [incrementStep, conditionStep], at: state.stepIndex) } else { steps.remove(at: state.stepIndex) - state.message = state.stepIndex >= steps.count ? "Simulation finished." : nil + state.notice = state.stepIndex >= steps.count ? .finished : nil } } @@ -449,10 +458,10 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { ) steps.remove(at: state.stepIndex) steps.insert(contentsOf: bodySteps + [conditionStep], at: state.stepIndex) - state.message = !bodySteps.isEmpty ? nil : (state.stepIndex >= steps.count ? "Simulation finished." : nil) + state.notice = !bodySteps.isEmpty ? nil : (state.stepIndex >= steps.count ? .finished : nil) } else { steps.remove(at: state.stepIndex) - state.message = state.stepIndex >= steps.count ? "Simulation finished." : nil + state.notice = state.stepIndex >= steps.count ? .finished : nil } } @@ -469,7 +478,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { ) steps.remove(at: state.stepIndex) steps.insert(contentsOf: bodySteps + [conditionStep], at: state.stepIndex) - state.message = !bodySteps.isEmpty ? nil : (state.stepIndex >= steps.count ? "Simulation finished." : nil) + state.notice = !bodySteps.isEmpty ? nil : (state.stepIndex >= steps.count ? .finished : nil) } private mutating func executeDoUntilCondition(_ step: VisuStructSimulationStep) throws { @@ -491,7 +500,7 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { steps.insert(contentsOf: bodySteps + [conditionStep], at: state.stepIndex) } else { steps.remove(at: state.stepIndex) - state.message = state.stepIndex >= steps.count ? "Simulation finished." : nil + state.notice = state.stepIndex >= steps.count ? .finished : nil } } @@ -509,14 +518,14 @@ public struct VisuStructSimulationEngine: Equatable, Sendable { steps.remove(at: state.stepIndex) steps.insert(contentsOf: bodySteps + [loopStep], at: state.stepIndex) state.lastTrace = "true -> true" - state.message = !bodySteps.isEmpty ? nil : "Infinite loop has no body." + state.notice = !bodySteps.isEmpty ? nil : .infiniteLoopWithoutBody } private mutating func execute(statement rawText: String) throws { let text = rawText.trimmingCharacters(in: .whitespacesAndNewlines) if text.lowercased().hasPrefix("input:") { state.inputRequest = try parseInputRequest(text) - state.inputError = nil + state.inputErrorNotice = nil return } @@ -1343,20 +1352,53 @@ private enum SimulationError: LocalizedError, Equatable { case invalidExpression(String) case unknownVariable(String) case divisionByZero - case invalidInput(String) + case invalidInput(VisuStructSimulationNotice) + + var notice: VisuStructSimulationNotice { + switch self { + case .unsupportedStatement(let text): return .unsupportedStatement(text) + case .invalidExpression(let text): return .invalidExpression(text) + case .unknownVariable(let name): return .unknownVariable(name) + case .divisionByZero: return .divisionByZero + case .invalidInput(let notice): return notice + } + } + + var errorDescription: String? { notice.englishText } +} + +/// Meldungen der Simulation, unabhängig von der Sprache; die App übersetzt sie. +public enum VisuStructSimulationNotice: Equatable, Sendable { + case finished + case infiniteLoopWithoutBody + case unsupportedStatement(String) + case invalidExpression(String) + case unknownVariable(String) + case divisionByZero + case wholeNumberExpected + case numberExpected + /// Fehler aus einer anderen Quelle, nur als Text bekannt. + case other(String) + + init(_ error: Error) { + if let simulationError = error as? SimulationError { + self = simulationError.notice + } else { + self = .other(error.localizedDescription) + } + } - var errorDescription: String? { + public var englishText: String { switch self { - case .unsupportedStatement(let text): - return "Unsupported statement: \(text)" - case .invalidExpression(let text): - return "Invalid expression: \(text)" - case .unknownVariable(let name): - return "Unknown variable: \(name)" - case .divisionByZero: - return "Division by zero." - case .invalidInput(let message): - return message + case .finished: return "Simulation finished." + case .infiniteLoopWithoutBody: return "Infinite loop has no body." + case .unsupportedStatement(let text): return "Unsupported statement: \(text)" + case .invalidExpression(let text): return "Invalid expression: \(text)" + case .unknownVariable(let name): return "Unknown variable: \(name)" + case .divisionByZero: return "Division by zero." + case .wholeNumberExpected: return "Please enter a whole number." + case .numberExpected: return "Please enter a number." + case .other(let text): return text } } } diff --git a/VisuStruct-iOS/VisuStructCore/Tests/VisuStructCoreTests/SimulationEngineTests.swift b/VisuStruct-iOS/VisuStructCore/Tests/VisuStructCoreTests/SimulationEngineTests.swift index a1b4cd10..9e344b1a 100644 --- a/VisuStruct-iOS/VisuStructCore/Tests/VisuStructCoreTests/SimulationEngineTests.swift +++ b/VisuStruct-iOS/VisuStructCore/Tests/VisuStructCoreTests/SimulationEngineTests.swift @@ -32,7 +32,7 @@ final class SimulationEngineTests: XCTestCase { XCTAssertEqual(engine.state.inputRequest?.variableName, "n") engine.provideInput("abc") - XCTAssertNotNil(engine.state.inputError) + XCTAssertEqual(engine.state.inputErrorNotice, .wholeNumberExpected) XCTAssertNotNil(engine.state.inputRequest) engine.provideInput("21") @@ -107,7 +107,18 @@ final class SimulationEngineTests: XCTestCase { ]) var engine = VisuStructSimulationEngine(document: document) engine.step() + XCTAssertEqual(engine.state.notice, .divisionByZero) XCTAssertEqual(engine.state.message, "Division by zero.") XCTAssertNil(engine.state.variables["x"]) } + + func testFinishedNoticeAfterLastStep() { + let document = VisuStructDocument(elements: [ + VisuStructElement(type: .anweisung, textLines: ["int x = 1"]), + ]) + var engine = VisuStructSimulationEngine(document: document) + engine.step() + XCTAssertEqual(engine.state.notice, .finished) + XCTAssertEqual(engine.state.message, "Simulation finished.") + } } diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/AppLanguage.swift b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/AppLanguage.swift index ab44c90a..a0cafeb7 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/AppLanguage.swift +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/AppLanguage.swift @@ -51,16 +51,37 @@ enum AppLanguage: String, CaseIterable, Identifiable { return b } + /// Übersetzung zu `key`; fehlt sie in dieser Sprache, der englische Text (nie der Schlüssel selbst). func tr(_ key: String) -> String { + let text: String if self == .javaLike { - return NSLocalizedString(key, tableName: Self.javaStringsTable, bundle: Bundle.main, value: key, comment: "") + text = NSLocalizedString(key, tableName: Self.javaStringsTable, bundle: Bundle.main, value: key, comment: "") + } else { + text = NSLocalizedString(key, tableName: nil, bundle: bundle, value: key, comment: "") } - return NSLocalizedString(key, tableName: nil, bundle: bundle, value: key, comment: "") + if text == key, self != .english { + return AppLanguage.english.tr(key) + } + return text + } + + /// Sprache des Geräts (bzw. die für VisuStruct in den Systemeinstellungen gewählte), sofern die App sie anbietet; sonst Englisch. + static var deviceDefault: AppLanguage { + for code in Bundle.main.preferredLocalizations { + if let lang = AppLanguage(rawValue: code), lang != .javaLike { return lang } + } + return .english + } + + /// Erster Start ohne gespeicherte Sprache: Gerätesprache übernehmen, damit auch die Systemeinstellungen sie anzeigen. + static func storeDeviceDefaultIfNeeded() { + guard UserDefaults.standard.string(forKey: storageKey) == nil else { return } + UserDefaults.standard.set(deviceDefault.rawValue, forKey: storageKey) } /// Für `ContentView.init`, bevor `Environment` steht. static func currentFromDefaults() -> AppLanguage { - let code = UserDefaults.standard.string(forKey: storageKey) ?? AppLanguage.english.rawValue + let code = UserDefaults.standard.string(forKey: storageKey) ?? AppLanguage.deviceDefault.rawValue return AppLanguage(rawValue: code) ?? .english } } diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Simulation/SimulationPanels.swift b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Simulation/SimulationPanels.swift index eab33a66..af85e388 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Simulation/SimulationPanels.swift +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Simulation/SimulationPanels.swift @@ -77,7 +77,7 @@ struct SimulationStatePanel: View { prompt: engine.state.inputRequest?.prompt, variableName: engine.state.inputRequest?.variableName, valueType: engine.state.inputRequest?.valueType, - inputError: engine.state.inputError, + inputError: engine.state.inputErrorNotice?.localized(in: lang), inputText: $inputText, onSubmit: onSubmitInput ) @@ -160,7 +160,7 @@ struct SimulationStatePanel: View { } .layoutPriority(flexibleCardsFillHeight ? 1 : 0) - if let message = engine.state.message { + if let message = engine.state.notice?.localized(in: lang) { Text(message) .font(.caption) .foregroundStyle(.secondary) @@ -301,3 +301,31 @@ struct SimulationPlaceholderCard: View { } } + +// MARK: - Meldungen der Simulation + +extension VisuStructSimulationNotice { + /// Meldung der Simulation in der App-Sprache. + func localized(in lang: AppLanguage) -> String { + switch self { + case .finished: + return lang.tr("sim_notice_finished") + case .infiniteLoopWithoutBody: + return lang.tr("sim_notice_infinite_loop_empty") + case .unsupportedStatement(let text): + return String(format: lang.tr("sim_notice_unsupported_statement_fmt"), text) + case .invalidExpression(let text): + return String(format: lang.tr("sim_notice_invalid_expression_fmt"), text) + case .unknownVariable(let name): + return String(format: lang.tr("sim_notice_unknown_variable_fmt"), name) + case .divisionByZero: + return lang.tr("sim_notice_division_by_zero") + case .wholeNumberExpected: + return lang.tr("sim_notice_whole_number_expected") + case .numberExpected: + return lang.tr("sim_notice_number_expected") + case .other(let text): + return text + } + } +} diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/VisuStructApp.swift b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/VisuStructApp.swift index 269521f0..0b4d34a2 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/VisuStructApp.swift +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/VisuStructApp.swift @@ -269,6 +269,7 @@ struct VisuStructApp: App { "visustruct.codegen.includeEmptyElse": true, "visustruct.codegen.includeDiagramComments": false ]) + AppLanguage.storeDeviceDefaultIfNeeded() } // Hinweis: Kein `UITextField.appearance().smartQuotesType` / `UITextView.appearance()` hier — @@ -289,7 +290,7 @@ struct VisuStructApp: App { /// `.delete` gibt es nur auf macOS, daher Löschen hinter `.pasteboard`. private struct VisuStructCommands: Commands { @ObservedObject private var commandCenter = DiagramCommandCenter.shared - @AppStorage(AppLanguage.storageKey) private var languageCode: String = AppLanguage.english.rawValue + @AppStorage(AppLanguage.storageKey) private var languageCode: String = AppLanguage.deviceDefault.rawValue private var lang: AppLanguage { AppLanguage(rawValue: languageCode) ?? .english @@ -369,7 +370,7 @@ private struct VisuStructCommands: Commands { /// Synchronisiert `UserDefaults` mit den iOS-**Systemeinstellungen** (VisuStruct), sobald die App wieder aktiv wird. private struct AppRootView: View { @StateObject private var incomingDocuments = IncomingDocumentOpener() - @AppStorage(AppLanguage.storageKey) private var languageCode: String = AppLanguage.english.rawValue + @AppStorage(AppLanguage.storageKey) private var languageCode: String = AppLanguage.deviceDefault.rawValue @AppStorage(VisuStructUIScaleStep.appStorageKeyCanvas) private var scaleCanvas: String = VisuStructUIScaleStep.small.rawValue @AppStorage(VisuStructUIScaleStep.appStorageKeyInspector) private var scaleInspector: String = VisuStructUIScaleStep.small.rawValue @AppStorage("visustruct.export.filenameStyle") private var exportFilenameStyle: String = "dateTitle" @@ -384,7 +385,7 @@ private struct AppRootView: View { .onOpenURL { incomingDocuments.queue($0) } .onChange(of: scenePhase) { _, phase in guard phase == .active else { return } - let lang = UserDefaults.standard.string(forKey: AppLanguage.storageKey) ?? AppLanguage.english.rawValue + let lang = UserDefaults.standard.string(forKey: AppLanguage.storageKey) ?? AppLanguage.deviceDefault.rawValue if lang != languageCode { languageCode = lang } let c = UserDefaults.standard.string(forKey: VisuStructUIScaleStep.appStorageKeyCanvas) ?? VisuStructUIScaleStep.small.rawValue if c != scaleCanvas { scaleCanvas = c } diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings index ba9fecdc..3fd96a74 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "آخر خطوة"; "simulation_highlight_next" = "الخطوة التالية"; "simulation_not_available" = "يقوم Play بتشغيل المحاكاة تلقائيًا مع توقف 0.5 ثانية لكل خطوة."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "تشغيل"; +"simulation_pause" = "إيقاف مؤقت"; +"simulation_step" = "خطوة"; +"simulation_stop" = "إيقاف"; "simulation_input" = "إدخال"; "simulation_input_placeholder" = "لا يلزم إدخال."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "النوع"; +"inspector_io_mode_statement" = "تعليمة"; +"inspector_io_mode_input" = "إدخال"; +"inspector_io_mode_output" = "إخراج"; +"inspector_io_mode_help_java_like" = "إدخال: input: … | إخراج: output: …"; "inspector_add_case" = "إضافة حالة"; "inspector_remove_case" = "إزالة الحالة"; "inspector_group_element" = "نص العنصر"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "مع التاريخ: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "بدون تاريخ: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "انتهت المحاكاة."; +"sim_notice_infinite_loop_empty" = "الحلقة اللانهائية ليس لها جسم."; +"sim_notice_unsupported_statement_fmt" = "تعليمة غير مدعومة: %@"; +"sim_notice_invalid_expression_fmt" = "تعبير غير صالح: %@"; +"sim_notice_unknown_variable_fmt" = "متغير غير معروف: %@"; +"sim_notice_division_by_zero" = "القسمة على صفر."; +"sim_notice_whole_number_expected" = "أدخل عددًا صحيحًا."; +"sim_notice_number_expected" = "أدخل رقمًا."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings index fb19e1c1..624c3c8c 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings @@ -14,9 +14,9 @@ "simulation_highlight_last" = "Sidste trin"; "simulation_highlight_next" = "Næste trin"; "simulation_not_available" = "Play kører simuleringen automatisk med en pause på 0,5 sekund pr. trin."; -"simulation_play" = "Play"; +"simulation_play" = "Afspil"; "simulation_pause" = "Pause"; -"simulation_step" = "Step"; +"simulation_step" = "Trin"; "simulation_stop" = "Stop"; "simulation_input" = "Input"; "simulation_input_placeholder" = "Ingen input påkrævet."; @@ -64,8 +64,8 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; +"inspector_io_mode_title" = "Type"; +"inspector_io_mode_statement" = "Sætning"; "inspector_io_mode_input" = "Input"; "inspector_io_mode_output" = "Output"; "inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; @@ -130,3 +130,13 @@ /* Accessibility — code generator floating panel */ "a11y_codegen_panel_drag" = "Træk for at flytte kodegeneratorpanelet"; "about_dateiformat_strk" = "Filer med endelsen .strk kan også åbnes."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simuleringen er færdig."; +"sim_notice_infinite_loop_empty" = "Den uendelige løkke har intet indhold."; +"sim_notice_unsupported_statement_fmt" = "Sætning understøttes ikke: %@"; +"sim_notice_invalid_expression_fmt" = "Ugyldigt udtryk: %@"; +"sim_notice_unknown_variable_fmt" = "Ukendt variabel: %@"; +"sim_notice_division_by_zero" = "Division med nul."; +"sim_notice_whole_number_expected" = "Indtast et heltal."; +"sim_notice_number_expected" = "Indtast et tal."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings index b99dd214..ca485498 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Letzter Schritt"; "simulation_highlight_next" = "Nächster Schritt"; "simulation_not_available" = "Play führt die Simulation automatisch mit 0,5 Sekunden Pause pro Schritt aus."; -"simulation_play" = "Play"; +"simulation_play" = "Start"; "simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_step" = "Schritt"; +"simulation_stop" = "Stopp"; "simulation_input" = "Eingabe"; "simulation_input_placeholder" = "Keine Eingabe erforderlich."; "simulation_input_submit" = "OK"; @@ -143,10 +143,10 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; "inspector_io_mode_title" = "Art"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_statement" = "Anweisung"; +"inspector_io_mode_input" = "Eingabe"; +"inspector_io_mode_output" = "Ausgabe"; +"inspector_io_mode_help_java_like" = "Eingabe: input: … | Ausgabe: output: …"; "inspector_add_case" = "Weiteren Fall hinzufügen"; "inspector_remove_case" = "Fall entfernen"; "inspector_group_element" = "Elementtext"; @@ -219,3 +219,13 @@ "err_image_render_failed" = "Grafik konnte nicht erzeugt werden."; "err_diagram_too_small_print" = "Diagramm ist zu klein — nichts zu drucken."; "err_print_unavailable" = "Drucken ist auf diesem Gerät nicht verfügbar."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulation beendet."; +"sim_notice_infinite_loop_empty" = "Die Endlosschleife hat keinen Rumpf."; +"sim_notice_unsupported_statement_fmt" = "Nicht unterstützte Anweisung: %@"; +"sim_notice_invalid_expression_fmt" = "Ungültiger Ausdruck: %@"; +"sim_notice_unknown_variable_fmt" = "Unbekannte Variable: %@"; +"sim_notice_division_by_zero" = "Division durch null."; +"sim_notice_whole_number_expected" = "Bitte eine ganze Zahl eingeben."; +"sim_notice_number_expected" = "Bitte eine Zahl eingeben."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings index fe7c6810..9c3d4e7d 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Τελευταίο βήμα"; "simulation_highlight_next" = "Επόμενο βήμα"; "simulation_not_available" = "Το Play εκτελεί αυτόματα την προσομοίωση με παύση 0,5 δευτερολέπτων ανά βήμα."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Αναπαραγωγή"; +"simulation_pause" = "Παύση"; +"simulation_step" = "Βήμα"; +"simulation_stop" = "Διακοπή"; "simulation_input" = "Είσοδος"; "simulation_input_placeholder" = "Δεν απαιτείται είσοδος."; "simulation_input_submit" = "OK"; @@ -122,10 +122,10 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; +"inspector_io_mode_title" = "Είδος"; +"inspector_io_mode_statement" = "Εντολή"; +"inspector_io_mode_input" = "Είσοδος"; +"inspector_io_mode_output" = "Έξοδος"; "inspector_io_mode_help_java_like" = "Java: input: int zahl | output: number"; "inspector_add_case" = "Προσθήκη περίπτωσης"; "inspector_remove_case" = "Αφαίρεση περίπτωσης"; @@ -215,3 +215,13 @@ "settings_export_filename_footer_with_date" = "Με ημερομηνία: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Χωρίς ημερομηνία: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Η προσομοίωση ολοκληρώθηκε."; +"sim_notice_infinite_loop_empty" = "Ο ατέρμονος βρόχος δεν έχει σώμα."; +"sim_notice_unsupported_statement_fmt" = "Μη υποστηριζόμενη εντολή: %@"; +"sim_notice_invalid_expression_fmt" = "Μη έγκυρη έκφραση: %@"; +"sim_notice_unknown_variable_fmt" = "Άγνωστη μεταβλητή: %@"; +"sim_notice_division_by_zero" = "Διαίρεση με το μηδέν."; +"sim_notice_whole_number_expected" = "Εισαγάγετε έναν ακέραιο αριθμό."; +"sim_notice_number_expected" = "Εισαγάγετε έναν αριθμό."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings index 62a5fd16..644397cd 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings @@ -219,3 +219,13 @@ "err_image_render_failed" = "Could not create the image."; "err_diagram_too_small_print" = "The diagram is too small — nothing to print."; "err_print_unavailable" = "Printing is not available on this device."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulation finished."; +"sim_notice_infinite_loop_empty" = "Infinite loop has no body."; +"sim_notice_unsupported_statement_fmt" = "Unsupported statement: %@"; +"sim_notice_invalid_expression_fmt" = "Invalid expression: %@"; +"sim_notice_unknown_variable_fmt" = "Unknown variable: %@"; +"sim_notice_division_by_zero" = "Division by zero."; +"sim_notice_whole_number_expected" = "Please enter a whole number."; +"sim_notice_number_expected" = "Please enter a number."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings index 8299f310..aaf7e993 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Último paso"; "simulation_highlight_next" = "Siguiente paso"; "simulation_not_available" = "Play ejecuta la simulación automáticamente con una pausa de 0,5 segundos por paso."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Reproducir"; +"simulation_pause" = "Pausa"; +"simulation_step" = "Paso"; +"simulation_stop" = "Detener"; "simulation_input" = "Entrada"; "simulation_input_placeholder" = "No se requiere entrada."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Tipo"; +"inspector_io_mode_statement" = "Instrucción"; +"inspector_io_mode_input" = "Entrada"; +"inspector_io_mode_output" = "Salida"; +"inspector_io_mode_help_java_like" = "Entrada: input: … | Salida: output: …"; "inspector_add_case" = "Añadir caso"; "inspector_remove_case" = "Eliminar caso"; "inspector_group_element" = "Texto del elemento"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "Con fecha: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Sin fecha: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulación terminada."; +"sim_notice_infinite_loop_empty" = "El bucle infinito no tiene cuerpo."; +"sim_notice_unsupported_statement_fmt" = "Instrucción no admitida: %@"; +"sim_notice_invalid_expression_fmt" = "Expresión no válida: %@"; +"sim_notice_unknown_variable_fmt" = "Variable desconocida: %@"; +"sim_notice_division_by_zero" = "División por cero."; +"sim_notice_whole_number_expected" = "Introduce un número entero."; +"sim_notice_number_expected" = "Introduce un número."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings index c0adde5e..30185789 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Dernière étape"; "simulation_highlight_next" = "Étape suivante"; "simulation_not_available" = "Play exécute automatiquement la simulation avec une pause de 0,5 seconde par étape."; -"simulation_play" = "Play"; +"simulation_play" = "Lecture"; "simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_step" = "Pas"; +"simulation_stop" = "Arrêt"; "simulation_input" = "Entrée"; "simulation_input_placeholder" = "Aucune entrée requise."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Type"; +"inspector_io_mode_statement" = "Instruction"; +"inspector_io_mode_input" = "Entrée"; +"inspector_io_mode_output" = "Sortie"; +"inspector_io_mode_help_java_like" = "Entrée: input: … | Sortie: output: …"; "inspector_add_case" = "Ajouter un cas"; "inspector_remove_case" = "Supprimer le cas"; "inspector_group_element" = "Texte de l’élément"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "Avec date: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Sans date: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulation terminée."; +"sim_notice_infinite_loop_empty" = "La boucle infinie n’a pas de corps."; +"sim_notice_unsupported_statement_fmt" = "Instruction non prise en charge : %@"; +"sim_notice_invalid_expression_fmt" = "Expression non valide : %@"; +"sim_notice_unknown_variable_fmt" = "Variable inconnue : %@"; +"sim_notice_division_by_zero" = "Division par zéro."; +"sim_notice_whole_number_expected" = "Saisissez un nombre entier."; +"sim_notice_number_expected" = "Saisissez un nombre."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings index c52b41db..3173507c 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "הצעד האחרון"; "simulation_highlight_next" = "הצעד הבא"; "simulation_not_available" = "Play מריץ את הסימולציה אוטומטית עם השהיה של 0.5 שניות לכל צעד."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "הפעלה"; +"simulation_pause" = "השהיה"; +"simulation_step" = "צעד"; +"simulation_stop" = "עצירה"; "simulation_input" = "קלט"; "simulation_input_placeholder" = "לא נדרש קלט."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "סוג"; +"inspector_io_mode_statement" = "הוראה"; +"inspector_io_mode_input" = "קלט"; +"inspector_io_mode_output" = "פלט"; +"inspector_io_mode_help_java_like" = "קלט: input: … | פלט: output: …"; "inspector_add_case" = "הוסף מקרה"; "inspector_remove_case" = "הסר מקרה"; "inspector_group_element" = "טקסט רכיב"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "עם תאריך: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "בלי תאריך: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "הסימולציה הסתיימה."; +"sim_notice_infinite_loop_empty" = "ללולאה האינסופית אין גוף."; +"sim_notice_unsupported_statement_fmt" = "הוראה לא נתמכת: %@"; +"sim_notice_invalid_expression_fmt" = "ביטוי לא חוקי: %@"; +"sim_notice_unknown_variable_fmt" = "משתנה לא ידוע: %@"; +"sim_notice_division_by_zero" = "חלוקה באפס."; +"sim_notice_whole_number_expected" = "יש להזין מספר שלם."; +"sim_notice_number_expected" = "יש להזין מספר."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings index f520c322..4cf33c52 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings @@ -14,9 +14,9 @@ "simulation_highlight_last" = "Ultimo passo"; "simulation_highlight_next" = "Prossimo passo"; "simulation_not_available" = "Play esegue automaticamente la simulazione con una pausa di 0,5 secondi per passo."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; +"simulation_play" = "Avvia"; +"simulation_pause" = "Pausa"; +"simulation_step" = "Passo"; "simulation_stop" = "Stop"; "simulation_input" = "Input"; "simulation_input_placeholder" = "Nessun input richiesto."; @@ -125,8 +125,8 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; +"inspector_io_mode_title" = "Tipo"; +"inspector_io_mode_statement" = "Istruzione"; "inspector_io_mode_input" = "Input"; "inspector_io_mode_output" = "Output"; "inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "Con data: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Senza data: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulazione terminata."; +"sim_notice_infinite_loop_empty" = "Il ciclo infinito non ha corpo."; +"sim_notice_unsupported_statement_fmt" = "Istruzione non supportata: %@"; +"sim_notice_invalid_expression_fmt" = "Espressione non valida: %@"; +"sim_notice_unknown_variable_fmt" = "Variabile sconosciuta: %@"; +"sim_notice_division_by_zero" = "Divisione per zero."; +"sim_notice_whole_number_expected" = "Inserisci un numero intero."; +"sim_notice_number_expected" = "Inserisci un numero."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings index e1399a66..33c070e7 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "前のステップ"; "simulation_highlight_next" = "次のステップ"; "simulation_not_available" = "Play は各ステップごとに0.5秒停止しながらシミュレーションを自動実行します。"; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "再生"; +"simulation_pause" = "一時停止"; +"simulation_step" = "ステップ"; +"simulation_stop" = "停止"; "simulation_input" = "入力"; "simulation_input_placeholder" = "入力は不要です。"; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "種類"; +"inspector_io_mode_statement" = "文"; +"inspector_io_mode_input" = "入力"; +"inspector_io_mode_output" = "出力"; +"inspector_io_mode_help_java_like" = "入力: input: … | 出力: output: …"; "inspector_add_case" = "ケースを追加"; "inspector_remove_case" = "ケースを削除"; "inspector_group_element" = "要素テキスト"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "日付あり: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "日付なし: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "シミュレーションが終了しました。"; +"sim_notice_infinite_loop_empty" = "無限ループに本体がありません。"; +"sim_notice_unsupported_statement_fmt" = "サポートされていない文: %@"; +"sim_notice_invalid_expression_fmt" = "無効な式: %@"; +"sim_notice_unknown_variable_fmt" = "不明な変数: %@"; +"sim_notice_division_by_zero" = "0 で割ることはできません。"; +"sim_notice_whole_number_expected" = "整数を入力してください。"; +"sim_notice_number_expected" = "数値を入力してください。"; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings index fbe574d3..0f5f89d5 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "마지막 단계"; "simulation_highlight_next" = "다음 단계"; "simulation_not_available" = "Play는 각 단계마다 0.5초씩 쉬면서 시뮬레이션을 자동으로 실행합니다."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "재생"; +"simulation_pause" = "일시정지"; +"simulation_step" = "단계"; +"simulation_stop" = "정지"; "simulation_input" = "입력"; "simulation_input_placeholder" = "입력이 필요하지 않습니다."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "종류"; +"inspector_io_mode_statement" = "명령문"; +"inspector_io_mode_input" = "입력"; +"inspector_io_mode_output" = "출력"; +"inspector_io_mode_help_java_like" = "입력: input: … | 출력: output: …"; "inspector_add_case" = "케이스 추가"; "inspector_remove_case" = "케이스 제거"; "inspector_group_element" = "요소 텍스트"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "날짜 포함: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "날짜 없음: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "시뮬레이션이 끝났습니다."; +"sim_notice_infinite_loop_empty" = "무한 루프에 본문이 없습니다."; +"sim_notice_unsupported_statement_fmt" = "지원되지 않는 명령문: %@"; +"sim_notice_invalid_expression_fmt" = "잘못된 식: %@"; +"sim_notice_unknown_variable_fmt" = "알 수 없는 변수: %@"; +"sim_notice_division_by_zero" = "0으로 나눌 수 없습니다."; +"sim_notice_whole_number_expected" = "정수를 입력하세요."; +"sim_notice_number_expected" = "숫자를 입력하세요."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings index afbf2b53..b3236574 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Siste steg"; "simulation_highlight_next" = "Neste steg"; "simulation_not_available" = "Play kjører simuleringen automatisk med en pause på 0,5 sekund per steg."; -"simulation_play" = "Play"; +"simulation_play" = "Spill av"; "simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_step" = "Trinn"; +"simulation_stop" = "Stopp"; "simulation_input" = "Inndata"; "simulation_input_placeholder" = "Ingen inndata kreves."; "simulation_input_submit" = "OK"; @@ -64,11 +64,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Type"; +"inspector_io_mode_statement" = "Setning"; +"inspector_io_mode_input" = "Inndata"; +"inspector_io_mode_output" = "Utdata"; +"inspector_io_mode_help_java_like" = "Inndata: input: … | Utdata: output: …"; "inspector_add_case" = "Legg til case"; "inspector_remove_case" = "Fjern case"; "inspector_group_element" = "Elementtekst"; @@ -130,3 +130,13 @@ /* Accessibility — code generator floating panel */ "a11y_codegen_panel_drag" = "Dra for å flytte kodegeneratorpanelet"; "about_dateiformat_strk" = "Filer med endelsen .strk kan også åpnes."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simuleringen er ferdig."; +"sim_notice_infinite_loop_empty" = "Den uendelige løkken har ikke noe innhold."; +"sim_notice_unsupported_statement_fmt" = "Setning støttes ikke: %@"; +"sim_notice_invalid_expression_fmt" = "Ugyldig uttrykk: %@"; +"sim_notice_unknown_variable_fmt" = "Ukjent variabel: %@"; +"sim_notice_division_by_zero" = "Divisjon med null."; +"sim_notice_whole_number_expected" = "Skriv inn et heltall."; +"sim_notice_number_expected" = "Skriv inn et tall."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings index 85065903..327027a3 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings @@ -14,9 +14,9 @@ "simulation_highlight_last" = "Last step"; "simulation_highlight_next" = "Next step"; "simulation_not_available" = "Play voert de simulatie automatisch uit met een pauze van 0,5 seconde per stap."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; +"simulation_play" = "Afspelen"; +"simulation_pause" = "Pauze"; +"simulation_step" = "Stap"; "simulation_stop" = "Stop"; "simulation_input" = "Invoer"; "simulation_input_placeholder" = "Geen invoer vereist."; @@ -64,11 +64,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Soort"; +"inspector_io_mode_statement" = "Opdracht"; +"inspector_io_mode_input" = "Invoer"; +"inspector_io_mode_output" = "Uitvoer"; +"inspector_io_mode_help_java_like" = "Invoer: input: … | Uitvoer: output: …"; "inspector_add_case" = "Case toevoegen"; "inspector_remove_case" = "Case verwijderen"; "inspector_group_element" = "Elementtekst"; @@ -130,3 +130,13 @@ /* Accessibility — code generator floating panel */ "a11y_codegen_panel_drag" = "Sleep om het codegeneratorpaneel te verplaatsen"; "about_dateiformat_strk" = "Bestanden met de extensie .strk kunnen ook worden geopend."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulatie voltooid."; +"sim_notice_infinite_loop_empty" = "De oneindige lus heeft geen inhoud."; +"sim_notice_unsupported_statement_fmt" = "Niet-ondersteunde opdracht: %@"; +"sim_notice_invalid_expression_fmt" = "Ongeldige expressie: %@"; +"sim_notice_unknown_variable_fmt" = "Onbekende variabele: %@"; +"sim_notice_division_by_zero" = "Deling door nul."; +"sim_notice_whole_number_expected" = "Voer een geheel getal in."; +"sim_notice_number_expected" = "Voer een getal in."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings index 3c5d85d6..383e3131 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings @@ -14,9 +14,9 @@ "simulation_highlight_last" = "Ostatni krok"; "simulation_highlight_next" = "Następny krok"; "simulation_not_available" = "Play uruchamia symulację automatycznie z pauzą 0,5 sekundy na krok."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; +"simulation_play" = "Odtwórz"; +"simulation_pause" = "Pauza"; +"simulation_step" = "Krok"; "simulation_stop" = "Stop"; "simulation_input" = "Wejście"; "simulation_input_placeholder" = "Brak wymaganych danych wejściowych."; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Rodzaj"; +"inspector_io_mode_statement" = "Instrukcja"; +"inspector_io_mode_input" = "Wejście"; +"inspector_io_mode_output" = "Wyjście"; +"inspector_io_mode_help_java_like" = "Wejście: input: … | Wyjście: output: …"; "inspector_add_case" = "Dodaj przypadek"; "inspector_remove_case" = "Usuń przypadek"; "inspector_group_element" = "Tekst elementu"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "Z datą: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Bez daty: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Symulacja zakończona."; +"sim_notice_infinite_loop_empty" = "Pętla nieskończona nie ma treści."; +"sim_notice_unsupported_statement_fmt" = "Nieobsługiwana instrukcja: %@"; +"sim_notice_invalid_expression_fmt" = "Nieprawidłowe wyrażenie: %@"; +"sim_notice_unknown_variable_fmt" = "Nieznana zmienna: %@"; +"sim_notice_division_by_zero" = "Dzielenie przez zero."; +"sim_notice_whole_number_expected" = "Wprowadź liczbę całkowitą."; +"sim_notice_number_expected" = "Wprowadź liczbę."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings index 742d4b67..670a3410 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Último passo"; "simulation_highlight_next" = "Próximo passo"; "simulation_not_available" = "Play executa a simulação automaticamente com uma pausa de 0,5 segundos por passo."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Reproduzir"; +"simulation_pause" = "Pausa"; +"simulation_step" = "Passo"; +"simulation_stop" = "Parar"; "simulation_input" = "Entrada"; "simulation_input_placeholder" = "Nenhuma entrada necessária."; "simulation_input_submit" = "OK"; @@ -127,11 +127,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Tipo"; +"inspector_io_mode_statement" = "Instrução"; +"inspector_io_mode_input" = "Entrada"; +"inspector_io_mode_output" = "Saída"; +"inspector_io_mode_help_java_like" = "Entrada: input: … | Saída: output: …"; "inspector_add_case" = "Adicionar caso"; "inspector_remove_case" = "Remover caso"; "inspector_group_element" = "Texto do elemento"; @@ -220,3 +220,13 @@ "settings_export_filename_footer_with_date" = "Com data: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Sem data: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simulação terminada."; +"sim_notice_infinite_loop_empty" = "O ciclo infinito não tem corpo."; +"sim_notice_unsupported_statement_fmt" = "Instrução não suportada: %@"; +"sim_notice_invalid_expression_fmt" = "Expressão inválida: %@"; +"sim_notice_unknown_variable_fmt" = "Variável desconhecida: %@"; +"sim_notice_division_by_zero" = "Divisão por zero."; +"sim_notice_whole_number_expected" = "Introduza um número inteiro."; +"sim_notice_number_expected" = "Introduza um número."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings index 58aae1e7..063a0547 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Последний шаг"; "simulation_highlight_next" = "Следующий шаг"; "simulation_not_available" = "Play автоматически выполняет симуляцию с паузой 0,5 секунды на шаг."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Пуск"; +"simulation_pause" = "Пауза"; +"simulation_step" = "Шаг"; +"simulation_stop" = "Стоп"; "simulation_input" = "Ввод"; "simulation_input_placeholder" = "Ввод не требуется."; "simulation_input_submit" = "OK"; @@ -124,11 +124,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Вид"; +"inspector_io_mode_statement" = "Инструкция"; +"inspector_io_mode_input" = "Ввод"; +"inspector_io_mode_output" = "Вывод"; +"inspector_io_mode_help_java_like" = "Ввод: input: … | Вывод: output: …"; "inspector_add_case" = "Добавить вариант"; "inspector_remove_case" = "Удалить вариант"; "inspector_group_element" = "Текст элемента"; @@ -217,3 +217,13 @@ "settings_export_filename_footer_with_date" = "С датой: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Без даты: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Симуляция завершена."; +"sim_notice_infinite_loop_empty" = "У бесконечного цикла нет тела."; +"sim_notice_unsupported_statement_fmt" = "Неподдерживаемая инструкция: %@"; +"sim_notice_invalid_expression_fmt" = "Недопустимое выражение: %@"; +"sim_notice_unknown_variable_fmt" = "Неизвестная переменная: %@"; +"sim_notice_division_by_zero" = "Деление на ноль."; +"sim_notice_whole_number_expected" = "Введите целое число."; +"sim_notice_number_expected" = "Введите число."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings index 54f4708e..efe91c52 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Senaste steg"; "simulation_highlight_next" = "Nästa steg"; "simulation_not_available" = "Play kör simuleringen automatiskt med 0,5 sekunders paus per steg."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Spela"; +"simulation_pause" = "Paus"; +"simulation_step" = "Steg"; +"simulation_stop" = "Stopp"; "simulation_input" = "Inmatning"; "simulation_input_placeholder" = "Ingen inmatning krävs."; "simulation_input_submit" = "OK"; @@ -64,11 +64,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Typ"; +"inspector_io_mode_statement" = "Sats"; +"inspector_io_mode_input" = "Inmatning"; +"inspector_io_mode_output" = "Utmatning"; +"inspector_io_mode_help_java_like" = "Inmatning: input: … | Utmatning: output: …"; "inspector_add_case" = "Lägg till case"; "inspector_remove_case" = "Ta bort case"; "inspector_group_element" = "Elementtext"; @@ -130,3 +130,13 @@ /* Accessibility — code generator floating panel */ "a11y_codegen_panel_drag" = "Dra för att flytta kodgeneratorpanelen"; "about_dateiformat_strk" = "Filer med tillägget .strk kan också öppnas."; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simuleringen är klar."; +"sim_notice_infinite_loop_empty" = "Den oändliga loopen saknar innehåll."; +"sim_notice_unsupported_statement_fmt" = "Sats som inte stöds: %@"; +"sim_notice_invalid_expression_fmt" = "Ogiltigt uttryck: %@"; +"sim_notice_unknown_variable_fmt" = "Okänd variabel: %@"; +"sim_notice_division_by_zero" = "Division med noll."; +"sim_notice_whole_number_expected" = "Ange ett heltal."; +"sim_notice_number_expected" = "Ange ett tal."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings index 0c68e8f6..b91aab60 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Son adım"; "simulation_highlight_next" = "Sonraki adım"; "simulation_not_available" = "Play simülasyonu adım başına 0,5 saniye duraklamayla otomatik çalıştırır."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Oynat"; +"simulation_pause" = "Duraklat"; +"simulation_step" = "Adım"; +"simulation_stop" = "Durdur"; "simulation_input" = "Girdi"; "simulation_input_placeholder" = "Girdi gerekli değil."; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "Tür"; +"inspector_io_mode_statement" = "Komut"; +"inspector_io_mode_input" = "Giriş"; +"inspector_io_mode_output" = "Çıkış"; +"inspector_io_mode_help_java_like" = "Giriş: input: … | Çıkış: output: …"; "inspector_add_case" = "Durum ekle"; "inspector_remove_case" = "Durumu kaldır"; "inspector_group_element" = "Öğe metni"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "Tarihli: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Tarihsiz: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Simülasyon tamamlandı."; +"sim_notice_infinite_loop_empty" = "Sonsuz döngünün gövdesi yok."; +"sim_notice_unsupported_statement_fmt" = "Desteklenmeyen komut: %@"; +"sim_notice_invalid_expression_fmt" = "Geçersiz ifade: %@"; +"sim_notice_unknown_variable_fmt" = "Bilinmeyen değişken: %@"; +"sim_notice_division_by_zero" = "Sıfıra bölme."; +"sim_notice_whole_number_expected" = "Lütfen bir tam sayı girin."; +"sim_notice_number_expected" = "Lütfen bir sayı girin."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings index 7c656f40..f60988e7 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "Останній крок"; "simulation_highlight_next" = "Наступний крок"; "simulation_not_available" = "Play автоматично виконує симуляцію з паузою 0,5 секунди на крок."; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "Відтворити"; +"simulation_pause" = "Пауза"; +"simulation_step" = "Крок"; +"simulation_stop" = "Стоп"; "simulation_input" = "Ввід"; "simulation_input_placeholder" = "Ввід не потрібен."; "simulation_input_submit" = "OK"; @@ -122,10 +122,10 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; +"inspector_io_mode_title" = "Вид"; +"inspector_io_mode_statement" = "Інструкція"; +"inspector_io_mode_input" = "Введення"; +"inspector_io_mode_output" = "Виведення"; "inspector_io_mode_help_java_like" = "Java: input: int zahl | output: number"; "inspector_add_case" = "Додати випадок"; "inspector_remove_case" = "Видалити випадок"; @@ -215,3 +215,13 @@ "settings_export_filename_footer_with_date" = "З датою: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "Без дати: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "Симуляцію завершено."; +"sim_notice_infinite_loop_empty" = "Нескінченний цикл не має тіла."; +"sim_notice_unsupported_statement_fmt" = "Непідтримувана інструкція: %@"; +"sim_notice_invalid_expression_fmt" = "Неприпустимий вираз: %@"; +"sim_notice_unknown_variable_fmt" = "Невідома змінна: %@"; +"sim_notice_division_by_zero" = "Ділення на нуль."; +"sim_notice_whole_number_expected" = "Введіть ціле число."; +"sim_notice_number_expected" = "Введіть число."; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings index 5a78103b..3499e86f 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "上一步"; "simulation_highlight_next" = "下一步"; "simulation_not_available" = "Play 会自动运行模拟,每步暂停 0.5 秒。"; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "播放"; +"simulation_pause" = "暂停"; +"simulation_step" = "单步"; +"simulation_stop" = "停止"; "simulation_input" = "输入"; "simulation_input_placeholder" = "不需要输入。"; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "类型"; +"inspector_io_mode_statement" = "语句"; +"inspector_io_mode_input" = "输入"; +"inspector_io_mode_output" = "输出"; +"inspector_io_mode_help_java_like" = "输入: input: … | 输出: output: …"; "inspector_add_case" = "添加分支"; "inspector_remove_case" = "移除分支"; "inspector_group_element" = "元素文本"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "含日期: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "不含日期: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "模拟已结束。"; +"sim_notice_infinite_loop_empty" = "无限循环没有循环体。"; +"sim_notice_unsupported_statement_fmt" = "不支持的语句:%@"; +"sim_notice_invalid_expression_fmt" = "无效的表达式:%@"; +"sim_notice_unknown_variable_fmt" = "未知变量:%@"; +"sim_notice_division_by_zero" = "除数为零。"; +"sim_notice_whole_number_expected" = "请输入整数。"; +"sim_notice_number_expected" = "请输入数字。"; diff --git a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings index 0183e7fc..d634972b 100644 --- a/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings +++ b/VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings @@ -14,10 +14,10 @@ "simulation_highlight_last" = "上一步"; "simulation_highlight_next" = "下一步"; "simulation_not_available" = "Play 會自動執行模擬,每步暫停 0.5 秒。"; -"simulation_play" = "Play"; -"simulation_pause" = "Pause"; -"simulation_step" = "Step"; -"simulation_stop" = "Stop"; +"simulation_play" = "播放"; +"simulation_pause" = "暫停"; +"simulation_step" = "單步"; +"simulation_stop" = "停止"; "simulation_input" = "輸入"; "simulation_input_placeholder" = "不需要輸入。"; "simulation_input_submit" = "OK"; @@ -125,11 +125,11 @@ "inspector_for_placeholder_condition" = "i < 5"; "inspector_for_placeholder_step" = "i++"; -"inspector_io_mode_title" = "Kind"; -"inspector_io_mode_statement" = "Statement"; -"inspector_io_mode_input" = "Input"; -"inspector_io_mode_output" = "Output"; -"inspector_io_mode_help_java_like" = "Input: input: … | Output: output: …"; +"inspector_io_mode_title" = "類型"; +"inspector_io_mode_statement" = "敘述"; +"inspector_io_mode_input" = "輸入"; +"inspector_io_mode_output" = "輸出"; +"inspector_io_mode_help_java_like" = "輸入: input: … | 輸出: output: …"; "inspector_add_case" = "新增分支"; "inspector_remove_case" = "移除分支"; "inspector_group_element" = "元素文字"; @@ -218,3 +218,13 @@ "settings_export_filename_footer_with_date" = "含日期: yyyy-mm-dd-Filename.visustruct"; "settings_export_filename_footer_without_date" = "不含日期: Filename.visustruct"; + +/* Simulation: Meldungen */ +"sim_notice_finished" = "模擬已結束。"; +"sim_notice_infinite_loop_empty" = "無限迴圈沒有迴圈主體。"; +"sim_notice_unsupported_statement_fmt" = "不支援的敘述:%@"; +"sim_notice_invalid_expression_fmt" = "無效的運算式:%@"; +"sim_notice_unknown_variable_fmt" = "未知變數:%@"; +"sim_notice_division_by_zero" = "除數為零。"; +"sim_notice_whole_number_expected" = "請輸入整數。"; +"sim_notice_number_expected" = "請輸入數字。";