mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
i18n: allow localization of config diagnostics
This commit is contained in:
@ -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 <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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 ""
|
||||
|
@ -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 <r@rpfaeffle.com>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\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 ""
|
||||
|
@ -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 <christoffer@cto.gg>\n"
|
||||
"Language-Team: Norwegian Bokmal <l10n-no@lister.huftis.org>\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 ""
|
||||
|
@ -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 <hi@pluie.me>\n"
|
||||
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\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 ""
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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});
|
||||
|
@ -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 },
|
||||
),
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user