diff --git a/po/com.mitchellh.ghostty.pot b/po/com.mitchellh.ghostty.pot index 9492ea3ab..23550e24f 100644 --- a/po/com.mitchellh.ghostty.pot +++ b/po/com.mitchellh.ghostty.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: com.mitchellh.ghostty\n" "Report-Msgid-Bugs-To: m@mitchellh.com\n" -"POT-Creation-Date: 2025-03-19 08:28-0700\n" +"POT-Creation-Date: 2025-03-20 16:33-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -193,14 +193,6 @@ msgid "" "commands may be executed." msgstr "" -#: src/apprt/gtk/inspector.zig:144 -msgid "Ghostty: Terminal Inspector" -msgstr "" - -#: src/apprt/gtk/Surface.zig:1243 -msgid "Copied to clipboard" -msgstr "" - #: src/apprt/gtk/CloseDialog.zig:47 msgid "Close" msgstr "" @@ -237,6 +229,14 @@ msgstr "" msgid "The currently running process in this split will be terminated." msgstr "" +#: src/apprt/gtk/inspector.zig:144 +msgid "Ghostty: Terminal Inspector" +msgstr "" + +#: src/apprt/gtk/Surface.zig:1243 +msgid "Copied to clipboard" +msgstr "" + #: src/apprt/gtk/Window.zig:200 msgid "Main Menu" msgstr "" @@ -257,3 +257,43 @@ msgstr "" #: src/apprt/gtk/Window.zig:941 msgid "Ghostty Developers" msgstr "" + +#: src/cli/args.zig:133 +msgid "invalid field" +msgstr "" + +#: src/cli/args.zig:161 +msgid "unknown field" +msgstr "" + +#: src/cli/args.zig:163 src/cli/args.zig:191 +msgid "value required" +msgstr "" + +#: src/cli/args.zig:165 src/cli/args.zig:206 +msgid "invalid value" +msgstr "" + +#: src/cli/args.zig:169 +msgid "unknown error" +msgstr "" + +#: src/cli/args.zig:218 +msgid ", valid values are: " +msgstr "" + +#: src/config/Config.zig:2722 +msgid "cycle detected" +msgstr "" + +#: src/config/Config.zig:2737 +msgid "error opening" +msgstr "" + +#: src/config/Config.zig:2758 +msgid "not reading because file type is" +msgstr "" + +#: src/config/Config.zig:3176 +msgid "missing command after" +msgstr "" diff --git a/po/de_DE.UTF-8.po b/po/de_DE.UTF-8.po index 792d19168..b9603f2cd 100644 --- a/po/de_DE.UTF-8.po +++ b/po/de_DE.UTF-8.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: com.mitchellh.ghostty\n" "Report-Msgid-Bugs-To: m@mitchellh.com\n" -"POT-Creation-Date: 2025-03-19 08:28-0700\n" +"POT-Creation-Date: 2025-03-20 16:33-0500\n" "PO-Revision-Date: 2025-03-06 14:57+0100\n" "Last-Translator: Robin \n" "Language-Team: German \n" @@ -200,14 +200,6 @@ msgstr "" "Diesen Text in das Terminal einzufügen könnte möglicherweise gefährlich " "sein. Es scheint, dass Anweisungen ausgeführt werden könnten." -#: src/apprt/gtk/inspector.zig:144 -msgid "Ghostty: Terminal Inspector" -msgstr "" - -#: src/apprt/gtk/Surface.zig:1243 -msgid "Copied to clipboard" -msgstr "In die Zwischenablage kopiert" - #: src/apprt/gtk/CloseDialog.zig:47 msgid "Close" msgstr "Schließen" @@ -244,6 +236,14 @@ msgstr "Alle Terminalsitzungen in diesem Tab werden beendet." msgid "The currently running process in this split will be terminated." msgstr "Der aktuell laufende Prozess in diesem geteilten Fenster wird beendet." +#: src/apprt/gtk/inspector.zig:144 +msgid "Ghostty: Terminal Inspector" +msgstr "" + +#: src/apprt/gtk/Surface.zig:1243 +msgid "Copied to clipboard" +msgstr "In die Zwischenablage kopiert" + #: src/apprt/gtk/Window.zig:200 msgid "Main Menu" msgstr "Hauptmenü" @@ -266,3 +266,43 @@ msgstr "Konfiguration wurde neu geladen" #: src/apprt/gtk/Window.zig:941 msgid "Ghostty Developers" msgstr "Ghostty-Entwickler" + +#: src/cli/args.zig:133 +msgid "invalid field" +msgstr "" + +#: src/cli/args.zig:161 +msgid "unknown field" +msgstr "" + +#: src/cli/args.zig:163 src/cli/args.zig:191 +msgid "value required" +msgstr "" + +#: src/cli/args.zig:165 src/cli/args.zig:206 +msgid "invalid value" +msgstr "" + +#: src/cli/args.zig:169 +msgid "unknown error" +msgstr "" + +#: src/cli/args.zig:218 +msgid ", valid values are: " +msgstr "" + +#: src/config/Config.zig:2722 +msgid "cycle detected" +msgstr "" + +#: src/config/Config.zig:2737 +msgid "error opening" +msgstr "" + +#: src/config/Config.zig:2758 +msgid "not reading because file type is" +msgstr "" + +#: src/config/Config.zig:3176 +msgid "missing command after" +msgstr "" diff --git a/po/nb_NO.UTF-8.po b/po/nb_NO.UTF-8.po index b47dc04ab..58fe00777 100644 --- a/po/nb_NO.UTF-8.po +++ b/po/nb_NO.UTF-8.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: com.mitchellh.ghostty\n" "Report-Msgid-Bugs-To: m@mitchellh.com\n" -"POT-Creation-Date: 2025-03-19 08:28-0700\n" +"POT-Creation-Date: 2025-03-20 16:33-0500\n" "PO-Revision-Date: 2025-03-19 09:52+0100\n" "Last-Translator: Christoffer Tønnessen \n" "Language-Team: Norwegian Bokmal \n" @@ -45,8 +45,8 @@ msgid "" "One or more configuration errors were found. Please review the errors below, " "and either reload your configuration or ignore these errors." msgstr "" -"Én eller flere konfigurasjonsfeil ble funnet. Vennligst gjennomgå feilene under, " -"og enten last konfigurasjonen din på nytt eller ignorer disse feilene." +"Én eller flere konfigurasjonsfeil ble funnet. Vennligst gjennomgå feilene " +"under, og enten last konfigurasjonen din på nytt eller ignorer disse feilene." #: src/apprt/gtk/ui/1.5/config-errors-dialog.blp:9 msgid "Ignore" @@ -203,14 +203,6 @@ msgstr "" "Det ser ut som at kommandoer vil bli kjørt hvis du limer inn dette, vurder " "om du mener det er trygt." -#: src/apprt/gtk/inspector.zig:144 -msgid "Ghostty: Terminal Inspector" -msgstr "Ghostty: Terminalinspektør" - -#: src/apprt/gtk/Surface.zig:1243 -msgid "Copied to clipboard" -msgstr "Kopiert til utklippstavle" - #: src/apprt/gtk/CloseDialog.zig:47 msgid "Close" msgstr "Lukk" @@ -247,6 +239,14 @@ msgstr "Alle terminaløkter i denne fanen vil bli avsluttet." msgid "The currently running process in this split will be terminated." msgstr "Den kjørende prosessen for denne splitten vil bli avsluttet." +#: src/apprt/gtk/inspector.zig:144 +msgid "Ghostty: Terminal Inspector" +msgstr "Ghostty: Terminalinspektør" + +#: src/apprt/gtk/Surface.zig:1243 +msgid "Copied to clipboard" +msgstr "Kopiert til utklippstavle" + #: src/apprt/gtk/Window.zig:200 msgid "Main Menu" msgstr "Hovedmeny" @@ -267,3 +267,43 @@ msgstr "Konfigurasjonen ble lastet på nytt" #: src/apprt/gtk/Window.zig:941 msgid "Ghostty Developers" msgstr "Ghostty-utviklere" + +#: src/cli/args.zig:133 +msgid "invalid field" +msgstr "" + +#: src/cli/args.zig:161 +msgid "unknown field" +msgstr "" + +#: src/cli/args.zig:163 src/cli/args.zig:191 +msgid "value required" +msgstr "" + +#: src/cli/args.zig:165 src/cli/args.zig:206 +msgid "invalid value" +msgstr "" + +#: src/cli/args.zig:169 +msgid "unknown error" +msgstr "" + +#: src/cli/args.zig:218 +msgid ", valid values are: " +msgstr "" + +#: src/config/Config.zig:2722 +msgid "cycle detected" +msgstr "" + +#: src/config/Config.zig:2737 +msgid "error opening" +msgstr "" + +#: src/config/Config.zig:2758 +msgid "not reading because file type is" +msgstr "" + +#: src/config/Config.zig:3176 +msgid "missing command after" +msgstr "" diff --git a/po/zh_CN.UTF-8.po b/po/zh_CN.UTF-8.po index a73b065c6..af036bffa 100644 --- a/po/zh_CN.UTF-8.po +++ b/po/zh_CN.UTF-8.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: com.mitchellh.ghostty\n" "Report-Msgid-Bugs-To: m@mitchellh.com\n" -"POT-Creation-Date: 2025-03-19 08:28-0700\n" +"POT-Creation-Date: 2025-03-20 16:33-0500\n" "PO-Revision-Date: 2025-02-27 09:16+0100\n" "Last-Translator: Leah \n" "Language-Team: Chinese (simplified) \n" @@ -194,14 +194,6 @@ msgid "" "commands may be executed." msgstr "将以下内容粘贴至终端内将可能执行有害命令。" -#: src/apprt/gtk/inspector.zig:144 -msgid "Ghostty: Terminal Inspector" -msgstr "Ghostty 终端检视器" - -#: src/apprt/gtk/Surface.zig:1243 -msgid "Copied to clipboard" -msgstr "已复制至剪切板" - #: src/apprt/gtk/CloseDialog.zig:47 msgid "Close" msgstr "关闭" @@ -238,6 +230,14 @@ msgstr "标签页内所有运行中的进程将被终止。" msgid "The currently running process in this split will be terminated." msgstr "分屏内正在运行中的进程将被终止。" +#: src/apprt/gtk/inspector.zig:144 +msgid "Ghostty: Terminal Inspector" +msgstr "Ghostty 终端检视器" + +#: src/apprt/gtk/Surface.zig:1243 +msgid "Copied to clipboard" +msgstr "已复制至剪切板" + #: src/apprt/gtk/Window.zig:200 msgid "Main Menu" msgstr "主菜单" @@ -258,3 +258,43 @@ msgstr "已重新加载设置" #: src/apprt/gtk/Window.zig:941 msgid "Ghostty Developers" msgstr "Ghostty 开发团队" + +#: src/cli/args.zig:133 +msgid "invalid field" +msgstr "" + +#: src/cli/args.zig:161 +msgid "unknown field" +msgstr "" + +#: src/cli/args.zig:163 src/cli/args.zig:191 +msgid "value required" +msgstr "" + +#: src/cli/args.zig:165 src/cli/args.zig:206 +msgid "invalid value" +msgstr "" + +#: src/cli/args.zig:169 +msgid "unknown error" +msgstr "" + +#: src/cli/args.zig:218 +msgid ", valid values are: " +msgstr "" + +#: src/config/Config.zig:2722 +msgid "cycle detected" +msgstr "" + +#: src/config/Config.zig:2737 +msgid "error opening" +msgstr "" + +#: src/config/Config.zig:2758 +msgid "not reading because file type is" +msgstr "" + +#: src/config/Config.zig:3176 +msgid "missing command after" +msgstr "" diff --git a/src/build/GhosttyI18n.zig b/src/build/GhosttyI18n.zig index daf523938..998fe1977 100644 --- a/src/build/GhosttyI18n.zig +++ b/src/build/GhosttyI18n.zig @@ -93,7 +93,20 @@ fn createUpdateStep(b: *std.Build) !*std.Build.Step { else => continue, } - xgettext.addArg((b.pathJoin(&.{ "src/apprt/gtk", src.path }))); + const path = b.pathJoin(&.{ "src/apprt/gtk", src.path }); + xgettext.addArg(path); + xgettext.addFileInput(b.path(path)); + } + } + + { + const other_files = [_][]const u8{ + "src/cli/args.zig", + "src/config/Config.zig", + }; + for (other_files) |path| { + xgettext.addArg(path); + xgettext.addFileInput(b.path(path)); } } diff --git a/src/cli/args.zig b/src/cli/args.zig index 4860cdd74..ff8555fe0 100644 --- a/src/cli/args.zig +++ b/src/cli/args.zig @@ -7,6 +7,7 @@ const diags = @import("diagnostics.zig"); const internal_os = @import("../os/main.zig"); const Diagnostic = diags.Diagnostic; const DiagnosticList = diags.DiagnosticList; +const i18n = internal_os.i18n; const log = std.log.scoped(.cli); @@ -129,7 +130,7 @@ pub fn parse( // Add our diagnostic try dst._diagnostics.append(arena_alloc, .{ .key = try arena_alloc.dupeZ(u8, arg), - .message = "invalid field", + .message = std.mem.span(i18n._("invalid field")), .location = try diags.Location.fromIter(iter, arena_alloc), }); @@ -157,13 +158,15 @@ pub fn parse( // OOM is not recoverable since we need to allocate to // track more error messages. error.OutOfMemory => return err, - error.InvalidField => "unknown field", - error.ValueRequired => formatValueRequired(T, arena_alloc, key) catch "value required", - error.InvalidValue => formatInvalidValue(T, arena_alloc, key, value) catch "invalid value", + error.InvalidField => std.mem.span(i18n._("unknown field")), + error.ValueRequired => formatValueRequired(T, arena_alloc, key) catch + std.mem.span(i18n._("value required")), + error.InvalidValue => formatInvalidValue(T, arena_alloc, key, value) catch + std.mem.span(i18n._("invalid value")), else => try std.fmt.allocPrintZ( arena_alloc, - "unknown error {}", - .{err}, + "{s} {}", + .{ i18n._("unknown error"), err }, ), }; @@ -185,7 +188,7 @@ fn formatValueRequired( var buf = std.ArrayList(u8).init(arena_alloc); errdefer buf.deinit(); const writer = buf.writer(); - try writer.print("value required", .{}); + try writer.writeAll(std.mem.span(i18n._("value required"))); try formatValues(T, key, writer); try writer.writeByte(0); return buf.items[0 .. buf.items.len - 1 :0]; @@ -200,7 +203,7 @@ fn formatInvalidValue( var buf = std.ArrayList(u8).init(arena_alloc); errdefer buf.deinit(); const writer = buf.writer(); - try writer.print("invalid value \"{?s}\"", .{value}); + try writer.print("{s} \"{?s}\"", .{ i18n._("invalid value"), value }); try formatValues(T, key, writer); try writer.writeByte(0); return buf.items[0 .. buf.items.len - 1 :0]; @@ -212,7 +215,7 @@ fn formatValues(comptime T: type, key: []const u8, writer: anytype) std.mem.Allo if (std.mem.eql(u8, key, f.name)) { switch (@typeInfo(f.type)) { .@"enum" => |e| { - try writer.print(", valid values are: ", .{}); + try writer.writeAll(std.mem.span(i18n._(", valid values are: "))); inline for (e.fields, 0..) |field, i| { if (i != 0) try writer.print(", ", .{}); try writer.print("{s}", .{field.name}); diff --git a/src/config/Config.zig b/src/config/Config.zig index 481e02a79..760e2fbcc 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -23,6 +23,7 @@ const terminal = @import("../terminal/main.zig"); const internal_os = @import("../os/main.zig"); const cli = @import("../cli.zig"); const Command = @import("../Command.zig"); +const i18n = internal_os.i18n; const conditional = @import("conditional.zig"); const Conditional = conditional.Conditional; @@ -2717,8 +2718,8 @@ pub fn loadRecursiveFiles(self: *Config, alloc_gpa: Allocator) !void { const diag: cli.Diagnostic = .{ .message = try std.fmt.allocPrintZ( arena_alloc, - "config-file {s}: cycle detected", - .{path}, + "config-file {s}: {s}", + .{ path, i18n._("cycle detected") }, ), }; @@ -2732,8 +2733,8 @@ pub fn loadRecursiveFiles(self: *Config, alloc_gpa: Allocator) !void { const diag: cli.Diagnostic = .{ .message = try std.fmt.allocPrintZ( arena_alloc, - "error opening config-file {s}: {}", - .{ path, err }, + "{s} config-file {s}: {}", + .{ i18n._("error opening"), path, err }, ), }; @@ -2751,8 +2752,12 @@ pub fn loadRecursiveFiles(self: *Config, alloc_gpa: Allocator) !void { const diag: cli.Diagnostic = .{ .message = try std.fmt.allocPrintZ( arena_alloc, - "config-file {s}: not reading because file type is {s}", - .{ path, @tagName(kind) }, + "config-file {s}: {s} {s}", + .{ + path, + i18n._("not reading because file type is"), + @tagName(kind), + }, ), }; @@ -3167,8 +3172,8 @@ pub fn parseManuallyHook( .location = try cli.Location.fromIter(iter, alloc), .message = try std.fmt.allocPrintZ( alloc, - "missing command after {s}", - .{arg}, + "{s} {s}", + .{ i18n._("missing command after"), arg }, ), });