#
# Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

error.multiple.main.operations=Du kan inte ange flera alternativ av typen '-cuxtid'
error.cant.open=kan inte \u00F6ppna: {0}
error.illegal.option=Otill\u00E5tet alternativ: {0}
error.unrecognized.option=ok\u00E4nt alternativ: {0}
error.missing.arg=alternativet {0} kr\u00E4ver ett argument
error.bad.file.arg=Fel vid tolkning av filargument
error.bad.option=Ett av alternativen -{ctxuid} m\u00E5ste anges.
error.bad.cflag=f\u00F6r c-flaggan m\u00E5ste manifest- eller indatafiler anges.
error.bad.uflag=f\u00F6r u-flaggan m\u00E5ste manifest-, e-flagg- eller indatafiler anges.
error.bad.eflag=e-flaggan och manifest med attributet Main-Class kan inte anges \ntillsammans.
error.bad.dflag=alternativet '-d, --describe-module' kr\u00E4ver att ingen indatafil anges
error.bad.reason=ogiltig orsak: {0} m\u00E5ste vara deprecated, deprecated-for-removal eller incubating
error.nosuch.fileordir={0} : det finns ingen s\u00E5dan fil eller katalog
error.write.file=Ett fel intr\u00E4ffade vid skrivning till befintlig jar-fil.
error.create.dir={0} : kunde inte skapa n\u00E5gon katalog
error.incorrect.length=ogiltig l\u00E4ngd vid bearbetning: {0}
error.create.tempfile=Kunde inte skapa en tillf\u00E4llig fil
error.hash.dep={0}-beroenden f\u00F6r hashningsmodulen, kan inte hitta modulen {1} p\u00E5 moduls\u00F6kv\u00E4gen
error.module.options.without.info=--module-version eller --hash-modules utan module-info.class
error.no.operative.descriptor=Ingen operativ deskriptor f\u00F6r utg\u00E5van: {0}
error.no.root.descriptor=Ingen rotmoduldeskriptor, ange --release
error.unable.derive.automodule=Kan inte h\u00E4rleda moduldeskriptor f\u00F6r: {0}
error.unexpected.module-info=Ov\u00E4ntad moduldeskriptor, {0}
error.module.descriptor.not.found=Moduldeskriptorn hittades inte
error.invalid.versioned.module.attribute=Ogiltigt attribut f\u00F6r moduldeskriptor, {0}
error.missing.provider=Tj\u00E4nsteleverant\u00F6ren hittades inte: {0}
error.release.value.notnumber=utg\u00E5va {0} \u00E4r inte giltig
error.release.value.toosmall=utg\u00E5va {0} \u00E4r inte giltig, m\u00E5ste vara >= 9
error.release.unexpected.versioned.entry=ov\u00E4ntad versionshanterad post, {0}, f\u00F6r utg\u00E5van {1}
error.validator.jarfile.exception=kan inte validera {0}: {1}
error.validator.jarfile.invalid=ogiltig jar-fil f\u00F6r flera utg\u00E5vor, {0}, har tagits bort
error.validator.bad.entry.name=postnamnet {0} \u00E4r felaktigt utformat
error.validator.version.notnumber=postnamnet {0} har inget versionsnummer
error.validator.entryname.tooshort=postnamnet {0} \u00E4r f\u00F6r kort, inte en katalog
error.validator.isolated.nested.class=posten {0} \u00E4r en isolerad kapslad klass
error.validator.new.public.class=posten {0} inneh\u00E5ller en ny allm\u00E4n klass som inte kan hittas i basposterna
error.validator.incompatible.class.version=posten {0} har en klassversion som \u00E4r inkompatibel med en tidigare version
error.validator.different.api=posten {0} inneh\u00E5ller en klass med ett annat api fr\u00E5n en tidigare version
error.validator.names.mismatch=posten {0} inneh\u00E5ller en klass med det interna namnet {1}, namnen matchar inte
error.validator.info.name.notequal=module-info.class i en versionshanterad katalog inneh\u00E5ller ett felaktigt namn
error.validator.info.requires.transitive=module-info.class i en versionshanterad katalog inneh\u00E5ller fler "requires transitive"
error.validator.info.requires.added=module-info.class i en versionshanterad katalog inneh\u00E5ller fler "requires"
error.validator.info.requires.dropped=module-info.class i en versionshanterad katalog inneh\u00E5ller saknade "requires"
error.validator.info.exports.notequal=module-info.class i en versionshanterad katalog inneh\u00E5ller olika "exports"
error.validator.info.opens.notequal=module-info.class i en versionshanterad katalog inneh\u00E5ller olika "opens"
error.validator.info.provides.notequal=module-info.class i en versionshanterad katalog inneh\u00E5ller olika "provides"
error.validator.info.version.notequal={0}: module-info.class i en versionshanterad katalog inneh\u00E5ller olika "version"
error.validator.info.manclass.notequal={0}: module-info.class i en versionshanterad katalog inneh\u00E5ller olika "main-class"
warn.validator.identical.entry=Varning: posten {0} inneh\u00E5ller en klass som\n\u00E4r identisk med en post som redan finns i jar-filen
warn.validator.resources.with.same.name=Varning: posten {0}, flera resurser med samma namn
warn.validator.concealed.public.class=Varning: posten {0} \u00E4r en allm\u00E4n klass\ni ett dolt paket. Om du placerar den h\u00E4r jar-filen p\u00E5 klass\u00F6kv\u00E4gen leder\ndet till inkompatibla allm\u00E4nna gr\u00E4nssnitt
warn.release.unexpected.versioned.entry=ov\u00E4ntad versionshanterad post, {0}
out.added.manifest=tillagt manifestfil
out.added.module-info=lade till module-info: {0}
out.automodule=Ingen moduldeskriptor hittades. H\u00E4rledd automatisk modul.
out.update.manifest=uppdaterat manifest
out.update.module-info=uppdaterade module-info: {0}
out.ignore.entry=ignorerar posten {0}
out.adding=l\u00E4gger till: {0}
out.deflated=({0}% packat)
out.stored=(0% lagrat)
out.create=\  skapad: {0}
out.extracted=extraherat: {0}
out.inflated=\ uppackat: {0}
out.size=(in = {0}) (ut = {1})

usage.compat=Kompatibilitetsgr\u00E4nssnitt:\nSyntax: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\nAlternativ:\n    -c  skapa nytt arkiv\n    -t  lista inneh\u00E5llsf\u00F6rteckning f\u00F6r arkiv\n    -x  extrahera namngivna (eller alla) filer fr\u00E5n arkivet\n    -u  uppdatera befintligt arkiv\n    -v  generera utf\u00F6rliga utdata till standardutdata\n    -f  ange namnet p\u00E5 arkivfilen\n    -m  inkludera manifestinformation fr\u00E5n den angivna manifestfilen\n    -n  utf\u00F6r Pack200-normalisering n\u00E4r ett nytt arkiv har skapats\n    -e  ange applikationsing\u00E5ngspunkt f\u00F6r frist\u00E5ende applikation \n        som medf\u00F6ljer i en jar-programfil\n    -0  lagra endast, anv\u00E4nd inte ZIP-komprimering\n    -P  beh\u00E5ll komponenter f\u00F6r inledande '/' (absolut s\u00F6kv\u00E4g) och ".." (\u00F6verordnad  katalog) fr\u00E5n filnamn\n    -M  skapa inte en manifestfil f\u00F6r posterna\n    -i  generera indexinformation f\u00F6r de angivna jar-filerna\n    -C  \u00E4ndra till den angivna katalogen och inkludera f\u00F6ljande fil\nOm en fil \u00E4r en katalog bearbetas den rekursivt.\nNamnen p\u00E5 manifestfilen, arkivfilen och ing\u00E5ngspunkten anges med samma\nordning som flaggorna 'm', 'f' och 'e'.\n\nExempel 1: arkivera tv\u00E5 klassfiler i ett arkiv med namnet classes.jar: \n       jar cvf classes.jar Foo.class Bar.class \nExempel 2: anv\u00E4nd den befintliga manifestfilen 'mymanifest' och arkivera alla\n           filer i katalogen 'foo/' till 'classes.jar': \n       jar cvfm classes.jar mymanifest -C foo/ .\n

main.usage.summary=Syntax: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
main.usage.summary.try=F\u00F6rs\u00F6k med 'jar --help' f\u00F6r mer information.

main.help.preopt=Syntax: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...\njar skapar ett arkiv f\u00F6r klasser och resurser, och kan \u00E4ndra och \u00E5terst\u00E4lla\nenskilda klasser och resurser fr\u00E5n ett arkiv.\n\n Exempel:\n # Skapa ett arkiv med namnet classes.jar med tv\u00E5 klassfiler:\n jar --create --file classes.jar Foo.class Bar.class\n # Skapa ett arkiv med ett befintligt manifest med alla filerna i 'foo/':\n jar --create --file classes.jar --manifest mymanifest -C foo/ .\n # Skapa ett modul\u00E4rt jar-arkiv, d\u00E4r moduldeskriptorn finns i\n # classes/module-info.class:\n jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ classes resources\n # Uppdatera ett befintligt icke-modul\u00E4rt jar-arkiv till ett modul\u00E4rt jar-arkiv:\n jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0\n     -C foo/ module-info.class\n # Skapa ett jar-arkiv f\u00F6r flera utg\u00E5vor och placera vissa av filerna i katalogen 'META-INF/versions/9':\n jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes\n\nOm du vill f\u00F6rkorta eller f\u00F6renkla kommandot jar kan du ange argument i en separat\ntextfil och \u00F6verf\u00F6ra den med tecknet '@' som prefix.\n\n Exempel:\n # L\u00E4s ytterligare alternativ och en lista \u00F6ver klassfiler fr\u00E5n filen 'classes.list'\n jar --create --file my.jar @classes.list\n
main.help.opt.main=\ Huvudfunktionsl\u00E4ge:\n
main.help.opt.main.create=\  -c, --create               Skapa arkivet
main.help.opt.main.generate-index=\  -i, --generate-index=FILE  Generera indexinformation f\u00F6r de angivna jar-\n                             arkiven
main.help.opt.main.list=\  -t, --list                 Listar inneh\u00E5llsf\u00F6rteckningen f\u00F6r arkivet
main.help.opt.main.update=\  -u, --update               Uppdatera ett befintligt jar-arkiv
main.help.opt.main.extract=\  -x, --extract              Extrahera namngivna (eller alla) filer fr\u00E5n arkivet
main.help.opt.main.describe-module=\  -d, --describe-module      Skriv ut moduldeskriptorn eller det automatiska modulnamnet
main.help.opt.any=\ \u00C5tg\u00E4rdsmodifierare som \u00E4r giltiga i alla l\u00E4gen:\n\n  -C DIR                     \u00C4ndra till den angivna katalogen och inkludera\n                             f\u00F6ljande fil
main.help.opt.any.file=\  -f, --file=FILE            Namnet p\u00E5 arkivfilen. N\u00E4r det utel\u00E4mnas anv\u00E4nds stdin eller\n                             stdout beroende p\u00E5 \u00E5tg\u00E4rden\n      --release VERSION      Placerar alla f\u00F6ljande filer i en versionshanterad katalog\n                             i jar-filen (t.ex. META-INF/versions/VERSION/)
main.help.opt.any.verbose=\  -v, --verbose              Generera utf\u00F6rliga utdata till standardutdata
main.help.opt.create=\ \u00C5tg\u00E4rdsmodifierare som endast \u00E4r giltiga i l\u00E4get create:\n
main.help.opt.create.normalize=\  -n, --normalize            Normalisera informationen i det nya jar-arkivet\n                             n\u00E4r det har skapats
main.help.opt.create.update=\ \u00C5tg\u00E4rdsmodifierare som endast \u00E4r giltiga i l\u00E4gena create och update:\n
main.help.opt.create.update.main-class=\  -e, --main-class=CLASSNAME Applikationsing\u00E5ngspunkten f\u00F6r frist\u00E5ende\n                             applikationer paketerad i ett modul\u00E4rt, eller k\u00F6rbart,\n                             jar-arkiv
main.help.opt.create.update.manifest=\  -m, --manifest=FILE        Inkludera manifestinformationen fr\u00E5n den angivna\n                             manifestfilen
main.help.opt.create.update.no-manifest=\  -M, --no-manifest          Skapa inte en manifestfil f\u00F6r posterna
main.help.opt.create.update.module-version=\      --module-version=VERSION    Modulversionen vid skapande av ett modul\u00E4rt\n                             jar-arkiv eller vid uppdatering av ett icke-modul\u00E4rt jar-arkiv
main.help.opt.create.update.hash-modules=\      --hash-modules=PATTERN Ber\u00E4kna och registrera hashningarna f\u00F6r moduler som\n                             matchar det angivna m\u00F6nstret och som \u00E4r direkt eller\n                             indirekt beroende av att ett modul\u00E4rt jar-arkiv skapas\n                             eller att ett icke-modul\u00E4rt jar-arkiv uppdateras
main.help.opt.create.update.module-path=\  -p, --module-path          Plats f\u00F6r modulberoende f\u00F6r att generera\n                             hashningen
main.help.opt.create.update.do-not-resolve-by-default=\      --do-not-resolve-by-default  Exkludera fr\u00E5n standardrotupps\u00E4ttningen med moduler
main.help.opt.create.update.warn-if-resolved=\      --warn-if-resolved     Tips f\u00F6r ett verktyg f\u00F6r att utf\u00E4rda en varning om modulen\n                             har l\u00F6sts. deprecated, deprecated-for-removal,\n                             eller incubating
main.help.opt.create.update.index=\ \u00C5tg\u00E4rdsmodifierare som endast \u00E4r giltiga i l\u00E4gena create, update och generate-index:\n
main.help.opt.create.update.index.no-compress=\  -0, --no-compress          Endast lagring, anv\u00E4nd ingen ZIP-komprimering
main.help.opt.other=\ \u00D6vriga alternativ:\n
main.help.opt.other.help=\  -h, --help[:compat]        Visa den h\u00E4r hj\u00E4lpen eller kompatibilitetshj\u00E4lpen (valfritt)
main.help.opt.other.help-extra=\      --help-extra           Visa hj\u00E4lp f\u00F6r extra alternativ
main.help.opt.other.version=\      --version              Skriv ut programversion
main.help.postopt=\ Ett arkiv \u00E4r ett modul\u00E4rt jar-arkiv om en moduldeskriptor, 'module-info.class',\n finns i roten av de angivna katalogerna eller det angivna jar-arkivet.\n F\u00F6ljande \u00E5tg\u00E4rder \u00E4r endast giltiga vid skapande av ett modul\u00E4rt jar-arkiv och\n vid uppdatering av ett befintligt icke-modul\u00E4rt jar-arkiv: '--module-version',\n '--hash-modules' och '--module-path'.\n\n Obligatoriska och valfria alternativ f\u00F6r l\u00E5nga alternativ \u00E4r \u00E4ven obligatoriska\n respektive valfria f\u00F6r alla motsvarande korta alternativ.
