Use LocalizableString for gettext

This new wrapper type can be constructed via macros which invoke the
`gettext_extract` proc macro to extract the string literals for PO file
generation.

The type checking enabled by this wrapper should prevent trying to obtain
translations for a string for which none exist.

Because some strings (e.g. for completions) are not defined in Rust, but rather
in fish scripts, the `LocalizableString` type can also be constructed from
non-literals, in which case no extraction happens.
In such cases, it is the programmer's responsibility to only construct the type
for strings which are available for localization.

This approach is a replacement for the `cargo-expand`-based extraction.

When building with the `FISH_GETTEXT_EXTRACTION_FILE` environment variable set,
the `gettext_extract` proc macro will write the messages marked for extraction
to a file in the directory specified by the variable.

Updates to the po files:
- This is the result of running the `update_translations.fish` script using the
  new proc_macro extraction. It finds additional messages compared to the
  `cargo-expand` based approach.
- Messages IDs corresponding to paths are removed. The do not have localizations
  in any language and localizing paths would not make sense. I have not
  investigated how they made it into the po files in the first place.
- Some messages are reordered due to `msguniq` sorting differing from `sort`.

Remove docs about installing `cargo-expand`
These are no longer needed due to the switch to our extraction macro.
This commit is contained in:
Daniel Rainer
2025-05-28 01:42:01 +02:00
parent 51a57870eb
commit 80033adcf5
43 changed files with 2383 additions and 1012 deletions

View File

@@ -32,11 +32,8 @@ jobs:
- name: make fish_run_tests
run: |
make -C build VERBOSE=1 fish_run_tests
- uses: dtolnay/rust-toolchain@stable
- name: translation updates
run: |
# Required for our custom xgettext implementation.
cargo install --locked --version 1.0.106 cargo-expand
# Generate PO files. This should not result it a change in the repo if all translations are
# up to date.
# Ensure that fish is available as an executable.

View File

@@ -297,12 +297,6 @@ Adding translations for a new language
Creating new translations requires the Gettext tools.
More specifically, you will need ``msguniq`` and ``msgmerge`` for creating translations for a new
language.
In addition, the ``cargo-expand`` tool is required.
If you have ``cargo`` installed, run::
cargo install --locked --version 1.0.106 cargo-expand
to install ``cargo-expand`` (Note that other versions might not work correctly with our scripts).
To create a new translation, run::
build_tools/update_translations.fish po/LANG.po

16
Cargo.lock generated
View File

@@ -104,6 +104,7 @@ dependencies = [
"bitflags",
"cc",
"errno",
"fish-gettext-extraction",
"fish-printf",
"libc",
"lru",
@@ -121,6 +122,13 @@ dependencies = [
"widestring",
]
[[package]]
name = "fish-gettext-extraction"
version = "0.0.1"
dependencies = [
"proc-macro2",
]
[[package]]
name = "fish-printf"
version = "0.2.1"
@@ -348,18 +356,18 @@ checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6"
[[package]]
name = "proc-macro2"
version = "1.0.92"
version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.38"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]

View File

@@ -1,11 +1,12 @@
[workspace]
resolver = "2"
members = ["printf"]
members = ["printf", "gettext-extraction"]
[workspace.package]
# To build revisions that use Corrosion (those before 2024-01), use CMake 3.19, Rustc 1.78 and Rustup 1.27.
rust-version = "1.70"
edition = "2021"
repository = "https://github.com/fish-shell/fish-shell"
[profile.release]
overflow-checks = true
@@ -24,7 +25,6 @@ default-run = "fish"
# see doc_src/license.rst for details
# don't forget to update COPYING and debian/copyright too
license = "GPL-2.0-only AND LGPL-2.0-or-later AND MIT AND PSF-2.0"
repository = "https://github.com/fish-shell/fish-shell"
homepage = "https://fishshell.com"
readme = "README.rst"
@@ -49,6 +49,7 @@ nix = { version = "0.30.1", default-features = false, features = [
num-traits = "0.2.19"
once_cell = "1.19.0"
fish-printf = { path = "./printf", features = ["widestring"] }
fish-gettext-extraction = { path = "./gettext-extraction" }
# Don't use the "getrandom" feature as it requires "getentropy" which was not
# available on macOS < 10.12. We can enable "getrandom" when we raise the

View File

@@ -63,6 +63,8 @@ fn main() {
#[cfg(not(debug_assertions))]
rsconf::rebuild_if_paths_changed(&["doc_src", "share"]);
rsconf::rebuild_if_env_changed("FISH_GETTEXT_EXTRACTION_FILE");
cc::Build::new()
.file("src/libc.c")
.include(build_dir)

View File

@@ -3,6 +3,7 @@
# Tool to generate gettext messages template file.
# Writes to stdout.
begin
# Write header. This is required by msguniq.
# Note that this results in the file being overwritten.
@@ -15,45 +16,17 @@ begin
echo ""
end
set -l cargo_expanded_file (mktemp)
# This is a gigantic crime.
# We use cargo-expand to get all our wgettext invocations.
# This might be replaced once we have a tool which properly handles macro expansions.
begin
cargo expand --lib
for f in fish fish_indent fish_key_reader
cargo expand --bin $f
end
end >$cargo_expanded_file
set -l rust_extraction_file (mktemp)
set -l rust_string_file (mktemp)
# We need to build to ensure that the proc macro for extracting strings runs.
FISH_GETTEXT_EXTRACTION_FILE=$rust_extraction_file cargo check
or exit 1
# Extract any gettext call
grep -A1 wgettext_static_str <$cargo_expanded_file |
grep 'widestring::internals::core::primitive::str =' |
string match -rg '"(.*)"' |
string match -rv '^%ls$|^$' |
# escaping difference between gettext and cargo-expand: single-quotes
string replace -a "\'" "'" >$rust_string_file
# Get rid of duplicates and sort.
msguniq --no-wrap --strict --sort-output $rust_extraction_file
or exit 1
# Extract any constants
grep -Ev 'BUILD_VERSION:|PACKAGE_NAME' <$cargo_expanded_file |
grep -E 'const [A-Z_]*: &str = "(.*)"' |
sed -E -e 's/^.*const [A-Z_]*: &str = "(.*)".*$/\1/' -e "s_\\\'_'_g" >>$rust_string_file
rm $cargo_expanded_file
# Sort the extracted strings and remove duplicates.
# Then, transform them into the po format.
# If a string contains a '%' it is considered a format string and marked with a '#, c-format'.
# This allows msgfmt to identify issues with translations whose format string does not match the
# original.
sort -u $rust_string_file |
sed -E -e '/%/ i\
#, c-format
' -e 's/^(.*)$/msgid "\1"\nmsgstr ""\n/'
rm $rust_string_file
rm $rust_extraction_file
function extract_fish_script_messages --argument-names regex

View File

@@ -0,0 +1,16 @@
[package]
name = "fish-gettext-extraction"
edition.workspace = true
rust-version.workspace = true
version = "0.0.1"
repository.workspace = true
description = "proc-macro for extracting strings for gettext translation"
[lib]
proc-macro = true
[dependencies]
proc-macro2 = "1.0"
[lints]
workspace = true

View File

@@ -0,0 +1,67 @@
extern crate proc_macro;
use proc_macro::TokenStream;
use std::{ffi::OsString, fs::OpenOptions, io::Write};
fn append_po_entry_to_file(message: &TokenStream, file_name: &OsString) {
let mut file = OpenOptions::new()
.create(true)
.append(true)
.open(file_name)
.unwrap_or_else(|e| panic!("Could not open file {file_name:?}: {e}"));
let message_string = message.to_string();
if message_string.contains('\n') {
panic!("Gettext strings may not contain unescaped newlines. Unescaped newline found in '{message_string}'")
}
// Crude check for format strings. This might result in false positives.
let format_string_annotation = if message_string.contains('%') {
"#, c-format\n"
} else {
""
};
let po_entry = format!("{format_string_annotation}msgid {message_string}\nmsgstr \"\"\n\n");
file.write_all(po_entry.as_bytes()).unwrap();
}
/// The `message` is passed through unmodified.
/// If `FISH_GETTEXT_EXTRACTION_FILE` is defined in the environment,
/// this file is used to write the message,
/// so that it can then be used for generating gettext PO files.
/// The `message` must be a string literal.
///
/// # Panics
///
/// This macro panics if the `FISH_GETTEXT_EXTRACTION_FILE` variable is set and `message` has an
/// unexpected format.
/// Note that for example `concat!(...)` cannot be passed to this macro, because expansion works
/// outside in, meaning this macro would still see the `concat!` macro invocation, instead of a
/// string literal.
#[proc_macro]
pub fn gettext_extract(message: TokenStream) -> TokenStream {
if let Some(file_path) = std::env::var_os("FISH_GETTEXT_EXTRACTION_FILE") {
let pm2_message = proc_macro2::TokenStream::from(message.clone());
let mut token_trees = pm2_message.into_iter();
let first_token = token_trees
.next()
.expect("gettext_extract got empty token stream. Expected one token.");
if token_trees.next().is_some() {
panic!("Invalid number of tokens passed to gettext_extract. Expected one token, but got more.")
}
if let proc_macro2::TokenTree::Group(group) = first_token {
let mut group_tokens = group.stream().into_iter();
let first_group_token = group_tokens
.next()
.expect("gettext_extract expected one group token but got none.");
if group_tokens.next().is_some() {
panic!("Invalid number of tokens in group passed to gettext_extract. Expected one token, but got more.")
}
if let proc_macro2::TokenTree::Literal(_) = first_group_token {
append_po_entry_to_file(&message, &file_path);
} else {
panic!("Expected literal in gettext_extract, but got: {first_group_token:?}");
}
} else {
panic!("Expected group in gettext_extract, but got: {first_token:?}");
}
}
message
}

397
po/de.po
View File

@@ -18,6 +18,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.5\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" PID Befehl\n"
#, c-format
msgid " (%ls)\n"
msgstr " (%ls)\n"
@@ -41,6 +48,10 @@ msgstr ""
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr ""
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr ""
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr "$%ls: Ursprünglich geerbt als |%ls|\n"
@@ -65,6 +76,10 @@ msgstr "$status ist kein gültiger Befehl. Siehe `help conditions`"
msgid "%.*ls: invalid conversion specification"
msgstr "%.*ls: Ungültige Umwandlungsspezifikation"
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -121,6 +136,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -137,6 +156,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr "%ls: %ls: enthält einen Syntaxfehler\n"
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr "%ls: %ls: ungültiger Basiswert\n"
@@ -150,11 +173,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -189,10 +212,6 @@ msgstr "%ls: %ls: unerwartetes Positionsargument"
msgid "%ls: %ls: unknown option\n"
msgstr "%ls: %ls: unbekannte Option\n"
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -665,6 +684,18 @@ msgstr "%ls: Exklusive option '%ls' ist ungültig\n"
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr "%ls: Exklusive option '%ls' ist ungültig\n"
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls: Erwartete numerischen Wert"
@@ -681,6 +712,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr "%ls: ungültige Optionskombination\n"
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -693,6 +728,10 @@ msgstr ""
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -827,25 +866,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr "Ein zweites 'exit' wird sie beenden.\n"
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr "Abkürzung: %ls"
msgid "Abort"
msgstr "Abbruch"
msgid "Abort (Alias for SIGABRT)"
msgstr ""
msgid "Address boundary error"
msgstr "Adressbereichsfehler"
msgid "Always"
msgstr "Immer"
@@ -856,15 +895,30 @@ msgstr "Fehler beim Einrichten der Pipe aufgetreten"
msgid "Argument is not a number: '%ls'"
msgstr "Argument ist keine Zahl: '%ls'"
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr "Hintergrundbefehle können nicht als Bedingungen benutzt werden"
msgid "Bad system call"
msgstr "Fehlerhafter Systemaufruf"
msgid "Block of code to run conditionally"
msgstr "Einen Block Befehle zur bedingten Ausführung"
msgid "Broken pipe"
msgstr "zerstörte Pipe"
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr "CPU-Zeitbegrenzung überschritten"
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "Kann den no-execute Modus nicht in einer interaktiven Sitzung nutzen"
@@ -878,21 +932,39 @@ msgstr "Kann stdin (fd 0) nicht zur Ausgabe einer Pipe verwenden"
msgid "Change working directory"
msgstr "Arbeitsverzeichnis wechseln"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr ""
msgid "Child process status changed"
msgstr "Kindprozessstatus geändert"
msgid "Command\n"
msgstr "Befehl\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr "Befehl nicht ausführbar"
msgid "Command\n"
msgstr "Befehl\n"
msgid "Commandname was invalid"
msgstr "Befehlsname war ungültig"
msgid "Conditionally run blocks of code"
msgstr "Anweisungsblock bedingungsabhängig ausführen"
msgid "Continue previously stopped process"
msgstr "Vorher gestoppten Prozess fortsetzen"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr "Das aktuelle Arbeitsverzeichnis konnte nicht bestimmt werden. Ist die locale korrekt eingestellt?"
@@ -915,6 +987,9 @@ msgstr "Die Anzahl Argumente zählen"
msgid "Create a block of code"
msgstr "Codeblock erstellen"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Neue Funktion definieren"
@@ -952,6 +1027,9 @@ msgstr "Fehler beim Umbenennen der Verlaufsdatei: %s"
msgid "Error while reading file %ls\n"
msgstr "Fehler beim Lesen der Datei %ls\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr "Eine Zeichenfolge als Befehl ausführen"
@@ -1015,6 +1093,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr "Ausdruck ist Unsinn"
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr "Konnte Shell nicht einer eigenen Prozessgruppe zuweisen"
@@ -1024,6 +1105,24 @@ msgstr "Konnte Terminalmodus nicht setzen"
msgid "Failed to take control of the terminal"
msgstr "Konnte Kontrolle über das Terminal nicht übernehmen"
msgid "File size limit exceeded"
msgstr "Dateigrößenbegrenzung überschritten"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr "Fließkomma-Ausnahmefehler"
msgid "Forced quit"
msgstr "Erzwungene Beendigung"
msgid "Forced stop"
msgstr "Erzwungener Stopp"
msgid "Generate random number"
msgstr "Zufallszahl generieren"
@@ -1051,6 +1150,9 @@ msgstr "Tipp: Eine führende '0' ohne 'x' gibt eine Oktalzahl an"
msgid "History of commands executed by user"
msgstr "Befehlsgeschichte"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr "Verlaufs-ID '%ls' ist kein gültiger Variablenname. Nutze `%ls`."
@@ -1063,10 +1165,16 @@ msgstr "Heimordner für %ls"
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr "Ich scheine ein verwaister Prozess zu sein, also beende ich mich höflich. Meine PID ist %d."
msgid "I/O on asynchronous file descriptor is possible"
msgstr "E/A auf asynchronem Dateideskriptor ist möglich"
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr ""
msgid "Illegal instruction"
msgstr "Illegale Instruktion"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr "Unvollständige Escapesequenz '%ls'"
@@ -1075,6 +1183,12 @@ msgstr "Unvollständige Escapesequenz '%ls'"
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr "Ganzzahl %lld in '%ls' gefolgt von nicht-Ziffer"
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr "Ungültige Argumente"
@@ -1107,12 +1221,21 @@ msgstr "Ungültiges Token '%ls'"
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Job\tGruppe\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Jobsteuerung: %ls\n"
msgid "Job\tGroup\t"
msgstr "Job\tGruppe\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "Funktionen auflisten oder entfernen"
@@ -1137,6 +1260,9 @@ msgstr "Strings manipulieren"
msgid "Measure how long a command or block takes"
msgstr "Dauer der Ausführung eines Befehls oder Blocks messen"
msgid "Misaligned address error"
msgstr "Fehler: nicht ausgerichtete Adresse"
msgid "Mismatched braces"
msgstr "Unpassende Klammern"
@@ -1179,6 +1305,9 @@ msgstr "Keine Funktion"
msgid "Not a number"
msgstr "Keine Zahl"
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr "Zahl ist unendlich"
@@ -1201,6 +1330,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr "Optionen in einem Fishskript parsen"
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Einen Befehl mehrmals ausführen"
@@ -1215,6 +1347,12 @@ msgstr "Bitte setzen sie $%ls auf ein Verzeichnis in das sie schreiben können."
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr "Bitte setzen sie %ls oder die HOME Umgebungsvariable bevor sie fish starten."
msgid "Polite quit request"
msgstr "Höfliche Beendigungsanforderung"
msgid "Power failure"
msgstr "Stromausfall"
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1234,12 +1372,42 @@ msgstr "Formatierten Text ausgeben"
msgid "Process\n"
msgstr "Prozess\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr "Profilierungszeitgeber abgelaufen"
msgid "Quit request from job control (^C)"
msgstr "Quit-Anforderung über Jobsteuerung (^C)"
msgid "Quit request from job control with core dump (^\\)"
msgstr "Quit-Anforderung über Jobsteuerung mit Speicherauszug (^\\)"
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "Eine Eingabezeile in Variablen einlesen"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr "Job aus der Jobliste entfernen"
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr "Umleitung zu '%ls' angefordert, dies ist aber kein gültiger Dateideskriptor"
@@ -1269,9 +1437,15 @@ msgstr "Führe Befehl aus wenn der Letzte gelang"
msgid "Run command in current process"
msgstr "Befehl im aktuellen Prozess ausführen"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Nach einem String in einer Liste suchen"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1286,6 +1460,9 @@ msgstr "Job in Hintergrund schicken"
msgid "Send job to foreground"
msgstr "Job in Vordergrund schicken"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "Festlegen oder Abrufen der Befehlszeile"
@@ -1298,6 +1475,9 @@ msgstr "Absoluten Pfad ohne symbolische Verknüpfungen anzeigen"
msgid "Skip over remaining innermost loop"
msgstr "Über den Rest der innersten Schleife springen"
msgid "Stack fault"
msgstr ""
msgid "Standard input"
msgstr "Standardeingabe"
@@ -1315,6 +1495,15 @@ msgstr "Status\tBefehl\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr "Stopp durch Terminaleingabe"
msgid "Stop from terminal output"
msgstr "Stopp durch Terminalausgabe"
msgid "Stop request from job control (^Z)"
msgstr "Stoppanforderung über Jobsteuerung (^Z)"
msgid "Stop the currently evaluated function"
msgstr "Derzeit ausgewertete Funktion stoppen"
@@ -1324,6 +1513,18 @@ msgstr "Innerste Schleife beenden"
msgid "Temporarily block delivery of events"
msgstr "Ereignisweitergabe vorübergehend blockieren"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Terminal getrennt"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr "Teste eine Bedingung"
@@ -1341,6 +1542,9 @@ msgstr "Der 'time' Befehl darf nur am Anfang einer Pipeline stehen"
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr "Der Fehler war '%s'."
@@ -1355,6 +1559,9 @@ msgstr ""
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "Die Funktion '%ls' ruft sich sofort selbst auf. Dies wäre eine Endlosschleife."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr ""
@@ -1364,6 +1571,9 @@ msgstr ""
msgid "This is not a login shell\n"
msgstr ""
msgid "Timer expired"
msgstr "Zeitgeber abgelaufen"
msgid "Too few arguments"
msgstr ""
@@ -1376,9 +1586,15 @@ msgstr "Zu viele Argumente"
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr "Verfolgungs- oder Haltepunkt erreicht"
msgid "Translate a string"
msgstr "Übersetze eine Zeichenkette"
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1493,29 +1709,60 @@ msgstr "Nicht passender Platzhalter"
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr ""
msgid "Urgent socket condition"
msgstr "Vorrangige Socket-Bedingung"
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr ""
msgid "User defined signal 1"
msgstr "Benutzerdefiniertes Signal 1"
msgid "User defined signal 2"
msgstr "Benutzerdefiniertes Signal 2"
#, c-format
msgid "Variable: %ls"
msgstr "Variable: %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr ""
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr ""
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr "Auf den Abschluss von Hintergrundprozessen warten"
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Änderung der Fenstergröße"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" PID Befehl\n"
msgid "array indices start at 1, not 0."
msgstr "Array Indexe beginnen mit 1, nicht 0"
msgid "autoloading"
msgstr ""
#, c-format
msgid "builtin %ls: %ls: %s\n"
msgstr "builtin %ls: %ls: %s\n"
@@ -1574,9 +1821,6 @@ msgstr "exportiert"
msgid "file"
msgstr "Datei"
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -79122,96 +79366,9 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Konnte Shell nicht wieder in Vordergrund zurückholen"
#~ msgid "Terminal hung up"
#~ msgstr "Terminal getrennt"
#~ msgid "Quit request from job control (^C)"
#~ msgstr "Quit-Anforderung über Jobsteuerung (^C)"
#~ msgid "Quit request from job control with core dump (^\\)"
#~ msgstr "Quit-Anforderung über Jobsteuerung mit Speicherauszug (^\\)"
#~ msgid "Illegal instruction"
#~ msgstr "Illegale Instruktion"
#~ msgid "Trace or breakpoint trap"
#~ msgstr "Verfolgungs- oder Haltepunkt erreicht"
#~ msgid "Abort"
#~ msgstr "Abbruch"
#~ msgid "Misaligned address error"
#~ msgstr "Fehler: nicht ausgerichtete Adresse"
#~ msgid "Floating point exception"
#~ msgstr "Fließkomma-Ausnahmefehler"
#~ msgid "Forced quit"
#~ msgstr "Erzwungene Beendigung"
#~ msgid "User defined signal 1"
#~ msgstr "Benutzerdefiniertes Signal 1"
#~ msgid "User defined signal 2"
#~ msgstr "Benutzerdefiniertes Signal 2"
#~ msgid "Address boundary error"
#~ msgstr "Adressbereichsfehler"
#~ msgid "Broken pipe"
#~ msgstr "zerstörte Pipe"
#~ msgid "Timer expired"
#~ msgstr "Zeitgeber abgelaufen"
#~ msgid "Polite quit request"
#~ msgstr "Höfliche Beendigungsanforderung"
#~ msgid "Child process status changed"
#~ msgstr "Kindprozessstatus geändert"
#~ msgid "Continue previously stopped process"
#~ msgstr "Vorher gestoppten Prozess fortsetzen"
#~ msgid "Forced stop"
#~ msgstr "Erzwungener Stopp"
#~ msgid "Stop request from job control (^Z)"
#~ msgstr "Stoppanforderung über Jobsteuerung (^Z)"
#~ msgid "Stop from terminal input"
#~ msgstr "Stopp durch Terminaleingabe"
#~ msgid "Stop from terminal output"
#~ msgstr "Stopp durch Terminalausgabe"
#~ msgid "Urgent socket condition"
#~ msgstr "Vorrangige Socket-Bedingung"
#~ msgid "CPU time limit exceeded"
#~ msgstr "CPU-Zeitbegrenzung überschritten"
#~ msgid "File size limit exceeded"
#~ msgstr "Dateigrößenbegrenzung überschritten"
#~ msgid "Virtual timer expired"
#~ msgstr "Virtueller Zeitgeber abgelaufen"
#~ msgid "Profiling timer expired"
#~ msgstr "Profilierungszeitgeber abgelaufen"
#~ msgid "Window size change"
#~ msgstr "Änderung der Fenstergröße"
#~ msgid "I/O on asynchronous file descriptor is possible"
#~ msgstr "E/A auf asynchronem Dateideskriptor ist möglich"
#~ msgid "Power failure"
#~ msgstr "Stromausfall"
#~ msgid "Bad system call"
#~ msgstr "Fehlerhafter Systemaufruf"
#, c-format
#~ msgid "getcwd() failed with errno %d/%s"
#~ msgstr "getcwd() schlug mit errno %d/%s fehl"

401
po/en.po
View File

@@ -18,6 +18,11 @@ msgstr ""
"X-Poedit-Basepath: /home/david/src/fish-shell\n"
"X-Generator: Poedit 1.8.11\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
#, c-format
msgid " (%ls)\n"
msgstr ""
@@ -41,6 +46,10 @@ msgstr ""
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr ""
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr "$%lc is not a valid variable in fish."
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr ""
@@ -65,6 +74,10 @@ msgstr ""
msgid "%.*ls: invalid conversion specification"
msgstr "%.*ls: invalid conversion specification"
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -121,6 +134,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -137,6 +154,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr ""
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr ""
@@ -150,11 +171,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -189,10 +210,6 @@ msgstr ""
msgid "%ls: %ls: unknown option\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -665,6 +682,18 @@ msgstr ""
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr ""
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls: expected a numeric value"
@@ -681,6 +710,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr ""
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -693,6 +726,10 @@ msgstr ""
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -827,25 +864,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr ""
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr ""
msgid "Abort"
msgstr "Abort"
msgid "Abort (Alias for SIGABRT)"
msgstr "Abort (Alias for SIGABRT)"
msgid "Address boundary error"
msgstr "Address boundary error"
msgid "Always"
msgstr "Always"
@@ -856,15 +893,30 @@ msgstr "An error occurred while setting up pipe"
msgid "Argument is not a number: '%ls'"
msgstr ""
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr "Backgrounded commands can not be used as conditionals"
msgid "Bad system call"
msgstr "Bad system call"
msgid "Block of code to run conditionally"
msgstr ""
msgid "Broken pipe"
msgstr "Broken pipe"
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr "CPU time limit exceeded"
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "Can not use the no-execute mode when running an interactive session"
@@ -878,21 +930,39 @@ msgstr "Cannot use stdin (fd 0) as pipe output"
msgid "Change working directory"
msgstr "Change working directory"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr ""
msgid "Child process status changed"
msgstr "Child process status changed"
msgid "Command\n"
msgstr "Command\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr ""
msgid "Command\n"
msgstr "Command\n"
msgid "Commandname was invalid"
msgstr ""
msgid "Conditionally run blocks of code"
msgstr ""
msgid "Continue previously stopped process"
msgstr "Continue previously stopped process"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr ""
@@ -915,6 +985,9 @@ msgstr "Count the number of arguments"
msgid "Create a block of code"
msgstr "Create a block of code"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Define a new function"
@@ -952,6 +1025,9 @@ msgstr ""
msgid "Error while reading file %ls\n"
msgstr "Error while reading file %ls\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr ""
@@ -1015,6 +1091,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr ""
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr ""
@@ -1024,6 +1103,24 @@ msgstr ""
msgid "Failed to take control of the terminal"
msgstr ""
msgid "File size limit exceeded"
msgstr "File size limit exceeded"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr "Floating point exception"
msgid "Forced quit"
msgstr "Forced quit"
msgid "Forced stop"
msgstr "Forced stop"
msgid "Generate random number"
msgstr "Generate random number"
@@ -1051,6 +1148,9 @@ msgstr ""
msgid "History of commands executed by user"
msgstr "History of commands executed by user"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr ""
@@ -1063,10 +1163,16 @@ msgstr "Home for %ls"
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgid "I/O on asynchronous file descriptor is possible"
msgstr "I/O on asynchronous file descriptor is possible"
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr "Illegal file descriptor in redirection “%ls”"
msgid "Illegal instruction"
msgstr "Illegal instruction"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr ""
@@ -1075,6 +1181,12 @@ msgstr ""
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr ""
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr ""
@@ -1107,12 +1219,21 @@ msgstr ""
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Job\tGroup\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Job control: %ls\n"
msgid "Job\tGroup\t"
msgstr "Job\tGroup\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "List or remove functions"
@@ -1137,6 +1258,9 @@ msgstr ""
msgid "Measure how long a command or block takes"
msgstr ""
msgid "Misaligned address error"
msgstr "Misaligned address error"
msgid "Mismatched braces"
msgstr ""
@@ -1179,6 +1303,9 @@ msgstr ""
msgid "Not a number"
msgstr ""
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr ""
@@ -1201,6 +1328,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr ""
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Perform a command multiple times"
@@ -1215,6 +1345,12 @@ msgstr ""
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr ""
msgid "Polite quit request"
msgstr "Polite quit request"
msgid "Power failure"
msgstr "Power failure"
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1234,12 +1370,42 @@ msgstr "Prints formatted text"
msgid "Process\n"
msgstr "Process\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr "Profiling timer expired"
msgid "Quit request from job control (^C)"
msgstr "Quit request from job control (^C)"
msgid "Quit request from job control with core dump (^\\)"
msgstr "Quit request from job control with core dump (^\\)"
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "Read a line of input into variables"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr ""
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr "Requested redirection to “%ls”, which is not a valid file descriptor"
@@ -1269,9 +1435,15 @@ msgstr ""
msgid "Run command in current process"
msgstr "Run command in current process"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Search for a specified string in a list"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1286,6 +1458,9 @@ msgstr "Send job to background"
msgid "Send job to foreground"
msgstr "Send job to foreground"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "Set or get the commandline"
@@ -1298,6 +1473,9 @@ msgstr ""
msgid "Skip over remaining innermost loop"
msgstr ""
msgid "Stack fault"
msgstr "Stack fault"
msgid "Standard input"
msgstr "Standard input"
@@ -1315,6 +1493,15 @@ msgstr "State\tCommand\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr "Stop from terminal input"
msgid "Stop from terminal output"
msgstr "Stop from terminal output"
msgid "Stop request from job control (^Z)"
msgstr "Stop request from job control (^Z)"
msgid "Stop the currently evaluated function"
msgstr "Stop the currently evaluated function"
@@ -1324,6 +1511,18 @@ msgstr "Stop the innermost loop"
msgid "Temporarily block delivery of events"
msgstr "Temporarily block delivery of events"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Terminal hung up"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr "Test a condition"
@@ -1341,6 +1540,9 @@ msgstr ""
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr "The error was '%s'."
@@ -1355,6 +1557,9 @@ msgstr ""
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "The function “%ls” calls itself immediately, which would result in an infinite loop."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr ""
@@ -1364,6 +1569,9 @@ msgstr "This is a login shell\n"
msgid "This is not a login shell\n"
msgstr "This is not a login shell\n"
msgid "Timer expired"
msgstr "Timer expired"
msgid "Too few arguments"
msgstr ""
@@ -1376,9 +1584,15 @@ msgstr ""
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr "Trace or breakpoint trap"
msgid "Translate a string"
msgstr ""
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1493,25 +1707,58 @@ msgstr ""
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr ""
msgid "Urgent socket condition"
msgstr "Urgent socket condition"
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr ""
msgid "User defined signal 1"
msgstr "User defined signal 1"
msgid "User defined signal 2"
msgstr "User defined signal 2"
#, c-format
msgid "Variable: %ls"
msgstr "Variable: %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr ""
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr ""
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr ""
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Window size change"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgid "array indices start at 1, not 0."
msgstr ""
msgid "array indices start at 1, not 0."
msgid "autoloading"
msgstr ""
#, c-format
@@ -1572,9 +1819,6 @@ msgstr ""
msgid "file"
msgstr "file"
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -79157,115 +79401,18 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Could not return shell to foreground"
#~ msgid "Terminal hung up"
#~ msgstr "Terminal hung up"
#~ msgid "Quit request from job control (^C)"
#~ msgstr "Quit request from job control (^C)"
#~ msgid "Quit request from job control with core dump (^\\)"
#~ msgstr "Quit request from job control with core dump (^\\)"
#~ msgid "Illegal instruction"
#~ msgstr "Illegal instruction"
#~ msgid "Trace or breakpoint trap"
#~ msgstr "Trace or breakpoint trap"
#~ msgid "Abort"
#~ msgstr "Abort"
#~ msgid "Misaligned address error"
#~ msgstr "Misaligned address error"
#~ msgid "Floating point exception"
#~ msgstr "Floating point exception"
#~ msgid "Forced quit"
#~ msgstr "Forced quit"
#~ msgid "User defined signal 1"
#~ msgstr "User defined signal 1"
#~ msgid "User defined signal 2"
#~ msgstr "User defined signal 2"
#~ msgid "Address boundary error"
#~ msgstr "Address boundary error"
#~ msgid "Broken pipe"
#~ msgstr "Broken pipe"
#~ msgid "Timer expired"
#~ msgstr "Timer expired"
#~ msgid "Polite quit request"
#~ msgstr "Polite quit request"
#~ msgid "Child process status changed"
#~ msgstr "Child process status changed"
#~ msgid "Continue previously stopped process"
#~ msgstr "Continue previously stopped process"
#~ msgid "Forced stop"
#~ msgstr "Forced stop"
#~ msgid "Stop request from job control (^Z)"
#~ msgstr "Stop request from job control (^Z)"
#~ msgid "Stop from terminal input"
#~ msgstr "Stop from terminal input"
#~ msgid "Stop from terminal output"
#~ msgstr "Stop from terminal output"
#~ msgid "Urgent socket condition"
#~ msgstr "Urgent socket condition"
#~ msgid "CPU time limit exceeded"
#~ msgstr "CPU time limit exceeded"
#~ msgid "File size limit exceeded"
#~ msgstr "File size limit exceeded"
#~ msgid "Virtual timer expired"
#~ msgstr "Virtual timer expired"
#~ msgid "Profiling timer expired"
#~ msgstr "Profiling timer expired"
#~ msgid "Window size change"
#~ msgstr "Window size change"
#~ msgid "I/O on asynchronous file descriptor is possible"
#~ msgstr "I/O on asynchronous file descriptor is possible"
#~ msgid "Power failure"
#~ msgstr "Power failure"
#~ msgid "Bad system call"
#~ msgstr "Bad system call"
#~ msgid "Information request"
#~ msgstr "Information request"
#~ msgid "Stack fault"
#~ msgstr "Stack fault"
#~ msgid "Emulator trap"
#~ msgstr "Emulator trap"
#~ msgid "Abort (Alias for SIGABRT)"
#~ msgstr "Abort (Alias for SIGABRT)"
#~ msgid "Unused signal"
#~ msgstr "Unused signal"
#, c-format
#~ msgid "$%lc is not a valid variable in fish."
#~ msgstr "$%lc is not a valid variable in fish."
#~ msgid "Process file after the compiler reads in the standard specs file, in order to override the defaults that the gcc driver program uses when determining what switches to pass to cc1, cc1plus, as, ld, etc"
#~ msgstr "Process file after the compiler reads in the standard specs file, in order to override the defaults that the gcc driver program uses when determining what switches to pass to cc1, cc1plus, as, ld, etc"

415
po/fr.po
View File

@@ -117,6 +117,13 @@ msgstr ""
"X-Generator: Gtranslator 2.91.7\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" PID Commande\n"
#, c-format
msgid " (%ls)\n"
msgstr ""
@@ -140,6 +147,10 @@ msgstr "$? nest pas supporté. Dans fish, veuillez utiliser 'count $argv'."
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr "$$ nest pas le PID. Dans fish, veuillez utiliser $fish_pid."
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr "$%lc est un nom de variable invalide dans fish."
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr ""
@@ -164,6 +175,10 @@ msgstr ""
msgid "%.*ls: invalid conversion specification"
msgstr "%.*ls : spécification de conversion invalide"
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -220,6 +235,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -236,6 +255,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr ""
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr ""
@@ -249,11 +272,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -288,10 +311,6 @@ msgstr ""
msgid "%ls: %ls: unknown option\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -764,6 +783,18 @@ msgstr "%ls : le sémaphore exclusif '%ls' est invalide\n"
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr "%ls : le sémaphore texte exclusif '%ls' est invalide\n"
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls : valeur numérique attendue"
@@ -780,6 +811,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr ""
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -792,6 +827,10 @@ msgstr "%ls : la tâche %d ('%ls') a été arrêtée et a reçu un signal pour
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -926,25 +965,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr "Une seconde tentative darrêt les terminera.\n"
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr ""
msgid "Abort"
msgstr "Abandon"
msgid "Abort (Alias for SIGABRT)"
msgstr "Abandon (Alias pour SIGABRT)"
msgid "Address boundary error"
msgstr "Erreur de frontière d'adresse"
msgid "Always"
msgstr "Toujours"
@@ -955,15 +994,30 @@ msgstr "Une erreur est survenue lors du paramétrage du tube"
msgid "Argument is not a number: '%ls'"
msgstr ""
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr "Les commandes en arrière-plan ne peuvent être utilisées comme des conditionnelles"
msgid "Bad system call"
msgstr "Mauvais appel système"
msgid "Block of code to run conditionally"
msgstr ""
msgid "Broken pipe"
msgstr "Tube interrompu"
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr "Limite de temps CPU dépassée"
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "Le mode no-execute ne peut pas être utilisé dans une session interactive"
@@ -977,21 +1031,39 @@ msgstr "Impossible dutiliser lentrée standard (fd 0) comme sortie de tube
msgid "Change working directory"
msgstr "Modifier le dossier de travail"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr ""
msgid "Child process status changed"
msgstr "Létat du processus fils a été modifié"
msgid "Command\n"
msgstr "Commande\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr ""
msgid "Command\n"
msgstr "Commande\n"
msgid "Commandname was invalid"
msgstr ""
msgid "Conditionally run blocks of code"
msgstr ""
msgid "Continue previously stopped process"
msgstr "Continuer le processus précédemment arrêté"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr "Impossible de déterminer le dossier de travail. Vos paramètres régionaux sont-ils corrects ?"
@@ -1014,6 +1086,9 @@ msgstr "Compter le nombre darguments"
msgid "Create a block of code"
msgstr "Créer un bloc de code"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Définir une nouvelle fonction"
@@ -1051,6 +1126,9 @@ msgstr ""
msgid "Error while reading file %ls\n"
msgstr "Erreur lors de la lecture du fichier %ls\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr ""
@@ -1114,6 +1192,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr ""
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr ""
@@ -1123,6 +1204,24 @@ msgstr ""
msgid "Failed to take control of the terminal"
msgstr ""
msgid "File size limit exceeded"
msgstr "Limite de taille de fichier dépassée"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr "Exception de virgule flottante"
msgid "Forced quit"
msgstr "Forcé à quitter"
msgid "Forced stop"
msgstr "Arrêt forcé"
msgid "Generate random number"
msgstr "Génère un nombre aléatoire"
@@ -1150,6 +1249,9 @@ msgstr ""
msgid "History of commands executed by user"
msgstr "Historique des commandes exécutées par l'utilisateur"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr "LID de session dhistorique '%ls' nest pas un nom de variable valide ; retour à la valeur par défaut `%ls`."
@@ -1162,10 +1264,16 @@ msgstr ""
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr "Il semblerait que je sois un processus orphelin, je m'arrête donc. Mon pid est %d."
msgid "I/O on asynchronous file descriptor is possible"
msgstr "E/S sur un descripteur de fichier asynchrone possible"
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr "Descripteur de fichier erroné dans la redirection '%ls'"
msgid "Illegal instruction"
msgstr "Instruction illégale"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr ""
@@ -1174,6 +1282,12 @@ msgstr ""
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr ""
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr ""
@@ -1206,12 +1320,21 @@ msgstr ""
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Tâche\tGroupe\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Contrôle des tâches : %ls\n"
msgid "Job\tGroup\t"
msgstr "Tâche\tGroupe\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "Lister ou supprimer des fonctions"
@@ -1236,6 +1359,9 @@ msgstr "Manipuler les chaînes"
msgid "Measure how long a command or block takes"
msgstr ""
msgid "Misaligned address error"
msgstr "Erreur de mauvaise adresse"
msgid "Mismatched braces"
msgstr ""
@@ -1278,6 +1404,9 @@ msgstr "Pas une fonction"
msgid "Not a number"
msgstr ""
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr ""
@@ -1300,6 +1429,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr "Analyser les options du script fish"
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Exécuter une commande plusieurs fois"
@@ -1314,6 +1446,12 @@ msgstr "Veuillez paramétrer $%ls à un dossier dans lequel vous avez un accès
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr "Veuillez paramétrer la variable denvironnement %ls ou HOME avant de lancer fish."
msgid "Polite quit request"
msgstr "Demande polie de quitter"
msgid "Power failure"
msgstr "Panne de courant"
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1333,12 +1471,42 @@ msgstr "Affiche le texte formaté"
msgid "Process\n"
msgstr "Processus\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr "Délai de profilage expiré"
msgid "Quit request from job control (^C)"
msgstr "Requête de sortie du contrôle des tâches (^C)"
msgid "Quit request from job control with core dump (^\\)"
msgstr "Requête de sortie du contrôle des tâches avec core dump (^\\)"
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "Lire une ligne d'entrée dans des variables"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr "Supprimer la tâche de la liste des tâches"
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr "Redirection demandée à '%ls', qui nest pas un descripteur de fichier valide"
@@ -1368,9 +1536,15 @@ msgstr ""
msgid "Run command in current process"
msgstr "Exécuter la commande dans le processus actuel"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Rechercher une chaîne de caractères donnée dans une liste"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1385,6 +1559,9 @@ msgstr "Mettre la tâche en arrière-plan"
msgid "Send job to foreground"
msgstr "Mettre la tâche en premier plan"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "Paramétrer ou obtenir la ligne de commande"
@@ -1397,6 +1574,9 @@ msgstr ""
msgid "Skip over remaining innermost loop"
msgstr ""
msgid "Stack fault"
msgstr "Faute de pile"
msgid "Standard input"
msgstr "Entrée standard"
@@ -1414,6 +1594,15 @@ msgstr "État\tCommande\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr "Arrêt de l'entrée du terminal"
msgid "Stop from terminal output"
msgstr "Arrêt de la sortie du terminal"
msgid "Stop request from job control (^Z)"
msgstr "Demande d'arrêt du contrôle des tâches (^Z)"
msgid "Stop the currently evaluated function"
msgstr "Arrêter la fonction actuellement en évaluation"
@@ -1423,6 +1612,18 @@ msgstr "Arrêter la boucle interne"
msgid "Temporarily block delivery of events"
msgstr "Bloquer temporairement la distribution des événements"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Le terminal a raccroché"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr "Vérifier une condition"
@@ -1440,6 +1641,9 @@ msgstr ""
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr "Lerreur était '%s'"
@@ -1454,6 +1658,9 @@ msgstr ""
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "La fonction '%ls' sappelle immédiatement, ce qui provoquerait une boucle infinie."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr "Des tâches sont toujours actives :\n"
@@ -1463,6 +1670,9 @@ msgstr "Ceci est un shell de connexion\n"
msgid "This is not a login shell\n"
msgstr "Ceci nest pas un shell de connexion\n"
msgid "Timer expired"
msgstr "Expiration du délai"
msgid "Too few arguments"
msgstr ""
@@ -1475,9 +1685,15 @@ msgstr ""
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr "Déroutement de suivi/point d'arrêt"
msgid "Translate a string"
msgstr ""
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1592,29 +1808,60 @@ msgstr ""
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr "Usage de '=' non supporté. Dans fish, veuillez utiliser 'set %ls %ls'."
msgid "Urgent socket condition"
msgstr "Condition urgente de socket"
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr "Utilisez 'disown PID' pour retirer des tâches de la liste sans les abréger\n"
msgid "User defined signal 1"
msgstr "Signal défini par l'utilisateur 1"
msgid "User defined signal 2"
msgstr "Signal défini par l'utilisateur 2"
#, c-format
msgid "Variable: %ls"
msgstr "Variable : %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr "Les variables ne peuvent être placées entre crochets. Dans fish, veuillez utiliser \"$%ls\"."
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr "Les variables ne peuvent être placées entre crochets. Dans fish, veuillez utiliser {$%ls}."
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr "Attendre la mort des processus en arrière-plan"
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Modification de dimension de fenêtre"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" PID Commande\n"
msgid "array indices start at 1, not 0."
msgstr ""
msgid "autoloading"
msgstr ""
#, c-format
msgid "builtin %ls: %ls: %s\n"
msgstr ""
@@ -1673,9 +1920,6 @@ msgstr "exportée"
msgid "file"
msgstr "fichier"
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -80543,108 +80787,15 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Impossible de remettre le shell en premier plan"
#~ msgid "Terminal hung up"
#~ msgstr "Le terminal a raccroché"
#~ msgid "Quit request from job control (^C)"
#~ msgstr "Requête de sortie du contrôle des tâches (^C)"
#~ msgid "Quit request from job control with core dump (^\\)"
#~ msgstr "Requête de sortie du contrôle des tâches avec core dump (^\\)"
#~ msgid "Illegal instruction"
#~ msgstr "Instruction illégale"
#~ msgid "Trace or breakpoint trap"
#~ msgstr "Déroutement de suivi/point d'arrêt"
#~ msgid "Abort"
#~ msgstr "Abandon"
#~ msgid "Misaligned address error"
#~ msgstr "Erreur de mauvaise adresse"
#~ msgid "Floating point exception"
#~ msgstr "Exception de virgule flottante"
#~ msgid "Forced quit"
#~ msgstr "Forcé à quitter"
#~ msgid "User defined signal 1"
#~ msgstr "Signal défini par l'utilisateur 1"
#~ msgid "User defined signal 2"
#~ msgstr "Signal défini par l'utilisateur 2"
#~ msgid "Address boundary error"
#~ msgstr "Erreur de frontière d'adresse"
#~ msgid "Broken pipe"
#~ msgstr "Tube interrompu"
#~ msgid "Timer expired"
#~ msgstr "Expiration du délai"
#~ msgid "Polite quit request"
#~ msgstr "Demande polie de quitter"
#~ msgid "Child process status changed"
#~ msgstr "Létat du processus fils a été modifié"
#~ msgid "Continue previously stopped process"
#~ msgstr "Continuer le processus précédemment arrêté"
#~ msgid "Forced stop"
#~ msgstr "Arrêt forcé"
#~ msgid "Stop request from job control (^Z)"
#~ msgstr "Demande d'arrêt du contrôle des tâches (^Z)"
#~ msgid "Stop from terminal input"
#~ msgstr "Arrêt de l'entrée du terminal"
#~ msgid "Stop from terminal output"
#~ msgstr "Arrêt de la sortie du terminal"
#~ msgid "Urgent socket condition"
#~ msgstr "Condition urgente de socket"
#~ msgid "CPU time limit exceeded"
#~ msgstr "Limite de temps CPU dépassée"
#~ msgid "File size limit exceeded"
#~ msgstr "Limite de taille de fichier dépassée"
#~ msgid "Virtual timer expired"
#~ msgstr "Délai virtuel expiré"
#~ msgid "Profiling timer expired"
#~ msgstr "Délai de profilage expiré"
#~ msgid "Window size change"
#~ msgstr "Modification de dimension de fenêtre"
#~ msgid "I/O on asynchronous file descriptor is possible"
#~ msgstr "E/S sur un descripteur de fichier asynchrone possible"
#~ msgid "Power failure"
#~ msgstr "Panne de courant"
#~ msgid "Bad system call"
#~ msgstr "Mauvais appel système"
#~ msgid "Information request"
#~ msgstr "Demande d'information"
#~ msgid "Stack fault"
#~ msgstr "Faute de pile"
#~ msgid "Emulator trap"
#~ msgstr "Déroutement d'émulation"
#~ msgid "Abort (Alias for SIGABRT)"
#~ msgstr "Abandon (Alias pour SIGABRT)"
#~ msgid "Unused signal"
#~ msgstr "Signal inutilisé"
@@ -80652,18 +80803,6 @@ msgstr ""
#~ msgid "getcwd() failed with errno %d/%s"
#~ msgstr "getcwd() a échoué avec lerreur %d/%s"
#, c-format
#~ msgid "$%lc is not a valid variable in fish."
#~ msgstr "$%lc est un nom de variable invalide dans fish."
#, c-format
#~ msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
#~ msgstr "Les variables ne peuvent être placées entre crochets. Dans fish, veuillez utiliser {$%ls}."
#, c-format
#~ msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
#~ msgstr "Les variables ne peuvent être placées entre crochets. Dans fish, veuillez utiliser \"$%ls\"."
#~ msgid "Print each token on a separate line"
#~ msgstr "Afficher chaque lexème sur une ligne séparée"

349
po/pl.po
View File

@@ -14,6 +14,11 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: GlotPress/2.2.2\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
#, c-format
msgid " (%ls)\n"
msgstr ""
@@ -37,6 +42,10 @@ msgstr "$# nie jest obsługiwane. W fish używane jest 'count $argv'."
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr "$$ nie jest numerem identyfikacyjnym procesu. W fish używane jest $fish_pid."
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr "$%lc nie jest prawidłową zmienną w fish."
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr ""
@@ -61,6 +70,10 @@ msgstr ""
msgid "%.*ls: invalid conversion specification"
msgstr ""
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -117,6 +130,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -133,6 +150,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr ""
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr ""
@@ -146,11 +167,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -185,10 +206,6 @@ msgstr ""
msgid "%ls: %ls: unknown option\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -661,6 +678,18 @@ msgstr ""
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr ""
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls: oczekiwano wartości liczbowej"
@@ -677,6 +706,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr ""
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -689,6 +722,10 @@ msgstr ""
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -823,25 +860,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr ""
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr ""
msgid "Abort"
msgstr "Przerwij"
msgid "Abort (Alias for SIGABRT)"
msgstr ""
msgid "Address boundary error"
msgstr ""
msgid "Always"
msgstr "Zawsze"
@@ -852,15 +889,30 @@ msgstr ""
msgid "Argument is not a number: '%ls'"
msgstr ""
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr ""
msgid "Bad system call"
msgstr ""
msgid "Block of code to run conditionally"
msgstr ""
msgid "Broken pipe"
msgstr ""
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr ""
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "Nie możesz użyć trybu niewykonywalnego kiedy uruchomiona jest sesja interaktywna"
@@ -874,21 +926,39 @@ msgstr ""
msgid "Change working directory"
msgstr "Zmień katalog roboczy"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr ""
msgid "Child process status changed"
msgstr "Zmieniono status procesu potomnego"
msgid "Command\n"
msgstr "Komenda\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr ""
msgid "Command\n"
msgstr "Komenda\n"
msgid "Commandname was invalid"
msgstr ""
msgid "Conditionally run blocks of code"
msgstr ""
msgid "Continue previously stopped process"
msgstr "Kontynuuj wcześniej zatrzymany proces"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr ""
@@ -911,6 +981,9 @@ msgstr "Wylicz liczbę argumentów"
msgid "Create a block of code"
msgstr "Stwórz blok kodu"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Zdefiniuj nową funkcję"
@@ -948,6 +1021,9 @@ msgstr ""
msgid "Error while reading file %ls\n"
msgstr "Wystąpił błąd podczas odczytywania pliku %ls\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr ""
@@ -1011,6 +1087,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr ""
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr ""
@@ -1020,6 +1099,24 @@ msgstr ""
msgid "Failed to take control of the terminal"
msgstr ""
msgid "File size limit exceeded"
msgstr "Przekroczony limit rozmiaru pliku"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr ""
msgid "Forced quit"
msgstr "Przymusowe wyjście"
msgid "Forced stop"
msgstr "Wymuszono zatrzymanie"
msgid "Generate random number"
msgstr "Zwróć losową liczbę"
@@ -1047,6 +1144,9 @@ msgstr ""
msgid "History of commands executed by user"
msgstr "Historia komend wykonanych przez użytkownika"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr ""
@@ -1059,10 +1159,16 @@ msgstr "Katalog domowy dla %ls"
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr ""
msgid "I/O on asynchronous file descriptor is possible"
msgstr ""
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr ""
msgid "Illegal instruction"
msgstr "Niedozwolona instrukcja"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr ""
@@ -1071,6 +1177,12 @@ msgstr ""
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr ""
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr ""
@@ -1103,12 +1215,21 @@ msgstr ""
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Zadanie\tGrupa\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Kontrola zadania: %ls\n"
msgid "Job\tGroup\t"
msgstr "Zadanie\tGrupa\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "Wypisz lub usuń funkcje"
@@ -1133,6 +1254,9 @@ msgstr "Zmień wartości ciągów znaków"
msgid "Measure how long a command or block takes"
msgstr ""
msgid "Misaligned address error"
msgstr ""
msgid "Mismatched braces"
msgstr ""
@@ -1175,6 +1299,9 @@ msgstr ""
msgid "Not a number"
msgstr ""
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr ""
@@ -1197,6 +1324,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr ""
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Wykonaj komendę wielokrotnie"
@@ -1211,6 +1341,12 @@ msgstr ""
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr ""
msgid "Polite quit request"
msgstr ""
msgid "Power failure"
msgstr ""
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1230,12 +1366,42 @@ msgstr "Zwraca sformatowany tekst"
msgid "Process\n"
msgstr "Proces\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr ""
msgid "Quit request from job control (^C)"
msgstr ""
msgid "Quit request from job control with core dump (^\\)"
msgstr ""
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr ""
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr ""
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr ""
@@ -1265,9 +1431,15 @@ msgstr ""
msgid "Run command in current process"
msgstr "Uruchom komendę w obecnym procesie"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Szukaj określonego ciągu znaków w liście"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1282,6 +1454,9 @@ msgstr "Przenieś zadanie w tło"
msgid "Send job to foreground"
msgstr ""
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr ""
@@ -1294,6 +1469,9 @@ msgstr ""
msgid "Skip over remaining innermost loop"
msgstr ""
msgid "Stack fault"
msgstr ""
msgid "Standard input"
msgstr "Standardowe wejście"
@@ -1311,6 +1489,15 @@ msgstr "Stan\tKomenda\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr ""
msgid "Stop from terminal output"
msgstr ""
msgid "Stop request from job control (^Z)"
msgstr ""
msgid "Stop the currently evaluated function"
msgstr "Zatrzymaj obecnie używaną funkcję"
@@ -1320,6 +1507,18 @@ msgstr ""
msgid "Temporarily block delivery of events"
msgstr ""
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Terminal zawieszony"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr ""
@@ -1337,6 +1536,9 @@ msgstr ""
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr ""
@@ -1351,6 +1553,9 @@ msgstr ""
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "Funkcja '%ls' wywołuje natychmiastowo siebie. Może to skutkować nieskończoną pętlą."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr ""
@@ -1360,6 +1565,9 @@ msgstr "To jest powłoka logowania\n"
msgid "This is not a login shell\n"
msgstr "To nie jest powłoka logowania\n"
msgid "Timer expired"
msgstr ""
msgid "Too few arguments"
msgstr ""
@@ -1372,9 +1580,15 @@ msgstr ""
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr ""
msgid "Translate a string"
msgstr ""
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1489,25 +1703,58 @@ msgstr ""
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr "Nieobsługiwane użycie '='. W fish używane jest 'set %ls %ls'."
msgid "Urgent socket condition"
msgstr ""
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr ""
msgid "User defined signal 1"
msgstr "Sygnał zdefiniowany przez użytkownika 1"
msgid "User defined signal 2"
msgstr "Sygnał zdefiniowany przez użytkownika 2"
#, c-format
msgid "Variable: %ls"
msgstr "Zmienna: %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr "Zmienne nie mogą znajdować się w nawiasach. W fish używane jest \"$%ls\"."
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr "Zmienne nie mogą znajdować się w nawiasach. W fish używane jest {$%ls}."
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr ""
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Zmiana rozmiaru okna"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgid "array indices start at 1, not 0."
msgstr ""
msgid "array indices start at 1, not 0."
msgid "autoloading"
msgstr ""
#, c-format
@@ -1568,9 +1815,6 @@ msgstr ""
msgid "file"
msgstr ""
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -78981,57 +79225,12 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Nie można przywrócić powłoki na pierwszy plan"
#~ msgid "Terminal hung up"
#~ msgstr "Terminal zawieszony"
#~ msgid "Illegal instruction"
#~ msgstr "Niedozwolona instrukcja"
#~ msgid "Abort"
#~ msgstr "Przerwij"
#~ msgid "Forced quit"
#~ msgstr "Przymusowe wyjście"
#~ msgid "User defined signal 1"
#~ msgstr "Sygnał zdefiniowany przez użytkownika 1"
#~ msgid "User defined signal 2"
#~ msgstr "Sygnał zdefiniowany przez użytkownika 2"
#~ msgid "Child process status changed"
#~ msgstr "Zmieniono status procesu potomnego"
#~ msgid "Continue previously stopped process"
#~ msgstr "Kontynuuj wcześniej zatrzymany proces"
#~ msgid "Forced stop"
#~ msgstr "Wymuszono zatrzymanie"
#~ msgid "File size limit exceeded"
#~ msgstr "Przekroczony limit rozmiaru pliku"
#~ msgid "Window size change"
#~ msgstr "Zmiana rozmiaru okna"
#~ msgid "Information request"
#~ msgstr "Żądanie informacji"
#~ msgid "Unused signal"
#~ msgstr "Niewykorzystywany sygnał"
#, c-format
#~ msgid "$%lc is not a valid variable in fish."
#~ msgstr "$%lc nie jest prawidłową zmienną w fish."
#, c-format
#~ msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
#~ msgstr "Zmienne nie mogą znajdować się w nawiasach. W fish używane jest {$%ls}."
#, c-format
#~ msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
#~ msgstr "Zmienne nie mogą znajdować się w nawiasach. W fish używane jest \"$%ls\"."
#, c-format
#~ msgid "Send job %d '%ls' to background\n"
#~ msgstr "Wyślij zadanie %d '%ls' w tło\n"

View File

@@ -19,6 +19,11 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.4\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
#, c-format
msgid " (%ls)\n"
msgstr ""
@@ -42,6 +47,10 @@ msgstr ""
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr ""
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr ""
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr ""
@@ -66,6 +75,10 @@ msgstr ""
msgid "%.*ls: invalid conversion specification"
msgstr "%.*ls: especificação de conversão inválida"
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -122,6 +135,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -138,6 +155,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr ""
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr ""
@@ -151,11 +172,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -190,10 +211,6 @@ msgstr ""
msgid "%ls: %ls: unknown option\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -666,6 +683,18 @@ msgstr ""
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr ""
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls: esperava valor numérico"
@@ -682,6 +711,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr ""
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -694,6 +727,10 @@ msgstr ""
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -828,25 +865,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr ""
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr ""
msgid "Abort"
msgstr "Abortado"
msgid "Abort (Alias for SIGABRT)"
msgstr "Abortado (Outro nome para SIGABRT)"
msgid "Address boundary error"
msgstr "Erro de fronteira de endereço (Falha de segmentação)"
msgid "Always"
msgstr "Sempre"
@@ -857,15 +894,30 @@ msgstr "Ocorreu um erro ao preparar pipe"
msgid "Argument is not a number: '%ls'"
msgstr ""
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr ""
msgid "Bad system call"
msgstr "Chamada de sistema ruim"
msgid "Block of code to run conditionally"
msgstr ""
msgid "Broken pipe"
msgstr "Pipe sem saída"
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr "Limite de tempo da CPU excedido"
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "Não pode usar o modo não-executar durante uma sessão interativa"
@@ -879,21 +931,39 @@ msgstr "Não pode usar entrada padrão (fd 0) como saída de pipe"
msgid "Change working directory"
msgstr "Muda diretório de trabalho"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr "Verifica se uma coisa é uma coisa"
msgid "Command not executable"
msgstr ""
msgid "Child process status changed"
msgstr "Mudança de estado de processo filho"
msgid "Command\n"
msgstr "Comando\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr ""
msgid "Commandname was invalid"
msgstr ""
msgid "Conditionally run blocks of code"
msgstr ""
msgid "Continue previously stopped process"
msgstr "Continuar processo previamente parado"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr ""
@@ -916,6 +986,9 @@ msgstr "Conta o número de argumentos"
msgid "Create a block of code"
msgstr "Cria um bloco de código"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Define uma nova função"
@@ -953,6 +1026,9 @@ msgstr ""
msgid "Error while reading file %ls\n"
msgstr "Erro ao ler arquivo %ls\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr "Avaliar a string como um comando"
@@ -1016,6 +1092,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr ""
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr ""
@@ -1025,6 +1104,24 @@ msgstr ""
msgid "Failed to take control of the terminal"
msgstr ""
msgid "File size limit exceeded"
msgstr "Limite de tamanho de arquivo excedido"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr "Exceção de ponto flutuante"
msgid "Forced quit"
msgstr "Saída forçada"
msgid "Forced stop"
msgstr "Parada forçada"
msgid "Generate random number"
msgstr "Gera um número aleatório"
@@ -1052,6 +1149,9 @@ msgstr ""
msgid "History of commands executed by user"
msgstr "Histórico de funções executadas pelo usuário"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr ""
@@ -1064,10 +1164,16 @@ msgstr "Diretório de usuário para %ls"
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr "Pareço um processo órfão, então estou saindo educadamente. Meu pid é %d."
msgid "I/O on asynchronous file descriptor is possible"
msgstr "E/S em descritor de arquivo assíncrono possível"
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr "Descritor de arquivo ilegal na redireção “%ls”"
msgid "Illegal instruction"
msgstr "Instrução ilegal"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr ""
@@ -1076,6 +1182,12 @@ msgstr ""
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr ""
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr ""
@@ -1108,12 +1220,21 @@ msgstr ""
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Tarefa\tGrupo\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Controle de tarefa: %ls\n"
msgid "Job\tGroup\t"
msgstr "Tarefa\tGrupo\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "Lista ou remove funções"
@@ -1138,6 +1259,9 @@ msgstr "Manipula strings"
msgid "Measure how long a command or block takes"
msgstr "Mede quanto tempo demora um comando ou bloco"
msgid "Misaligned address error"
msgstr "Erro de endereço de barramento"
msgid "Mismatched braces"
msgstr ""
@@ -1180,6 +1304,9 @@ msgstr ""
msgid "Not a number"
msgstr ""
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr ""
@@ -1202,6 +1329,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr "Parsear opções em um script fish"
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Executa um comando várias vezes"
@@ -1216,6 +1346,12 @@ msgstr ""
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr ""
msgid "Polite quit request"
msgstr "Requisição educada de término"
msgid "Power failure"
msgstr "Falha de energia"
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1235,12 +1371,42 @@ msgstr "Imprime texto formatado"
msgid "Process\n"
msgstr "Processo\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr "Temporizador de análise expirado"
msgid "Quit request from job control (^C)"
msgstr "Interrupção de teclado (^C)"
msgid "Quit request from job control with core dump (^\\)"
msgstr "Interrupção com imagem do núcleo gravada (^\\)"
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "Lê uma linha de entrada e a coloca em variáveis"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr "Remove a tarefa da lista de tarefas"
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr "Requeriu redireção para “%ls”, que não é um descritor de arquivo válido"
@@ -1270,9 +1436,15 @@ msgstr ""
msgid "Run command in current process"
msgstr "Executa um comando como o processo atual"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Procura uma string especificada em uma lista"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1287,6 +1459,9 @@ msgstr "Envia tarefa para segundo plano"
msgid "Send job to foreground"
msgstr "Envia tarefa para primeiro plano"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "Obtém ou altera o buffer da linha de comando"
@@ -1299,6 +1474,9 @@ msgstr ""
msgid "Skip over remaining innermost loop"
msgstr ""
msgid "Stack fault"
msgstr "Falha de pilha"
msgid "Standard input"
msgstr "Entrada padrão"
@@ -1316,6 +1494,15 @@ msgstr "Estado\tComando\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr "Parada para entrada de terminal"
msgid "Stop from terminal output"
msgstr "Parada para saída de terminal"
msgid "Stop request from job control (^Z)"
msgstr "Parada requisitada por teclado (^Z)"
msgid "Stop the currently evaluated function"
msgstr "Pára a função em execução"
@@ -1325,6 +1512,18 @@ msgstr "Pára o laço mais interno"
msgid "Temporarily block delivery of events"
msgstr "Bloqueia temporariamente a entrega de eventos"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Término de comunicação com terminal"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr "Testa uma condição"
@@ -1342,6 +1541,9 @@ msgstr ""
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr ""
@@ -1356,6 +1558,9 @@ msgstr "O comand expandido estava vazio."
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "A função “%ls” se chama imediatamente, o que causaria um loop infinito."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr ""
@@ -1365,6 +1570,9 @@ msgstr "Este é um shell de login\n"
msgid "This is not a login shell\n"
msgstr "Este não é um shell de login\n"
msgid "Timer expired"
msgstr "Temporizador expirado"
msgid "Too few arguments"
msgstr ""
@@ -1377,9 +1585,15 @@ msgstr ""
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr "Atingiu ponto de parada"
msgid "Translate a string"
msgstr "Traduz uma string"
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1494,25 +1708,58 @@ msgstr ""
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr ""
msgid "Urgent socket condition"
msgstr "Condição urgente de socket"
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr ""
msgid "User defined signal 1"
msgstr "Sinal definido pelo usuário 1"
msgid "User defined signal 2"
msgstr "Sinal definido pelo usuário 2"
#, c-format
msgid "Variable: %ls"
msgstr "Variável: %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr ""
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr ""
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr "Espera até os processos no background completarem"
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Mudança de tamanho de janela"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgid "array indices start at 1, not 0."
msgstr ""
msgid "array indices start at 1, not 0."
msgid "autoloading"
msgstr ""
#, c-format
@@ -1573,9 +1820,6 @@ msgstr ""
msgid "file"
msgstr "arquivo"
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -79034,108 +79278,15 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Não foi possível retornar shell ao primeiro plano"
#~ msgid "Terminal hung up"
#~ msgstr "Término de comunicação com terminal"
#~ msgid "Quit request from job control (^C)"
#~ msgstr "Interrupção de teclado (^C)"
#~ msgid "Quit request from job control with core dump (^\\)"
#~ msgstr "Interrupção com imagem do núcleo gravada (^\\)"
#~ msgid "Illegal instruction"
#~ msgstr "Instrução ilegal"
#~ msgid "Trace or breakpoint trap"
#~ msgstr "Atingiu ponto de parada"
#~ msgid "Abort"
#~ msgstr "Abortado"
#~ msgid "Misaligned address error"
#~ msgstr "Erro de endereço de barramento"
#~ msgid "Floating point exception"
#~ msgstr "Exceção de ponto flutuante"
#~ msgid "Forced quit"
#~ msgstr "Saída forçada"
#~ msgid "User defined signal 1"
#~ msgstr "Sinal definido pelo usuário 1"
#~ msgid "User defined signal 2"
#~ msgstr "Sinal definido pelo usuário 2"
#~ msgid "Address boundary error"
#~ msgstr "Erro de fronteira de endereço (Falha de segmentação)"
#~ msgid "Broken pipe"
#~ msgstr "Pipe sem saída"
#~ msgid "Timer expired"
#~ msgstr "Temporizador expirado"
#~ msgid "Polite quit request"
#~ msgstr "Requisição educada de término"
#~ msgid "Child process status changed"
#~ msgstr "Mudança de estado de processo filho"
#~ msgid "Continue previously stopped process"
#~ msgstr "Continuar processo previamente parado"
#~ msgid "Forced stop"
#~ msgstr "Parada forçada"
#~ msgid "Stop request from job control (^Z)"
#~ msgstr "Parada requisitada por teclado (^Z)"
#~ msgid "Stop from terminal input"
#~ msgstr "Parada para entrada de terminal"
#~ msgid "Stop from terminal output"
#~ msgstr "Parada para saída de terminal"
#~ msgid "Urgent socket condition"
#~ msgstr "Condição urgente de socket"
#~ msgid "CPU time limit exceeded"
#~ msgstr "Limite de tempo da CPU excedido"
#~ msgid "File size limit exceeded"
#~ msgstr "Limite de tamanho de arquivo excedido"
#~ msgid "Virtual timer expired"
#~ msgstr "Temporizador virtual expirado"
#~ msgid "Profiling timer expired"
#~ msgstr "Temporizador de análise expirado"
#~ msgid "Window size change"
#~ msgstr "Mudança de tamanho de janela"
#~ msgid "I/O on asynchronous file descriptor is possible"
#~ msgstr "E/S em descritor de arquivo assíncrono possível"
#~ msgid "Power failure"
#~ msgstr "Falha de energia"
#~ msgid "Bad system call"
#~ msgstr "Chamada de sistema ruim"
#~ msgid "Information request"
#~ msgstr "Requisição de informação"
#~ msgid "Stack fault"
#~ msgstr "Falha de pilha"
#~ msgid "Emulator trap"
#~ msgstr "Armadilha de emulador"
#~ msgid "Abort (Alias for SIGABRT)"
#~ msgstr "Abortado (Outro nome para SIGABRT)"
#~ msgid "Unused signal"
#~ msgstr "Sinal não utilizado"

397
po/sv.po
View File

@@ -15,6 +15,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
#, c-format
msgid " (%ls)\n"
msgstr ""
@@ -38,6 +43,10 @@ msgstr ""
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr ""
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr ""
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr ""
@@ -62,6 +71,10 @@ msgstr ""
msgid "%.*ls: invalid conversion specification"
msgstr ""
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr ""
@@ -118,6 +131,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr ""
@@ -134,6 +151,10 @@ msgstr ""
msgid "%ls: %ls: contains a syntax error\n"
msgstr ""
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr ""
@@ -147,11 +168,11 @@ msgid "%ls: %ls: invalid integer\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr ""
#, c-format
@@ -186,10 +207,6 @@ msgstr ""
msgid "%ls: %ls: unknown option\n"
msgstr ""
#, c-format
msgid "%ls: %ls\n"
msgstr ""
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr ""
@@ -662,6 +679,18 @@ msgstr ""
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr ""
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr ""
@@ -678,6 +707,10 @@ msgstr ""
msgid "%ls: invalid option combination\n"
msgstr ""
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -690,6 +723,10 @@ msgstr ""
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -824,25 +861,25 @@ msgstr ""
msgid "--tokens options are mutually exclusive"
msgstr ""
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr ""
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr ""
msgid "Abort"
msgstr "Avbrott"
msgid "Abort (Alias for SIGABRT)"
msgstr "Avbrott (Alias för SIGABRT)"
msgid "Address boundary error"
msgstr "Minnesadress korsar segmentgräns"
msgid "Always"
msgstr "Alltid"
@@ -853,15 +890,30 @@ msgstr "Ett fel inträffade under skapandet av ett rör"
msgid "Argument is not a number: '%ls'"
msgstr ""
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr ""
msgid "Bad system call"
msgstr "Felaktigt systemanrop"
msgid "Block of code to run conditionally"
msgstr ""
msgid "Broken pipe"
msgstr "Avbrutet rör"
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr "Slut på processortid"
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "no-execute läget kan inte användas i en interaktiv session"
@@ -875,21 +927,39 @@ msgstr ""
msgid "Change working directory"
msgstr "Ändra arbetskatalog"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr ""
msgid "Child process status changed"
msgstr "Barnprocess fick ändrad status"
msgid "Command\n"
msgstr "Kommando\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr ""
msgid "Command\n"
msgstr "Kommando\n"
msgid "Commandname was invalid"
msgstr ""
msgid "Conditionally run blocks of code"
msgstr ""
msgid "Continue previously stopped process"
msgstr "Fortsätt tidigare stannad process"
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr ""
@@ -912,6 +982,9 @@ msgstr "Räkna antalet argument"
msgid "Create a block of code"
msgstr "Skapa ett kodblock"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "Definera en ny funktion"
@@ -949,6 +1022,9 @@ msgstr ""
msgid "Error while reading file %ls\n"
msgstr "Ett fel uppstod medan filen '%ls' lästes\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr ""
@@ -1012,6 +1088,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr ""
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr ""
@@ -1021,6 +1100,24 @@ msgstr ""
msgid "Failed to take control of the terminal"
msgstr ""
msgid "File size limit exceeded"
msgstr "Maximal filstorlek överskriden"
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr "Flyttalsundantag"
msgid "Forced quit"
msgstr "Tvingad avslutning"
msgid "Forced stop"
msgstr "Tvingad att stoppa"
msgid "Generate random number"
msgstr "Generera ett slumptal"
@@ -1048,6 +1145,9 @@ msgstr ""
msgid "History of commands executed by user"
msgstr "Historik över användarens körda kommandon"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr ""
@@ -1060,10 +1160,16 @@ msgstr ""
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr ""
msgid "I/O on asynchronous file descriptor is possible"
msgstr "Läsning/skrivning på asynkron filidentifierare möjligt"
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr ""
msgid "Illegal instruction"
msgstr "Ogiltig instruktion"
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr ""
@@ -1072,6 +1178,12 @@ msgstr ""
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr ""
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr ""
@@ -1104,12 +1216,21 @@ msgstr ""
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "Jobb\tGrupp\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "Jobkontroll: %ls\n"
msgid "Job\tGroup\t"
msgstr "Jobb\tGrupp\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "Visa eller ta bort funktioner"
@@ -1134,6 +1255,9 @@ msgstr ""
msgid "Measure how long a command or block takes"
msgstr ""
msgid "Misaligned address error"
msgstr "Bussfel (Ogiltigt justerad minnesadress)"
msgid "Mismatched braces"
msgstr ""
@@ -1176,6 +1300,9 @@ msgstr ""
msgid "Not a number"
msgstr ""
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr ""
@@ -1198,6 +1325,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr ""
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "Kör ett kommando upprepade gånger"
@@ -1212,6 +1342,12 @@ msgstr ""
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr ""
msgid "Polite quit request"
msgstr "Artig avslutning"
msgid "Power failure"
msgstr "Strömavbrott"
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1231,12 +1367,42 @@ msgstr ""
msgid "Process\n"
msgstr ""
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr "Profileringstimer utlöst"
msgid "Quit request from job control (^C)"
msgstr "Avslutning via jobbkontroll (^C)"
msgid "Quit request from job control with core dump (^\\)"
msgstr "Avslutning via jobbkontroll med minnesdump (^\\)"
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "Läs in en rad till variabler"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr ""
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr ""
@@ -1266,9 +1432,15 @@ msgstr ""
msgid "Run command in current process"
msgstr "Kör ett kommando i den nuvarande processen"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "Sök efter en angiven sträng i en lista"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr ""
@@ -1283,6 +1455,9 @@ msgstr "Skicka jobb till bakgrunden"
msgid "Send job to foreground"
msgstr "Skick jobb till förgrunden"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "Ändra eller visa kommandoraden"
@@ -1295,6 +1470,9 @@ msgstr ""
msgid "Skip over remaining innermost loop"
msgstr ""
msgid "Stack fault"
msgstr "Stackfel"
msgid "Standard input"
msgstr "Standard in"
@@ -1312,6 +1490,15 @@ msgstr "Status\tKommando\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr "Stoppad från terminalläsning"
msgid "Stop from terminal output"
msgstr "Stoppad från terminalskrivning"
msgid "Stop request from job control (^Z)"
msgstr "Stoppad genom jobbkontroll (^Z)"
msgid "Stop the currently evaluated function"
msgstr "Avbryt den nuvarande funktionen"
@@ -1321,6 +1508,18 @@ msgstr "Avbryt den innersta loopen"
msgid "Temporarily block delivery of events"
msgstr "Blockera tillfälligt leverans av händelser"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr "Terminalen bröt uppkopplingen"
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr ""
@@ -1338,6 +1537,9 @@ msgstr ""
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr ""
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr ""
@@ -1352,6 +1554,9 @@ msgstr ""
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr ""
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr ""
@@ -1361,6 +1566,9 @@ msgstr "Detta är ett login-skal\n"
msgid "This is not a login shell\n"
msgstr "Detta är inte ett login-skal\n"
msgid "Timer expired"
msgstr "Timer utlöstes"
msgid "Too few arguments"
msgstr ""
@@ -1373,9 +1581,15 @@ msgstr ""
msgid "Too much data emitted by command substitution so it was discarded"
msgstr ""
msgid "Trace or breakpoint trap"
msgstr "Spårnings eller brytpunktsfälla utlöstes"
msgid "Translate a string"
msgstr ""
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr ""
@@ -1490,25 +1704,58 @@ msgstr ""
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr ""
msgid "Urgent socket condition"
msgstr "Viktig socket-situation"
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr ""
msgid "User defined signal 1"
msgstr "Användardefinerad signal 1"
msgid "User defined signal 2"
msgstr "Användardefinerad signal 2"
#, c-format
msgid "Variable: %ls"
msgstr "Variabel: %ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr ""
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr ""
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr ""
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr "Terminalfönstret ändrade storlek"
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr ""
msgid ""
"\n"
" PID Command\n"
msgid "array indices start at 1, not 0."
msgstr ""
msgid "array indices start at 1, not 0."
msgid "autoloading"
msgstr ""
#, c-format
@@ -1569,9 +1816,6 @@ msgstr ""
msgid "file"
msgstr ""
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"
@@ -79025,108 +79269,15 @@ msgstr ""
#~ msgid "Could not return shell to foreground"
#~ msgstr "Kunde inte återställa skalet till förgrunden"
#~ msgid "Terminal hung up"
#~ msgstr "Terminalen bröt uppkopplingen"
#~ msgid "Quit request from job control (^C)"
#~ msgstr "Avslutning via jobbkontroll (^C)"
#~ msgid "Quit request from job control with core dump (^\\)"
#~ msgstr "Avslutning via jobbkontroll med minnesdump (^\\)"
#~ msgid "Illegal instruction"
#~ msgstr "Ogiltig instruktion"
#~ msgid "Trace or breakpoint trap"
#~ msgstr "Spårnings eller brytpunktsfälla utlöstes"
#~ msgid "Abort"
#~ msgstr "Avbrott"
#~ msgid "Misaligned address error"
#~ msgstr "Bussfel (Ogiltigt justerad minnesadress)"
#~ msgid "Floating point exception"
#~ msgstr "Flyttalsundantag"
#~ msgid "Forced quit"
#~ msgstr "Tvingad avslutning"
#~ msgid "User defined signal 1"
#~ msgstr "Användardefinerad signal 1"
#~ msgid "User defined signal 2"
#~ msgstr "Användardefinerad signal 2"
#~ msgid "Address boundary error"
#~ msgstr "Minnesadress korsar segmentgräns"
#~ msgid "Broken pipe"
#~ msgstr "Avbrutet rör"
#~ msgid "Timer expired"
#~ msgstr "Timer utlöstes"
#~ msgid "Polite quit request"
#~ msgstr "Artig avslutning"
#~ msgid "Child process status changed"
#~ msgstr "Barnprocess fick ändrad status"
#~ msgid "Continue previously stopped process"
#~ msgstr "Fortsätt tidigare stannad process"
#~ msgid "Forced stop"
#~ msgstr "Tvingad att stoppa"
#~ msgid "Stop request from job control (^Z)"
#~ msgstr "Stoppad genom jobbkontroll (^Z)"
#~ msgid "Stop from terminal input"
#~ msgstr "Stoppad från terminalläsning"
#~ msgid "Stop from terminal output"
#~ msgstr "Stoppad från terminalskrivning"
#~ msgid "Urgent socket condition"
#~ msgstr "Viktig socket-situation"
#~ msgid "CPU time limit exceeded"
#~ msgstr "Slut på processortid"
#~ msgid "File size limit exceeded"
#~ msgstr "Maximal filstorlek överskriden"
#~ msgid "Virtual timer expired"
#~ msgstr "Virtuell timer utlöst"
#~ msgid "Profiling timer expired"
#~ msgstr "Profileringstimer utlöst"
#~ msgid "Window size change"
#~ msgstr "Terminalfönstret ändrade storlek"
#~ msgid "I/O on asynchronous file descriptor is possible"
#~ msgstr "Läsning/skrivning på asynkron filidentifierare möjligt"
#~ msgid "Power failure"
#~ msgstr "Strömavbrott"
#~ msgid "Bad system call"
#~ msgstr "Felaktigt systemanrop"
#~ msgid "Information request"
#~ msgstr "Informationsbegäran"
#~ msgid "Stack fault"
#~ msgstr "Stackfel"
#~ msgid "Emulator trap"
#~ msgstr "Emulatorfälla"
#~ msgid "Abort (Alias for SIGABRT)"
#~ msgstr "Avbrott (Alias för SIGABRT)"
#~ msgid "Unused signal"
#~ msgstr "Oanvänd signal"

View File

@@ -10,6 +10,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" 密码 命令\n"
#, c-format
msgid " (%ls)\n"
msgstr "(%ls)\n"
@@ -33,6 +40,10 @@ msgstr "$# 不支持 . 在fish中,请使用'count $argv'."
msgid "$$ is not the pid. In fish, please use $fish_pid."
msgstr "美元不是皮条客. 在fish中,请使用$fish_pid."
#, c-format
msgid "$%lc is not a valid variable in fish."
msgstr ""
#, c-format
msgid "$%ls: originally inherited as |%ls|\n"
msgstr "$%ls: 原为 |%ls| 继承 \n"
@@ -57,6 +68,10 @@ msgstr "$status 作为命令无效 . 见`help conditions`"
msgid "%.*ls: invalid conversion specification"
msgstr "%.*ls: 无效的转换形式"
#, c-format
msgid "%ls"
msgstr ""
#, c-format
msgid "%ls %ls: Abbreviation %ls already exists, cannot rename %ls\n"
msgstr "%ls %ls: 缩写 %ls 已经存在, 无法重命名 %ls\n"
@@ -113,6 +128,10 @@ msgstr ""
msgid "%ls: %*ls\n"
msgstr "%ls: %*ls\n"
#, c-format
msgid "%ls: %ls\n"
msgstr "%ls: %ls\n"
#, c-format
msgid "%ls: %ls %ls: options cannot be used together\n"
msgstr "%ls: %ls %ls: 选项无法一起使用\n"
@@ -129,6 +148,10 @@ msgstr "%ls: %ls: 无法将保留关键字作为函数名"
msgid "%ls: %ls: contains a syntax error\n"
msgstr "%ls:%ls: 包含语法错误\n"
#, c-format
msgid "%ls: %ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid base value\n"
msgstr "%ls:%ls: 无效的base值\n"
@@ -141,14 +164,14 @@ msgstr "%ls:%ls: 无效的函数名"
msgid "%ls: %ls: invalid integer\n"
msgstr "%ls:%ls: 无效整数\n"
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr "%ls: %ls:无效模式名. 参见`help identifiers`\n"
#, c-format
msgid "%ls: %ls: invalid mode\n"
msgstr ""
#, c-format
msgid "%ls: %ls: invalid mode name. See `help identifiers`\n"
msgstr "%ls: %ls:无效模式名. 参见`help identifiers`\n"
#, c-format
msgid "%ls: %ls: invalid process id"
msgstr "%ls:%ls: 无效进程 id"
@@ -181,10 +204,6 @@ msgstr "%ls: %ls: 意外的位置参数"
msgid "%ls: %ls: unknown option\n"
msgstr "%ls:%ls:未知选项\n"
#, c-format
msgid "%ls: %ls\n"
msgstr "%ls: %ls\n"
#, c-format
msgid "%ls: '%ls' is a broken symbolic link to '%ls'\n"
msgstr "%ls: '%ls' 是 '%ls' 损坏的符号链接\n"
@@ -657,6 +676,18 @@ msgstr "%ls: 排他性标志 '%ls' 无效\n"
msgid "%ls: exclusive flag string '%ls' is not valid\n"
msgstr "%ls: 排他性标志字符串 '%ls' 无效\n"
#, c-format
msgid "%ls: expected %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected <= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected >= %d arguments; got %d\n"
msgstr ""
#, c-format
msgid "%ls: expected a numeric value"
msgstr "%ls: 预期数字类型值"
@@ -673,6 +704,10 @@ msgstr "%ls: 给定的 %d 索引但 %d 值\n"
msgid "%ls: invalid option combination\n"
msgstr "%ls: 选项组合无效\n"
#, c-format
msgid "%ls: invalid option combination, %ls\n"
msgstr ""
#, c-format
msgid "%ls: invalid underline style: %ls\n"
msgstr ""
@@ -685,6 +720,10 @@ msgstr "%ls: 任务 %d ('%ls') 已停止并指示要继续 .\n"
msgid "%ls: line/column index starts at 1"
msgstr ""
#, c-format
msgid "%ls: missing argument\n"
msgstr ""
#, c-format
msgid "%ls: missing filename argument or input redirection\n"
msgstr ""
@@ -819,25 +858,25 @@ msgstr "--query和 --names 相互排斥"
msgid "--tokens options are mutually exclusive"
msgstr "--tokens 选项是相互排斥的"
msgid ".local/bin/"
msgstr ""
msgid ".local/share/"
msgstr ""
msgid ".local/share/doc/fish"
msgstr ""
msgid "/etc/"
msgstr ""
msgid "A second attempt to exit will terminate them.\n"
msgstr "第二次尝试退出将终止它们.\n"
msgid "Abbreviation expansion"
msgstr ""
#, c-format
msgid "Abbreviation: %ls"
msgstr "缩写:%ls"
msgid "Abort"
msgstr ""
msgid "Abort (Alias for SIGABRT)"
msgstr ""
msgid "Address boundary error"
msgstr ""
msgid "Always"
msgstr "总是"
@@ -848,15 +887,30 @@ msgstr "设置管道时出错"
msgid "Argument is not a number: '%ls'"
msgstr "参数不是数字: '%ls'"
msgid "Background IO thread events"
msgstr ""
msgid "Backgrounded commands can not be used as conditionals"
msgstr "后台命令不能用作条件"
msgid "Bad system call"
msgstr ""
msgid "Block of code to run conditionally"
msgstr "有条件运行的代码块"
msgid "Broken pipe"
msgstr ""
msgid "CPU\t"
msgstr "CPU\t"
msgid "CPU time limit exceeded"
msgstr ""
msgid "Calls to fork()"
msgstr ""
msgid "Can not use the no-execute mode when running an interactive session"
msgstr "运行交互式会话时不能使用 no-execute模式"
@@ -870,21 +924,39 @@ msgstr "无法使用 stdin (fd 0) 作为管道输出"
msgid "Change working directory"
msgstr "改变工作目录"
msgid "Changes to exported variables"
msgstr ""
msgid "Changes to locale variables"
msgstr ""
msgid "Character encoding issues"
msgstr ""
msgid "Check if a thing is a thing"
msgstr "检查某事是否是其自身"
msgid "Command not executable"
msgstr "命令不是可执行的"
msgid "Child process status changed"
msgstr ""
msgid "Command\n"
msgstr "命令\n"
msgid "Command history events"
msgstr ""
msgid "Command not executable"
msgstr "命令不是可执行的"
msgid "Commandname was invalid"
msgstr "命令名称无效"
msgid "Conditionally run blocks of code"
msgstr "有条件运行代码块"
msgid "Continue previously stopped process"
msgstr ""
msgid "Could not determine current working directory. Is your locale set correctly?"
msgstr "无法确定当前工作目录 . 你的本地设置正确吗?"
@@ -907,6 +979,9 @@ msgstr "计算参数个数"
msgid "Create a block of code"
msgstr "创建代码区块"
msgid "Debugging aid (on by default)"
msgstr ""
msgid "Define a new function"
msgstr "定义一个新函数"
@@ -944,6 +1019,9 @@ msgstr "重命名历史文件时出错:%s"
msgid "Error while reading file %ls\n"
msgstr "读取文件 %ls 时出错\n"
msgid "Errors reported by exec (on by default)"
msgstr ""
msgid "Evaluate a string as a statement"
msgstr "将此字符串视为一条程序语句进行执行"
@@ -1007,6 +1085,9 @@ msgstr ""
msgid "Expression is bogus"
msgstr "表达式存在问题"
msgid "FD monitor events"
msgstr ""
msgid "Failed to assign shell to its own process group"
msgstr "无法将shell分配到它自己的进程组"
@@ -1016,6 +1097,24 @@ msgstr "设置启动终端模式失败 !"
msgid "Failed to take control of the terminal"
msgstr "控制终端失败"
msgid "File size limit exceeded"
msgstr ""
msgid "Finding and reading configuration"
msgstr ""
msgid "Firing events"
msgstr ""
msgid "Floating point exception"
msgstr ""
msgid "Forced quit"
msgstr ""
msgid "Forced stop"
msgstr ""
msgid "Generate random number"
msgstr "生成随机数"
@@ -1043,6 +1142,9 @@ msgstr "提示: 起始'0'没有跟'x' 表示八进制数字"
msgid "History of commands executed by user"
msgstr "用户执行的历史命令"
msgid "History performance measurements"
msgstr ""
#, c-format
msgid "History session ID '%ls' is not a valid variable name. Falling back to `%ls`."
msgstr "历史会话 ID '%ls' 不是有效的可变名称 . 切换回`%ls`."
@@ -1055,10 +1157,16 @@ msgstr "%ls 的 Home"
msgid "I appear to be an orphaned process, so I am quitting politely. My pid is %d."
msgstr "检测到自身为孤立进程,优雅退出。进程 pid 为 %d."
msgid "I/O on asynchronous file descriptor is possible"
msgstr ""
#, c-format
msgid "Illegal file descriptor in redirection '%ls'"
msgstr "重定向 '%ls' 中的非法文件描述符 '"
msgid "Illegal instruction"
msgstr ""
#, c-format
msgid "Incomplete escape sequence '%ls'"
msgstr "不完整的转义序列 '%ls'"
@@ -1067,6 +1175,12 @@ msgstr "不完整的转义序列 '%ls'"
msgid "Integer %lld in '%ls' followed by non-digit"
msgstr "整数 %lld 在 '%ls' 中,后面跟随着非数字"
msgid "Internal (non-forked) process events"
msgstr ""
msgid "Internal details of the topic monitor"
msgstr ""
msgid "Invalid arguments"
msgstr "无效的参数"
@@ -1099,12 +1213,21 @@ msgstr "无效的token '%ls'"
msgid "Items %lu to %lu of %lu"
msgstr ""
msgid "Job\tGroup\t"
msgstr "任务\t组\t"
#, c-format
msgid "Job control: %ls\n"
msgstr "任务控制:%ls\n"
msgid "Job\tGroup\t"
msgstr "任务\t组\t"
msgid "Jobs being executed"
msgstr ""
msgid "Jobs changing status"
msgstr ""
msgid "Jobs getting started or continued"
msgstr ""
msgid "List or remove functions"
msgstr "列出或移除函数"
@@ -1129,6 +1252,9 @@ msgstr "操纵字符串"
msgid "Measure how long a command or block takes"
msgstr "测量命令或块需要多长时间"
msgid "Misaligned address error"
msgstr ""
msgid "Mismatched braces"
msgstr "牙套不匹配"
@@ -1171,6 +1297,9 @@ msgstr "不是一个函数"
msgid "Not a number"
msgstr "没有号码"
msgid "Notifications about universal variable changes"
msgstr ""
msgid "Number is infinite"
msgstr "数字是无限的"
@@ -1193,6 +1322,9 @@ msgstr ""
msgid "Parse options in fish script"
msgstr "分析fish文脚本中的选项"
msgid "Parsing fish AST"
msgstr ""
msgid "Perform a command multiple times"
msgstr "多次执行一条命令"
@@ -1207,6 +1339,12 @@ msgstr "请将 $ls 设置为您有写入权限的目录 ."
msgid "Please set the %ls or HOME environment variable before starting fish."
msgstr "请在开始钓fish前设置 %ls 或 home 环境变量 ."
msgid "Polite quit request"
msgstr ""
msgid "Power failure"
msgstr ""
#, c-format
msgid "Press ctrl-%c again to exit\n"
msgstr ""
@@ -1226,12 +1364,42 @@ msgstr "打印格式化文本"
msgid "Process\n"
msgstr "进程\n"
msgid "Process groups"
msgstr ""
msgid "Profiling timer expired"
msgstr ""
msgid "Quit request from job control (^C)"
msgstr ""
msgid "Quit request from job control with core dump (^\\)"
msgstr ""
msgid "Reacting to variables"
msgstr ""
msgid "Read a line of input into variables"
msgstr "将输入的一行读入到变量中"
msgid "Reading/Writing the history file"
msgstr ""
msgid "Reaping external (forked) processes"
msgstr ""
msgid "Reaping internal (non-forked) processes"
msgstr ""
msgid "Refcell dynamic borrowing"
msgstr ""
msgid "Remove job from job list"
msgstr "从工作列表中删除任务"
msgid "Rendering the command line"
msgstr ""
#, c-format
msgid "Requested redirection to '%ls', which is not a valid file descriptor"
msgstr "请求重定向到 '%ls' , 这不是一个有效的文件描述符"
@@ -1261,9 +1429,15 @@ msgstr "如果上次命令成功运行命令"
msgid "Run command in current process"
msgstr "在当前进程下执行命令"
msgid "Screen repaints"
msgstr ""
msgid "Search for a specified string in a list"
msgstr "在指定列表中搜索一个特定的字符串"
msgid "Searching/using paths"
msgstr ""
#, c-format
msgid "Send job %d (%ls) to foreground\n"
msgstr "将任务 %d (%ls) 发送给前台\n"
@@ -1278,6 +1452,9 @@ msgstr "将任务置于后台"
msgid "Send job to foreground"
msgstr "将任务带回到前台"
msgid "Serious unexpected errors (on by default)"
msgstr ""
msgid "Set or get the commandline"
msgstr "设置或取得命令行"
@@ -1290,6 +1467,9 @@ msgstr "显示绝对路径 sans 符号链接"
msgid "Skip over remaining innermost loop"
msgstr "跳过剩下的最内环"
msgid "Stack fault"
msgstr ""
msgid "Standard input"
msgstr "标准输入"
@@ -1307,6 +1487,15 @@ msgstr "状态\t命令\n"
msgid "Stdin must be attached to a tty."
msgstr ""
msgid "Stop from terminal input"
msgstr ""
msgid "Stop from terminal output"
msgstr ""
msgid "Stop request from job control (^Z)"
msgstr ""
msgid "Stop the currently evaluated function"
msgstr "停止当前求值的函数"
@@ -1316,6 +1505,18 @@ msgstr "停止最内层的循环"
msgid "Temporarily block delivery of events"
msgstr "Temporarily block delivery of events"
msgid "Terminal feature detection"
msgstr ""
msgid "Terminal hung up"
msgstr ""
msgid "Terminal ownership events"
msgstr ""
msgid "Terminal protocol negotiation"
msgstr ""
msgid "Test a condition"
msgstr "测试一个条件"
@@ -1333,6 +1534,9 @@ msgstr "'time'命令可能只在管道开始的时候"
msgid "The call stack limit has been exceeded. Do you have an accidental infinite loop?"
msgstr "呼叫堆栈限制已经超过 . 你有一个意外的无限循环?"
msgid "The completion system"
msgstr ""
#, c-format
msgid "The error was '%s'."
msgstr "错误为 '%s' ."
@@ -1347,6 +1551,9 @@ msgstr "扩展的命令为空 ."
msgid "The function '%ls' calls itself immediately, which would result in an infinite loop."
msgstr "函数 '%ls' 立即调用它, 会导致无限循环 ."
msgid "The interactive reader/input system"
msgstr ""
msgid "There are still jobs active:\n"
msgstr "仍然有活动的工作: \n"
@@ -1356,6 +1563,9 @@ msgstr "这是登录shell\n"
msgid "This is not a login shell\n"
msgstr "这不是登录shell\n"
msgid "Timer expired"
msgstr ""
msgid "Too few arguments"
msgstr "参数太少"
@@ -1368,9 +1578,15 @@ msgstr "太多参数"
msgid "Too much data emitted by command substitution so it was discarded"
msgstr "命令替换释放的数据过多, 因此被丢弃"
msgid "Trace or breakpoint trap"
msgstr ""
msgid "Translate a string"
msgstr "翻译字符串"
msgid "Trying to print invalid output"
msgstr ""
#, c-format
msgid "Unable to create temporary file '%ls': %s"
msgstr "无法创建临时文件 '%ls':%s"
@@ -1485,29 +1701,60 @@ msgstr "未匹配的通配符"
msgid "Unsupported use of '='. In fish, please use 'set %ls %ls'."
msgstr "不支持使用'='. 在fish类中,请使用'set %ls %ls'."
msgid "Urgent socket condition"
msgstr ""
msgid "Use 'disown PID' to remove jobs from the list without terminating them.\n"
msgstr "使用' 取消 PID ' 从列表中删除任务而不终止它们 .\n"
msgid "User defined signal 1"
msgstr ""
msgid "User defined signal 2"
msgstr ""
#, c-format
msgid "Variable: %ls"
msgstr "变量:%ls"
#, c-format
msgid "Variables cannot be bracketed. In fish, please use \"$%ls\"."
msgstr ""
#, c-format
msgid "Variables cannot be bracketed. In fish, please use {$%ls}."
msgstr ""
msgid "Virtual timefr expired"
msgstr ""
msgid "Wait for background processes completed"
msgstr "等待背景进程完成"
msgid "Warning about using test's zero- or one-argument modes (`test -d $foo`), which will be changed in future."
msgstr ""
msgid "Warnings (on by default)"
msgstr ""
msgid "Warnings about unusable paths for config/history (on by default)"
msgstr ""
msgid "Window size change"
msgstr ""
msgid "Writing/reading the universal variable store"
msgstr ""
msgid "[: the last argument must be ']'"
msgstr "[:最后的论点必须是 '"
msgid ""
"\n"
" PID Command\n"
msgstr ""
"\n"
" 密码 命令\n"
msgid "array indices start at 1, not 0."
msgstr "数组指数起始时间为 1,而不是 0."
msgid "autoloading"
msgstr ""
#, c-format
msgid "builtin %ls: %ls: %s\n"
msgstr "内建的 %ls: %ls: %s\n"
@@ -1566,9 +1813,6 @@ msgstr "导出"
msgid "file"
msgstr "文件"
msgid "fish/install"
msgstr ""
#, c-format
msgid ""
"fish: %ls: missing man page\n"

View File

@@ -3,7 +3,7 @@ name = "fish-printf"
edition.workspace = true
rust-version.workspace = true
version = "0.2.1"
repository = "https://github.com/fish-shell/fish-shell"
repository.workspace = true
description = "printf implementation, based on musl"
license = "MIT"

View File

@@ -1745,7 +1745,7 @@ macro_rules! parse_error_range {
$(,)?
) => {
let text = if $self.out_errors.is_some() && !$self.unwinding {
Some(wgettext_maybe_fmt!($fmt $(, $args)*))
Some(wgettext_fmt!($fmt $(, $args)*))
} else {
None
};

View File

@@ -319,7 +319,7 @@ fn fish_parse_opt(args: &mut [WString], opts: &mut FishCmdOpts) -> ControlFlow<i
// A little extra space.
name_width += 2;
for cat in cats.iter() {
let desc = wgettext_str(cat.description);
let desc = cat.description.localize();
// this is left-justified
printf!("%-*ls %ls\n", name_width, cat.name, desc);
}

View File

@@ -8,7 +8,10 @@
const VAR_NAME_PREFIX: &wstr = L!("_flag_");
const BUILTIN_ERR_INVALID_OPT_SPEC: &str = "%ls: Invalid option spec '%ls' at char '%lc'\n";
localizable_consts!(
BUILTIN_ERR_INVALID_OPT_SPEC
"%ls: Invalid option spec '%ls' at char '%lc'\n"
);
#[derive(PartialEq)]
enum ArgCardinality {

View File

@@ -354,7 +354,7 @@ pub fn function(
let props = function::FunctionProperties {
func_node,
named_arguments: opts.named_arguments,
description: opts.description,
description: LocalizableString::from_external_source(opts.description),
inherit_vars: inherit_vars.into_boxed_slice(),
shadow_scope: opts.shadow_scope,
is_autoload: RelaxedAtomicBool::new(false),

View File

@@ -243,11 +243,19 @@ pub fn functions(parser: &Parser, streams: &mut IoStreams, args: &mut [&wstr]) -
streams.out.appendln(shadow);
let desc = match props.as_ref() {
Some(p) if !p.description.is_empty() => escape_string(
&p.description,
EscapeStringStyle::Script(EscapeFlags::NO_PRINTABLES | EscapeFlags::NO_QUOTED),
),
Some(p) if p.description.is_empty() => L!("").to_owned(),
Some(p) => {
let localized_description = p.description.localize();
if localized_description.is_empty() {
L!("").to_owned()
} else {
escape_string(
localized_description,
EscapeStringStyle::Script(
EscapeFlags::NO_PRINTABLES | EscapeFlags::NO_QUOTED,
),
)
}
}
_ => L!("n/a").to_owned(),
};
streams.out.appendln(desc);

View File

@@ -20,9 +20,13 @@
wutil::wcstoi::wcstoi_partial,
};
const MISMATCHED_ARGS: &str = "%ls: given %d indexes but %d values\n";
const UVAR_ERR: &str =
"%ls: successfully set universal '%ls'; but a global by that name shadows it\n";
localizable_consts!(
MISMATCHED_ARGS
"%ls: given %d indexes but %d values\n"
UVAR_ERR
"%ls: successfully set universal '%ls'; but a global by that name shadows it\n"
);
#[derive(Debug, Clone)]
struct Options {

View File

@@ -22,56 +22,84 @@
pub const DEFAULT_READ_PROMPT: &wstr =
L!("set_color green; echo -n read; set_color normal; echo -n \"> \"");
/// Error message on missing argument.
pub const BUILTIN_ERR_MISSING: &str = "%ls: %ls: option requires an argument\n";
localizable_consts!(
/// Error message on missing argument.
pub BUILTIN_ERR_MISSING
"%ls: %ls: option requires an argument\n"
/// Error message on missing man page.
pub const BUILTIN_ERR_MISSING_HELP: &str =
"fish: %ls: missing man page\nDocumentation may not be installed.\n`help %ls` will show an online version\n";
/// Error message on missing man page.
pub BUILTIN_ERR_MISSING_HELP
"fish: %ls: missing man page\nDocumentation may not be installed.\n`help %ls` will show an online version\n"
/// Error message on multiple scope levels for variables.
pub const BUILTIN_ERR_GLOCAL: &str =
"%ls: scope can be only one of: universal function global local\n";
/// Error message on multiple scope levels for variables.
pub BUILTIN_ERR_GLOCAL
"%ls: scope can be only one of: universal function global local\n"
/// Error message for specifying both export and unexport to set/read.
pub const BUILTIN_ERR_EXPUNEXP: &str = "%ls: cannot both export and unexport\n";
/// Error message for specifying both export and unexport to set/read.
pub BUILTIN_ERR_EXPUNEXP
"%ls: cannot both export and unexport\n"
/// Error message for specifying both path and unpath to set/read.
pub const BUILTIN_ERR_PATHUNPATH: &str = "%ls: cannot both path and unpath\n";
/// Error message for specifying both path and unpath to set/read.
pub BUILTIN_ERR_PATHUNPATH
"%ls: cannot both path and unpath\n"
/// Error message for unknown switch.
pub const BUILTIN_ERR_UNKNOWN: &str = "%ls: %ls: unknown option\n";
/// Error message for unknown switch.
pub BUILTIN_ERR_UNKNOWN
"%ls: %ls: unknown option\n"
/// Error message for invalid bind mode name.
pub const BUILTIN_ERR_BIND_MODE: &str = "%ls: %ls: invalid mode name. See `help identifiers`\n";
/// Error message for invalid bind mode name.
pub BUILTIN_ERR_BIND_MODE
"%ls: %ls: invalid mode name. See `help identifiers`\n"
/// Error message when too many arguments are supplied to a builtin.
pub const BUILTIN_ERR_TOO_MANY_ARGUMENTS: &str = "%ls: too many arguments\n";
/// Error message when too many arguments are supplied to a builtin.
pub BUILTIN_ERR_TOO_MANY_ARGUMENTS
"%ls: too many arguments\n"
/// Error message when integer expected
pub const BUILTIN_ERR_NOT_NUMBER: &str = "%ls: %ls: invalid integer\n";
/// Error message when integer expected
pub BUILTIN_ERR_NOT_NUMBER
"%ls: %ls: invalid integer\n"
/// Command that requires a subcommand was invoked without a recognized subcommand.
pub const BUILTIN_ERR_MISSING_SUBCMD: &str = "%ls: missing subcommand\n";
pub const BUILTIN_ERR_INVALID_SUBCMD: &str = "%ls: %ls: invalid subcommand\n";
/// Command that requires a subcommand was invoked without a recognized subcommand.
pub BUILTIN_ERR_MISSING_SUBCMD
"%ls: missing subcommand\n"
/// Error messages for unexpected args.
pub const BUILTIN_ERR_ARG_COUNT0: &str = "%ls: missing argument\n";
pub const BUILTIN_ERR_ARG_COUNT1: &str = "%ls: expected %d arguments; got %d\n";
pub const BUILTIN_ERR_ARG_COUNT2: &str = "%ls: %ls: expected %d arguments; got %d\n";
pub const BUILTIN_ERR_MIN_ARG_COUNT1: &str = "%ls: expected >= %d arguments; got %d\n";
pub const BUILTIN_ERR_MAX_ARG_COUNT1: &str = "%ls: expected <= %d arguments; got %d\n";
pub BUILTIN_ERR_INVALID_SUBCMD
"%ls: %ls: invalid subcommand\n"
/// Error message for invalid variable name.
pub const BUILTIN_ERR_VARNAME: &str = "%ls: %ls: invalid variable name. See `help identifiers`\n";
/// Error messages for unexpected args.
pub BUILTIN_ERR_ARG_COUNT0
"%ls: missing argument\n"
/// Error message on invalid combination of options.
pub const BUILTIN_ERR_COMBO: &str = "%ls: invalid option combination\n";
pub const BUILTIN_ERR_COMBO2: &str = "%ls: invalid option combination, %ls\n";
pub const BUILTIN_ERR_COMBO2_EXCLUSIVE: &str = "%ls: %ls %ls: options cannot be used together\n";
pub BUILTIN_ERR_ARG_COUNT1
"%ls: expected %d arguments; got %d\n"
/// The send stuff to foreground message.
pub const FG_MSG: &str = "Send job %d (%ls) to foreground\n";
pub BUILTIN_ERR_ARG_COUNT2
"%ls: %ls: expected %d arguments; got %d\n"
pub BUILTIN_ERR_MIN_ARG_COUNT1
"%ls: expected >= %d arguments; got %d\n"
pub BUILTIN_ERR_MAX_ARG_COUNT1
"%ls: expected <= %d arguments; got %d\n"
/// Error message for invalid variable name.
pub BUILTIN_ERR_VARNAME
"%ls: %ls: invalid variable name. See `help identifiers`\n"
/// Error message on invalid combination of options.
pub BUILTIN_ERR_COMBO
"%ls: invalid option combination\n"
pub BUILTIN_ERR_COMBO2
"%ls: invalid option combination, %ls\n"
pub BUILTIN_ERR_COMBO2_EXCLUSIVE
"%ls: %ls %ls: options cannot be used together\n"
/// The send stuff to foreground message.
pub FG_MSG
"Send job %d (%ls) to foreground\n"
);
// Return values (`$status` values for fish scripts) for various situations.
@@ -1007,7 +1035,9 @@ fn builtin_false(_parser: &Parser, _streams: &mut IoStreams, _argv: &mut [&wstr]
fn builtin_gettext(_parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> BuiltinResult {
for arg in &argv[1..] {
streams.out.append(wgettext_str(arg));
streams.out.append(
crate::wutil::LocalizableString::from_external_source((*arg).to_owned()).localize(),
);
}
Ok(SUCCESS)
}

View File

@@ -220,9 +220,6 @@ fn print_error(
match self {
InvalidArgs(msg) => {
streams.err.append(L!("string "));
// TODO: Once we can extract/edit translations in Rust files, replace this with
// something like wgettext_fmt!("%ls: %ls\n", cmd, msg) that can be translated
// and remove the forwarding of the cmd name to `parse_opt`
streams.err.append(msg);
}
NotANumber => {

View File

@@ -14,7 +14,7 @@
common::charptr2wcstring,
reader::{get_quote, is_backslashed},
util::wcsfilecmp,
wutil::sprintf,
wutil::{localizable_string, sprintf, LocalizableString},
};
use bitflags::bitflags;
use once_cell::sync::Lazy;
@@ -45,14 +45,14 @@
parser_keywords::parser_keywords_is_subcommand,
path::{path_get_path, path_try_get_path},
tokenizer::{variable_assignment_equals_pos, Tok, TokFlags, TokenType, Tokenizer},
wchar::{wstr, WString, L},
wchar::prelude::*,
wchar_ext::WExt,
wcstringutil::{
string_fuzzy_match_string, string_prefixes_string, string_prefixes_string_case_insensitive,
StringFuzzyMatch,
},
wildcard::{wildcard_complete, wildcard_has, wildcard_match},
wutil::{gettext::wgettext_str, wgettext, wrealpath},
wutil::wrealpath,
};
// Completion description strings, mostly for different types of files, such as sockets, block
@@ -70,19 +70,6 @@
/// Description for abbreviations.
static ABBR_DESC: Lazy<&wstr> = Lazy::new(|| wgettext!("Abbreviation: %ls"));
/// The special cased translation macro for completions. The empty string needs to be special cased,
/// since it can occur, and should not be translated. (Gettext returns the version information as
/// the response).
#[inline(always)]
#[allow(non_snake_case)]
fn C_(s: &wstr) -> &'static wstr {
if s.is_empty() {
L!("")
} else {
wgettext_str(s)
}
}
#[derive(Clone, Copy, Default, PartialEq, Eq, Debug)]
pub struct CompletionMode {
/// If set, skip file completions.
@@ -386,7 +373,7 @@ struct CompleteEntryOpt {
/// Arguments to the option; may be a subshell expression expanded at evaluation time.
comp: WString,
/// Description of the completion.
desc: WString,
desc: LocalizableString,
/// Conditions under which to use the option, expanded and evaluated at completion time.
conditions: Vec<WString>,
/// Type of the option: `ArgsOnly`, `Short`, `SingleLong`, or `DoubleLong`.
@@ -398,10 +385,6 @@ struct CompleteEntryOpt {
}
impl CompleteEntryOpt {
pub fn localized_desc(&self) -> &'static wstr {
C_(&self.desc)
}
pub fn expected_dash_count(&self) -> usize {
match self.typ {
CompleteOptionType::ArgsOnly => 0,
@@ -1327,7 +1310,7 @@ fn complete_param_for_command(
}
let (arg_prefix, arg) = s.split_once(arg_offset);
let first_new = self.completions.completions.len();
self.complete_from_args(arg, &o.comp, o.localized_desc(), o.flags);
self.complete_from_args(arg, &o.comp, o.desc.localize(), o.flags);
for compl in &mut self.completions.completions[first_new..] {
if compl.replaces_token() {
compl.completion.insert_utfstr(0, arg_prefix);
@@ -1358,7 +1341,7 @@ fn complete_param_for_command(
if o.result_mode.force_files {
has_force = true;
}
self.complete_from_args(s, &o.comp, o.localized_desc(), o.flags);
self.complete_from_args(s, &o.comp, o.desc.localize(), o.flags);
}
}
@@ -1394,7 +1377,7 @@ fn complete_param_for_command(
if o.result_mode.force_files {
has_force = true;
}
self.complete_from_args(s, &o.comp, o.localized_desc(), o.flags);
self.complete_from_args(s, &o.comp, o.desc.localize(), o.flags);
}
}
}
@@ -1417,7 +1400,7 @@ fn complete_param_for_command(
if o.option.is_empty() {
use_files &= !o.result_mode.no_files;
has_force |= o.result_mode.force_files;
self.complete_from_args(s, &o.comp, o.localized_desc(), o.flags);
self.complete_from_args(s, &o.comp, o.desc.localize(), o.flags);
}
if !use_switches || s.is_empty() {
@@ -1450,7 +1433,7 @@ fn complete_param_for_command(
}
}
// It's a match.
let desc = o.localized_desc();
let desc = o.desc.localize();
// Append a short-style option
if !self
.completions
@@ -1503,7 +1486,7 @@ fn complete_param_for_command(
// Append a long-style option with a mandatory trailing equal sign
if !self.completions.add(Completion::new(
completion,
o.localized_desc().to_owned(),
o.desc.localize().to_owned(),
StringFuzzyMatch::exact_match(),
flags | CompleteFlags::NO_SPACE,
)) {
@@ -1514,7 +1497,7 @@ fn complete_param_for_command(
// Append a long-style option
if !self.completions.add(Completion::new(
whole_opt.slice_from(offset).to_owned(),
o.localized_desc().to_owned(),
o.desc.localize().to_owned(),
StringFuzzyMatch::exact_match(),
flags,
)) {
@@ -2170,7 +2153,7 @@ fn parse_cmd_string(s: &wstr, vars: &dyn Environment) -> CmdString {
/// Returns a description for the specified function, or an empty string if none.
fn complete_function_desc(f: &wstr) -> WString {
if let Some(props) = function::get_props(f) {
props.description.clone()
props.description.localize().to_owned()
} else {
WString::new()
}
@@ -2320,7 +2303,7 @@ pub fn complete_add(
typ: option_type,
result_mode,
comp,
desc,
desc: LocalizableString::from_external_source(desc),
conditions: condition,
flags,
};
@@ -2429,7 +2412,7 @@ fn completion2string(index: &CompletionEntryIndex, o: &CompleteEntryOpt) -> WStr
CompleteOptionType::DoubleLong => append_switch_short_arg(&mut out, 'l', &o.option),
}
append_switch_short_arg(&mut out, 'd', o.localized_desc());
append_switch_short_arg(&mut out, 'd', o.desc.localize());
append_switch_short_arg(&mut out, 'a', &o.comp);
for c in &o.conditions {
append_switch_short_arg(&mut out, 'n', c);

View File

@@ -44,10 +44,9 @@
use crate::redirection::{dup2_list_resolve_chain, Dup2List};
use crate::threads::{iothread_perform_cant_wait, is_forked_child};
use crate::trace::trace_if_enabled_with_args;
use crate::wchar::{wstr, WString, L};
use crate::wchar::prelude::*;
use crate::wchar_ext::ToWString;
use crate::wutil::{fish_wcstol, perror};
use crate::wutil::{wgettext, wgettext_fmt};
use errno::{errno, set_errno};
use libc::{
EACCES, ENOENT, ENOEXEC, ENOTDIR, EPIPE, EXIT_FAILURE, EXIT_SUCCESS, STDERR_FILENO,

View File

@@ -361,7 +361,7 @@ macro_rules! append_syntax_error {
error.source_start = $source_start;
error.source_length = 0;
error.code = ParseErrorCode::syntax;
error.text = wgettext_maybe_fmt!($fmt $(, $arg)*);
error.text = wgettext_fmt!($fmt $(, $arg)*);
errors.push(error);
}
}
@@ -377,7 +377,7 @@ macro_rules! append_cmdsub_error {
) => {
append_cmdsub_error_formatted!(
$errors, $source_start, $source_end,
wgettext_maybe_fmt!($fmt $(, $arg)*));
wgettext_fmt!($fmt $(, $arg)*));
}
}

View File

@@ -13,7 +13,10 @@
use std::io::{self, Read, Write};
use std::os::unix::prelude::*;
pub const PIPE_ERROR: &str = "An error occurred while setting up pipe";
localizable_consts!(
pub PIPE_ERROR
"An error occurred while setting up pipe"
);
/// The first "high fd", which is considered outside the range of valid user-specified redirections
/// (like >&5).
@@ -142,7 +145,7 @@ pub fn make_autoclose_pipes() -> nix::Result<AutoClosePipes> {
pipes
}
Err(err) => {
FLOG!(warning, PIPE_ERROR);
FLOG!(warning, PIPE_ERROR.localize());
perror("pipe2");
return Err(err);
}
@@ -151,7 +154,7 @@ pub fn make_autoclose_pipes() -> nix::Result<AutoClosePipes> {
let pipes = match nix::unistd::pipe() {
Ok(pipes) => pipes,
Err(err) => {
FLOG!(warning, PIPE_ERROR);
FLOG!(warning, PIPE_ERROR.localize());
perror("pipe");
return Err(err);
}

View File

@@ -8,12 +8,12 @@
#[rustfmt::skip::macros(category)]
pub mod categories {
use super::wstr;
use crate::wchar::L;
use crate::wchar::prelude::*;
use std::sync::atomic::AtomicBool;
pub struct category_t {
pub name: &'static wstr,
pub description: &'static wstr,
pub description: LocalizableString,
pub enabled: AtomicBool,
}
@@ -25,7 +25,7 @@ macro_rules! declare_category {
) => {
pub static $var: category_t = category_t {
name: L!($name),
description: L!($description),
description: localizable_string!($description),
enabled: AtomicBool::new($enabled),
};
};

View File

@@ -28,7 +28,7 @@ pub struct FunctionProperties {
pub named_arguments: Vec<WString>,
/// Description of the function.
pub description: WString,
pub description: LocalizableString,
/// Mapping of all variables that were inherited from the function definition scope to their
/// values, as (key, values) pairs.
@@ -294,7 +294,7 @@ pub(crate) fn set_desc(name: &wstr, desc: WString, parser: &Parser) {
// Note the description is immutable, as it may be accessed on another thread, so we copy
// the properties to modify it.
let mut new_props = props.as_ref().clone();
new_props.description = desc;
new_props.description = LocalizableString::from_external_source(desc);
funcset.funcs.insert(name.to_owned(), Arc::new(new_props));
}
}
@@ -364,15 +364,6 @@ pub fn invalidate_path() {
}
impl FunctionProperties {
/// Return the description, localized via wgettext.
pub fn localized_description(&self) -> &'static wstr {
if self.description.is_empty() {
L!("")
} else {
wgettext_str(&self.description)
}
}
/// Return true if this function is a copy.
pub fn is_copy(&self) -> bool {
self.is_copy
@@ -426,7 +417,7 @@ pub fn copy_definition_lineno(&self) -> u32 {
/// Note callers must provide the function name, since the function does not know its own name.
pub fn annotated_definition(&self, name: &wstr) -> WString {
let mut out = WString::new();
let desc = self.localized_description();
let desc = self.description.localize();
let def = get_function_body_source(self);
let handlers = event::get_function_handlers(name);

View File

@@ -102,5 +102,7 @@
pub mod widecharwidth;
pub mod wildcard;
pub extern crate fish_gettext_extraction;
#[cfg(test)]
mod tests;

View File

@@ -79,8 +79,11 @@ pub enum SelectionMotion {
/// Width of the search field.
const PAGER_SEARCH_FIELD_WIDTH: usize = 12;
/// Text we use for the search field.
const SEARCH_FIELD_PROMPT: &str = "search: ";
localizable_consts!(
/// Text we use for the search field.
SEARCH_FIELD_PROMPT
"search: "
);
const PAGER_SELECTION_NONE: usize = usize::MAX;

View File

@@ -461,70 +461,86 @@ pub fn parse_error_offset_source_start(errors: &mut ParseErrorList, amt: usize)
#[cfg(not(feature = "tsan"))]
pub const FISH_MAX_EVAL_DEPTH: isize = 500;
/// Error message on a function that calls itself immediately.
pub const INFINITE_FUNC_RECURSION_ERR_MSG: &str =
"The function '%ls' calls itself immediately, which would result in an infinite loop.";
localizable_consts!(
/// Error message on a function that calls itself immediately.
pub INFINITE_FUNC_RECURSION_ERR_MSG
"The function '%ls' calls itself immediately, which would result in an infinite loop."
/// Error message on reaching maximum call stack depth.
pub const CALL_STACK_LIMIT_EXCEEDED_ERR_MSG: &str =
"The call stack limit has been exceeded. Do you have an accidental infinite loop?";
/// Error message on reaching maximum call stack depth.
pub CALL_STACK_LIMIT_EXCEEDED_ERR_MSG
"The call stack limit has been exceeded. Do you have an accidental infinite loop?"
/// Error message when encountering an unknown builtin name.
pub const UNKNOWN_BUILTIN_ERR_MSG: &str = "Unknown builtin '%ls'";
/// Error message when encountering an unknown builtin name.
pub UNKNOWN_BUILTIN_ERR_MSG
"Unknown builtin '%ls'"
/// Error message when encountering a failed expansion, e.g. for the variable name in for loops.
pub const FAILED_EXPANSION_VARIABLE_NAME_ERR_MSG: &str = "Unable to expand variable name '%ls'";
/// Error message when encountering a failed expansion, e.g. for the variable name in for loops.
pub FAILED_EXPANSION_VARIABLE_NAME_ERR_MSG
"Unable to expand variable name '%ls'"
/// Error message when encountering an illegal file descriptor.
pub const ILLEGAL_FD_ERR_MSG: &str = "Illegal file descriptor in redirection '%ls'";
/// Error message when encountering an illegal file descriptor.
pub ILLEGAL_FD_ERR_MSG
"Illegal file descriptor in redirection '%ls'"
/// Error message for wildcards with no matches.
pub const WILDCARD_ERR_MSG: &str = "No matches for wildcard '%ls'. See `help wildcards-globbing`.";
/// Error message for wildcards with no matches.
pub WILDCARD_ERR_MSG
"No matches for wildcard '%ls'. See `help wildcards-globbing`."
/// Error when using break outside of loop.
pub const INVALID_BREAK_ERR_MSG: &str = "'break' while not inside of loop";
/// Error when using break outside of loop.
pub INVALID_BREAK_ERR_MSG
"'break' while not inside of loop"
/// Error when using continue outside of loop.
pub const INVALID_CONTINUE_ERR_MSG: &str = "'continue' while not inside of loop";
/// Error when using continue outside of loop.
pub INVALID_CONTINUE_ERR_MSG
"'continue' while not inside of loop"
/// Error message when a command may not be in a pipeline.
pub const INVALID_PIPELINE_CMD_ERR_MSG: &str = "The '%ls' command can not be used in a pipeline";
/// Error message when a command may not be in a pipeline.
pub INVALID_PIPELINE_CMD_ERR_MSG
"The '%ls' command can not be used in a pipeline"
// Error messages. The number is a reminder of how many format specifiers are contained.
// Error messages. The number is a reminder of how many format specifiers are contained.
/// Error for $^.
pub const ERROR_BAD_VAR_CHAR1: &str = "$%lc is not a valid variable in fish.";
/// Error for $^.
pub ERROR_BAD_VAR_CHAR1
"$%lc is not a valid variable in fish."
/// Error for ${a}.
pub const ERROR_BRACKETED_VARIABLE1: &str =
"Variables cannot be bracketed. In fish, please use {$%ls}.";
/// Error for ${a}.
pub ERROR_BRACKETED_VARIABLE1
"Variables cannot be bracketed. In fish, please use {$%ls}."
/// Error for "${a}".
pub const ERROR_BRACKETED_VARIABLE_QUOTED1: &str =
"Variables cannot be bracketed. In fish, please use \"$%ls\".";
/// Error for "${a}".
pub ERROR_BRACKETED_VARIABLE_QUOTED1
"Variables cannot be bracketed. In fish, please use \"$%ls\"."
/// Error issued on $?.
pub const ERROR_NOT_STATUS: &str = "$? is not the exit status. In fish, please use $status.";
/// Error issued on $?.
pub ERROR_NOT_STATUS
"$? is not the exit status. In fish, please use $status."
/// Error issued on $$.
pub const ERROR_NOT_PID: &str = "$$ is not the pid. In fish, please use $fish_pid.";
/// Error issued on $$.
pub ERROR_NOT_PID
"$$ is not the pid. In fish, please use $fish_pid."
/// Error issued on $#.
pub const ERROR_NOT_ARGV_COUNT: &str = "$# is not supported. In fish, please use 'count $argv'.";
/// Error issued on $#.
pub ERROR_NOT_ARGV_COUNT
"$# is not supported. In fish, please use 'count $argv'."
/// Error issued on $@.
pub const ERROR_NOT_ARGV_AT: &str = "$@ is not supported. In fish, please use $argv.";
/// Error issued on $@.
pub ERROR_NOT_ARGV_AT
"$@ is not supported. In fish, please use $argv."
/// Error issued on $*.
pub const ERROR_NOT_ARGV_STAR: &str = "$* is not supported. In fish, please use $argv.";
/// Error issued on $*.
pub ERROR_NOT_ARGV_STAR
"$* is not supported. In fish, please use $argv."
/// Error issued on $.
pub const ERROR_NO_VAR_NAME: &str = "Expected a variable name after this $.";
/// Error issued on $.
pub ERROR_NO_VAR_NAME
"Expected a variable name after this $."
/// Error message for Posix-style assignment: foo=bar.
pub const ERROR_BAD_COMMAND_ASSIGN_ERR_MSG: &str =
"Unsupported use of '='. In fish, please use 'set %ls %ls'.";
/// Error message for Posix-style assignment: foo=bar.
pub ERROR_BAD_COMMAND_ASSIGN_ERR_MSG
"Unsupported use of '='. In fish, please use 'set %ls %ls'."
/// Error message for a command like `time foo &`.
pub const ERROR_TIME_BACKGROUND: &str =
"'time' is not supported for background jobs. Consider using 'command time'.";
/// Error message for a command like `time foo &`.
pub ERROR_TIME_BACKGROUND
"'time' is not supported for background jobs. Consider using 'command time'."
);

View File

@@ -49,10 +49,9 @@
use crate::timer::push_timer;
use crate::tokenizer::{variable_assignment_equals_pos, PipeOrRedir, TokenType};
use crate::trace::{trace_if_enabled, trace_if_enabled_with_args};
use crate::wchar::{wstr, WString, L};
use crate::wchar::prelude::*;
use crate::wchar_ext::WExt;
use crate::wildcard::wildcard_match;
use crate::wutil::{wgettext, wgettext_maybe_fmt};
use libc::{c_int, ENOTDIR, EXIT_SUCCESS, STDERR_FILENO, STDOUT_FILENO};
use std::io::ErrorKind;
use std::rc::Rc;
@@ -97,7 +96,7 @@ pub struct ExecutionContext<'a> {
// 'end_execution_reason_t::error'.
macro_rules! report_error {
( $self:ident, $ctx:expr, $status:expr, $node:expr, $fmt:expr $(, $arg:expr )* $(,)? ) => {
report_error_formatted!($self, $ctx, $status, $node, wgettext_maybe_fmt!($fmt $(, $arg )*))
report_error_formatted!($self, $ctx, $status, $node, wgettext_fmt!($fmt $(, $arg )*))
};
}
macro_rules! report_error_formatted {

View File

@@ -1355,7 +1355,7 @@ macro_rules! append_syntax_error {
{
append_syntax_error_formatted!(
$errors, $source_location, $source_length,
wgettext_maybe_fmt!($fmt $(, $arg)*))
wgettext_fmt!($fmt $(, $arg)*))
}
}
}
@@ -1945,21 +1945,26 @@ pub fn parse_util_expand_variable_error(
assert!(errors.as_ref().unwrap().len() == start_error_count + 1);
}
/// Error message for use of backgrounded commands before and/or.
pub(crate) const BOOL_AFTER_BACKGROUND_ERROR_MSG: &str =
"The '%ls' command can not be used immediately after a backgrounded job";
localizable_consts!(
/// Error message for use of backgrounded commands before and/or.
pub(crate) BOOL_AFTER_BACKGROUND_ERROR_MSG
"The '%ls' command can not be used immediately after a backgrounded job"
/// Error message for backgrounded commands as conditionals.
const BACKGROUND_IN_CONDITIONAL_ERROR_MSG: &str =
"Backgrounded commands can not be used as conditionals";
/// Error message for backgrounded commands as conditionals.
BACKGROUND_IN_CONDITIONAL_ERROR_MSG
"Backgrounded commands can not be used as conditionals"
/// Error message for arguments to 'end'
const END_ARG_ERR_MSG: &str = "'end' does not take arguments. Did you forget a ';'?";
const RIGHT_BRACE_ARG_ERR_MSG: &str = "'}' does not take arguments. Did you forget a ';'?";
/// Error message for arguments to 'end'
END_ARG_ERR_MSG
"'end' does not take arguments. Did you forget a ';'?"
/// Error message when 'time' is in a pipeline.
const TIME_IN_PIPELINE_ERR_MSG: &str =
"The 'time' command may only be at the beginning of a pipeline";
RIGHT_BRACE_ARG_ERR_MSG
"'}' does not take arguments. Did you forget a ';'?"
/// Error message when 'time' is in a pipeline.
TIME_IN_PIPELINE_ERR_MSG
"The 'time' command may only be at the beginning of a pipeline"
);
/// Maximum length of a variable name to show in error reports before truncation
const var_err_len: usize = 16;

View File

@@ -29,9 +29,9 @@
use crate::threads::assert_is_main_thread;
use crate::util::get_time;
use crate::wait_handle::WaitHandleStore;
use crate::wchar::{wstr, WString, L};
use crate::wchar::prelude::*;
use crate::wchar_ext::WExt;
use crate::wutil::{perror, wgettext, wgettext_fmt};
use crate::wutil::perror;
use crate::{function, FLOG};
use libc::c_int;
use once_cell::unsync::OnceCell;

View File

@@ -1,12 +1,12 @@
//! Helper for executables (not builtins) to print a help message
//! Uses the fish in PATH, not necessarily the matching fish binary
use crate::wgettext;
use crate::wchar::prelude::*;
use std::ffi::{OsStr, OsString};
use std::process::Command;
const HELP_ERR: &str = "Could not show help message";
const HELP_ERR: LocalizableString = localizable_string!("Could not show help message");
pub fn print_help(command: &str) {
let mut cmdline = OsString::new();

View File

@@ -21,9 +21,9 @@
use crate::threads::MainThread;
use crate::topic_monitor::{topic_monitor_principal, GenerationsList, Topic};
use crate::wait_handle::{InternalJobId, WaitHandle, WaitHandleRef, WaitHandleStore};
use crate::wchar::{wstr, WString, L};
use crate::wchar::prelude::*;
use crate::wchar_ext::ToWString;
use crate::wutil::{perror, sprintf, wbasename, wgettext, wperror};
use crate::wutil::{perror, wbasename, wperror};
use libc::{
EBADF, EINVAL, ENOTTY, EPERM, EXIT_SUCCESS, SIGABRT, SIGBUS, SIGCONT, SIGFPE, SIGHUP, SIGILL,
SIGINT, SIGKILL, SIGPIPE, SIGQUIT, SIGSEGV, SIGSYS, SIGTTOU, SIG_DFL, SIG_IGN, STDIN_FILENO,

View File

@@ -351,11 +351,11 @@ pub fn wait(&self) {
struct LookupEntry {
signal: Signal,
name: &'static wstr,
desc: &'static wstr, // Note: this needs to be translated via gettext before presenting it to the user.
desc: LocalizableString, // Note: this needs to be localized via gettext before presenting it to the user.
}
impl LookupEntry {
const fn new(signal: i32, name: &'static wstr, desc: &'static wstr) -> Self {
const fn new(signal: i32, name: &'static wstr, desc: LocalizableString) -> Self {
Self {
signal: Signal::new(signal),
name,
@@ -366,7 +366,11 @@ const fn new(signal: i32, name: &'static wstr, desc: &'static wstr) -> Self {
macro_rules! signal_entry {
($name:ident, $desc:expr) => {
LookupEntry::new(libc::$name, L!(stringify!($name)), L!($desc))
LookupEntry::new(
libc::$name,
L!(stringify!($name)),
localizable_string!($desc),
)
};
}
@@ -479,7 +483,7 @@ pub fn name(&self) -> &'static wstr {
/// Previously signal_get_desc().
pub fn desc(&self) -> &'static wstr {
match self.get_lookup_entry() {
Some(entry) => wgettext_str(entry.desc),
Some(entry) => entry.desc.localize(),
None => wgettext!("Unknown"),
}
}

View File

@@ -65,7 +65,7 @@ macro_rules! validate {
string_matches_format(&errors[0].text, fmt),
"command '{}' is expected to match error pattern '{}' but is '{}'",
$src,
$error_text_format,
$error_text_format.localize(),
&errors[0].text
);
};

View File

@@ -14,7 +14,10 @@ pub mod prelude {
pub use crate::{
wchar::{wstr, IntoCharIter, WString, L},
wchar_ext::{ToWString, WExt},
wutil::{eprintf, sprintf, wgettext, wgettext_fmt, wgettext_maybe_fmt, wgettext_str},
wutil::{
eprintf, localizable_consts, localizable_string, sprintf, wgettext, wgettext_fmt,
LocalizableString,
},
};
}

View File

@@ -2,7 +2,7 @@
use std::ffi::CString;
use std::sync::Mutex;
use crate::common::{charptr2wcstring, truncate_at_nul, wcs2zstring, PACKAGE_NAME};
use crate::common::{charptr2wcstring, wcs2zstring, PACKAGE_NAME};
use crate::env::CONFIG_PATHS;
#[cfg(test)]
use crate::tests::prelude::*;
@@ -86,10 +86,7 @@ fn wgettext_impl(text: MaybeStatic) -> &'static wstr {
MaybeStatic::Local(s) => s,
};
debug_assert!(
truncate_at_nul(key).len() == key.len(),
"key should not contain NUL"
);
debug_assert!(!key.contains('\0'), "key should not contain NUL");
// Note that because entries are immortal, we simply leak non-static keys, and all values.
static WGETTEXT_MAP: Lazy<Mutex<HashMap<&'static wstr, &'static wstr>>> =
@@ -120,25 +117,105 @@ fn wgettext_impl(text: MaybeStatic) -> &'static wstr {
res
}
/// Get a (possibly translated) string from a literal.
/// Note this assumes that the string does not contain interior NUL characters -
/// this is checked in debug mode.
pub fn wgettext_static_str(s: &'static wstr) -> &'static wstr {
wgettext_impl(MaybeStatic::Static(s))
/// A string which can be localized.
/// The wrapped string itself is the original, unlocalized version.
/// Use [`LocalizableString::localize`] to obtain the localized version.
///
/// Do not construct this type directly.
/// For string literals defined in fish's Rust sources,
/// use the macros defined in this file.
/// For strings defined elsewhere, use [`LocalizableString::from_external_source`].
/// Use this function with caution. If the string is not extracted into the gettext PO files from
/// which fish obtains localizations, localization will not work.
#[derive(Debug, Clone)]
pub enum LocalizableString {
Static(&'static wstr),
Owned(WString),
}
/// Get a (possibly translated) string from a non-literal.
/// This truncates at the first NUL character.
pub fn wgettext_str(s: &wstr) -> &'static wstr {
wgettext_impl(MaybeStatic::Local(truncate_at_nul(s)))
impl LocalizableString {
/// Create a [`LocalizableString`] from a string which is not from fish's own Rust sources.
/// Localizations will only work if this string is extracted into the localization files some
/// other way.
pub fn from_external_source(s: WString) -> Self {
Self::Owned(s)
}
/// Get the localization of a [`LocalizableString`].
/// If original string is empty, an empty `wstr` is returned,
/// instead of the gettext metadata.
pub fn localize(&self) -> &'static wstr {
match self {
Self::Static(s) => {
if s.is_empty() {
L!("")
} else {
wgettext_impl(MaybeStatic::Static(s))
}
}
Self::Owned(s) => {
if s.is_empty() {
L!("")
} else {
wgettext_impl(MaybeStatic::Local(s))
}
}
}
}
}
/// Get a (possibly translated) string from a string literal.
/// This returns a &'static wstr.
impl std::fmt::Display for LocalizableString {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.localize())
}
}
/// This macro takes a string literal and produces a [`LocalizableString`].
/// The essential part is the invocation of the proc macro,
/// which ensures that the string gets extracted for localization.
#[macro_export]
macro_rules! localizable_string {
($string:literal) => {
$crate::wutil::gettext::LocalizableString::Static(widestring::utf32str!(
fish_gettext_extraction::gettext_extract!($string)
))
};
}
pub use localizable_string;
/// Macro for declaring string consts which should be localized.
#[macro_export]
macro_rules! localizable_consts {
(
$(
$(#[$attr:meta])*
$vis:vis
$name:ident
$string:literal
)*
) => {
$(
$vis const $name: $crate::wutil::gettext::LocalizableString =
localizable_string!($string);
)*
};
}
pub use localizable_consts;
/// Takes a string literal of a [`LocalizableString`].
/// Given a string literal, it is extracted for localization.
/// Returns a possibly localized `&'static wstr`.
#[macro_export]
macro_rules! wgettext {
($string:expr) => {
$crate::wutil::gettext::wgettext_static_str(widestring::utf32str!($string))
(
$string:literal
) => {
localizable_string!($string).localize()
};
(
$string:expr // format string (LocalizableString)
) => {
$string.localize()
};
}
pub use wgettext;
@@ -148,32 +225,28 @@ macro_rules! wgettext {
#[macro_export]
macro_rules! wgettext_fmt {
(
$string:expr, // format string
$($args:expr),+ // list of expressions
$(,)? // optional trailing comma
$string:literal // format string
$(, $args:expr)* // list of expressions
$(,)? // optional trailing comma
) => {
$crate::wutil::sprintf!($crate::wutil::wgettext!($string), $($args),+)
$crate::wutil::sprintf!(
localizable_string!($string).localize(),
$($args),*
)
};
(
$string:expr // format string (LocalizableString)
$(, $args:expr)* // list of expressions
$(,)? // optional trailing comma
) => {
$crate::wutil::sprintf!($string.localize(), $($args),*)
};
}
pub use wgettext_fmt;
/// Like wgettext_fmt, but doesn't require an argument to format.
/// For use in macros.
#[macro_export]
macro_rules! wgettext_maybe_fmt {
(
$string:expr // format string
$(, $args:expr)* // list of expressions
$(,)? // optional trailing comma
) => {
$crate::wutil::sprintf!($crate::wutil::wgettext!($string), $($args),*)
};
}
pub use wgettext_maybe_fmt;
#[test]
#[serial]
fn test_untranslated() {
fn test_unlocalized() {
let _cleanup = test_init();
let s: &'static wstr = wgettext!("abc");
assert_eq!(s, "abc");

View File

@@ -20,7 +20,9 @@
use crate::wchar_ext::WExt;
use crate::wcstringutil::{join_strings, wcs2string_callback};
use errno::errno;
pub use gettext::{wgettext, wgettext_fmt, wgettext_maybe_fmt, wgettext_str};
pub use gettext::{
localizable_consts, localizable_string, wgettext, wgettext_fmt, LocalizableString,
};
use std::ffi::{CStr, OsStr};
use std::fs::{self, canonicalize};
use std::io::{self, Write};