Index: src/OFASPrintF.m ================================================================== --- src/OFASPrintF.m +++ src/OFASPrintF.m @@ -580,11 +580,11 @@ /* * If there's no asprintf_l, we have no other choice than to * use this ugly hack to replace the locale's decimal point * back to ".". */ - point = [OFLocale decimalPoint]; + point = [OFLocale decimalSeparator]; if (!ctx->useLocale && point != nil && ![point isEqual: @"."]) { void *pool = objc_autoreleasePoolPush(); char *tmp2; Index: src/OFLocale.h ================================================================== --- src/OFLocale.h +++ src/OFLocale.h @@ -44,38 +44,38 @@ * @brief A class for querying the locale and retrieving localized strings. */ OF_SUBCLASSING_RESTRICTED @interface OFLocale: OFObject { - OFString *_Nullable _language, *_Nullable _territory; + OFString *_Nullable _languageCode, *_Nullable _countryCode; OFStringEncoding _encoding; - OFString *_decimalPoint; + OFString *_decimalSeparator; OFMutableArray OF_GENERIC(OFDictionary OF_GENERIC(OFString *, id) *) *_localizedStrings; } #ifdef OF_HAVE_CLASS_PROPERTIES @property (class, readonly, nullable, nonatomic) OFLocale *currentLocale; -@property (class, readonly, nullable, nonatomic) OFString *language; -@property (class, readonly, nullable, nonatomic) OFString *territory; +@property (class, readonly, nullable, nonatomic) OFString *languageCode; +@property (class, readonly, nullable, nonatomic) OFString *countryCode; @property (class, readonly, nonatomic) OFStringEncoding encoding; -@property (class, readonly, nullable, nonatomic) OFString *decimalPoint; +@property (class, readonly, nullable, nonatomic) OFString *decimalSeparator; #endif /** - * @brief The language of the locale for messages. + * @brief The language code of the locale for messages. * * If the language is unknown, it is `nil`. */ -@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *language; +@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *languageCode; /** - * @brief The territory of the locale for messages. + * @brief The country code of the locale for messages. * * If the territory is unknown, it is `nil`. */ -@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *territory; +@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *countryCode; /** * @brief The native 8-bit string encoding of the locale for messages. * * This is useful to encode strings correctly for passing them to operating @@ -84,13 +84,13 @@ * If the native 8-bit encoding is unknown, UTF-8 is assumed. */ @property (readonly, nonatomic) OFStringEncoding encoding; /** - * @brief The decimal point of the system's locale. + * @brief The decimal separator of the locale. */ -@property (readonly, nonatomic) OFString *decimalPoint; +@property (readonly, nonatomic) OFString *decimalSeparator; /** * @brief Returns the current OFLocale. * * @warning If you don't use @ref OFApplication, this might be `nil`! In this @@ -100,26 +100,26 @@ * @return The current OFLocale instance */ + (nullable OFLocale *)currentLocale; /** - * @brief Returns the language of the locale. + * @brief Returns the language code of the locale. * * If the language is unknown, `nil` is returned. * - * @return The language of the locale. + * @return The language code of the locale. */ -+ (nullable OFString *)language; ++ (nullable OFString *)languageCode; /** - * @brief Returns the territory of the locale. + * @brief Returns the country code of the locale. * - * If the territory is unknown, `nil` is returned. + * If the country is unknown, `nil` is returned. * - * @return The territory of the locale. + * @return The country code of the locale. */ -+ (nullable OFString *)territory; ++ (nullable OFString *)countryCode; /** * @brief Returns the native 8-bit string encoding for the locale. * * This is useful to encode strings correctly for passing them to operating @@ -134,19 +134,19 @@ /** * @brief Returns the decimal point of the system's locale. * * @return The decimal point of the system's locale */ -+ (nullable OFString *)decimalPoint; ++ (nullable OFString *)decimalSeparator; #ifdef OF_HAVE_FILES /** - * @brief Adds a directory to scan for language files. + * @brief Adds a directory to scan for localizations. * - * @param path The path to the directory to scan for language files + * @param path The path to the directory to scan for localizations */ -+ (void)addLanguageDirectory: (OFString *)path; ++ (void)addLocalizationDirectory: (OFString *)path; #endif /** * @brief Initializes the current OFLocale. * @@ -159,15 +159,15 @@ */ - (instancetype)init; #ifdef OF_HAVE_FILES /** - * @brief Adds a directory to scan for language files. + * @brief Adds a directory to scan for localizations. * - * @param path The path to the directory to scan for language files + * @param path The path to the directory to scan for localizations */ -- (void)addLanguageDirectory: (OFString *)path; +- (void)addLocalizationDirectory: (OFString *)path; #endif /** * @brief Returns the localized string for the specified ID, using the fallback * string if it cannot be looked up or is missing. @@ -182,11 +182,11 @@ * care of the `nil` sentinel automatically. * * @param ID The ID for the localized string * @param fallback The fallback to use in case the localized string cannot be * looked up or is missing. This can also be an array and use - * plural scripting, just like with the JSON language files. + * plural scripting, just like with the JSON localization files. * @return The localized string */ - (OFString *)localizedStringForID: (OFConstantString *)ID fallback: (id)fallback, ... OF_SENTINEL; @@ -204,11 +204,11 @@ * care of the `nil` sentinel automatically. * * @param ID The ID for the localized string * @param fallback The fallback to use in case the localized string cannot be * looked up or is missing. This can also be an array and use - * plural scripting, just like with the JSON language files. + * plural scripting, just like with the JSON localization files. * @param arguments A va_list of arguments, consisting of pairs of variable * names and values to replace in the localized string, * terminated with `nil` * @return The localized string * @throw OFInvalidFormatException The string (either the fallback or the Index: src/OFLocale.m ================================================================== --- src/OFLocale.m +++ src/OFLocale.m @@ -38,11 +38,11 @@ static OFDictionary *operatorPrecedences = nil; #ifndef OF_AMIGAOS static void parseLocale(char *locale, OFStringEncoding *encoding, - OFString **language, OFString **territory) + OFString **languageCode, OFString **countryCode) { locale = OFStrDup(locale); @try { OFStringEncoding enc = OFStringEncodingASCII; @@ -63,22 +63,23 @@ encoding: enc]); } @catch (OFInvalidArgumentException *e) { } } - /* Territory */ + /* Country code */ if ((tmp = strrchr(locale, '_')) != NULL) { *tmp++ = '\0'; - if (territory != NULL) - *territory = [OFString stringWithCString: tmp - encoding: enc]; + if (countryCode != NULL) + *countryCode = [OFString + stringWithCString: tmp + encoding: enc]; } - if (language != NULL) - *language = [OFString stringWithCString: locale - encoding: enc]; + if (languageCode != NULL) + *languageCode = [OFString stringWithCString: locale + encoding: enc]; } @finally { OFFreeMemory(locale); } } #endif @@ -301,12 +302,12 @@ return string; } @implementation OFLocale -@synthesize language = _language, territory = _territory, encoding = _encoding; -@synthesize decimalPoint = _decimalPoint; +@synthesize languageCode = _languageCode, countryCode = _countryCode; +@synthesize encoding = _encoding, decimalSeparator = _decimalSeparator; + (void)initialize { OFNumber *one, *two, *three, *four; @@ -338,34 +339,34 @@ + (OFLocale *)currentLocale { return currentLocale; } -+ (OFString *)language ++ (OFString *)languageCode { - return currentLocale.language; + return currentLocale.languageCode; } -+ (OFString *)territory ++ (OFString *)countryCode { - return currentLocale.territory; + return currentLocale.countryCode; } + (OFStringEncoding)encoding { return currentLocale.encoding; } -+ (OFString *)decimalPoint ++ (OFString *)decimalSeparator { - return currentLocale.decimalPoint; + return currentLocale.decimalSeparator; } #ifdef OF_HAVE_FILES -+ (void)addLanguageDirectory: (OFString *)path ++ (void)addLocalizationDirectory: (OFString *)path { - [currentLocale addLanguageDirectory: path]; + [currentLocale addLocalizationDirectory: path]; } #endif - (instancetype)init { @@ -378,15 +379,15 @@ if (currentLocale != nil) @throw [OFInitializationFailedException exceptionWithClass: self.class]; _encoding = OFStringEncodingUTF8; - _decimalPoint = @"."; + _decimalSeparator = @"."; _localizedStrings = [[OFMutableArray alloc] init]; if ((locale = setlocale(LC_ALL, "")) != NULL) - _decimalPoint = [[OFString alloc] + _decimalSeparator = [[OFString alloc] initWithCString: localeconv()->decimal_point encoding: _encoding]; # ifdef LC_MESSAGES messagesLocale = setlocale(LC_MESSAGES, ""); @@ -396,14 +397,14 @@ if (messagesLocale != NULL) { void *pool = objc_autoreleasePoolPush(); parseLocale(messagesLocale, &_encoding, - &_language, &_territory); + &_languageCode, &_countryCode); - [_language retain]; - [_territory retain]; + [_languageCode retain]; + [_countryCode retain]; objc_autoreleasePoolPop(pool); } #else void *pool = objc_autoreleasePoolPush(); @@ -437,35 +438,35 @@ /* * Get it via localeconv() instead of from the Locale struct, * to make sure we and printf etc. have the same expectations. */ - _decimalPoint = [[OFString alloc] + _decimalSeparator = [[OFString alloc] initWithCString: localeconv()->decimal_point encoding: _encoding]; _localizedStrings = [[OFMutableArray alloc] init]; if (GetVar("Language", buffer, sizeof(buffer), 0) > 0) - _language = [[OFString alloc] + _languageCode = [[OFString alloc] initWithCString: buffer encoding: _encoding]; if ((locale = OpenLocale(NULL)) != NULL) { @try { - uint32_t territory; + uint32_t countryCode; size_t length; - territory = + countryCode = OFToBigEndian32(locale->loc_CountryCode); for (length = 0; length < 4; length++) - if (((char *)&territory)[length] == 0) + if (((char *)&countryCode)[length] == 0) break; - _territory = [[OFString alloc] - initWithCString: (char *)&territory + _countryCode = [[OFString alloc] + initWithCString: (char *)&countryCode encoding: _encoding length: length]; } @finally { CloseLocale(locale); } @@ -483,59 +484,61 @@ return self; } - (void)dealloc { - [_language release]; - [_territory release]; - [_decimalPoint release]; + [_languageCode release]; + [_countryCode release]; + [_decimalSeparator release]; [_localizedStrings release]; [super dealloc]; } #ifdef OF_HAVE_FILES -- (void)addLanguageDirectory: (OFString *)path +- (void)addLocalizationDirectory: (OFString *)path { void *pool; - OFString *mapPath, *language, *territory, *languageFile; + OFString *mapPath, *languageCode, *countryCode, *localizationFile; OFDictionary *map; - if (_language == nil) + if (_languageCode == nil) return; pool = objc_autoreleasePoolPush(); - mapPath = [path stringByAppendingPathComponent: @"languages.json"]; + mapPath = [path stringByAppendingPathComponent: @"localizations.json"]; @try { map = [[OFString stringWithContentsOfFile: mapPath] objectByParsingJSON]; } @catch (OFOpenItemFailedException *e) { objc_autoreleasePoolPop(pool); return; } - language = _language.lowercaseString; - territory = _territory.lowercaseString; - - if (territory == nil) - territory = @""; - - languageFile = [[map objectForKey: language] objectForKey: territory]; - if (languageFile == nil) - languageFile = [[map objectForKey: language] objectForKey: @""]; - - if (languageFile == nil) { + languageCode = _languageCode.lowercaseString; + countryCode = _countryCode.lowercaseString; + + if (countryCode == nil) + countryCode = @""; + + localizationFile = [[map objectForKey: languageCode] + objectForKey: countryCode]; + if (localizationFile == nil) + localizationFile = [[map objectForKey: languageCode] + objectForKey: @""]; + + if (localizationFile == nil) { objc_autoreleasePoolPop(pool); return; } - languageFile = [path stringByAppendingPathComponent: - [languageFile stringByAppendingString: @".json"]]; + localizationFile = [path stringByAppendingPathComponent: + [localizationFile stringByAppendingString: @".json"]]; [_localizedStrings addObject: [[OFString stringWithContentsOfFile: - languageFile] objectByParsingJSON]]; + localizationFile] objectByParsingJSON]]; objc_autoreleasePoolPop(pool); } #endif Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -2448,14 +2448,14 @@ #else /* * If we have no strtof_l, we have no other choice but to replace "." * with the locale's decimal point. */ - OFString *decimalPoint = [OFLocale decimalPoint]; + OFString *decimalSeparator = [OFLocale decimalSeparator]; const char *UTF8String = [self stringByReplacingOccurrencesOfString: @"." - withString: decimalPoint].UTF8String; + withString: decimalSeparator].UTF8String; #endif char *endPtr = NULL; float value; errno = 0; @@ -2501,14 +2501,14 @@ #else /* * If we have no strtod_l, we have no other choice but to replace "." * with the locale's decimal point. */ - OFString *decimalPoint = [OFLocale decimalPoint]; + OFString *decimalSeparator = [OFLocale decimalSeparator]; const char *UTF8String = [self stringByReplacingOccurrencesOfString: @"." - withString: decimalPoint].UTF8String; + withString: decimalSeparator].UTF8String; #endif char *endPtr = NULL; double value; errno = 0; Index: tests/OFLocaleTests.m ================================================================== --- tests/OFLocaleTests.m +++ tests/OFLocaleTests.m @@ -22,20 +22,20 @@ { void *pool = objc_autoreleasePoolPush(); [OFStdOut setForegroundColor: [OFColor lime]]; - [OFStdOut writeFormat: @"[OFLocale] Language: %@\n", - [OFLocale language]]; + [OFStdOut writeFormat: @"[OFLocale] Language code: %@\n", + [OFLocale languageCode]]; - [OFStdOut writeFormat: @"[OFLocale] Territory: %@\n", - [OFLocale territory]]; + [OFStdOut writeFormat: @"[OFLocale] Country code: %@\n", + [OFLocale countryCode]]; [OFStdOut writeFormat: @"[OFLocale] Encoding: %@\n", OFStringEncodingName([OFLocale encoding])]; - [OFStdOut writeFormat: @"[OFLocale] Decimal point: %@\n", - [OFLocale decimalPoint]]; + [OFStdOut writeFormat: @"[OFLocale] Decimal separator: %@\n", + [OFLocale decimalSeparator]]; objc_autoreleasePoolPop(pool); } @end Index: utils/ofarc/Makefile ================================================================== --- utils/ofarc/Makefile +++ utils/ofarc/Makefile @@ -4,24 +4,24 @@ SRCS = GZIPArchive.m \ LHAArchive.m \ OFArc.m \ TarArchive.m \ ZIPArchive.m -DATA = lang/de.json \ - lang/languages.json +DATA = localization/de.json \ + localization/localizations.json include ../../buildsys.mk PACKAGE_NAME = ofarc ${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2} -CPPFLAGS += -I../../src \ - -I../../src/runtime \ - -I../../src/exceptions \ - -I../.. \ - -DLANGUAGE_DIR=\"${datadir}/ofarc/lang\" +CPPFLAGS += -I../../src \ + -I../../src/runtime \ + -I../../src/exceptions \ + -I../.. \ + -DLOCALIZATION_DIR=\"${datadir}/ofarc/localization\" LIBS := -L../../src -lobjfw \ -L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS} \ ${LIBS} LD = ${OBJC} LDFLAGS += ${LDFLAGS_RPATH} Index: utils/ofarc/OFArc.m ================================================================== --- utils/ofarc/OFArc.m +++ utils/ofarc/OFArc.m @@ -205,13 +205,14 @@ [OFApplication of_activateSandbox: sandbox]; #endif #ifndef OF_AMIGAOS - [OFLocale addLanguageDirectory: @LANGUAGE_DIR]; + [OFLocale addLocalizationDirectory: @LOCALIZATION_DIR]; #else - [OFLocale addLanguageDirectory: @"PROGDIR:/share/ofarc/lang"]; + [OFLocale addLocalizationDirectory: + @"PROGDIR:/share/ofarc/localization"]; #endif optionsParser = [OFOptionsParser parserWithOptions: options]; while ((option = [optionsParser nextOption]) != '\0') { switch (option) { DELETED utils/ofarc/lang/de.json Index: utils/ofarc/lang/de.json ================================================================== --- utils/ofarc/lang/de.json +++ utils/ofarc/lang/de.json @@ -1,130 +0,0 @@ -{ - "usage": [ - "Benutzung: %[prog] -[acCfhlnpqtvx] archiv.zip [datei1 datei2 ...]" - ], - "full_usage": [ - "Optionen:\n", - " -a --append Zu Archiv hinzufügen\n", - " -c --create Archiv erstellen\n", - " -C --directory In angegebenes Verzeichnis entpacken\n", - " -E --encoding Das Encoding des Archivs (nur tar-Dateien)\n", - " -f --force Existierende Dateien überschreiben\n", - " -h --help Diese Hilfe anzeigen\n", - " -l --list Alle Dateien im Archiv auflisten\n", - " -n --no-clobber Dateien niemals überschreiben\n", - " -p --print Eine oder mehr Dateien aus dem Archiv ausgeben", - "\n", - " -q --quiet Ruhiger Modus (keine Ausgabe außer Fehler)\n", - " -t --type Archiv-Typ (gz, lha, tar, tgz, zip)\n", - " -v --verbose Ausführlicher Modus für Datei-Liste\n", - " -x --extract Dateien entpacken" - ], - "2_options_mutually_exclusive": [ - "Fehler: -%[shortopt1] / --%[longopt1] und ", - "-%[shortopt2] / --%[longopt2] schließen sich gegenseitig aus!" - ], - "5_options_mutually_exclusive": [ - "Fehler: -%[shortopt1] / --%[longopt1], -%[shortopt2] / ", - "--%[longopt2], -%[shortopt3] / --%[longopt3], ", - "-%[shortopt4] / --%[longopt4] und\n", - " -%[shortopt5] / --%[longopt5] schließen sich gegenseitig aus!" - ], - "option_takes_no_argument": "%[prog]: Option --%[opt] nimmt kein Argument", - "long_option_requires_argument": [ - "%[prog]: Option --%[opt] benötigt ein Argument" - ], - "option_requires_argument": "%[prog]: Option -%[opt] benötigt ein Argument", - "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", - "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", - "invalid_encoding": "%[prog]: Invalid encoding: %[encoding]", - "writing_not_supported": [ - "Schreiben von Dateien des Typs %[type] wird (noch) nicht unterstützt!" - ], - "failed_to_create_directory": [ - "Fehler beim Erstellen des Verzeichnis %[dir]: %[error]" - ], - "failed_to_open_file": "Fehler beim Öffnen der Datei %[file]: %[error]", - "unknown_archive_type": "Unbekannter Archivtyp: %[type]", - "failed_to_read_file": "Fehler beim Lesen der Datei %[file]: %[error]", - "failed_to_write_file": "Fehler beim Schreiben der Datei %[file]: %[error]", - "failed_to_seek_in_file": "Fehler beim Suchen in Datei %[file]: %[error]", - "file_is_not_a_valid_archive": "Datei %[file] ist kein gültiges Archiv!", - "file_skipped": "übersprungen", - "ask_overwrite": "%[file] überschreiben? [ynAN?]", - "ask_overwrite_help": [ - " y: Ja\n", - " n: Nein\n", - " A: Immer\n", - " N: Nie" - ], - "skipping_file": "Überspringe %[file]...", - "extracting_file": "Entpacke %[file]...", - "extracting_file_percent": "Entpacke %[file]... %[percent]%", - "extracting_file_done": "Entpacke %[file]... fertig", - "cannot_list_gz": "Kann Dateien eines .gz-Archivs nicht auflisten!", - "cannot_extract_specific_file_from_gz": [ - "Kann keine spezifische Datei aus einem .gz-Archiv entpacken!" - ], - "cannot_print_specific_file_from_gz": [ - "Kann keine spezifische Datei aus einem .gz-Archiv ausgeben!" - ], - "list_size": [ - "Größe: ", - [ - {"size == 1": "1 Byte"}, - {"": "%[size] Bytes"} - ] - ], - "list_posix_permissions": "POSIX-Berechtigungen: %[perm]", - "list_owner_account_id": "Besitzerkontennummer: %[id]", - "list_group_owner_account_id": "Gruppenbesitzerkontennummer: %[id]", - "list_owner_account_name": "Besitzerkontenname: %[name]", - "list_group_owner_account_name": "Gruppebesitzerkontenname: %[name]", - "list_header_level": "Header-Level: %[level]", - "list_modification_date": "Änderungsdatum: %[date]", - "list_type_normal": "Typ: Normale Datei", - "list_type_hardlink": "Typ: Harter Link", - "list_type_symlink": "Typ: Symbolischer Link", - "list_link_target": "Zieldateiname: %[target]", - "list_type_character_device": "Typ: Zeichenorientiertes Gerät", - "list_type_block_device": "Typ: Blockorientiertes Gerät", - "list_device_major": "Major-Nummer des Geräts: %[major]", - "list_device_minor": "Minor-Nummer des Geräts: %[minor]", - "list_type_directory": "Typ: Verzeichnis", - "list_type_fifo": "Typ: FIFO", - "list_type_contiguous_file": "Typ: Zusammenhängende Datei", - "list_type_unknown": "Typ: Unbekannt", - "list_compressed_size": [ - "Komprimierte Größe: ", - [ - {"size == 1": "1 Byte"}, - {"": "%[size] Bytes"} - ] - ], - "list_uncompressed_size": [ - "Unkomprimierte Größe: ", - [ - {"size == 1": "1 Byte"}, - {"": "%[size] Bytes"} - ] - ], - "list_compression_method": "Kompressionsmethode: %[method]", - "list_osid": "Betriebssystem-Identifikator: %[osid]", - "list_extensions": "Erweiterungen: %[extensions]", - "list_version_made_by": "Erstellt mit Version: %[version]", - "list_min_version_needed": "Mindestens benötigte Version: %[version]", - "list_general_purpose_bit_flag": "General Purpose Bit Flag: %[gpbf]", - "list_extra_field": "Extra-Feld: %[extra]", - "list_comment": "Kommentar: %[comment]", - "refusing_to_extract_file": "Verweigere Entpacken von %[file]!", - "file_not_in_archive": "Datei %[file] ist nicht im Archiv!", - "print_no_file_specified": [ - "Benötige eine oder mehrere Dateien zum Ausgeben!" - ], - "add_no_file_specified": [ - "Benötige eine oder mehrere Dateien zum Hinzufügen!" - ], - "adding_file": "Füge %[file] hinzu...", - "adding_file_percent": "Füge %[file] hinzu... %[percent]%", - "adding_file_done": "Füge %[file] hinzu... fertig" -} DELETED utils/ofarc/lang/languages.json Index: utils/ofarc/lang/languages.json ================================================================== --- utils/ofarc/lang/languages.json +++ utils/ofarc/lang/languages.json @@ -1,11 +0,0 @@ -{ - "de": { - "": "de" - }, - "deutsch": { - "": "de" - }, - "german": { - "": "de" - } -} ADDED utils/ofarc/localization/de.json Index: utils/ofarc/localization/de.json ================================================================== --- utils/ofarc/localization/de.json +++ utils/ofarc/localization/de.json @@ -0,0 +1,130 @@ +{ + "usage": [ + "Benutzung: %[prog] -[acCfhlnpqtvx] archiv.zip [datei1 datei2 ...]" + ], + "full_usage": [ + "Optionen:\n", + " -a --append Zu Archiv hinzufügen\n", + " -c --create Archiv erstellen\n", + " -C --directory In angegebenes Verzeichnis entpacken\n", + " -E --encoding Das Encoding des Archivs (nur tar-Dateien)\n", + " -f --force Existierende Dateien überschreiben\n", + " -h --help Diese Hilfe anzeigen\n", + " -l --list Alle Dateien im Archiv auflisten\n", + " -n --no-clobber Dateien niemals überschreiben\n", + " -p --print Eine oder mehr Dateien aus dem Archiv ausgeben", + "\n", + " -q --quiet Ruhiger Modus (keine Ausgabe außer Fehler)\n", + " -t --type Archiv-Typ (gz, lha, tar, tgz, zip)\n", + " -v --verbose Ausführlicher Modus für Datei-Liste\n", + " -x --extract Dateien entpacken" + ], + "2_options_mutually_exclusive": [ + "Fehler: -%[shortopt1] / --%[longopt1] und ", + "-%[shortopt2] / --%[longopt2] schließen sich gegenseitig aus!" + ], + "5_options_mutually_exclusive": [ + "Fehler: -%[shortopt1] / --%[longopt1], -%[shortopt2] / ", + "--%[longopt2], -%[shortopt3] / --%[longopt3], ", + "-%[shortopt4] / --%[longopt4] und\n", + " -%[shortopt5] / --%[longopt5] schließen sich gegenseitig aus!" + ], + "option_takes_no_argument": "%[prog]: Option --%[opt] nimmt kein Argument", + "long_option_requires_argument": [ + "%[prog]: Option --%[opt] benötigt ein Argument" + ], + "option_requires_argument": "%[prog]: Option -%[opt] benötigt ein Argument", + "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", + "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", + "invalid_encoding": "%[prog]: Invalid encoding: %[encoding]", + "writing_not_supported": [ + "Schreiben von Dateien des Typs %[type] wird (noch) nicht unterstützt!" + ], + "failed_to_create_directory": [ + "Fehler beim Erstellen des Verzeichnis %[dir]: %[error]" + ], + "failed_to_open_file": "Fehler beim Öffnen der Datei %[file]: %[error]", + "unknown_archive_type": "Unbekannter Archivtyp: %[type]", + "failed_to_read_file": "Fehler beim Lesen der Datei %[file]: %[error]", + "failed_to_write_file": "Fehler beim Schreiben der Datei %[file]: %[error]", + "failed_to_seek_in_file": "Fehler beim Suchen in Datei %[file]: %[error]", + "file_is_not_a_valid_archive": "Datei %[file] ist kein gültiges Archiv!", + "file_skipped": "übersprungen", + "ask_overwrite": "%[file] überschreiben? [ynAN?]", + "ask_overwrite_help": [ + " y: Ja\n", + " n: Nein\n", + " A: Immer\n", + " N: Nie" + ], + "skipping_file": "Überspringe %[file]...", + "extracting_file": "Entpacke %[file]...", + "extracting_file_percent": "Entpacke %[file]... %[percent]%", + "extracting_file_done": "Entpacke %[file]... fertig", + "cannot_list_gz": "Kann Dateien eines .gz-Archivs nicht auflisten!", + "cannot_extract_specific_file_from_gz": [ + "Kann keine spezifische Datei aus einem .gz-Archiv entpacken!" + ], + "cannot_print_specific_file_from_gz": [ + "Kann keine spezifische Datei aus einem .gz-Archiv ausgeben!" + ], + "list_size": [ + "Größe: ", + [ + {"size == 1": "1 Byte"}, + {"": "%[size] Bytes"} + ] + ], + "list_posix_permissions": "POSIX-Berechtigungen: %[perm]", + "list_owner_account_id": "Besitzerkontennummer: %[id]", + "list_group_owner_account_id": "Gruppenbesitzerkontennummer: %[id]", + "list_owner_account_name": "Besitzerkontenname: %[name]", + "list_group_owner_account_name": "Gruppebesitzerkontenname: %[name]", + "list_header_level": "Header-Level: %[level]", + "list_modification_date": "Änderungsdatum: %[date]", + "list_type_normal": "Typ: Normale Datei", + "list_type_hardlink": "Typ: Harter Link", + "list_type_symlink": "Typ: Symbolischer Link", + "list_link_target": "Zieldateiname: %[target]", + "list_type_character_device": "Typ: Zeichenorientiertes Gerät", + "list_type_block_device": "Typ: Blockorientiertes Gerät", + "list_device_major": "Major-Nummer des Geräts: %[major]", + "list_device_minor": "Minor-Nummer des Geräts: %[minor]", + "list_type_directory": "Typ: Verzeichnis", + "list_type_fifo": "Typ: FIFO", + "list_type_contiguous_file": "Typ: Zusammenhängende Datei", + "list_type_unknown": "Typ: Unbekannt", + "list_compressed_size": [ + "Komprimierte Größe: ", + [ + {"size == 1": "1 Byte"}, + {"": "%[size] Bytes"} + ] + ], + "list_uncompressed_size": [ + "Unkomprimierte Größe: ", + [ + {"size == 1": "1 Byte"}, + {"": "%[size] Bytes"} + ] + ], + "list_compression_method": "Kompressionsmethode: %[method]", + "list_osid": "Betriebssystem-Identifikator: %[osid]", + "list_extensions": "Erweiterungen: %[extensions]", + "list_version_made_by": "Erstellt mit Version: %[version]", + "list_min_version_needed": "Mindestens benötigte Version: %[version]", + "list_general_purpose_bit_flag": "General Purpose Bit Flag: %[gpbf]", + "list_extra_field": "Extra-Feld: %[extra]", + "list_comment": "Kommentar: %[comment]", + "refusing_to_extract_file": "Verweigere Entpacken von %[file]!", + "file_not_in_archive": "Datei %[file] ist nicht im Archiv!", + "print_no_file_specified": [ + "Benötige eine oder mehrere Dateien zum Ausgeben!" + ], + "add_no_file_specified": [ + "Benötige eine oder mehrere Dateien zum Hinzufügen!" + ], + "adding_file": "Füge %[file] hinzu...", + "adding_file_percent": "Füge %[file] hinzu... %[percent]%", + "adding_file_done": "Füge %[file] hinzu... fertig" +} ADDED utils/ofarc/localization/localizations.json Index: utils/ofarc/localization/localizations.json ================================================================== --- utils/ofarc/localization/localizations.json +++ utils/ofarc/localization/localizations.json @@ -0,0 +1,11 @@ +{ + "de": { + "": "de" + }, + "deutsch": { + "": "de" + }, + "german": { + "": "de" + } +} Index: utils/ofdns/Makefile ================================================================== --- utils/ofdns/Makefile +++ utils/ofdns/Makefile @@ -1,23 +1,23 @@ include ../../extra.mk PROG = ofdns${PROG_SUFFIX} SRCS = OFDNS.m -DATA = lang/de.json \ - lang/languages.json +DATA = localization/de.json \ + localization/localizations.json include ../../buildsys.mk PACKAGE_NAME = ofdns ${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2} -CPPFLAGS += -I../../src \ - -I../../src/runtime \ - -I../../src/exceptions \ - -I../.. \ - -DLANGUAGE_DIR=\"${datadir}/ofdns/lang\" +CPPFLAGS += -I../../src \ + -I../../src/runtime \ + -I../../src/exceptions \ + -I../.. \ + -DLOCALIZATION_DIR=\"${datadir}/ofdns/localization\" LIBS := -L../../src -lobjfw \ -L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS} \ ${LIBS} LD = ${OBJC} LDFLAGS += ${LDFLAGS_RPATH} Index: utils/ofdns/OFDNS.m ================================================================== --- utils/ofdns/OFDNS.m +++ utils/ofdns/OFDNS.m @@ -97,13 +97,14 @@ OFDNSResolver *resolver; OFDNSClass DNSClass; #ifdef OF_HAVE_FILES # ifndef OF_AMIGAOS - [OFLocale addLanguageDirectory: @LANGUAGE_DIR]; + [OFLocale addLocalizationDirectory: @LOCALIZATION_DIR]; # else - [OFLocale addLanguageDirectory: @"PROGDIR:/share/ofdns/lang"]; + [OFLocale addLocalizationDirectory: + @"PROGDIR:/share/ofdns/localization"]; # endif #endif #ifdef OF_HAVE_SANDBOX OFSandbox *sandbox = [[OFSandbox alloc] init]; DELETED utils/ofdns/lang/de.json Index: utils/ofdns/lang/de.json ================================================================== --- utils/ofdns/lang/de.json +++ utils/ofdns/lang/de.json @@ -1,18 +0,0 @@ -{ - "usage": "Benutzung: %[prog] -[chst] domain1 [domain2 ...]", - "full_usage": [ - "Optionen:\n", - " -c --class Die anzufragende DNS-Klasse (standardmäßig IN)\n", - " -h --help Diese Hilfe anzeigen\n", - " -s --server Der abzufragende Server\n", - " -t --type Der anzufragende Record-Typ (standardmäßig ALL,\n", - " kann wiederholt werden)" - ], - "long_option_requires_argument": [ - "%[prog]: Option --%[opt] benötigt ein Argument" - ], - "option_requires_argument": "%[prog]: Option -%[opt] benötigt ein Argument", - "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", - "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", - "failed_to_resolve": "Auflösen fehlgeschlagen: %[exception]" -} DELETED utils/ofdns/lang/languages.json Index: utils/ofdns/lang/languages.json ================================================================== --- utils/ofdns/lang/languages.json +++ utils/ofdns/lang/languages.json @@ -1,11 +0,0 @@ -{ - "de": { - "": "de" - }, - "deutsch": { - "": "de" - }, - "german": { - "": "de" - } -} ADDED utils/ofdns/localization/de.json Index: utils/ofdns/localization/de.json ================================================================== --- utils/ofdns/localization/de.json +++ utils/ofdns/localization/de.json @@ -0,0 +1,18 @@ +{ + "usage": "Benutzung: %[prog] -[chst] domain1 [domain2 ...]", + "full_usage": [ + "Optionen:\n", + " -c --class Die anzufragende DNS-Klasse (standardmäßig IN)\n", + " -h --help Diese Hilfe anzeigen\n", + " -s --server Der abzufragende Server\n", + " -t --type Der anzufragende Record-Typ (standardmäßig ALL,\n", + " kann wiederholt werden)" + ], + "long_option_requires_argument": [ + "%[prog]: Option --%[opt] benötigt ein Argument" + ], + "option_requires_argument": "%[prog]: Option -%[opt] benötigt ein Argument", + "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", + "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", + "failed_to_resolve": "Auflösen fehlgeschlagen: %[exception]" +} ADDED utils/ofdns/localization/localizations.json Index: utils/ofdns/localization/localizations.json ================================================================== --- utils/ofdns/localization/localizations.json +++ utils/ofdns/localization/localizations.json @@ -0,0 +1,11 @@ +{ + "de": { + "": "de" + }, + "deutsch": { + "": "de" + }, + "german": { + "": "de" + } +} Index: utils/ofhash/Makefile ================================================================== --- utils/ofhash/Makefile +++ utils/ofhash/Makefile @@ -1,23 +1,23 @@ include ../../extra.mk PROG = ofhash${PROG_SUFFIX} SRCS = OFHash.m -DATA = lang/de.json \ - lang/languages.json +DATA = localization/de.json \ + localization/localizations.json include ../../buildsys.mk PACKAGE_NAME = ofhash ${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2} -CPPFLAGS += -I../../src \ - -I../../src/runtime \ - -I../../src/exceptions \ - -I../.. \ - -DLANGUAGE_DIR=\"${datadir}/ofhash/lang\" +CPPFLAGS += -I../../src \ + -I../../src/runtime \ + -I../../src/exceptions \ + -I../.. \ + -DLOCALIZATION_DIR=\"${datadir}/ofhash/localization\" LIBS := -L../../src -lobjfw \ -L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS} \ ${LIBS} LD = ${OBJC} LDFLAGS += ${LDFLAGS_RPATH} Index: utils/ofhash/OFHash.m ================================================================== --- utils/ofhash/OFHash.m +++ utils/ofhash/OFHash.m @@ -93,13 +93,14 @@ OFSHA256Hash *SHA256Hash = nil; OFSHA384Hash *SHA384Hash = nil; OFSHA512Hash *SHA512Hash = nil; #ifndef OF_AMIGAOS - [OFLocale addLanguageDirectory: @LANGUAGE_DIR]; + [OFLocale addLocalizationDirectory: @LOCALIZATION_DIR]; #else - [OFLocale addLanguageDirectory: @"PROGDIR:/share/ofhash/lang"]; + [OFLocale addLocalizationDirectory: + @"PROGDIR:/share/ofhash/localization"]; #endif while ((option = [optionsParser nextOption]) != '\0') { switch (option) { case '?': @@ -132,11 +133,11 @@ sandbox.allowsUserDatabaseReading = true; for (OFString *path in optionsParser.remainingArguments) [sandbox unveilPath: path permissions: @"r"]; - [sandbox unveilPath: @LANGUAGE_DIR permissions: @"r"]; + [sandbox unveilPath: @LOCALIZATION_DIR permissions: @"r"]; [OFApplication of_activateSandbox: sandbox]; } @finally { [sandbox release]; } DELETED utils/ofhash/lang/de.json Index: utils/ofhash/lang/de.json ================================================================== --- utils/ofhash/lang/de.json +++ utils/ofhash/lang/de.json @@ -1,10 +0,0 @@ -{ - "usage": [ - "Benutzung: %[prog] [--md5] [--ripemd160] [--sha1] [--sha224] ", - "[--sha256] [--sha384] [--sha512] datei1 [datei2 ...]" - ], - "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", - "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", - "failed_to_open_file": "Fehler beim Öffnen der Datei %[file]: %[error]", - "failed_to_read_file": "Fehler beim Lesen der Datei %[file]: %[error]" -} DELETED utils/ofhash/lang/languages.json Index: utils/ofhash/lang/languages.json ================================================================== --- utils/ofhash/lang/languages.json +++ utils/ofhash/lang/languages.json @@ -1,11 +0,0 @@ -{ - "de": { - "": "de" - }, - "deutsch": { - "": "de" - }, - "german": { - "": "de" - } -} ADDED utils/ofhash/localization/de.json Index: utils/ofhash/localization/de.json ================================================================== --- utils/ofhash/localization/de.json +++ utils/ofhash/localization/de.json @@ -0,0 +1,10 @@ +{ + "usage": [ + "Benutzung: %[prog] [--md5] [--ripemd160] [--sha1] [--sha224] ", + "[--sha256] [--sha384] [--sha512] datei1 [datei2 ...]" + ], + "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", + "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", + "failed_to_open_file": "Fehler beim Öffnen der Datei %[file]: %[error]", + "failed_to_read_file": "Fehler beim Lesen der Datei %[file]: %[error]" +} ADDED utils/ofhash/localization/localizations.json Index: utils/ofhash/localization/localizations.json ================================================================== --- utils/ofhash/localization/localizations.json +++ utils/ofhash/localization/localizations.json @@ -0,0 +1,11 @@ +{ + "de": { + "": "de" + }, + "deutsch": { + "": "de" + }, + "german": { + "": "de" + } +} Index: utils/ofhttp/Makefile ================================================================== --- utils/ofhttp/Makefile +++ utils/ofhttp/Makefile @@ -1,27 +1,27 @@ include ../../extra.mk PROG = ofhttp${PROG_SUFFIX} SRCS = OFHTTP.m \ ProgressBar.m -DATA = lang/de.json \ - lang/languages.json +DATA = localization/de.json \ + localization/localizations.json include ../../buildsys.mk PACKAGE_NAME = ofhttp ${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2} -CPPFLAGS += -I../../src \ - -I../../src/runtime \ - -I../../src/exceptions \ - -I../../src/tls \ - -I../.. \ - -DLANGUAGE_DIR='"${datadir}/ofhttp/lang"' \ - -DLIB_PREFIX='"${LIB_PREFIX}"' \ +CPPFLAGS += -I../../src \ + -I../../src/runtime \ + -I../../src/exceptions \ + -I../../src/tls \ + -I../.. \ + -DLOCALIZATION_DIR='"${datadir}/ofhttp/localization"' \ + -DLIB_PREFIX='"${LIB_PREFIX}"' \ -DLIB_SUFFIX='"${LIB_SUFFIX}"' LIBS := -L../../src -L../../src/tls ${OFHTTP_LIBS} -lobjfw \ -L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS} \ ${LIBS} LD = ${OBJC} LDFLAGS += ${LDFLAGS_RPATH} Index: utils/ofhttp/OFHTTP.m ================================================================== --- utils/ofhttp/OFHTTP.m +++ utils/ofhttp/OFHTTP.m @@ -449,13 +449,14 @@ [OFApplication of_activateSandbox: sandbox]; #endif #ifndef OF_AMIGAOS - [OFLocale addLanguageDirectory: @LANGUAGE_DIR]; + [OFLocale addLocalizationDirectory: @LOCALIZATION_DIR]; #else - [OFLocale addLanguageDirectory: @"PROGDIR:/share/ofhttp/lang"]; + [OFLocale addLocalizationDirectory: + @"PROGDIR:/share/ofhttp/localization"]; #endif optionsParser = [OFOptionsParser parserWithOptions: options]; while ((option = [optionsParser nextOption]) != '\0') { switch (option) { DELETED utils/ofhttp/lang/de.json Index: utils/ofhttp/lang/de.json ================================================================== --- utils/ofhttp/lang/de.json +++ utils/ofhttp/lang/de.json @@ -1,108 +0,0 @@ -{ - "usage": "Benutzung: %[prog] -[cehHmoOPqv] uri1 [uri2 ...]", - "full_usage": [ - "Optionen:\n", - " -b --body Angegebene Datei als Body übergeben\n", - " (- für Standard-Eingabe)\n", - " -c --continue Download von existierender Datei ", - "fortsetzen\n", - " -f --force Existierende Datei überschreiben\n", - " -h --help Diese Hilfe anzeigen\n", - " -H --header Einen Header (z.B. X-Foo:Bar) hinzufügen\n", - " -m --method HTTP Request-Methode setzen\n", - " -o --output Ausgabe-Dateiname angeben\n", - " -O --detect-filename Dateiname mittels HEAD-Request ermitteln\n", - " -P --proxy SOCKS5-Proxy angeben\n", - " -q --quiet Ruhiger Modus (keine Ausgabe außer Fehler)", - "\n", - " -v --verbose Ausführlicher Modus (gibt Header aus)\n", - " --insecure TLS-Fehler ignorieren und unsichere\n", - " Weiterleitungen erlauben\n", - " --ignore-status HTTP Status-Code ignorieren" - ], - "invalid_input_header": "%[prog]: Header müssen im Format Name:Wert sein!", - "invalid_input_method": "%[prog]: Ungültige Request-Methode %[method]!", - "invalid_input_proxy": "%[prog]: Proxy muss im Format Host:Port sein!", - "long_argument_missing": "%[prog]: Argument für Option --%[opt] fehlt", - "argument_missing": "%[prog]: Argument für option -%[opt] fehlt", - "option_takes_no_argument": "%[prog]: Option --%[opt] nimmt kein Argument", - "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", - "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", - "quiet_xor_verbose": [ - "%[prog]: -q / --quiet und -v / --verbose schließen sich gegenseitig ", - "aus!" - ], - "output_xor_detect_filename": [ - "%[prog]: -o / --output und -O / --detect-filename schließen sich ", - "gegenseitig aus!" - ], - "output_only_with_one_uri": [ - "%[prog]: -o / --output kann nicht mit mehr als einer URI benutzt ", - "werden!" - ], - "download_resolve_host_failed": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " Host auflösen fehlgeschlagen: %[exception]" - ], - "download_failed_connection_failed": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " Verbindung fehlgeschlagen: %[exception]" - ], - "download_failed_invalid_server_response": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " Ungültige Antwort vom Server!" - ], - "no_tls_support": [ - "%[prog]: Keine TLS-Unterstützung in ObjFW!\n", - " Um via HTTPS runterzuladen müssen Sie entweder ObjFW mit TLS-", - "Unterstützung\n", - " kompilieren oder eine Bibliothek mittels „preload” laden, welche ", - "TLS-Support\n", - " zu ObjFW hinzufügt!" - ], - "download_failed_read_or_write_failed_any": "Lesen oder Schreiben", - "download_failed_read_or_write_failed_read": "Lesen", - "download_failed_read_or_write_failed_write": "Schreiben", - "download_failed_read_or_write_failed": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " %[error]: %[exception]" - ], - "download_failed": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " HTTP Status-Code: %[code]" - ], - "download_error": "Fehler!", - "download_failed_exception": [ - "%[prog]: Fehler beim Download von <%[uri]>!\n", - " %[exception]" - ], - "download_done": "Fertig!", - "invalid_uri": "%[prog]: Ungültige URI: <%[uri]>!", - "invalid_scheme": "%[prog]: Ungültiges Schema: <%[uri]>!", - "type_unknown": "unbekannt", - "size_gib": "%[num] GiB", - "size_mib": "%[num] MiB", - "size_kib": "%[num] KiB", - "size_bytes": [ - [ - {"num == 1": "1 Byte"}, - {"": "%[num] Bytes"} - ] - ], - "size_unknown": "unbekannt", - "info_name_unaligned": "Name: %[name]", - "info_name": "Name: %[name]", - "info_type": "Typ: %[type]", - "info_size": "Größe: %[size]", - "output_already_exists": "%[prog]: Datei %[filename] existiert bereits!", - "failed_to_open_output": [ - "%[prog]: Kann Datei %[filename] nicht öffnen: %[exception]" - ], - "eta_days": "%[num] t ", - "progress_bytes": [ - [ - {"num == 1": "1 Byte "}, - {"": "%[num] Bytes"} - ] - ] -} DELETED utils/ofhttp/lang/languages.json Index: utils/ofhttp/lang/languages.json ================================================================== --- utils/ofhttp/lang/languages.json +++ utils/ofhttp/lang/languages.json @@ -1,11 +0,0 @@ -{ - "de": { - "": "de" - }, - "deutsch": { - "": "de" - }, - "german": { - "": "de" - } -} ADDED utils/ofhttp/localization/de.json Index: utils/ofhttp/localization/de.json ================================================================== --- utils/ofhttp/localization/de.json +++ utils/ofhttp/localization/de.json @@ -0,0 +1,108 @@ +{ + "usage": "Benutzung: %[prog] -[cehHmoOPqv] uri1 [uri2 ...]", + "full_usage": [ + "Optionen:\n", + " -b --body Angegebene Datei als Body übergeben\n", + " (- für Standard-Eingabe)\n", + " -c --continue Download von existierender Datei ", + "fortsetzen\n", + " -f --force Existierende Datei überschreiben\n", + " -h --help Diese Hilfe anzeigen\n", + " -H --header Einen Header (z.B. X-Foo:Bar) hinzufügen\n", + " -m --method HTTP Request-Methode setzen\n", + " -o --output Ausgabe-Dateiname angeben\n", + " -O --detect-filename Dateiname mittels HEAD-Request ermitteln\n", + " -P --proxy SOCKS5-Proxy angeben\n", + " -q --quiet Ruhiger Modus (keine Ausgabe außer Fehler)", + "\n", + " -v --verbose Ausführlicher Modus (gibt Header aus)\n", + " --insecure TLS-Fehler ignorieren und unsichere\n", + " Weiterleitungen erlauben\n", + " --ignore-status HTTP Status-Code ignorieren" + ], + "invalid_input_header": "%[prog]: Header müssen im Format Name:Wert sein!", + "invalid_input_method": "%[prog]: Ungültige Request-Methode %[method]!", + "invalid_input_proxy": "%[prog]: Proxy muss im Format Host:Port sein!", + "long_argument_missing": "%[prog]: Argument für Option --%[opt] fehlt", + "argument_missing": "%[prog]: Argument für option -%[opt] fehlt", + "option_takes_no_argument": "%[prog]: Option --%[opt] nimmt kein Argument", + "unknown_long_option": "%[prog]: Unbekannte Option: --%[opt]", + "unknown_option": "%[prog]: Unbekannte Option: -%[opt]", + "quiet_xor_verbose": [ + "%[prog]: -q / --quiet und -v / --verbose schließen sich gegenseitig ", + "aus!" + ], + "output_xor_detect_filename": [ + "%[prog]: -o / --output und -O / --detect-filename schließen sich ", + "gegenseitig aus!" + ], + "output_only_with_one_uri": [ + "%[prog]: -o / --output kann nicht mit mehr als einer URI benutzt ", + "werden!" + ], + "download_resolve_host_failed": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " Host auflösen fehlgeschlagen: %[exception]" + ], + "download_failed_connection_failed": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " Verbindung fehlgeschlagen: %[exception]" + ], + "download_failed_invalid_server_response": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " Ungültige Antwort vom Server!" + ], + "no_tls_support": [ + "%[prog]: Keine TLS-Unterstützung in ObjFW!\n", + " Um via HTTPS runterzuladen müssen Sie entweder ObjFW mit TLS-", + "Unterstützung\n", + " kompilieren oder eine Bibliothek mittels „preload” laden, welche ", + "TLS-Support\n", + " zu ObjFW hinzufügt!" + ], + "download_failed_read_or_write_failed_any": "Lesen oder Schreiben", + "download_failed_read_or_write_failed_read": "Lesen", + "download_failed_read_or_write_failed_write": "Schreiben", + "download_failed_read_or_write_failed": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " %[error]: %[exception]" + ], + "download_failed": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " HTTP Status-Code: %[code]" + ], + "download_error": "Fehler!", + "download_failed_exception": [ + "%[prog]: Fehler beim Download von <%[uri]>!\n", + " %[exception]" + ], + "download_done": "Fertig!", + "invalid_uri": "%[prog]: Ungültige URI: <%[uri]>!", + "invalid_scheme": "%[prog]: Ungültiges Schema: <%[uri]>!", + "type_unknown": "unbekannt", + "size_gib": "%[num] GiB", + "size_mib": "%[num] MiB", + "size_kib": "%[num] KiB", + "size_bytes": [ + [ + {"num == 1": "1 Byte"}, + {"": "%[num] Bytes"} + ] + ], + "size_unknown": "unbekannt", + "info_name_unaligned": "Name: %[name]", + "info_name": "Name: %[name]", + "info_type": "Typ: %[type]", + "info_size": "Größe: %[size]", + "output_already_exists": "%[prog]: Datei %[filename] existiert bereits!", + "failed_to_open_output": [ + "%[prog]: Kann Datei %[filename] nicht öffnen: %[exception]" + ], + "eta_days": "%[num] t ", + "progress_bytes": [ + [ + {"num == 1": "1 Byte "}, + {"": "%[num] Bytes"} + ] + ] +} ADDED utils/ofhttp/localization/localizations.json Index: utils/ofhttp/localization/localizations.json ================================================================== --- utils/ofhttp/localization/localizations.json +++ utils/ofhttp/localization/localizations.json @@ -0,0 +1,11 @@ +{ + "de": { + "": "de" + }, + "deutsch": { + "": "de" + }, + "german": { + "": "de" + } +}