Binary files /tmp/33Akd0PpBm/classified-ads-0.07/classified_ads_fi.qm and /tmp/4uUP0cdpAJ/classified-ads-0.09/classified_ads_fi.qm differ diff -Nru classified-ads-0.07/classified_ads_fi.ts classified-ads-0.09/classified_ads_fi.ts --- classified-ads-0.07/classified_ads_fi.ts 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/classified_ads_fi.ts 2015-10-10 12:49:33.000000000 +0000 @@ -5,40 +5,43 @@ AttachmentListDialog - + Save file to disk.. + Context menu item text for menu, that appears when right-mouse is clicked on top of a file in a list. Tallenna tiedostojärjestelmälle.. - - + + files - T -tiedostot + In file open dialog this is text specifying what kind of files to include in listing, filtered by file name suffix. For example, user wants only PNG files, then text appearing in dialog filter field would say "PNG files (*.png)" and this work "files" here is the word after the word PNG. + tiedostot - + Choose file name for saving + Dialog title text for dialog asking user to give a name to file for purpose of saving it to filesystem. Valitse nimi tiedostolle - + Error + Dialog title text for error dialog. Vikaa - + File open error - Gives no explanation about reason file open failure? + This gives (no) explanation about reason for "file open failure"? Vika tiedoston avaamisessa BinaryFileListingModel - + Name or fingerprint of file - SHA1 digest == tiivistenumero + Title text in a listing view where list of shared files are listed. This particular text gives text for column, where "name or fingerprint of file" is listed. Fingerprint in practice means SHA1 digest. Tiedoston nimi tai SHA1 tiiviste @@ -48,683 +51,811 @@ Date + Header text for a column-list. The column that gets its header text from this string, is the date-column of an classified ad. Aika Subject + Header text for a column-list. The column that gets its header text from this string, is the subject-column of an classified ad. Aihe ClassifiedAdsModel - + Buying + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the first word of that phrase. Ostetaan - + Selling + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Cars in Estonia" and this combobox text here is the first word of that phrase. Myydään - + Giving away + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Cars in Estonia" and this combobox text here is the first+2nd word of that phrase. Annetaan - + Wanting + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Cars in Estonia" and this combobox text here is the first word of that phrase. Halutaan - + Renting + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Renting of Cars in Estonia" and this combobox text here is the first word of that phrase. Vuokrataan - + Announcement + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Cars in Estonia" and this combobox text here is the first word of that phrase. Ilmoitetaan - + Cars + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the 3rd word of that phrase. Autoja - + Boats + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Boats in Estonia" and this combobox text here is the 3rd word of that phrase. Veneitä - + Bikes + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Bikes in Estonia" and this combobox text here is the 3rd word of that phrase. Pyöriä - + Other vehicles + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Other vehicles in Estonia" and this combobox text here is the 3rd+4th word of that phrase. Muita ajoneuvoja - + Vehicle parts + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of vehicle parts in Estonia" and this combobox text here is the 3rd+4th word of that phrase. Ajoneuvon osia - + Habitation + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Habitation in Estonia" and this combobox text here is the 3rd word of that phrase. Asumuksia - + Household appliances + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Household appliances in Estonia" and this combobox text here is the 3rd+4th word of that phrase. Kodin tavaroita - + Furniture + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Furniture in Estonia" and this combobox text here is the 3rd word of that phrase. Huonekaluja - + Clothing + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Clothing in Estonia" and this combobox text here is the 3rd word of that phrase. Vaatteita - + Tools + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. Työkaluja - + Sports + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. Urheiluvälineitä - + Music + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Music in Estonia" and this combobox text here is the 3rd word of that phrase. Musiikkivälineitä - + Books + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Books in Estonia" and this combobox text here is the 3rd word of that phrase. Kirjoja - + Movies + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Movies in Estonia" and this combobox text here is the 3rd word of that phrase. Elokuvia - + Animals + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Animals in Estonia" and this combobox text here is the 3rd word of that phrase. Eläimiä - + Electronics + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Electronics in Estonia" and this combobox text here is the 3rd word of that phrase. Sähkölaitteita - + Jobs + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Jobs in Estonia" and this combobox text here is the 3rd word of that phrase. Työpaikkoja - + Transportation + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Transportation in Estonia" and this combobox text here is the 3rd word of that phrase. Kuljetuksia - + Services + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Services in Estonia" and this combobox text here is the 3rd word of that phrase. Palveluita - + Healthcare + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Healthcare in Estonia" and this combobox text here is the 3rd word of that phrase. Terveydenhoitoa - + Foodstuff + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Foodstuff in Estonia" and this combobox text here is the 3rd word of that phrase. Ruokatarvikkeita - + Software + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Software in Estonia" and this combobox text here is the 3rd word of that phrase. Ohjelmistoja - + Events + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Events in Estonia" and this combobox text here is the 3rd word of that phrase. Tapahtumia - + Education + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Education in Estonia" and this combobox text here is the 4th word of that phrase. Koulutusta - + Finance + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Finance in Estonia" and this combobox text here is the 3rd word of that phrase. Raha-asioita - + Jewelry + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Jewelry in Estonia" and this combobox text here is the 3rd word of that phrase. Koruja - + Religious rituals + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of religious rituals in Estonia" and this combobox text here is the 3rd+4th word of that phrase. Uskonnollisia toimituksia - + Philosophy + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Estonia" and this combobox text here is the 3rd word of that phrase. Filosofiaa - + Any country + Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Any country" and this combobox text here is end part "Any country" specifying the location where announcement. Missä maassa vain ConnectionListingModel - + Peer network address + Tool tip text. When user hovers mouse cursor on top of network address field in a dialog, this text will appear. Solmun verkko-osoite - + Inbound connections are those where peer initiated connection + Tool tip text. When user hovers mouse cursor on top of field specifying if connection is inbound/outbound this text will appear. Sisääntulevat yhteydet ovat sellaisia, missä etäjärjestelmä aloitti yhteyden - + Data transferred from peer to your node + Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. Sinun tietokoneeseesi tästä solmusta siirretty tietomäärä - + Data transferred to peer from your node + Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. Sinun tietokoneestasi tähän verkon solmuun siirretty tietomäärä - + Time when connection was opened + Tool tip text. When user hovers mouse cursor on top of time-field in a dialog, this text will appear. Yhteyden avaamisaika - + Address + Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows network address (like IP-address) Verkko-osoite - + Inbound + Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows direction (inbound/outbound) of the connection Sisääntuleva - + Bytes in + Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred inside Oktettia sisään - + Bytes out + Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred outside Oktettia ulos - + Open time + Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows time when connection was opened. Avaamisaika ContactListingModel - + Yes + Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the positive case "user is trusted". Tosi on - + Unknown + Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the negative case "user trust is unknown". Tuntematon - + Actual network address (SHA1) of the contact + Tool tip text. When user hovers mouse cursor on top of field where operators SHA1 digest is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. Operaattorin varsinainen verkko-osoite (SHA1) - + Locally given nickname ; user may set her own nickname himself + Tool tip text. When user hovers mouse cursor on top of field where operators locally given nickname is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. Antamasi liikanimi; operaattori voi antaa itselleen eri liikanimen - + Public statement if this operator to be trusted in transactions + Tool tip text. When user hovers mouse cursor on top of field where operators trustworthiness (boolean value) in users opinion is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. Julkinen lausunto operaattorin luotettavuudesta asioiden hoitamisessa - + Address + Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators network address (the SHA digest of operator) Osoite - + Nickname + Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators nickname Liikanimi - + Publicly trusted + Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators trustworthiness. Julkisesti luotettu ContentEncryptionModel - + SSL key generation went wrong, calling exit.. + Error message that is displayed when SSL key generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. SSL-avaimen rakentaminen epäonnistui, pakko poistua.. - + x509 cert generation went wrong, calling exit.. + Error message that is displayed when x509 certificate generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. x509-sertifikaatin rakentaminen epäonnistui, pakko poistua.. - - + + RSA Private key key saving went wrong + Error message that is displayed when RSA private key could not be saved to database. This is rather fatal error, the operator profile that user tried to create will be un-usable. Salaisen RSA-avaimen tallettaminen epäonnistui - + No suitable de-cryption key found + Error message text. This is displayed in situation where user tried to access content that he does not have encryption key for. This may appear frequently during normal operation and is no fatal error, only telling user that he is not going to see the content he was trying to access. Avaamiseen sopivaa salausavainta ei ole käytettävissä Controller - + Classified ads + Window title text for whole application. Luokitellut ilmoitukset - + Enter password for protection of your messages: + Prompt text for password dialog Anna salasana viestiesi sisällön turvaamiseksi - + Fetching item from network.. + Dialog text for a wait dialog (a progress-bar like thing will be shown next to this text and user is supposed to sit down and wait a moment..) Kaivellaan kohdetta verkon syövereistä.. - + E&xit + Menu item text used in "File" menu item and when this particular item is selected, application will close Sulje - + Exit the application + Menu item tooltip-text used in "File" menu entry and when this particular item is selected, application will close Sulje sovellus - + &About + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it Tietoja - + Show the application's About box + Tooltip-text of menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it Esitä selvitys sovelluksen tarkoituksesta - + &Change password + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password Vaihda salasana - + Change password of current profile + Tooltip-item for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password Valitse valitulle operaattori-profiilille uusi salasana - + Create &new profile + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile Luo uusi profiili - + Makes a brand new user profile + Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile Luo operaattorille uuden profiilin - + &Delete current profile + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open operator profile Poista valittu profiili - + Deletes currently open profile + Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open profile Pysyvästi poistaa tämänhetkisen valitun profiilin - + &Select another profile + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next Valitse käyttöön toinen profiilii - + If you have multitude of profiles + Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next Jos olet luonnut useamman profiilin, voit tästä valita toisen - + Settings.. + Menu item text used in "File" menu and when this particular item is selected, application will show a settings-dialog Asetukset.. - + Node-wide settings.. + Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next Solmun asetukset.. - + Network status.. + Menu item text used in "File" menu and when this particular item is selected, application will show a dialog detailing network connectivity of the node Verkko-yhteydet.. - + Search.. + Menu item text used in "File" menu and when this particular item is selected, application will show a search-dialog Etsi.. - + &File + Menu bar title text for "File" menu. Tiedosto - + Enter new password: + Password dialog prompt. Anna uusi salasana: - - + + Activate another profile with password + Password dialog prompt. In this case the password dialog is not used for giving initial password or change password but instead password is typed for the reason of selection of another operator profile to be used. Valitse uusi profiili antamalla haluamasi profiilin salasana - + Can't delete only profile. + Error message shown in dialog in situation where user tried to delete the last (one and only) operator profile in machine. There needs to be at least one profile and this error message is shown if user tries to get around that limitation. Viimeistä jäljellä olevaa profiilia ei voi poistaa. - + Permanently discard profile? + Text shown in title of confirmation dialog. Poistetaanko profiili lopullisesti? - + There will be NO way to access content of this profile later + Text shown inside a confirmation dialog. Dialog will have buttons OK and Cancel and this is the question. Tämän profiilin viestejä tai muuta sisältöä ei ole mahdollista nähdä enää - + Cant load node cert or key cert + Error message that is shown in a dialog in situation where previously stored encryption keys of the node could not be accessed. Rather fatal error, will render node un-usable. Solmun salausavaimen tai sertifikaatin lataaminen ei onnistunut - + File error + Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a filesystem file operation. Actual explanation of the error is shown inside the dialog whose title text this is. Tiedostokäsittelyyn liittyvä virhe - + Database error + Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during database operation. Actual explanation of the error is shown inside the dialog whose title text this is. Tietokantavirhe - - + + Cryptographic module + Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a operation inside crypto-module. Actual explanation of the error is shown inside the dialog whose title text this is. Salausjärjestelmän virhe - + Database module + Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during operation inside database module. Actual explanation of the error is shown inside the dialog whose title text this is. Tietokannan vikatila - + Bad password + Error message dialog title text for a dialog that is shown in a dialog in situation when password supplied by user was not good for any purpose. Actual explanation of the error is shown inside the dialog whose title text this is. Kelpaamaton salasana - + Could not find item from network.. + Error message text inside a dialog when user had requested for an item to be opened but program could not find the requested item. Haluttua kohdetta ei verkosta löytynyt.. - + SHA1: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies SHA1 digest of the file. SHA1: - + Mime-Type: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies mime-type of the file Mime-Tyyppi: - + Description: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that gives longer explanation of the file Kuvaus: - + Publisher: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of publisher of the file (in practice, who uploaded the file into classified ads) Julkaisija: - + Content owner: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of the person (or organization) that owns (in copyright sense) the file or its contents. Sisällön omistaja: - + License: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies the license of the file Lisenssi: - + Name: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file name Nimi: - + Date: + Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file date Päivämäärä: DialogBase - - + + File way too big + Error message text shown inside dialog when user tries to select for operation a file that is much much too big. (there is currently 2MB size limit for shared files) Tiedosto on ihan liian iso - - + + File too big + Error message text shown inside dialog when user tries to select for operation a file that is just-and-just too big. (there is currently 2MB size limit for shared files) Tiedosto on liian iso - - + + File open error + Error message text shown inside dialog when user tries to select for operation a file that can not be opened (for example due to file permission reasons) Ongelma tiedoston avaamisessa - + Select file to be published + Dialog title text. Dialog prompts user to select the filesystem file that will be published inside classified ads. Valitse julkaistava tiedosto - + Files (*.*) + Text for file type filter field in file-selection-dialog Kaikki tiedostot (*.*) EditContactDialog - + Error + Title text of error dialog. Vikaa - + Operator addr is not valid + Contet text of error dialog. Shown after user has tried to enter operator address with intent of adding it to contact-list and the operator address fails format validation. Operaattorin osoite ei ole sopivaa muotoa FrontWidget - + Classified ads + Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the first tab. Luokitellut ilmoitukset - + My profile + Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 2nd tab. Oma profiili - + Contacts + Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 3rd tab. Osoitekirja - + Private messages + Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 4th tab. Yksityiset viestit - + Add shared file.. + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, a dialog will appear asking which file to share Lisää tiedosto jakoon - + Stop advertising selected shared file + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will no longer be shared Lakkaa mainostamasta valittua jaettua tiedostoa - + Save file to disk.. + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will be saved to filesystem Tallenna tiedosto tiedostojärjestelmälle - + View file information.. + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, information dialog about selected file will be shown Tarkastele tiedoston ominaisuuksia.. - + Copy file address (SHA1) to clipboard.. + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, SHA digest of the selected file will be copied to clipboard. Kopioi tiedoston osoite (SHA1) leikepöydälle.. - + Edit+publish new text document.. + Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, an editor will be displayed prompting user to enter text that will then be published for other users to see. Muokkaa ja julkaise uusi tekstidokumentti.. - + Open File + Dialog title text for "file open" dialog Avaa tiedosto - - + + Files (*.*) + Text for filter field of file selection dialog Kaikki tiedostot (*.*) - - - + + + Error + Error dialog title text. Actual error message will be shown inside dialog whose title is this text. Vikaa.. - + Can't load image + Error dialog content text. Shown when image file that user selected could not be opened (maybe because file permission problem or maybe image format issue or ..) Kuvan avaaminen ei onnistu - - + + Profile not in database + Error dialog title text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. Profiilia ei tietovarastosta löydy - - + + Try viewing profile first to obtain data + Error dialog content text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. Yritä valita profiili katseltavaksi ensin, yritä sitten uudelleen - + Select file to be published + File selection title text. Prompts user to select a file for publish purpose. Valitse julkaistava tiedosto - + File way too big + Error text shown in dialog. Shown in situation where user selected a file that really exceeds size limit (of 2MB) Tiedosto on aivan liian suuri - + File too big + Error text shown in dialog. Shown in situation where user selected a file that slightly exceeds size limit (of 2MB) Tiedosto on liian suuri - - + + File open error + Error text shown in dialog. Shown in situation where user selected a file that could for some reason not be opened Ongelma tiedoston avaamisessa - - + + files + Part of filter text field in file selection dialog. If for instance user tries to open PNG files, then the text in filter field will be "PNG files (*.png)" and this word is the 2nd word in the phrase. kaikki tiedostot - + Choose file name for saving + File selection dialog title text. Dialog prompts user to select location+name for an file to be exported into filesystem. Valitse nimi tallennettavalle tiedostolle - + @@ -733,6 +864,7 @@ Add Image + Text shown in placeholder for operators image in situation where user has not yet selected any image. In practice it prompts user to insert image by clicking at the text. @@ -742,25 +874,28 @@ - + Article not found from local storage + Error message dialog content text shown when user tried to access article, that was not stored in local database Artikkelia ei paikallisesta tietokannasta löydy - - + + Trusted by %1 SHA1 %2 + Tool-tip text. Shown on top of operators address when user hovers mouse on top of the address field. The %1 will be replaced by nickname of an operator who trusts this particular operator. The %2 will be replaced by SHA1 digest of the operator who trusts the operator whose SHA1 is under mouse cursor. Johon luottaa %1 SHA1 %2 - + Time of last update + Tool tip text. Shown when user howers mouse on top of operators nickname field. In code a date-string will be concatenated to this string, so in practice in the UI it will read "Time of last update 31 aug 2015" or similar. Viimeinen päivitysajankohta - + @@ -768,160 +903,188 @@ Image Selected) + Text for image placeholder, shown in situation where another operator has not selected any image for her.This text is shown place of the missing image. (Ei Kuvaa -Valittuna) +Valittuna) + - + Edit contact.. + Context menu item text. Context-menu is related to frequent-contacts column-view. Muokkaa profiilin tietoja - + &Reply to sender + Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the classified ad currently on display Vastaa lähettäjälle - + Reply to &forum + Push button text. Pushing the button will open an editor prompting user to edit+send a reply to classified ad currently on display Vastaa foorumille - + &Post new ad + Push button text. Pushing the button will open an editor prompting user to edit+send a new classified ad. Uusi ilmoitus - + &Public comment + Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the classified ad currently on display Uusi kommentti - + &View profile + Push button text. Pushing the button will switch to view detailing operator who sent the classified ad currently on display Katsele profiilia - - + + Attachments.. + Push button text. Pushing the button will open a a listing of files that are attached to classified ad currently on display Liitetiedostot.. - + Add selected operator to contacts.. + Push button text. Pushing the button will open an editor prompting user to add to her contact-list the operator who sent the classified ad currently on display Lisää valittu operaattori osoitekirjaan.. - + &Reply + Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the private message currently on display Vastaa - + &New message + Push button text. Pushing the button will open an editor prompting user to edit+send a private message to some operator. Uusi viesti - + &Send public comment to sender + Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the private message currently on display Esitä julkinen kommentti lähettäjästä - + &View profile of peer + Push button text. Pushing the button will open view that will show details of operator, who sent the private message currently on display. Näytä viesti-osapuolen profiili - + Add selected to contacts.. + Context menu item text. Appears in "message listing view" when user right-clicks on messages view. When selected, the operator who sent the message that is selected is added to contacts. Lisää valittu osoitekirjaan - - - - + + + + From: + Text field label. Label tells who sent particular classified ad. Keneltä: - - + + Subject: + Text field label. Label tells subject of classified ads. Aihe: - + To: + Text field label. Label tells whom a private message was sent to. Kenelle: Invalid SHA1 in URL + Error dialog content text. Shown in situation when user clicked on a link that contained SHA1 digest that was not valid. Viallinen SHA1-tiiviste URLissa Invalid URL + Error dialog content text. Shown in situation when user clicked on a link that was not correctly formatted. Viallinen URL InsertLinkDialog - + Invalid URL + Error dialog content text. Shown in situation when user entered a link that could not be parsed. Väärän mallinen URL ManualConnectionDialog - + DNS lookup failure + Error dialog content text. Shown in situation when user tried to add connection to node whose name was not found via nameserver. Nimeä ei löydy nimipalvelusta (DNS) NewPrivMessageDialog - - + + Error + Error dialog title text. Actual error message will be shown inside the dialog. Vikaa - + Recipient addr is not valid + Error dialog content text. Dialog is shown when user tries to send a message to operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. Vastaanottajan osoite ei ole kelvollinen - + Recipient encryption key not found from storage + Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. Vastaanottajan salausavainta ei paikallisesta tietokannasta löydy NewProfileCommentDialog - - + + Error + Error dialog title text. Actual error message will be shown inside the dialog. Vikaa - + Commented profile addr is not valid + Error dialog content text. Dialog is shown when user tries to comment an operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. Kommentoidun profiilin osoite ei ole kelvollinen - + Recipient encryption key not found from storage + Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. Valitun profiilin salausavainta ei paikallisesta tietokannasta löydy @@ -930,29 +1093,34 @@ SSL key generation went wrong, calling exit.. + Error message text. Will be shown in error message dialog in case when initial SSL key generation of node did not succeed. After user dismisses the dialog, the application will close. SSL-avaimen luonti epäonnistui, poistutaan.. x509 cert generation went wrong, calling exit.. + Error message text. Will be shown in error message dialog in case when initial encryption key generation of user did not succeed. After user dismisses the dialog, the application will close. x509-sertifikaatin luonti epäonnistui, poistutaan.. - + Cant load SSL cert + Error message text. Will be shown in error message dialog in case when SSL certificate of the node could not be loaded from storage. After user dismisses the dialog, the application will close. SSL-sertifikaatin lataaminen ei onnistu - + Cant load SSL key + Error message text. Will be shown in error message dialog in case when SSL key of the node could not be retrieved from local storage. After user dismisses the dialog, the application will close. SSL-avaimen lataaminen ei onnistu PasswdDialog - + Min length 5 (use 10+) + Error message text. Shown in dialog when user tries to enter a password that is too short. Vähimmäispituus on 5 (käytä silti ainakin 10) @@ -961,378 +1129,483 @@ Password required + Password dialog title text. Salasana on pakollinen Should you forget this word, there is no easy way to recover any of your content + Tooltip text for password dialog. Shown when user hovers on top of password dialog. Unohdapa tämä salasana ja viestiesi lukemiseen vain ei ole olemassa mitään helppoa menetelmää Enter password for protection of your messages + Prompt text for password dialog. Valitse salasana viestiesi turvaamiseksi If you forget this word, there is no simple way to recover your contents + Tooltip text for password dialog. Shown when user hovers on top of password field Jos unohdat tämän sanan, viestiesi lukemiseksi ei ole olemassa mitään helppoa menetelmää OK + Password dialog button text OK PrivateMessageSearchModel - + %1 Trusted by %2 + Tooltip text. Shown when user hovers mouse cursor on top of message sender name. First %1 will be replaced with nickname of the operator whose message is hovered, %2 will be replaced by nickname of operator who has expressed positive trust towards the operator who sent the message. %1 johon luottaa %2 - + Direction of message, sent/received + Tooltip text. Used in column view that lists private messages of operator. Explains the field that gives title to column that specifies direction (sent or received) of the message. Viestin suunta, lähetetty/vastaanotettu - + Dir + Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies direction (sent/received) of the message. Suunta - + Peer + Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies messaging peer (another operator) of the message. Osapuoli - + Time + Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies time of the message. Aika - + Subject + Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies subject of the message. Aihe ProfileCommentDisplay - + &Add comment... + Push button text. Clicking the button will open a dialog prompting user to add a new comment Lisää kommentti - + Save attachment to disk.. + Context menu item text. Context menu is shown when user right-clicks on file listing view. When this item is selected, a file selection dialog is opened. Tallenna liite tiedostojärjestelmälle.. - + Error + Error dialog title text Vikaa - + Article not found from local storage + Error dialog content text. Shown after user tried to access a profile comment and the comment could not be found Kommenttia ei paikallisesta tietokannasta löydy ProfileCommentItemDelegate - + Attachments: + Text field label text. The text field whose label this is will show number how many attachements there are in the comment. Liitteet: ProfileCommentListingModel - + Sender + Column view column title text. The column view in question lists profile comments. This text gives title to column that tells who sent the comment. Lähettäjä - + Time + Column view column title text. The column view in question lists profile comments. This text gives title to column that tells when comment was sent. Aika - + Subject + Column view column title text. The column view in question lists profile comments. This text gives title to column that tells subject of the comment. Aihe ProfileCommentModel - + Profile related to comment not found from database + Error message text. Shown inside a dialog after user tried to send a comment to operator who had sent a comment and it turns out that necessary encryption keys of the commenting operator are not found and the replying comment can't be sent. Kommenttiin liittyvän profiilin tietoja ei paikallisesta tietokannasta löydy ProfileReadersDialog - + View profile + Context menu item text. This context-menu is shown when user right-clicks list of operators that is shown in dialog that is made for listing operators (who are readers of another profile) Tarkastele profiilia ProfileReadersListingModel - + Name or fingerprint of reader + Column view column title text. The column view lists readers (operators) of another profile. Lukijan nimi tai SHA1-tiiviste SearchDisplay - + Open.. + Context menu item text. This context menu is shown when user right-clicks on top of search-results. This menu-item opens the currently-selected item from search results. Avaa.. TextEdit - + Help + Menu title text. This is the help menu. Apua - + About &Qt + Menu-item text used in "help" menu. Selecting this item opens "about" dialog about Qt library. Tietoja Qt:stä - + Edit Actions + Window title text for container-window containing actions. It seems to me that this text actually does not appear anywhere in the UI due to way, how container-windows are used. Muokkaa toimintoja - + &File + Menu text. This gives text to "file" menu of a text editor. Tiedosto - + &Open... + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open a filesystem file" Avaa.. - + &Save locally before send - Avaa paikallisesti ennen lähettämistä + Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file. + Tallenna paikallisesti ennen lähettämistä - + Save locally &As... - Avaa paikallisesti + Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file and user will be queried for file name. + Tallenna paikallisesti nimellä.. - + &Print... + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "print" Tulosta.. - + Print Preview... + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open print preview" Tulostuksen esikatselu.. - + &Export PDF... + Menu-item text. Used in file-menu for triggering "export as pdf" operation Vie PDF-muodossa.. &Edit + Menu text for "edit" menu of text editor. Muokkaa &Undo + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "undo" Peru &Redo + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "re-do" Tee uudelleen Cu&t + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "cut" (to clipboard) Leikkaa &Copy + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "copy to clipboard" Kopioi &Paste + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "paste from clipboard" Liitä Insert link + Menu item text inside text editor "edit" menu. After this menu-item is selected, a dialog is opened, prompting user to enter a link (URL) to be included in the text. Lisää viite - + + Embed image + Menu-item text for embedding an image + Sisällytä kuva + + + F&ormat + Menu text. Gives name for a "format" menu inside a text editor. Muotoile - + &Bold + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle bold text style" Lihavoitu - + &Italic + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle italic text" Kursivoitu - + &Underline + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle underline" Alleviivattu - - + + &Left + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "left-justify" Tasattu vasemmalle - - + + C&enter + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle centered text" Keskitetty - - + + &Right + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "right-justify" Tasattu oikealle - + &Justify + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "justify both right+left" Tasattu molempiin laitoihin - + &Color... + Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "color selection" Väri.. - + Standard + Combobox item text. The combobox is used to select text style. The text style selected with this text is "standard" Normaalimuoto - + Bullet List (Disc) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (disc)" Pisteellinen lista (palloilla) - + Bullet List (Circle) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (circle)" Pisteellinen lista (ympyröillä) - + Bullet List (Square) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (square)" Pisteellinen lista (laatikoilla) - + Ordered List (Decimal) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (decimal)" Numeroitu lista (desimaaliluvuin) - + Ordered List (Alpha lower) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha lower)" Numeroitu lista (pienin kirjaimin) - + Ordered List (Alpha upper) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha upper)" Numeroitu lista (suurin kirjaimin) - + Ordered List (Roman lower) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman lower)" Numeroitu lista (pienin roomalaisin) - + Ordered List (Roman upper) + Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman upper)" Numeroitu lista (suurilla roomalaisilla) - + Application + Warning dialog title text. This dialog is shown if user tries to exit without saving her text. Tekstimuokkain - + The document has been modified. Do you want to save your changes? + Warning dialog title content text. Text asks what to do with modifications. The dialog has buttons Save,Discard and Cancel and this text is the question. Tiedostoa on muutettu, haluatko tallettaa muutokset? - + Open File... + File selection dialog title text. Dialog will prompt user to select a document for opening. Avaa tiedosto.. - + HTML-Files (*.htm *.html);;All Files (*) - HTML-Tiedostot (*.htm *.html);;All Files (*) + Text for file selection filter field to be used inside file selection dialog. There are 2 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.htm) must not be edited. The explanations like "HTML-Files" may be edited. + HTML-Tiedostot (*.htm *.html);;Kaikki tiedostot (*) - + Save as... + File selection dialog title text. Dialog in question prompts user to select name for file to be persisted. Tallenna nimellä.. - + ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*) - ODF Tiedostot (*.odt);;HTML-Files (*.htm *.html);;All Files (*) + Text for file selection filter field to be used inside file selection dialog. There are 3 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.odt) must not be edited. The explanations like "ODF-files" may be edited. + ODF Tiedostot (*.odt);;HTML-Tiedostot (*.htm *.html);;Kaikki tiedostot (*) - + Print Document + Dialog title text. The dialog is printer dialog asking user how to print the text currently in editor. Tulosta dokumentti + + + Open File + File selection dialog title text. Dialog will prompt user to select a document for opening. + Avaa tiedosto + + + + Files (*.*) + Text for file selection filter field to be used inside file selection dialog. The filter parts like (*.odt) must not be edited. The explanations like "Files" may be edited. + Kaikki tiedostot (*.*) + + + + Error + Error dialog title text. + Tapahtui virhe + + + + Can't load image + Error dialog content text. + Kuvan avaaminen ei onnistu + + + + + File way too big + Error message displayed inside error dialog after user tried to select for operation a file whose size greatly exceeds file size limit. + Tiedosto on aivan liian suuri + aboutDialog About classified ads + Dialog title text for "about" dialog. Tietoja luokitelluista ilmoituksista Classified ads is a program for online communications + 1st line of text inside "about" dialog, placed next to the turle logo. This text is then followed by longer explanation detail why this program is and how. This is kind of title for the longer explanation. Luokitellut ilmoitukset on viestintään tarkoitettu tietokoneohjelma <html><head/><body><p>Classified ads is free software. You may use, copy and modify it if you follow the conditions given in GNU lesser general public license version 2.1.</p><p>Classified ads is copyright © Antti Järvinen 2013. </p><p>Main feature of the the program is an &quot;advertisement&quot; - a piece of text belonging to selected classification. There are several pre-programmed classifications and operators are encouraged to invent new classifications for new purposes ; the selection boxes in classification-selection tab are editable. Other operators may then view the ads, publicly comment the ads, the operators and also send private messages to each others. </p><p>Another important feature of classified ads is that it is designed to be operated without any centralized server infrastucture - it is you and other operators whose computers store and transmit all the content visible inside classified ads. To get connected you need to know address of at least one existing computer (a <span style=" font-style:italic;">node</span>) so if your network connection dialog shows no connections, you may need to contact someone you know is using the software and ask for address of her node to make initial contact with the network. Once connected the software should maintain list of addresses of other nodes. </p><p>Due to its server-less design the whole system works best if you leave the program running always when you have your computer powered on ; while processing other operators requests it will hog some computing resources and generate network traffic also when you are not actively using the program youself - others are. </p><p>Operators concerned about privacy of the content should be aware of following items:</p><p>- Data storage implementation is variant of <span style=" font-style:italic;">distributed hash table</span>, practically meaning that content posted by you gets copied some more-or-less random nodes in the network. </p><p>- Any data item (ad, comment, binary file, private message etc.) is digitally signed. This makes it more difficult to try to pose as another operator. </p><p>- Operators are reliably identified only by the SHA1 hash of their generated encryption keys. SHA1 hash is displayed when viewing details of operator profiles. Other identifying information like nickname or city name are entered by operator himself and can be anything. The operator profile, as it is published to the network, is also signed with the encryption keys of the operator - if you identify an operator by her SHA1 hash, you have a mechanism for identifying if any content inside classified ads is posted by this operator or not. Classified ads internally checks for digital signatures, throwing away content that fails signature check and tries to provide SHA1 hash of the operator who posted the content.</p><p>- All classified ads are posted as plain text, no encryption is used. All public profiles are posted as plain text, no encryption is used. If profile is made private, it is encrypted to be readable only by selected other profiles. This applies also to binary files shared by operators private profiles and comments about private profiles after the profile was made private (previously plain-text comments or files don't get magically encrypted afterwards). Private messages are encrypted always to be readable only by recipient and sender. Attachments follow the privary rules of the document, they're attachted to. </p><p>- As is the case with all internet-communications, this small fact is true for classified ads too : <span style=" font-style:italic;">once something gets posted online, there is no way to remove it from network</span>. </p><p>- Data encryption implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 and AES-256. </p><p>- While connections between nodes are implemented using SSL, other nodes inside network do get to know what content is being transmitted in neighboring nodes. While there is no central point for easily collecting this information about particular classification or operator, operators still should expect no privacy regarding their doings online, although some effort has been been put into hiding <span style=" font-style:italic;">contents</span> of private messages and private profiles. </p><p>Programming was (mostly) done by Antti Järvinen, artwork by Meeri Järvinen.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/).</p><p>Happy advertising!</p><p><br/></p></body></html> <html><head/><body><p>Classified ads is free software. You may use, copy and modify it if you follow the conditions given in GNU lesser general public license version 2.1.</p><p>Classified ads is copyright © Antti Järvinen 2013. </p><p>Main feature of the the program is an &quot;advertisement&quot; - a piece of text belonging to selected classification. There are several pre-programmed classifications and operators are encouraged to invent new classifications for new purposes ; the selection boxes in classification-selection tab are editable. Other operators may then view the ads, publicly comment the ads, the operators and also send private messages to each others. </p><p>Another important feature of classified ads is that it is designed to be operated without any centralized server infrastucture - it is you and other operators whose computers store and transmit all the content visible inside classified ads. To get connected you need to know address of at least one existing computer (a <span style=" font-style:italic;">node</span>) so if your network connection dialog shows no connections, you may need to contact someone you know is using the software and ask for address of her node to make initial contact with the network. Once connected the software should maintain list of addresses of other nodes. </p><p>Due to its server-less design the whole system works best if you leave the program running always when you have your computer powered on ; while processing other operators requests it will hog some computing resources and generate network traffic also when you are not actively using the program youself - others are. </p><p>Operators concerned about privacy of the content should be aware of following items:</p><p>- Data storage implementation is variant of <span style=" font-style:italic;">distributed hash table</span>, practically meaning that content posted by you gets copied some more-or-less random nodes in the network. </p><p>- Any data item (ad, comment, binary file, private message etc.) is digitally signed. This makes it more difficult to try to pose as another operator. </p><p>- Operators are reliably identified only by the SHA1 hash of their generated encryption keys. SHA1 hash is displayed when viewing details of operator profiles. Other identifying information like nickname or city name are entered by operator himself and can be anything. The operator profile, as it is published to the network, is also signed with the encryption keys of the operator - if you identify an operator by her SHA1 hash, you have a mechanism for identifying if any content inside classified ads is posted by this operator or not. Classified ads internally checks for digital signatures, throwing away content that fails signature check and tries to provide SHA1 hash of the operator who posted the content.</p><p>- All classified ads are posted as plain text, no encryption is used. All public profiles are posted as plain text, no encryption is used. If profile is made private, it is encrypted to be readable only by selected other profiles. This applies also to binary files shared by operators private profiles and comments about private profiles after the profile was made private (previously plain-text comments or files don't get magically encrypted afterwards). Private messages are encrypted always to be readable only by recipient and sender. Attachments follow the privary rules of the document, they're attachted to. </p><p>- As is the case with all internet-communications, this small fact is true for classified ads too : <span style=" font-style:italic;">once something gets posted online, there is no way to remove it from network</span>. </p><p>- Data encryption implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 and AES-256. </p><p>- While connections between nodes are implemented using SSL, other nodes inside network do get to know what content is being transmitted in neighboring nodes. While there is no central point for easily collecting this information about particular classification or operator, operators still should expect no privacy regarding their doings online, altough some effort has been been put into hiding <span style=" font-style:italic;">contents</span> of private messages and private profiles. </p><p>Programming was (mostly) done by Antti Järvinen, artwork by Meeri Järvinen.</p><p>This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/).</p><p>Happy advertising!</p><p><br/></p></body></html> + The long explanation of classified ads inside about-dialog. Note that this text must be valid html. Needs to start with <html> and end with </html> etc. This is easiest to edit like this: copy-paste the content in to a file, say /tmp/about.html. Then either open your favourite html-editor or open classified ads. In classified ads you can start constructing an ad, select from file-menu "open.." and select this file ;do editing and save from file-menu. The saved file is immediately in correct format to be be copy-pasted into contents of this field. <html><head><meta name="qrichtext" content="1" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Ubuntu'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -1368,6 +1641,7 @@ List of attached files + Dialog title text. Dialog in question produces list of file attachments. Liitetiedostoluettelo @@ -1376,26 +1650,31 @@ Edit a contact + Dialog title text. Purpose of the dialog is to let user change properties of a frequent contact in contact-list. Muokkaa profiilin tietoja Address (SHA1) of contact + Text field label in contact-editing dialog. This gives label for field that shows SHA1 fingerprint of the operator whose data is being edited Profiilin osoitteen SHA1 tiiviste Local nickname + Text field label in contact-editing dialog. This gives label for field that shows nickname of the operator whose data is being edited Paikallinen liikanimi <html><head/><body><p>Settings some trusted is public information to readers of your profile</p></body></html> + Tooltip text of a checkbox label in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. Note html format. <html><head/><body><p>Luottamuksen osoitus on profiilisi mukana julkaistava tieto, jonka profiilisi lukijat näkevät</p></body></html> This contact is to be publicly trusted in transactions + Label of a checkbox in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. Tämän profiilin operaattoriin kelpaa julkisesti luottaa @@ -1404,137 +1683,163 @@ Form + Name of front widget. Wild guess is that this text actually does not appear anywhere in the UI. Etusivun lomake Classified ads + Tab title text in front widget. When user clicks in this tab, the view is switched to one, that lists classified ads. Luokitellut ilmoitukset Search for classified ads about + Prompt text next "search" button. User is supposed to enter search criteria for classified ads and then click "search" ; this is prompt text for this behaviour. Etsi luokiteltuja ilmoituksia aiheesta Perform + Prompt text very next to "search" button. After user has clicked the button, he is supposed to be viewing list of classified ads matching the search criteria. Suorita of + This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 2nd word in that phrase. koskien in + This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 4th word in that phrase. paikassa Search + Button text for button used to search for classified ads. This button has text "perform" just next to it so user sees actually 2 words "perform search" where the "perform" is in separate label above the button, and then is the text of this button. Haku My profile + Tab title text in front widget for tab that shows details of operators own profile (==personal details) Oma profiili Profile address + Text field label in "operators profile" tab. The field in questions shows SHA1-digest e.g. the real address of the operator. Profiilin osoite Nickname + Text field label in "operators profile" tab. The field in questions shows nickname of the operator Liikanimi Greeting text + Text field label in "operators profile" tab. The field in questions shows "hello world" text of the operator. Tervehdysteksti For the rest of the world. + Tooltip-text of a text field in "operators profile" tab. The field in questions shows greeting text of the operator. Koko maailmalle. First name + Text field label in "operators profile" tab. The field in questions shows given name (first name) of the operator. Etunimi Family name + Text field label in "operators profile" tab. The field in questions shows family name of the operator Sukunimi City/country + Text field label in "operators profile" tab. The field in questions shows place of residence of the operator Kaupunki/maa BTC address + Text field label in "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. BTC-lompakon osoite If you wish to receive payments via BTC, include your BTC address too. + Tooltip-text for a text field "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. Jos meinaat saada maksuja bitcoinin kautta, julkaise myös lompakkosi osoite State of the world + Text field label in "operators profile" tab. The field in questions shows what the user has to say about state of the world. Maailman tila Longer explanation about state of the world + Tool-tip text of a field in "operators profile" tab. The field in questions shows what operator has to say about state of the world. Vähän pidempi selitys maailman tilasta Profile is private + Checkbox text in "my profile" tab. The checkbox is question is a toggle for public/private status of the profile. When checkbox is checked, the profile will be made private. Profiili on yksityinen Readers of profile + Button text inside "My profile" tab. Clicking the button opens a dialog that prompts user to select list of operators that can read his profile that he has previously marked as private (e.g. accessible only to listed readers) Profiilin lukijat None of the fields is mandatory + Explanation text inside "my profile" tab. Yksikään kentistä ei ole pakollinen Time of last update + Text field label inside "my profile" tab. The field whose label this is shows the time when profile was last updated. Edellisen päivityksen ajankohta Publish + Button text for button inside "my profile" tab. By clicking this button user makes her edits known to rest of the world. Julkaise Revert changes + Button text for button inside "my profile" tab. By clicking this button user discards her edits. Peruuta muutokset Details of operator profile: + Text label on top of "my profile" tab. Below this label is a list of text fields and other stuff that user may edit regarding herself. Operaattorin profiili @@ -1545,6 +1850,7 @@ to Add Image + Text in image-placeholder inside "my profile" tab. When user has not selected any image for her profile details, this text is shown in place of the image. Clicking on text gives user option to select the image file for profile. Klikkaa @@ -1555,82 +1861,98 @@ Shared files + Title text inside "my profile" tab. Title text is for a list of files that user is currently sharing with other users. Jaetut tiedostot Latest comments + Title text inside "my profile" tab. Title text is for a list of comments made by other users regarding operators profile. Viimeisimmät kommentit Contacts + Tab title text. When this tab is opened, user is shown a view of his frequent contacts. Osoitekirja Add contact + Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to enter details of operator to be added into contact list Lisää profiili Remove contact + Button text inside "contacts" tab. Clicking this button removes a contact from list. Poista profiili View profile + Button text inside "contacts" tab. Clicking this button displays details of the selected contact. Katsele profiilia Send message + Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to send a message selected contact. Lähetä viesti Private messages + Tab text in front widget. When user selects this tab, he is presented with list of his private correspondence. Yksityiset viestit Profile details + Tab text in front widget. This tab shows details of some other operator of classified ads. Normally this text is replaced with nickname of the operator but if nothing like this is available, this text may be shown, this is the "default text". Profiilin yksityiskohdat City/Country + Label text of a text-field. The text-field in question shows place of residence of operator whose details are on display. Kaupunki/maa BTC Addr + Label text of a text-field. The text-field in question shows bitcoin wallet address of operator whose details are on display. BTC-osoite <html><head/><body><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;">No</span></p><p align="center"><span style=" font-size:16pt;">Image</span></p><p align="center"><span style=" font-size:16pt;">Inserted</span></p></body></html> + Text for image-placeholder inside "profile details" tab. When some particular operator has not selected any image for her profile, this text is shown in place of the image. Note html format. <html><head/><body><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;"><br/></span></p><p align="center"><span style=" font-size:16pt;">Ei</span></p><p align="center"><span style=" font-size:16pt;">Kuvaa</span></p><p align="center"><span style=" font-size:16pt;">Valittuna</span></p></body></html> Send message to operator + Button text inside "defails of operator profile" tab. When the button is clicked, a new-message editor is opened. Lähetä operaattorille viesti View readers + Button text inside "defails of operator profile" tab. When the button is clicked, dialog listing readers of the (private) profile. Lukijat Comment + Button text inside "defails of operator profile" tab. When the button is clicked, a dialog is opened, dialog prompts user to enter a comment about the operator. Kommentti Add to contacts + Button text inside "defails of operator profile" tab. When the button is clicked, the operator whose data is on display is added into contact-list. Lisää osoitekirjaan @@ -1639,50 +1961,19 @@ Insert link + Dialog title text. Dialog is for adding a link to text being edited. Lisää linkki URL + Label for a combobox-field inside "insert link" dialog. Next to this label is set of fields that together make up a valid URL to be inserted. URL - - caprofile - Link to classified ads operator profile - Linkki operaattorin profiiliin - - - - caad - Link to classified ad - Linkki luokiteltuun ilmoitukseen - - - - cablob - Link to binary file inside classified ads - Linkki tiedostoon, mitä jaetaan ohjelman sisällä - - - - http - http - - - - ftp - Link to ftp resource outside classified ads - ftp - - - - :// - :// - - - + Link label in text + Label for a text-field inside "insert link" dialog. Next to this label is field where user is supposed the text that will be shown as the link. Consider <a href="url">the text</> then "the text" is text that user is prompted to enter with this label. Linkin päällepäin näkyvä teksti @@ -1691,21 +1982,25 @@ Manually add node to connection queue + Dialog title text. Dialog prompts user to manually add a network-connection to another node in the network. Lisää solmu yhteydenottolistalle Remote node listen port + Label text of numeric field. The numeric (input) field is TCP port of the remote node that will be connected. Solmun vastaanotto-portti (TCP-port) Remote node network address + Label for text field inside "manually add connection" dialog. Text field whose label this is requires user to type in network address (ip addr or dns name) of the remote node. Solmun verkko-osoite IPv4, IPv6 or DNS name + Tooltip text for a text field inside "manually add connection" dialog. The text field whose tooltip this is the remote network address input field. IPv4, IPV6 tai DNS-nimi @@ -1714,87 +2009,103 @@ File information + Dialog title text for dialog that requires user to enter information about file to be shared with others. Metadata query dialog in practice. Tiedoston ominaisuudet Name of the file: + Label text for a input field. The input field whose label this is asks for file name (filesystem file name) Tiedoston nimi: Owner of file (name or SHA1 if CA operator): + Label text for a input field. The input field whose label this is asks for owner of the file contents. This may be copyright holder, depending on contracts and legislation followed. Tiedoston omistaja: License of use: + Label text for a input field. The input field whose label this is asks for license under which the file may be used. Combobox lists some pre-filled options like GPL,BSD,CC-BY etc. but user may also enter any text into field. Käyttöä koskeva lisenssi: Public domain - License texts might be wise leave as they are - untranslated + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated Public domain GPL + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated GPL LGPL + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated LGPL BSD + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated BSD CC-BY + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY CC-BY-SA + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY-SA CC-BY-ND + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY-ND CC-BY-NC + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY-NC CC-BY-NC-SA + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY-NC-SA CC-BY-NC-ND + Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated CC-BY-NC-ND Mime-type: + Label text for a input field. The input field whose label this is asks for mime-type of the field about to be published. Mime-tyyppi: Description of file: + Label text for a input field. The input field whose label this is asks for descriptive text about file about to be published. Kuvaus: Enter information regarding file before publish: + Prompt text on top of "metadata query" dialog. Below this label is set of input-fields that make up the meta-data of a file to be published. Syötä tiedoston ominaisuudet ennen julkaisua: @@ -1803,36 +2114,43 @@ Post a new classified ad + Dialog title text for a dialog that offers possibility to post a new classified ad for others to read. Lähetä uusi luokiteltu ilmoitus About + This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the first word in that sentece. Aiheesta of + This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 3rd word in that sentece. koskien in + This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 5th word in that sentece. paikassa Subject + Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, requires user to enter a subject (topic) for her posting. Aihe Attachment: + Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, will show name file that is attached to the post. Liite: Add + Push-button text inside "post a new classified ad" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. Lisää @@ -1841,26 +2159,31 @@ Send a private message + Dialog title text for dialog that prompts user to edit+send a private message to another operator Lähetä yksityinen viesti Subject + Text field label for input field inside "compose a new private message dialog". The text field in question is "subject" or "topic" field of the message. Aihe Recipient + Text field label for input field inside "compose a new private message dialog". The text field in question is SHA1 address of the recipient. Vastaanottaja Attachments: + Label text of a text field inside "compose a new private message" dialog. The input field whose label this is, will show name file that is attached to the post. Liitteet: Attach + Push-button text inside "compose a new private message" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. Liitä @@ -1869,26 +2192,31 @@ Comment a operators profile + Dialog title text for dialog that prompts user to edit+send a comment regarding another operator. Kommentoi operaattorin profiilia Subject + Text field label for input field inside "compose a comment about operator dialog". The text field in question is "subject" or "topic" field of the comment. Aihe Commented profile + Text field label for input field inside "compose a comment about operator dialog". The text field in question is SHA1 digest (address) of the operator being commented. Kommentoitu profiili Attachments: + Label text of a text field inside "compose a comment about operator dialog" dialog. The input field whose label this is, will show name file that is attached to the post. Liitteet: Attach + Push-button text inside "compose a comment about operator dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. Liitä @@ -1897,21 +2225,25 @@ Edit and publish a new text document + Dialog title text for a dialog that prompts user to edit+publish a text document. Muokkaa ja julkaise uusi tekstidokumentti Document title + Text field label for input field inside "compose a new text document" dialog. The text field in question is "subject" or "topic" field of the text document. Dokumentin aihe Attachments: + Label text of a text field inside "edit+publish a new text document dialog" dialog. The input field whose label this is, will show name file that is attached to the document. Liitteet: Attach + Push-button text inside "edit+publish a new text document dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. Liitä @@ -1920,6 +2252,7 @@ Comments regarding operator + Dialog title text for dialog that will show a listing of previous comments regarding operator (user himself or some other operator, it is the same dialog in both cases) Kommentit koskien operaattoria @@ -1928,36 +2261,43 @@ Profile readers list + Dialog title text for a dialog that prompts user to choose operators who will be able to read details, comments and shared files of his profile. Profiilin lukijalista Search for profiles to add + Text field label inside "add profiles to list of readers" dialog. The text field whose prompt this is asks for search-words to be used to filter operator names/addresses from database. Etsi lisättäviä profiileja First 100 matching profiles: - Ensimmäiset 100 osumaa + Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is will list operators whose nickname,name or other search-term matches conditions entered by user. + Ensimmäiset 100 osumaa: Add seleted to list of readers + Push-button label inside "add profiles to list of readers" dialog. When user hits this button, operators that are selected from neighboring list will be added to list of readers of operators profile. Lisää valitut profiilin lukijoiksi Current list of readers + Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is shows current list operators profiles readers. Lukijoiden nykyinen lista Close + Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, the dialog is dismissed. Sulje Remove selected + Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, selected operators are removed from the list. Poista valitut @@ -1966,36 +2306,43 @@ Search data storage + Dialog title-text for a search dialog. Etsi tietovarastosta Words: + Label text of a text field inside "search" dialog. The text field in question requires user to enter one or more words that are then searched from all available (public) documents. Sanoja Search + Push button label inside "search" dialog. When button is hit, search using given words is performed. Hae Network search + Check-box label inside "search" dialog. When box is checked, the search is done also in neighboring nodes in the network, not only in local storage. Verkkohaku Search ads + Check-box label inside "search" dialog. When box is checked, the search may include classified ads in its resultset. Etsi ilmoituksista Search profiles + Check-box label inside "search" dialog. When box is checked, the search may include operator profiles in its resultset. Etsi profiileista Search comments + Check-box label inside "search" dialog. When box is checked, the search may include profile commetns in its resultset. Etsi kommenteista @@ -2004,61 +2351,73 @@ Node settings + Dialog title text for "settings" dialog. Solmun asetukset TCP listen port + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. TCP-kuunteluportti Incoming TCP listen port. Change requires node restart. + Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. Kuunteluportti. Tämän vaihtaminen edellyttää ohjelman uudelleenkäynnistystä. DNS name of node + Text field label for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) Solmun nimipalvelunimi If you have permanent DNS name for your machine, you may type it here to be used to reference your node + Tooltip-text for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) Jos solmullasi on pysyvä nimi nimipalvelussa, voit syöttää sen tähän jotta muut solmut voivat siihen viitata Data store limits: - Tietokannan sisällön enimmäismäärät + Text label inside "settings" dialog. Under this label is set of numerical input fields that user may use to adjust the amount of items he wishes to keep in his local storage. + Tietokannan sisällön enimmäismäärät: Nr of profiles to keep + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of operator profiles to keep in storage. Talletettavien profiilien määrä Nr of private messages to keep + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of private messages to keep in storage. Yksityistien viestien määrä Nr of binary blobs to keep + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of binary files to keep in storage. Binääritiedostojen määrä Nr of CAs to keep + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. Ilmoitusten määrä Number of classified ads to keep in storage, total, including all classifications. Oldest referenced will be deleted first. + Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. Paikallisessa tietokannassa talletettavien ilmoitusten määrä, koskien kaikkia luokitteluja. Viimeisimmäksi viitatut tullaan poistamaan ensimmäisenä. Nr of profile comments to keep + Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of comments regarding operators to keep in storage. Kommenttien määrä @@ -2067,42 +2426,50 @@ Network and connection status + Dialog title text for a dialog that shows network connectivity details. Verkon ja yhteyksien tila Detected own IPv4 + Text field label for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. Oma havaittu IPv4 Should your friend have trouble connecting, give her this address with port number + Tooltip-text for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. Jos ystäväsi ei pääse verkon jäseneksi, yritä antaa hänelle tämä osoite porttinumeron kera IPv6 + Text field label for display-item inside "network status" dialog. The display-item shows IPV6-address of the node. Usually it is (public) IPv6 addr of the very machine that user is using at the moment. IPv6 TCP port currently used + Text field label for display-item inside "network status" dialog. The display-item shows listen port of the node. Käytössä oleva TCP-portti Currently open connections + Text field label for a list-item inside "network status" dialog. The list-item shows list of currently connected other nodes in the network. Avoimet yhteydet Manually add connection + Push-button label for button inside "network status" dialog. When button is hit, another dialog is opened, asking user for details about the remote node to connect. Lisää yhteys käsipelillä Close + Push-button label for button inside "network status" dialog. When button is hit, dialog is dismissed. Sulje diff -Nru classified-ads-0.07/classified-ads.pro classified-ads-0.09/classified-ads.pro --- classified-ads-0.07/classified-ads.pro 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/classified-ads.pro 2015-10-10 12:49:33.000000000 +0000 @@ -37,6 +37,16 @@ } CODECFORTR = UTF-8 CODECFORSRC = UTF-8 +QMAKE_EXTRA_TARGETS += translations_compile +PRE_TARGETDEPS += translations_compile +unix { + translations_compile.commands = cd po ; $(MAKE) + QMAKE_CLEAN += po/*.mo +} +win32 { + translations_compile.commands = $(MAKE) -C po MSGFMT_PATH=/msys32/usr/local/bin/ + QMAKE_CLEAN += po\*.mo +} HEADERS = mcontroller.h controller.h FrontWidget.h net/node.h util/hash.h \ net/connection.h datamodel/model.h \ net/networklistener.h net/protocol_message_formatter.h \ @@ -62,7 +72,8 @@ datamodel/connectionlistingmodel.h ui/manualconnection.h \ ui/aboutdialog.h textedit/textedit.h datamodel/searchmodel.h \ ui/searchdisplay.h ui/insertlinkdialog.h ui/newtextdocument.h \ - datamodel/trusttreemodel.h ui/metadataQuery.h + datamodel/trusttreemodel.h ui/metadataQuery.h util/jsonwrapper.h \ + util/catranslator.h SOURCES = main.cpp controller.cpp FrontWidget.cpp net/node.cpp util/hash.cpp \ net/connection.cpp datamodel/model.cpp \ net/networklistener.cpp net/protocol_message_formatter.cpp \ @@ -89,7 +100,8 @@ datamodel/connectionlistingmodel.cpp ui/manualconnection.cpp \ ui/aboutdialog.cpp textedit/textedit.cpp datamodel/searchmodel.cpp \ ui/searchdisplay.cpp ui/insertlinkdialog.cpp ui/newtextdocument.cpp \ - datamodel/trusttreemodel.cpp ui/metadataQuery.cpp + datamodel/trusttreemodel.cpp ui/metadataQuery.cpp \ + util/jsonwrapper.cpp util/catranslator.cpp FORMS = frontWidget.ui ui/profileReadersDialog.ui ui/passwordDialog.ui \ ui/newClassifiedAd.ui ui/newPrivMsg.ui ui/editContact.ui \ ui/newProfileComment.ui ui/profileCommentDisplay.ui \ @@ -100,33 +112,48 @@ RESOURCES = ui_resources.qrc TRANSLATIONS = classified_ads_fi.ts \ classified_ads_sv.ts -unix:LIBS = -lssl -lcrypto -lnatpmp -lqjson -lminiupnpc -lmagic +unix:LIBS = -lssl -lcrypto -lnatpmp -lminiupnpc +lessThan(QT_MAJOR_VERSION, 5) { + unix:LIBS += -lqjson -lmagic +} + # following line is needed for fedora linux, natpnp needs miniupnpc unix:INCLUDEPATH += /usr/include/miniupnpc -win32:LIBS += "c:\msys\1.0\local\lib\libssl.a" -win32:LIBS += "c:\msys\1.0\local\lib\libcrypto.a" -win32:LIBS += "..\miniupnpc\miniupnpc-1.9\miniupnpc.lib" -win32:LIBS += "-L" -win32:LIBS += "..\qjson-master\build\src" -win32:LIBS += "-lqjson" +win32:LIBS += "-L..\openssl-1.0.2d" +win32:LIBS += "-lcrypto" +win32:LIBS += "-lssl" +win32:LIBS += "..\miniupnpc-1.9\miniupnpc.lib" +win32:LIBS += "-L\msys32\usr\local\lib" +win32:LIBS += "-lintl" +lessThan(QT_MAJOR_VERSION, 5) { + win32:LIBS += "-L" + win32:LIBS += "..\qjson-master\build\src" + win32:LIBS += "-lqjson" +} win32:LIBS += "-lWs2_32" "-lGdi32" "-lIphlpapi" -win32:INCLUDEPATH += "C:\msys\1.0\local\include" -win32:INCLUDEPATH += "..\miniupnpc\miniupnpc-1.9" -win32:INCLUDEPATH += "..\qjson-master\include" - +win32:INCLUDEPATH += "..\openssl-1.0.2d\include" +win32:INCLUDEPATH += "..\miniupnpc-1.9" +win32:INCLUDEPATH += "\msys32\usr\local\include" +lessThan(QT_MAJOR_VERSION, 5) { + win32:INCLUDEPATH += "..\qjson-master\include" +} target.path = /usr/bin desktopfiles.path = /usr/share/applications desktopfiles.files = ui/classified-ads.desktop -desktopicons.path = /usr/share/app-install/icons/ appdata.files = ui/classified-ads.appdata.xml appdata.path = /usr/share/appdata/ +unix { + # in unix install translations as part of appdata: + appdata.extra = cd po ; $(MAKE) install DESTDIR=$(DESTDIR) +} desktopicons.files = ui/turt-transparent-128x128.png +desktopicons.path = /usr/share/app-install/icons/ manpages.path = /usr/share/man/man1 manpages.files = classified-ads.1 -translations.path = /usr/share/classified-ads -translations.files = classified_ads_fi.qm \ - classified_ads_sv.qm -INSTALLS += target desktopfiles desktopicons translations +INSTALLS += target \ + desktopfiles \ + desktopicons \ + appdata unix:INSTALLS += manpages unix:INSTALLS += appdata RC_FILE=classified-ads.rc diff -Nru classified-ads-0.07/classified-ads.spec classified-ads-0.09/classified-ads.spec --- classified-ads-0.07/classified-ads.spec 2015-04-12 10:18:49.000000000 +0000 +++ classified-ads-0.09/classified-ads.spec 2015-10-10 12:49:33.000000000 +0000 @@ -1,5 +1,5 @@ Name: classified-ads -Version: 0.06 +Version: 0.09 Release: 1%{?dist} Summary: Classified ads is a program for posting ads online @@ -8,8 +8,8 @@ URL: http://katiska.org/classified_ads/ Source0: https://github.com/operatornormal/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz Source1: https://github.com/operatornormal/classified-ads/blob/graphics/preprocessed.tar.gz?raw=true#/%{name}-graphics-%{version}.tar.gz -BuildRequires: qt-devel >= 4 -BuildRequires: openssl-devel, libnatpmp-devel, qjson-devel, miniupnpc-devel, file-devel +BuildRequires: qt5-qtbase-devel +BuildRequires: openssl-devel, libnatpmp-devel, miniupnpc-devel, gettext BuildRequires: libappstream-glib, desktop-file-utils %description Classified ads is an attempt to re-produce parts of the functionality @@ -21,11 +21,11 @@ %setup -q -a 1 %build -qmake-qt4 +qmake-qt5 make %{?_smp_mflags} %install -INSTALL_ROOT=%{buildroot} make install +INSTALL_ROOT=%{buildroot} make install DESTDIR=%{buildroot} appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/classified-ads.appdata.xml desktop-file-validate %{buildroot}/%{_datadir}/applications/classified-ads.desktop %files @@ -35,14 +35,31 @@ %dir %{_datadir}/app-install %dir %{_datadir}/app-install/icons %{_datadir}/app-install/icons/turt-transparent-128x128.png -%dir %{_datarootdir}/classified-ads -%{_datarootdir}/classified-ads/classified_ads_fi.qm -%{_datarootdir}/classified-ads/classified_ads_sv.qm %{_mandir}/man1/classified-ads.1.gz %{_datadir}/appdata/classified-ads.appdata.xml +%dir %{_datadir}/locale/ +%dir %{_datadir}/locale/fi +%dir %{_datadir}/locale/fi/LC_MESSAGES/ +%{_datadir}/locale/fi/LC_MESSAGES/classified-ads.mo +%dir %{_datadir}/locale/sv +%dir %{_datadir}/locale/sv/LC_MESSAGES/ +%{_datadir}/locale/sv/LC_MESSAGES/classified-ads.mo +%dir %{_datadir}/locale/da +%dir %{_datadir}/locale/da/LC_MESSAGES/ +%{_datadir}/locale/da/LC_MESSAGES/classified-ads.mo %license LICENSE %changelog -%changelog +* Sat Oct 10 2015 Antti Jarvinen - 0.09-1 +- Fixes to serious networking bugs +- Translation additions +* Mon Sep 28 2015 Antti Jarvinen - 0.08-1 +- Links against qt5 instead of qt4 +- Translation system is gnu gettext instead of qm files of Qt. +- Better tracking of changing local network addresses +- Numerous small bugfixes, mostly in networking code +* Sun Apr 12 2015 Antti Jarvinen - 0.07-1 +- Removed intermediate PNG files into separate tarball +- Included code to generate intermediate PNG files manually * Mon Apr 6 2015 Antti Jarvinen - 0.06-1 - Included original high-res bitmaps in different format, conversion routines. - Fixed potential SIGSEGV appearing in debug build Binary files /tmp/33Akd0PpBm/classified-ads-0.07/classified_ads_sv.qm and /tmp/4uUP0cdpAJ/classified-ads-0.09/classified_ads_sv.qm differ diff -Nru classified-ads-0.07/classified_ads_sv.ts classified-ads-0.09/classified_ads_sv.ts --- classified-ads-0.07/classified_ads_sv.ts 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/classified_ads_sv.ts 2015-10-10 12:49:33.000000000 +0000 @@ -5,29 +5,29 @@ AttachmentListDialog - + Save file to disk.. Man kan spara pengar också? Spara till filsystem.. - - + + files filer - + Choose file name for saving Välj ett namn for din fil - + Error Fel - + File open error Fel i att öppna en fil @@ -35,7 +35,7 @@ BinaryFileListingModel - + Name or fingerprint of file Namn eller SHA1 kontrollsumm av filen @@ -58,177 +58,177 @@ ClassifiedAdsModel - + Buying Inköpning - + Selling Försäljing - + Giving away Donering - + Wanting Önskande sig - + Renting Att hyra - + Announcement Meddelande - + Cars Bilar - + Boats Båtar - + Bikes Cyklar - + Other vehicles Andra fordon - + Vehicle parts Fordondelar - + Habitation Bostad - + Household appliances Hushållsapparater - + Furniture Möbler - + Clothing Kläder - + Tools Verktyg - + Sports Sports - + Music Musik - + Books Böcker - + Movies Bio - + Animals Djur - + Electronics Elektroniska aparater - + Jobs Arbete - + Transportation Transport - + Services Tjänster - + Healthcare Sjukvård - + Foodstuff Livsmedel - + Software Programvara - + Events Händelser - + Education Utbildning - + Finance Finans - + Jewelry Smycken - + Religious rituals Religiösa ritualer - + Philosophy Filosofi - + Any country Alla länder @@ -236,52 +236,52 @@ ConnectionListingModel - + Peer network address Gränsande datorns adress - + Inbound connections are those where peer initiated connection Inkommande förbindelse är sådan när en annan dator öppnade dataströmmen - + Data transferred from peer to your node Data från din dator - + Data transferred to peer from your node Data till din dator - + Time when connection was opened Tid när dataström öppnades - + Address Adress - + Inbound Inkommande - + Bytes in Oktett in - + Bytes out Oktett ut - + Open time Öppningstid @@ -289,42 +289,42 @@ ContactListingModel - + Yes Ja - + Unknown Okänt - + Actual network address (SHA1) of the contact SHA1 av din contact - + Locally given nickname ; user may set her own nickname himself Smeknamn - + Public statement if this operator to be trusted in transactions Om den här kontakt ska bli förtröstad? - + Address Adress - + Nickname Smeknamn - + Publicly trusted Offentlig förtroende @@ -332,23 +332,23 @@ ContentEncryptionModel - + SSL key generation went wrong, calling exit.. Kunde inte generera SSL-nyckel, utgående.. - + x509 cert generation went wrong, calling exit.. Kunde inte generera x509-cert, utgående.. - - + + RSA Private key key saving went wrong Kunde inte persist RSA-nyckel - + No suitable de-cryption key found Hemlig nyckel för kryptering finns inte @@ -356,204 +356,204 @@ Controller - + Classified ads Annonser - + Enter password for protection of your messages: Ge ett lösenord: - + Fetching item from network.. Hämtning objektet.. - + E&xit Stänga - + Exit the application Stänga av program - + &About Om &annonser - + Show the application's About box Visa information av den här program - + &Change password Förändra din lösenord - + Change password of current profile Förändra lösenorden av vald profil - + Create &new profile Skapa en &ny profil - + Makes a brand new user profile Skapar en ny profil för operator - + &Delete current profile Radera vald profil - + Deletes currently open profile Ska glömma allt om vald profil - + &Select another profile Välja en annan profil - + If you have multitude of profiles Om du har flera profiler - + Settings.. Inställningar.. - + Node-wide settings.. Inställningar av nod - + Network status.. Status av nätverket.. - + Search.. Sök.. - + &File &Filer - + Enter new password: Ge ett lösenord: - - + + Activate another profile with password Välja en annan profil med en lösenord - + Can't delete only profile. Man kan inte radera den sista profil - + Permanently discard profile? Radera profil? - + There will be NO way to access content of this profile later Det finns INTE en metod för att visa den här profil senare - + Cant load node cert or key cert Kan inte ladda smycken för din nod - + File error Fel med filen - + Database error Fel med databas - - + + Cryptographic module Fel med kryptering - + Database module Fel med databas - + Bad password Fel lösenord - + Could not find item from network.. Kunde inte hitta objektet från nätverket - + SHA1: SHA1: - + Mime-Type: Mime-Type: - + Description: Beskrivning: - + Publisher: Förläggare: - + Content owner: Innehållsägare: - + License: Licens: - + Name: Namn: - + Date: Datum: @@ -561,30 +561,30 @@ DialogBase - - + + File way too big Filen är alldeles för stor - - + + File too big Filen är för stor - - + + File open error Fel med öppningen av filen - + Select file to be published Välja filen som du will ha publicerad - + Files (*.*) Alla filer (*.*) @@ -592,12 +592,12 @@ EditContactDialog - + Error Fel - + Operator addr is not valid Adress av operator är inte giltig @@ -605,124 +605,124 @@ FrontWidget - + Classified ads Annonser - + My profile Egen profil - + Contacts Kontakter - + Private messages Privat korrespondens - + Add shared file.. Addera en fil til nätverk.. - + Stop advertising selected shared file Sluta annonsera den markerade filen - + Save file to disk.. Spara filen till disk.. - + View file information.. Visa beskrivning av filen.. - + Copy file address (SHA1) to clipboard.. Kopiera SHA1 till urklipp.. - + Edit+publish new text document.. Skapa+publicera en ny dokument.. - + Open File Öppna filen - - + + Files (*.*) Alla typer (*.*) - - - + + + Error Fel - + Can't load image Kan inte ladda en bild - - + + Profile not in database Profil finns inte i lokal databas - - + + Try viewing profile first to obtain data Du kan försöka att se profil först för att hämta data - + Select file to be published Välja filen du vill ha publicerad - + File way too big Filen är alldeles för stor - + File too big Filen är för stor - - + + File open error Fel med öppningen av filen - - + + files filer - + Choose file name for saving Välj ett namn for din fil - + @@ -740,25 +740,25 @@ - + Article not found from local storage Annons kunde inte hittas i local databas - - + + Trusted by %1 SHA1 %2 Betrodd av %1 SHA1 %2 - + Time of last update Tid av senaste ändring - + @@ -771,90 +771,91 @@ (Ingen Bild -Valts) +Valts) + - + Edit contact.. Redigera kontakt - + &Reply to sender Svara avsändaren - + Reply to &forum Svara på &forumet - + &Post new ad Ska&pa en ny annons - + &Public comment &Publik kommentar - + &View profile &Visa profilen - - + + Attachments.. Bilagor.. - + Add selected operator to contacts.. Lägga operator till din kontakter - + &Reply Svara - + &New message Skapa en ny brev - + &Send public comment to sender Skicka en publik kommentar om profilen - + &View profile of peer &Visa profilen - + Add selected to contacts.. Lägga till din kontakter.. - - - - + + + + From: Från: - - + + Subject: Rubrik: - + To: Mottagare: @@ -872,7 +873,7 @@ InsertLinkDialog - + Invalid URL URL är inte giltig @@ -880,7 +881,7 @@ ManualConnectionDialog - + DNS lookup failure Namnet kunde inte hittas från DNS @@ -888,18 +889,18 @@ NewPrivMessageDialog - - + + Error Fel - + Recipient addr is not valid Adressen av mottagaren är inte giltig - + Recipient encryption key not found from storage Kryptering-nyckel för mottagaren kunde inte hittas i lokal databas @@ -907,18 +908,18 @@ NewProfileCommentDialog - - + + Error Fel - + Commented profile addr is not valid Adressen av profil är inte giltig - + Recipient encryption key not found from storage Kunde inte hittas kryptering-nyckel från lokal databas @@ -936,12 +937,12 @@ Kunde inte skapa x509-nyckel, utgående.. - + Cant load SSL cert Kunde inte ladda SSL-nyckkel - + Cant load SSL key Kunde inte ladda SSL-nyckel @@ -949,7 +950,7 @@ PasswdDialog - + Min length 5 (use 10+) Minimilängd är 5 (du skulle använda minst 10+) @@ -985,34 +986,34 @@ PrivateMessageSearchModel - + %1 Trusted by %2 %1 Betrodd av %2 - + Direction of message, sent/received Riktning - + Dir Riktning - + Peer Peer - + Time Datum - + Subject Rubrik @@ -1020,22 +1021,22 @@ ProfileCommentDisplay - + &Add comment... Skapa en ny komment.. - + Save attachment to disk.. Spara filen till disk.. - + Error Fel - + Article not found from local storage Annons kunde inte hittas i lokal databas @@ -1043,7 +1044,7 @@ ProfileCommentItemDelegate - + Attachments: Tilläggade filer: @@ -1051,17 +1052,17 @@ ProfileCommentListingModel - + Sender Avsändare - + Time Datum - + Subject Rubrik @@ -1069,7 +1070,7 @@ ProfileCommentModel - + Profile related to comment not found from database Profilen från komment kunde inte hittas i lokal databas @@ -1077,7 +1078,7 @@ ProfileReadersDialog - + View profile Visa profilen @@ -1085,7 +1086,7 @@ ProfileReadersListingModel - + Name or fingerprint of reader Namn eller SHA1 kontrollsumm av läsaren @@ -1093,7 +1094,7 @@ SearchDisplay - + Open.. Öppna.. @@ -1101,52 +1102,52 @@ TextEdit - + Help Hjälp - + About &Qt Information om &Qt - + Edit Actions Aktions för redigering - + &File Arkiv - + &Open... Öppna.. - + &Save locally before send &Spara före skickning - + Save locally &As... Spara i lokal disk med namn.. - + &Print... Skriv ut.. - + Print Preview... Förhandsgranskning - + &Export PDF... &Exportera som PDF @@ -1186,134 +1187,165 @@ Infoga en länk - + + Embed image + Bädda in en bild + + + F&ormat F&ormat - + &Bold Fet - + &Italic Kursiv - + &Underline Understruken - - + + &Left Vänsterjustera - - + + C&enter Centrerat - - + + &Right Högerjustera - + &Justify Marginaljustering - + &Color... Färg.. - + Standard Standardformat - + Bullet List (Disc) Punktuppställning (bollar) - + Bullet List (Circle) Punktuppställning (cirklar) - + Bullet List (Square) Punktuppställning (kvadrater) - + Ordered List (Decimal) Numrering (decimal) - + Ordered List (Alpha lower) Numrering (små bokstäver) - + Ordered List (Alpha upper) Numrering (stora bokstäver) - + Ordered List (Roman lower) Numrering (små roman) - + Ordered List (Roman upper) Numrering (stora roman) - + Application Annonser - + The document has been modified. Do you want to save your changes? Dokument har ändrats, spara? - + Open File... Öppna filen.. - + HTML-Files (*.htm *.html);;All Files (*) HTML-Filer (*.htm *.html);;Alla typer (*) - + Save as... Spara som.. - + ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*) ODF filer (*.odt);;HTML-Filer (*.htm *.html);;Alla typer (*) - + Print Document Skriv ut dokument + + + Open File + Öppna filen + + + + Files (*.*) + Alla filer (*.*) + + + + Error + Fel + + + + Can't load image + Kan inte ladda en bild + + + + + File way too big + Filen är alldeles för stor + aboutDialog @@ -1354,8 +1386,7 @@ <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Programmering gjorts av Antti Järvinen, konst av Meeri Järvinen.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Denna produkt innehåller programvara som har utvecklats av OpenSSL project för användning i OpenSSL toolkit (http://www.openssl.org).</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> @@ -1642,46 +1673,7 @@ URL - - caprofile - Link to classified ads operator profile - Skulle inte ändras - caprofile - - - - caad - Link to classified ad - Skulle inte ändras - caad - - - - cablob - Link to binary file inside classified ads - Skulle inte ändras - cablob - - - - http - Skulle inte ändras, har at vara "http" - http - - - - ftp - Link to ftp resource outside classified ads - Skulle inte ändras, har at vara "ftp" - ftp - - - - :// - :// - - - + Link label in text Länktext diff -Nru classified-ads-0.07/datamodel/binaryfile.cpp classified-ads-0.09/datamodel/binaryfile.cpp --- classified-ads-0.07/datamodel/binaryfile.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/binaryfile.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "binaryfile.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include "../mcontroller.h" #include "model.h" @@ -82,21 +76,18 @@ } m.insert( KJSonBinaryFileEncryption, iIsEncrypted) ; - QJson::Serializer serializer; - QVariant j (m); // then put the map inside QVariant and that // may then be serialized in libqjson-0.7 and 0.8 - QByteArray retval ( serializer.serialize(j) ) ; + QByteArray retval ( JSonWrapper::serialize(j) ) ; LOG_STR2("blob metadata %s", qPrintable(QString(retval))) ; return retval ; } bool BinaryFile::fromJSon(const QByteArray &aJSonBytes, const MController& /*aController*/ ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok) ); if (!ok) { return false ; } @@ -161,3 +152,4 @@ } return retval ; } + diff -Nru classified-ads-0.07/datamodel/binaryfilemodel.cpp classified-ads-0.09/datamodel/binaryfilemodel.cpp --- classified-ads-0.07/datamodel/binaryfilemodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/binaryfilemodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -31,14 +31,10 @@ #include "binaryfile.h" #include "profile.h" #include "contentencryptionmodel.h" -#ifdef WIN32 -#include -#include -#else -#include -#include +#ifndef WIN32 #include #endif +#include "../util/jsonwrapper.h" #include "mmodelprotocolinterface.h" #include "profilemodel.h" #include "const.h" @@ -722,3 +718,4 @@ } } } + diff -Nru classified-ads-0.07/datamodel/ca.cpp classified-ads-0.09/datamodel/ca.cpp --- classified-ads-0.07/datamodel/ca.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/ca.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "ca.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include "../mcontroller.h" #include "model.h" @@ -126,20 +120,17 @@ } - QJson::Serializer serializer; - QVariant j (m); // then put the map inside QVariant and that // may then be serialized in libqjson-0.7 and 0.8 - QByteArray retval ( serializer.serialize(j) ) ; + QByteArray retval ( JSonWrapper::serialize(j) ) ; LOG_STR2("ca %s", qPrintable(QString(retval))) ; return retval ; } bool CA::fromJSon(const QByteArray &aJSonBytes, const MController& /*aController*/ ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok) ); if (!ok) { QLOG_STR("QJson::Parser failed to parse " + QString::number(aJSonBytes.size()) + " bytes") ; return false ; diff -Nru classified-ads-0.07/datamodel/camodel.cpp classified-ads-0.09/datamodel/camodel.cpp --- classified-ads-0.07/datamodel/camodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/camodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -28,14 +28,10 @@ #include #include #include "contentencryptionmodel.h" -#ifdef WIN32 -#include -#include -#else -#include -#include +#ifndef WIN32 #include #endif +#include "../util/jsonwrapper.h" #include "mmodelprotocolinterface.h" #include "ca.h" #include "profile.h" @@ -332,6 +328,7 @@ iModel.searchModel()->indexClassifiedAd(aAd) ; } } else { + QLOG_STR("ca insert failure" + ins.lastError().text()) ; emit error(MController::DbTransactionError, ins.lastError().text()) ; } } @@ -927,3 +924,4 @@ const QStringList& ClassifiedAdsModel::whereComboBoxTexts() const { return iWhereComboBoxTexts; } + diff -Nru classified-ads-0.07/datamodel/contact.cpp classified-ads-0.09/datamodel/contact.cpp --- classified-ads-0.07/datamodel/contact.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/contact.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "ca.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include "../mcontroller.h" #include "model.h" @@ -61,21 +55,17 @@ if ( iIsTrusted ) { m.insert(KContactJSonIsTrusted, iIsTrusted) ; } - QJson::Serializer serializer; - QVariant j (m); // then put the map inside QVariant and that - // may then be serialized in libqjson-0.7 and 0.8 - QByteArray retval ( serializer.serialize(j) ) ; + QByteArray retval ( JSonWrapper::serialize(j) ) ; LOG_STR2("contact %s", qPrintable(QString(retval))) ; return retval ; } bool Contact::fromJSon(const QByteArray &aJSonBytes, const MController& /*aController*/ ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok) ); if (!ok) { return false ; } @@ -134,3 +124,4 @@ } return c ; } + diff -Nru classified-ads-0.07/datamodel/contentencryptionmodel.cpp classified-ads-0.09/datamodel/contentencryptionmodel.cpp --- classified-ads-0.07/datamodel/contentencryptionmodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/contentencryptionmodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -20,21 +20,18 @@ #ifdef WIN32 #define NOMINMAX #include -#include -#include #include #include #include #include #else #include -#include -#include #include // for ntohl #endif #include "contentencryptionmodel.h" #include "../log.h" #include "../util/hash.h" +#include "../util/jsonwrapper.h" #include "model.h" #include #include @@ -480,11 +477,9 @@ resultJSon.insert(KJSonEncryptedMessageEkElement, listOfEncryptionKeys) ; - QJson::Serializer serializer; - QVariant json (resultJSon); // then put the map inside QVariant and that // may then be serialized in libqjson-0.7 and 0.8 - QByteArray cryptoMetaData (serializer.serialize(json)) ; + QByteArray cryptoMetaData (JSonWrapper::serialize(json)) ; quint32 metadataLenNwBo ( htonl(cryptoMetaData.length() )) ; aResultingCipherText.append((const char *)&metadataLenNwBo,sizeof(quint32)) ; aResultingCipherText.append(cryptoMetaData) ; @@ -560,14 +555,13 @@ // We have come here with high hopes that we're among the // recipients of ResultingPlainText, right? - QJson::Parser parser; bool ok; if ( aCipherText.length() > 256 ) { const quint32* lenPtr = (const quint32* ) aCipherText.constData() ; quint32 metaDataLen = ntohl(*lenPtr) ; if ( metaDataLen < (quint32)(aCipherText.length()) ) { - QVariantMap result = parser.parse (aCipherText.mid(sizeof(quint32),metaDataLen), &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aCipherText.mid(sizeof(quint32),metaDataLen), &ok) ); if (ok && result.contains(KJSonEncryptedMessageEkElement) && result.contains(KJSonEncryptedMessageIvElement) ) { @@ -903,3 +897,4 @@ } return retval ; } + diff -Nru classified-ads-0.07/datamodel/model.cpp classified-ads-0.09/datamodel/model.cpp --- classified-ads-0.07/datamodel/model.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/model.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -35,6 +35,7 @@ #include "../net/connection.h" #include "../net/protocol_message_formatter.h" #include "../net/node.h" +#include "../net/networklistener.h" #include "netrequestexecutor.h" #include "contentencryptionmodel.h" #include "profilemodel.h" @@ -69,7 +70,8 @@ iPrivMsgModel(NULL), iProfileCommentModel(NULL), iSearchModel(NULL), - iTrustTreeModel(NULL) { + iTrustTreeModel(NULL), + iTimeOfLastNetworkAddrCheck(QDateTime::currentDateTimeUtc().toTime_t()) { LOG_STR("Model::Model()") ; connect(this, SIGNAL( error(MController::CAErrorSituation, @@ -594,6 +596,7 @@ void Model::initPseudoRandom() { SSL_load_error_strings(); SSL_library_init(); + LOG_STR2("Openssl %s\n", SSLeay_version(SSLEAY_VERSION)) ; #ifdef WIN32 OpenSSL_add_all_algorithms() ; #endif @@ -1248,15 +1251,32 @@ #endif ) { LOG_STR2( "timerEvent Timer ID: %d" , event->timerId()); + const time_t currentTime ( QDateTime::currentDateTimeUtc().toTime_t() ) ; lock() ; + // update mutual connect time: for ( int i = iConnections->size()-1 ; i >= 0 ; i-- ) { Connection *connectedNode = iConnections->at(i) ; if ( connectedNode->node() ) { - iNodeModel->updateNodeLastMutualConnectTimeInDb (connectedNode->node()->nodeFingerPrint(),QDateTime::currentDateTimeUtc().toTime_t() ) ; + iNodeModel->updateNodeLastMutualConnectTimeInDb (connectedNode->node()->nodeFingerPrint(),currentTime ) ; } } + // then check for dead connections: + for ( int i = iConnections->size()-1 ; i >= 0 ; i-- ) { + Connection *connectedNode = iConnections->at(i) ; + if ( connectedNode->iTimeOfLastActivity < + ( currentTime - ( 60 * (Connection::iMinutesBetweenBucketFill+2) ) ) ) { + // no traffic for minimum time + 2 minutes -> ask non-gently for closing: + connectedNode->forciblyCloseSocket() ; + LOG_STR2( "Connection at array pos %d has been dead -> abort()" , i); + } + } unlock() ; + // + // dead process checking now done + // + // continue with database housekeeping + // QWaitCondition waitCondition; QMutex mutex; mutex.lock(); @@ -1290,6 +1310,16 @@ iBinaryFileModel->truncateDataTableToMaxRows() ; unlock() ; mutex.unlock() ; + + // then check out for local network addresses: + if ( (iTimeOfLastNetworkAddrCheck + (120*60)) < // every 120 minutes + QDateTime::currentDateTimeUtc().toTime_t()) { + iTimeOfLastNetworkAddrCheck = QDateTime::currentDateTimeUtc().toTime_t(); + lock() ; + iController->networkListener()->figureOutLocalAddresses() ; + unlock() ; + } LOG_STR2( "timerEvent Timer ID: %d out" , event->timerId()); } + diff -Nru classified-ads-0.07/datamodel/model.h classified-ads-0.09/datamodel/model.h --- classified-ads-0.07/datamodel/model.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/model.h 2015-10-10 12:49:33.000000000 +0000 @@ -222,5 +222,6 @@ ProfileCommentModel* iProfileCommentModel ; /**< comments data storage */ SearchModel* iSearchModel ; /**< full text search model part */ TrustTreeModel *iTrustTreeModel ; /**< trust list handling model */ + time_t iTimeOfLastNetworkAddrCheck ; /**< timestamp of local addr update */ } ; #endif diff -Nru classified-ads-0.07/datamodel/privmsg.cpp classified-ads-0.09/datamodel/privmsg.cpp --- classified-ads-0.07/datamodel/privmsg.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/privmsg.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "ca.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include "../mcontroller.h" #include "model.h" @@ -106,21 +100,18 @@ m.insert(KPrivMsgJSonProfileKey, iProfileKey) ; } - QJson::Serializer serializer; - QVariant j (m); // then put the map inside QVariant and that // may then be serialized in libqjson-0.7 and 0.8 - QByteArray retval ( serializer.serialize(j) ) ; + QByteArray retval ( JSonWrapper::serialize(j) ) ; LOG_STR2("msg %s", qPrintable(QString(retval))) ; return retval ; } bool PrivMessage::fromJSon(const QByteArray &aJSonBytes, const MController& aController ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok) ) ; if (!ok) { return false ; } @@ -190,3 +181,4 @@ } return retval ; } + diff -Nru classified-ads-0.07/datamodel/privmsgmodel.cpp classified-ads-0.09/datamodel/privmsgmodel.cpp --- classified-ads-0.07/datamodel/privmsgmodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/privmsgmodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -26,11 +26,6 @@ #include #include "privmsg.h" #include "contentencryptionmodel.h" -#ifdef WIN32 -#include -#else -#include -#endif #include "const.h" PrivMessageModel::PrivMessageModel(MController *aController, @@ -186,6 +181,10 @@ plainTextPrivMessageData ) ) { LOG_STR2("message: %s", qPrintable(QString(plainTextPrivMessageData))); ret = retval->fromJSon(plainTextPrivMessageData,*iController) ; + } else { + delete retval ; + retval = NULL ; + ret = false ; } if ( ret ) { @@ -549,3 +548,4 @@ emit error(MController::DbTransactionError, query.lastError().text()) ; } } + diff -Nru classified-ads-0.07/datamodel/privmsgsearchmodel.cpp classified-ads-0.09/datamodel/privmsgsearchmodel.cpp --- classified-ads-0.07/datamodel/privmsgsearchmodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/privmsgsearchmodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -284,7 +284,7 @@ } -void PrivateMessageSearchModel::updateSenderAndSubjectOfMsg(PrivateMessageListItem& aItem) { +bool PrivateMessageSearchModel::updateSenderAndSubjectOfMsg(PrivateMessageListItem& aItem) { PrivMessage* msg ( iModel.privateMessageModel().messageByFingerPrint(aItem.iMessageHash)); if ( msg ) { aItem.iSenderName = msg->iSenderName ; @@ -307,6 +307,11 @@ } delete msg ; + return true ; + } else { + // we have got a message but could not open it via datamodel + // so the message is somehow faulty. + return false ; } } @@ -314,22 +319,32 @@ void PrivateMessageSearchModel::doUpdateDataOnIdle() { LOG_STR("PrivateMessageSearchModel::doUpdateDataOnIdle") ; int indexUpdated(-1) ; + bool updateSuccess ( false ) ; iModel.lock() ; for ( int i ( 0 ) ; i < iPrivateMessages.size() ; i++ ) { if ( iPrivateMessages.at(i).iSenderHash == KNullHash ) { indexUpdated = i ; PrivateMessageListItem& item ( iPrivateMessages[i] ) ; - updateSenderAndSubjectOfMsg(item) ; + updateSuccess = updateSenderAndSubjectOfMsg(item) ; break ; // out of loop, e.g. do only one } } iModel.unlock() ; if ( indexUpdated > -1 ) { - // so, if we updated something, give UI a clue - emit dataChanged(createIndex(indexUpdated,0), - createIndex(indexUpdated,3) ) ; - // and re-schedule self to check if there is more - // messages to handle + if ( updateSuccess ) { + // so, if we updated something, give UI a clue + emit dataChanged(createIndex(indexUpdated,0), + createIndex(indexUpdated,3) ) ; + // and re-schedule self to check if there is more + // messages to handle + } else { + // update was not success, lets remove the message + beginRemoveRows(QModelIndex(), indexUpdated,indexUpdated); + iModel.lock() ; + iPrivateMessages.removeAt(indexUpdated) ; + iModel.unlock() ; + endRemoveRows() ; + } QTimer::singleShot(0, this, SLOT(doUpdateDataOnIdle())); } } diff -Nru classified-ads-0.07/datamodel/privmsgsearchmodel.h classified-ads-0.09/datamodel/privmsgsearchmodel.h --- classified-ads-0.07/datamodel/privmsgsearchmodel.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/privmsgsearchmodel.h 2015-10-10 12:49:33.000000000 +0000 @@ -100,7 +100,12 @@ void doUpdateDataOnIdle() ; private:// methods void performSearch() ; - void updateSenderAndSubjectOfMsg(PrivateMessageListItem& aItem) ; + /** + * Updates single private message from database, e.g. tries + * to open encryption and everything + * @return true on success + */ + bool updateSenderAndSubjectOfMsg(PrivateMessageListItem& aItem) ; private: // data Model& iModel ; diff -Nru classified-ads-0.07/datamodel/profilecomment.cpp classified-ads-0.09/datamodel/profilecomment.cpp --- classified-ads-0.07/datamodel/profilecomment.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/profilecomment.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "profilecomment.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include "../mcontroller.h" #include "model.h" @@ -57,10 +51,7 @@ } QByteArray ProfileComment::asJSon(const MController& aController) const { - - // may then be serialized in libqjson-0.7 and 0.8 - QJson::Serializer serializer; - QByteArray retval ( serializer.serialize(asQVariant(aController)) ) ; + QByteArray retval ( JSonWrapper::serialize(asQVariant(aController)) ) ; LOG_STR2("profilecomment %s", qPrintable(QString(retval))) ; return retval ; } @@ -160,10 +151,9 @@ bool ProfileComment::fromJSon(const QByteArray &aJSonBytes, const MController& aController ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok)); if (!ok) { return false ; } else { @@ -173,3 +163,4 @@ return ok ; } + diff -Nru classified-ads-0.07/datamodel/profilecommentmodel.cpp classified-ads-0.09/datamodel/profilecommentmodel.cpp --- classified-ads-0.07/datamodel/profilecommentmodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/profilecommentmodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -28,13 +28,6 @@ #include #include "profilecomment.h" #include "contentencryptionmodel.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif #include "const.h" #include "searchmodel.h" diff -Nru classified-ads-0.07/datamodel/profile.cpp classified-ads-0.09/datamodel/profile.cpp --- classified-ads-0.07/datamodel/profile.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/profile.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -21,13 +21,7 @@ #include "profile.h" #include "../util/hash.h" #include "../log.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include #include #include "../mcontroller.h" @@ -70,8 +64,7 @@ QByteArray Profile::asJSon(const MController& aController) const { // may then be serialized in libqjson-0.7 and 0.8 - QJson::Serializer serializer; - QByteArray retval ( serializer.serialize(asQVariant(aController)) ) ; + QByteArray retval ( JSonWrapper::serialize(asQVariant(aController)) ) ; LOG_STR2("profile %s", qPrintable(QString(retval))) ; return retval ; } @@ -295,10 +288,9 @@ bool Profile::fromJSon(const QByteArray &aJSonBytes, const MController& aController, bool aOmitImage ) { - QJson::Parser parser; bool ok; - QVariantMap result = parser.parse (aJSonBytes, &ok).toMap(); + QVariantMap result ( JSonWrapper::parse (aJSonBytes, &ok) ); if (!ok) { return false ; } else { @@ -336,3 +328,4 @@ } return retval ; } + diff -Nru classified-ads-0.07/datamodel/profilemodel.cpp classified-ads-0.09/datamodel/profilemodel.cpp --- classified-ads-0.07/datamodel/profilemodel.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/datamodel/profilemodel.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -26,13 +26,7 @@ #include #include "profile.h" #include "contentencryptionmodel.h" -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include "const.h" #include "searchmodel.h" @@ -282,10 +276,7 @@ // looks like QJson will set parseResult to true also // when content is actually encrypted so we can check only // for non-encrypted data here. it still needs to parse. - QJson::Parser* jsonParser = new QJson::Parser(); - QVariantMap dummyResult = jsonParser->parse (aContent, &parseResult).toMap(); - delete jsonParser ; - jsonParser = NULL ; + QVariantMap dummyResult ( JSonWrapper::parse (aContent, &parseResult) ); } bool flagThisNodeAlreadyHadContent ( false ) ; if ( ( parseResult && ( ( aFlags & 1 ) == 0 ) ) || (( aFlags & 1 ) == 1) ) { // it did parse and encryption flag was 0 @@ -518,8 +509,7 @@ void ProfileModel::setPrivateDataForProfile( const Hash& aProfile, const QVariant& aPrivateData ) { - QJson::Serializer serializer; - QByteArray dataJSon (serializer.serialize(aPrivateData) ) ; + QByteArray dataJSon (JSonWrapper::serialize(aPrivateData) ) ; QByteArray encryptedJson ; QList privateDataReaders ; privateDataReaders << aProfile ; // private data is encrypted only to self @@ -573,9 +563,8 @@ QByteArray plainTextProfileData ; if ( iController->model().contentEncryptionModel().decrypt(encryptedPrivateData, plainTextProfileData ) ) { - QJson::Parser parser; QLOG_STR("priv data: " + plainTextProfileData) ; - retval = parser.parse (plainTextProfileData, &ret).toMap(); + retval = JSonWrapper::parse (plainTextProfileData, &ret); if ( !ret ) { retval = QVariant() ; } @@ -670,3 +659,4 @@ } return ret ; } + diff -Nru classified-ads-0.07/debian/changelog classified-ads-0.09/debian/changelog --- classified-ads-0.07/debian/changelog 2015-04-12 15:59:07.000000000 +0000 +++ classified-ads-0.09/debian/changelog 2015-10-13 19:20:21.000000000 +0000 @@ -1,3 +1,17 @@ +classified-ads (0.09-1) unstable; urgency=medium + + * New upstream version. + * Noticed translations in copyright file. Closes: #801147 + + -- Antti Järvinen Sat, 10 Oct 2015 15:58:24 +0300 + +classified-ads (0.08-1) unstable; urgency=low + + * New upstream release. Closes: #794395 + * Build deps changed: qt5 instead of qt4, removal of libqjson and libmagic. + + -- Antti Järvinen Sun, 04 Oct 2015 23:24:17 +0300 + classified-ads (0.07-1) unstable; urgency=low * Initial release. Closes: #779375 diff -Nru classified-ads-0.07/debian/control classified-ads-0.09/debian/control --- classified-ads-0.07/debian/control 2015-04-12 15:59:07.000000000 +0000 +++ classified-ads-0.09/debian/control 2015-10-13 19:20:21.000000000 +0000 @@ -4,13 +4,11 @@ Maintainer: Antti Järvinen Build-Depends: debhelper (>= 9), libgcrypt-dev, - libmagic-dev, libminiupnpc-dev, libnatpmp-dev, - libqjson-dev, - libqt4-dev, + qtbase5-dev, libssl-dev, - qt4-qmake, + qt5-qmake, imagemagick Standards-Version: 3.9.6 Homepage: http://katiska.org/classified-ads/ @@ -19,7 +17,7 @@ Package: classified-ads Architecture: any -Depends: libqt4-sql-sqlite, ${misc:Depends}, ${shlibs:Depends} +Depends: libqt5sql5-sqlite, ${misc:Depends}, ${shlibs:Depends} Description: Program for displaying classified advertisement items Classified ads is an attempt to re-produce parts of the functionality that went away when usenet news ceased to exist. This attempt tries to diff -Nru classified-ads-0.07/debian/copyright classified-ads-0.09/debian/copyright --- classified-ads-0.07/debian/copyright 2015-04-12 15:59:07.000000000 +0000 +++ classified-ads-0.09/debian/copyright 2015-10-13 19:20:21.000000000 +0000 @@ -18,6 +18,10 @@ Copyright: 2014 Tuomas Haarala License: LGPL-2.1+ +Files: po/da.po +Copyright: 2015 Joe Hansen +License: LGPL-2.1+ + License: LGPL-2.1+ Classified Ads is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public diff -Nru classified-ads-0.07/debian/gbp.conf classified-ads-0.09/debian/gbp.conf --- classified-ads-0.07/debian/gbp.conf 2015-04-12 15:59:07.000000000 +0000 +++ classified-ads-0.09/debian/gbp.conf 2015-10-13 19:20:21.000000000 +0000 @@ -1,12 +1,10 @@ [DEFAULT] -builder = git-pbuilder -cleaner = fakeroot debian/rules clean pristine-tar = True debian-branch = debian -[git-buildpackage] -export-dir = ../build-area/ -tarball-dir = ../tarballs/ +[buildpackage] +# Use "git config user.signingkey") +sign-tags = True -[git-import-orig] +[import-orig] dch = False diff -Nru classified-ads-0.07/debian/rules classified-ads-0.09/debian/rules --- classified-ads-0.07/debian/rules 2015-04-12 15:59:07.000000000 +0000 +++ classified-ads-0.09/debian/rules 2015-10-13 19:20:21.000000000 +0000 @@ -1,5 +1,5 @@ #!/usr/bin/make -f -export QT_SELECT := qt4 +export QT_SELECT := qt5 %: dh $@ --buildsystem=qmake --parallel diff -Nru classified-ads-0.07/FrontWidget.cpp classified-ads-0.09/FrontWidget.cpp --- classified-ads-0.07/FrontWidget.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/FrontWidget.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -1289,17 +1289,17 @@ QLOG_STR("Show classified ad " + ca.iFingerPrint.toString() ) ; if ( ca.iFingerPrint != KNullHash && ui.tabWidget ) { ui.tabWidget->setCurrentIndex(0) ; // 0 is the ca tab - if ( ca.iAboutComboBoxIndex > 0 ) { + if ( ca.iAboutComboBoxIndex >= 0 ) { ui.caAboutComboBox->setCurrentIndex(ca.iAboutComboBoxIndex) ; } else { ui.caAboutComboBox->setEditText(ca.iAboutComboBoxText) ; } - if ( ca.iConcernsComboBoxIndex > 0 ) { + if ( ca.iConcernsComboBoxIndex >= 0 ) { ui.caRegardingCombobox->setCurrentIndex(ca.iConcernsComboBoxIndex) ; } else { ui.caRegardingCombobox->setEditText(ca.iConcernsComboBoxText) ; } - if ( ca.iInComboBoxIndex > 0 ) { + if ( ca.iInComboBoxIndex >= 0 ) { ui.caWhereComboBox->setCurrentIndex(ca.iInComboBoxIndex) ; } else { ui.caWhereComboBox->setEditText(ca.iInComboBoxText) ; @@ -1747,7 +1747,19 @@ retval.append( aRegardingCombo.currentText() ) ; } retval.append(".") ; - retval.append( aWhereCombo.currentText() ) ; + + if ( aController.model().classifiedAdsModel().whereComboBoxTexts().indexOf( aWhereCombo.currentText()) == 0 ) { + // explanation: the country names in "where" are not localized. + // except for the first entry, "Any country" and if we get that, + // lets put un-localized "Any country" in there -> note that this + // same string appears inside tr() in datamodel/camodel.cpp + retval.append( "Any country" ) ; + } else { + // if not the "Any country", then just take the literal + // string value, regardless of index + retval.append( aWhereCombo.currentText() ) ; + } + return retval ; } diff -Nru classified-ads-0.07/graphics-highres/Makefile classified-ads-0.09/graphics-highres/Makefile --- classified-ads-0.07/graphics-highres/Makefile 2015-04-12 10:18:49.000000000 +0000 +++ classified-ads-0.09/graphics-highres/Makefile 2015-10-10 12:49:33.000000000 +0000 @@ -28,10 +28,10 @@ all: ../ui/turt558.png ../ui/turt-transparent-128x128.png ../ui/turt558.png: turt-transparent.xcf - convert turt-transparent.xcf -resize 558 ../ui/turt558.png + convert turt-transparent.xcf -resize 558 +set date:create +set date:modify -define png:exclude-chunk=time ../ui/turt558.png ../ui/turt-transparent-128x128.png: turt-transparent.xcf - convert turt-transparent.xcf -resize 128x128\> -gravity center -background none -extent 128x128 ../ui/turt-transparent-128x128.png + convert turt-transparent.xcf -resize 128x128\> -gravity center -background none -extent 128x128 +set date:create +set date:modify -define png:exclude-chunk=time ../ui/turt-transparent-128x128.png clean: rm -f ../ui/turt558.png ../ui/turt-transparent-128x128.png diff -Nru classified-ads-0.07/log.h classified-ads-0.09/log.h --- classified-ads-0.07/log.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/log.h 2015-10-10 12:49:33.000000000 +0000 @@ -23,6 +23,7 @@ #include #include #ifdef DEBUG +#include #define LOG_STR(a) qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << a #define LOG_STR2(a,b) { QString str ; qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << str.sprintf(a,b) ; } #define QLOG_STR(a) qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << a diff -Nru classified-ads-0.07/main.cpp classified-ads-0.09/main.cpp --- classified-ads-0.07/main.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/main.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -25,6 +25,7 @@ #include "log.h" #include // for Q_IPV6ADDR #include +#include "util/catranslator.h" QApplication* app ; /**< The qt application, we need to have 1 instance */ Controller* c ; /** Application controller, here as static for signal handlers */ @@ -87,22 +88,29 @@ #endif app = new QApplication (argc, argv); - QTranslator qtTranslator; - qtTranslator.load("qt_" + QLocale::system().name(), - QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app->installTranslator(&qtTranslator); + CATranslator caTranslator; - QTranslator myappTranslator; - myappTranslator.load( -#ifdef WIN32 - // apparently win32 runs the program - // inside installation directory so no - // directory needs to be specified + if ( caTranslator.load( "qt_" + QLocale::system().name()) == false ) { + QLOG_STR("Trying translations from " + QLibraryInfo::location(QLibraryInfo::TranslationsPath)) ; + if ( caTranslator.load("qt_" + QLocale::system().name(), + QLibraryInfo::location(QLibraryInfo::TranslationsPath)) == true ) { + QLOG_STR("Qt translation loaded from " + + QLibraryInfo::location(QLibraryInfo::TranslationsPath)) ; + } else { +#ifndef WIN32 + if ( caTranslator.load(QLibraryInfo::location(QLibraryInfo::TranslationsPath) + "/qt_" + QLocale::system().name()) ) { + QLOG_STR("Qt translation found from "+QLibraryInfo::location(QLibraryInfo::TranslationsPath) + " using direct file naming") ; + } else { + QLOG_STR("Qt translation not found") ; + } #else - QString("/usr/share/classified-ads/") + + QLOG_STR("Qt translation not found") ; #endif - QString("classified_ads_") + QLocale::system().name()); - app->installTranslator(&myappTranslator); + } + } else { + QLOG_STR("Qt translation found from current directory") ; + } + app->installTranslator(&caTranslator); // controller will actually start launching the application c = new Controller(*app) ; diff -Nru classified-ads-0.07/net/connection.cpp classified-ads-0.09/net/connection.cpp --- classified-ads-0.07/net/connection.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/connection.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -26,9 +26,7 @@ #include "../log.h" #include #include "../datamodel/model.h" -#ifdef WIN32 - -#else +#ifndef WIN32 #include "arpa/inet.h" #endif #include @@ -40,9 +38,13 @@ #include "../datamodel/privmsgmodel.h" #include "../datamodel/profilecommentmodel.h" +/** nat subnet. see similar variable in node.cpp */ static const QPair normalNats1 ( QHostAddress::parseSubnet("10.0.0.0/8") ); static const QPair normalNats2 ( QHostAddress::parseSubnet("172.16.0.0/20")); static const QPair normalNats3 ( QHostAddress::parseSubnet("192.168.0.0/16") ); +/** non-routable address space that some ISP's seem to offer */ +static const QPair rfc6598 ( QHostAddress::parseSubnet("100.64.0.0/10") ); + Connection::Connection (const QHostAddress& aAddr, const int aPort, @@ -138,7 +140,6 @@ runForIncomingConnections() ; } else { runForOutgoingConnections() ; - } iObserver.connectionClosed(this) ; // will call datamodel.lock() inside LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"Connection::run out") ; @@ -147,11 +148,15 @@ iNodeOfConnectedPeer = NULL ; delete iBytesRead ; iBytesRead = NULL ; + iSocket = NULL ; // iSocket was automatic variable inside scope + // of runForIncomingConnections/runForOutgoingConnections + // and it is no more -> set to NULL to prevent accidental access } void Connection::runForIncomingConnections() { QSslSocket sock ; - iSocket = &sock ; + iSocket = &sock ; // when this method goes out of + // scope, iSocket must be set to NULL if (iSocket->setSocketDescriptor(iSocketDescriptor)) { connect(iSocket, SIGNAL(encrypted()), this, SLOT(socketReady())); // the idea here with model.lock is that @@ -164,6 +169,7 @@ // or anything should be ok, and of course the // automatic variables. if ( iModel.lock() == false ) { + iSocket->close() ; return ; } iSocket->setLocalCertificate(iModel.nodeModel().nodeCert()); @@ -172,8 +178,10 @@ iSocket->startServerEncryption(); } else { LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"iSocket->setSocketDescriptor failed?????") ; + iSocket->close() ; return ; } + iSocket->setSocketOption(QAbstractSocket::LowDelayOption,1) ; // immediate send if ( iSocket->waitForEncrypted(10*1000) == false ) { LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"socket was not encrypted in 10 seconds -> out") ; iSocket->abort() ; @@ -186,6 +194,7 @@ // oh great, broadcast? // connected to self iNeedsToRun = false ; + iSocket->close() ; return ; } @@ -234,7 +243,6 @@ iSocket->close() ; } iSocket->waitForDisconnected(10*1000) ; - iSocket = NULL ; LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"Connection::run(incoming) out") ; } @@ -268,6 +276,7 @@ if ( iModel.lock() == false ) { return ; } + iSocket->setSocketOption(QAbstractSocket::LowDelayOption,1) ; // immediate send iSocket->setLocalCertificate(iModel.nodeModel().nodeCert()); iSocket->setPrivateKey(iModel.nodeModel().nodeKey()); iModel.unlock() ; @@ -286,6 +295,7 @@ // oh great, broadcast? // connected to self iNeedsToRun = false ; + iSocket->close() ; return ; } @@ -296,7 +306,7 @@ // than that? if ( iFpOfNodeWeTrying != KNullHash ) { // if other than null hash if ( iFpOfNodeWeTrying != fingerPrintOfPeer ) { - iSocket->disconnectFromHost() ; + iSocket->abort() ; iNeedsToRun = false ; // this causes readloop to return immediately } } @@ -327,10 +337,10 @@ if ( iNeedsToRun == false && iSocket && iSocket->state() == QAbstractSocket::ConnectedState ) { iSocket->close() ; } - if ( iNeedsToRun ) { + if ( iNeedsToRun && iSocket ) { iSocket->waitForDisconnected(30*1000) ; - iSocket = NULL ; } + iSocket = NULL ; LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"Connection::run (outgoing )out") ; } @@ -346,7 +356,7 @@ iModel.lock() ; iModel.connectionStateChanged(Connection::Closing, this) ; iModel.unlock() ; - iSocket->disconnectFromHost() ; + iSocket->abort() ; return ; } else { iBytesIn += sizeof(quint32) ; @@ -421,7 +431,7 @@ iConnectionState = Connection::Closing ; iModel.connectionStateChanged(Connection::Closing, this) ; iModel.unlock() ; - iSocket->disconnectFromHost() ; + iSocket->abort() ; iNeedsToRun = false ; LOG_STR(QString("0x%1 ").arg((qulonglong)this, 8) +"Giving up pending read operation after 500 seconds"); } @@ -450,7 +460,7 @@ iModel.connectionStateChanged(Connection::Closing, this) ; iModel.unlock() ; } - iSocket->disconnectFromHost() ; + iSocket->abort() ; iNeedsToRun = false ; } else { iBytesOut += sizeof(quint32) ; @@ -463,7 +473,7 @@ iModel.connectionStateChanged(Connection::Closing, this) ; iModel.unlock() ; } - iSocket->disconnectFromHost() ; + iSocket->abort() ; iNeedsToRun = false ; } else { iBytesOut += itemToSend->size() ; @@ -480,7 +490,7 @@ iModel.connectionStateChanged(Connection::Closing, this) ; iModel.unlock() ; } - iSocket->disconnectFromHost() ; + iSocket->abort() ; iNeedsToRun = false ; } delete itemToSend ; @@ -517,7 +527,8 @@ if ( peer.isInSubnet(normalNats1) || peer.isInSubnet(normalNats2) || - peer.isInSubnet(normalNats3) ) + peer.isInSubnet(normalNats3) || + peer.isInSubnet(rfc6598)) retval = true ; } } @@ -528,6 +539,7 @@ if ( iTimeOfBucketFill+15 < QDateTime::currentDateTimeUtc().toTime_t() && iNextProtocolItemToSend.size() == 0 && iSendQueue.size() == 0 && + iSocket && iNumberOfPacketsReceived > 1 && iNodeOfConnectedPeer ) { // we've been connected for 15 seconds now and there is nothing in queue. @@ -596,8 +608,8 @@ break ; case ClassifiedAd2NdAddr: // this is our final stage - if ( ( iTimeOfBucketFill + (60*30 )) < QDateTime::currentDateTimeUtc().toTime_t() ) { - // 30 minutes passed since last bucket fill: re-do + if ( ( iTimeOfBucketFill + (60*iMinutesBetweenBucketFill )) < QDateTime::currentDateTimeUtc().toTime_t() ) { + // iMinutesBetweenBucketFill minutes passed since last bucket fill: re-do iTimeOfBucketFill = QDateTime::currentDateTimeUtc().toTime_t() ; iStageOfBucketFill = OwnNodeGreeting; } @@ -619,3 +631,9 @@ return iFpOfNodeWeTrying ; } } + +bool Connection::forciblyCloseSocket() { + iNeedsToRun = false ; + iFpOfNodeWeTrying = KNullHash ; + return true ; +} diff -Nru classified-ads-0.07/net/connection.h classified-ads-0.09/net/connection.h --- classified-ads-0.07/net/connection.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/connection.h 2015-10-10 12:49:33.000000000 +0000 @@ -186,11 +186,17 @@ return iBytesIn ; } /** - * returs data transfer amount + * returns data transfer amount */ unsigned long bytesOut() const { return iBytesOut ; } + /** + * Forcibly closes socket. + * @return true if socket was still allocated and its "abort" method + * got called. + */ + bool forciblyCloseSocket() ; public slots: void socketReady() ; /** @@ -254,6 +260,12 @@ bool iNeedsToRun ; /**< if set to false, connection closes itself */ time_t iTimeOfLastActivity ; /**< last time there was any traffic with peer */ unsigned iNumberOfPacketsReceived ; /**< nr of received complete protocol packets*/ + /** + * how often peers are queried for new content to send/receive ; this is also + * max permitted lenght for data transmission inactivity ; nodes that have been + * idle longer than this are considered "dead" + */ + static const unsigned iMinutesBetweenBucketFill = 30 ; protected: // these are not public ConnectionState iConnectionState /**< closed/open etc. */ ; /** received data is sent to @ref ConnectionObserver */ diff -Nru classified-ads-0.07/net/networkconnectorengine.cpp classified-ads-0.09/net/networkconnectorengine.cpp --- classified-ads-0.07/net/networkconnectorengine.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/networkconnectorengine.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -119,7 +119,9 @@ addrOfNode.setAddress(n->DNSAddr()) ; } else { if (!Connection::Ipv6AddressesEqual( n->ipv6Addr(), - KNullIpv6Addr ) ) { + KNullIpv6Addr ) + && // try connect only if we ourselves have ipv6: + hasIpv6 ) { addrOfNode.setAddress( n->ipv6Addr() ) ; } else if ( n->ipv4Addr() ) { addrOfNode.setAddress( n->ipv4Addr() ) ; diff -Nru classified-ads-0.07/net/networklistener.cpp classified-ads-0.09/net/networklistener.cpp --- classified-ads-0.07/net/networklistener.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/networklistener.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -33,9 +33,20 @@ #include #include #include +#include #include "miniupnpc.h" #include "upnpcommands.h" #ifndef WIN32 +// Difficult issue here. Miniupnp and natpmp share some codebase +// and a common header "declspec.h" that contains common definitions. +// Different linux distributions package these 2 packages sometimes +// from same original version, sometimes from different, +// sometimes declspec.h is inclduded twice, etc. +#if defined(MINIUPNP_LIBSPEC) && !defined(LIBSPEC) +#define LIBSPEC MINIUPNP_LIBSPEC +#endif +// hopefully LIBSPEC is now ok, continue to include natpmp +// header. #include "natpmp.h" #endif #include @@ -46,11 +57,31 @@ iController(aController), iModel(aModel), iBroadCastListener(this), - iCanAccept(true) { + iCanAccept(true), + iNetworkSession(NULL) { iParser = new ProtocolMessageParser(*iController,*iModel) ; setMaxPendingConnections(50) ; qRegisterMetaType("Connection::ConnectionState"); + + // Set Internet Access Point + QNetworkConfigurationManager manager; + const bool canStartIAP = (manager.capabilities() + & QNetworkConfigurationManager::CanStartAndStopInterfaces); + // Is there default access point, use it + iConnectionConfig = manager.defaultConfiguration(); + if (!iConnectionConfig.isValid() || (!canStartIAP && iConnectionConfig.state() != QNetworkConfiguration::Active)) { + QLOG_STR("Can't open network access point??") ; + } + + iNetworkSession = new QNetworkSession(iConnectionConfig, this); + iNetworkSession->open(); + iNetworkSession->waitForOpened(-1); + figureOutLocalAddresses() ; + connect ( iNetworkSession, + SIGNAL(stateChanged ( QNetworkSession::State ) ), + this, + SLOT(networkStateChanged( QNetworkSession::State ))) ; } NetworkListener::~NetworkListener() { @@ -62,12 +93,20 @@ bool NetworkListener::startListen(bool aIpv6) { if ( aIpv6 ) { - if (!listen ( QHostAddress::AnyIPv6, iModel->nodeModel().listenPortOfThisNode() )) { - QLOG_STR("Socket listen v6: " + errorString()) ; +#if QT_VERSION >= 0x050000 + // in qt5.x ::Any means both v4+v6. + if (!listen ( QHostAddress::Any, iModel->nodeModel().listenPortOfThisNode() )) { + QLOG_STR("Socket listen v6+v4: " + errorString()) ; + return false ; + } +#else + // at least in linux qt4 binding to AnyIpv6 gives you also Ipv4. + if(!listen ( QHostAddress::AnyIPv6, iModel->nodeModel().listenPortOfThisNode() )) { + QLOG_STR("Socket listen v4+v6: " + errorString()) ; return false ; } +#endif } else { - if(!listen ( QHostAddress::Any, iModel->nodeModel().listenPortOfThisNode() )) { QLOG_STR("Socket listen v4: " + errorString()) ; return false ; @@ -78,7 +117,12 @@ return true ; } -void NetworkListener::incomingConnection (int aSocketDescriptor ) { +#if QT_VERSION >= 0x050000 +void NetworkListener::incomingConnection ( qintptr handle ) { + const int aSocketDescriptor ( handle ) ; +#else +void NetworkListener::incomingConnection ( int aSocketDescriptor ) { +#endif LOG_STR2("NetworkListener::incomingConnection desc = %d", aSocketDescriptor); if ( iCanAccept ) { QThread* t = new QThread(); @@ -230,7 +274,7 @@ NULL , // path to minissdpd socket (or null defaults to /var/run/minissdpd.sock) 0 ); // source port (0=default 1900) #endif - if ( error == 0 ) { + if ( error == 0 && upnp_dev != NULL ) { char lan_address[64]; struct UPNPUrls upnp_urls; struct IGDdatas upnp_data; @@ -312,6 +356,8 @@ } } } + freeUPNPDevlist(upnp_dev) ; + upnp_dev = NULL ; } } if ( !globalIpv4AddrSeen ) { @@ -519,3 +565,12 @@ iCanAccept = false ; close() ; } + +void NetworkListener::networkStateChanged( QNetworkSession::State aState ) { + QLOG_STR("NetworkListener::networkStateChanged " + QString::number(aState)); + if ( aState == QNetworkSession::Connected ) { + iModel->lock() ; + this->figureOutLocalAddresses() ; + iModel->unlock() ; + } +} diff -Nru classified-ads-0.07/net/networklistener.h classified-ads-0.09/net/networklistener.h --- classified-ads-0.07/net/networklistener.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/networklistener.h 2015-10-10 12:49:33.000000000 +0000 @@ -27,6 +27,7 @@ #include #include "connection.h" // for ConnectionObserver #include +#include class MController ; class Model ; @@ -85,8 +86,17 @@ * used in closing of app: stops accepting connections */ void stopAccepting() ; + /** + * Method that loops network interfaces and tries to find a valid + * local address to advertise + */ + void figureOutLocalAddresses() ; protected: +#if QT_VERSION >= 0x050000 + virtual void incomingConnection(qintptr handle); +#else void incomingConnection (int aSocketDescriptor ) ; +#endif signals: void error(QTcpSocket::SocketError socketError); /** @@ -101,8 +111,7 @@ private slots: void broadCastReceived() ; void threadIsDeleted() ; -private: // methods - void figureOutLocalAddresses() ; + void networkStateChanged( QNetworkSession::State aState ) ; private: // data MController *iController ; Model *iModel ; @@ -114,5 +123,7 @@ * connections any more */ bool iCanAccept ; + QNetworkConfiguration iConnectionConfig ; + QNetworkSession* iNetworkSession ; } ; #endif diff -Nru classified-ads-0.07/net/node.cpp classified-ads-0.09/net/node.cpp --- classified-ads-0.07/net/node.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/node.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -35,12 +35,16 @@ const static char *KNodeJSonLastContactTimeElement= "l" ; const static char *KNodeJSonFPElement= "f" ; +/** nat subnets. see similar variable in connection.cpp */ const static QPair nodeNormalNats1 = QHostAddress::parseSubnet("10.0.0.0/8"); const static QPair nodeNormalNats2 = QHostAddress::parseSubnet("172.16.0.0/20"); const static QPair nodeNormalNats3 = QHostAddress::parseSubnet("192.168.0.0/16"); +/** non-routable address space that some ISP's seem to offer */ +static const QPair nodeRfc6598 + ( QHostAddress::parseSubnet("100.64.0.0/10") ); Node::Node(const Hash &aNodeFingerPrint, @@ -245,10 +249,10 @@ } else if ( QAbstractSocket::IPv4Protocol == aAddress.protocol() ) { // hmm .. if ( aAddress.isInSubnet(nodeNormalNats1) || - aAddress.isInSubnet(nodeNormalNats2) || - aAddress.isInSubnet(nodeNormalNats3) ) { + aAddress.isInSubnet(nodeNormalNats2) || + aAddress.isInSubnet(nodeNormalNats3) || + aAddress.isInSubnet(nodeRfc6598) ) { // is nat addr, no-no - } else { if ( aAddress.toString().startsWith("169.254") ) { QLOG_STR("Got link-local ipv4-addr (zeroconf?) -> not using "+ aAddress.toString()) ; diff -Nru classified-ads-0.07/net/protocol_message_formatter.cpp classified-ads-0.09/net/protocol_message_formatter.cpp --- classified-ads-0.07/net/protocol_message_formatter.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/protocol_message_formatter.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -23,12 +23,10 @@ #endif #include "protocol_message_formatter.h" #include -#ifdef WIN32 -#include -#else -#include +#ifndef WIN32 #include "arpa/inet.h" #endif +#include "../util/jsonwrapper.h" #include "node.h" #include "connection.h" #include "../log.h" @@ -42,9 +40,7 @@ retval.append((const char *)&ch, 1) ; QVariant v ( aNode.asQVariant()) ; - QJson::Serializer serializer; - - QByteArray nodeRefAsJson ( serializer.serialize(v) ) ; + QByteArray nodeRefAsJson ( JSonWrapper::serialize(v) ) ; QLOG_STR(nodeRefAsJson) ; QByteArray nodeRefAsCompressedJson (qCompress( nodeRefAsJson )) ; nodeRefAsJson.clear() ; @@ -557,8 +553,7 @@ const QVariant toplevel ( SearchModel::serializeSearchResults(aResults, aSearchId) ) ; - QJson::Serializer serializer ; - const QByteArray resultBytes ( serializer.serialize(toplevel) ) ; + const QByteArray resultBytes ( JSonWrapper::serialize(toplevel) ) ; if ( resultBytes.size() > 0 ) { quint32 sizeNetworkBO ( htonl(resultBytes.size()) ) ; retval.append((const char *)(&sizeNetworkBO), sizeof(quint32)) ; @@ -695,3 +690,4 @@ return retval ; } + diff -Nru classified-ads-0.07/net/protocol_message_parser.cpp classified-ads-0.09/net/protocol_message_parser.cpp --- classified-ads-0.07/net/protocol_message_parser.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/net/protocol_message_parser.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -29,13 +29,7 @@ #include "../datamodel/mnodemodelprotocolinterface.h" #include "../mcontroller.h" #include -#ifdef WIN32 -#include -#include -#else -#include -#include -#endif +#include "../util/jsonwrapper.h" #include "../util/hash.h" #include "../datamodel/profilemodel.h" #include "../datamodel/binaryfilemodel.h" @@ -788,12 +782,11 @@ 1, &JSONlen) == true ) { if ( (int)(JSONlen ) == aSingleNodeGreeting.size() ) { - QJson::Parser parser; bool ok; QByteArray unCompressedNodeGreeting ( qUncompress(aSingleNodeGreeting.mid(5))) ; if ( unCompressedNodeGreeting.size() > 0 ) { - QVariantMap result = parser.parse (unCompressedNodeGreeting, &ok).toMap(); - LOG_STR2("Size of uncompressed = %d", unCompressedNodeGreeting.length()) ; + QVariantMap result ( JSonWrapper::parse (unCompressedNodeGreeting, &ok)); + QLOG_STR("Size of uncompressed = " + QString::number(unCompressedNodeGreeting.length()) + " ok = " + QString::number((int)ok)) ; if (!ok) { return false ; } else { @@ -1192,8 +1185,7 @@ } pos += sizeof(quint32) ; if ( len == (jsonLen + sizeof(unsigned char) + sizeof(quint32)) ) { - QJson::Parser parser ; - QVariantMap result = parser.parse ( aQueryBytes.mid(pos, jsonLen), &retval).toMap() ; + QVariantMap result (JSonWrapper::parse ( aQueryBytes.mid(pos, jsonLen), &retval) ) ; if ( retval == true ) { QList results; quint32 searchId ; @@ -1212,3 +1204,4 @@ } return retval ; } + diff -Nru classified-ads-0.07/po/classified-ads.pot classified-ads-0.09/po/classified-ads.pot --- classified-ads-0.07/po/classified-ads.pot 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/po/classified-ads.pot 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,2434 @@ +# Translation file for classified ads. +# +# This is auto-generated from .ts file. +msgid "" +msgstr "" +"Project-Id-Version: classified-ads 0.08\n" +"Report-Msgid-Bugs-To: antti.jarvinen@katiska.org\n" +"POT-Creation-Date: 2015-08-31 23:30+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Language: fi_FI\n" +"X-Qt-Contexts: true\n" + +# Context menu item text for menu, that appears when right-mouse is clicked on top of a file in a list. +#: ui/attachmentlistdialog.cpp:60 +msgctxt "AttachmentListDialog|" +msgid "Save file to disk.." +msgstr "" + +# In file open dialog this is text specifying what kind of files to include in listing, filtered by file name suffix. For example, user wants only PNG files, then text appearing in dialog filter field would say "PNG files (*.png)" and this work "files" here is the word after the word PNG. +#: ui/attachmentlistdialog.cpp:151 ui/attachmentlistdialog.cpp:153 +msgctxt "AttachmentListDialog|" +msgid "files" +msgstr "" + +# Dialog title text for dialog asking user to give a name to file for purpose of saving it to filesystem. +#: ui/attachmentlistdialog.cpp:155 +msgctxt "AttachmentListDialog|" +msgid "Choose file name for saving" +msgstr "" + +# Dialog title text for error dialog. +#: ui/attachmentlistdialog.cpp:166 +msgctxt "AttachmentListDialog|" +msgid "Error" +msgstr "" + +# This gives (no) explanation about reason for "file open failure"? +#: ui/attachmentlistdialog.cpp:167 +msgctxt "AttachmentListDialog|" +msgid "File open error" +msgstr "" + +# Title text in a listing view where list of shared files are listed. This particular text gives text for column, where "name or fingerprint of file" is listed. Fingerprint in practice means SHA1 digest. +#: datamodel/binaryfilelistingmodel.cpp:173 +msgctxt "BinaryFileListingModel|" +msgid "Name or fingerprint of file" +msgstr "" + +# Header text for a column-list. The column that gets its header text from this string, is the date-column of an classified ad. +#: datamodel/calistingmodel.cpp:50 datamodel/calistingmodel.cpp:143 +msgctxt "CAListingModel|" +msgid "Date" +msgstr "" + +# Header text for a column-list. The column that gets its header text from this string, is the subject-column of an classified ad. +#: datamodel/calistingmodel.cpp:51 datamodel/calistingmodel.cpp:142 +msgctxt "CAListingModel|" +msgid "Subject" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:127 +msgctxt "ClassifiedAdsModel|" +msgid "Buying" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:129 +msgctxt "ClassifiedAdsModel|" +msgid "Selling" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Cars in Estonia" and this combobox text here is the first+2nd word of that phrase. +#: datamodel/camodel.cpp:131 +msgctxt "ClassifiedAdsModel|" +msgid "Giving away" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:133 +msgctxt "ClassifiedAdsModel|" +msgid "Wanting" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Renting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:135 +msgctxt "ClassifiedAdsModel|" +msgid "Renting" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:137 +msgctxt "ClassifiedAdsModel|" +msgid "Announcement" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:210 +msgctxt "ClassifiedAdsModel|" +msgid "Cars" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Boats in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:212 +msgctxt "ClassifiedAdsModel|" +msgid "Boats" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Bikes in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:214 +msgctxt "ClassifiedAdsModel|" +msgid "Bikes" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Other vehicles in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:216 +msgctxt "ClassifiedAdsModel|" +msgid "Other vehicles" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of vehicle parts in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:218 +msgctxt "ClassifiedAdsModel|" +msgid "Vehicle parts" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Habitation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:220 +msgctxt "ClassifiedAdsModel|" +msgid "Habitation" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Household appliances in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:222 +msgctxt "ClassifiedAdsModel|" +msgid "Household appliances" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Furniture in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:224 +msgctxt "ClassifiedAdsModel|" +msgid "Furniture" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Clothing in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:226 +msgctxt "ClassifiedAdsModel|" +msgid "Clothing" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:228 +msgctxt "ClassifiedAdsModel|" +msgid "Tools" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:230 +msgctxt "ClassifiedAdsModel|" +msgid "Sports" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Music in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:232 +msgctxt "ClassifiedAdsModel|" +msgid "Music" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Books in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:234 +msgctxt "ClassifiedAdsModel|" +msgid "Books" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Movies in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:236 +msgctxt "ClassifiedAdsModel|" +msgid "Movies" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Animals in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:238 +msgctxt "ClassifiedAdsModel|" +msgid "Animals" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Electronics in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:240 +msgctxt "ClassifiedAdsModel|" +msgid "Electronics" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Jobs in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:242 +msgctxt "ClassifiedAdsModel|" +msgid "Jobs" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Transportation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:244 +msgctxt "ClassifiedAdsModel|" +msgid "Transportation" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Services in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:246 +msgctxt "ClassifiedAdsModel|" +msgid "Services" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Healthcare in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:248 +msgctxt "ClassifiedAdsModel|" +msgid "Healthcare" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Foodstuff in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:250 +msgctxt "ClassifiedAdsModel|" +msgid "Foodstuff" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Software in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:252 +msgctxt "ClassifiedAdsModel|" +msgid "Software" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Events in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:254 +msgctxt "ClassifiedAdsModel|" +msgid "Events" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Education in Estonia" and this combobox text here is the 4th word of that phrase. +#: datamodel/camodel.cpp:256 +msgctxt "ClassifiedAdsModel|" +msgid "Education" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Finance in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:258 +msgctxt "ClassifiedAdsModel|" +msgid "Finance" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Jewelry in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:260 +msgctxt "ClassifiedAdsModel|" +msgid "Jewelry" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of religious rituals in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:262 +msgctxt "ClassifiedAdsModel|" +msgid "Religious rituals" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:264 +msgctxt "ClassifiedAdsModel|" +msgid "Philosophy" +msgstr "" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Any country" and this combobox text here is end part "Any country" specifying the location where announcement. +#: datamodel/camodel.cpp:908 +msgctxt "ClassifiedAdsModel|" +msgid "Any country" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of network address field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:142 +msgctxt "ConnectionListingModel|" +msgid "Peer network address" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of field specifying if connection is inbound/outbound this text will appear. +#: datamodel/connectionlistingmodel.cpp:145 +msgctxt "ConnectionListingModel|" +msgid "Inbound connections are those where peer initiated connection" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:148 +msgctxt "ConnectionListingModel|" +msgid "Data transferred from peer to your node" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:151 +msgctxt "ConnectionListingModel|" +msgid "Data transferred to peer from your node" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of time-field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:154 +msgctxt "ConnectionListingModel|" +msgid "Time when connection was opened" +msgstr "" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows network address (like IP-address) +#: datamodel/connectionlistingmodel.cpp:164 +msgctxt "ConnectionListingModel|" +msgid "Address" +msgstr "" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows direction (inbound/outbound) of the connection +#: datamodel/connectionlistingmodel.cpp:167 +msgctxt "ConnectionListingModel|" +msgid "Inbound" +msgstr "" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred inside +#: datamodel/connectionlistingmodel.cpp:170 +msgctxt "ConnectionListingModel|" +msgid "Bytes in" +msgstr "" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred outside +#: datamodel/connectionlistingmodel.cpp:173 +msgctxt "ConnectionListingModel|" +msgid "Bytes out" +msgstr "" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows time when connection was opened. +#: datamodel/connectionlistingmodel.cpp:176 +msgctxt "ConnectionListingModel|" +msgid "Open time" +msgstr "" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the positive case "user is trusted". +#: datamodel/contactlistingmodel.cpp:73 +msgctxt "ContactListingModel|" +msgid "Yes" +msgstr "" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the negative case "user trust is unknown". +#: datamodel/contactlistingmodel.cpp:75 +msgctxt "ContactListingModel|" +msgid "Unknown" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of field where operators SHA1 digest is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:98 +msgctxt "ContactListingModel|" +msgid "Actual network address (SHA1) of the contact" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of field where operators locally given nickname is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:101 +msgctxt "ContactListingModel|" +msgid "Locally given nickname ; user may set her own nickname himself" +msgstr "" + +# Tool tip text. When user hovers mouse cursor on top of field where operators trustworthiness (boolean value) in users opinion is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:104 +msgctxt "ContactListingModel|" +msgid "Public statement if this operator to be trusted in transactions" +msgstr "" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators network address (the SHA digest of operator) +#: datamodel/contactlistingmodel.cpp:114 +msgctxt "ContactListingModel|" +msgid "Address" +msgstr "" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators nickname +#: datamodel/contactlistingmodel.cpp:117 +msgctxt "ContactListingModel|" +msgid "Nickname" +msgstr "" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators trustworthiness. +#: datamodel/contactlistingmodel.cpp:120 +msgctxt "ContactListingModel|" +msgid "Publicly trusted" +msgstr "" + +# Error message that is displayed when SSL key generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:86 +msgctxt "ContentEncryptionModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "" + +# Error message that is displayed when x509 certificate generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:94 +msgctxt "ContentEncryptionModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "" + +# Error message that is displayed when RSA private key could not be saved to database. This is rather fatal error, the operator profile that user tried to create will be un-usable. +#: datamodel/contentencryptionmodel.cpp:192 +#: datamodel/contentencryptionmodel.cpp:290 +msgctxt "ContentEncryptionModel|" +msgid "RSA Private key key saving went wrong" +msgstr "" + +# Error message text. This is displayed in situation where user tried to access content that he does not have encryption key for. This may appear frequently during normal operation and is no fatal error, only telling user that he is not going to see the content he was trying to access. +#: datamodel/contentencryptionmodel.cpp:637 +msgctxt "ContentEncryptionModel|" +msgid "No suitable de-cryption key found" +msgstr "" + +# Window title text for whole application. +#: controller.cpp:103 +msgctxt "Controller|" +msgid "Classified ads" +msgstr "" + +# Prompt text for password dialog +#: controller.cpp:135 +msgctxt "Controller|" +msgid "Enter password for protection of your messages:" +msgstr "" + +# Dialog text for a wait dialog (a progress-bar like thing will be shown next to this text and user is supposed to sit down and wait a moment..) +#: controller.cpp:405 +msgctxt "Controller|" +msgid "Fetching item from network.." +msgstr "" + +# Menu item text used in "File" menu item and when this particular item is selected, application will close +#: controller.cpp:430 +msgctxt "Controller|" +msgid "E&xit" +msgstr "" + +# Menu item tooltip-text used in "File" menu entry and when this particular item is selected, application will close +#: controller.cpp:432 +msgctxt "Controller|" +msgid "Exit the application" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:434 +msgctxt "Controller|" +msgid "&About" +msgstr "" + +# Tooltip-text of menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:435 +msgctxt "Controller|" +msgid "Show the application's About box" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:437 +msgctxt "Controller|" +msgid "&Change password" +msgstr "" + +# Tooltip-item for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:438 +msgctxt "Controller|" +msgid "Change password of current profile" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:440 +msgctxt "Controller|" +msgid "Create &new profile" +msgstr "" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:441 +msgctxt "Controller|" +msgid "Makes a brand new user profile" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open operator profile +#: controller.cpp:443 +msgctxt "Controller|" +msgid "&Delete current profile" +msgstr "" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open profile +#: controller.cpp:444 +msgctxt "Controller|" +msgid "Deletes currently open profile" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:446 +msgctxt "Controller|" +msgid "&Select another profile" +msgstr "" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:447 +msgctxt "Controller|" +msgid "If you have multitude of profiles" +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a settings-dialog +#: controller.cpp:449 +msgctxt "Controller|" +msgid "Settings.." +msgstr "" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:450 +msgctxt "Controller|" +msgid "Node-wide settings.." +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog detailing network connectivity of the node +#: controller.cpp:452 +msgctxt "Controller|" +msgid "Network status.." +msgstr "" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a search-dialog +#: controller.cpp:454 +msgctxt "Controller|" +msgid "Search.." +msgstr "" + +# Menu bar title text for "File" menu. +#: controller.cpp:471 +msgctxt "Controller|" +msgid "&File" +msgstr "" + +# Password dialog prompt. +#: controller.cpp:516 +msgctxt "Controller|" +msgid "Enter new password:" +msgstr "" + +# Password dialog prompt. In this case the password dialog is not used for giving initial password or change password but instead password is typed for the reason of selection of another operator profile to be used. +#: controller.cpp:544 controller.cpp:653 +msgctxt "Controller|" +msgid "Activate another profile with password" +msgstr "" + +# Error message shown in dialog in situation where user tried to delete the last (one and only) operator profile in machine. There needs to be at least one profile and this error message is shown if user tries to get around that limitation. +#: controller.cpp:638 +msgctxt "Controller|" +msgid "Can't delete only profile." +msgstr "" + +# Text shown in title of confirmation dialog. +#: controller.cpp:642 +msgctxt "Controller|" +msgid "Permanently discard profile?" +msgstr "" + +# Text shown inside a confirmation dialog. Dialog will have buttons OK and Cancel and this is the question. +#: controller.cpp:643 +msgctxt "Controller|" +msgid "There will be NO way to access content of this profile later" +msgstr "" + +# Error message that is shown in a dialog in situation where previously stored encryption keys of the node could not be accessed. Rather fatal error, will render node un-usable. +#: controller.cpp:706 +msgctxt "Controller|" +msgid "Cant load node cert or key cert" +msgstr "" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a filesystem file operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:711 +msgctxt "Controller|" +msgid "File error" +msgstr "" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during database operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:716 +msgctxt "Controller|" +msgid "Database error" +msgstr "" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a operation inside crypto-module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:722 controller.cpp:732 +msgctxt "Controller|" +msgid "Cryptographic module" +msgstr "" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during operation inside database module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:727 +msgctxt "Controller|" +msgid "Database module" +msgstr "" + +# Error message dialog title text for a dialog that is shown in a dialog in situation when password supplied by user was not good for any purpose. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:733 +msgctxt "Controller|" +msgid "Bad password" +msgstr "" + +# Error message text inside a dialog when user had requested for an item to be opened but program could not find the requested item. +#: controller.cpp:949 +msgctxt "Controller|" +msgid "Could not find item from network.." +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies SHA1 digest of the file. +#: controller.cpp:1062 +msgctxt "Controller|" +msgid "SHA1: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies mime-type of the file +#: controller.cpp:1067 +msgctxt "Controller|" +msgid "Mime-Type: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that gives longer explanation of the file +#: controller.cpp:1073 +msgctxt "Controller|" +msgid "Description: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of publisher of the file (in practice, who uploaded the file into classified ads) +#: controller.cpp:1079 +msgctxt "Controller|" +msgid "Publisher: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of the person (or organization) that owns (in copyright sense) the file or its contents. +#: controller.cpp:1085 +msgctxt "Controller|" +msgid "Content owner: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies the license of the file +#: controller.cpp:1091 +msgctxt "Controller|" +msgid "License: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file name +#: controller.cpp:1097 +msgctxt "Controller|" +msgid "Name: " +msgstr "" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file date +#: controller.cpp:1104 +msgctxt "Controller|" +msgid "Date: " +msgstr "" + +# Error message text shown inside dialog when user tries to select for operation a file that is much much too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:47 ui/dialogbase.cpp:101 +msgctxt "DialogBase|" +msgid "File way too big" +msgstr "" + +# Error message text shown inside dialog when user tries to select for operation a file that is just-and-just too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:55 ui/dialogbase.cpp:109 +msgctxt "DialogBase|" +msgid "File too big" +msgstr "" + +# Error message text shown inside dialog when user tries to select for operation a file that can not be opened (for example due to file permission reasons) +#: ui/dialogbase.cpp:85 ui/dialogbase.cpp:131 +msgctxt "DialogBase|" +msgid "File open error" +msgstr "" + +# Dialog title text. Dialog prompts user to select the filesystem file that will be published inside classified ads. +#: ui/dialogbase.cpp:94 +msgctxt "DialogBase|" +msgid "Select file to be published" +msgstr "" + +# Text for file type filter field in file-selection-dialog +#: ui/dialogbase.cpp:96 +msgctxt "DialogBase|" +msgid "Files (*.*)" +msgstr "" + +# Title text of error dialog. +#: ui/editcontact.cpp:72 +msgctxt "EditContactDialog|" +msgid "Error" +msgstr "" + +# Contet text of error dialog. Shown after user has tried to enter operator address with intent of adding it to contact-list and the operator address fails format validation. +#: ui/editcontact.cpp:73 +msgctxt "EditContactDialog|" +msgid "Operator addr is not valid" +msgstr "" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the first tab. +#: FrontWidget.cpp:93 +msgctxt "FrontWidget|" +msgid "Classified ads" +msgstr "" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 2nd tab. +#: FrontWidget.cpp:94 +msgctxt "FrontWidget|" +msgid "My profile" +msgstr "" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 3rd tab. +#: FrontWidget.cpp:95 +msgctxt "FrontWidget|" +msgid "Contacts" +msgstr "" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 4th tab. +#: FrontWidget.cpp:96 +msgctxt "FrontWidget|" +msgid "Private messages" +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, a dialog will appear asking which file to share +#: FrontWidget.cpp:155 +msgctxt "FrontWidget|" +msgid "Add shared file.." +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will no longer be shared +#: FrontWidget.cpp:156 +msgctxt "FrontWidget|" +msgid "Stop advertising selected shared file" +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will be saved to filesystem +#: FrontWidget.cpp:157 +msgctxt "FrontWidget|" +msgid "Save file to disk.." +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, information dialog about selected file will be shown +#: FrontWidget.cpp:158 +msgctxt "FrontWidget|" +msgid "View file information.." +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, SHA digest of the selected file will be copied to clipboard. +#: FrontWidget.cpp:159 +msgctxt "FrontWidget|" +msgid "Copy file address (SHA1) to clipboard.." +msgstr "" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, an editor will be displayed prompting user to enter text that will then be published for other users to see. +#: FrontWidget.cpp:160 +msgctxt "FrontWidget|" +msgid "Edit+publish new text document.." +msgstr "" + +# Dialog title text for "file open" dialog +#: FrontWidget.cpp:348 +msgctxt "FrontWidget|" +msgid "Open File" +msgstr "" + +# Text for filter field of file selection dialog +#: FrontWidget.cpp:350 FrontWidget.cpp:880 +msgctxt "FrontWidget|" +msgid "Files (*.*)" +msgstr "" + +# Error dialog title text. Actual error message will be shown inside dialog whose title is this text. +#: FrontWidget.cpp:354 FrontWidget.cpp:1180 FrontWidget.cpp:1322 +msgctxt "FrontWidget|" +msgid "Error" +msgstr "" + +# Error dialog content text. Shown when image file that user selected could not be opened (maybe because file permission problem or maybe image format issue or ..) +#: FrontWidget.cpp:355 +msgctxt "FrontWidget|" +msgid "Can't load image" +msgstr "" + +# Error dialog title text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:621 FrontWidget.cpp:761 +msgctxt "FrontWidget|" +msgid "Profile not in database" +msgstr "" + +# Error dialog content text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:622 FrontWidget.cpp:762 +msgctxt "FrontWidget|" +msgid "Try viewing profile first to obtain data" +msgstr "" + +# File selection title text. Prompts user to select a file for publish purpose. +#: FrontWidget.cpp:878 +msgctxt "FrontWidget|" +msgid "Select file to be published" +msgstr "" + +# Error text shown in dialog. Shown in situation where user selected a file that really exceeds size limit (of 2MB) +#: FrontWidget.cpp:885 +msgctxt "FrontWidget|" +msgid "File way too big" +msgstr "" + +# Error text shown in dialog. Shown in situation where user selected a file that slightly exceeds size limit (of 2MB) +#: FrontWidget.cpp:893 +msgctxt "FrontWidget|" +msgid "File too big" +msgstr "" + +# Error text shown in dialog. Shown in situation where user selected a file that could for some reason not be opened +#: FrontWidget.cpp:937 FrontWidget.cpp:1181 +msgctxt "FrontWidget|" +msgid "File open error" +msgstr "" + +# Part of filter text field in file selection dialog. If for instance user tries to open PNG files, then the text in filter field will be "PNG files (*.png)" and this word is the 2nd word in the phrase. +#: FrontWidget.cpp:1162 FrontWidget.cpp:1168 +msgctxt "FrontWidget|" +msgid "files" +msgstr "" + +# File selection dialog title text. Dialog prompts user to select location+name for an file to be exported into filesystem. +#: FrontWidget.cpp:1171 +msgctxt "FrontWidget|" +msgid "Choose file name for saving" +msgstr "" + +# Text shown in placeholder for operators image in situation where user has not yet selected any image. In practice it prompts user to insert image by clicking at the text. +#: FrontWidget.cpp:1231 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"Click\n" +"To\n" +"Add\n" +"Image\n" +msgstr "" + +# Error message dialog content text shown when user tried to access article, that was not stored in local database +#: FrontWidget.cpp:1323 +msgctxt "FrontWidget|" +msgid "Article not found from local storage" +msgstr "" + +# Tool-tip text. Shown on top of operators address when user hovers mouse on top of the address field. The %1 will be replaced by nickname of an operator who trusts this particular operator. The %2 will be replaced by SHA1 digest of the operator who trusts the operator whose SHA1 is under mouse cursor. +#: FrontWidget.cpp:1349 FrontWidget.cpp:1897 +#, qt-format +msgctxt "FrontWidget|" +msgid "" +"Trusted by %1\n" +"SHA1 %2" +msgstr "" + +# Tool tip text. Shown when user howers mouse on top of operators nickname field. In code a date-string will be concatenated to this string, so in practice in the UI it will read "Time of last update 31 aug 2015" or similar. +#: FrontWidget.cpp:1386 +msgctxt "FrontWidget|" +msgid "Time of last update " +msgstr "" + +# Text for image placeholder, shown in situation where another operator has not selected any image for her.This text is shown place of the missing image. +#: FrontWidget.cpp:1394 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"(No\n" +"Image\n" +"Selected)\n" +msgstr "" + +# Context menu item text. Context-menu is related to frequent-contacts column-view. +#: FrontWidget.cpp:1488 +msgctxt "FrontWidget|" +msgid "Edit contact.." +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the classified ad currently on display +#: FrontWidget.cpp:1528 +msgctxt "FrontWidget|" +msgid "&Reply to sender" +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a reply to classified ad currently on display +#: FrontWidget.cpp:1529 +msgctxt "FrontWidget|" +msgid "Reply to &forum" +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a new classified ad. +#: FrontWidget.cpp:1530 +msgctxt "FrontWidget|" +msgid "&Post new ad" +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the classified ad currently on display +#: FrontWidget.cpp:1531 +msgctxt "FrontWidget|" +msgid "&Public comment" +msgstr "" + +# Push button text. Pushing the button will switch to view detailing operator who sent the classified ad currently on display +#: FrontWidget.cpp:1532 +msgctxt "FrontWidget|" +msgid "&View profile" +msgstr "" + +# Push button text. Pushing the button will open a a listing of files that are attached to classified ad currently on display +#: FrontWidget.cpp:1533 FrontWidget.cpp:1671 +msgctxt "FrontWidget|" +msgid "Attachments.." +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to add to her contact-list the operator who sent the classified ad currently on display +#: FrontWidget.cpp:1593 +msgctxt "FrontWidget|" +msgid "Add selected operator to contacts.." +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the private message currently on display +#: FrontWidget.cpp:1667 +msgctxt "FrontWidget|" +msgid "&Reply" +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to some operator. +#: FrontWidget.cpp:1668 +msgctxt "FrontWidget|" +msgid "&New message" +msgstr "" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the private message currently on display +#: FrontWidget.cpp:1669 +msgctxt "FrontWidget|" +msgid "&Send public comment to sender" +msgstr "" + +# Push button text. Pushing the button will open view that will show details of operator, who sent the private message currently on display. +#: FrontWidget.cpp:1670 +msgctxt "FrontWidget|" +msgid "&View profile of peer" +msgstr "" + +# Context menu item text. Appears in "message listing view" when user right-clicks on messages view. When selected, the operator who sent the message that is selected is added to contacts. +#: FrontWidget.cpp:1705 +msgctxt "FrontWidget|" +msgid "Add selected to contacts.." +msgstr "" + +# Text field label. Label tells who sent particular classified ad. +#: FrontWidget.cpp:1907 FrontWidget.cpp:1909 FrontWidget.cpp:1973 +#: FrontWidget.cpp:1975 +msgctxt "FrontWidget|" +msgid "From:" +msgstr "" + +# Text field label. Label tells subject of classified ads. +#: FrontWidget.cpp:1911 FrontWidget.cpp:1978 +msgctxt "FrontWidget|" +msgid "Subject:" +msgstr "" + +# Text field label. Label tells whom a private message was sent to. +#: FrontWidget.cpp:1970 +msgctxt "FrontWidget|" +msgid "To:" +msgstr "" + +# Error dialog content text. Shown in situation when user clicked on a link that contained SHA1 digest that was not valid. +#: FrontWidget.cpp:2282 +msgctxt "FrontWidget|" +msgid "Invalid SHA1 in URL" +msgstr "" + +# Error dialog content text. Shown in situation when user clicked on a link that was not correctly formatted. +#: FrontWidget.cpp:2309 +msgctxt "FrontWidget|" +msgid "Invalid URL" +msgstr "" + +# Error dialog content text. Shown in situation when user entered a link that could not be parsed. +#: ui/insertlinkdialog.cpp:69 +msgctxt "InsertLinkDialog|" +msgid "Invalid URL" +msgstr "" + +# Error dialog content text. Shown in situation when user tried to add connection to node whose name was not found via nameserver. +#: ui/manualconnection.cpp:53 +msgctxt "ManualConnectionDialog|" +msgid "DNS lookup failure" +msgstr "" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprivmsgdialog.cpp:88 ui/newprivmsgdialog.cpp:133 +msgctxt "NewPrivMessageDialog|" +msgid "Error" +msgstr "" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprivmsgdialog.cpp:89 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient addr is not valid" +msgstr "" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprivmsgdialog.cpp:134 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprofilecommentdialog.cpp:89 ui/newprofilecommentdialog.cpp:126 +msgctxt "NewProfileCommentDialog|" +msgid "Error" +msgstr "" + +# Error dialog content text. Dialog is shown when user tries to comment an operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprofilecommentdialog.cpp:90 +msgctxt "NewProfileCommentDialog|" +msgid "Commented profile addr is not valid" +msgstr "" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprofilecommentdialog.cpp:127 +msgctxt "NewProfileCommentDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "" + +# Error message text. Will be shown in error message dialog in case when initial SSL key generation of node did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:115 +msgctxt "NodeModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "" + +# Error message text. Will be shown in error message dialog in case when initial encryption key generation of user did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:123 +msgctxt "NodeModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "" + +# Error message text. Will be shown in error message dialog in case when SSL certificate of the node could not be loaded from storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1594 +msgctxt "NodeModel|" +msgid "Cant load SSL cert" +msgstr "" + +# Error message text. Will be shown in error message dialog in case when SSL key of the node could not be retrieved from local storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1624 +msgctxt "NodeModel|" +msgid "Cant load SSL key" +msgstr "" + +# Error message text. Shown in dialog when user tries to enter a password that is too short. +#: ui/passwd_dialog.cpp:104 +msgctxt "PasswdDialog|" +msgid "Min length 5 (use 10+)" +msgstr "" + +# Password dialog title text. +#: ui/passwordDialog.ui:14 +msgctxt "PasswordDialog|" +msgid "Password required" +msgstr "" + +# Tooltip text for password dialog. Shown when user hovers on top of password dialog. +#: ui/passwordDialog.ui:17 +msgctxt "PasswordDialog|" +msgid "" +"Should you forget this word, there is no easy way to recover any of your " +"content" +msgstr "" + +# Prompt text for password dialog. +#: ui/passwordDialog.ui:29 +msgctxt "PasswordDialog|" +msgid "Enter password for protection of your messages" +msgstr "" + +# Tooltip text for password dialog. Shown when user hovers on top of password field +#: ui/passwordDialog.ui:42 +msgctxt "PasswordDialog|" +msgid "" +"If you forget this word, there is no simple way to recover your contents" +msgstr "" + +# Password dialog button text +#: ui/passwordDialog.ui:55 +msgctxt "PasswordDialog|" +msgid "OK" +msgstr "" + +# Tooltip text. Shown when user hovers mouse cursor on top of message sender name. First %1 will be replaced with nickname of the operator whose message is hovered, %2 will be replaced by nickname of operator who has expressed positive trust towards the operator who sent the message. +#: datamodel/privmsgsearchmodel.cpp:110 +#, qt-format +msgctxt "PrivateMessageSearchModel|" +msgid "" +"%1\n" +"Trusted by %2" +msgstr "" + +# Tooltip text. Used in column view that lists private messages of operator. Explains the field that gives title to column that specifies direction (sent or received) of the message. +#: datamodel/privmsgsearchmodel.cpp:237 +msgctxt "PrivateMessageSearchModel|" +msgid "Direction of message, sent/received" +msgstr "" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies direction (sent/received) of the message. +#: datamodel/privmsgsearchmodel.cpp:247 +msgctxt "PrivateMessageSearchModel|" +msgid "Dir" +msgstr "" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies messaging peer (another operator) of the message. +#: datamodel/privmsgsearchmodel.cpp:250 +msgctxt "PrivateMessageSearchModel|" +msgid "Peer" +msgstr "" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies time of the message. +#: datamodel/privmsgsearchmodel.cpp:253 +msgctxt "PrivateMessageSearchModel|" +msgid "Time" +msgstr "" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies subject of the message. +#: datamodel/privmsgsearchmodel.cpp:256 +msgctxt "PrivateMessageSearchModel|" +msgid "Subject" +msgstr "" + +# Push button text. Clicking the button will open a dialog prompting user to add a new comment +#: ui/profilecommentdisplay.cpp:54 +msgctxt "ProfileCommentDisplay|" +msgid "&Add comment..." +msgstr "" + +# Context menu item text. Context menu is shown when user right-clicks on file listing view. When this item is selected, a file selection dialog is opened. +#: ui/profilecommentdisplay.cpp:65 +msgctxt "ProfileCommentDisplay|" +msgid "Save attachment to disk.." +msgstr "" + +# Error dialog title text +#: ui/profilecommentdisplay.cpp:90 +msgctxt "ProfileCommentDisplay|" +msgid "Error" +msgstr "" + +# Error dialog content text. Shown after user tried to access a profile comment and the comment could not be found +#: ui/profilecommentdisplay.cpp:91 +msgctxt "ProfileCommentDisplay|" +msgid "Article not found from local storage" +msgstr "" + +# Text field label text. The text field whose label this is will show number how many attachements there are in the comment. +#: ui/profilecommentitemdelegate.cpp:91 +msgctxt "ProfileCommentItemDelegate|" +msgid "Attachments: " +msgstr "" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells who sent the comment. +#: datamodel/profilecommentlistingmodel.cpp:219 +msgctxt "ProfileCommentListingModel|" +msgid "Sender" +msgstr "" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells when comment was sent. +#: datamodel/profilecommentlistingmodel.cpp:222 +msgctxt "ProfileCommentListingModel|" +msgid "Time" +msgstr "" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells subject of the comment. +#: datamodel/profilecommentlistingmodel.cpp:225 +msgctxt "ProfileCommentListingModel|" +msgid "Subject" +msgstr "" + +# Error message text. Shown inside a dialog after user tried to send a comment to operator who had sent a comment and it turns out that necessary encryption keys of the commenting operator are not found and the replying comment can't be sent. +#: datamodel/profilecommentmodel.cpp:67 +msgctxt "ProfileCommentModel|" +msgid "Profile related to comment not found from database" +msgstr "" + +# Context menu item text. This context-menu is shown when user right-clicks list of operators that is shown in dialog that is made for listing operators (who are readers of another profile) +#: ui/profilereadersdialog.cpp:73 +msgctxt "ProfileReadersDialog|" +msgid "View profile" +msgstr "" + +# Column view column title text. The column view lists readers (operators) of another profile. +#: datamodel/profilereaderslistingmodel.cpp:174 +msgctxt "ProfileReadersListingModel|" +msgid "Name or fingerprint of reader" +msgstr "" + +# Context menu item text. This context menu is shown when user right-clicks on top of search-results. This menu-item opens the currently-selected item from search results. +#: ui/searchdisplay.cpp:62 +msgctxt "SearchDisplay|" +msgid "Open.." +msgstr "" + +# Menu title text. This is the help menu. +#: textedit/textedit.cpp:127 +msgctxt "TextEdit|" +msgid "Help" +msgstr "" + +# Menu-item text used in "help" menu. Selecting this item opens "about" dialog about Qt library. +#: textedit/textedit.cpp:129 +msgctxt "TextEdit|" +msgid "About &Qt" +msgstr "" + +# Window title text for container-window containing actions. It seems to me that this text actually does not appear anywhere in the UI due to way, how container-windows are used. +#: textedit/textedit.cpp:186 +msgctxt "TextEdit|" +msgid "Edit Actions" +msgstr "" + +# Menu text. This gives text to "file" menu of a text editor. +#: textedit/textedit.cpp:188 +msgctxt "TextEdit|" +msgid "&File" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open a filesystem file" +#: textedit/textedit.cpp:194 +msgctxt "TextEdit|" +msgid "&Open..." +msgstr "" + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file. +#: textedit/textedit.cpp:203 +msgctxt "TextEdit|" +msgid "&Save locally before send" +msgstr "" + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file and user will be queried for file name. +#: textedit/textedit.cpp:210 +msgctxt "TextEdit|" +msgid "Save locally &As..." +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "print" +#: textedit/textedit.cpp:218 +msgctxt "TextEdit|" +msgid "&Print..." +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open print preview" +#: textedit/textedit.cpp:226 +msgctxt "TextEdit|" +msgid "Print Preview..." +msgstr "" + +# Menu-item text. Used in file-menu for triggering "export as pdf" operation +#: textedit/textedit.cpp:231 +msgctxt "TextEdit|" +msgid "&Export PDF..." +msgstr "" + +# Menu text for "edit" menu of text editor. +#: textedit/textedit.cpp:244 +msgctxt "TextEdit|" +msgid "&Edit" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "undo" +#: textedit/textedit.cpp:249 +msgctxt "TextEdit|" +msgid "&Undo" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "re-do" +#: textedit/textedit.cpp:254 +msgctxt "TextEdit|" +msgid "&Redo" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "cut" (to clipboard) +#: textedit/textedit.cpp:261 +msgctxt "TextEdit|" +msgid "Cu&t" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "copy to clipboard" +#: textedit/textedit.cpp:267 +msgctxt "TextEdit|" +msgid "&Copy" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "paste from clipboard" +#: textedit/textedit.cpp:273 +msgctxt "TextEdit|" +msgid "&Paste" +msgstr "" + +# Menu item text inside text editor "edit" menu. After this menu-item is selected, a dialog is opened, prompting user to enter a link (URL) to be included in the text. +#: textedit/textedit.cpp:283 +msgctxt "TextEdit|" +msgid "Insert link" +msgstr "" + +# Menu-item text for embedding an image +#: textedit/textedit.cpp:287 +msgctxt "TextEdit|" +msgid "Embed image" +msgstr "" + +# Menu text. Gives name for a "format" menu inside a text editor. +#: textedit/textedit.cpp:294 +msgctxt "TextEdit|" +msgid "F&ormat" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle bold text style" +#: textedit/textedit.cpp:298 +msgctxt "TextEdit|" +msgid "&Bold" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle italic text" +#: textedit/textedit.cpp:310 +msgctxt "TextEdit|" +msgid "&Italic" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle underline" +#: textedit/textedit.cpp:322 +msgctxt "TextEdit|" +msgid "&Underline" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "left-justify" +#: textedit/textedit.cpp:341 textedit/textedit.cpp:347 +msgctxt "TextEdit|" +msgid "&Left" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle centered text" +#: textedit/textedit.cpp:342 textedit/textedit.cpp:346 +msgctxt "TextEdit|" +msgid "C&enter" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "right-justify" +#: textedit/textedit.cpp:343 textedit/textedit.cpp:345 +msgctxt "TextEdit|" +msgid "&Right" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "justify both right+left" +#: textedit/textedit.cpp:349 +msgctxt "TextEdit|" +msgid "&Justify" +msgstr "" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "color selection" +#: textedit/textedit.cpp:376 +msgctxt "TextEdit|" +msgid "&Color..." +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "standard" +#: textedit/textedit.cpp:383 +msgctxt "TextEdit|" +msgid "Standard" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (disc)" +#: textedit/textedit.cpp:384 +msgctxt "TextEdit|" +msgid "Bullet List (Disc)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (circle)" +#: textedit/textedit.cpp:385 +msgctxt "TextEdit|" +msgid "Bullet List (Circle)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (square)" +#: textedit/textedit.cpp:386 +msgctxt "TextEdit|" +msgid "Bullet List (Square)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (decimal)" +#: textedit/textedit.cpp:387 +msgctxt "TextEdit|" +msgid "Ordered List (Decimal)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha lower)" +#: textedit/textedit.cpp:388 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha lower)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha upper)" +#: textedit/textedit.cpp:389 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha upper)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman lower)" +#: textedit/textedit.cpp:390 +msgctxt "TextEdit|" +msgid "Ordered List (Roman lower)" +msgstr "" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman upper)" +#: textedit/textedit.cpp:391 +msgctxt "TextEdit|" +msgid "Ordered List (Roman upper)" +msgstr "" + +# Warning dialog title text. This dialog is shown if user tries to exit without saving her text. +#: textedit/textedit.cpp:442 +msgctxt "TextEdit|" +msgid "Application" +msgstr "" + +# Warning dialog title content text. Text asks what to do with modifications. The dialog has buttons Save,Discard and Cancel and this text is the question. +#: textedit/textedit.cpp:443 +msgctxt "TextEdit|" +msgid "" +"The document has been modified.\n" +"Do you want to save your changes?" +msgstr "" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:467 +msgctxt "TextEdit|" +msgid "Open File..." +msgstr "" + +# Text for file selection filter field to be used inside file selection dialog. There are 2 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.htm) must not be edited. The explanations like "HTML-Files" may be edited. +#: textedit/textedit.cpp:468 +msgctxt "TextEdit|" +msgid "HTML-Files (*.htm *.html);;All Files (*)" +msgstr "" + +# File selection dialog title text. Dialog in question prompts user to select name for file to be persisted. +#: textedit/textedit.cpp:485 +msgctxt "TextEdit|" +msgid "Save as..." +msgstr "" + +# Text for file selection filter field to be used inside file selection dialog. There are 3 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.odt) must not be edited. The explanations like "ODF-files" may be edited. +#: textedit/textedit.cpp:486 +msgctxt "TextEdit|" +msgid "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)" +msgstr "" + +# Dialog title text. The dialog is printer dialog asking user how to print the text currently in editor. +#: textedit/textedit.cpp:501 +msgctxt "TextEdit|" +msgid "Print Document" +msgstr "" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:559 +msgctxt "TextEdit|" +msgid "Open File" +msgstr "" + +# Text for file selection filter field to be used inside file selection dialog. The filter parts like (*.odt) must not be edited. The explanations like "Files" may be edited. +#: textedit/textedit.cpp:561 +msgctxt "TextEdit|" +msgid "Files (*.*)" +msgstr "" + +# Error dialog title text. +#: textedit/textedit.cpp:566 +msgctxt "TextEdit|" +msgid "Error" +msgstr "" + +# Error dialog content text. +#: textedit/textedit.cpp:567 +msgctxt "TextEdit|" +msgid "Can't load image" +msgstr "" + +# Error message displayed inside error dialog after user tried to select for operation a file whose size greatly exceeds file size limit. +#: textedit/textedit.cpp:621 textedit/textedit.cpp:631 +msgctxt "TextEdit|" +msgid "File way too big" +msgstr "" + +# Dialog title text for "about" dialog. +#: ui/aboutDialog.ui:26 +msgctxt "aboutDialog|" +msgid "About classified ads" +msgstr "" + +# 1st line of text inside "about" dialog, placed next to the turle logo. This text is then followed by longer explanation detail why this program is and how. This is kind of title for the longer explanation. +#: ui/aboutDialog.ui:100 +msgctxt "aboutDialog|" +msgid " Classified ads is a program for online communications" +msgstr "" + +# The long explanation of classified ads inside about-dialog. Note that this text must be valid html. Needs to start with and end with etc. This is easiest to edit like this: copy-paste the content in to a file, say /tmp/about.html. Then either open your favourite html-editor or open classified ads. In classified ads you can start constructing an ad, select from file-menu "open.." and select this file ;do editing and save from file-menu. The saved file is immediately in correct format to be be copy-pasted into contents of this field. +#: ui/aboutDialog.ui:160 +#| msgid "" +#| "

Classified ads is free software. You may use, copy " +#| "and modify it if you follow the conditions given in GNU lesser general " +#| "public license version 2.1.

Classified ads is copyright © Antti " +#| "Järvinen 2013.

Main feature of the the program is an " +#| ""advertisement" - a piece of text belonging to selected " +#| "classification. There are several pre-programmed classifications and " +#| "operators are encouraged to invent new classifications for new purposes ; " +#| "the selection boxes in classification-selection tab are editable. Other " +#| "operators may then view the ads, publicly comment the ads, the operators " +#| "and also send private messages to each others.

Another important " +#| "feature of classified ads is that it is designed to be operated without " +#| "any centralized server infrastucture - it is you and other operators " +#| "whose computers store and transmit all the content visible inside " +#| "classified ads. To get connected you need to know address of at least one " +#| "existing computer (a node) so " +#| "if your network connection dialog shows no connections, you may need to " +#| "contact someone you know is using the software and ask for address of her " +#| "node to make initial contact with the network. Once connected the " +#| "software should maintain list of addresses of other nodes.

Due to " +#| "its server-less design the whole system works best if you leave the " +#| "program running always when you have your computer powered on ; while " +#| "processing other operators requests it will hog some computing resources " +#| "and generate network traffic also when you are not actively using the " +#| "program youself - others are.

Operators concerned about privacy of " +#| "the content should be aware of following items:

- Data storage " +#| "implementation is variant of distributed hash table, practically meaning " +#| "that content posted by you gets copied some more-or-less random nodes in " +#| "the network.

- Any data item (ad, comment, binary file, private " +#| "message etc.) is digitally signed. This makes it more difficult to try to " +#| "pose as another operator.

- Operators are reliably identified only " +#| "by the SHA1 hash of their generated encryption keys. SHA1 hash is " +#| "displayed when viewing details of operator profiles. Other identifying " +#| "information like nickname or city name are entered by operator himself " +#| "and can be anything. The operator profile, as it is published to the " +#| "network, is also signed with the encryption keys of the operator - if you " +#| "identify an operator by her SHA1 hash, you have a mechanism for " +#| "identifying if any content inside classified ads is posted by this " +#| "operator or not. Classified ads internally checks for digital signatures, " +#| "throwing away content that fails signature check and tries to provide " +#| "SHA1 hash of the operator who posted the content.

- All classified " +#| "ads are posted as plain text, no encryption is used. All public profiles " +#| "are posted as plain text, no encryption is used. If profile is made " +#| "private, it is encrypted to be readable only by selected other profiles. " +#| "This applies also to binary files shared by operators private profiles " +#| "and comments about private profiles after the profile was made private " +#| "(previously plain-text comments or files don't get magically encrypted " +#| "afterwards). Private messages are encrypted always to be readable only by " +#| "recipient and sender. Attachments follow the privary rules of the " +#| "document, they're attachted to.

- As is the case with all " +#| "internet-communications, this small fact is true for classified ads too : " +#| "once something gets posted online, " +#| "there is no way to remove it from network.

- Data " +#| "encryption implementation for content is OpenSSL, relying mostly on " +#| "algorithms RSA-2048 and AES-256.

- While connections between nodes " +#| "are implemented using SSL, other nodes inside network do get to know what " +#| "content is being transmitted in neighboring nodes. While there is no " +#| "central point for easily collecting this information about particular " +#| "classification or operator, operators still should expect no privacy " +#| "regarding their doings online, altough some effort has been been put into " +#| "hiding contents of private " +#| "messages and private profiles.

Programming was (mostly) done by " +#| "Antti Järvinen, artwork by Meeri Järvinen.

This product includes " +#| "software developed by the OpenSSL Project for use in the OpenSSL Toolkit " +#| "(http://www.openssl.org/).

Happy " +#| "advertising!


" +msgctxt "aboutDialog|" +msgid "" +"

Classified ads is free software. You may use, copy and " +"modify it if you follow the conditions given in GNU lesser general public " +"license version 2.1.

Classified ads is copyright © Antti Järvinen " +"2013.

Main feature of the the program is an "advertisement" " +"- a piece of text belonging to selected classification. There are several " +"pre-programmed classifications and operators are encouraged to invent new " +"classifications for new purposes ; the selection boxes in " +"classification-selection tab are editable. Other operators may then view the " +"ads, publicly comment the ads, the operators and also send private messages " +"to each others.

Another important feature of classified ads is that " +"it is designed to be operated without any centralized server infrastucture - " +"it is you and other operators whose computers store and transmit all the " +"content visible inside classified ads. To get connected you need to know " +"address of at least one existing computer (a node) so if your network connection dialog shows " +"no connections, you may need to contact someone you know is using the " +"software and ask for address of her node to make initial contact with the " +"network. Once connected the software should maintain list of addresses of " +"other nodes.

Due to its server-less design the whole system works " +"best if you leave the program running always when you have your computer " +"powered on ; while processing other operators requests it will hog some " +"computing resources and generate network traffic also when you are not " +"actively using the program youself - others are.

Operators concerned " +"about privacy of the content should be aware of following items:

- " +"Data storage implementation is variant of distributed hash table, practically meaning that " +"content posted by you gets copied some more-or-less random nodes in the " +"network.

- Any data item (ad, comment, binary file, private message " +"etc.) is digitally signed. This makes it more difficult to try to pose as " +"another operator.

- Operators are reliably identified only by the " +"SHA1 hash of their generated encryption keys. SHA1 hash is displayed when " +"viewing details of operator profiles. Other identifying information like " +"nickname or city name are entered by operator himself and can be anything. " +"The operator profile, as it is published to the network, is also signed with " +"the encryption keys of the operator - if you identify an operator by her " +"SHA1 hash, you have a mechanism for identifying if any content inside " +"classified ads is posted by this operator or not. Classified ads internally " +"checks for digital signatures, throwing away content that fails signature " +"check and tries to provide SHA1 hash of the operator who posted the " +"content.

- All classified ads are posted as plain text, no encryption " +"is used. All public profiles are posted as plain text, no encryption is " +"used. If profile is made private, it is encrypted to be readable only by " +"selected other profiles. This applies also to binary files shared by " +"operators private profiles and comments about private profiles after the " +"profile was made private (previously plain-text comments or files don't get " +"magically encrypted afterwards). Private messages are encrypted always to be " +"readable only by recipient and sender. Attachments follow the privary rules " +"of the document, they're attachted to.

- As is the case with all " +"internet-communications, this small fact is true for classified ads too : " +"once something gets posted online, there " +"is no way to remove it from network.

- Data encryption " +"implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 " +"and AES-256.

- While connections between nodes are implemented using " +"SSL, other nodes inside network do get to know what content is being " +"transmitted in neighboring nodes. While there is no central point for easily " +"collecting this information about particular classification or operator, " +"operators still should expect no privacy regarding their doings online, " +"although some effort has been been put into hiding contents of private messages and private " +"profiles.

Programming was (mostly) done by Antti Järvinen, artwork by " +"Meeri Järvinen.

This product includes software developed by the " +"OpenSSL Project for use in the OpenSSL Toolkit " +"(http://www.openssl.org/).

Happy " +"advertising!


" +msgstr "" + +# Dialog title text. Dialog in question produces list of file attachments. +#: ui/attachmentListDialog.ui:26 +msgctxt "attachmentListDialog|" +msgid "List of attached files" +msgstr "" + +# Dialog title text. Purpose of the dialog is to let user change properties of a frequent contact in contact-list. +#: ui/editContact.ui:26 +msgctxt "editContactDialog|" +msgid "Edit a contact" +msgstr "" + +# Text field label in contact-editing dialog. This gives label for field that shows SHA1 fingerprint of the operator whose data is being edited +#: ui/editContact.ui:39 +msgctxt "editContactDialog|" +msgid "Address (SHA1) of contact" +msgstr "" + +# Text field label in contact-editing dialog. This gives label for field that shows nickname of the operator whose data is being edited +#: ui/editContact.ui:53 +msgctxt "editContactDialog|" +msgid "Local nickname" +msgstr "" + +# Tooltip text of a checkbox label in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. Note html format. +#: ui/editContact.ui:65 +msgctxt "editContactDialog|" +msgid "" +"

Settings some trusted is public information to readers " +"of your profile

" +msgstr "" + +# Label of a checkbox in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. +#: ui/editContact.ui:68 +msgctxt "editContactDialog|" +msgid "This contact is to be publicly trusted in transactions" +msgstr "" + +# Name of front widget. Wild guess is that this text actually does not appear anywhere in the UI. +#: frontWidget.ui:14 +msgctxt "frontWidget|" +msgid "Form" +msgstr "" + +# Tab title text in front widget. When user clicks in this tab, the view is switched to one, that lists classified ads. +#: frontWidget.ui:39 +msgctxt "frontWidget|" +msgid "Classified ads" +msgstr "" + +# Prompt text next "search" button. User is supposed to enter search criteria for classified ads and then click "search" ; this is prompt text for this behaviour. +#: frontWidget.ui:67 +msgctxt "frontWidget|" +msgid "Search for classified ads about" +msgstr "" + +# Prompt text very next to "search" button. After user has clicked the button, he is supposed to be viewing list of classified ads matching the search criteria. +#: frontWidget.ui:74 +msgctxt "frontWidget|" +msgid "Perform" +msgstr "" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 2nd word in that phrase. +#: frontWidget.ui:97 +msgctxt "frontWidget|" +msgid "of" +msgstr "" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 4th word in that phrase. +#: frontWidget.ui:113 +msgctxt "frontWidget|" +msgid "in" +msgstr "" + +# Button text for button used to search for classified ads. This button has text "perform" just next to it so user sees actually 2 words "perform search" where the "perform" is in separate label above the button, and then is the text of this button. +#: frontWidget.ui:123 +msgctxt "frontWidget|" +msgid "Search" +msgstr "" + +# Tab title text in front widget for tab that shows details of operators own profile (==personal details) +#: frontWidget.ui:161 +msgctxt "frontWidget|" +msgid "My profile" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows SHA1-digest e.g. the real address of the operator. +#: frontWidget.ui:177 frontWidget.ui:932 +msgctxt "frontWidget|" +msgid "Profile address" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows nickname of the operator +#: frontWidget.ui:208 frontWidget.ui:643 +msgctxt "frontWidget|" +msgid "Nickname" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows "hello world" text of the operator. +#: frontWidget.ui:225 frontWidget.ui:669 +msgctxt "frontWidget|" +msgid "Greeting text" +msgstr "" + +# Tooltip-text of a text field in "operators profile" tab. The field in questions shows greeting text of the operator. +#: frontWidget.ui:232 +msgctxt "frontWidget|" +msgid "For the rest of the world. " +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows given name (first name) of the operator. +#: frontWidget.ui:239 frontWidget.ui:695 +msgctxt "frontWidget|" +msgid "First name" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows family name of the operator +#: frontWidget.ui:253 frontWidget.ui:715 +msgctxt "frontWidget|" +msgid "Family name" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows place of residence of the operator +#: frontWidget.ui:263 +msgctxt "frontWidget|" +msgid "City/country" +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:273 +msgctxt "frontWidget|" +msgid "BTC address" +msgstr "" + +# Tooltip-text for a text field "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:280 +msgctxt "frontWidget|" +msgid "If you wish to receive payments via BTC, include your BTC address too." +msgstr "" + +# Text field label in "operators profile" tab. The field in questions shows what the user has to say about state of the world. +#: frontWidget.ui:287 frontWidget.ui:799 +msgctxt "frontWidget|" +msgid "State of the world" +msgstr "" + +# Tool-tip text of a field in "operators profile" tab. The field in questions shows what operator has to say about state of the world. +#: frontWidget.ui:294 +msgctxt "frontWidget|" +msgid "Longer explanation about state of the world" +msgstr "" + +# Checkbox text in "my profile" tab. The checkbox is question is a toggle for public/private status of the profile. When checkbox is checked, the profile will be made private. +#: frontWidget.ui:301 +msgctxt "frontWidget|" +msgid "Profile is private" +msgstr "" + +# Button text inside "My profile" tab. Clicking the button opens a dialog that prompts user to select list of operators that can read his profile that he has previously marked as private (e.g. accessible only to listed readers) +#: frontWidget.ui:308 +msgctxt "frontWidget|" +msgid "Readers of profile" +msgstr "" + +# Explanation text inside "my profile" tab. +#: frontWidget.ui:315 +msgctxt "frontWidget|" +msgid "None of the fields is mandatory" +msgstr "" + +# Text field label inside "my profile" tab. The field whose label this is shows the time when profile was last updated. +#: frontWidget.ui:322 +msgctxt "frontWidget|" +msgid "Time of last update" +msgstr "" + +# Button text for button inside "my profile" tab. By clicking this button user makes her edits known to rest of the world. +#: frontWidget.ui:342 +msgctxt "frontWidget|" +msgid "Publish" +msgstr "" + +# Button text for button inside "my profile" tab. By clicking this button user discards her edits. +#: frontWidget.ui:355 +msgctxt "frontWidget|" +msgid "Revert changes" +msgstr "" + +# Text label on top of "my profile" tab. Below this label is a list of text fields and other stuff that user may edit regarding herself. +#: frontWidget.ui:369 +msgctxt "frontWidget|" +msgid "Details of operator profile:" +msgstr "" + +# Text in image-placeholder inside "my profile" tab. When user has not selected any image for her profile details, this text is shown in place of the image. Clicking on text gives user option to select the image file for profile. +#: frontWidget.ui:401 +msgctxt "frontWidget|" +msgid "" +"\n" +"\n" +"Click \n" +"to \n" +"Add\n" +"Image" +msgstr "" + +# Title text inside "my profile" tab. Title text is for a list of files that user is currently sharing with other users. +#: frontWidget.ui:425 frontWidget.ui:845 +msgctxt "frontWidget|" +msgid "Shared files" +msgstr "" + +# Title text inside "my profile" tab. Title text is for a list of comments made by other users regarding operators profile. +#: frontWidget.ui:461 frontWidget.ui:892 +msgctxt "frontWidget|" +msgid "Latest comments" +msgstr "" + +# Tab title text. When this tab is opened, user is shown a view of his frequent contacts. +#: frontWidget.ui:504 +msgctxt "frontWidget|" +msgid "Contacts" +msgstr "" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to enter details of operator to be added into contact list +#: frontWidget.ui:536 +msgctxt "frontWidget|" +msgid "Add contact" +msgstr "" + +# Button text inside "contacts" tab. Clicking this button removes a contact from list. +#: frontWidget.ui:543 +msgctxt "frontWidget|" +msgid "Remove contact" +msgstr "" + +# Button text inside "contacts" tab. Clicking this button displays details of the selected contact. +#: frontWidget.ui:550 +msgctxt "frontWidget|" +msgid "View profile" +msgstr "" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to send a message selected contact. +#: frontWidget.ui:557 +msgctxt "frontWidget|" +msgid "Send message" +msgstr "" + +# Tab text in front widget. When user selects this tab, he is presented with list of his private correspondence. +#: frontWidget.ui:569 +msgctxt "frontWidget|" +msgid "Private messages" +msgstr "" + +# Tab text in front widget. This tab shows details of some other operator of classified ads. Normally this text is replaced with nickname of the operator but if nothing like this is available, this text may be shown, this is the "default text". +#: frontWidget.ui:624 +msgctxt "frontWidget|" +msgid "Profile details" +msgstr "" + +# Label text of a text-field. The text-field in question shows place of residence of operator whose details are on display. +#: frontWidget.ui:741 +msgctxt "frontWidget|" +msgid "City/Country" +msgstr "" + +# Label text of a text-field. The text-field in question shows bitcoin wallet address of operator whose details are on display. +#: frontWidget.ui:767 +msgctxt "frontWidget|" +msgid "BTC Addr" +msgstr "" + +# Text for image-placeholder inside "profile details" tab. When some particular operator has not selected any image for her profile, this text is shown in place of the image. Note html format. +#: frontWidget.ui:829 +msgctxt "frontWidget|" +msgid "" +"




No

Image

Inserted

" +msgstr "" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a new-message editor is opened. +#: frontWidget.ui:874 +msgctxt "frontWidget|" +msgid "Send message to operator" +msgstr "" + +# Button text inside "defails of operator profile" tab. When the button is clicked, dialog listing readers of the (private) profile. +#: frontWidget.ui:879 +msgctxt "frontWidget|" +msgid "View readers" +msgstr "" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a dialog is opened, dialog prompts user to enter a comment about the operator. +#: frontWidget.ui:927 +msgctxt "frontWidget|" +msgid "Comment" +msgstr "" + +# Button text inside "defails of operator profile" tab. When the button is clicked, the operator whose data is on display is added into contact-list. +#: frontWidget.ui:959 +msgctxt "frontWidget|" +msgid "Add to contacts" +msgstr "" + +# Dialog title text. Dialog is for adding a link to text being edited. +#: ui/insertLink.ui:26 +msgctxt "insertLinkDialog|" +msgid "Insert link" +msgstr "" + +# Label for a combobox-field inside "insert link" dialog. Next to this label is set of fields that together make up a valid URL to be inserted. +#: ui/insertLink.ui:39 +msgctxt "insertLinkDialog|" +msgid "URL" +msgstr "" + +# Label for a text-field inside "insert link" dialog. Next to this label is field where user is supposed the text that will be shown as the link. Consider the text then "the text" is text that user is prompted to enter with this label. +#: ui/insertLink.ui:112 +msgctxt "insertLinkDialog|" +msgid "Link label in text" +msgstr "" + +# Dialog title text. Dialog prompts user to manually add a network-connection to another node in the network. +#: ui/manualConnectionDialog.ui:26 +msgctxt "manualConnectionDialog|" +msgid "Manually add node to connection queue" +msgstr "" + +# Label text of numeric field. The numeric (input) field is TCP port of the remote node that will be connected. +#: ui/manualConnectionDialog.ui:48 +msgctxt "manualConnectionDialog|" +msgid "Remote node listen port" +msgstr "" + +# Label for text field inside "manually add connection" dialog. Text field whose label this is requires user to type in network address (ip addr or dns name) of the remote node. +#: ui/manualConnectionDialog.ui:78 +msgctxt "manualConnectionDialog|" +msgid "Remote node network address" +msgstr "" + +# Tooltip text for a text field inside "manually add connection" dialog. The text field whose tooltip this is the remote network address input field. +#: ui/manualConnectionDialog.ui:91 +msgctxt "manualConnectionDialog|" +msgid "IPv4, IPv6 or DNS name" +msgstr "" + +# Dialog title text for dialog that requires user to enter information about file to be shared with others. Metadata query dialog in practice. +#: ui/metadataQuery.ui:26 +msgctxt "metadataQuery|" +msgid "File information" +msgstr "" + +# Label text for a input field. The input field whose label this is asks for file name (filesystem file name) +#: ui/metadataQuery.ui:60 +msgctxt "metadataQuery|" +msgid "Name of the file:" +msgstr "" + +# Label text for a input field. The input field whose label this is asks for owner of the file contents. This may be copyright holder, depending on contracts and legislation followed. +#: ui/metadataQuery.ui:81 +msgctxt "metadataQuery|" +msgid "Owner of file (name or SHA1 if CA operator):" +msgstr "" + +# Label text for a input field. The input field whose label this is asks for license under which the file may be used. Combobox lists some pre-filled options like GPL,BSD,CC-BY etc. but user may also enter any text into field. +#: ui/metadataQuery.ui:111 +msgctxt "metadataQuery|" +msgid "License of use:" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:122 +msgctxt "metadataQuery|" +msgid "Public domain" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:127 +msgctxt "metadataQuery|" +msgid "GPL" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:132 +msgctxt "metadataQuery|" +msgid "LGPL" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:137 +msgctxt "metadataQuery|" +msgid "BSD" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:142 +msgctxt "metadataQuery|" +msgid "CC-BY" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:147 +msgctxt "metadataQuery|" +msgid "CC-BY-SA" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:152 +msgctxt "metadataQuery|" +msgid "CC-BY-ND" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:157 +msgctxt "metadataQuery|" +msgid "CC-BY-NC" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:162 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-SA" +msgstr "" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:167 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-ND" +msgstr "" + +# Label text for a input field. The input field whose label this is asks for mime-type of the field about to be published. +#: ui/metadataQuery.ui:182 +msgctxt "metadataQuery|" +msgid "Mime-type:" +msgstr "" + +# Label text for a input field. The input field whose label this is asks for descriptive text about file about to be published. +#: ui/metadataQuery.ui:199 +msgctxt "metadataQuery|" +msgid "Description of file:" +msgstr "" + +# Prompt text on top of "metadata query" dialog. Below this label is set of input-fields that make up the meta-data of a file to be published. +#: ui/metadataQuery.ui:218 +msgctxt "metadataQuery|" +msgid "Enter information regarding file before publish:" +msgstr "" + +# Dialog title text for a dialog that offers possibility to post a new classified ad for others to read. +#: ui/newClassifiedAd.ui:26 +msgctxt "newCaDialog|" +msgid "Post a new classified ad" +msgstr "" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the first word in that sentece. +#: ui/newClassifiedAd.ui:47 +msgctxt "newCaDialog|" +msgid "About" +msgstr "" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 3rd word in that sentece. +#: ui/newClassifiedAd.ui:65 +msgctxt "newCaDialog|" +msgid "of" +msgstr "" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 5th word in that sentece. +#: ui/newClassifiedAd.ui:81 +msgctxt "newCaDialog|" +msgid "in" +msgstr "" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, requires user to enter a subject (topic) for her posting. +#: ui/newClassifiedAd.ui:95 +msgctxt "newCaDialog|" +msgid "Subject" +msgstr "" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newClassifiedAd.ui:129 +msgctxt "newCaDialog|" +msgid "Attachment: " +msgstr "" + +# Push-button text inside "post a new classified ad" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newClassifiedAd.ui:149 +msgctxt "newCaDialog|" +msgid "Add" +msgstr "" + +# Dialog title text for dialog that prompts user to edit+send a private message to another operator +#: ui/newPrivMsg.ui:26 +msgctxt "newPrivMsgDialog|" +msgid "Send a private message" +msgstr "" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is "subject" or "topic" field of the message. +#: ui/newPrivMsg.ui:39 +msgctxt "newPrivMsgDialog|" +msgid "Subject" +msgstr "" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is SHA1 address of the recipient. +#: ui/newPrivMsg.ui:53 +msgctxt "newPrivMsgDialog|" +msgid "Recipient" +msgstr "" + +# Label text of a text field inside "compose a new private message" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newPrivMsg.ui:83 +msgctxt "newPrivMsgDialog|" +msgid "Attachments: " +msgstr "" + +# Push-button text inside "compose a new private message" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newPrivMsg.ui:103 +msgctxt "newPrivMsgDialog|" +msgid "Attach" +msgstr "" + +# Dialog title text for dialog that prompts user to edit+send a comment regarding another operator. +#: ui/newProfileComment.ui:26 +msgctxt "newProfileCommentDialog|" +msgid "Comment a operators profile" +msgstr "" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is "subject" or "topic" field of the comment. +#: ui/newProfileComment.ui:39 +msgctxt "newProfileCommentDialog|" +msgid "Subject" +msgstr "" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is SHA1 digest (address) of the operator being commented. +#: ui/newProfileComment.ui:53 +msgctxt "newProfileCommentDialog|" +msgid "Commented profile" +msgstr "" + +# Label text of a text field inside "compose a comment about operator dialog" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newProfileComment.ui:89 +msgctxt "newProfileCommentDialog|" +msgid "Attachments:" +msgstr "" + +# Push-button text inside "compose a comment about operator dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newProfileComment.ui:109 +msgctxt "newProfileCommentDialog|" +msgid "Attach" +msgstr "" + +# Dialog title text for a dialog that prompts user to edit+publish a text document. +#: ui/newTextDocument.ui:26 +msgctxt "newTextDocumentDialog|" +msgid "Edit and publish a new text document" +msgstr "" + +# Text field label for input field inside "compose a new text document" dialog. The text field in question is "subject" or "topic" field of the text document. +#: ui/newTextDocument.ui:39 +msgctxt "newTextDocumentDialog|" +msgid "Document title" +msgstr "" + +# Label text of a text field inside "edit+publish a new text document dialog" dialog. The input field whose label this is, will show name file that is attached to the document. +#: ui/newTextDocument.ui:75 +msgctxt "newTextDocumentDialog|" +msgid "Attachments:" +msgstr "" + +# Push-button text inside "edit+publish a new text document dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newTextDocument.ui:95 +msgctxt "newTextDocumentDialog|" +msgid "Attach" +msgstr "" + +# Dialog title text for dialog that will show a listing of previous comments regarding operator (user himself or some other operator, it is the same dialog in both cases) +#: ui/profileCommentDisplay.ui:26 +msgctxt "profileCommentDisplay|" +msgid "Comments regarding operator" +msgstr "" + +# Dialog title text for a dialog that prompts user to choose operators who will be able to read details, comments and shared files of his profile. +#: ui/profileReadersDialog.ui:26 +msgctxt "profileReadersDialog|" +msgid "Profile readers list" +msgstr "" + +# Text field label inside "add profiles to list of readers" dialog. The text field whose prompt this is asks for search-words to be used to filter operator names/addresses from database. +#: ui/profileReadersDialog.ui:37 +msgctxt "profileReadersDialog|" +msgid "Search for profiles to add" +msgstr "" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is will list operators whose nickname,name or other search-term matches conditions entered by user. +#: ui/profileReadersDialog.ui:44 +msgctxt "profileReadersDialog|" +msgid "First 100 matching profiles:" +msgstr "" + +# Push-button label inside "add profiles to list of readers" dialog. When user hits this button, operators that are selected from neighboring list will be added to list of readers of operators profile. +#: ui/profileReadersDialog.ui:66 +msgctxt "profileReadersDialog|" +msgid "Add seleted to list of readers" +msgstr "" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is shows current list operators profiles readers. +#: ui/profileReadersDialog.ui:73 +msgctxt "profileReadersDialog|" +msgid "Current list of readers" +msgstr "" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, the dialog is dismissed. +#: ui/profileReadersDialog.ui:90 +msgctxt "profileReadersDialog|" +msgid "Close" +msgstr "" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, selected operators are removed from the list. +#: ui/profileReadersDialog.ui:109 +msgctxt "profileReadersDialog|" +msgid "Remove selected" +msgstr "" + +# Dialog title-text for a search dialog. +#: ui/searchDisplay.ui:26 +msgctxt "searchDisplay|" +msgid "Search data storage" +msgstr "" + +# Label text of a text field inside "search" dialog. The text field in question requires user to enter one or more words that are then searched from all available (public) documents. +#: ui/searchDisplay.ui:60 +msgctxt "searchDisplay|" +msgid "Words:" +msgstr "" + +# Push button label inside "search" dialog. When button is hit, search using given words is performed. +#: ui/searchDisplay.ui:70 +msgctxt "searchDisplay|" +msgid "Search" +msgstr "" + +# Check-box label inside "search" dialog. When box is checked, the search is done also in neighboring nodes in the network, not only in local storage. +#: ui/searchDisplay.ui:87 +msgctxt "searchDisplay|" +msgid "Network search" +msgstr "" + +# Check-box label inside "search" dialog. When box is checked, the search may include classified ads in its resultset. +#: ui/searchDisplay.ui:101 +msgctxt "searchDisplay|" +msgid "Search ads" +msgstr "" + +# Check-box label inside "search" dialog. When box is checked, the search may include operator profiles in its resultset. +#: ui/searchDisplay.ui:111 +msgctxt "searchDisplay|" +msgid "Search profiles" +msgstr "" + +# Check-box label inside "search" dialog. When box is checked, the search may include profile commetns in its resultset. +#: ui/searchDisplay.ui:121 +msgctxt "searchDisplay|" +msgid "Search comments" +msgstr "" + +# Dialog title text for "settings" dialog. +#: ui/settingsDialog.ui:26 +msgctxt "settingsDialog|" +msgid "Node settings" +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:39 +msgctxt "settingsDialog|" +msgid "TCP listen port" +msgstr "" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:58 +msgctxt "settingsDialog|" +msgid "Incoming TCP listen port. Change requires node restart. " +msgstr "" + +# Text field label for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:84 +msgctxt "settingsDialog|" +msgid "DNS name of node" +msgstr "" + +# Tooltip-text for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:91 +msgctxt "settingsDialog|" +msgid "" +"If you have permanent DNS name for your machine, you may type it here to be " +"used to reference your node" +msgstr "" + +# Text label inside "settings" dialog. Under this label is set of numerical input fields that user may use to adjust the amount of items he wishes to keep in his local storage. +#: ui/settingsDialog.ui:103 +msgctxt "settingsDialog|" +msgid "Data store limits:" +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of operator profiles to keep in storage. +#: ui/settingsDialog.ui:115 +msgctxt "settingsDialog|" +msgid "Nr of profiles to keep" +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of private messages to keep in storage. +#: ui/settingsDialog.ui:154 +msgctxt "settingsDialog|" +msgid "Nr of private messages to keep" +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of binary files to keep in storage. +#: ui/settingsDialog.ui:193 +msgctxt "settingsDialog|" +msgid "Nr of binary blobs to keep" +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:232 +msgctxt "settingsDialog|" +msgid "Nr of CAs to keep" +msgstr "" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:251 +msgctxt "settingsDialog|" +msgid "" +"Number of classified ads to keep in storage, total, including all " +"classifications. Oldest referenced will be deleted first." +msgstr "" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of comments regarding operators to keep in storage. +#: ui/settingsDialog.ui:274 +msgctxt "settingsDialog|" +msgid "Nr of profile comments to keep" +msgstr "" + +# Dialog title text for a dialog that shows network connectivity details. +#: ui/statusDialog.ui:26 +msgctxt "statusDialog|" +msgid "Network and connection status" +msgstr "" + +# Text field label for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:48 +msgctxt "statusDialog|" +msgid "Detected own IPv4" +msgstr "" + +# Tooltip-text for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:61 ui/statusDialog.ui:93 +msgctxt "statusDialog|" +msgid "" +"Should your friend have trouble connecting, give her this address with port " +"number" +msgstr "" + +# Text field label for display-item inside "network status" dialog. The display-item shows IPV6-address of the node. Usually it is (public) IPv6 addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:74 +msgctxt "statusDialog|" +msgid "IPv6" +msgstr "" + +# Text field label for display-item inside "network status" dialog. The display-item shows listen port of the node. +#: ui/statusDialog.ui:113 +msgctxt "statusDialog|" +msgid "TCP port currently used" +msgstr "" + +# Text field label for a list-item inside "network status" dialog. The list-item shows list of currently connected other nodes in the network. +#: ui/statusDialog.ui:151 +msgctxt "statusDialog|" +msgid "Currently open connections" +msgstr "" + +# Push-button label for button inside "network status" dialog. When button is hit, another dialog is opened, asking user for details about the remote node to connect. +#: ui/statusDialog.ui:195 +msgctxt "statusDialog|" +msgid "Manually add connection" +msgstr "" + +# Push-button label for button inside "network status" dialog. When button is hit, dialog is dismissed. +#: ui/statusDialog.ui:202 +msgctxt "statusDialog|" +msgid "Close" +msgstr "" diff -Nru classified-ads-0.07/po/da.po classified-ads-0.09/po/da.po --- classified-ads-0.07/po/da.po 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/po/da.po 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,2544 @@ +# Translation file for classified ads. +# +# This is auto-generated from .ts file. +# +# classified ads -> rubrikannoncer (eller hvad, måske bare rubrikker, annoncer, beskeder eller noget andet). +# +msgid "" +msgstr "" +"Project-Id-Version: classified-ads 0.08\n" +"Report-Msgid-Bugs-To: antti.jarvinen@katiska.org\n" +"POT-Creation-Date: 2015-08-31 23:30+0300\n" +"PO-Revision-Date: 2015-10-06 19:20+0100\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Qt-Contexts: true\n" + +# Context menu item text for menu, that appears when right-mouse is clicked on top of a file in a list. +#: ui/attachmentlistdialog.cpp:60 +msgctxt "AttachmentListDialog|" +msgid "Save file to disk.." +msgstr "Gem fil til disk ..." + +# In file open dialog this is text specifying what kind of files to include in listing, filtered by file name suffix. For example, user wants only PNG files, then text appearing in dialog filter field would say "PNG files (*.png)" and this work "files" here is the word after the word PNG. +#: ui/attachmentlistdialog.cpp:151 ui/attachmentlistdialog.cpp:153 +msgctxt "AttachmentListDialog|" +msgid "files" +msgstr "filer" + +# Dialog title text for dialog asking user to give a name to file for purpose of saving it to filesystem. +#: ui/attachmentlistdialog.cpp:155 +msgctxt "AttachmentListDialog|" +msgid "Choose file name for saving" +msgstr "Vælg filnavn" + +# Dialog title text for error dialog. +#: ui/attachmentlistdialog.cpp:166 +msgctxt "AttachmentListDialog|" +msgid "Error" +msgstr "Fejl" + +# This gives (no) explanation about reason for "file open failure"? +#: ui/attachmentlistdialog.cpp:167 +msgctxt "AttachmentListDialog|" +msgid "File open error" +msgstr "Der opstod en fejl under åbning af filen" + +# Title text in a listing view where list of shared files are listed. This particular text gives text for column, where "name or fingerprint of file" is listed. Fingerprint in practice means SHA1 digest. +#: datamodel/binaryfilelistingmodel.cpp:173 +msgctxt "BinaryFileListingModel|" +msgid "Name or fingerprint of file" +msgstr "Navn eller fingeraftryk for fil" + +# Header text for a column-list. The column that gets its header text from this string, is the date-column of an classified ad. +#: datamodel/calistingmodel.cpp:50 datamodel/calistingmodel.cpp:143 +msgctxt "CAListingModel|" +msgid "Date" +msgstr "Dato" + +# Header text for a column-list. The column that gets its header text from this string, is the subject-column of an classified ad. +#: datamodel/calistingmodel.cpp:51 datamodel/calistingmodel.cpp:142 +msgctxt "CAListingModel|" +msgid "Subject" +msgstr "Emne" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:127 +msgctxt "ClassifiedAdsModel|" +msgid "Buying" +msgstr "Køb" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:129 +msgctxt "ClassifiedAdsModel|" +msgid "Selling" +msgstr "Salg" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Cars in Estonia" and this combobox text here is the first+2nd word of that phrase. +#: datamodel/camodel.cpp:131 +msgctxt "ClassifiedAdsModel|" +msgid "Giving away" +msgstr "Foræring af" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:133 +msgctxt "ClassifiedAdsModel|" +msgid "Wanting" +msgstr "Efterspørgsel" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Renting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:135 +msgctxt "ClassifiedAdsModel|" +msgid "Renting" +msgstr "Leje" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:137 +msgctxt "ClassifiedAdsModel|" +msgid "Announcement" +msgstr "Annoncering" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:210 +msgctxt "ClassifiedAdsModel|" +msgid "Cars" +msgstr "biler" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Boats in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:212 +msgctxt "ClassifiedAdsModel|" +msgid "Boats" +msgstr "både" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Bikes in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:214 +msgctxt "ClassifiedAdsModel|" +msgid "Bikes" +msgstr "motorcykler" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Other vehicles in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:216 +msgctxt "ClassifiedAdsModel|" +msgid "Other vehicles" +msgstr "andre køretøjer" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of vehicle parts in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:218 +msgctxt "ClassifiedAdsModel|" +msgid "Vehicle parts" +msgstr "dele af køretøjer" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Habitation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:220 +msgctxt "ClassifiedAdsModel|" +msgid "Habitation" +msgstr "ejendom" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Household appliances in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:222 +msgctxt "ClassifiedAdsModel|" +msgid "Household appliances" +msgstr "husholdningsapparater" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Furniture in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:224 +msgctxt "ClassifiedAdsModel|" +msgid "Furniture" +msgstr "møbler" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Clothing in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:226 +msgctxt "ClassifiedAdsModel|" +msgid "Clothing" +msgstr "tøj" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:228 +msgctxt "ClassifiedAdsModel|" +msgid "Tools" +msgstr "værktøj" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:230 +msgctxt "ClassifiedAdsModel|" +msgid "Sports" +msgstr "sportsartikler" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Music in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:232 +msgctxt "ClassifiedAdsModel|" +msgid "Music" +msgstr "musik" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Books in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:234 +msgctxt "ClassifiedAdsModel|" +msgid "Books" +msgstr "bøger" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Movies in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:236 +msgctxt "ClassifiedAdsModel|" +msgid "Movies" +msgstr "film" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Animals in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:238 +msgctxt "ClassifiedAdsModel|" +msgid "Animals" +msgstr "dyr" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Electronics in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:240 +msgctxt "ClassifiedAdsModel|" +msgid "Electronics" +msgstr "elektronik" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Jobs in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:242 +msgctxt "ClassifiedAdsModel|" +msgid "Jobs" +msgstr "job" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Transportation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:244 +msgctxt "ClassifiedAdsModel|" +msgid "Transportation" +msgstr "transport" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Services in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:246 +msgctxt "ClassifiedAdsModel|" +msgid "Services" +msgstr "tjenester" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Healthcare in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:248 +msgctxt "ClassifiedAdsModel|" +msgid "Healthcare" +msgstr "sundhedspleje" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Foodstuff in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:250 +msgctxt "ClassifiedAdsModel|" +msgid "Foodstuff" +msgstr "madvarer" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Software in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:252 +msgctxt "ClassifiedAdsModel|" +msgid "Software" +msgstr "programmer" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Events in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:254 +msgctxt "ClassifiedAdsModel|" +msgid "Events" +msgstr "hændelser" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Education in Estonia" and this combobox text here is the 4th word of that phrase. +#: datamodel/camodel.cpp:256 +msgctxt "ClassifiedAdsModel|" +msgid "Education" +msgstr "undervisning" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Finance in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:258 +msgctxt "ClassifiedAdsModel|" +msgid "Finance" +msgstr "finans" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Jewelry in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:260 +msgctxt "ClassifiedAdsModel|" +msgid "Jewelry" +msgstr "smykker" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of religious rituals in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:262 +msgctxt "ClassifiedAdsModel|" +msgid "Religious rituals" +msgstr "religiøse ritualer" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:264 +msgctxt "ClassifiedAdsModel|" +msgid "Philosophy" +msgstr "filosofi" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Any country" and this combobox text here is end part "Any country" specifying the location where announcement. +#: datamodel/camodel.cpp:908 +msgctxt "ClassifiedAdsModel|" +msgid "Any country" +msgstr "alle lande" + +# Tool tip text. When user hovers mouse cursor on top of network address field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:142 +msgctxt "ConnectionListingModel|" +msgid "Peer network address" +msgstr "Modparts netværksadresse" + +# Tool tip text. When user hovers mouse cursor on top of field specifying if connection is inbound/outbound this text will appear. +#: datamodel/connectionlistingmodel.cpp:145 +msgctxt "ConnectionListingModel|" +msgid "Inbound connections are those where peer initiated connection" +msgstr "Indgående forbindelser er dem hvor modpart startede forbindelse" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:148 +msgctxt "ConnectionListingModel|" +msgid "Data transferred from peer to your node" +msgstr "Data overført fra modpart til din knude" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:151 +msgctxt "ConnectionListingModel|" +msgid "Data transferred to peer from your node" +msgstr "Data overført til modpart fra din knude" + +# Tool tip text. When user hovers mouse cursor on top of time-field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:154 +msgctxt "ConnectionListingModel|" +msgid "Time when connection was opened" +msgstr "Tidspunkt da forbindelsen blev åbnet" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows network address (like IP-address) +#: datamodel/connectionlistingmodel.cpp:164 +msgctxt "ConnectionListingModel|" +msgid "Address" +msgstr "Adresse" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows direction (inbound/outbound) of the connection +#: datamodel/connectionlistingmodel.cpp:167 +msgctxt "ConnectionListingModel|" +msgid "Inbound" +msgstr "Indgående" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred inside +#: datamodel/connectionlistingmodel.cpp:170 +msgctxt "ConnectionListingModel|" +msgid "Bytes in" +msgstr "Byte ind" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred outside +#: datamodel/connectionlistingmodel.cpp:173 +msgctxt "ConnectionListingModel|" +msgid "Bytes out" +msgstr "Byte ud" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows time when connection was opened. +#: datamodel/connectionlistingmodel.cpp:176 +msgctxt "ConnectionListingModel|" +msgid "Open time" +msgstr "Åbningstidspunkt" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the positive case "user is trusted". +#: datamodel/contactlistingmodel.cpp:73 +msgctxt "ContactListingModel|" +msgid "Yes" +msgstr "Ja" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the negative case "user trust is unknown". +#: datamodel/contactlistingmodel.cpp:75 +msgctxt "ContactListingModel|" +msgid "Unknown" +msgstr "Ukendt" + +# Tool tip text. When user hovers mouse cursor on top of field where operators SHA1 digest is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:98 +msgctxt "ContactListingModel|" +msgid "Actual network address (SHA1) of the contact" +msgstr "Faktisk netværksadresse (SHA1) for kontakten" + +# Tool tip text. When user hovers mouse cursor on top of field where operators locally given nickname is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:101 +msgctxt "ContactListingModel|" +msgid "Locally given nickname ; user may set her own nickname himself" +msgstr "Lokalt angivet øgenavn ; bruger kan lave sit eget øgenavn" + +# Tool tip text. When user hovers mouse cursor on top of field where operators trustworthiness (boolean value) in users opinion is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:104 +msgctxt "ContactListingModel|" +msgid "Public statement if this operator to be trusted in transactions" +msgstr "Offentlig erklæring hvis denne operatør er troværdig i transaktioner" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators network address (the SHA digest of operator) +#: datamodel/contactlistingmodel.cpp:114 +msgctxt "ContactListingModel|" +msgid "Address" +msgstr "Adresse" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators nickname +#: datamodel/contactlistingmodel.cpp:117 +msgctxt "ContactListingModel|" +msgid "Nickname" +msgstr "Øgenavn" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators trustworthiness. +#: datamodel/contactlistingmodel.cpp:120 +msgctxt "ContactListingModel|" +msgid "Publicly trusted" +msgstr "Offentlig troværdighed" + +# Error message that is displayed when SSL key generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:86 +msgctxt "ContentEncryptionModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "SSL-nøgleoprettelse gik galt, kalder afslut ..." + +# Error message that is displayed when x509 certificate generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:94 +msgctxt "ContentEncryptionModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "x509-certifikatoprettelse gik galt, kalder afslut ..." + +# Error message that is displayed when RSA private key could not be saved to database. This is rather fatal error, the operator profile that user tried to create will be un-usable. +#: datamodel/contentencryptionmodel.cpp:192 +#: datamodel/contentencryptionmodel.cpp:290 +msgctxt "ContentEncryptionModel|" +msgid "RSA Private key key saving went wrong" +msgstr "Lagring af RSA Private-nøgle gik galt" + +# Error message text. This is displayed in situation where user tried to access content that he does not have encryption key for. This may appear frequently during normal operation and is no fatal error, only telling user that he is not going to see the content he was trying to access. +#: datamodel/contentencryptionmodel.cpp:637 +msgctxt "ContentEncryptionModel|" +msgid "No suitable de-cryption key found" +msgstr "Der blev ikke fundet en egnet dekrypteringsnøgle" + +# Window title text for whole application. +#: controller.cpp:103 +msgctxt "Controller|" +msgid "Classified ads" +msgstr "Classified ads" + +# Prompt text for password dialog +#: controller.cpp:135 +msgctxt "Controller|" +msgid "Enter password for protection of your messages:" +msgstr "Indtast adgangskode for beskyttelse af dine beskeder:" + +# Dialog text for a wait dialog (a progress-bar like thing will be shown next to this text and user is supposed to sit down and wait a moment..) +#: controller.cpp:405 +msgctxt "Controller|" +msgid "Fetching item from network.." +msgstr "Henter post fra netværket ..." + +# Menu item text used in "File" menu item and when this particular item is selected, application will close +#: controller.cpp:430 +msgctxt "Controller|" +msgid "E&xit" +msgstr "&Afslut" + +# Menu item tooltip-text used in "File" menu entry and when this particular item is selected, application will close +#: controller.cpp:432 +msgctxt "Controller|" +msgid "Exit the application" +msgstr "Afslut programmet" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:434 +msgctxt "Controller|" +msgid "&About" +msgstr "&Om" + +# Tooltip-text of menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:435 +msgctxt "Controller|" +msgid "Show the application's About box" +msgstr "Vis information om programmet" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:437 +msgctxt "Controller|" +msgid "&Change password" +msgstr "&Ændr adgangskode" + +# Tooltip-item for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:438 +msgctxt "Controller|" +msgid "Change password of current profile" +msgstr "Ændr adgangskode for nuværende profil" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:440 +msgctxt "Controller|" +msgid "Create &new profile" +msgstr "Opret &ny profil" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:441 +msgctxt "Controller|" +msgid "Makes a brand new user profile" +msgstr "Laver en helt ny brugerprofil" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open operator profile +#: controller.cpp:443 +msgctxt "Controller|" +msgid "&Delete current profile" +msgstr "&Slet nuværende profil" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open profile +#: controller.cpp:444 +msgctxt "Controller|" +msgid "Deletes currently open profile" +msgstr "Sletter den åbne profil" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:446 +msgctxt "Controller|" +msgid "&Select another profile" +msgstr "&Vælg en anden profil" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:447 +msgctxt "Controller|" +msgid "If you have multitude of profiles" +msgstr "Hvis du har flere profiler" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a settings-dialog +#: controller.cpp:449 +msgctxt "Controller|" +msgid "Settings.." +msgstr "Indstillinger ..." + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:450 +msgctxt "Controller|" +msgid "Node-wide settings.." +msgstr "Indstillinger for alle knuder ..." + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog detailing network connectivity of the node +#: controller.cpp:452 +msgctxt "Controller|" +msgid "Network status.." +msgstr "Netværksstatus ..." + +# Menu item text used in "File" menu and when this particular item is selected, application will show a search-dialog +#: controller.cpp:454 +msgctxt "Controller|" +msgid "Search.." +msgstr "Søg ..." + +# Menu bar title text for "File" menu. +#: controller.cpp:471 +msgctxt "Controller|" +msgid "&File" +msgstr "&Fil" + +# Password dialog prompt. +#: controller.cpp:516 +msgctxt "Controller|" +msgid "Enter new password:" +msgstr "Indtast ny adgangskode:" + +# Password dialog prompt. In this case the password dialog is not used for giving initial password or change password but instead password is typed for the reason of selection of another operator profile to be used. +#: controller.cpp:544 controller.cpp:653 +msgctxt "Controller|" +msgid "Activate another profile with password" +msgstr "Aktiver en anden profil med adgangskode" + +# Error message shown in dialog in situation where user tried to delete the last (one and only) operator profile in machine. There needs to be at least one profile and this error message is shown if user tries to get around that limitation. +#: controller.cpp:638 +msgctxt "Controller|" +msgid "Can't delete only profile." +msgstr "Kan ikke slette den sidste profil." + +# Text shown in title of confirmation dialog. +#: controller.cpp:642 +msgctxt "Controller|" +msgid "Permanently discard profile?" +msgstr "Fjern profilen permanent?" + +# Text shown inside a confirmation dialog. Dialog will have buttons OK and Cancel and this is the question. +#: controller.cpp:643 +msgctxt "Controller|" +msgid "There will be NO way to access content of this profile later" +msgstr "Der vil INGEN måde være til at tilgå indholdet i denne profil senere" + +# Error message that is shown in a dialog in situation where previously stored encryption keys of the node could not be accessed. Rather fatal error, will render node un-usable. +#: controller.cpp:706 +msgctxt "Controller|" +msgid "Cant load node cert or key cert" +msgstr "Kan ikke indlsæe knudecertifikat eller nøglecertifikat" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a filesystem file operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:711 +msgctxt "Controller|" +msgid "File error" +msgstr "Filfejl" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during database operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:716 +msgctxt "Controller|" +msgid "Database error" +msgstr "Databasefejl" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a operation inside crypto-module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:722 controller.cpp:732 +msgctxt "Controller|" +msgid "Cryptographic module" +msgstr "Kryptografisk modul" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during operation inside database module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:727 +msgctxt "Controller|" +msgid "Database module" +msgstr "Databasemodul" + +# Error message dialog title text for a dialog that is shown in a dialog in situation when password supplied by user was not good for any purpose. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:733 +msgctxt "Controller|" +msgid "Bad password" +msgstr "Ugyldig adgangskode" + +# Error message text inside a dialog when user had requested for an item to be opened but program could not find the requested item. +#: controller.cpp:949 +msgctxt "Controller|" +msgid "Could not find item from network.." +msgstr "Kunne ikke finde post fra netværket ..." + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies SHA1 digest of the file. +#: controller.cpp:1062 +msgctxt "Controller|" +msgid "SHA1: " +msgstr "SHA1:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies mime-type of the file +#: controller.cpp:1067 +msgctxt "Controller|" +msgid "Mime-Type: " +msgstr "Mime-type: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that gives longer explanation of the file +#: controller.cpp:1073 +msgctxt "Controller|" +msgid "Description: " +msgstr "Beskrivelse: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of publisher of the file (in practice, who uploaded the file into classified ads) +#: controller.cpp:1079 +msgctxt "Controller|" +msgid "Publisher: " +msgstr "Udgiver: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of the person (or organization) that owns (in copyright sense) the file or its contents. +#: controller.cpp:1085 +msgctxt "Controller|" +msgid "Content owner: " +msgstr "Indholdsejer: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies the license of the file +#: controller.cpp:1091 +msgctxt "Controller|" +msgid "License: " +msgstr "Licens: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file name +#: controller.cpp:1097 +msgctxt "Controller|" +msgid "Name: " +msgstr "Navn: " + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file date +#: controller.cpp:1104 +msgctxt "Controller|" +msgid "Date: " +msgstr "Dato: " + +# Error message text shown inside dialog when user tries to select for operation a file that is much much too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:47 ui/dialogbase.cpp:101 +msgctxt "DialogBase|" +msgid "File way too big" +msgstr "Filen er alt for stor" + +# Error message text shown inside dialog when user tries to select for operation a file that is just-and-just too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:55 ui/dialogbase.cpp:109 +msgctxt "DialogBase|" +msgid "File too big" +msgstr "Filen er for stor" + +# Error message text shown inside dialog when user tries to select for operation a file that can not be opened (for example due to file permission reasons) +#: ui/dialogbase.cpp:85 ui/dialogbase.cpp:131 +msgctxt "DialogBase|" +msgid "File open error" +msgstr "Der opstod en fejl under åbning af fil" + +# Dialog title text. Dialog prompts user to select the filesystem file that will be published inside classified ads. +#: ui/dialogbase.cpp:94 +msgctxt "DialogBase|" +msgid "Select file to be published" +msgstr "Vælg fil til udgivelse" + +# Text for file type filter field in file-selection-dialog +#: ui/dialogbase.cpp:96 +msgctxt "DialogBase|" +msgid "Files (*.*)" +msgstr "Filer (*.*)" + +# Title text of error dialog. +#: ui/editcontact.cpp:72 +msgctxt "EditContactDialog|" +msgid "Error" +msgstr "Fejl" + +# Contet text of error dialog. Shown after user has tried to enter operator address with intent of adding it to contact-list and the operator address fails format validation. +#: ui/editcontact.cpp:73 +msgctxt "EditContactDialog|" +msgid "Operator addr is not valid" +msgstr "Operatøradresse er ikke gyldig" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the first tab. +#: FrontWidget.cpp:93 +msgctxt "FrontWidget|" +msgid "Classified ads" +msgstr "Rubrikannoncer" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 2nd tab. +#: FrontWidget.cpp:94 +msgctxt "FrontWidget|" +msgid "My profile" +msgstr "Min profil" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 3rd tab. +#: FrontWidget.cpp:95 +msgctxt "FrontWidget|" +msgid "Contacts" +msgstr "Kontakter" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 4th tab. +#: FrontWidget.cpp:96 +msgctxt "FrontWidget|" +msgid "Private messages" +msgstr "Private beskeder" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, a dialog will appear asking which file to share +#: FrontWidget.cpp:155 +msgctxt "FrontWidget|" +msgid "Add shared file.." +msgstr "Tilføj delt fil ..." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will no longer be shared +#: FrontWidget.cpp:156 +msgctxt "FrontWidget|" +msgid "Stop advertising selected shared file" +msgstr "Stop annoncering af valgt delt fil" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will be saved to filesystem +#: FrontWidget.cpp:157 +msgctxt "FrontWidget|" +msgid "Save file to disk.." +msgstr "Gem fil til disk ..." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, information dialog about selected file will be shown +#: FrontWidget.cpp:158 +msgctxt "FrontWidget|" +msgid "View file information.." +msgstr "Vis filinformation ..." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, SHA digest of the selected file will be copied to clipboard. +#: FrontWidget.cpp:159 +msgctxt "FrontWidget|" +msgid "Copy file address (SHA1) to clipboard.." +msgstr "Kopier filadresse (SHA1) til udklipsholderen ..." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, an editor will be displayed prompting user to enter text that will then be published for other users to see. +#: FrontWidget.cpp:160 +msgctxt "FrontWidget|" +msgid "Edit+publish new text document.." +msgstr "Rediger+udgiv nyt tekstdokument ..." + +# Dialog title text for "file open" dialog +#: FrontWidget.cpp:348 +msgctxt "FrontWidget|" +msgid "Open File" +msgstr "Åbn fil" + +# Text for filter field of file selection dialog +#: FrontWidget.cpp:350 FrontWidget.cpp:880 +msgctxt "FrontWidget|" +msgid "Files (*.*)" +msgstr "Filer (*.*)" + +# Error dialog title text. Actual error message will be shown inside dialog whose title is this text. +#: FrontWidget.cpp:354 FrontWidget.cpp:1180 FrontWidget.cpp:1322 +msgctxt "FrontWidget|" +msgid "Error" +msgstr "Fejl" + +# Error dialog content text. Shown when image file that user selected could not be opened (maybe because file permission problem or maybe image format issue or ..) +#: FrontWidget.cpp:355 +msgctxt "FrontWidget|" +msgid "Can't load image" +msgstr "Kan ikke indlæse billede" + +# Error dialog title text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:621 FrontWidget.cpp:761 +msgctxt "FrontWidget|" +msgid "Profile not in database" +msgstr "Profilen er ikke i databasen" + +# Error dialog content text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:622 FrontWidget.cpp:762 +msgctxt "FrontWidget|" +msgid "Try viewing profile first to obtain data" +msgstr "Prøv først at se profilen før indhentelse af data" + +# File selection title text. Prompts user to select a file for publish purpose. +#: FrontWidget.cpp:878 +msgctxt "FrontWidget|" +msgid "Select file to be published" +msgstr "Vælg fil for udgivelse" + +# Error text shown in dialog. Shown in situation where user selected a file that really exceeds size limit (of 2MB) +#: FrontWidget.cpp:885 +msgctxt "FrontWidget|" +msgid "File way too big" +msgstr "Filen er alt for stor" + +# Error text shown in dialog. Shown in situation where user selected a file that slightly exceeds size limit (of 2MB) +#: FrontWidget.cpp:893 +msgctxt "FrontWidget|" +msgid "File too big" +msgstr "Filen er for stor" + +# Error text shown in dialog. Shown in situation where user selected a file that could for some reason not be opened +#: FrontWidget.cpp:937 FrontWidget.cpp:1181 +msgctxt "FrontWidget|" +msgid "File open error" +msgstr "Der opstod en fejl under åbning af filen" + +# Part of filter text field in file selection dialog. If for instance user tries to open PNG files, then the text in filter field will be "PNG files (*.png)" and this word is the 2nd word in the phrase. +#: FrontWidget.cpp:1162 FrontWidget.cpp:1168 +msgctxt "FrontWidget|" +msgid "files" +msgstr "filer" + +# File selection dialog title text. Dialog prompts user to select location+name for an file to be exported into filesystem. +#: FrontWidget.cpp:1171 +msgctxt "FrontWidget|" +msgid "Choose file name for saving" +msgstr "Vælg filnavn" + +# Text shown in placeholder for operators image in situation where user has not yet selected any image. In practice it prompts user to insert image by clicking at the text. +#: FrontWidget.cpp:1231 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"Click\n" +"To\n" +"Add\n" +"Image\n" +msgstr "" +"\n" +"\n" +"\n" +"Klik\n" +"for\n" +"at\n" +"tilføje\n" +"billede\n" + +# Error message dialog content text shown when user tried to access article, that was not stored in local database +#: FrontWidget.cpp:1323 +msgctxt "FrontWidget|" +msgid "Article not found from local storage" +msgstr "Annoncen blev ikke fundet i det lokale lager" + +# Tool-tip text. Shown on top of operators address when user hovers mouse on top of the address field. The %1 will be replaced by nickname of an operator who trusts this particular operator. The %2 will be replaced by SHA1 digest of the operator who trusts the operator whose SHA1 is under mouse cursor. +#: FrontWidget.cpp:1349 FrontWidget.cpp:1897 +#, qt-format +msgctxt "FrontWidget|" +msgid "" +"Trusted by %1\n" +"SHA1 %2" +msgstr "" +"Tillid til %1\n" +"SHA1 %2" + +# Tool tip text. Shown when user howers mouse on top of operators nickname field. In code a date-string will be concatenated to this string, so in practice in the UI it will read "Time of last update 31 aug 2015" or similar. +#: FrontWidget.cpp:1386 +msgctxt "FrontWidget|" +msgid "Time of last update " +msgstr "Tid for sidste opdatering " + +# Text for image placeholder, shown in situation where another operator has not selected any image for her.This text is shown place of the missing image. +#: FrontWidget.cpp:1394 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"(No\n" +"Image\n" +"Selected)\n" +msgstr "" +"\n" +"\n" +"\n" +"(Intet\n" +"billede\n" +"valgt)\n" + +# Context menu item text. Context-menu is related to frequent-contacts column-view. +#: FrontWidget.cpp:1488 +msgctxt "FrontWidget|" +msgid "Edit contact.." +msgstr "Rediger kontakt ..." + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the classified ad currently on display +#: FrontWidget.cpp:1528 +msgctxt "FrontWidget|" +msgid "&Reply to sender" +msgstr "&Svar til afsender" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a reply to classified ad currently on display +#: FrontWidget.cpp:1529 +msgctxt "FrontWidget|" +msgid "Reply to &forum" +msgstr "Svar til &forum" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a new classified ad. +#: FrontWidget.cpp:1530 +msgctxt "FrontWidget|" +msgid "&Post new ad" +msgstr "&Indsend ny annonce" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the classified ad currently on display +#: FrontWidget.cpp:1531 +msgctxt "FrontWidget|" +msgid "&Public comment" +msgstr "&Offentlig kommentar" + +# Push button text. Pushing the button will switch to view detailing operator who sent the classified ad currently on display +#: FrontWidget.cpp:1532 +msgctxt "FrontWidget|" +msgid "&View profile" +msgstr "&Vis profil" + +# Push button text. Pushing the button will open a a listing of files that are attached to classified ad currently on display +#: FrontWidget.cpp:1533 FrontWidget.cpp:1671 +msgctxt "FrontWidget|" +msgid "Attachments.." +msgstr "Vedhæftninger ..." + +# Push button text. Pushing the button will open an editor prompting user to add to her contact-list the operator who sent the classified ad currently on display +#: FrontWidget.cpp:1593 +msgctxt "FrontWidget|" +msgid "Add selected operator to contacts.." +msgstr "Tilføj valgt operatør til kontakter ..." + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the private message currently on display +#: FrontWidget.cpp:1667 +msgctxt "FrontWidget|" +msgid "&Reply" +msgstr "&Svar" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to some operator. +#: FrontWidget.cpp:1668 +msgctxt "FrontWidget|" +msgid "&New message" +msgstr "&Ny besked" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the private message currently on display +#: FrontWidget.cpp:1669 +msgctxt "FrontWidget|" +msgid "&Send public comment to sender" +msgstr "&Send offentlig kommentar til afsender" + +# Push button text. Pushing the button will open view that will show details of operator, who sent the private message currently on display. +#: FrontWidget.cpp:1670 +msgctxt "FrontWidget|" +msgid "&View profile of peer" +msgstr "&Vis profil for modpart" + +# Context menu item text. Appears in "message listing view" when user right-clicks on messages view. When selected, the operator who sent the message that is selected is added to contacts. +#: FrontWidget.cpp:1705 +msgctxt "FrontWidget|" +msgid "Add selected to contacts.." +msgstr "Tilføj valgte til kontakter ..." + +# Text field label. Label tells who sent particular classified ad. +#: FrontWidget.cpp:1907 FrontWidget.cpp:1909 FrontWidget.cpp:1973 +#: FrontWidget.cpp:1975 +msgctxt "FrontWidget|" +msgid "From:" +msgstr "Fra:" + +# Text field label. Label tells subject of classified ads. +#: FrontWidget.cpp:1911 FrontWidget.cpp:1978 +msgctxt "FrontWidget|" +msgid "Subject:" +msgstr "Emne:" + +# Text field label. Label tells whom a private message was sent to. +#: FrontWidget.cpp:1970 +msgctxt "FrontWidget|" +msgid "To:" +msgstr "Til:" + +# Error dialog content text. Shown in situation when user clicked on a link that contained SHA1 digest that was not valid. +#: FrontWidget.cpp:2282 +msgctxt "FrontWidget|" +msgid "Invalid SHA1 in URL" +msgstr "Ugyldig SHA1 i adresse" + +# Error dialog content text. Shown in situation when user clicked on a link that was not correctly formatted. +#: FrontWidget.cpp:2309 +msgctxt "FrontWidget|" +msgid "Invalid URL" +msgstr "Ugyldig adresse" + +# Error dialog content text. Shown in situation when user entered a link that could not be parsed. +#: ui/insertlinkdialog.cpp:69 +msgctxt "InsertLinkDialog|" +msgid "Invalid URL" +msgstr "Ugyldig adresse" + +# Error dialog content text. Shown in situation when user tried to add connection to node whose name was not found via nameserver. +#: ui/manualconnection.cpp:53 +msgctxt "ManualConnectionDialog|" +msgid "DNS lookup failure" +msgstr "DNS-opslagsfejl" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprivmsgdialog.cpp:88 ui/newprivmsgdialog.cpp:133 +msgctxt "NewPrivMessageDialog|" +msgid "Error" +msgstr "Fejl" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprivmsgdialog.cpp:89 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient addr is not valid" +msgstr "Modtageradresse er ikke gyldig" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprivmsgdialog.cpp:134 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Krypteringsnøgle for modtager blev ikke fundet i lageret" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprofilecommentdialog.cpp:89 ui/newprofilecommentdialog.cpp:126 +msgctxt "NewProfileCommentDialog|" +msgid "Error" +msgstr "Fejl" + +# Error dialog content text. Dialog is shown when user tries to comment an operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprofilecommentdialog.cpp:90 +msgctxt "NewProfileCommentDialog|" +msgid "Commented profile addr is not valid" +msgstr "Kommenteret profiladresse er ikke gyldig" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprofilecommentdialog.cpp:127 +msgctxt "NewProfileCommentDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Krypteringsnøgle for modtager blev ikke fundet i lageret" + +# Error message text. Will be shown in error message dialog in case when initial SSL key generation of node did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:115 +msgctxt "NodeModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "SLL-nøgleoprettelse gik galt, kalder afslut ..." + +# Error message text. Will be shown in error message dialog in case when initial encryption key generation of user did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:123 +msgctxt "NodeModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "x509-certifikatopretttelse gik galt, kalder afslut ..." + +# Error message text. Will be shown in error message dialog in case when SSL certificate of the node could not be loaded from storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1594 +msgctxt "NodeModel|" +msgid "Cant load SSL cert" +msgstr "Kan ikke indlæse SSL-certifikat" + +# Error message text. Will be shown in error message dialog in case when SSL key of the node could not be retrieved from local storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1624 +msgctxt "NodeModel|" +msgid "Cant load SSL key" +msgstr "Kan ikke indlæse SSL-nøgle" + +# Error message text. Shown in dialog when user tries to enter a password that is too short. +#: ui/passwd_dialog.cpp:104 +msgctxt "PasswdDialog|" +msgid "Min length 5 (use 10+)" +msgstr "Min. længde 5 (brug 10+)" + +# Password dialog title text. +#: ui/passwordDialog.ui:14 +msgctxt "PasswordDialog|" +msgid "Password required" +msgstr "Adgangskode krævet" + +# Tooltip text for password dialog. Shown when user hovers on top of password dialog. +#: ui/passwordDialog.ui:17 +msgctxt "PasswordDialog|" +msgid "" +"Should you forget this word, there is no easy way to recover any of your " +"content" +msgstr "" +"Skulle du glemme dette ord, så er der ingen nem måde at gendanne dit indhold" + +# Prompt text for password dialog. +#: ui/passwordDialog.ui:29 +msgctxt "PasswordDialog|" +msgid "Enter password for protection of your messages" +msgstr "Indtast adgangskode til beskyttelse af dine beskeder" + +# Tooltip text for password dialog. Shown when user hovers on top of password field +#: ui/passwordDialog.ui:42 +msgctxt "PasswordDialog|" +msgid "" +"If you forget this word, there is no simple way to recover your contents" +msgstr "" +"Hvis du glemmer dette ord, så er der ingen simpel måde at gendanne dit indhold" + +# Password dialog button text +#: ui/passwordDialog.ui:55 +msgctxt "PasswordDialog|" +msgid "OK" +msgstr "O.k." + +# Tooltip text. Shown when user hovers mouse cursor on top of message sender name. First %1 will be replaced with nickname of the operator whose message is hovered, %2 will be replaced by nickname of operator who has expressed positive trust towards the operator who sent the message. +#: datamodel/privmsgsearchmodel.cpp:110 +#, qt-format +msgctxt "PrivateMessageSearchModel|" +msgid "" +"%1\n" +"Trusted by %2" +msgstr "" +"%1\n" +"Meldt troværdig af %2" + +# Tooltip text. Used in column view that lists private messages of operator. Explains the field that gives title to column that specifies direction (sent or received) of the message. +#: datamodel/privmsgsearchmodel.cpp:237 +msgctxt "PrivateMessageSearchModel|" +msgid "Direction of message, sent/received" +msgstr "Retning for besked, sendt/modtaget" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies direction (sent/received) of the message. +#: datamodel/privmsgsearchmodel.cpp:247 +msgctxt "PrivateMessageSearchModel|" +msgid "Dir" +msgstr "Mappe" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies messaging peer (another operator) of the message. +#: datamodel/privmsgsearchmodel.cpp:250 +msgctxt "PrivateMessageSearchModel|" +msgid "Peer" +msgstr "Modpart" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies time of the message. +#: datamodel/privmsgsearchmodel.cpp:253 +msgctxt "PrivateMessageSearchModel|" +msgid "Time" +msgstr "Tid" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies subject of the message. +#: datamodel/privmsgsearchmodel.cpp:256 +msgctxt "PrivateMessageSearchModel|" +msgid "Subject" +msgstr "Emne" + +# Push button text. Clicking the button will open a dialog prompting user to add a new comment +#: ui/profilecommentdisplay.cpp:54 +msgctxt "ProfileCommentDisplay|" +msgid "&Add comment..." +msgstr "&Tilføj kommentar ..." + +# Context menu item text. Context menu is shown when user right-clicks on file listing view. When this item is selected, a file selection dialog is opened. +#: ui/profilecommentdisplay.cpp:65 +msgctxt "ProfileCommentDisplay|" +msgid "Save attachment to disk.." +msgstr "Gem vedhæftning til disk ..." + +# Error dialog title text +#: ui/profilecommentdisplay.cpp:90 +msgctxt "ProfileCommentDisplay|" +msgid "Error" +msgstr "Fejl" + +# Error dialog content text. Shown after user tried to access a profile comment and the comment could not be found +#: ui/profilecommentdisplay.cpp:91 +msgctxt "ProfileCommentDisplay|" +msgid "Article not found from local storage" +msgstr "Annonce blev ikke fundet i det lokale lager" + +# Text field label text. The text field whose label this is will show number how many attachements there are in the comment. +#: ui/profilecommentitemdelegate.cpp:91 +msgctxt "ProfileCommentItemDelegate|" +msgid "Attachments: " +msgstr "Vedhæftninger: " + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells who sent the comment. +#: datamodel/profilecommentlistingmodel.cpp:219 +msgctxt "ProfileCommentListingModel|" +msgid "Sender" +msgstr "Afsender" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells when comment was sent. +#: datamodel/profilecommentlistingmodel.cpp:222 +msgctxt "ProfileCommentListingModel|" +msgid "Time" +msgstr "Tidspunkt" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells subject of the comment. +#: datamodel/profilecommentlistingmodel.cpp:225 +msgctxt "ProfileCommentListingModel|" +msgid "Subject" +msgstr "Emne" + +# Error message text. Shown inside a dialog after user tried to send a comment to operator who had sent a comment and it turns out that necessary encryption keys of the commenting operator are not found and the replying comment can't be sent. +#: datamodel/profilecommentmodel.cpp:67 +msgctxt "ProfileCommentModel|" +msgid "Profile related to comment not found from database" +msgstr "Profil relateret til kommentar blev ikke fundet i databasen" + +# Context menu item text. This context-menu is shown when user right-clicks list of operators that is shown in dialog that is made for listing operators (who are readers of another profile) +#: ui/profilereadersdialog.cpp:73 +msgctxt "ProfileReadersDialog|" +msgid "View profile" +msgstr "Vis profil" + +# Column view column title text. The column view lists readers (operators) of another profile. +#: datamodel/profilereaderslistingmodel.cpp:174 +msgctxt "ProfileReadersListingModel|" +msgid "Name or fingerprint of reader" +msgstr "Navn eller fingeraftryk for læser" + +# Context menu item text. This context menu is shown when user right-clicks on top of search-results. This menu-item opens the currently-selected item from search results. +#: ui/searchdisplay.cpp:62 +msgctxt "SearchDisplay|" +msgid "Open.." +msgstr "Åbn ..." + +# Menu title text. This is the help menu. +#: textedit/textedit.cpp:127 +msgctxt "TextEdit|" +msgid "Help" +msgstr "Hjælp" + +# Menu-item text used in "help" menu. Selecting this item opens "about" dialog about Qt library. +#: textedit/textedit.cpp:129 +msgctxt "TextEdit|" +msgid "About &Qt" +msgstr "Om &Qt" + +# Window title text for container-window containing actions. It seems to me that this text actually does not appear anywhere in the UI due to way, how container-windows are used. +#: textedit/textedit.cpp:186 +msgctxt "TextEdit|" +msgid "Edit Actions" +msgstr "Rediger handlinger" + +# Menu text. This gives text to "file" menu of a text editor. +#: textedit/textedit.cpp:188 +msgctxt "TextEdit|" +msgid "&File" +msgstr "&Fil" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open a filesystem file" +#: textedit/textedit.cpp:194 +msgctxt "TextEdit|" +msgid "&Open..." +msgstr "&Åbn ..." + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file. +#: textedit/textedit.cpp:203 +msgctxt "TextEdit|" +msgid "&Save locally before send" +msgstr "&Gem lokalt før der sendes" + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file and user will be queried for file name. +#: textedit/textedit.cpp:210 +msgctxt "TextEdit|" +msgid "Save locally &As..." +msgstr "Gem lokalt &som ..." + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "print" +#: textedit/textedit.cpp:218 +msgctxt "TextEdit|" +msgid "&Print..." +msgstr "&Udskriv ..." + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open print preview" +#: textedit/textedit.cpp:226 +msgctxt "TextEdit|" +msgid "Print Preview..." +msgstr "Vis forhåndsvisning ..." + +# Menu-item text. Used in file-menu for triggering "export as pdf" operation +#: textedit/textedit.cpp:231 +msgctxt "TextEdit|" +msgid "&Export PDF..." +msgstr "&Eksporter PDF ..." + +# Menu text for "edit" menu of text editor. +#: textedit/textedit.cpp:244 +msgctxt "TextEdit|" +msgid "&Edit" +msgstr "&Rediger" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "undo" +#: textedit/textedit.cpp:249 +msgctxt "TextEdit|" +msgid "&Undo" +msgstr "&Genskab" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "re-do" +#: textedit/textedit.cpp:254 +msgctxt "TextEdit|" +msgid "&Redo" +msgstr "&Omgør" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "cut" (to clipboard) +#: textedit/textedit.cpp:261 +msgctxt "TextEdit|" +msgid "Cu&t" +msgstr "K&lip" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "copy to clipboard" +#: textedit/textedit.cpp:267 +msgctxt "TextEdit|" +msgid "&Copy" +msgstr "&Kopier" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "paste from clipboard" +#: textedit/textedit.cpp:273 +msgctxt "TextEdit|" +msgid "&Paste" +msgstr "&Indsæt" + +# Menu item text inside text editor "edit" menu. After this menu-item is selected, a dialog is opened, prompting user to enter a link (URL) to be included in the text. +#: textedit/textedit.cpp:283 +msgctxt "TextEdit|" +msgid "Insert link" +msgstr "Indsæt henvisning" + +# Menu-item text for embedding an image +#: textedit/textedit.cpp:287 +msgctxt "TextEdit|" +msgid "Embed image" +msgstr "Indlejr billede" + +# Menu text. Gives name for a "format" menu inside a text editor. +#: textedit/textedit.cpp:294 +msgctxt "TextEdit|" +msgid "F&ormat" +msgstr "&Format" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle bold text style" +#: textedit/textedit.cpp:298 +msgctxt "TextEdit|" +msgid "&Bold" +msgstr "F&ed" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle italic text" +#: textedit/textedit.cpp:310 +msgctxt "TextEdit|" +msgid "&Italic" +msgstr "&Kursiv" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle underline" +#: textedit/textedit.cpp:322 +msgctxt "TextEdit|" +msgid "&Underline" +msgstr "&Understreg" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "left-justify" +#: textedit/textedit.cpp:341 textedit/textedit.cpp:347 +msgctxt "TextEdit|" +msgid "&Left" +msgstr "&Venstre" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle centered text" +#: textedit/textedit.cpp:342 textedit/textedit.cpp:346 +msgctxt "TextEdit|" +msgid "C&enter" +msgstr "&Centrer" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "right-justify" +#: textedit/textedit.cpp:343 textedit/textedit.cpp:345 +msgctxt "TextEdit|" +msgid "&Right" +msgstr "&Højre" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "justify both right+left" +#: textedit/textedit.cpp:349 +msgctxt "TextEdit|" +msgid "&Justify" +msgstr "&Juster" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "color selection" +#: textedit/textedit.cpp:376 +msgctxt "TextEdit|" +msgid "&Color..." +msgstr "&Farve ..." + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "standard" +#: textedit/textedit.cpp:383 +msgctxt "TextEdit|" +msgid "Standard" +msgstr "Standard" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (disc)" +#: textedit/textedit.cpp:384 +msgctxt "TextEdit|" +msgid "Bullet List (Disc)" +msgstr "Punktopstilling (disk)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (circle)" +#: textedit/textedit.cpp:385 +msgctxt "TextEdit|" +msgid "Bullet List (Circle)" +msgstr "Punktopstilling (cirkel)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (square)" +#: textedit/textedit.cpp:386 +msgctxt "TextEdit|" +msgid "Bullet List (Square)" +msgstr "Punktopstilling (firkant)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (decimal)" +#: textedit/textedit.cpp:387 +msgctxt "TextEdit|" +msgid "Ordered List (Decimal)" +msgstr "Nummereringstype (decimal)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha lower)" +#: textedit/textedit.cpp:388 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha lower)" +msgstr "Nummereringstype (alfa nedre)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha upper)" +#: textedit/textedit.cpp:389 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha upper)" +msgstr "Nummereringstype (alfa øvre)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman lower)" +#: textedit/textedit.cpp:390 +msgctxt "TextEdit|" +msgid "Ordered List (Roman lower)" +msgstr "Nummereringstype (roman nedre)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman upper)" +#: textedit/textedit.cpp:391 +msgctxt "TextEdit|" +msgid "Ordered List (Roman upper)" +msgstr "Nummereringstype (roman øvre)" + +# Warning dialog title text. This dialog is shown if user tries to exit without saving her text. +#: textedit/textedit.cpp:442 +msgctxt "TextEdit|" +msgid "Application" +msgstr "Program" + +# Warning dialog title content text. Text asks what to do with modifications. The dialog has buttons Save,Discard and Cancel and this text is the question. +#: textedit/textedit.cpp:443 +msgctxt "TextEdit|" +msgid "" +"The document has been modified.\n" +"Do you want to save your changes?" +msgstr "" +"Dokumentet er blevet ændret.\n" +"Ønsker du at gemme dine ændringer?" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:467 +msgctxt "TextEdit|" +msgid "Open File..." +msgstr "Åbn fil ..." + +# Text for file selection filter field to be used inside file selection dialog. There are 2 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.htm) must not be edited. The explanations like "HTML-Files" may be edited. +#: textedit/textedit.cpp:468 +msgctxt "TextEdit|" +msgid "HTML-Files (*.htm *.html);;All Files (*)" +msgstr "HTML-filer (*.htm *.html);;Alle filer (*)" + +# File selection dialog title text. Dialog in question prompts user to select name for file to be persisted. +#: textedit/textedit.cpp:485 +msgctxt "TextEdit|" +msgid "Save as..." +msgstr "Gem som ..." + +# Text for file selection filter field to be used inside file selection dialog. There are 3 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.odt) must not be edited. The explanations like "ODF-files" may be edited. +#: textedit/textedit.cpp:486 +msgctxt "TextEdit|" +msgid "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)" +msgstr "ODF-filer (*.odt);;HTML-Files (*.htm *.html);;Alle filer (*)" + +# Dialog title text. The dialog is printer dialog asking user how to print the text currently in editor. +#: textedit/textedit.cpp:501 +msgctxt "TextEdit|" +msgid "Print Document" +msgstr "Udskriv dokument" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:559 +msgctxt "TextEdit|" +msgid "Open File" +msgstr "Åbn fil" + +# Text for file selection filter field to be used inside file selection dialog. The filter parts like (*.odt) must not be edited. The explanations like "Files" may be edited. +#: textedit/textedit.cpp:561 +msgctxt "TextEdit|" +msgid "Files (*.*)" +msgstr "Filer (*.*)" + +# Error dialog title text. +#: textedit/textedit.cpp:566 +msgctxt "TextEdit|" +msgid "Error" +msgstr "Fejl" + +# Error dialog content text. +#: textedit/textedit.cpp:567 +msgctxt "TextEdit|" +msgid "Can't load image" +msgstr "Kan ikke indlæse billede" + +# Error message displayed inside error dialog after user tried to select for operation a file whose size greatly exceeds file size limit. +#: textedit/textedit.cpp:621 textedit/textedit.cpp:631 +msgctxt "TextEdit|" +msgid "File way too big" +msgstr "Filen er alt for stor" + +# Dialog title text for "about" dialog. +#: ui/aboutDialog.ui:26 +msgctxt "aboutDialog|" +msgid "About classified ads" +msgstr "Om classified ads" + +# 1st line of text inside "about" dialog, placed next to the turle logo. This text is then followed by longer explanation detail why this program is and how. This is kind of title for the longer explanation. +#: ui/aboutDialog.ui:100 +msgctxt "aboutDialog|" +msgid " Classified ads is a program for online communications" +msgstr " Classified ads (rubrikannoncer) er et program til kommunikation på nettet" + +# The long explanation of classified ads inside about-dialog. Note that this text must be valid html. Needs to start with and end with etc. This is easiest to edit like this: copy-paste the content in to a file, say /tmp/about.html. Then either open your favourite html-editor or open classified ads. In classified ads you can start constructing an ad, select from file-menu "open.." and select this file ;do editing and save from file-menu. The saved file is immediately in correct format to be be copy-pasted into contents of this field. +#: ui/aboutDialog.ui:160 +#| msgid "" +#| "

Classified ads is free software. You may use, copy " +#| "and modify it if you follow the conditions given in GNU lesser general " +#| "public license version 2.1.

Classified ads is copyright © Antti " +#| "Järvinen 2013.

Main feature of the the program is an " +#| ""advertisement" - a piece of text belonging to selected " +#| "classification. There are several pre-programmed classifications and " +#| "operators are encouraged to invent new classifications for new purposes ; " +#| "the selection boxes in classification-selection tab are editable. Other " +#| "operators may then view the ads, publicly comment the ads, the operators " +#| "and also send private messages to each others.

Another important " +#| "feature of classified ads is that it is designed to be operated without " +#| "any centralized server infrastucture - it is you and other operators " +#| "whose computers store and transmit all the content visible inside " +#| "classified ads. To get connected you need to know address of at least one " +#| "existing computer (a node) so " +#| "if your network connection dialog shows no connections, you may need to " +#| "contact someone you know is using the software and ask for address of her " +#| "node to make initial contact with the network. Once connected the " +#| "software should maintain list of addresses of other nodes.

Due to " +#| "its server-less design the whole system works best if you leave the " +#| "program running always when you have your computer powered on ; while " +#| "processing other operators requests it will hog some computing resources " +#| "and generate network traffic also when you are not actively using the " +#| "program youself - others are.

Operators concerned about privacy of " +#| "the content should be aware of following items:

- Data storage " +#| "implementation is variant of distributed hash table, practically meaning " +#| "that content posted by you gets copied some more-or-less random nodes in " +#| "the network.

- Any data item (ad, comment, binary file, private " +#| "message etc.) is digitally signed. This makes it more difficult to try to " +#| "pose as another operator.

- Operators are reliably identified only " +#| "by the SHA1 hash of their generated encryption keys. SHA1 hash is " +#| "displayed when viewing details of operator profiles. Other identifying " +#| "information like nickname or city name are entered by operator himself " +#| "and can be anything. The operator profile, as it is published to the " +#| "network, is also signed with the encryption keys of the operator - if you " +#| "identify an operator by her SHA1 hash, you have a mechanism for " +#| "identifying if any content inside classified ads is posted by this " +#| "operator or not. Classified ads internally checks for digital signatures, " +#| "throwing away content that fails signature check and tries to provide " +#| "SHA1 hash of the operator who posted the content.

- All classified " +#| "ads are posted as plain text, no encryption is used. All public profiles " +#| "are posted as plain text, no encryption is used. If profile is made " +#| "private, it is encrypted to be readable only by selected other profiles. " +#| "This applies also to binary files shared by operators private profiles " +#| "and comments about private profiles after the profile was made private " +#| "(previously plain-text comments or files don't get magically encrypted " +#| "afterwards). Private messages are encrypted always to be readable only by " +#| "recipient and sender. Attachments follow the privary rules of the " +#| "document, they're attachted to.

- As is the case with all " +#| "internet-communications, this small fact is true for classified ads too : " +#| "once something gets posted online, " +#| "there is no way to remove it from network.

- Data " +#| "encryption implementation for content is OpenSSL, relying mostly on " +#| "algorithms RSA-2048 and AES-256.

- While connections between nodes " +#| "are implemented using SSL, other nodes inside network do get to know what " +#| "content is being transmitted in neighboring nodes. While there is no " +#| "central point for easily collecting this information about particular " +#| "classification or operator, operators still should expect no privacy " +#| "regarding their doings online, altough some effort has been been put into " +#| "hiding contents of private " +#| "messages and private profiles.

Programming was (mostly) done by " +#| "Antti Järvinen, artwork by Meeri Järvinen.

This product includes " +#| "software developed by the OpenSSL Project for use in the OpenSSL Toolkit " +#| "(http://www.openssl.org/).

Happy " +#| "advertising!


" +msgctxt "aboutDialog|" +msgid "" +"

Classified ads is free software. You may use, copy and " +"modify it if you follow the conditions given in GNU lesser general public " +"license version 2.1.

Classified ads is copyright © Antti Järvinen " +"2013.

Main feature of the the program is an "advertisement" " +"- a piece of text belonging to selected classification. There are several " +"pre-programmed classifications and operators are encouraged to invent new " +"classifications for new purposes ; the selection boxes in " +"classification-selection tab are editable. Other operators may then view the " +"ads, publicly comment the ads, the operators and also send private messages " +"to each others.

Another important feature of classified ads is that " +"it is designed to be operated without any centralized server infrastucture - " +"it is you and other operators whose computers store and transmit all the " +"content visible inside classified ads. To get connected you need to know " +"address of at least one existing computer (a node) so if your network connection dialog shows " +"no connections, you may need to contact someone you know is using the " +"software and ask for address of her node to make initial contact with the " +"network. Once connected the software should maintain list of addresses of " +"other nodes.

Due to its server-less design the whole system works " +"best if you leave the program running always when you have your computer " +"powered on ; while processing other operators requests it will hog some " +"computing resources and generate network traffic also when you are not " +"actively using the program youself - others are.

Operators concerned " +"about privacy of the content should be aware of following items:

- " +"Data storage implementation is variant of distributed hash table, practically meaning that " +"content posted by you gets copied some more-or-less random nodes in the " +"network.

- Any data item (ad, comment, binary file, private message " +"etc.) is digitally signed. This makes it more difficult to try to pose as " +"another operator.

- Operators are reliably identified only by the " +"SHA1 hash of their generated encryption keys. SHA1 hash is displayed when " +"viewing details of operator profiles. Other identifying information like " +"nickname or city name are entered by operator himself and can be anything. " +"The operator profile, as it is published to the network, is also signed with " +"the encryption keys of the operator - if you identify an operator by her " +"SHA1 hash, you have a mechanism for identifying if any content inside " +"classified ads is posted by this operator or not. Classified ads internally " +"checks for digital signatures, throwing away content that fails signature " +"check and tries to provide SHA1 hash of the operator who posted the " +"content.

- All classified ads are posted as plain text, no encryption " +"is used. All public profiles are posted as plain text, no encryption is " +"used. If profile is made private, it is encrypted to be readable only by " +"selected other profiles. This applies also to binary files shared by " +"operators private profiles and comments about private profiles after the " +"profile was made private (previously plain-text comments or files don't get " +"magically encrypted afterwards). Private messages are encrypted always to be " +"readable only by recipient and sender. Attachments follow the privary rules " +"of the document, they're attachted to.

- As is the case with all " +"internet-communications, this small fact is true for classified ads too : " +"once something gets posted online, there " +"is no way to remove it from network.

- Data encryption " +"implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 " +"and AES-256.

- While connections between nodes are implemented using " +"SSL, other nodes inside network do get to know what content is being " +"transmitted in neighboring nodes. While there is no central point for easily " +"collecting this information about particular classification or operator, " +"operators still should expect no privacy regarding their doings online, " +"although some effort has been been put into hiding contents of private messages and private " +"profiles.

Programming was (mostly) done by Antti Järvinen, artwork by " +"Meeri Järvinen.

This product includes software developed by the " +"OpenSSL Project for use in the OpenSSL Toolkit " +"(http://www.openssl.org/).

Happy " +"advertising!


" +msgstr "" +"

Classified ads er et frit program. Du må bruge, kopiere " +"og ændre programmet, hvis du følger betingelser i GNU lesser general public " +"license version 2.1.

Classified ads har ophavsret Antti Järvinen " +"2013.

Hovedfunktionen i programmet er en "rubrikannonce" " +"- et stykke tekst tilhørende udvalgte klassifikationer. Der er flere " +"forprogrammerede klassifikationer og operatører opfordres til at finde på " +"nye klassifikationer for nye formål ; boksene med valgmuligheder i " +"klassifikation-valg-fanebladene kan redigeres. Andre operatører kan så se " +"annoncerne, offentligt kommentere annoncerne, operatørerne og også sende " +"private beskeder til hinanden.

En anden vigtig funktion i classified " +"ads er, at det er designet til at fungere uden en centraliseret " +"serverinfrastruktur - det er dig og andre operatører hvis computere lagrer og " +"sender alt indhold synligt inden i rubrikannoncerne. For at blive tilsluttet " +"skal du kende adressen på mindst en eksisterende computer (en knude), så hvis din netværksforbindelsesdialog " +"ikke viser nogen forbindelser, så skal du kontakte nogen som du ved bruger " +"programmet og anmode om adressen for at foretage opstartskontakten med " +"netværket. Når først forbundet vedligeholder programmet en adresseliste over " +"andre knuder.

På grund af sit design fungerer hele systemet bedst hvis " +"du lader programmer køre hele tiden, mens din computer er tændt ; under " +"behandling af andre operatørforespørgsler vil programmet bruge nogle " +"beregningsressoucer og oprette netværkstrafik, også når du ikke aktivt " +"bruger selve programmet - andre gør.

Operatører som tænker på " +"privatliv for indholdt skal være opmærksom på følgende:

- " +"Datalagerimplementationen er en variant af en distribueret hash-tabel, hvilket i praksis " +"betyder, at indhold indsendt af dig bliver kopieret via mere eller mindre " +"vilkårlige knuder i netværket.

- Alle dataposter (annonce, kommentar, " +"binær fil, privat besked etc.) er digitalt underskrevet. Dette gør det " +"svært at udgive sig for at være en anden operatør

- Operatører " +"kan kun identificeres troværdigt med SHA1-hash for deres oprettede " +"krypteringsnøgler. SHA1-hash vises, når der kigges på detaljer for " +"operatørprofiler. Anden identifikationsinformation såsom øgenavn eller " +"bynavn indtastes selv af operatøren og kan være alt. Operatørprofilen, " +"som den udgives på netværket, er også underskrevet med krypteringsnøglerne " +"for operatøren - hvis du identificerer en operatør via dennes SHA1-hash, " +"så har du en mekanisme til at identificere om indhold i rubrikannoncer " +"er indsendt af denne operatør eller ej. Classified ads kontrollerer internt " +"for digitale underskrifter, og smider indhold væk som mangler kontrol af " +"underskrift og forsøger at tilbyde SHA1-hash for operatøren som indsendte " +"indholdet.

- Alle rubrikannoncer indsendes som ren tekst, ingen " +"kryptering anvendes. Alle offentlige profiler indsendes som ren tekst, ingen " +"kryptering anvendes. Hvis profilen gøres privat, så krypteres den, så den kun " +"kan læses af profiler valgt af dig. Dette gælder også for binære filer delt " +"af operatørers private profiler og kommentarer om private profiler efter " +"profilen blev gjort privat (tidligere kommentarer eller filer i ren tekst " +"bliver ikke krypteret efterfølgende). Private beskeder krypteres altid for " +"kun at kunne læses af modtager og afsender. Vedhæftninger følger " +"privatlivsreglerne for dokumentet, de er vedhæftet.

- Som med al anden " +"internetkommunikation, så gælder det også for classified ads, at : " +"når først udgivet på nettet, så er der " +"ingen måde at fjerne det igen fra netværket.

- " +"Datakrypteringsimplementering for indhold er OpenSSL, afhængig hovedsagelig " +"af algoritmerne RSA-2048 og AES-256.

- Mens forbindelser mellem " +"knuder er implementeret via SSL, så får andre knuder inden i netværk ikke " +"at vide hvilket indhold, der sendes i nærliggende knuder. Selv om der ikke " +"er et centralt sted for nem indsamling af denne information om bestemt " +"klassifikation eller operatør, så skal operatører stadig ikke forvente " +"privatliv vedrørende deres virke på nettet, selvom der er gjort en indsats " +"for at skjule indhold i " +"private beskeder og private profiler.

Programmeringen blev " +"(hovedsagelig) udført af Antti Järvinen, grafik af Meeri Järvinen.

" +"

Dette prdukt inkluderer et program udviklet af OpenSSL-projektet for " +"brug i OpenSSL-værktøjssættet (http://www.openssl.org/).

Happy " +"advertising!


" + +# Dialog title text. Dialog in question produces list of file attachments. +#: ui/attachmentListDialog.ui:26 +msgctxt "attachmentListDialog|" +msgid "List of attached files" +msgstr "Liste over vedhæftede filer" + +# Dialog title text. Purpose of the dialog is to let user change properties of a frequent contact in contact-list. +#: ui/editContact.ui:26 +msgctxt "editContactDialog|" +msgid "Edit a contact" +msgstr "Rediger en kontakt" + +# Text field label in contact-editing dialog. This gives label for field that shows SHA1 fingerprint of the operator whose data is being edited +#: ui/editContact.ui:39 +msgctxt "editContactDialog|" +msgid "Address (SHA1) of contact" +msgstr "Adresse (SHA1) for kontakt" + +# Text field label in contact-editing dialog. This gives label for field that shows nickname of the operator whose data is being edited +#: ui/editContact.ui:53 +msgctxt "editContactDialog|" +msgid "Local nickname" +msgstr "Lokalt øgenavn" + +# Tooltip text of a checkbox label in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. Note html format. +#: ui/editContact.ui:65 +msgctxt "editContactDialog|" +msgid "" +"

Settings some trusted is public information to readers " +"of your profile

" +msgstr "" +"

Angivelse af nogle som troværdige er offentlig information " +"for læsere af din profil

" + +# Label of a checkbox in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. +#: ui/editContact.ui:68 +msgctxt "editContactDialog|" +msgid "This contact is to be publicly trusted in transactions" +msgstr "Denne kontakt er troværdig i transaktioner" + +# Name of front widget. Wild guess is that this text actually does not appear anywhere in the UI. +#: frontWidget.ui:14 +msgctxt "frontWidget|" +msgid "Form" +msgstr "Formular" + +# Tab title text in front widget. When user clicks in this tab, the view is switched to one, that lists classified ads. +#: frontWidget.ui:39 +msgctxt "frontWidget|" +msgid "Classified ads" +msgstr "Rubrikannoncer" + +# Prompt text next "search" button. User is supposed to enter search criteria for classified ads and then click "search" ; this is prompt text for this behaviour. +#: frontWidget.ui:67 +msgctxt "frontWidget|" +msgid "Search for classified ads about" +msgstr "Søg efter rubrikannoncer om" + +# Prompt text very next to "search" button. After user has clicked the button, he is supposed to be viewing list of classified ads matching the search criteria. +#: frontWidget.ui:74 +msgctxt "frontWidget|" +msgid "Perform" +msgstr "Udfør" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 2nd word in that phrase. +#: frontWidget.ui:97 +msgctxt "frontWidget|" +msgid "of" +msgstr "af" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 4th word in that phrase. +#: frontWidget.ui:113 +msgctxt "frontWidget|" +msgid "in" +msgstr "i" + +# Button text for button used to search for classified ads. This button has text "perform" just next to it so user sees actually 2 words "perform search" where the "perform" is in separate label above the button, and then is the text of this button. +#: frontWidget.ui:123 +msgctxt "frontWidget|" +msgid "Search" +msgstr "Søg" + +# Tab title text in front widget for tab that shows details of operators own profile (==personal details) +#: frontWidget.ui:161 +msgctxt "frontWidget|" +msgid "My profile" +msgstr "Min profil" + +# Text field label in "operators profile" tab. The field in questions shows SHA1-digest e.g. the real address of the operator. +#: frontWidget.ui:177 frontWidget.ui:932 +msgctxt "frontWidget|" +msgid "Profile address" +msgstr "Profiladresse" + +# Text field label in "operators profile" tab. The field in questions shows nickname of the operator +#: frontWidget.ui:208 frontWidget.ui:643 +msgctxt "frontWidget|" +msgid "Nickname" +msgstr "Øgenavn" + +# Text field label in "operators profile" tab. The field in questions shows "hello world" text of the operator. +#: frontWidget.ui:225 frontWidget.ui:669 +msgctxt "frontWidget|" +msgid "Greeting text" +msgstr "Velkomsttekst" + +# Tooltip-text of a text field in "operators profile" tab. The field in questions shows greeting text of the operator. +#: frontWidget.ui:232 +msgctxt "frontWidget|" +msgid "For the rest of the world. " +msgstr "For resten af verdenen. " + +# Text field label in "operators profile" tab. The field in questions shows given name (first name) of the operator. +#: frontWidget.ui:239 frontWidget.ui:695 +msgctxt "frontWidget|" +msgid "First name" +msgstr "Fornavn" + +# Text field label in "operators profile" tab. The field in questions shows family name of the operator +#: frontWidget.ui:253 frontWidget.ui:715 +msgctxt "frontWidget|" +msgid "Family name" +msgstr "Familienavn" + +# Text field label in "operators profile" tab. The field in questions shows place of residence of the operator +#: frontWidget.ui:263 +msgctxt "frontWidget|" +msgid "City/country" +msgstr "By/land" + +# Text field label in "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:273 +msgctxt "frontWidget|" +msgid "BTC address" +msgstr "BTC-adresse" + +# Tooltip-text for a text field "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:280 +msgctxt "frontWidget|" +msgid "If you wish to receive payments via BTC, include your BTC address too." +msgstr "Hvis du ønsker at modtage betalinger via BTC, så inkluder også din BTC-adresse." + +# Text field label in "operators profile" tab. The field in questions shows what the user has to say about state of the world. +#: frontWidget.ui:287 frontWidget.ui:799 +msgctxt "frontWidget|" +msgid "State of the world" +msgstr "Verdens tilstand" + +# Tool-tip text of a field in "operators profile" tab. The field in questions shows what operator has to say about state of the world. +#: frontWidget.ui:294 +msgctxt "frontWidget|" +msgid "Longer explanation about state of the world" +msgstr "Længere forklaring om verdens tilstand" + +# Checkbox text in "my profile" tab. The checkbox is question is a toggle for public/private status of the profile. When checkbox is checked, the profile will be made private. +#: frontWidget.ui:301 +msgctxt "frontWidget|" +msgid "Profile is private" +msgstr "Profil er privat" + +# Button text inside "My profile" tab. Clicking the button opens a dialog that prompts user to select list of operators that can read his profile that he has previously marked as private (e.g. accessible only to listed readers) +#: frontWidget.ui:308 +msgctxt "frontWidget|" +msgid "Readers of profile" +msgstr "Læsere af profil" + +# Explanation text inside "my profile" tab. +#: frontWidget.ui:315 +msgctxt "frontWidget|" +msgid "None of the fields is mandatory" +msgstr "Ingen af felterne er krævet" + +# Text field label inside "my profile" tab. The field whose label this is shows the time when profile was last updated. +#: frontWidget.ui:322 +msgctxt "frontWidget|" +msgid "Time of last update" +msgstr "Tidspunkt for sidste opdatering" + +# Button text for button inside "my profile" tab. By clicking this button user makes her edits known to rest of the world. +#: frontWidget.ui:342 +msgctxt "frontWidget|" +msgid "Publish" +msgstr "Offentliggør" + +# Button text for button inside "my profile" tab. By clicking this button user discards her edits. +#: frontWidget.ui:355 +msgctxt "frontWidget|" +msgid "Revert changes" +msgstr "Fortryd ændringer" + +# Text label on top of "my profile" tab. Below this label is a list of text fields and other stuff that user may edit regarding herself. +#: frontWidget.ui:369 +msgctxt "frontWidget|" +msgid "Details of operator profile:" +msgstr "Detaljer for operatørprofil:" + +# Text in image-placeholder inside "my profile" tab. When user has not selected any image for her profile details, this text is shown in place of the image. Clicking on text gives user option to select the image file for profile. +#: frontWidget.ui:401 +msgctxt "frontWidget|" +msgid "" +"\n" +"\n" +"Click \n" +"to \n" +"Add\n" +"Image" +msgstr "" +"\n" +"\n" +"Klik \n" +"for \n" +"at\n" +"tilføje\n" +"billede" + +# Title text inside "my profile" tab. Title text is for a list of files that user is currently sharing with other users. +#: frontWidget.ui:425 frontWidget.ui:845 +msgctxt "frontWidget|" +msgid "Shared files" +msgstr "Delte filer" + +# Title text inside "my profile" tab. Title text is for a list of comments made by other users regarding operators profile. +#: frontWidget.ui:461 frontWidget.ui:892 +msgctxt "frontWidget|" +msgid "Latest comments" +msgstr "Seneste kommentarer" + +# Tab title text. When this tab is opened, user is shown a view of his frequent contacts. +#: frontWidget.ui:504 +msgctxt "frontWidget|" +msgid "Contacts" +msgstr "Kontakter" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to enter details of operator to be added into contact list +#: frontWidget.ui:536 +msgctxt "frontWidget|" +msgid "Add contact" +msgstr "Tilføj kontakt" + +# Button text inside "contacts" tab. Clicking this button removes a contact from list. +#: frontWidget.ui:543 +msgctxt "frontWidget|" +msgid "Remove contact" +msgstr "Fjern kontakt" + +# Button text inside "contacts" tab. Clicking this button displays details of the selected contact. +#: frontWidget.ui:550 +msgctxt "frontWidget|" +msgid "View profile" +msgstr "Vis profil" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to send a message selected contact. +#: frontWidget.ui:557 +msgctxt "frontWidget|" +msgid "Send message" +msgstr "Send besked" + +# Tab text in front widget. When user selects this tab, he is presented with list of his private correspondence. +#: frontWidget.ui:569 +msgctxt "frontWidget|" +msgid "Private messages" +msgstr "Private beskeder" + +# Tab text in front widget. This tab shows details of some other operator of classified ads. Normally this text is replaced with nickname of the operator but if nothing like this is available, this text may be shown, this is the "default text". +#: frontWidget.ui:624 +msgctxt "frontWidget|" +msgid "Profile details" +msgstr "Profildetaljer" + +# Label text of a text-field. The text-field in question shows place of residence of operator whose details are on display. +#: frontWidget.ui:741 +msgctxt "frontWidget|" +msgid "City/Country" +msgstr "By/land" + +# Label text of a text-field. The text-field in question shows bitcoin wallet address of operator whose details are on display. +#: frontWidget.ui:767 +msgctxt "frontWidget|" +msgid "BTC Addr" +msgstr "BTC-adresse" + +# Text for image-placeholder inside "profile details" tab. When some particular operator has not selected any image for her profile, this text is shown in place of the image. Note html format. +#: frontWidget.ui:829 +msgctxt "frontWidget|" +msgid "" +"




No

Image

Inserted

" +msgstr "" +"




Intet

billede

indsat

" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a new-message editor is opened. +#: frontWidget.ui:874 +msgctxt "frontWidget|" +msgid "Send message to operator" +msgstr "Send besked til operatør" + +# Button text inside "defails of operator profile" tab. When the button is clicked, dialog listing readers of the (private) profile. +#: frontWidget.ui:879 +msgctxt "frontWidget|" +msgid "View readers" +msgstr "Vis læsere" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a dialog is opened, dialog prompts user to enter a comment about the operator. +#: frontWidget.ui:927 +msgctxt "frontWidget|" +msgid "Comment" +msgstr "Kommentar" + +# Button text inside "defails of operator profile" tab. When the button is clicked, the operator whose data is on display is added into contact-list. +#: frontWidget.ui:959 +msgctxt "frontWidget|" +msgid "Add to contacts" +msgstr "Tilføj til kontakter" + +# Dialog title text. Dialog is for adding a link to text being edited. +#: ui/insertLink.ui:26 +msgctxt "insertLinkDialog|" +msgid "Insert link" +msgstr "Indsæt henvisning" + +# Label for a combobox-field inside "insert link" dialog. Next to this label is set of fields that together make up a valid URL to be inserted. +#: ui/insertLink.ui:39 +msgctxt "insertLinkDialog|" +msgid "URL" +msgstr "Adresse" + +# Label for a text-field inside "insert link" dialog. Next to this label is field where user is supposed the text that will be shown as the link. Consider
the text then "the text" is text that user is prompted to enter with this label. +#: ui/insertLink.ui:112 +msgctxt "insertLinkDialog|" +msgid "Link label in text" +msgstr "Lænk etiket i tekst" + +# Dialog title text. Dialog prompts user to manually add a network-connection to another node in the network. +#: ui/manualConnectionDialog.ui:26 +msgctxt "manualConnectionDialog|" +msgid "Manually add node to connection queue" +msgstr "Tilføj manuelt knude til forbindelseskø" + +# Label text of numeric field. The numeric (input) field is TCP port of the remote node that will be connected. +#: ui/manualConnectionDialog.ui:48 +msgctxt "manualConnectionDialog|" +msgid "Remote node listen port" +msgstr "Ekstern knudes lytteport" + +# Label for text field inside "manually add connection" dialog. Text field whose label this is requires user to type in network address (ip addr or dns name) of the remote node. +#: ui/manualConnectionDialog.ui:78 +msgctxt "manualConnectionDialog|" +msgid "Remote node network address" +msgstr "Ekstern knudes netværksadresse" + +# Tooltip text for a text field inside "manually add connection" dialog. The text field whose tooltip this is the remote network address input field. +#: ui/manualConnectionDialog.ui:91 +msgctxt "manualConnectionDialog|" +msgid "IPv4, IPv6 or DNS name" +msgstr "IPv4-, IPv6- eller DNS-navn" + +# Dialog title text for dialog that requires user to enter information about file to be shared with others. Metadata query dialog in practice. +#: ui/metadataQuery.ui:26 +msgctxt "metadataQuery|" +msgid "File information" +msgstr "Filinformation" + +# Label text for a input field. The input field whose label this is asks for file name (filesystem file name) +#: ui/metadataQuery.ui:60 +msgctxt "metadataQuery|" +msgid "Name of the file:" +msgstr "Filens navn:" + +# Label text for a input field. The input field whose label this is asks for owner of the file contents. This may be copyright holder, depending on contracts and legislation followed. +#: ui/metadataQuery.ui:81 +msgctxt "metadataQuery|" +msgid "Owner of file (name or SHA1 if CA operator):" +msgstr "Filens ejer (navn eller SHA1 hvis CA-operatør):" + +# Label text for a input field. The input field whose label this is asks for license under which the file may be used. Combobox lists some pre-filled options like GPL,BSD,CC-BY etc. but user may also enter any text into field. +#: ui/metadataQuery.ui:111 +msgctxt "metadataQuery|" +msgid "License of use:" +msgstr "Licens:" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:122 +msgctxt "metadataQuery|" +msgid "Public domain" +msgstr "Offentlig domæne" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:127 +msgctxt "metadataQuery|" +msgid "GPL" +msgstr "GPL" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:132 +msgctxt "metadataQuery|" +msgid "LGPL" +msgstr "LGPL" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:137 +msgctxt "metadataQuery|" +msgid "BSD" +msgstr "BSD" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:142 +msgctxt "metadataQuery|" +msgid "CC-BY" +msgstr "CC-BY" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:147 +msgctxt "metadataQuery|" +msgid "CC-BY-SA" +msgstr "CC-BY-SA" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:152 +msgctxt "metadataQuery|" +msgid "CC-BY-ND" +msgstr "CC-BY-ND" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:157 +msgctxt "metadataQuery|" +msgid "CC-BY-NC" +msgstr "CC-BY-NC" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:162 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-SA" +msgstr "CC-BY-NC-SA" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:167 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-ND" +msgstr "CC-BY-NC-ND" + +# Label text for a input field. The input field whose label this is asks for mime-type of the field about to be published. +#: ui/metadataQuery.ui:182 +msgctxt "metadataQuery|" +msgid "Mime-type:" +msgstr "Mime-type:" + +# Label text for a input field. The input field whose label this is asks for descriptive text about file about to be published. +#: ui/metadataQuery.ui:199 +msgctxt "metadataQuery|" +msgid "Description of file:" +msgstr "Filens beskrivelse:" + +# Prompt text on top of "metadata query" dialog. Below this label is set of input-fields that make up the meta-data of a file to be published. +#: ui/metadataQuery.ui:218 +msgctxt "metadataQuery|" +msgid "Enter information regarding file before publish:" +msgstr "Indtast information om filen før udgivelse:" + +# Dialog title text for a dialog that offers possibility to post a new classified ad for others to read. +#: ui/newClassifiedAd.ui:26 +msgctxt "newCaDialog|" +msgid "Post a new classified ad" +msgstr "Indsend en ny rubrikannonce" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the first word in that sentece. +#: ui/newClassifiedAd.ui:47 +msgctxt "newCaDialog|" +msgid "About" +msgstr "Om" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 3rd word in that sentece. +#: ui/newClassifiedAd.ui:65 +msgctxt "newCaDialog|" +msgid "of" +msgstr "af" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 5th word in that sentece. +#: ui/newClassifiedAd.ui:81 +msgctxt "newCaDialog|" +msgid "in" +msgstr "i" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, requires user to enter a subject (topic) for her posting. +#: ui/newClassifiedAd.ui:95 +msgctxt "newCaDialog|" +msgid "Subject" +msgstr "Emne" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newClassifiedAd.ui:129 +msgctxt "newCaDialog|" +msgid "Attachment: " +msgstr "Vedhæftelse: " + +# Push-button text inside "post a new classified ad" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newClassifiedAd.ui:149 +msgctxt "newCaDialog|" +msgid "Add" +msgstr "Tilføj" + +# Dialog title text for dialog that prompts user to edit+send a private message to another operator +#: ui/newPrivMsg.ui:26 +msgctxt "newPrivMsgDialog|" +msgid "Send a private message" +msgstr "Send en privat besked" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is "subject" or "topic" field of the message. +#: ui/newPrivMsg.ui:39 +msgctxt "newPrivMsgDialog|" +msgid "Subject" +msgstr "Emne" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is SHA1 address of the recipient. +#: ui/newPrivMsg.ui:53 +msgctxt "newPrivMsgDialog|" +msgid "Recipient" +msgstr "Modtager" + +# Label text of a text field inside "compose a new private message" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newPrivMsg.ui:83 +msgctxt "newPrivMsgDialog|" +msgid "Attachments: " +msgstr "Vedhæftninger: " + +# Push-button text inside "compose a new private message" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newPrivMsg.ui:103 +msgctxt "newPrivMsgDialog|" +msgid "Attach" +msgstr "Vedhæft" + +# Dialog title text for dialog that prompts user to edit+send a comment regarding another operator. +#: ui/newProfileComment.ui:26 +msgctxt "newProfileCommentDialog|" +msgid "Comment a operators profile" +msgstr "Lav en kommentar til en operatørs profil" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is "subject" or "topic" field of the comment. +#: ui/newProfileComment.ui:39 +msgctxt "newProfileCommentDialog|" +msgid "Subject" +msgstr "Emne" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is SHA1 digest (address) of the operator being commented. +#: ui/newProfileComment.ui:53 +msgctxt "newProfileCommentDialog|" +msgid "Commented profile" +msgstr "Kommenteret profil" + +# Label text of a text field inside "compose a comment about operator dialog" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newProfileComment.ui:89 +msgctxt "newProfileCommentDialog|" +msgid "Attachments:" +msgstr "Vedhæftninger:" + +# Push-button text inside "compose a comment about operator dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newProfileComment.ui:109 +msgctxt "newProfileCommentDialog|" +msgid "Attach" +msgstr "Vedhæft" + +# Dialog title text for a dialog that prompts user to edit+publish a text document. +#: ui/newTextDocument.ui:26 +msgctxt "newTextDocumentDialog|" +msgid "Edit and publish a new text document" +msgstr "Rediger og udgiv et nyt tekstdokument" + +# Text field label for input field inside "compose a new text document" dialog. The text field in question is "subject" or "topic" field of the text document. +#: ui/newTextDocument.ui:39 +msgctxt "newTextDocumentDialog|" +msgid "Document title" +msgstr "Dokumenttitel" + +# Label text of a text field inside "edit+publish a new text document dialog" dialog. The input field whose label this is, will show name file that is attached to the document. +#: ui/newTextDocument.ui:75 +msgctxt "newTextDocumentDialog|" +msgid "Attachments:" +msgstr "Vedhæftninger:" + +# Push-button text inside "edit+publish a new text document dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newTextDocument.ui:95 +msgctxt "newTextDocumentDialog|" +msgid "Attach" +msgstr "Vedhæft" + +# Dialog title text for dialog that will show a listing of previous comments regarding operator (user himself or some other operator, it is the same dialog in both cases) +#: ui/profileCommentDisplay.ui:26 +msgctxt "profileCommentDisplay|" +msgid "Comments regarding operator" +msgstr "Kommentarer om operatør" + +# Dialog title text for a dialog that prompts user to choose operators who will be able to read details, comments and shared files of his profile. +#: ui/profileReadersDialog.ui:26 +msgctxt "profileReadersDialog|" +msgid "Profile readers list" +msgstr "Liste med profillæsere" + +# Text field label inside "add profiles to list of readers" dialog. The text field whose prompt this is asks for search-words to be used to filter operator names/addresses from database. +#: ui/profileReadersDialog.ui:37 +msgctxt "profileReadersDialog|" +msgid "Search for profiles to add" +msgstr "Søg efter profiler at tilføje" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is will list operators whose nickname,name or other search-term matches conditions entered by user. +#: ui/profileReadersDialog.ui:44 +msgctxt "profileReadersDialog|" +msgid "First 100 matching profiles:" +msgstr "Første 100 matchende profiler:" + +# Push-button label inside "add profiles to list of readers" dialog. When user hits this button, operators that are selected from neighboring list will be added to list of readers of operators profile. +#: ui/profileReadersDialog.ui:66 +msgctxt "profileReadersDialog|" +msgid "Add seleted to list of readers" +msgstr "Tilføj valgte til listen med læsere" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is shows current list operators profiles readers. +#: ui/profileReadersDialog.ui:73 +msgctxt "profileReadersDialog|" +msgid "Current list of readers" +msgstr "Nuværende liste med læsere" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, the dialog is dismissed. +#: ui/profileReadersDialog.ui:90 +msgctxt "profileReadersDialog|" +msgid "Close" +msgstr "Luk" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, selected operators are removed from the list. +#: ui/profileReadersDialog.ui:109 +msgctxt "profileReadersDialog|" +msgid "Remove selected" +msgstr "Fjern valgte" + +# Dialog title-text for a search dialog. +#: ui/searchDisplay.ui:26 +msgctxt "searchDisplay|" +msgid "Search data storage" +msgstr "Søg datalager" + +# Label text of a text field inside "search" dialog. The text field in question requires user to enter one or more words that are then searched from all available (public) documents. +#: ui/searchDisplay.ui:60 +msgctxt "searchDisplay|" +msgid "Words:" +msgstr "Ord:" + +# Push button label inside "search" dialog. When button is hit, search using given words is performed. +#: ui/searchDisplay.ui:70 +msgctxt "searchDisplay|" +msgid "Search" +msgstr "Søg" + +# Check-box label inside "search" dialog. When box is checked, the search is done also in neighboring nodes in the network, not only in local storage. +#: ui/searchDisplay.ui:87 +msgctxt "searchDisplay|" +msgid "Network search" +msgstr "Netværkssøgning" + +# Check-box label inside "search" dialog. When box is checked, the search may include classified ads in its resultset. +#: ui/searchDisplay.ui:101 +msgctxt "searchDisplay|" +msgid "Search ads" +msgstr "Søg i annoncer" + +# Check-box label inside "search" dialog. When box is checked, the search may include operator profiles in its resultset. +#: ui/searchDisplay.ui:111 +msgctxt "searchDisplay|" +msgid "Search profiles" +msgstr "Søg i profiler" + +# Check-box label inside "search" dialog. When box is checked, the search may include profile commetns in its resultset. +#: ui/searchDisplay.ui:121 +msgctxt "searchDisplay|" +msgid "Search comments" +msgstr "Søg i kommentarer" + +# Dialog title text for "settings" dialog. +#: ui/settingsDialog.ui:26 +msgctxt "settingsDialog|" +msgid "Node settings" +msgstr "Knudeindstillinger" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:39 +msgctxt "settingsDialog|" +msgid "TCP listen port" +msgstr "TCP-lytteport" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:58 +msgctxt "settingsDialog|" +msgid "Incoming TCP listen port. Change requires node restart. " +msgstr "Indgående TCP-lytteport. Ændring kræver knudegenstart. " + +# Text field label for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:84 +msgctxt "settingsDialog|" +msgid "DNS name of node" +msgstr "DNS-navn på knuden" + +# Tooltip-text for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:91 +msgctxt "settingsDialog|" +msgid "" +"If you have permanent DNS name for your machine, you may type it here to be " +"used to reference your node" +msgstr "" +"Hvis du har et permanent DNS-navn for din maskine, så kan du indtaste det " +"her for brug som reference for din knude" + +# Text label inside "settings" dialog. Under this label is set of numerical input fields that user may use to adjust the amount of items he wishes to keep in his local storage. +#: ui/settingsDialog.ui:103 +msgctxt "settingsDialog|" +msgid "Data store limits:" +msgstr "Datalagerbegrænsning:" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of operator profiles to keep in storage. +#: ui/settingsDialog.ui:115 +msgctxt "settingsDialog|" +msgid "Nr of profiles to keep" +msgstr "Antal profiler at bevare" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of private messages to keep in storage. +#: ui/settingsDialog.ui:154 +msgctxt "settingsDialog|" +msgid "Nr of private messages to keep" +msgstr "Antal private beskeder at bevare" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of binary files to keep in storage. +#: ui/settingsDialog.ui:193 +msgctxt "settingsDialog|" +msgid "Nr of binary blobs to keep" +msgstr "Antal af binære blob'er at bevare" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:232 +msgctxt "settingsDialog|" +msgid "Nr of CAs to keep" +msgstr "Antallet af CA'er at bevare" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:251 +msgctxt "settingsDialog|" +msgid "" +"Number of classified ads to keep in storage, total, including all " +"classifications. Oldest referenced will be deleted first." +msgstr "" +"Antallet af rubrikannoncer i lageret, i alt, inklusive alle " +"klassifikationer. Dem med ældest reference slettes først." + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of comments regarding operators to keep in storage. +#: ui/settingsDialog.ui:274 +msgctxt "settingsDialog|" +msgid "Nr of profile comments to keep" +msgstr "Antallet af profilkommentarer at bevare" + +# Dialog title text for a dialog that shows network connectivity details. +#: ui/statusDialog.ui:26 +msgctxt "statusDialog|" +msgid "Network and connection status" +msgstr "Netværk- og forbindelsesstatus" + +# Text field label for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:48 +msgctxt "statusDialog|" +msgid "Detected own IPv4" +msgstr "Detekterede egen IPv4" + +# Tooltip-text for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:61 ui/statusDialog.ui:93 +msgctxt "statusDialog|" +msgid "" +"Should your friend have trouble connecting, give her this address with port " +"number" +msgstr "" +"Har din ven problemer med at forbinde, så giv vennen denne adresse med portnummer" + +# Text field label for display-item inside "network status" dialog. The display-item shows IPV6-address of the node. Usually it is (public) IPv6 addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:74 +msgctxt "statusDialog|" +msgid "IPv6" +msgstr "IPv6" + +# Text field label for display-item inside "network status" dialog. The display-item shows listen port of the node. +#: ui/statusDialog.ui:113 +msgctxt "statusDialog|" +msgid "TCP port currently used" +msgstr "TCP-port i brug" + +# Text field label for a list-item inside "network status" dialog. The list-item shows list of currently connected other nodes in the network. +#: ui/statusDialog.ui:151 +msgctxt "statusDialog|" +msgid "Currently open connections" +msgstr "Åbne forbindelser" + +# Push-button label for button inside "network status" dialog. When button is hit, another dialog is opened, asking user for details about the remote node to connect. +#: ui/statusDialog.ui:195 +msgctxt "statusDialog|" +msgid "Manually add connection" +msgstr "Tilføj manuelt en forbindelse" + +# Push-button label for button inside "network status" dialog. When button is hit, dialog is dismissed. +#: ui/statusDialog.ui:202 +msgctxt "statusDialog|" +msgid "Close" +msgstr "Luk" diff -Nru classified-ads-0.07/po/fi.po classified-ads-0.09/po/fi.po --- classified-ads-0.07/po/fi.po 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/po/fi.po 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,2606 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Language: fi_FI\n" +"X-Qt-Contexts: true\n" + +# Context menu item text for menu, that appears when right-mouse is clicked on top of a file in a list. +#: ui/attachmentlistdialog.cpp:60 +msgctxt "AttachmentListDialog|" +msgid "Save file to disk.." +msgstr "Tallenna tiedostojärjestelmälle.." + +# In file open dialog this is text specifying what kind of files to include in listing, filtered by file name suffix. For example, user wants only PNG files, then text appearing in dialog filter field would say "PNG files (*.png)" and this work "files" here is the word after the word PNG. +#: ui/attachmentlistdialog.cpp:151 ui/attachmentlistdialog.cpp:153 +msgctxt "AttachmentListDialog|" +msgid "files" +msgstr "tiedostot" + +# Dialog title text for dialog asking user to give a name to file for purpose of saving it to filesystem. +#: ui/attachmentlistdialog.cpp:155 +msgctxt "AttachmentListDialog|" +msgid "Choose file name for saving" +msgstr "Valitse nimi tiedostolle" + +# Dialog title text for error dialog. +#: ui/attachmentlistdialog.cpp:166 +msgctxt "AttachmentListDialog|" +msgid "Error" +msgstr "Vikaa" + +# This gives (no) explanation about reason for "file open failure"? +#: ui/attachmentlistdialog.cpp:167 +msgctxt "AttachmentListDialog|" +msgid "File open error" +msgstr "Vika tiedoston avaamisessa" + +# Title text in a listing view where list of shared files are listed. This particular text gives text for column, where "name or fingerprint of file" is listed. Fingerprint in practice means SHA1 digest. +#: datamodel/binaryfilelistingmodel.cpp:173 +msgctxt "BinaryFileListingModel|" +msgid "Name or fingerprint of file" +msgstr "Tiedoston nimi tai SHA1 tiiviste" + +# Header text for a column-list. The column that gets its header text from this string, is the date-column of an classified ad. +#: datamodel/calistingmodel.cpp:50 datamodel/calistingmodel.cpp:143 +msgctxt "CAListingModel|" +msgid "Date" +msgstr "Aika" + +# Header text for a column-list. The column that gets its header text from this string, is the subject-column of an classified ad. +#: datamodel/calistingmodel.cpp:51 datamodel/calistingmodel.cpp:142 +msgctxt "CAListingModel|" +msgid "Subject" +msgstr "Aihe" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:127 +msgctxt "ClassifiedAdsModel|" +msgid "Buying" +msgstr "Ostetaan" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:129 +msgctxt "ClassifiedAdsModel|" +msgid "Selling" +msgstr "Myydään" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Cars in Estonia" and this combobox text here is the first+2nd word of that phrase. +#: datamodel/camodel.cpp:131 +msgctxt "ClassifiedAdsModel|" +msgid "Giving away" +msgstr "Annetaan" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:133 +msgctxt "ClassifiedAdsModel|" +msgid "Wanting" +msgstr "Halutaan" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Renting of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:135 +msgctxt "ClassifiedAdsModel|" +msgid "Renting" +msgstr "Vuokrataan" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Cars in Estonia" and this combobox text here is the first word of that phrase. +#: datamodel/camodel.cpp:137 +msgctxt "ClassifiedAdsModel|" +msgid "Announcement" +msgstr "Ilmoitetaan" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Cars in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:210 +msgctxt "ClassifiedAdsModel|" +msgid "Cars" +msgstr "Autoja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Boats in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:212 +msgctxt "ClassifiedAdsModel|" +msgid "Boats" +msgstr "Veneitä" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Bikes in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:214 +msgctxt "ClassifiedAdsModel|" +msgid "Bikes" +msgstr "Pyöriä" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Other vehicles in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:216 +msgctxt "ClassifiedAdsModel|" +msgid "Other vehicles" +msgstr "Muita ajoneuvoja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of vehicle parts in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:218 +msgctxt "ClassifiedAdsModel|" +msgid "Vehicle parts" +msgstr "Ajoneuvon osia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Habitation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:220 +msgctxt "ClassifiedAdsModel|" +msgid "Habitation" +msgstr "Asumuksia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Household appliances in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:222 +msgctxt "ClassifiedAdsModel|" +msgid "Household appliances" +msgstr "Kodin tavaroita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Furniture in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:224 +msgctxt "ClassifiedAdsModel|" +msgid "Furniture" +msgstr "Huonekaluja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Clothing in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:226 +msgctxt "ClassifiedAdsModel|" +msgid "Clothing" +msgstr "Vaatteita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:228 +msgctxt "ClassifiedAdsModel|" +msgid "Tools" +msgstr "Työkaluja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Tools in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:230 +msgctxt "ClassifiedAdsModel|" +msgid "Sports" +msgstr "Urheiluvälineitä" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Music in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:232 +msgctxt "ClassifiedAdsModel|" +msgid "Music" +msgstr "Musiikkivälineitä" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Books in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:234 +msgctxt "ClassifiedAdsModel|" +msgid "Books" +msgstr "Kirjoja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Movies in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:236 +msgctxt "ClassifiedAdsModel|" +msgid "Movies" +msgstr "Elokuvia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Animals in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:238 +msgctxt "ClassifiedAdsModel|" +msgid "Animals" +msgstr "Eläimiä" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Electronics in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:240 +msgctxt "ClassifiedAdsModel|" +msgid "Electronics" +msgstr "Sähkölaitteita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Jobs in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:242 +msgctxt "ClassifiedAdsModel|" +msgid "Jobs" +msgstr "Työpaikkoja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Wanting of Transportation in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:244 +msgctxt "ClassifiedAdsModel|" +msgid "Transportation" +msgstr "Kuljetuksia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Buying of Services in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:246 +msgctxt "ClassifiedAdsModel|" +msgid "Services" +msgstr "Palveluita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Healthcare in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:248 +msgctxt "ClassifiedAdsModel|" +msgid "Healthcare" +msgstr "Terveydenhoitoa" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Foodstuff in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:250 +msgctxt "ClassifiedAdsModel|" +msgid "Foodstuff" +msgstr "Ruokatarvikkeita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Software in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:252 +msgctxt "ClassifiedAdsModel|" +msgid "Software" +msgstr "Ohjelmistoja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Events in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:254 +msgctxt "ClassifiedAdsModel|" +msgid "Events" +msgstr "Tapahtumia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Giving away of Education in Estonia" and this combobox text here is the 4th word of that phrase. +#: datamodel/camodel.cpp:256 +msgctxt "ClassifiedAdsModel|" +msgid "Education" +msgstr "Koulutusta" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Finance in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:258 +msgctxt "ClassifiedAdsModel|" +msgid "Finance" +msgstr "Raha-asioita" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Selling of Jewelry in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:260 +msgctxt "ClassifiedAdsModel|" +msgid "Jewelry" +msgstr "Koruja" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of religious rituals in Estonia" and this combobox text here is the 3rd+4th word of that phrase. +#: datamodel/camodel.cpp:262 +msgctxt "ClassifiedAdsModel|" +msgid "Religious rituals" +msgstr "Uskonnollisia toimituksia" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Estonia" and this combobox text here is the 3rd word of that phrase. +#: datamodel/camodel.cpp:264 +msgctxt "ClassifiedAdsModel|" +msgid "Philosophy" +msgstr "Filosofiaa" + +# Drop-down combobox-item text. This appears in context where the classification is selected. In UI there will be text like "Announcement of Philosophy in Any country" and this combobox text here is end part "Any country" specifying the location where announcement. +#: datamodel/camodel.cpp:908 +msgctxt "ClassifiedAdsModel|" +msgid "Any country" +msgstr "Missä maassa vain" + +# Tool tip text. When user hovers mouse cursor on top of network address field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:142 +msgctxt "ConnectionListingModel|" +msgid "Peer network address" +msgstr "Solmun verkko-osoite" + +# Tool tip text. When user hovers mouse cursor on top of field specifying if connection is inbound/outbound this text will appear. +#: datamodel/connectionlistingmodel.cpp:145 +msgctxt "ConnectionListingModel|" +msgid "Inbound connections are those where peer initiated connection" +msgstr "" +"Sisääntulevat yhteydet ovat sellaisia, missä etäjärjestelmä aloitti yhteyden" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:148 +msgctxt "ConnectionListingModel|" +msgid "Data transferred from peer to your node" +msgstr "Sinun tietokoneeseesi tästä solmusta siirretty tietomäärä" + +# Tool tip text. When user hovers mouse cursor on top of traffic-counter field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:151 +msgctxt "ConnectionListingModel|" +msgid "Data transferred to peer from your node" +msgstr "Sinun tietokoneestasi tähän verkon solmuun siirretty tietomäärä" + +# Tool tip text. When user hovers mouse cursor on top of time-field in a dialog, this text will appear. +#: datamodel/connectionlistingmodel.cpp:154 +msgctxt "ConnectionListingModel|" +msgid "Time when connection was opened" +msgstr "Yhteyden avaamisaika" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows network address (like IP-address) +#: datamodel/connectionlistingmodel.cpp:164 +msgctxt "ConnectionListingModel|" +msgid "Address" +msgstr "Verkko-osoite" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows direction (inbound/outbound) of the connection +#: datamodel/connectionlistingmodel.cpp:167 +msgctxt "ConnectionListingModel|" +msgid "Inbound" +msgstr "Sisääntuleva" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred inside +#: datamodel/connectionlistingmodel.cpp:170 +msgctxt "ConnectionListingModel|" +msgid "Bytes in" +msgstr "Oktettia sisään" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows number of bytes transferred outside +#: datamodel/connectionlistingmodel.cpp:173 +msgctxt "ConnectionListingModel|" +msgid "Bytes out" +msgstr "Oktettia ulos" + +# Column header text. Column view is used for listing network connections currently open, this text here gives title for column that shows time when connection was opened. +#: datamodel/connectionlistingmodel.cpp:176 +msgctxt "ConnectionListingModel|" +msgid "Open time" +msgstr "Avaamisaika" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the positive case "user is trusted". +#: datamodel/contactlistingmodel.cpp:73 +msgctxt "ContactListingModel|" +msgid "Yes" +msgstr "Tosi on" + +# Text in contact listing column view. This text appears in column telling if user is to be trusted or not and this value here denotes the negative case "user trust is unknown". +#: datamodel/contactlistingmodel.cpp:75 +msgctxt "ContactListingModel|" +msgid "Unknown" +msgstr "Tuntematon" + +# Tool tip text. When user hovers mouse cursor on top of field where operators SHA1 digest is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:98 +msgctxt "ContactListingModel|" +msgid "Actual network address (SHA1) of the contact" +msgstr "Operaattorin varsinainen verkko-osoite (SHA1)" + +# Tool tip text. When user hovers mouse cursor on top of field where operators locally given nickname is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:101 +msgctxt "ContactListingModel|" +msgid "Locally given nickname ; user may set her own nickname himself" +msgstr "Antamasi liikanimi; operaattori voi antaa itselleen eri liikanimen" + +# Tool tip text. When user hovers mouse cursor on top of field where operators trustworthiness (boolean value) in users opinion is shown, this text appears. The field is part of contact listing view, where users frequent contacts are shown. +#: datamodel/contactlistingmodel.cpp:104 +msgctxt "ContactListingModel|" +msgid "Public statement if this operator to be trusted in transactions" +msgstr "Julkinen lausunto operaattorin luotettavuudesta asioiden hoitamisessa" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators network address (the SHA digest of operator) +#: datamodel/contactlistingmodel.cpp:114 +msgctxt "ContactListingModel|" +msgid "Address" +msgstr "Osoite" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators nickname +#: datamodel/contactlistingmodel.cpp:117 +msgctxt "ContactListingModel|" +msgid "Nickname" +msgstr "Liikanimi" + +# Column header text. Used in column view where operators frequent contacts are shown. This text gives title to column that shows operators trustworthiness. +#: datamodel/contactlistingmodel.cpp:120 +msgctxt "ContactListingModel|" +msgid "Publicly trusted" +msgstr "Julkisesti luotettu" + +# Error message that is displayed when SSL key generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:86 +msgctxt "ContentEncryptionModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "SSL-avaimen rakentaminen epäonnistui, pakko poistua.." + +# Error message that is displayed when x509 certificate generation failed. Text is displayed in a dialog, after user dismisses the dialog, whole application will exit. +#: datamodel/contentencryptionmodel.cpp:94 +msgctxt "ContentEncryptionModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "x509-sertifikaatin rakentaminen epäonnistui, pakko poistua.." + +# Error message that is displayed when RSA private key could not be saved to database. This is rather fatal error, the operator profile that user tried to create will be un-usable. +#: datamodel/contentencryptionmodel.cpp:192 +#: datamodel/contentencryptionmodel.cpp:290 +msgctxt "ContentEncryptionModel|" +msgid "RSA Private key key saving went wrong" +msgstr "Salaisen RSA-avaimen tallettaminen epäonnistui" + +# Error message text. This is displayed in situation where user tried to access content that he does not have encryption key for. This may appear frequently during normal operation and is no fatal error, only telling user that he is not going to see the content he was trying to access. +#: datamodel/contentencryptionmodel.cpp:637 +msgctxt "ContentEncryptionModel|" +msgid "No suitable de-cryption key found" +msgstr "Avaamiseen sopivaa salausavainta ei ole käytettävissä" + +# Window title text for whole application. +#: controller.cpp:103 +msgctxt "Controller|" +msgid "Classified ads" +msgstr "Luokitellut ilmoitukset" + +# Prompt text for password dialog +#: controller.cpp:135 +msgctxt "Controller|" +msgid "Enter password for protection of your messages:" +msgstr "Anna salasana viestiesi sisällön turvaamiseksi" + +# Dialog text for a wait dialog (a progress-bar like thing will be shown next to this text and user is supposed to sit down and wait a moment..) +#: controller.cpp:405 +msgctxt "Controller|" +msgid "Fetching item from network.." +msgstr "Kaivellaan kohdetta verkon syövereistä.." + +# Menu item text used in "File" menu item and when this particular item is selected, application will close +#: controller.cpp:430 +msgctxt "Controller|" +msgid "E&xit" +msgstr "&Sulje" + +# Menu item tooltip-text used in "File" menu entry and when this particular item is selected, application will close +#: controller.cpp:432 +msgctxt "Controller|" +msgid "Exit the application" +msgstr "Sulje sovellus" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:434 +msgctxt "Controller|" +msgid "&About" +msgstr "&Tietoja" + +# Tooltip-text of menu item text used in "File" menu and when this particular item is selected, application will show a dialog telling why this application is and how to use it +#: controller.cpp:435 +msgctxt "Controller|" +msgid "Show the application's About box" +msgstr "Esitä selvitys sovelluksen tarkoituksesta" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:437 +msgctxt "Controller|" +msgid "&Change password" +msgstr "Vaihda salasana" + +# Tooltip-item for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to change her password +#: controller.cpp:438 +msgctxt "Controller|" +msgid "Change password of current profile" +msgstr "Valitse valitulle operaattori-profiilille uusi salasana" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:440 +msgctxt "Controller|" +msgid "Create &new profile" +msgstr "Luo uusi profiili" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password for a newly-created user profile +#: controller.cpp:441 +msgctxt "Controller|" +msgid "Makes a brand new user profile" +msgstr "Luo operaattorille uuden profiilin" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open operator profile +#: controller.cpp:443 +msgctxt "Controller|" +msgid "&Delete current profile" +msgstr "Poista valittu profiili" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to confirm deletion of currently open profile +#: controller.cpp:444 +msgctxt "Controller|" +msgid "Deletes currently open profile" +msgstr "Pysyvästi poistaa tämänhetkisen valitun profiilin" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:446 +msgctxt "Controller|" +msgid "&Select another profile" +msgstr "&Valitse käyttöön toinen profiilii" + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:447 +msgctxt "Controller|" +msgid "If you have multitude of profiles" +msgstr "Jos olet luonnut useamman profiilin, voit tästä valita toisen" + +# Menu item text used in "File" menu and when this particular item is selected, application will show a settings-dialog +#: controller.cpp:449 +msgctxt "Controller|" +msgid "Settings.." +msgstr "Asetukset.." + +# Tooltip-text for a menu item text used in "File" menu and when this particular item is selected, application will show a dialog prompting user to enter password of another profile that user will use next +#: controller.cpp:450 +msgctxt "Controller|" +msgid "Node-wide settings.." +msgstr "Solmun asetukset.." + +# Menu item text used in "File" menu and when this particular item is selected, application will show a dialog detailing network connectivity of the node +#: controller.cpp:452 +msgctxt "Controller|" +msgid "Network status.." +msgstr "Verkko-yhteydet.." + +# Menu item text used in "File" menu and when this particular item is selected, application will show a search-dialog +#: controller.cpp:454 +msgctxt "Controller|" +msgid "Search.." +msgstr "&Etsi.." + +# Menu bar title text for "File" menu. +#: controller.cpp:471 +msgctxt "Controller|" +msgid "&File" +msgstr "&Tiedosto" + +# Password dialog prompt. +#: controller.cpp:516 +msgctxt "Controller|" +msgid "Enter new password:" +msgstr "Anna uusi salasana:" + +# Password dialog prompt. In this case the password dialog is not used for giving initial password or change password but instead password is typed for the reason of selection of another operator profile to be used. +#: controller.cpp:544 controller.cpp:653 +msgctxt "Controller|" +msgid "Activate another profile with password" +msgstr "Valitse uusi profiili antamalla haluamasi profiilin salasana" + +# Error message shown in dialog in situation where user tried to delete the last (one and only) operator profile in machine. There needs to be at least one profile and this error message is shown if user tries to get around that limitation. +#: controller.cpp:638 +msgctxt "Controller|" +msgid "Can't delete only profile." +msgstr "Viimeistä jäljellä olevaa profiilia ei voi poistaa." + +# Text shown in title of confirmation dialog. +#: controller.cpp:642 +msgctxt "Controller|" +msgid "Permanently discard profile?" +msgstr "Poistetaanko profiili lopullisesti?" + +# Text shown inside a confirmation dialog. Dialog will have buttons OK and Cancel and this is the question. +#: controller.cpp:643 +msgctxt "Controller|" +msgid "There will be NO way to access content of this profile later" +msgstr "" +"Tämän profiilin viestejä tai muuta sisältöä ei ole mahdollista nähdä enää" + +# Error message that is shown in a dialog in situation where previously stored encryption keys of the node could not be accessed. Rather fatal error, will render node un-usable. +#: controller.cpp:706 +msgctxt "Controller|" +msgid "Cant load node cert or key cert" +msgstr "Solmun salausavaimen tai sertifikaatin lataaminen ei onnistunut" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a filesystem file operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:711 +msgctxt "Controller|" +msgid "File error" +msgstr "Tiedostokäsittelyyn liittyvä virhe" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during database operation. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:716 +msgctxt "Controller|" +msgid "Database error" +msgstr "Tietokantavirhe" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during a operation inside crypto-module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:722 controller.cpp:732 +msgctxt "Controller|" +msgid "Cryptographic module" +msgstr "Salausjärjestelmän virhe" + +# Error message dialog title text for a dialog that is shown in a dialog in situation where something bad happened during operation inside database module. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:727 +msgctxt "Controller|" +msgid "Database module" +msgstr "Tietokannan vikatila" + +# Error message dialog title text for a dialog that is shown in a dialog in situation when password supplied by user was not good for any purpose. Actual explanation of the error is shown inside the dialog whose title text this is. +#: controller.cpp:733 +msgctxt "Controller|" +msgid "Bad password" +msgstr "Kelpaamaton salasana" + +# Error message text inside a dialog when user had requested for an item to be opened but program could not find the requested item. +#: controller.cpp:949 +msgctxt "Controller|" +msgid "Could not find item from network.." +msgstr "Haluttua kohdetta ei verkosta löytynyt.." + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies SHA1 digest of the file. +#: controller.cpp:1062 +msgctxt "Controller|" +msgid "SHA1: " +msgstr "SHA1:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies mime-type of the file +#: controller.cpp:1067 +msgctxt "Controller|" +msgid "Mime-Type: " +msgstr "Mime-Tyyppi:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that gives longer explanation of the file +#: controller.cpp:1073 +msgctxt "Controller|" +msgid "Description: " +msgstr "Kuvaus:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of publisher of the file (in practice, who uploaded the file into classified ads) +#: controller.cpp:1079 +msgctxt "Controller|" +msgid "Publisher: " +msgstr "Julkaisija:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies name of the person (or organization) that owns (in copyright sense) the file or its contents. +#: controller.cpp:1085 +msgctxt "Controller|" +msgid "Content owner: " +msgstr "Sisällön omistaja:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies the license of the file +#: controller.cpp:1091 +msgctxt "Controller|" +msgid "License: " +msgstr "Lisenssi:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file name +#: controller.cpp:1097 +msgctxt "Controller|" +msgid "Name: " +msgstr "Nimi:" + +# Text field explanation text. Part of "file details" dialog. This text gives explanation of field that specifies file date +#: controller.cpp:1104 +msgctxt "Controller|" +msgid "Date: " +msgstr "Päivämäärä:" + +# Error message text shown inside dialog when user tries to select for operation a file that is much much too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:47 ui/dialogbase.cpp:101 +msgctxt "DialogBase|" +msgid "File way too big" +msgstr "Tiedosto on ihan liian iso" + +# Error message text shown inside dialog when user tries to select for operation a file that is just-and-just too big. (there is currently 2MB size limit for shared files) +#: ui/dialogbase.cpp:55 ui/dialogbase.cpp:109 +msgctxt "DialogBase|" +msgid "File too big" +msgstr "Tiedosto on liian iso" + +# Error message text shown inside dialog when user tries to select for operation a file that can not be opened (for example due to file permission reasons) +#: ui/dialogbase.cpp:85 ui/dialogbase.cpp:131 +msgctxt "DialogBase|" +msgid "File open error" +msgstr "Ongelma tiedoston avaamisessa" + +# Dialog title text. Dialog prompts user to select the filesystem file that will be published inside classified ads. +#: ui/dialogbase.cpp:94 +msgctxt "DialogBase|" +msgid "Select file to be published" +msgstr "Valitse julkaistava tiedosto" + +# Text for file type filter field in file-selection-dialog +#: ui/dialogbase.cpp:96 +msgctxt "DialogBase|" +msgid "Files (*.*)" +msgstr "Kaikki tiedostot (*.*)" + +# Title text of error dialog. +#: ui/editcontact.cpp:72 +msgctxt "EditContactDialog|" +msgid "Error" +msgstr "Vikaa" + +# Contet text of error dialog. Shown after user has tried to enter operator address with intent of adding it to contact-list and the operator address fails format validation. +#: ui/editcontact.cpp:73 +msgctxt "EditContactDialog|" +msgid "Operator addr is not valid" +msgstr "Operaattorin osoite ei ole sopivaa muotoa" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the first tab. +#: FrontWidget.cpp:93 +msgctxt "FrontWidget|" +msgid "Classified ads" +msgstr "Luokitellut ilmoitukset" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 2nd tab. +#: FrontWidget.cpp:94 +msgctxt "FrontWidget|" +msgid "My profile" +msgstr "Oma profiili" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 3rd tab. +#: FrontWidget.cpp:95 +msgctxt "FrontWidget|" +msgid "Contacts" +msgstr "Osoitekirja" + +# Tab text. In "main window" of classified ads UI there a are 4 or 5 tabs, normally "Classified ads"; "My profile", "Contacts", "Private messages" and maybe something else. This is the text of the 4th tab. +#: FrontWidget.cpp:96 +msgctxt "FrontWidget|" +msgid "Private messages" +msgstr "Yksityiset viestit" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, a dialog will appear asking which file to share +#: FrontWidget.cpp:155 +msgctxt "FrontWidget|" +msgid "Add shared file.." +msgstr "Lisää tiedosto jakoon" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will no longer be shared +#: FrontWidget.cpp:156 +msgctxt "FrontWidget|" +msgid "Stop advertising selected shared file" +msgstr "Lakkaa mainostamasta valittua jaettua tiedostoa" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, the selected file in the listing view will be saved to filesystem +#: FrontWidget.cpp:157 +msgctxt "FrontWidget|" +msgid "Save file to disk.." +msgstr "Tallenna tiedosto tiedostojärjestelmälle" + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, information dialog about selected file will be shown +#: FrontWidget.cpp:158 +msgctxt "FrontWidget|" +msgid "View file information.." +msgstr "Tarkastele tiedoston ominaisuuksia.." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, SHA digest of the selected file will be copied to clipboard. +#: FrontWidget.cpp:159 +msgctxt "FrontWidget|" +msgid "Copy file address (SHA1) to clipboard.." +msgstr "Kopioi tiedoston osoite (SHA1) leikepöydälle.." + +# Context-menu item text. Menu appears when user right-clicks on top of file listing view. When item whose text is specified here is selected from the menu, an editor will be displayed prompting user to enter text that will then be published for other users to see. +#: FrontWidget.cpp:160 +msgctxt "FrontWidget|" +msgid "Edit+publish new text document.." +msgstr "Muokkaa ja julkaise uusi tekstidokumentti.." + +# Dialog title text for "file open" dialog +#: FrontWidget.cpp:348 +msgctxt "FrontWidget|" +msgid "Open File" +msgstr "Avaa tiedosto" + +# Text for filter field of file selection dialog +#: FrontWidget.cpp:350 FrontWidget.cpp:880 +msgctxt "FrontWidget|" +msgid "Files (*.*)" +msgstr "Kaikki tiedostot (*.*)" + +# Error dialog title text. Actual error message will be shown inside dialog whose title is this text. +#: FrontWidget.cpp:354 FrontWidget.cpp:1180 FrontWidget.cpp:1322 +msgctxt "FrontWidget|" +msgid "Error" +msgstr "Vikaa.." + +# Error dialog content text. Shown when image file that user selected could not be opened (maybe because file permission problem or maybe image format issue or ..) +#: FrontWidget.cpp:355 +msgctxt "FrontWidget|" +msgid "Can't load image" +msgstr "Kuvan avaaminen ei onnistu" + +# Error dialog title text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:621 FrontWidget.cpp:761 +msgctxt "FrontWidget|" +msgid "Profile not in database" +msgstr "Profiilia ei tietovarastosta löydy" + +# Error dialog content text. This dialog is shown when user tries to comment another operator but required operator data is missing from local storage. +#: FrontWidget.cpp:622 FrontWidget.cpp:762 +msgctxt "FrontWidget|" +msgid "Try viewing profile first to obtain data" +msgstr "Yritä valita profiili katseltavaksi ensin, yritä sitten uudelleen" + +# File selection title text. Prompts user to select a file for publish purpose. +#: FrontWidget.cpp:878 +msgctxt "FrontWidget|" +msgid "Select file to be published" +msgstr "Valitse julkaistava tiedosto" + +# Error text shown in dialog. Shown in situation where user selected a file that really exceeds size limit (of 2MB) +#: FrontWidget.cpp:885 +msgctxt "FrontWidget|" +msgid "File way too big" +msgstr "Tiedosto on aivan liian suuri" + +# Error text shown in dialog. Shown in situation where user selected a file that slightly exceeds size limit (of 2MB) +#: FrontWidget.cpp:893 +msgctxt "FrontWidget|" +msgid "File too big" +msgstr "Tiedosto on liian suuri" + +# Error text shown in dialog. Shown in situation where user selected a file that could for some reason not be opened +#: FrontWidget.cpp:937 FrontWidget.cpp:1181 +msgctxt "FrontWidget|" +msgid "File open error" +msgstr "Ongelma tiedoston avaamisessa" + +# Part of filter text field in file selection dialog. If for instance user tries to open PNG files, then the text in filter field will be "PNG files (*.png)" and this word is the 2nd word in the phrase. +#: FrontWidget.cpp:1162 FrontWidget.cpp:1168 +msgctxt "FrontWidget|" +msgid "files" +msgstr "kaikki tiedostot" + +# File selection dialog title text. Dialog prompts user to select location+name for an file to be exported into filesystem. +#: FrontWidget.cpp:1171 +msgctxt "FrontWidget|" +msgid "Choose file name for saving" +msgstr "Valitse nimi tallennettavalle tiedostolle" + +# Text shown in placeholder for operators image in situation where user has not yet selected any image. In practice it prompts user to insert image by clicking at the text. +#: FrontWidget.cpp:1231 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"Click\n" +"To\n" +"Add\n" +"Image\n" +msgstr "" +"\n" +"\n" +"\n" +"Klikkaa\n" +"Lisätäksesi\n" +"Kuva\n" + +# Error message dialog content text shown when user tried to access article, that was not stored in local database +#: FrontWidget.cpp:1323 +msgctxt "FrontWidget|" +msgid "Article not found from local storage" +msgstr "Artikkelia ei paikallisesta tietokannasta löydy" + +# Tool-tip text. Shown on top of operators address when user hovers mouse on top of the address field. The %1 will be replaced by nickname of an operator who trusts this particular operator. The %2 will be replaced by SHA1 digest of the operator who trusts the operator whose SHA1 is under mouse cursor. +#: FrontWidget.cpp:1349 FrontWidget.cpp:1897 +#, qt-format +msgctxt "FrontWidget|" +msgid "" +"Trusted by %1\n" +"SHA1 %2" +msgstr "" +"Johon luottaa %1\n" +"SHA1 %2" + +# Tool tip text. Shown when user howers mouse on top of operators nickname field. In code a date-string will be concatenated to this string, so in practice in the UI it will read "Time of last update 31 aug 2015" or similar. +#: FrontWidget.cpp:1386 +msgctxt "FrontWidget|" +msgid "Time of last update " +msgstr "Viimeinen päivitysajankohta" + +# Text for image placeholder, shown in situation where another operator has not selected any image for her.This text is shown place of the missing image. +#: FrontWidget.cpp:1394 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"(No\n" +"Image\n" +"Selected)\n" +msgstr "" +"\n" +"\n" +"\n" +"(Ei\n" +"Kuvaa\n" +"Valittuna)\n" + +# Context menu item text. Context-menu is related to frequent-contacts column-view. +#: FrontWidget.cpp:1488 +msgctxt "FrontWidget|" +msgid "Edit contact.." +msgstr "Muokkaa profiilin tietoja " + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the classified ad currently on display +#: FrontWidget.cpp:1528 +msgctxt "FrontWidget|" +msgid "&Reply to sender" +msgstr "Vastaa lähettäjälle" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a reply to classified ad currently on display +#: FrontWidget.cpp:1529 +msgctxt "FrontWidget|" +msgid "Reply to &forum" +msgstr "Vastaa foorumille" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a new classified ad. +#: FrontWidget.cpp:1530 +msgctxt "FrontWidget|" +msgid "&Post new ad" +msgstr "Uusi ilmoitus" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the classified ad currently on display +#: FrontWidget.cpp:1531 +msgctxt "FrontWidget|" +msgid "&Public comment" +msgstr "Uusi kommentti" + +# Push button text. Pushing the button will switch to view detailing operator who sent the classified ad currently on display +#: FrontWidget.cpp:1532 +msgctxt "FrontWidget|" +msgid "&View profile" +msgstr "Katsele profiilia" + +# Push button text. Pushing the button will open a a listing of files that are attached to classified ad currently on display +#: FrontWidget.cpp:1533 FrontWidget.cpp:1671 +msgctxt "FrontWidget|" +msgid "Attachments.." +msgstr "Liitetiedostot.." + +# Push button text. Pushing the button will open an editor prompting user to add to her contact-list the operator who sent the classified ad currently on display +#: FrontWidget.cpp:1593 +msgctxt "FrontWidget|" +msgid "Add selected operator to contacts.." +msgstr "Lisää valittu operaattori osoitekirjaan.." + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to operator who sent the private message currently on display +#: FrontWidget.cpp:1667 +msgctxt "FrontWidget|" +msgid "&Reply" +msgstr "Vastaa" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a private message to some operator. +#: FrontWidget.cpp:1668 +msgctxt "FrontWidget|" +msgid "&New message" +msgstr "Uusi viesti" + +# Push button text. Pushing the button will open an editor prompting user to edit+send a public comment about operator who sent the private message currently on display +#: FrontWidget.cpp:1669 +msgctxt "FrontWidget|" +msgid "&Send public comment to sender" +msgstr "Esitä julkinen kommentti lähettäjästä" + +# Push button text. Pushing the button will open view that will show details of operator, who sent the private message currently on display. +#: FrontWidget.cpp:1670 +msgctxt "FrontWidget|" +msgid "&View profile of peer" +msgstr "Näytä viesti-osapuolen profiili" + +# Context menu item text. Appears in "message listing view" when user right-clicks on messages view. When selected, the operator who sent the message that is selected is added to contacts. +#: FrontWidget.cpp:1705 +msgctxt "FrontWidget|" +msgid "Add selected to contacts.." +msgstr "Lisää valittu osoitekirjaan" + +# Text field label. Label tells who sent particular classified ad. +#: FrontWidget.cpp:1907 FrontWidget.cpp:1909 FrontWidget.cpp:1973 +#: FrontWidget.cpp:1975 +msgctxt "FrontWidget|" +msgid "From:" +msgstr "Keneltä:" + +# Text field label. Label tells subject of classified ads. +#: FrontWidget.cpp:1911 FrontWidget.cpp:1978 +msgctxt "FrontWidget|" +msgid "Subject:" +msgstr "Aihe:" + +# Text field label. Label tells whom a private message was sent to. +#: FrontWidget.cpp:1970 +msgctxt "FrontWidget|" +msgid "To:" +msgstr "Kenelle:" + +# Error dialog content text. Shown in situation when user clicked on a link that contained SHA1 digest that was not valid. +#: FrontWidget.cpp:2282 +msgctxt "FrontWidget|" +msgid "Invalid SHA1 in URL" +msgstr "Viallinen SHA1-tiiviste URLissa" + +# Error dialog content text. Shown in situation when user clicked on a link that was not correctly formatted. +#: FrontWidget.cpp:2309 +msgctxt "FrontWidget|" +msgid "Invalid URL" +msgstr "Viallinen URL" + +# Error dialog content text. Shown in situation when user entered a link that could not be parsed. +#: ui/insertlinkdialog.cpp:69 +msgctxt "InsertLinkDialog|" +msgid "Invalid URL" +msgstr "Väärän mallinen URL" + +# Error dialog content text. Shown in situation when user tried to add connection to node whose name was not found via nameserver. +#: ui/manualconnection.cpp:53 +msgctxt "ManualConnectionDialog|" +msgid "DNS lookup failure" +msgstr "Nimeä ei löydy nimipalvelusta (DNS)" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprivmsgdialog.cpp:88 ui/newprivmsgdialog.cpp:133 +msgctxt "NewPrivMessageDialog|" +msgid "Error" +msgstr "Vikaa" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprivmsgdialog.cpp:89 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient addr is not valid" +msgstr "Vastaanottajan osoite ei ole kelvollinen" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprivmsgdialog.cpp:134 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Vastaanottajan salausavainta ei paikallisesta tietokannasta löydy" + +# Error dialog title text. Actual error message will be shown inside the dialog. +#: ui/newprofilecommentdialog.cpp:89 ui/newprofilecommentdialog.cpp:126 +msgctxt "NewProfileCommentDialog|" +msgid "Error" +msgstr "Vikaa" + +# Error dialog content text. Dialog is shown when user tries to comment an operator, whose SHA1 digest (as entered by user) does not parse as SHA1 digest. +#: ui/newprofilecommentdialog.cpp:90 +msgctxt "NewProfileCommentDialog|" +msgid "Commented profile addr is not valid" +msgstr "Kommentoidun profiilin osoite ei ole kelvollinen" + +# Error dialog content text. Dialog is shown when user tries to send a message to operator, whose encryption keys are present in local storage. +#: ui/newprofilecommentdialog.cpp:127 +msgctxt "NewProfileCommentDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Valitun profiilin salausavainta ei paikallisesta tietokannasta löydy" + +# Error message text. Will be shown in error message dialog in case when initial SSL key generation of node did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:115 +msgctxt "NodeModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "SSL-avaimen luonti epäonnistui, poistutaan.." + +# Error message text. Will be shown in error message dialog in case when initial encryption key generation of user did not succeed. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:123 +msgctxt "NodeModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "x509-sertifikaatin luonti epäonnistui, poistutaan.." + +# Error message text. Will be shown in error message dialog in case when SSL certificate of the node could not be loaded from storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1594 +msgctxt "NodeModel|" +msgid "Cant load SSL cert" +msgstr "SSL-sertifikaatin lataaminen ei onnistu" + +# Error message text. Will be shown in error message dialog in case when SSL key of the node could not be retrieved from local storage. After user dismisses the dialog, the application will close. +#: datamodel/nodemodel.cpp:1624 +msgctxt "NodeModel|" +msgid "Cant load SSL key" +msgstr "SSL-avaimen lataaminen ei onnistu" + +# Error message text. Shown in dialog when user tries to enter a password that is too short. +#: ui/passwd_dialog.cpp:104 +msgctxt "PasswdDialog|" +msgid "Min length 5 (use 10+)" +msgstr "Vähimmäispituus on 5 (käytä silti ainakin 10)" + +# Password dialog title text. +#: ui/passwordDialog.ui:14 +msgctxt "PasswordDialog|" +msgid "Password required" +msgstr "Salasana on pakollinen" + +# Tooltip text for password dialog. Shown when user hovers on top of password dialog. +#: ui/passwordDialog.ui:17 +msgctxt "PasswordDialog|" +msgid "" +"Should you forget this word, there is no easy way to recover any of your " +"content" +msgstr "" +"Unohdapa tämä salasana ja viestiesi lukemiseen vain ei ole olemassa mitään " +"helppoa menetelmää" + +# Prompt text for password dialog. +#: ui/passwordDialog.ui:29 +msgctxt "PasswordDialog|" +msgid "Enter password for protection of your messages" +msgstr "Valitse salasana viestiesi turvaamiseksi" + +# Tooltip text for password dialog. Shown when user hovers on top of password field +#: ui/passwordDialog.ui:42 +msgctxt "PasswordDialog|" +msgid "" +"If you forget this word, there is no simple way to recover your contents" +msgstr "" +"Jos unohdat tämän sanan, viestiesi lukemiseksi ei ole olemassa mitään " +"helppoa menetelmää" + +# Password dialog button text +#: ui/passwordDialog.ui:55 +msgctxt "PasswordDialog|" +msgid "OK" +msgstr "OK" + +# Tooltip text. Shown when user hovers mouse cursor on top of message sender name. First %1 will be replaced with nickname of the operator whose message is hovered, %2 will be replaced by nickname of operator who has expressed positive trust towards the operator who sent the message. +#: datamodel/privmsgsearchmodel.cpp:110 +#, qt-format +msgctxt "PrivateMessageSearchModel|" +msgid "" +"%1\n" +"Trusted by %2" +msgstr "" +"%1\n" +"johon luottaa %2" + +# Tooltip text. Used in column view that lists private messages of operator. Explains the field that gives title to column that specifies direction (sent or received) of the message. +#: datamodel/privmsgsearchmodel.cpp:237 +msgctxt "PrivateMessageSearchModel|" +msgid "Direction of message, sent/received" +msgstr "Viestin suunta, lähetetty/vastaanotettu" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies direction (sent/received) of the message. +#: datamodel/privmsgsearchmodel.cpp:247 +msgctxt "PrivateMessageSearchModel|" +msgid "Dir" +msgstr "Suunta" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies messaging peer (another operator) of the message. +#: datamodel/privmsgsearchmodel.cpp:250 +msgctxt "PrivateMessageSearchModel|" +msgid "Peer" +msgstr "Osapuoli" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies time of the message. +#: datamodel/privmsgsearchmodel.cpp:253 +msgctxt "PrivateMessageSearchModel|" +msgid "Time" +msgstr "Aika" + +# Column title text. Used in column view that lists private messages of operator. This field gives title to column that specifies subject of the message. +#: datamodel/privmsgsearchmodel.cpp:256 +msgctxt "PrivateMessageSearchModel|" +msgid "Subject" +msgstr "Aihe" + +# Push button text. Clicking the button will open a dialog prompting user to add a new comment +#: ui/profilecommentdisplay.cpp:54 +msgctxt "ProfileCommentDisplay|" +msgid "&Add comment..." +msgstr "Lisää kommentti" + +# Context menu item text. Context menu is shown when user right-clicks on file listing view. When this item is selected, a file selection dialog is opened. +#: ui/profilecommentdisplay.cpp:65 +msgctxt "ProfileCommentDisplay|" +msgid "Save attachment to disk.." +msgstr "Tallenna liite tiedostojärjestelmälle.." + +# Error dialog title text +#: ui/profilecommentdisplay.cpp:90 +msgctxt "ProfileCommentDisplay|" +msgid "Error" +msgstr "Vikaa" + +# Error dialog content text. Shown after user tried to access a profile comment and the comment could not be found +#: ui/profilecommentdisplay.cpp:91 +msgctxt "ProfileCommentDisplay|" +msgid "Article not found from local storage" +msgstr "Kommenttia ei paikallisesta tietokannasta löydy" + +# Text field label text. The text field whose label this is will show number how many attachements there are in the comment. +#: ui/profilecommentitemdelegate.cpp:91 +msgctxt "ProfileCommentItemDelegate|" +msgid "Attachments: " +msgstr "Liitteet: " + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells who sent the comment. +#: datamodel/profilecommentlistingmodel.cpp:219 +msgctxt "ProfileCommentListingModel|" +msgid "Sender" +msgstr "Lähettäjä" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells when comment was sent. +#: datamodel/profilecommentlistingmodel.cpp:222 +msgctxt "ProfileCommentListingModel|" +msgid "Time" +msgstr "Aika" + +# Column view column title text. The column view in question lists profile comments. This text gives title to column that tells subject of the comment. +#: datamodel/profilecommentlistingmodel.cpp:225 +msgctxt "ProfileCommentListingModel|" +msgid "Subject" +msgstr "Aihe" + +# Error message text. Shown inside a dialog after user tried to send a comment to operator who had sent a comment and it turns out that necessary encryption keys of the commenting operator are not found and the replying comment can't be sent. +#: datamodel/profilecommentmodel.cpp:67 +msgctxt "ProfileCommentModel|" +msgid "Profile related to comment not found from database" +msgstr "" +"Kommenttiin liittyvän profiilin tietoja ei paikallisesta tietokannasta löydy" + +# Context menu item text. This context-menu is shown when user right-clicks list of operators that is shown in dialog that is made for listing operators (who are readers of another profile) +#: ui/profilereadersdialog.cpp:73 +msgctxt "ProfileReadersDialog|" +msgid "View profile" +msgstr "Tarkastele profiilia" + +# Column view column title text. The column view lists readers (operators) of another profile. +#: datamodel/profilereaderslistingmodel.cpp:174 +msgctxt "ProfileReadersListingModel|" +msgid "Name or fingerprint of reader" +msgstr "Lukijan nimi tai SHA1-tiiviste" + +# Context menu item text. This context menu is shown when user right-clicks on top of search-results. This menu-item opens the currently-selected item from search results. +#: ui/searchdisplay.cpp:62 +msgctxt "SearchDisplay|" +msgid "Open.." +msgstr "Avaa.." + +# Menu title text. This is the help menu. +#: textedit/textedit.cpp:127 +msgctxt "TextEdit|" +msgid "Help" +msgstr "Apua" + +# Menu-item text used in "help" menu. Selecting this item opens "about" dialog about Qt library. +#: textedit/textedit.cpp:129 +msgctxt "TextEdit|" +msgid "About &Qt" +msgstr "Tietoja Qt:stä" + +# Window title text for container-window containing actions. It seems to me that this text actually does not appear anywhere in the UI due to way, how container-windows are used. +#: textedit/textedit.cpp:186 +msgctxt "TextEdit|" +msgid "Edit Actions" +msgstr "Muokkaa toimintoja" + +# Menu text. This gives text to "file" menu of a text editor. +#: textedit/textedit.cpp:188 +msgctxt "TextEdit|" +msgid "&File" +msgstr "Tiedosto" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open a filesystem file" +#: textedit/textedit.cpp:194 +msgctxt "TextEdit|" +msgid "&Open..." +msgstr "Avaa.." + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file. +#: textedit/textedit.cpp:203 +msgctxt "TextEdit|" +msgid "&Save locally before send" +msgstr "Tallenna paikallisesti ennen lähettämistä" + +# Menu item text inside menu in text editor. When selected, the text being edited will be saved into local filesystem file and user will be queried for file name. +#: textedit/textedit.cpp:210 +msgctxt "TextEdit|" +msgid "Save locally &As..." +msgstr "Tallenna paikallisesti nimellä.." + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "print" +#: textedit/textedit.cpp:218 +msgctxt "TextEdit|" +msgid "&Print..." +msgstr "Tulosta.." + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "open print preview" +#: textedit/textedit.cpp:226 +msgctxt "TextEdit|" +msgid "Print Preview..." +msgstr "Tulostuksen esikatselu.." + +# Menu-item text. Used in file-menu for triggering "export as pdf" operation +#: textedit/textedit.cpp:231 +msgctxt "TextEdit|" +msgid "&Export PDF..." +msgstr "Vie PDF-muodossa.." + +# Menu text for "edit" menu of text editor. +#: textedit/textedit.cpp:244 +msgctxt "TextEdit|" +msgid "&Edit" +msgstr "Muokkaa" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "undo" +#: textedit/textedit.cpp:249 +msgctxt "TextEdit|" +msgid "&Undo" +msgstr "Peru" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "re-do" +#: textedit/textedit.cpp:254 +msgctxt "TextEdit|" +msgid "&Redo" +msgstr "Tee uudelleen" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "cut" (to clipboard) +#: textedit/textedit.cpp:261 +msgctxt "TextEdit|" +msgid "Cu&t" +msgstr "Leikkaa" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "copy to clipboard" +#: textedit/textedit.cpp:267 +msgctxt "TextEdit|" +msgid "&Copy" +msgstr "Kopioi" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "paste from clipboard" +#: textedit/textedit.cpp:273 +msgctxt "TextEdit|" +msgid "&Paste" +msgstr "Liitä" + +# Menu item text inside text editor "edit" menu. After this menu-item is selected, a dialog is opened, prompting user to enter a link (URL) to be included in the text. +#: textedit/textedit.cpp:283 +msgctxt "TextEdit|" +msgid "Insert link" +msgstr "Lisää viite" + +# Menu-item text for embedding an image +#: textedit/textedit.cpp:287 +msgctxt "TextEdit|" +msgid "Embed image" +msgstr "Sisällytä kuva" + +# Menu text. Gives name for a "format" menu inside a text editor. +#: textedit/textedit.cpp:294 +msgctxt "TextEdit|" +msgid "F&ormat" +msgstr "Muotoile" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle bold text style" +#: textedit/textedit.cpp:298 +msgctxt "TextEdit|" +msgid "&Bold" +msgstr "Lihavoitu" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle italic text" +#: textedit/textedit.cpp:310 +msgctxt "TextEdit|" +msgid "&Italic" +msgstr "Kursivoitu" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle underline" +#: textedit/textedit.cpp:322 +msgctxt "TextEdit|" +msgid "&Underline" +msgstr "Alleviivattu" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "left-justify" +#: textedit/textedit.cpp:341 textedit/textedit.cpp:347 +msgctxt "TextEdit|" +msgid "&Left" +msgstr "Tasattu vasemmalle" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "toggle centered text" +#: textedit/textedit.cpp:342 textedit/textedit.cpp:346 +msgctxt "TextEdit|" +msgid "C&enter" +msgstr "Keskitetty" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "right-justify" +#: textedit/textedit.cpp:343 textedit/textedit.cpp:345 +msgctxt "TextEdit|" +msgid "&Right" +msgstr "Tasattu oikealle" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "justify both right+left" +#: textedit/textedit.cpp:349 +msgctxt "TextEdit|" +msgid "&Justify" +msgstr "Tasattu molempiin laitoihin" + +# Text editor action text. This text will appear both as menu-item text and as tool-tip text of a button that has icon. The action performed under this title is "color selection" +#: textedit/textedit.cpp:376 +msgctxt "TextEdit|" +msgid "&Color..." +msgstr "Väri.." + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "standard" +#: textedit/textedit.cpp:383 +msgctxt "TextEdit|" +msgid "Standard" +msgstr "Normaalimuoto" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (disc)" +#: textedit/textedit.cpp:384 +msgctxt "TextEdit|" +msgid "Bullet List (Disc)" +msgstr "Pisteellinen lista (palloilla)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (circle)" +#: textedit/textedit.cpp:385 +msgctxt "TextEdit|" +msgid "Bullet List (Circle)" +msgstr "Pisteellinen lista (ympyröillä)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "bullet list (square)" +#: textedit/textedit.cpp:386 +msgctxt "TextEdit|" +msgid "Bullet List (Square)" +msgstr "Pisteellinen lista (laatikoilla)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (decimal)" +#: textedit/textedit.cpp:387 +msgctxt "TextEdit|" +msgid "Ordered List (Decimal)" +msgstr "Numeroitu lista (desimaaliluvuin)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha lower)" +#: textedit/textedit.cpp:388 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha lower)" +msgstr "Numeroitu lista (pienin kirjaimin)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (alpha upper)" +#: textedit/textedit.cpp:389 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha upper)" +msgstr "Numeroitu lista (suurin kirjaimin)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman lower)" +#: textedit/textedit.cpp:390 +msgctxt "TextEdit|" +msgid "Ordered List (Roman lower)" +msgstr "Numeroitu lista (pienin roomalaisin)" + +# Combobox item text. The combobox is used to select text style. The text style selected with this text is "ordered list (roman upper)" +#: textedit/textedit.cpp:391 +msgctxt "TextEdit|" +msgid "Ordered List (Roman upper)" +msgstr "Numeroitu lista (suurilla roomalaisilla)" + +# Warning dialog title text. This dialog is shown if user tries to exit without saving her text. +#: textedit/textedit.cpp:442 +msgctxt "TextEdit|" +msgid "Application" +msgstr "Tekstimuokkain" + +# Warning dialog title content text. Text asks what to do with modifications. The dialog has buttons Save,Discard and Cancel and this text is the question. +#: textedit/textedit.cpp:443 +msgctxt "TextEdit|" +msgid "" +"The document has been modified.\n" +"Do you want to save your changes?" +msgstr "Tiedostoa on muutettu, haluatko tallettaa muutokset?" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:467 +msgctxt "TextEdit|" +msgid "Open File..." +msgstr "Avaa tiedosto.." + +# Text for file selection filter field to be used inside file selection dialog. There are 2 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.htm) must not be edited. The explanations like "HTML-Files" may be edited. +#: textedit/textedit.cpp:468 +msgctxt "TextEdit|" +msgid "HTML-Files (*.htm *.html);;All Files (*)" +msgstr "HTML-Tiedostot (*.htm *.html);;Kaikki tiedostot (*)" + +# File selection dialog title text. Dialog in question prompts user to select name for file to be persisted. +#: textedit/textedit.cpp:485 +msgctxt "TextEdit|" +msgid "Save as..." +msgstr "Tallenna nimellä.." + +# Text for file selection filter field to be used inside file selection dialog. There are 3 parts, separated by ";;" and those semicolons must be left in place. Also the filter parts like (*.odt) must not be edited. The explanations like "ODF-files" may be edited. +#: textedit/textedit.cpp:486 +msgctxt "TextEdit|" +msgid "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)" +msgstr "" +"ODF Tiedostot (*.odt);;HTML-Tiedostot (*.htm *.html);;Kaikki tiedostot (*)" + +# Dialog title text. The dialog is printer dialog asking user how to print the text currently in editor. +#: textedit/textedit.cpp:501 +msgctxt "TextEdit|" +msgid "Print Document" +msgstr "Tulosta dokumentti" + +# File selection dialog title text. Dialog will prompt user to select a document for opening. +#: textedit/textedit.cpp:559 +msgctxt "TextEdit|" +msgid "Open File" +msgstr "Avaa tiedosto" + +# Text for file selection filter field to be used inside file selection dialog. The filter parts like (*.odt) must not be edited. The explanations like "Files" may be edited. +#: textedit/textedit.cpp:561 +msgctxt "TextEdit|" +msgid "Files (*.*)" +msgstr "Kaikki tiedostot (*.*)" + +# Error dialog title text. +#: textedit/textedit.cpp:566 +msgctxt "TextEdit|" +msgid "Error" +msgstr "Tapahtui virhe" + +# Error dialog content text. +#: textedit/textedit.cpp:567 +msgctxt "TextEdit|" +msgid "Can't load image" +msgstr "Kuvan avaaminen ei onnistu" + +# Error message displayed inside error dialog after user tried to select for operation a file whose size greatly exceeds file size limit. +#: textedit/textedit.cpp:621 textedit/textedit.cpp:631 +msgctxt "TextEdit|" +msgid "File way too big" +msgstr "Tiedosto on aivan liian suuri" + +# Dialog title text for "about" dialog. +#: ui/aboutDialog.ui:26 +msgctxt "aboutDialog|" +msgid "About classified ads" +msgstr "Tietoja luokitelluista ilmoituksista" + +# 1st line of text inside "about" dialog, placed next to the turle logo. This text is then followed by longer explanation detail why this program is and how. This is kind of title for the longer explanation. +#: ui/aboutDialog.ui:100 +msgctxt "aboutDialog|" +msgid " Classified ads is a program for online communications" +msgstr "Luokitellut ilmoitukset on viestintään tarkoitettu tietokoneohjelma" + +# The long explanation of classified ads inside about-dialog. Note that this text must be valid html. Needs to start with and end with etc. This is easiest to edit like this: copy-paste the content in to a file, say /tmp/about.html. Then either open your favourite html-editor or open classified ads. In classified ads you can start constructing an ad, select from file-menu "open.." and select this file ;do editing and save from file-menu. The saved file is immediately in correct format to be be copy-pasted into contents of this field. +#: ui/aboutDialog.ui:160 +#| msgid "" +#| "

Classified ads is free software. You may use, copy " +#| "and modify it if you follow the conditions given in GNU lesser general " +#| "public license version 2.1.

Classified ads is copyright © Antti " +#| "Järvinen 2013.

Main feature of the the program is an " +#| ""advertisement" - a piece of text belonging to selected " +#| "classification. There are several pre-programmed classifications and " +#| "operators are encouraged to invent new classifications for new purposes ; " +#| "the selection boxes in classification-selection tab are editable. Other " +#| "operators may then view the ads, publicly comment the ads, the operators " +#| "and also send private messages to each others.

Another important " +#| "feature of classified ads is that it is designed to be operated without " +#| "any centralized server infrastucture - it is you and other operators " +#| "whose computers store and transmit all the content visible inside " +#| "classified ads. To get connected you need to know address of at least one " +#| "existing computer (a node) so " +#| "if your network connection dialog shows no connections, you may need to " +#| "contact someone you know is using the software and ask for address of her " +#| "node to make initial contact with the network. Once connected the " +#| "software should maintain list of addresses of other nodes.

Due to " +#| "its server-less design the whole system works best if you leave the " +#| "program running always when you have your computer powered on ; while " +#| "processing other operators requests it will hog some computing resources " +#| "and generate network traffic also when you are not actively using the " +#| "program youself - others are.

Operators concerned about privacy of " +#| "the content should be aware of following items:

- Data storage " +#| "implementation is variant of distributed hash table, practically meaning " +#| "that content posted by you gets copied some more-or-less random nodes in " +#| "the network.

- Any data item (ad, comment, binary file, private " +#| "message etc.) is digitally signed. This makes it more difficult to try to " +#| "pose as another operator.

- Operators are reliably identified only " +#| "by the SHA1 hash of their generated encryption keys. SHA1 hash is " +#| "displayed when viewing details of operator profiles. Other identifying " +#| "information like nickname or city name are entered by operator himself " +#| "and can be anything. The operator profile, as it is published to the " +#| "network, is also signed with the encryption keys of the operator - if you " +#| "identify an operator by her SHA1 hash, you have a mechanism for " +#| "identifying if any content inside classified ads is posted by this " +#| "operator or not. Classified ads internally checks for digital signatures, " +#| "throwing away content that fails signature check and tries to provide " +#| "SHA1 hash of the operator who posted the content.

- All classified " +#| "ads are posted as plain text, no encryption is used. All public profiles " +#| "are posted as plain text, no encryption is used. If profile is made " +#| "private, it is encrypted to be readable only by selected other profiles. " +#| "This applies also to binary files shared by operators private profiles " +#| "and comments about private profiles after the profile was made private " +#| "(previously plain-text comments or files don't get magically encrypted " +#| "afterwards). Private messages are encrypted always to be readable only by " +#| "recipient and sender. Attachments follow the privary rules of the " +#| "document, they're attachted to.

- As is the case with all " +#| "internet-communications, this small fact is true for classified ads too : " +#| "once something gets posted online, " +#| "there is no way to remove it from network.

- Data " +#| "encryption implementation for content is OpenSSL, relying mostly on " +#| "algorithms RSA-2048 and AES-256.

- While connections between nodes " +#| "are implemented using SSL, other nodes inside network do get to know what " +#| "content is being transmitted in neighboring nodes. While there is no " +#| "central point for easily collecting this information about particular " +#| "classification or operator, operators still should expect no privacy " +#| "regarding their doings online, altough some effort has been been put into " +#| "hiding contents of private " +#| "messages and private profiles.

Programming was (mostly) done by " +#| "Antti Järvinen, artwork by Meeri Järvinen.

This product includes " +#| "software developed by the OpenSSL Project for use in the OpenSSL Toolkit " +#| "(http://www.openssl.org/).

Happy " +#| "advertising!


" +msgctxt "aboutDialog|" +msgid "" +"

Classified ads is free software. You may use, copy and " +"modify it if you follow the conditions given in GNU lesser general public " +"license version 2.1.

Classified ads is copyright © Antti Järvinen " +"2013.

Main feature of the the program is an "advertisement" " +"- a piece of text belonging to selected classification. There are several " +"pre-programmed classifications and operators are encouraged to invent new " +"classifications for new purposes ; the selection boxes in " +"classification-selection tab are editable. Other operators may then view the " +"ads, publicly comment the ads, the operators and also send private messages " +"to each others.

Another important feature of classified ads is that " +"it is designed to be operated without any centralized server infrastucture - " +"it is you and other operators whose computers store and transmit all the " +"content visible inside classified ads. To get connected you need to know " +"address of at least one existing computer (a node) so if your network connection dialog shows " +"no connections, you may need to contact someone you know is using the " +"software and ask for address of her node to make initial contact with the " +"network. Once connected the software should maintain list of addresses of " +"other nodes.

Due to its server-less design the whole system works " +"best if you leave the program running always when you have your computer " +"powered on ; while processing other operators requests it will hog some " +"computing resources and generate network traffic also when you are not " +"actively using the program youself - others are.

Operators concerned " +"about privacy of the content should be aware of following items:

- " +"Data storage implementation is variant of distributed hash table, practically meaning that " +"content posted by you gets copied some more-or-less random nodes in the " +"network.

- Any data item (ad, comment, binary file, private message " +"etc.) is digitally signed. This makes it more difficult to try to pose as " +"another operator.

- Operators are reliably identified only by the " +"SHA1 hash of their generated encryption keys. SHA1 hash is displayed when " +"viewing details of operator profiles. Other identifying information like " +"nickname or city name are entered by operator himself and can be anything. " +"The operator profile, as it is published to the network, is also signed with " +"the encryption keys of the operator - if you identify an operator by her " +"SHA1 hash, you have a mechanism for identifying if any content inside " +"classified ads is posted by this operator or not. Classified ads internally " +"checks for digital signatures, throwing away content that fails signature " +"check and tries to provide SHA1 hash of the operator who posted the " +"content.

- All classified ads are posted as plain text, no encryption " +"is used. All public profiles are posted as plain text, no encryption is " +"used. If profile is made private, it is encrypted to be readable only by " +"selected other profiles. This applies also to binary files shared by " +"operators private profiles and comments about private profiles after the " +"profile was made private (previously plain-text comments or files don't get " +"magically encrypted afterwards). Private messages are encrypted always to be " +"readable only by recipient and sender. Attachments follow the privary rules " +"of the document, they're attachted to.

- As is the case with all " +"internet-communications, this small fact is true for classified ads too : " +"once something gets posted online, there " +"is no way to remove it from network.

- Data encryption " +"implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 " +"and AES-256.

- While connections between nodes are implemented using " +"SSL, other nodes inside network do get to know what content is being " +"transmitted in neighboring nodes. While there is no central point for easily " +"collecting this information about particular classification or operator, " +"operators still should expect no privacy regarding their doings online, " +"although some effort has been been put into hiding contents of private messages and private " +"profiles.

Programming was (mostly) done by Antti Järvinen, artwork by " +"Meeri Järvinen.

This product includes software developed by the " +"OpenSSL Project for use in the OpenSSL Toolkit " +"(http://www.openssl.org/).

Happy " +"advertising!


" +msgstr "" +"\n" +"

Luokitellut " +"ilmoitukset on vapaasti käytettävä ohjelmisto. Voi käyttää, kopioida ja " +"muokata sitä noudattaen LGPL-lisenssin (GNU Lesser General Public License " +"2.1) ehtoja.

\n" +"


\n" +"

Tämän ohjelman " +"kopiointioikeudet omistaa Antti Järvinen, vuodesta 2013.

\n" +"


\n" +"

Ohjelman keskeinen " +"ominaisuus on "ilmoitus" - teksti, joka kuuluu johonkin " +"luokitteluun. Ohjelma sisältää joukon valmiita luokitteluita ja käyttäjiä " +"rohkaistaan keksimään uusia ; luokittelu-valintoihin " +""ilmoitukset"-välilehdellä voi kirjoittaa mitä hyvänsä. Muut " +"käyttäjät voivat katsella ilmoituksia, julkisesti kommentoida ilmoituksia ja " +"lähettää viestejä toisilleen.

\n" +"


\n" +"

Ohjelman toinen " +"keskeinen ominaisuus on, ettei se käytä keskitettyä tietovarastoa millään " +"verkkopalvelimella - yksittäisten käyttäjien tietokoneet, joilta ohjelmistoa " +"käytetään tallettavat ja välittävät kaiken ohjelman sisällä esitettävän " +"sisällön. Liittyäksesi tähän verkkoon sinun on tiedettävä ainakin yhden " +"sellaisen tietokoneen (solmun) verkko-osoite, jossa jo valmiiksi käytetään " +"luokiteltuja ilmoituksia. Mikäli tilanne on sellainen, että "verkon " +"tila" -dialogi näyttää 0 avointa yhteyttä, sinun on kysyttävä joltain " +"ystävältäsi hänen solmunsa verkko-osoite ja syötettävä se ohjelmaan " +"saadaksesi yhteyden luokiteltujen ilmoitusten verkkoon. Kun ohjelma on " +"kerran liitetty verkkoon, se pyrkii itse ylläpitämään listan verkon muista " +"koneista.

\n" +"


\n" +"

Johtuen " +"suunnitelusta, johon verkkopalvelimet eivät kuulu tämä järjestelmä toimii " +"parhaiten, jos jätät tämän ohjelman päälle myös silloin, kun et itse " +"aktiivisesti käytä järjestelmää. Ohjelma vie jonkin verran " +"tietojenkäsittelykapasiteettia koneeltasi ja aiheuttaa verkkoliikennettä " +"myös silloin kun et itse ohjelmaa käytä - mutta muut käyttäjät käyttävät. " +"

\n" +"


\n" +"

Yksityisyydestään " +"huolestuneet käyttäjät huomatkoot seuraavat seikat:

\n" +"

- Tietovarasto on " +"toteutettu hajautettuna tiivistetaulukkona (distributed hash table DHT), " +"mikä käytännössä tarkoittaa että verkkoon postitetut ilmoitukset ja muu " +"sisältö päätyvät enemmän tai vähemmän satunnaisille verkon solmuille " +"säilytettäväksi, DHT-algoritmin mukaisesti.

\n" +"

- Kaikki verkon " +"tallettamat tietoalkiot (ilmoitukset, kommentit, tiedostot, yksityiset " +"viestit jne.) ovat digitaalisesti allekirjoitettuja. Tästä syystä on " +"hankalaa pyrkiä esiintymään eri operaattorina kuin oikeasti on.

\n" +"

- Operaattorin " +"ainoa luotettava tunniste on hänen salausavaimensa SHA1-tiiviste. " +"SHA1-tiiviste on nähtävillä operaattorin tiedot esittävällä välilehdellä. " +"Muut tiedot kuten liikanimi tai kaupungin nimi ovat operaattorin " +"syötettävissä ja luonnollisesti voivat olla ihan mitä tahansa. Operaattorin " +"profiilin tiedot verkkoon julkaistuna ovat myös allekirjoitetut, käyttäen " +"operaattorin salausavainta - mikäli haluat kohtuullisella luotettavuudella " +"tietää onko joku verkon sisältö tietyn operaattorin julkaisemaa vai ei, tämä " +"tapahtuu tarkastamalla lähettäjän SHA1-tiiviste. Luokitellut ilmoitukset " +"tarkastaa saapuvien tietoalkioiden allekirjoitukset ja jättää tallettamatta " +"sisällöt, joiden allekirjoitus ei vastaa sisältöä.

\n" +"

- Kaikki " +"luokitellut ilmoitukset julkaistaan ilman salausta ja ovat kaikkien " +"luettavissa. Kaikki julkiset profiilit julkaistaan ilman salausta, ja ovat " +"kaikkien luettavissa. Mikäli profiili merkitään yksityiseksi, se salataan " +"siten, että lueteltujen operaattoreiden salausavainta käyttäen profiilin " +"tiedot ovat luettavissa. Tämä pätee myös profiiliin liittyviin kommentteihin " +"ja jaettuihin tiedostoihin. Muutos ei ole takautuva, eli jos profiili on " +"aiemmin ollut julkinen, sen kommentit ja tiedostot eivät automaattisesti " +"muutu salatuiksi kun profiili muutetaan yksityiseksi. Yksityiset viestit " +"kuljetetaan aina salattuna. Liitetiedostot noudattavat sen dokumentin " +"yksityisyyssääntöjä, mihin ne on liitetty.

\n" +"

- Kuten kaiken " +"internet-viestinnän kanssa tosi on, myös tämä pätee: jos jotain sisältöä " +"verkkoon lähetetään, ei ole olemassa " +"keinoa pysyvästi sitä poistaa.

\n" +"

- Salaustoteutus on " +"OpenSSL, useimmin käytetyt algoritmit ovat RSA-2048 ja AES-256.

\n" +"

- Solmujen välinen " +"liikenne kulkee SSL-socketissa eli tietoliikenteen seuraaminen verkon " +"ulkopuolelta on haastavaa. Vierekkäiset solmut kuitenkin näkevät toistensa " +"tietoliikenteenteen sisällön. Vaikka tietoliikenteen sisältöjen keräämiseen " +"ei ole helppoa yksittäistä paikkaa, operaattorien on silti turha odottaa " +"yksityisyyttä koskien tekemisiään verkossa vaikka jonkin verran vaivaa " +"yksityisten viestien sisältöjen " +"suojaamiseksi onkin nähty.

\n" +"


\n" +"

Ohjelmointityön on " +"enimmäkseen tehnyt Antti Järvinen, taideteokset Meeri Järvinen.

\n" +"


\n" +"

Tämä tuote sisältää " +"OpenSSL-projektin kehittämän ohjelmiston, joka on alunperin tarkoitettu " +"OpenSSL Toolkit-ohjelmistoa varten (http://www.openssl.org).

\n" +"


\n" +"

Riemullista " +"ilmoittelua!

\n" +"


" + +# Dialog title text. Dialog in question produces list of file attachments. +#: ui/attachmentListDialog.ui:26 +msgctxt "attachmentListDialog|" +msgid "List of attached files" +msgstr "Liitetiedostoluettelo" + +# Dialog title text. Purpose of the dialog is to let user change properties of a frequent contact in contact-list. +#: ui/editContact.ui:26 +msgctxt "editContactDialog|" +msgid "Edit a contact" +msgstr "Muokkaa profiilin tietoja" + +# Text field label in contact-editing dialog. This gives label for field that shows SHA1 fingerprint of the operator whose data is being edited +#: ui/editContact.ui:39 +msgctxt "editContactDialog|" +msgid "Address (SHA1) of contact" +msgstr "Profiilin osoitteen SHA1 tiiviste" + +# Text field label in contact-editing dialog. This gives label for field that shows nickname of the operator whose data is being edited +#: ui/editContact.ui:53 +msgctxt "editContactDialog|" +msgid "Local nickname" +msgstr "Paikallinen liikanimi" + +# Tooltip text of a checkbox label in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. Note html format. +#: ui/editContact.ui:65 +msgctxt "editContactDialog|" +msgid "" +"

Settings some trusted is public information to readers " +"of your profile

" +msgstr "" +"

Luottamuksen osoitus on profiilisi mukana julkaistava " +"tieto, jonka profiilisi lukijat näkevät

" + +# Label of a checkbox in contact-editing dialog. The checkbox is one that controls statement of trustworthniness of the operator whose data is being edited. +#: ui/editContact.ui:68 +msgctxt "editContactDialog|" +msgid "This contact is to be publicly trusted in transactions" +msgstr "Tämän profiilin operaattoriin kelpaa julkisesti luottaa" + +# Name of front widget. Wild guess is that this text actually does not appear anywhere in the UI. +#: frontWidget.ui:14 +msgctxt "frontWidget|" +msgid "Form" +msgstr "Etusivun lomake" + +# Tab title text in front widget. When user clicks in this tab, the view is switched to one, that lists classified ads. +#: frontWidget.ui:39 +msgctxt "frontWidget|" +msgid "Classified ads" +msgstr "Luokitellut ilmoitukset" + +# Prompt text next "search" button. User is supposed to enter search criteria for classified ads and then click "search" ; this is prompt text for this behaviour. +#: frontWidget.ui:67 +msgctxt "frontWidget|" +msgid "Search for classified ads about" +msgstr "Etsi luokiteltuja ilmoituksia aiheesta" + +# Prompt text very next to "search" button. After user has clicked the button, he is supposed to be viewing list of classified ads matching the search criteria. +#: frontWidget.ui:74 +msgctxt "frontWidget|" +msgid "Perform" +msgstr "Suorita" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 2nd word in that phrase. +#: frontWidget.ui:97 +msgctxt "frontWidget|" +msgid "of" +msgstr "koskien" + +# This part of search-criteria phrase. Normally the phrase reads something like "Buying of cars in finland" and this word is the 4th word in that phrase. +#: frontWidget.ui:113 +msgctxt "frontWidget|" +msgid "in" +msgstr "paikassa" + +# Button text for button used to search for classified ads. This button has text "perform" just next to it so user sees actually 2 words "perform search" where the "perform" is in separate label above the button, and then is the text of this button. +#: frontWidget.ui:123 +msgctxt "frontWidget|" +msgid "Search" +msgstr "Haku" + +# Tab title text in front widget for tab that shows details of operators own profile (==personal details) +#: frontWidget.ui:161 +msgctxt "frontWidget|" +msgid "My profile" +msgstr "Oma profiili" + +# Text field label in "operators profile" tab. The field in questions shows SHA1-digest e.g. the real address of the operator. +#: frontWidget.ui:177 frontWidget.ui:932 +msgctxt "frontWidget|" +msgid "Profile address" +msgstr "Profiilin osoite" + +# Text field label in "operators profile" tab. The field in questions shows nickname of the operator +#: frontWidget.ui:208 frontWidget.ui:643 +msgctxt "frontWidget|" +msgid "Nickname" +msgstr "Liikanimi" + +# Text field label in "operators profile" tab. The field in questions shows "hello world" text of the operator. +#: frontWidget.ui:225 frontWidget.ui:669 +msgctxt "frontWidget|" +msgid "Greeting text" +msgstr "Tervehdysteksti" + +# Tooltip-text of a text field in "operators profile" tab. The field in questions shows greeting text of the operator. +#: frontWidget.ui:232 +msgctxt "frontWidget|" +msgid "For the rest of the world. " +msgstr "Koko maailmalle." + +# Text field label in "operators profile" tab. The field in questions shows given name (first name) of the operator. +#: frontWidget.ui:239 frontWidget.ui:695 +msgctxt "frontWidget|" +msgid "First name" +msgstr "Etunimi" + +# Text field label in "operators profile" tab. The field in questions shows family name of the operator +#: frontWidget.ui:253 frontWidget.ui:715 +msgctxt "frontWidget|" +msgid "Family name" +msgstr "Sukunimi" + +# Text field label in "operators profile" tab. The field in questions shows place of residence of the operator +#: frontWidget.ui:263 +msgctxt "frontWidget|" +msgid "City/country" +msgstr "Kaupunki/maa" + +# Text field label in "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:273 +msgctxt "frontWidget|" +msgid "BTC address" +msgstr "BTC-lompakon osoite" + +# Tooltip-text for a text field "operators profile" tab. The field in questions shows address of bitcoin wallet of the operator. +#: frontWidget.ui:280 +msgctxt "frontWidget|" +msgid "If you wish to receive payments via BTC, include your BTC address too." +msgstr "" +"Jos meinaat saada maksuja bitcoinin kautta, julkaise myös lompakkosi osoite" + +# Text field label in "operators profile" tab. The field in questions shows what the user has to say about state of the world. +#: frontWidget.ui:287 frontWidget.ui:799 +msgctxt "frontWidget|" +msgid "State of the world" +msgstr "Maailman tila" + +# Tool-tip text of a field in "operators profile" tab. The field in questions shows what operator has to say about state of the world. +#: frontWidget.ui:294 +msgctxt "frontWidget|" +msgid "Longer explanation about state of the world" +msgstr "Vähän pidempi selitys maailman tilasta" + +# Checkbox text in "my profile" tab. The checkbox is question is a toggle for public/private status of the profile. When checkbox is checked, the profile will be made private. +#: frontWidget.ui:301 +msgctxt "frontWidget|" +msgid "Profile is private" +msgstr "Profiili on yksityinen" + +# Button text inside "My profile" tab. Clicking the button opens a dialog that prompts user to select list of operators that can read his profile that he has previously marked as private (e.g. accessible only to listed readers) +#: frontWidget.ui:308 +msgctxt "frontWidget|" +msgid "Readers of profile" +msgstr "Profiilin lukijat" + +# Explanation text inside "my profile" tab. +#: frontWidget.ui:315 +msgctxt "frontWidget|" +msgid "None of the fields is mandatory" +msgstr "Yksikään kentistä ei ole pakollinen" + +# Text field label inside "my profile" tab. The field whose label this is shows the time when profile was last updated. +#: frontWidget.ui:322 +msgctxt "frontWidget|" +msgid "Time of last update" +msgstr "Edellisen päivityksen ajankohta" + +# Button text for button inside "my profile" tab. By clicking this button user makes her edits known to rest of the world. +#: frontWidget.ui:342 +msgctxt "frontWidget|" +msgid "Publish" +msgstr "Julkaise" + +# Button text for button inside "my profile" tab. By clicking this button user discards her edits. +#: frontWidget.ui:355 +msgctxt "frontWidget|" +msgid "Revert changes" +msgstr "Peruuta muutokset" + +# Text label on top of "my profile" tab. Below this label is a list of text fields and other stuff that user may edit regarding herself. +#: frontWidget.ui:369 +msgctxt "frontWidget|" +msgid "Details of operator profile:" +msgstr "Operaattorin profiili" + +# Text in image-placeholder inside "my profile" tab. When user has not selected any image for her profile details, this text is shown in place of the image. Clicking on text gives user option to select the image file for profile. +#: frontWidget.ui:401 +msgctxt "frontWidget|" +msgid "" +"\n" +"\n" +"Click \n" +"to \n" +"Add\n" +"Image" +msgstr "" +"\n" +"\n" +"Klikkaa \n" +"Lisätäksesi\n" +"Kuva" + +# Title text inside "my profile" tab. Title text is for a list of files that user is currently sharing with other users. +#: frontWidget.ui:425 frontWidget.ui:845 +msgctxt "frontWidget|" +msgid "Shared files" +msgstr "Jaetut tiedostot" + +# Title text inside "my profile" tab. Title text is for a list of comments made by other users regarding operators profile. +#: frontWidget.ui:461 frontWidget.ui:892 +msgctxt "frontWidget|" +msgid "Latest comments" +msgstr "Viimeisimmät kommentit" + +# Tab title text. When this tab is opened, user is shown a view of his frequent contacts. +#: frontWidget.ui:504 +msgctxt "frontWidget|" +msgid "Contacts" +msgstr "Osoitekirja" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to enter details of operator to be added into contact list +#: frontWidget.ui:536 +msgctxt "frontWidget|" +msgid "Add contact" +msgstr "Lisää profiili" + +# Button text inside "contacts" tab. Clicking this button removes a contact from list. +#: frontWidget.ui:543 +msgctxt "frontWidget|" +msgid "Remove contact" +msgstr "Poista profiili" + +# Button text inside "contacts" tab. Clicking this button displays details of the selected contact. +#: frontWidget.ui:550 +msgctxt "frontWidget|" +msgid "View profile" +msgstr "Katsele profiilia" + +# Button text inside "contacts" tab. Clicking this button opens a dialog prompting user to send a message selected contact. +#: frontWidget.ui:557 +msgctxt "frontWidget|" +msgid "Send message" +msgstr "Lähetä viesti" + +# Tab text in front widget. When user selects this tab, he is presented with list of his private correspondence. +#: frontWidget.ui:569 +msgctxt "frontWidget|" +msgid "Private messages" +msgstr "Yksityiset viestit" + +# Tab text in front widget. This tab shows details of some other operator of classified ads. Normally this text is replaced with nickname of the operator but if nothing like this is available, this text may be shown, this is the "default text". +#: frontWidget.ui:624 +msgctxt "frontWidget|" +msgid "Profile details" +msgstr "Profiilin yksityiskohdat" + +# Label text of a text-field. The text-field in question shows place of residence of operator whose details are on display. +#: frontWidget.ui:741 +msgctxt "frontWidget|" +msgid "City/Country" +msgstr "Kaupunki/maa" + +# Label text of a text-field. The text-field in question shows bitcoin wallet address of operator whose details are on display. +#: frontWidget.ui:767 +msgctxt "frontWidget|" +msgid "BTC Addr" +msgstr "BTC-osoite" + +# Text for image-placeholder inside "profile details" tab. When some particular operator has not selected any image for her profile, this text is shown in place of the image. Note html format. +#: frontWidget.ui:829 +msgctxt "frontWidget|" +msgid "" +"




No

Image

Inserted

" +msgstr "" +"




Ei

Kuvaa

Valittuna

" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a new-message editor is opened. +#: frontWidget.ui:874 +msgctxt "frontWidget|" +msgid "Send message to operator" +msgstr "Lähetä operaattorille viesti" + +# Button text inside "defails of operator profile" tab. When the button is clicked, dialog listing readers of the (private) profile. +#: frontWidget.ui:879 +msgctxt "frontWidget|" +msgid "View readers" +msgstr "Lukijat" + +# Button text inside "defails of operator profile" tab. When the button is clicked, a dialog is opened, dialog prompts user to enter a comment about the operator. +#: frontWidget.ui:927 +msgctxt "frontWidget|" +msgid "Comment" +msgstr "Kommentti" + +# Button text inside "defails of operator profile" tab. When the button is clicked, the operator whose data is on display is added into contact-list. +#: frontWidget.ui:959 +msgctxt "frontWidget|" +msgid "Add to contacts" +msgstr "Lisää osoitekirjaan" + +# Dialog title text. Dialog is for adding a link to text being edited. +#: ui/insertLink.ui:26 +msgctxt "insertLinkDialog|" +msgid "Insert link" +msgstr "Lisää linkki" + +# Label for a combobox-field inside "insert link" dialog. Next to this label is set of fields that together make up a valid URL to be inserted. +#: ui/insertLink.ui:39 +msgctxt "insertLinkDialog|" +msgid "URL" +msgstr "URL" + +# Label for a text-field inside "insert link" dialog. Next to this label is field where user is supposed the text that will be shown as the link. Consider
the text then "the text" is text that user is prompted to enter with this label. +#: ui/insertLink.ui:112 +msgctxt "insertLinkDialog|" +msgid "Link label in text" +msgstr "Linkin päällepäin näkyvä teksti" + +# Dialog title text. Dialog prompts user to manually add a network-connection to another node in the network. +#: ui/manualConnectionDialog.ui:26 +msgctxt "manualConnectionDialog|" +msgid "Manually add node to connection queue" +msgstr "Lisää solmu yhteydenottolistalle" + +# Label text of numeric field. The numeric (input) field is TCP port of the remote node that will be connected. +#: ui/manualConnectionDialog.ui:48 +msgctxt "manualConnectionDialog|" +msgid "Remote node listen port" +msgstr "Solmun vastaanotto-portti (TCP-port)" + +# Label for text field inside "manually add connection" dialog. Text field whose label this is requires user to type in network address (ip addr or dns name) of the remote node. +#: ui/manualConnectionDialog.ui:78 +msgctxt "manualConnectionDialog|" +msgid "Remote node network address" +msgstr "Solmun verkko-osoite" + +# Tooltip text for a text field inside "manually add connection" dialog. The text field whose tooltip this is the remote network address input field. +#: ui/manualConnectionDialog.ui:91 +msgctxt "manualConnectionDialog|" +msgid "IPv4, IPv6 or DNS name" +msgstr "IPv4, IPV6 tai DNS-nimi" + +# Dialog title text for dialog that requires user to enter information about file to be shared with others. Metadata query dialog in practice. +#: ui/metadataQuery.ui:26 +msgctxt "metadataQuery|" +msgid "File information" +msgstr "Tiedoston ominaisuudet" + +# Label text for a input field. The input field whose label this is asks for file name (filesystem file name) +#: ui/metadataQuery.ui:60 +msgctxt "metadataQuery|" +msgid "Name of the file:" +msgstr "Tiedoston nimi:" + +# Label text for a input field. The input field whose label this is asks for owner of the file contents. This may be copyright holder, depending on contracts and legislation followed. +#: ui/metadataQuery.ui:81 +msgctxt "metadataQuery|" +msgid "Owner of file (name or SHA1 if CA operator):" +msgstr "Tiedoston omistaja:" + +# Label text for a input field. The input field whose label this is asks for license under which the file may be used. Combobox lists some pre-filled options like GPL,BSD,CC-BY etc. but user may also enter any text into field. +#: ui/metadataQuery.ui:111 +msgctxt "metadataQuery|" +msgid "License of use:" +msgstr "Käyttöä koskeva lisenssi:" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:122 +msgctxt "metadataQuery|" +msgid "Public domain" +msgstr "Public domain" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:127 +msgctxt "metadataQuery|" +msgid "GPL" +msgstr "GPL" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:132 +msgctxt "metadataQuery|" +msgid "LGPL" +msgstr "LGPL" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:137 +msgctxt "metadataQuery|" +msgid "BSD" +msgstr "BSD" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:142 +msgctxt "metadataQuery|" +msgid "CC-BY" +msgstr "CC-BY" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:147 +msgctxt "metadataQuery|" +msgid "CC-BY-SA" +msgstr "CC-BY-SA" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:152 +msgctxt "metadataQuery|" +msgid "CC-BY-ND" +msgstr "CC-BY-ND" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:157 +msgctxt "metadataQuery|" +msgid "CC-BY-NC" +msgstr "CC-BY-NC" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:162 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-SA" +msgstr "CC-BY-NC-SA" + +# Combobox content text for license selection combobox. License texts might be wise leave as they are - untranslated +#: ui/metadataQuery.ui:167 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-ND" +msgstr "CC-BY-NC-ND" + +# Label text for a input field. The input field whose label this is asks for mime-type of the field about to be published. +#: ui/metadataQuery.ui:182 +msgctxt "metadataQuery|" +msgid "Mime-type:" +msgstr "Mime-tyyppi:" + +# Label text for a input field. The input field whose label this is asks for descriptive text about file about to be published. +#: ui/metadataQuery.ui:199 +msgctxt "metadataQuery|" +msgid "Description of file:" +msgstr "Kuvaus:" + +# Prompt text on top of "metadata query" dialog. Below this label is set of input-fields that make up the meta-data of a file to be published. +#: ui/metadataQuery.ui:218 +msgctxt "metadataQuery|" +msgid "Enter information regarding file before publish:" +msgstr "Syötä tiedoston ominaisuudet ennen julkaisua:" + +# Dialog title text for a dialog that offers possibility to post a new classified ad for others to read. +#: ui/newClassifiedAd.ui:26 +msgctxt "newCaDialog|" +msgid "Post a new classified ad" +msgstr "Lähetä uusi luokiteltu ilmoitus" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the first word in that sentece. +#: ui/newClassifiedAd.ui:47 +msgctxt "newCaDialog|" +msgid "About" +msgstr "Aiheesta" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 3rd word in that sentece. +#: ui/newClassifiedAd.ui:65 +msgctxt "newCaDialog|" +msgid "of" +msgstr "koskien" + +# This label text is part of sentence, whole sentence goes for example "About buying of cars in sweden" where the words "bying", "cars", and "sweden" are combo-boxes that user may choose from ; this word here is the 5th word in that sentece. +#: ui/newClassifiedAd.ui:81 +msgctxt "newCaDialog|" +msgid "in" +msgstr "paikassa" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, requires user to enter a subject (topic) for her posting. +#: ui/newClassifiedAd.ui:95 +msgctxt "newCaDialog|" +msgid "Subject" +msgstr "Aihe" + +# Label text of a text field inside "post a new classified ad" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newClassifiedAd.ui:129 +msgctxt "newCaDialog|" +msgid "Attachment: " +msgstr "Liite:" + +# Push-button text inside "post a new classified ad" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newClassifiedAd.ui:149 +msgctxt "newCaDialog|" +msgid "Add" +msgstr "Lisää" + +# Dialog title text for dialog that prompts user to edit+send a private message to another operator +#: ui/newPrivMsg.ui:26 +msgctxt "newPrivMsgDialog|" +msgid "Send a private message" +msgstr "Lähetä yksityinen viesti" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is "subject" or "topic" field of the message. +#: ui/newPrivMsg.ui:39 +msgctxt "newPrivMsgDialog|" +msgid "Subject" +msgstr "Aihe" + +# Text field label for input field inside "compose a new private message dialog". The text field in question is SHA1 address of the recipient. +#: ui/newPrivMsg.ui:53 +msgctxt "newPrivMsgDialog|" +msgid "Recipient" +msgstr "Vastaanottaja" + +# Label text of a text field inside "compose a new private message" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newPrivMsg.ui:83 +msgctxt "newPrivMsgDialog|" +msgid "Attachments: " +msgstr "Liitteet:" + +# Push-button text inside "compose a new private message" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newPrivMsg.ui:103 +msgctxt "newPrivMsgDialog|" +msgid "Attach" +msgstr "Liitä" + +# Dialog title text for dialog that prompts user to edit+send a comment regarding another operator. +#: ui/newProfileComment.ui:26 +msgctxt "newProfileCommentDialog|" +msgid "Comment a operators profile" +msgstr "Kommentoi operaattorin profiilia" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is "subject" or "topic" field of the comment. +#: ui/newProfileComment.ui:39 +msgctxt "newProfileCommentDialog|" +msgid "Subject" +msgstr "Aihe" + +# Text field label for input field inside "compose a comment about operator dialog". The text field in question is SHA1 digest (address) of the operator being commented. +#: ui/newProfileComment.ui:53 +msgctxt "newProfileCommentDialog|" +msgid "Commented profile" +msgstr "Kommentoitu profiili" + +# Label text of a text field inside "compose a comment about operator dialog" dialog. The input field whose label this is, will show name file that is attached to the post. +#: ui/newProfileComment.ui:89 +msgctxt "newProfileCommentDialog|" +msgid "Attachments:" +msgstr "Liitteet:" + +# Push-button text inside "compose a comment about operator dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newProfileComment.ui:109 +msgctxt "newProfileCommentDialog|" +msgid "Attach" +msgstr "Liitä" + +# Dialog title text for a dialog that prompts user to edit+publish a text document. +#: ui/newTextDocument.ui:26 +msgctxt "newTextDocumentDialog|" +msgid "Edit and publish a new text document" +msgstr "Muokkaa ja julkaise uusi tekstidokumentti" + +# Text field label for input field inside "compose a new text document" dialog. The text field in question is "subject" or "topic" field of the text document. +#: ui/newTextDocument.ui:39 +msgctxt "newTextDocumentDialog|" +msgid "Document title" +msgstr "Dokumentin aihe" + +# Label text of a text field inside "edit+publish a new text document dialog" dialog. The input field whose label this is, will show name file that is attached to the document. +#: ui/newTextDocument.ui:75 +msgctxt "newTextDocumentDialog|" +msgid "Attachments:" +msgstr "Liitteet:" + +# Push-button text inside "edit+publish a new text document dialog" dialog. When user hits the button, another dialog is opened and user is required to select a file to be attached. +#: ui/newTextDocument.ui:95 +msgctxt "newTextDocumentDialog|" +msgid "Attach" +msgstr "Liitä" + +# Dialog title text for dialog that will show a listing of previous comments regarding operator (user himself or some other operator, it is the same dialog in both cases) +#: ui/profileCommentDisplay.ui:26 +msgctxt "profileCommentDisplay|" +msgid "Comments regarding operator" +msgstr "Kommentit koskien operaattoria" + +# Dialog title text for a dialog that prompts user to choose operators who will be able to read details, comments and shared files of his profile. +#: ui/profileReadersDialog.ui:26 +msgctxt "profileReadersDialog|" +msgid "Profile readers list" +msgstr "Profiilin lukijalista" + +# Text field label inside "add profiles to list of readers" dialog. The text field whose prompt this is asks for search-words to be used to filter operator names/addresses from database. +#: ui/profileReadersDialog.ui:37 +msgctxt "profileReadersDialog|" +msgid "Search for profiles to add" +msgstr "Etsi lisättäviä profiileja" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is will list operators whose nickname,name or other search-term matches conditions entered by user. +#: ui/profileReadersDialog.ui:44 +msgctxt "profileReadersDialog|" +msgid "First 100 matching profiles:" +msgstr "Ensimmäiset 100 osumaa:" + +# Push-button label inside "add profiles to list of readers" dialog. When user hits this button, operators that are selected from neighboring list will be added to list of readers of operators profile. +#: ui/profileReadersDialog.ui:66 +msgctxt "profileReadersDialog|" +msgid "Add seleted to list of readers" +msgstr "Lisää valitut profiilin lukijoiksi" + +# Text field label inside "add profiles to list of readers" dialog. The text listing-field whose explanation this is shows current list operators profiles readers. +#: ui/profileReadersDialog.ui:73 +msgctxt "profileReadersDialog|" +msgid "Current list of readers" +msgstr "Lukijoiden nykyinen lista" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, the dialog is dismissed. +#: ui/profileReadersDialog.ui:90 +msgctxt "profileReadersDialog|" +msgid "Close" +msgstr "Sulje" + +# Push button label inside dialog that asks for list of operators who are readers of operators own profile. When user this this button, selected operators are removed from the list. +#: ui/profileReadersDialog.ui:109 +msgctxt "profileReadersDialog|" +msgid "Remove selected" +msgstr "Poista valitut" + +# Dialog title-text for a search dialog. +#: ui/searchDisplay.ui:26 +msgctxt "searchDisplay|" +msgid "Search data storage" +msgstr "Etsi tietovarastosta" + +# Label text of a text field inside "search" dialog. The text field in question requires user to enter one or more words that are then searched from all available (public) documents. +#: ui/searchDisplay.ui:60 +msgctxt "searchDisplay|" +msgid "Words:" +msgstr "Sanoja" + +# Push button label inside "search" dialog. When button is hit, search using given words is performed. +#: ui/searchDisplay.ui:70 +msgctxt "searchDisplay|" +msgid "Search" +msgstr "Hae" + +# Check-box label inside "search" dialog. When box is checked, the search is done also in neighboring nodes in the network, not only in local storage. +#: ui/searchDisplay.ui:87 +msgctxt "searchDisplay|" +msgid "Network search" +msgstr "Verkkohaku" + +# Check-box label inside "search" dialog. When box is checked, the search may include classified ads in its resultset. +#: ui/searchDisplay.ui:101 +msgctxt "searchDisplay|" +msgid "Search ads" +msgstr "Etsi ilmoituksista" + +# Check-box label inside "search" dialog. When box is checked, the search may include operator profiles in its resultset. +#: ui/searchDisplay.ui:111 +msgctxt "searchDisplay|" +msgid "Search profiles" +msgstr "Etsi profiileista" + +# Check-box label inside "search" dialog. When box is checked, the search may include profile commetns in its resultset. +#: ui/searchDisplay.ui:121 +msgctxt "searchDisplay|" +msgid "Search comments" +msgstr "Etsi kommenteista" + +# Dialog title text for "settings" dialog. +#: ui/settingsDialog.ui:26 +msgctxt "settingsDialog|" +msgid "Node settings" +msgstr "Solmun asetukset" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:39 +msgctxt "settingsDialog|" +msgid "TCP listen port" +msgstr "TCP-kuunteluportti" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has TCP port number of the node. +#: ui/settingsDialog.ui:58 +msgctxt "settingsDialog|" +msgid "Incoming TCP listen port. Change requires node restart. " +msgstr "" +"Kuunteluportti. Tämän vaihtaminen edellyttää ohjelman uudelleenkäynnistystä." + +# Text field label for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:84 +msgctxt "settingsDialog|" +msgid "DNS name of node" +msgstr "Solmun nimipalvelunimi" + +# Tooltip-text for input field inside "settings" dialog. The textual input field whose label this is requires user to enter DNS-name of the node (or leave it empty, if no name is assigned) +#: ui/settingsDialog.ui:91 +msgctxt "settingsDialog|" +msgid "" +"If you have permanent DNS name for your machine, you may type it here to be " +"used to reference your node" +msgstr "" +"Jos solmullasi on pysyvä nimi nimipalvelussa, voit syöttää sen tähän jotta " +"muut solmut voivat siihen viitata" + +# Text label inside "settings" dialog. Under this label is set of numerical input fields that user may use to adjust the amount of items he wishes to keep in his local storage. +#: ui/settingsDialog.ui:103 +msgctxt "settingsDialog|" +msgid "Data store limits:" +msgstr "Tietokannan sisällön enimmäismäärät:" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of operator profiles to keep in storage. +#: ui/settingsDialog.ui:115 +msgctxt "settingsDialog|" +msgid "Nr of profiles to keep" +msgstr "Talletettavien profiilien määrä" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of private messages to keep in storage. +#: ui/settingsDialog.ui:154 +msgctxt "settingsDialog|" +msgid "Nr of private messages to keep" +msgstr "Yksityistien viestien määrä" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of binary files to keep in storage. +#: ui/settingsDialog.ui:193 +msgctxt "settingsDialog|" +msgid "Nr of binary blobs to keep" +msgstr "Binääritiedostojen määrä" + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:232 +msgctxt "settingsDialog|" +msgid "Nr of CAs to keep" +msgstr "Ilmoitusten määrä" + +# Tooltip-text for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of classified ads to keep in storage. +#: ui/settingsDialog.ui:251 +msgctxt "settingsDialog|" +msgid "" +"Number of classified ads to keep in storage, total, including all " +"classifications. Oldest referenced will be deleted first." +msgstr "" +"Paikallisessa tietokannassa talletettavien ilmoitusten määrä, koskien " +"kaikkia luokitteluja. Viimeisimmäksi viitatut tullaan poistamaan " +"ensimmäisenä." + +# Text field label for input field inside "settings" dialog. The numerical input field whose label this is has maximum number of comments regarding operators to keep in storage. +#: ui/settingsDialog.ui:274 +msgctxt "settingsDialog|" +msgid "Nr of profile comments to keep" +msgstr "Kommenttien määrä" + +# Dialog title text for a dialog that shows network connectivity details. +#: ui/statusDialog.ui:26 +msgctxt "statusDialog|" +msgid "Network and connection status" +msgstr "Verkon ja yhteyksien tila" + +# Text field label for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:48 +msgctxt "statusDialog|" +msgid "Detected own IPv4" +msgstr "Oma havaittu IPv4" + +# Tooltip-text for display-item inside "network status" dialog. The display-item shows ipv4-network address of the node. Usually it is (public) IP addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:61 ui/statusDialog.ui:93 +msgctxt "statusDialog|" +msgid "" +"Should your friend have trouble connecting, give her this address with port " +"number" +msgstr "" +"Jos ystäväsi ei pääse verkon jäseneksi, yritä antaa hänelle tämä osoite " +"porttinumeron kera" + +# Text field label for display-item inside "network status" dialog. The display-item shows IPV6-address of the node. Usually it is (public) IPv6 addr of the very machine that user is using at the moment. +#: ui/statusDialog.ui:74 +msgctxt "statusDialog|" +msgid "IPv6" +msgstr "IPv6" + +# Text field label for display-item inside "network status" dialog. The display-item shows listen port of the node. +#: ui/statusDialog.ui:113 +msgctxt "statusDialog|" +msgid "TCP port currently used" +msgstr "Käytössä oleva TCP-portti" + +# Text field label for a list-item inside "network status" dialog. The list-item shows list of currently connected other nodes in the network. +#: ui/statusDialog.ui:151 +msgctxt "statusDialog|" +msgid "Currently open connections" +msgstr "Avoimet yhteydet" + +# Push-button label for button inside "network status" dialog. When button is hit, another dialog is opened, asking user for details about the remote node to connect. +#: ui/statusDialog.ui:195 +msgctxt "statusDialog|" +msgid "Manually add connection" +msgstr "Lisää yhteys käsipelillä" + +# Push-button label for button inside "network status" dialog. When button is hit, dialog is dismissed. +#: ui/statusDialog.ui:202 +msgctxt "statusDialog|" +msgid "Close" +msgstr "Sulje" diff -Nru classified-ads-0.07/po/Makefile classified-ads-0.09/po/Makefile --- classified-ads-0.07/po/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/po/Makefile 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,43 @@ +# +# Classified Ads is Copyright (c) Antti Järvinen 2013. +# +# This file is part of Classified Ads. +# +# Classified Ads is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# Classified Ads 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with Classified Ads; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# + +# If adding a new translation, list it here. Also see the list +# in "install" target. +translations = fi.mo sv.mo da.mo + +.SUFFIXES: .mo .po + +CLEAN_CMD ?= rm -f + +all: $(translations) + +.po.mo: + $(MSGFMT_PATH)msgfmt $*.po -o $*.mo + +clean: + $(CLEAN_CMD) $(translations) + +install: all + install -m 644 -D -T fi.mo \ + $(DESTDIR)/usr/share/locale/fi/LC_MESSAGES/classified-ads.mo + install -m 644 -D -T sv.mo \ + $(DESTDIR)/usr/share/locale/sv/LC_MESSAGES/classified-ads.mo + install -m 644 -D -T da.mo \ + $(DESTDIR)/usr/share/locale/da/LC_MESSAGES/classified-ads.mo diff -Nru classified-ads-0.07/po/sv.po classified-ads-0.09/po/sv.po --- classified-ads-0.07/po/sv.po 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/po/sv.po 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,2187 @@ +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Language: sv_SE\n" +"X-Qt-Contexts: true\n" + +# Man kan spara pengar också? +#: ui/attachmentlistdialog.cpp:60 +msgctxt "AttachmentListDialog|" +msgid "Save file to disk.." +msgstr "Spara till filsystem.." + +#: ui/attachmentlistdialog.cpp:151 ui/attachmentlistdialog.cpp:153 +msgctxt "AttachmentListDialog|" +msgid "files" +msgstr "filer" + +#: ui/attachmentlistdialog.cpp:155 +msgctxt "AttachmentListDialog|" +msgid "Choose file name for saving" +msgstr "Välj ett namn for din fil" + +#: ui/attachmentlistdialog.cpp:166 +msgctxt "AttachmentListDialog|" +msgid "Error" +msgstr "Fel" + +#: ui/attachmentlistdialog.cpp:167 +msgctxt "AttachmentListDialog|" +msgid "File open error" +msgstr "Fel i att öppna en fil" + +#: datamodel/binaryfilelistingmodel.cpp:173 +msgctxt "BinaryFileListingModel|" +msgid "Name or fingerprint of file" +msgstr "Namn eller SHA1 kontrollsumm av filen" + +#: datamodel/calistingmodel.cpp:50 datamodel/calistingmodel.cpp:143 +msgctxt "CAListingModel|" +msgid "Date" +msgstr "Datum" + +#: datamodel/calistingmodel.cpp:51 datamodel/calistingmodel.cpp:142 +msgctxt "CAListingModel|" +msgid "Subject" +msgstr "Rubrik" + +#: datamodel/camodel.cpp:127 +msgctxt "ClassifiedAdsModel|" +msgid "Buying" +msgstr "Inköpning" + +#: datamodel/camodel.cpp:129 +msgctxt "ClassifiedAdsModel|" +msgid "Selling" +msgstr "Försäljing" + +#: datamodel/camodel.cpp:131 +msgctxt "ClassifiedAdsModel|" +msgid "Giving away" +msgstr "Donering" + +#: datamodel/camodel.cpp:133 +msgctxt "ClassifiedAdsModel|" +msgid "Wanting" +msgstr "Önskande sig" + +#: datamodel/camodel.cpp:135 +msgctxt "ClassifiedAdsModel|" +msgid "Renting" +msgstr "Att hyra" + +#: datamodel/camodel.cpp:137 +msgctxt "ClassifiedAdsModel|" +msgid "Announcement" +msgstr "Meddelande" + +#: datamodel/camodel.cpp:210 +msgctxt "ClassifiedAdsModel|" +msgid "Cars" +msgstr "Bilar" + +#: datamodel/camodel.cpp:212 +msgctxt "ClassifiedAdsModel|" +msgid "Boats" +msgstr "Båtar" + +#: datamodel/camodel.cpp:214 +msgctxt "ClassifiedAdsModel|" +msgid "Bikes" +msgstr "Cyklar" + +#: datamodel/camodel.cpp:216 +msgctxt "ClassifiedAdsModel|" +msgid "Other vehicles" +msgstr "Andra fordon" + +#: datamodel/camodel.cpp:218 +msgctxt "ClassifiedAdsModel|" +msgid "Vehicle parts" +msgstr "Fordondelar" + +#: datamodel/camodel.cpp:220 +msgctxt "ClassifiedAdsModel|" +msgid "Habitation" +msgstr "Bostad" + +#: datamodel/camodel.cpp:222 +msgctxt "ClassifiedAdsModel|" +msgid "Household appliances" +msgstr "Hushållsapparater" + +#: datamodel/camodel.cpp:224 +msgctxt "ClassifiedAdsModel|" +msgid "Furniture" +msgstr "Möbler" + +#: datamodel/camodel.cpp:226 +msgctxt "ClassifiedAdsModel|" +msgid "Clothing" +msgstr "Kläder" + +#: datamodel/camodel.cpp:228 +msgctxt "ClassifiedAdsModel|" +msgid "Tools" +msgstr "Verktyg" + +#: datamodel/camodel.cpp:230 +msgctxt "ClassifiedAdsModel|" +msgid "Sports" +msgstr "Sports" + +#: datamodel/camodel.cpp:232 +msgctxt "ClassifiedAdsModel|" +msgid "Music" +msgstr "Musik" + +#: datamodel/camodel.cpp:234 +msgctxt "ClassifiedAdsModel|" +msgid "Books" +msgstr "Böcker" + +#: datamodel/camodel.cpp:236 +msgctxt "ClassifiedAdsModel|" +msgid "Movies" +msgstr "Bio" + +#: datamodel/camodel.cpp:238 +msgctxt "ClassifiedAdsModel|" +msgid "Animals" +msgstr "Djur" + +#: datamodel/camodel.cpp:240 +msgctxt "ClassifiedAdsModel|" +msgid "Electronics" +msgstr "Elektroniska aparater" + +#: datamodel/camodel.cpp:242 +msgctxt "ClassifiedAdsModel|" +msgid "Jobs" +msgstr "Arbete" + +#: datamodel/camodel.cpp:244 +msgctxt "ClassifiedAdsModel|" +msgid "Transportation" +msgstr "Transport" + +#: datamodel/camodel.cpp:246 +msgctxt "ClassifiedAdsModel|" +msgid "Services" +msgstr "Tjänster" + +#: datamodel/camodel.cpp:248 +msgctxt "ClassifiedAdsModel|" +msgid "Healthcare" +msgstr "Sjukvård" + +#: datamodel/camodel.cpp:250 +msgctxt "ClassifiedAdsModel|" +msgid "Foodstuff" +msgstr "Livsmedel" + +#: datamodel/camodel.cpp:252 +msgctxt "ClassifiedAdsModel|" +msgid "Software" +msgstr "Programvara" + +#: datamodel/camodel.cpp:254 +msgctxt "ClassifiedAdsModel|" +msgid "Events" +msgstr "Händelser" + +#: datamodel/camodel.cpp:256 +msgctxt "ClassifiedAdsModel|" +msgid "Education" +msgstr "Utbildning" + +#: datamodel/camodel.cpp:258 +msgctxt "ClassifiedAdsModel|" +msgid "Finance" +msgstr "Finans" + +#: datamodel/camodel.cpp:260 +msgctxt "ClassifiedAdsModel|" +msgid "Jewelry" +msgstr "Smycken" + +#: datamodel/camodel.cpp:262 +msgctxt "ClassifiedAdsModel|" +msgid "Religious rituals" +msgstr "Religiösa ritualer" + +#: datamodel/camodel.cpp:264 +msgctxt "ClassifiedAdsModel|" +msgid "Philosophy" +msgstr "Filosofi" + +#: datamodel/camodel.cpp:908 +msgctxt "ClassifiedAdsModel|" +msgid "Any country" +msgstr "Alla länder" + +#: datamodel/connectionlistingmodel.cpp:142 +msgctxt "ConnectionListingModel|" +msgid "Peer network address" +msgstr "Gränsande datorns adress" + +#: datamodel/connectionlistingmodel.cpp:145 +msgctxt "ConnectionListingModel|" +msgid "Inbound connections are those where peer initiated connection" +msgstr "" +"Inkommande förbindelse är sådan när en annan dator öppnade dataströmmen " + +#: datamodel/connectionlistingmodel.cpp:148 +msgctxt "ConnectionListingModel|" +msgid "Data transferred from peer to your node" +msgstr "Data från din dator" + +#: datamodel/connectionlistingmodel.cpp:151 +msgctxt "ConnectionListingModel|" +msgid "Data transferred to peer from your node" +msgstr "Data till din dator" + +#: datamodel/connectionlistingmodel.cpp:154 +msgctxt "ConnectionListingModel|" +msgid "Time when connection was opened" +msgstr "Tid när dataström öppnades" + +#: datamodel/connectionlistingmodel.cpp:164 +msgctxt "ConnectionListingModel|" +msgid "Address" +msgstr "Adress" + +#: datamodel/connectionlistingmodel.cpp:167 +msgctxt "ConnectionListingModel|" +msgid "Inbound" +msgstr "Inkommande" + +#: datamodel/connectionlistingmodel.cpp:170 +msgctxt "ConnectionListingModel|" +msgid "Bytes in" +msgstr "Oktett in" + +#: datamodel/connectionlistingmodel.cpp:173 +msgctxt "ConnectionListingModel|" +msgid "Bytes out" +msgstr "Oktett ut" + +#: datamodel/connectionlistingmodel.cpp:176 +msgctxt "ConnectionListingModel|" +msgid "Open time" +msgstr "Öppningstid" + +#: datamodel/contactlistingmodel.cpp:73 +msgctxt "ContactListingModel|" +msgid "Yes" +msgstr "Ja" + +#: datamodel/contactlistingmodel.cpp:75 +msgctxt "ContactListingModel|" +msgid "Unknown" +msgstr "Okänt" + +#: datamodel/contactlistingmodel.cpp:98 +msgctxt "ContactListingModel|" +msgid "Actual network address (SHA1) of the contact" +msgstr "SHA1 av din contact" + +#: datamodel/contactlistingmodel.cpp:101 +msgctxt "ContactListingModel|" +msgid "Locally given nickname ; user may set her own nickname himself" +msgstr "Smeknamn" + +#: datamodel/contactlistingmodel.cpp:104 +msgctxt "ContactListingModel|" +msgid "Public statement if this operator to be trusted in transactions" +msgstr "Om den här kontakt ska bli förtröstad?" + +#: datamodel/contactlistingmodel.cpp:114 +msgctxt "ContactListingModel|" +msgid "Address" +msgstr "Adress" + +#: datamodel/contactlistingmodel.cpp:117 +msgctxt "ContactListingModel|" +msgid "Nickname" +msgstr "Smeknamn" + +#: datamodel/contactlistingmodel.cpp:120 +msgctxt "ContactListingModel|" +msgid "Publicly trusted" +msgstr "Offentlig förtroende" + +#: datamodel/contentencryptionmodel.cpp:86 +msgctxt "ContentEncryptionModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "Kunde inte generera SSL-nyckel, utgående.." + +#: datamodel/contentencryptionmodel.cpp:94 +msgctxt "ContentEncryptionModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "Kunde inte generera x509-cert, utgående.." + +#: datamodel/contentencryptionmodel.cpp:192 +#: datamodel/contentencryptionmodel.cpp:290 +msgctxt "ContentEncryptionModel|" +msgid "RSA Private key key saving went wrong" +msgstr "Kunde inte persist RSA-nyckel" + +#: datamodel/contentencryptionmodel.cpp:637 +msgctxt "ContentEncryptionModel|" +msgid "No suitable de-cryption key found" +msgstr "Hemlig nyckel för kryptering finns inte" + +#: controller.cpp:103 +msgctxt "Controller|" +msgid "Classified ads" +msgstr "Annonser" + +#: controller.cpp:135 +msgctxt "Controller|" +msgid "Enter password for protection of your messages:" +msgstr "Ge ett lösenord: " + +#: controller.cpp:405 +msgctxt "Controller|" +msgid "Fetching item from network.." +msgstr "Hämtning objektet.." + +#: controller.cpp:430 +msgctxt "Controller|" +msgid "E&xit" +msgstr "Stänga" + +#: controller.cpp:432 +msgctxt "Controller|" +msgid "Exit the application" +msgstr "Stänga av program" + +#: controller.cpp:434 +msgctxt "Controller|" +msgid "&About" +msgstr "Om &annonser" + +#: controller.cpp:435 +msgctxt "Controller|" +msgid "Show the application's About box" +msgstr "Visa information av den här program" + +#: controller.cpp:437 +msgctxt "Controller|" +msgid "&Change password" +msgstr "Förändra din lösenord" + +#: controller.cpp:438 +msgctxt "Controller|" +msgid "Change password of current profile" +msgstr "Förändra lösenorden av vald profil" + +#: controller.cpp:440 +msgctxt "Controller|" +msgid "Create &new profile" +msgstr "Skapa en &ny profil" + +#: controller.cpp:441 +msgctxt "Controller|" +msgid "Makes a brand new user profile" +msgstr "Skapar en ny profil för operator" + +#: controller.cpp:443 +msgctxt "Controller|" +msgid "&Delete current profile" +msgstr "Radera vald profil" + +#: controller.cpp:444 +msgctxt "Controller|" +msgid "Deletes currently open profile" +msgstr "Ska glömma allt om vald profil" + +#: controller.cpp:446 +msgctxt "Controller|" +msgid "&Select another profile" +msgstr "Välja en annan profil" + +#: controller.cpp:447 +msgctxt "Controller|" +msgid "If you have multitude of profiles" +msgstr "Om du har flera profiler" + +#: controller.cpp:449 +msgctxt "Controller|" +msgid "Settings.." +msgstr "Inställningar.." + +#: controller.cpp:450 +msgctxt "Controller|" +msgid "Node-wide settings.." +msgstr "Inställningar av nod" + +#: controller.cpp:452 +msgctxt "Controller|" +msgid "Network status.." +msgstr "Status av nätverket.." + +#: controller.cpp:454 +msgctxt "Controller|" +msgid "Search.." +msgstr "Sök.." + +#: controller.cpp:471 +msgctxt "Controller|" +msgid "&File" +msgstr "&Filer" + +#: controller.cpp:516 +msgctxt "Controller|" +msgid "Enter new password:" +msgstr "Ge ett lösenord:" + +#: controller.cpp:544 controller.cpp:653 +msgctxt "Controller|" +msgid "Activate another profile with password" +msgstr "Välja en annan profil med en lösenord" + +#: controller.cpp:638 +msgctxt "Controller|" +msgid "Can't delete only profile." +msgstr "Man kan inte radera den sista profil" + +#: controller.cpp:642 +msgctxt "Controller|" +msgid "Permanently discard profile?" +msgstr "Radera profil?" + +#: controller.cpp:643 +msgctxt "Controller|" +msgid "There will be NO way to access content of this profile later" +msgstr "Det finns INTE en metod för att visa den här profil senare" + +#: controller.cpp:706 +msgctxt "Controller|" +msgid "Cant load node cert or key cert" +msgstr "Kan inte ladda smycken för din nod" + +#: controller.cpp:711 +msgctxt "Controller|" +msgid "File error" +msgstr "Fel med filen" + +#: controller.cpp:716 +msgctxt "Controller|" +msgid "Database error" +msgstr "Fel med databas" + +#: controller.cpp:722 controller.cpp:732 +msgctxt "Controller|" +msgid "Cryptographic module" +msgstr "Fel med kryptering" + +#: controller.cpp:727 +msgctxt "Controller|" +msgid "Database module" +msgstr "Fel med databas" + +#: controller.cpp:733 +msgctxt "Controller|" +msgid "Bad password" +msgstr "Fel lösenord" + +#: controller.cpp:949 +msgctxt "Controller|" +msgid "Could not find item from network.." +msgstr "Kunde inte hitta objektet från nätverket" + +#: controller.cpp:1062 +msgctxt "Controller|" +msgid "SHA1: " +msgstr "SHA1:" + +#: controller.cpp:1067 +msgctxt "Controller|" +msgid "Mime-Type: " +msgstr "Mime-Type:" + +#: controller.cpp:1073 +msgctxt "Controller|" +msgid "Description: " +msgstr "Beskrivning: " + +#: controller.cpp:1079 +msgctxt "Controller|" +msgid "Publisher: " +msgstr "Förläggare: " + +#: controller.cpp:1085 +msgctxt "Controller|" +msgid "Content owner: " +msgstr "Innehållsägare: " + +#: controller.cpp:1091 +msgctxt "Controller|" +msgid "License: " +msgstr "Licens: " + +#: controller.cpp:1097 +msgctxt "Controller|" +msgid "Name: " +msgstr "Namn: " + +#: controller.cpp:1104 +msgctxt "Controller|" +msgid "Date: " +msgstr "Datum: " + +#: ui/dialogbase.cpp:47 ui/dialogbase.cpp:101 +msgctxt "DialogBase|" +msgid "File way too big" +msgstr "Filen är alldeles för stor" + +#: ui/dialogbase.cpp:55 ui/dialogbase.cpp:109 +msgctxt "DialogBase|" +msgid "File too big" +msgstr "Filen är för stor" + +#: ui/dialogbase.cpp:85 ui/dialogbase.cpp:131 +msgctxt "DialogBase|" +msgid "File open error" +msgstr "Fel med öppningen av filen" + +#: ui/dialogbase.cpp:94 +msgctxt "DialogBase|" +msgid "Select file to be published" +msgstr "Välja filen som du will ha publicerad" + +#: ui/dialogbase.cpp:96 +msgctxt "DialogBase|" +msgid "Files (*.*)" +msgstr "Alla filer (*.*)" + +#: ui/editcontact.cpp:72 +msgctxt "EditContactDialog|" +msgid "Error" +msgstr "Fel" + +#: ui/editcontact.cpp:73 +msgctxt "EditContactDialog|" +msgid "Operator addr is not valid" +msgstr "Adress av operator är inte giltig" + +#: FrontWidget.cpp:93 +msgctxt "FrontWidget|" +msgid "Classified ads" +msgstr "Annonser" + +#: FrontWidget.cpp:94 +msgctxt "FrontWidget|" +msgid "My profile" +msgstr "Egen profil" + +#: FrontWidget.cpp:95 +msgctxt "FrontWidget|" +msgid "Contacts" +msgstr "Kontakter" + +#: FrontWidget.cpp:96 +msgctxt "FrontWidget|" +msgid "Private messages" +msgstr "Privat korrespondens" + +#: FrontWidget.cpp:155 +msgctxt "FrontWidget|" +msgid "Add shared file.." +msgstr "Addera en fil til nätverk.." + +#: FrontWidget.cpp:156 +msgctxt "FrontWidget|" +msgid "Stop advertising selected shared file" +msgstr "Sluta annonsera den markerade filen" + +#: FrontWidget.cpp:157 +msgctxt "FrontWidget|" +msgid "Save file to disk.." +msgstr "Spara filen till disk.." + +#: FrontWidget.cpp:158 +msgctxt "FrontWidget|" +msgid "View file information.." +msgstr "Visa beskrivning av filen.." + +#: FrontWidget.cpp:159 +msgctxt "FrontWidget|" +msgid "Copy file address (SHA1) to clipboard.." +msgstr "Kopiera SHA1 till urklipp.." + +#: FrontWidget.cpp:160 +msgctxt "FrontWidget|" +msgid "Edit+publish new text document.." +msgstr "Skapa+publicera en ny dokument.." + +#: FrontWidget.cpp:348 +msgctxt "FrontWidget|" +msgid "Open File" +msgstr "Öppna filen" + +#: FrontWidget.cpp:350 FrontWidget.cpp:880 +msgctxt "FrontWidget|" +msgid "Files (*.*)" +msgstr "Alla typer (*.*)" + +#: FrontWidget.cpp:354 FrontWidget.cpp:1180 FrontWidget.cpp:1322 +msgctxt "FrontWidget|" +msgid "Error" +msgstr "Fel" + +#: FrontWidget.cpp:355 +msgctxt "FrontWidget|" +msgid "Can't load image" +msgstr "Kan inte ladda en bild" + +#: FrontWidget.cpp:621 FrontWidget.cpp:761 +msgctxt "FrontWidget|" +msgid "Profile not in database" +msgstr "Profil finns inte i lokal databas" + +#: FrontWidget.cpp:622 FrontWidget.cpp:762 +msgctxt "FrontWidget|" +msgid "Try viewing profile first to obtain data" +msgstr "Du kan försöka att se profil först för att hämta data" + +#: FrontWidget.cpp:878 +msgctxt "FrontWidget|" +msgid "Select file to be published" +msgstr "Välja filen du vill ha publicerad" + +#: FrontWidget.cpp:885 +msgctxt "FrontWidget|" +msgid "File way too big" +msgstr "Filen är alldeles för stor" + +#: FrontWidget.cpp:893 +msgctxt "FrontWidget|" +msgid "File too big" +msgstr "Filen är för stor" + +#: FrontWidget.cpp:937 FrontWidget.cpp:1181 +msgctxt "FrontWidget|" +msgid "File open error" +msgstr "Fel med öppningen av filen" + +#: FrontWidget.cpp:1162 FrontWidget.cpp:1168 +msgctxt "FrontWidget|" +msgid "files" +msgstr "filer" + +#: FrontWidget.cpp:1171 +msgctxt "FrontWidget|" +msgid "Choose file name for saving" +msgstr "Välj ett namn for din fil" + +#: FrontWidget.cpp:1231 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"Click\n" +"To\n" +"Add\n" +"Image\n" +msgstr "" +"\n" +"\n" +"\n" +"Klicka för att\n" +"lägga till\n" +"en bild\n" + +#: FrontWidget.cpp:1323 +msgctxt "FrontWidget|" +msgid "Article not found from local storage" +msgstr "Annons kunde inte hittas i local databas" + +#: FrontWidget.cpp:1349 FrontWidget.cpp:1897 +#, qt-format +msgctxt "FrontWidget|" +msgid "" +"Trusted by %1\n" +"SHA1 %2" +msgstr "" +"Betrodd av %1\n" +"SHA1 %2" + +#: FrontWidget.cpp:1386 +msgctxt "FrontWidget|" +msgid "Time of last update " +msgstr "Tid av senaste ändring" + +#: FrontWidget.cpp:1394 +msgctxt "FrontWidget|" +msgid "" +"\n" +"\n" +"\n" +"(No\n" +"Image\n" +"Selected)\n" +msgstr "" +"\n" +"\n" +"\n" +"(Ingen\n" +"Bild\n" +"Valts)\n" + +#: FrontWidget.cpp:1488 +msgctxt "FrontWidget|" +msgid "Edit contact.." +msgstr "Redigera kontakt" + +#: FrontWidget.cpp:1528 +msgctxt "FrontWidget|" +msgid "&Reply to sender" +msgstr "Svara avsändaren" + +#: FrontWidget.cpp:1529 +msgctxt "FrontWidget|" +msgid "Reply to &forum" +msgstr "Svara på &forumet" + +#: FrontWidget.cpp:1530 +msgctxt "FrontWidget|" +msgid "&Post new ad" +msgstr "Ska&pa en ny annons" + +#: FrontWidget.cpp:1531 +msgctxt "FrontWidget|" +msgid "&Public comment" +msgstr "&Publik kommentar" + +#: FrontWidget.cpp:1532 +msgctxt "FrontWidget|" +msgid "&View profile" +msgstr "&Visa profilen" + +#: FrontWidget.cpp:1533 FrontWidget.cpp:1671 +msgctxt "FrontWidget|" +msgid "Attachments.." +msgstr "Bilagor.." + +#: FrontWidget.cpp:1593 +msgctxt "FrontWidget|" +msgid "Add selected operator to contacts.." +msgstr "Lägga operator till din kontakter" + +#: FrontWidget.cpp:1667 +msgctxt "FrontWidget|" +msgid "&Reply" +msgstr "Svara" + +#: FrontWidget.cpp:1668 +msgctxt "FrontWidget|" +msgid "&New message" +msgstr "Skapa en ny brev" + +#: FrontWidget.cpp:1669 +msgctxt "FrontWidget|" +msgid "&Send public comment to sender" +msgstr "Skicka en publik kommentar om profilen " + +#: FrontWidget.cpp:1670 +msgctxt "FrontWidget|" +msgid "&View profile of peer" +msgstr "&Visa profilen" + +#: FrontWidget.cpp:1705 +msgctxt "FrontWidget|" +msgid "Add selected to contacts.." +msgstr "Lägga till din kontakter.." + +#: FrontWidget.cpp:1907 FrontWidget.cpp:1909 FrontWidget.cpp:1973 +#: FrontWidget.cpp:1975 +msgctxt "FrontWidget|" +msgid "From:" +msgstr "Från:" + +#: FrontWidget.cpp:1911 FrontWidget.cpp:1978 +msgctxt "FrontWidget|" +msgid "Subject:" +msgstr "Rubrik:" + +#: FrontWidget.cpp:1970 +msgctxt "FrontWidget|" +msgid "To:" +msgstr "Mottagare:" + +#: FrontWidget.cpp:2282 +msgctxt "FrontWidget|" +msgid "Invalid SHA1 in URL" +msgstr "SHA1 i URL är inte giltig" + +#: FrontWidget.cpp:2309 +msgctxt "FrontWidget|" +msgid "Invalid URL" +msgstr "URL är inte giltig" + +#: ui/insertlinkdialog.cpp:69 +msgctxt "InsertLinkDialog|" +msgid "Invalid URL" +msgstr "URL är inte giltig" + +#: ui/manualconnection.cpp:53 +msgctxt "ManualConnectionDialog|" +msgid "DNS lookup failure" +msgstr "Namnet kunde inte hittas från DNS" + +#: ui/newprivmsgdialog.cpp:88 ui/newprivmsgdialog.cpp:133 +msgctxt "NewPrivMessageDialog|" +msgid "Error" +msgstr "Fel" + +#: ui/newprivmsgdialog.cpp:89 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient addr is not valid" +msgstr "Adressen av mottagaren är inte giltig" + +#: ui/newprivmsgdialog.cpp:134 +msgctxt "NewPrivMessageDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Kryptering-nyckel för mottagaren kunde inte hittas i lokal databas" + +#: ui/newprofilecommentdialog.cpp:89 ui/newprofilecommentdialog.cpp:126 +msgctxt "NewProfileCommentDialog|" +msgid "Error" +msgstr "Fel" + +#: ui/newprofilecommentdialog.cpp:90 +msgctxt "NewProfileCommentDialog|" +msgid "Commented profile addr is not valid" +msgstr "Adressen av profil är inte giltig" + +#: ui/newprofilecommentdialog.cpp:127 +msgctxt "NewProfileCommentDialog|" +msgid "Recipient encryption key not found from storage" +msgstr "Kunde inte hittas kryptering-nyckel från lokal databas" + +#: datamodel/nodemodel.cpp:115 +msgctxt "NodeModel|" +msgid "SSL key generation went wrong, calling exit.." +msgstr "Kunde inte skapa SSL-nyckel, utgående.." + +#: datamodel/nodemodel.cpp:123 +msgctxt "NodeModel|" +msgid "x509 cert generation went wrong, calling exit.." +msgstr "Kunde inte skapa x509-nyckel, utgående.." + +#: datamodel/nodemodel.cpp:1594 +msgctxt "NodeModel|" +msgid "Cant load SSL cert" +msgstr "Kunde inte ladda SSL-nyckkel" + +#: datamodel/nodemodel.cpp:1624 +msgctxt "NodeModel|" +msgid "Cant load SSL key" +msgstr "Kunde inte ladda SSL-nyckel " + +#: ui/passwd_dialog.cpp:104 +msgctxt "PasswdDialog|" +msgid "Min length 5 (use 10+)" +msgstr "Minimilängd är 5 (du skulle använda minst 10+)" + +#: ui/passwordDialog.ui:14 +msgctxt "PasswordDialog|" +msgid "Password required" +msgstr "Lösenord krävs" + +#: ui/passwordDialog.ui:17 +msgctxt "PasswordDialog|" +msgid "" +"Should you forget this word, there is no easy way to recover any of your " +"content" +msgstr "" +"Om du glömmer det här ordet, det finns inte en praktiskt metod för att visa " +"dina filer senare" + +#: ui/passwordDialog.ui:29 +msgctxt "PasswordDialog|" +msgid "Enter password for protection of your messages" +msgstr "Ge ett lösenord" + +#: ui/passwordDialog.ui:42 +msgctxt "PasswordDialog|" +msgid "" +"If you forget this word, there is no simple way to recover your contents" +msgstr "" +"Om du glömmer det här ordet, det finns inte en praktiskt metod för att visa " +"dina filer senare" + +#: ui/passwordDialog.ui:55 +msgctxt "PasswordDialog|" +msgid "OK" +msgstr "OK" + +#: datamodel/privmsgsearchmodel.cpp:110 +#, qt-format +msgctxt "PrivateMessageSearchModel|" +msgid "" +"%1\n" +"Trusted by %2" +msgstr "" +"%1\n" +"Betrodd av %2" + +#: datamodel/privmsgsearchmodel.cpp:237 +msgctxt "PrivateMessageSearchModel|" +msgid "Direction of message, sent/received" +msgstr "Riktning" + +#: datamodel/privmsgsearchmodel.cpp:247 +msgctxt "PrivateMessageSearchModel|" +msgid "Dir" +msgstr "Riktning" + +#: datamodel/privmsgsearchmodel.cpp:250 +msgctxt "PrivateMessageSearchModel|" +msgid "Peer" +msgstr "Peer" + +#: datamodel/privmsgsearchmodel.cpp:253 +msgctxt "PrivateMessageSearchModel|" +msgid "Time" +msgstr "Datum" + +#: datamodel/privmsgsearchmodel.cpp:256 +msgctxt "PrivateMessageSearchModel|" +msgid "Subject" +msgstr "Rubrik" + +#: ui/profilecommentdisplay.cpp:54 +msgctxt "ProfileCommentDisplay|" +msgid "&Add comment..." +msgstr "Skapa en ny komment.." + +#: ui/profilecommentdisplay.cpp:65 +msgctxt "ProfileCommentDisplay|" +msgid "Save attachment to disk.." +msgstr "Spara filen till disk.." + +#: ui/profilecommentdisplay.cpp:90 +msgctxt "ProfileCommentDisplay|" +msgid "Error" +msgstr "Fel" + +#: ui/profilecommentdisplay.cpp:91 +msgctxt "ProfileCommentDisplay|" +msgid "Article not found from local storage" +msgstr "Annons kunde inte hittas i lokal databas" + +#: ui/profilecommentitemdelegate.cpp:91 +msgctxt "ProfileCommentItemDelegate|" +msgid "Attachments: " +msgstr "Tilläggade filer:" + +#: datamodel/profilecommentlistingmodel.cpp:219 +msgctxt "ProfileCommentListingModel|" +msgid "Sender" +msgstr "Avsändare" + +#: datamodel/profilecommentlistingmodel.cpp:222 +msgctxt "ProfileCommentListingModel|" +msgid "Time" +msgstr "Datum" + +#: datamodel/profilecommentlistingmodel.cpp:225 +msgctxt "ProfileCommentListingModel|" +msgid "Subject" +msgstr "Rubrik" + +#: datamodel/profilecommentmodel.cpp:67 +msgctxt "ProfileCommentModel|" +msgid "Profile related to comment not found from database" +msgstr "Profilen från komment kunde inte hittas i lokal databas" + +#: ui/profilereadersdialog.cpp:73 +msgctxt "ProfileReadersDialog|" +msgid "View profile" +msgstr "Visa profilen" + +#: datamodel/profilereaderslistingmodel.cpp:174 +msgctxt "ProfileReadersListingModel|" +msgid "Name or fingerprint of reader" +msgstr "Namn eller SHA1 kontrollsumm av läsaren " + +#: ui/searchdisplay.cpp:62 +msgctxt "SearchDisplay|" +msgid "Open.." +msgstr "Öppna.." + +#: textedit/textedit.cpp:127 +msgctxt "TextEdit|" +msgid "Help" +msgstr "Hjälp" + +#: textedit/textedit.cpp:129 +msgctxt "TextEdit|" +msgid "About &Qt" +msgstr "Information om &Qt" + +#: textedit/textedit.cpp:186 +msgctxt "TextEdit|" +msgid "Edit Actions" +msgstr "Aktions för redigering" + +#: textedit/textedit.cpp:188 +msgctxt "TextEdit|" +msgid "&File" +msgstr "Arkiv" + +#: textedit/textedit.cpp:194 +msgctxt "TextEdit|" +msgid "&Open..." +msgstr "Öppna.." + +#: textedit/textedit.cpp:203 +msgctxt "TextEdit|" +msgid "&Save locally before send" +msgstr "&Spara före skickning" + +#: textedit/textedit.cpp:210 +msgctxt "TextEdit|" +msgid "Save locally &As..." +msgstr "Spara i lokal disk med namn.." + +#: textedit/textedit.cpp:218 +msgctxt "TextEdit|" +msgid "&Print..." +msgstr "Skriv ut.." + +#: textedit/textedit.cpp:226 +msgctxt "TextEdit|" +msgid "Print Preview..." +msgstr "Förhandsgranskning" + +#: textedit/textedit.cpp:231 +msgctxt "TextEdit|" +msgid "&Export PDF..." +msgstr "&Exportera som PDF" + +#: textedit/textedit.cpp:244 +msgctxt "TextEdit|" +msgid "&Edit" +msgstr "R&edigera" + +#: textedit/textedit.cpp:249 +msgctxt "TextEdit|" +msgid "&Undo" +msgstr "Ångra" + +#: textedit/textedit.cpp:254 +msgctxt "TextEdit|" +msgid "&Redo" +msgstr "Återställ" + +#: textedit/textedit.cpp:261 +msgctxt "TextEdit|" +msgid "Cu&t" +msgstr "Klipp ut" + +#: textedit/textedit.cpp:267 +msgctxt "TextEdit|" +msgid "&Copy" +msgstr "Kopiera" + +#: textedit/textedit.cpp:273 +msgctxt "TextEdit|" +msgid "&Paste" +msgstr "Klistra in" + +#: textedit/textedit.cpp:283 +msgctxt "TextEdit|" +msgid "Insert link" +msgstr "Infoga en länk" + +#: textedit/textedit.cpp:287 +msgctxt "TextEdit|" +msgid "Embed image" +msgstr "Bädda in en bild" + +#: textedit/textedit.cpp:294 +msgctxt "TextEdit|" +msgid "F&ormat" +msgstr "F&ormat" + +#: textedit/textedit.cpp:298 +msgctxt "TextEdit|" +msgid "&Bold" +msgstr "Fet" + +#: textedit/textedit.cpp:310 +msgctxt "TextEdit|" +msgid "&Italic" +msgstr "Kursiv" + +#: textedit/textedit.cpp:322 +msgctxt "TextEdit|" +msgid "&Underline" +msgstr "Understruken" + +#: textedit/textedit.cpp:341 textedit/textedit.cpp:347 +msgctxt "TextEdit|" +msgid "&Left" +msgstr "Vänsterjustera" + +#: textedit/textedit.cpp:342 textedit/textedit.cpp:346 +msgctxt "TextEdit|" +msgid "C&enter" +msgstr "Centrerat" + +#: textedit/textedit.cpp:343 textedit/textedit.cpp:345 +msgctxt "TextEdit|" +msgid "&Right" +msgstr "Högerjustera" + +#: textedit/textedit.cpp:349 +msgctxt "TextEdit|" +msgid "&Justify" +msgstr "Marginaljustering" + +#: textedit/textedit.cpp:376 +msgctxt "TextEdit|" +msgid "&Color..." +msgstr "Färg.." + +#: textedit/textedit.cpp:383 +msgctxt "TextEdit|" +msgid "Standard" +msgstr "Standardformat" + +#: textedit/textedit.cpp:384 +msgctxt "TextEdit|" +msgid "Bullet List (Disc)" +msgstr "Punktuppställning (bollar)" + +#: textedit/textedit.cpp:385 +msgctxt "TextEdit|" +msgid "Bullet List (Circle)" +msgstr "Punktuppställning (cirklar)" + +#: textedit/textedit.cpp:386 +msgctxt "TextEdit|" +msgid "Bullet List (Square)" +msgstr "Punktuppställning (kvadrater)" + +#: textedit/textedit.cpp:387 +msgctxt "TextEdit|" +msgid "Ordered List (Decimal)" +msgstr "Numrering (decimal)" + +#: textedit/textedit.cpp:388 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha lower)" +msgstr "Numrering (små bokstäver)" + +#: textedit/textedit.cpp:389 +msgctxt "TextEdit|" +msgid "Ordered List (Alpha upper)" +msgstr "Numrering (stora bokstäver)" + +#: textedit/textedit.cpp:390 +msgctxt "TextEdit|" +msgid "Ordered List (Roman lower)" +msgstr "Numrering (små roman)" + +#: textedit/textedit.cpp:391 +msgctxt "TextEdit|" +msgid "Ordered List (Roman upper)" +msgstr "Numrering (stora roman)" + +#: textedit/textedit.cpp:442 +msgctxt "TextEdit|" +msgid "Application" +msgstr "Annonser" + +#: textedit/textedit.cpp:443 +msgctxt "TextEdit|" +msgid "" +"The document has been modified.\n" +"Do you want to save your changes?" +msgstr "Dokument har ändrats, spara?" + +#: textedit/textedit.cpp:467 +msgctxt "TextEdit|" +msgid "Open File..." +msgstr "Öppna filen.." + +#: textedit/textedit.cpp:468 +msgctxt "TextEdit|" +msgid "HTML-Files (*.htm *.html);;All Files (*)" +msgstr "HTML-Filer (*.htm *.html);;Alla typer (*)" + +#: textedit/textedit.cpp:485 +msgctxt "TextEdit|" +msgid "Save as..." +msgstr "Spara som.." + +#: textedit/textedit.cpp:486 +msgctxt "TextEdit|" +msgid "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)" +msgstr "ODF filer (*.odt);;HTML-Filer (*.htm *.html);;Alla typer (*)" + +#: textedit/textedit.cpp:501 +msgctxt "TextEdit|" +msgid "Print Document" +msgstr "Skriv ut dokument" + +#: textedit/textedit.cpp:559 +msgctxt "TextEdit|" +msgid "Open File" +msgstr "Öppna filen" + +#: textedit/textedit.cpp:561 +msgctxt "TextEdit|" +msgid "Files (*.*)" +msgstr "Alla filer (*.*)" + +#: textedit/textedit.cpp:566 +msgctxt "TextEdit|" +msgid "Error" +msgstr "Fel" + +#: textedit/textedit.cpp:567 +msgctxt "TextEdit|" +msgid "Can't load image" +msgstr "Kan inte ladda en bild" + +#: textedit/textedit.cpp:621 textedit/textedit.cpp:631 +msgctxt "TextEdit|" +msgid "File way too big" +msgstr "Filen är alldeles för stor" + +#: ui/aboutDialog.ui:26 +msgctxt "aboutDialog|" +msgid "About classified ads" +msgstr "Information om Annonser" + +#: ui/aboutDialog.ui:100 +msgctxt "aboutDialog|" +msgid " Classified ads is a program for online communications" +msgstr "Annonser är en programvara för kommunikation över internet" + +#: ui/aboutDialog.ui:160 +#| msgid "" +#| "

Classified ads is free software. You may use, copy " +#| "and modify it if you follow the conditions given in GNU lesser general " +#| "public license version 2.1.

Classified ads is copyright © Antti " +#| "Järvinen 2013.

Main feature of the the program is an " +#| ""advertisement" - a piece of text belonging to selected " +#| "classification. There are several pre-programmed classifications and " +#| "operators are encouraged to invent new classifications for new purposes ; " +#| "the selection boxes in classification-selection tab are editable. Other " +#| "operators may then view the ads, publicly comment the ads, the operators " +#| "and also send private messages to each others.

Another important " +#| "feature of classified ads is that it is designed to be operated without " +#| "any centralized server infrastucture - it is you and other operators " +#| "whose computers store and transmit all the content visible inside " +#| "classified ads. To get connected you need to know address of at least one " +#| "existing computer (a node) so " +#| "if your network connection dialog shows no connections, you may need to " +#| "contact someone you know is using the software and ask for address of her " +#| "node to make initial contact with the network. Once connected the " +#| "software should maintain list of addresses of other nodes.

Due to " +#| "its server-less design the whole system works best if you leave the " +#| "program running always when you have your computer powered on ; while " +#| "processing other operators requests it will hog some computing resources " +#| "and generate network traffic also when you are not actively using the " +#| "program youself - others are.

Operators concerned about privacy of " +#| "the content should be aware of following items:

- Data storage " +#| "implementation is variant of distributed hash table, practically meaning " +#| "that content posted by you gets copied some more-or-less random nodes in " +#| "the network.

- Any data item (ad, comment, binary file, private " +#| "message etc.) is digitally signed. This makes it more difficult to try to " +#| "pose as another operator.

- Operators are reliably identified only " +#| "by the SHA1 hash of their generated encryption keys. SHA1 hash is " +#| "displayed when viewing details of operator profiles. Other identifying " +#| "information like nickname or city name are entered by operator himself " +#| "and can be anything. The operator profile, as it is published to the " +#| "network, is also signed with the encryption keys of the operator - if you " +#| "identify an operator by her SHA1 hash, you have a mechanism for " +#| "identifying if any content inside classified ads is posted by this " +#| "operator or not. Classified ads internally checks for digital signatures, " +#| "throwing away content that fails signature check and tries to provide " +#| "SHA1 hash of the operator who posted the content.

- All classified " +#| "ads are posted as plain text, no encryption is used. All public profiles " +#| "are posted as plain text, no encryption is used. If profile is made " +#| "private, it is encrypted to be readable only by selected other profiles. " +#| "This applies also to binary files shared by operators private profiles " +#| "and comments about private profiles after the profile was made private " +#| "(previously plain-text comments or files don't get magically encrypted " +#| "afterwards). Private messages are encrypted always to be readable only by " +#| "recipient and sender. Attachments follow the privary rules of the " +#| "document, they're attachted to.

- As is the case with all " +#| "internet-communications, this small fact is true for classified ads too : " +#| "once something gets posted online, " +#| "there is no way to remove it from network.

- Data " +#| "encryption implementation for content is OpenSSL, relying mostly on " +#| "algorithms RSA-2048 and AES-256.

- While connections between nodes " +#| "are implemented using SSL, other nodes inside network do get to know what " +#| "content is being transmitted in neighboring nodes. While there is no " +#| "central point for easily collecting this information about particular " +#| "classification or operator, operators still should expect no privacy " +#| "regarding their doings online, altough some effort has been been put into " +#| "hiding contents of private " +#| "messages and private profiles.

Programming was (mostly) done by " +#| "Antti Järvinen, artwork by Meeri Järvinen.

This product includes " +#| "software developed by the OpenSSL Project for use in the OpenSSL Toolkit " +#| "(http://www.openssl.org/).

Happy " +#| "advertising!


" +msgctxt "aboutDialog|" +msgid "" +"

Classified ads is free software. You may use, copy and " +"modify it if you follow the conditions given in GNU lesser general public " +"license version 2.1.

Classified ads is copyright © Antti Järvinen " +"2013.

Main feature of the the program is an "advertisement" " +"- a piece of text belonging to selected classification. There are several " +"pre-programmed classifications and operators are encouraged to invent new " +"classifications for new purposes ; the selection boxes in " +"classification-selection tab are editable. Other operators may then view the " +"ads, publicly comment the ads, the operators and also send private messages " +"to each others.

Another important feature of classified ads is that " +"it is designed to be operated without any centralized server infrastucture - " +"it is you and other operators whose computers store and transmit all the " +"content visible inside classified ads. To get connected you need to know " +"address of at least one existing computer (a node) so if your network connection dialog shows " +"no connections, you may need to contact someone you know is using the " +"software and ask for address of her node to make initial contact with the " +"network. Once connected the software should maintain list of addresses of " +"other nodes.

Due to its server-less design the whole system works " +"best if you leave the program running always when you have your computer " +"powered on ; while processing other operators requests it will hog some " +"computing resources and generate network traffic also when you are not " +"actively using the program youself - others are.

Operators concerned " +"about privacy of the content should be aware of following items:

- " +"Data storage implementation is variant of distributed hash table, practically meaning that " +"content posted by you gets copied some more-or-less random nodes in the " +"network.

- Any data item (ad, comment, binary file, private message " +"etc.) is digitally signed. This makes it more difficult to try to pose as " +"another operator.

- Operators are reliably identified only by the " +"SHA1 hash of their generated encryption keys. SHA1 hash is displayed when " +"viewing details of operator profiles. Other identifying information like " +"nickname or city name are entered by operator himself and can be anything. " +"The operator profile, as it is published to the network, is also signed with " +"the encryption keys of the operator - if you identify an operator by her " +"SHA1 hash, you have a mechanism for identifying if any content inside " +"classified ads is posted by this operator or not. Classified ads internally " +"checks for digital signatures, throwing away content that fails signature " +"check and tries to provide SHA1 hash of the operator who posted the " +"content.

- All classified ads are posted as plain text, no encryption " +"is used. All public profiles are posted as plain text, no encryption is " +"used. If profile is made private, it is encrypted to be readable only by " +"selected other profiles. This applies also to binary files shared by " +"operators private profiles and comments about private profiles after the " +"profile was made private (previously plain-text comments or files don't get " +"magically encrypted afterwards). Private messages are encrypted always to be " +"readable only by recipient and sender. Attachments follow the privary rules " +"of the document, they're attachted to.

- As is the case with all " +"internet-communications, this small fact is true for classified ads too : " +"once something gets posted online, there " +"is no way to remove it from network.

- Data encryption " +"implementation for content is OpenSSL, relying mostly on algorithms RSA-2048 " +"and AES-256.

- While connections between nodes are implemented using " +"SSL, other nodes inside network do get to know what content is being " +"transmitted in neighboring nodes. While there is no central point for easily " +"collecting this information about particular classification or operator, " +"operators still should expect no privacy regarding their doings online, " +"although some effort has been been put into hiding contents of private messages and private " +"profiles.

Programming was (mostly) done by Antti Järvinen, artwork by " +"Meeri Järvinen.

This product includes software developed by the " +"OpenSSL Project for use in the OpenSSL Toolkit " +"(http://www.openssl.org/).

Happy " +"advertising!


" +msgstr "" +"\n" +"

Annonser är fri " +"programvara. Du kan använda, kopiera och modifiera det om du följer " +"konditioner av GNU LGPL licens v2.1 (GNU Lesser General Public License). " +"

\n" +"


\n" +"

Copyright © Antti " +"Järvinen 2013.

\n" +"


\n" +"

Den viktig " +"funktionen av Annonser är "annons" - dokument som har en " +"klassificering. Program har flera klassificrings och användarna kan skapa " +"mera. Användarna kan läsa annonser, skapa kommentarer om dom och ha " +"korrespondens.

\n" +"


\n" +"

En annan viktig " +"egenskap är att Annonser är inte serverbaserad, det använder inte en databas " +"i server över nätverket. Alla filer sparas i datorer av användarna av " +"Annonser. För at kunna ansluta sig med nätverket av Annonser man har at veta " +"minst en adress av en dator som är i nätverket. När program har anslutat sig " +"med nätverket det ska underhålla sin egen listan om andra datorer i " +"nätverket.

\n" +"


\n" +"

På grund av " +"partnerbaserad-konstruktion hela system fungerar bäst om du lämnar program " +"på också när du inte använder program själv. Program ska ta datorkraft och " +"generera traffic över nätverket när du inte använder program, men andra " +"användare ska bli betjänad.

\n" +"


\n" +"

Användarna " +"intresserad av sina informationssäkerhet skulle veta att:

\n" +"

- Databas är en " +"variant av distribuerad hashtabell (DHT). Det betyder att filer skickad i " +"nätverket sparas i flera datorer i andra användarnas ägo.

\n" +"

- Alla " +"dataobjekter i Annonser har en digital signatur.
- Den enda värdig " +"identifiering för operatör ar SHA1 kontrollsumm av hennes RSA-nyckel. Alla " +"andra punkter om operatör kan vara vad som helst.

\n" +"

- Alla annonser " +"ska sparas i nätverket utan kryptering - alla kan läsa dom. Alla publik " +"profiler sparas i nätverket utan kryptering. Operatörprofiler som är privat " +"ska bli krypterad bara för listade användare. Samma gäller också för " +"kommentarer och filer av profil. Om en profil blir privat, gammal " +"kommentarer och filer av profil är inte krypterad. Korrespondens (brev) " +"mellan användarna ska vara krypterad alltid. Bilagor följer kryptering av " +"sina ägande dokument.

\n" +"

- Som är fallet " +"med alla kommunikation över internet, det här gäller också: om någonting är " +"publicerad i Annonser, det finns inte en " +"metod för att ta det bort senare.
- Programvara för kryptering " +"är OpenSSL, algoritmen mest avända är RSA-2048 och AES-256.

\n" +"

- Kommunikationen " +"mellan datorer i nätverket är krypterad med SSL. Din partners i nätverket " +"kan se alla trafik till din nod. Användarna skulle inte ponera anonymitet " +"eller hemlighet över saker dom gör i nätverket.

\n" +"


\n" +"

Programmering " +"gjorts av Antti Järvinen, konst av Meeri Järvinen.

\n" +"


\n" +"

Denna produkt " +"innehåller programvara som har utvecklats av OpenSSL project för användning " +"i OpenSSL toolkit (http://www.openssl.org).

\n" +"


" + +#: ui/attachmentListDialog.ui:26 +msgctxt "attachmentListDialog|" +msgid "List of attached files" +msgstr "Listan av bilagor" + +#: ui/editContact.ui:26 +msgctxt "editContactDialog|" +msgid "Edit a contact" +msgstr "Redigera en kontakt" + +#: ui/editContact.ui:39 +msgctxt "editContactDialog|" +msgid "Address (SHA1) of contact" +msgstr "Adress (SHA1 kontrollsumm) av kontakt " + +#: ui/editContact.ui:53 +msgctxt "editContactDialog|" +msgid "Local nickname" +msgstr "Lokal smeknamn" + +#: ui/editContact.ui:65 +msgctxt "editContactDialog|" +msgid "" +"

Settings some trusted is public information to readers " +"of your profile

" +msgstr "" +"

Om du tröst på en profil, det är publik " +"information

" + +#: ui/editContact.ui:68 +msgctxt "editContactDialog|" +msgid "This contact is to be publicly trusted in transactions" +msgstr "Den här kontakt är tillförlitlig " + +#: frontWidget.ui:14 +msgctxt "frontWidget|" +msgid "Form" +msgstr "Form" + +#: frontWidget.ui:39 +msgctxt "frontWidget|" +msgid "Classified ads" +msgstr "Annonseravdelning" + +#: frontWidget.ui:67 +msgctxt "frontWidget|" +msgid "Search for classified ads about" +msgstr "Sök annonser efter" + +#: frontWidget.ui:74 +msgctxt "frontWidget|" +msgid "Perform" +msgstr "Utföra" + +#: frontWidget.ui:97 +msgctxt "frontWidget|" +msgid "of" +msgstr "av" + +#: frontWidget.ui:113 +msgctxt "frontWidget|" +msgid "in" +msgstr "i" + +#: frontWidget.ui:123 +msgctxt "frontWidget|" +msgid "Search" +msgstr "Sök" + +#: frontWidget.ui:161 +msgctxt "frontWidget|" +msgid "My profile" +msgstr "Egen profil" + +#: frontWidget.ui:177 frontWidget.ui:932 +msgctxt "frontWidget|" +msgid "Profile address" +msgstr "Adress av profil" + +#: frontWidget.ui:208 frontWidget.ui:643 +msgctxt "frontWidget|" +msgid "Nickname" +msgstr "Smeknamn" + +#: frontWidget.ui:225 frontWidget.ui:669 +msgctxt "frontWidget|" +msgid "Greeting text" +msgstr "Hälsningar" + +#: frontWidget.ui:232 +msgctxt "frontWidget|" +msgid "For the rest of the world. " +msgstr "För hela världen" + +#: frontWidget.ui:239 frontWidget.ui:695 +msgctxt "frontWidget|" +msgid "First name" +msgstr "Förnamn" + +#: frontWidget.ui:253 frontWidget.ui:715 +msgctxt "frontWidget|" +msgid "Family name" +msgstr "Efternamn" + +#: frontWidget.ui:263 +msgctxt "frontWidget|" +msgid "City/country" +msgstr "Stad/rike" + +#: frontWidget.ui:273 +msgctxt "frontWidget|" +msgid "BTC address" +msgstr "BTC-adress" + +#: frontWidget.ui:280 +msgctxt "frontWidget|" +msgid "If you wish to receive payments via BTC, include your BTC address too." +msgstr "Om du will ta mot betalningar, ge din BTC-adress " + +#: frontWidget.ui:287 frontWidget.ui:799 +msgctxt "frontWidget|" +msgid "State of the world" +msgstr "Tillståndet i världen" + +#: frontWidget.ui:294 +msgctxt "frontWidget|" +msgid "Longer explanation about state of the world" +msgstr "Tillståndet i världen" + +#: frontWidget.ui:301 +msgctxt "frontWidget|" +msgid "Profile is private" +msgstr "Profilen är privat" + +#: frontWidget.ui:308 +msgctxt "frontWidget|" +msgid "Readers of profile" +msgstr "Läsarna av profilen" + +#: frontWidget.ui:315 +msgctxt "frontWidget|" +msgid "None of the fields is mandatory" +msgstr "Ingent pukt är obligatoriskt " + +#: frontWidget.ui:322 +msgctxt "frontWidget|" +msgid "Time of last update" +msgstr "Tid av senaste ändring" + +#: frontWidget.ui:342 +msgctxt "frontWidget|" +msgid "Publish" +msgstr "Publicera" + +#: frontWidget.ui:355 +msgctxt "frontWidget|" +msgid "Revert changes" +msgstr "Återgå" + +#: frontWidget.ui:369 +msgctxt "frontWidget|" +msgid "Details of operator profile:" +msgstr "Detaljer om operatörsprofil" + +#: frontWidget.ui:401 +msgctxt "frontWidget|" +msgid "" +"\n" +"\n" +"Click \n" +"to \n" +"Add\n" +"Image" +msgstr "" +"\n" +"\n" +"Klicka för at \n" +"lägga till\n" +"en bild" + +#: frontWidget.ui:425 frontWidget.ui:845 +msgctxt "frontWidget|" +msgid "Shared files" +msgstr "Filer i fildelning " + +#: frontWidget.ui:461 frontWidget.ui:892 +msgctxt "frontWidget|" +msgid "Latest comments" +msgstr "Senaste kommentarer" + +#: frontWidget.ui:504 +msgctxt "frontWidget|" +msgid "Contacts" +msgstr "Kontakter" + +#: frontWidget.ui:536 +msgctxt "frontWidget|" +msgid "Add contact" +msgstr "Lägg kontakt" + +#: frontWidget.ui:543 +msgctxt "frontWidget|" +msgid "Remove contact" +msgstr "Ta bort kontakt" + +#: frontWidget.ui:550 +msgctxt "frontWidget|" +msgid "View profile" +msgstr "Visa profilen" + +#: frontWidget.ui:557 +msgctxt "frontWidget|" +msgid "Send message" +msgstr "Skicka en elektronisk post" + +#: frontWidget.ui:569 +msgctxt "frontWidget|" +msgid "Private messages" +msgstr "Korrespondens" + +#: frontWidget.ui:624 +msgctxt "frontWidget|" +msgid "Profile details" +msgstr "Detaljer av profil" + +#: frontWidget.ui:741 +msgctxt "frontWidget|" +msgid "City/Country" +msgstr "Stad/rike" + +#: frontWidget.ui:767 +msgctxt "frontWidget|" +msgid "BTC Addr" +msgstr "BTC-adress" + +#: frontWidget.ui:829 +msgctxt "frontWidget|" +msgid "" +"




No

Image

Inserted

" +msgstr "" +"




Ingen

Bild

Valts

" + +#: frontWidget.ui:874 +msgctxt "frontWidget|" +msgid "Send message to operator" +msgstr "Skicka en brev" + +#: frontWidget.ui:879 +msgctxt "frontWidget|" +msgid "View readers" +msgstr "Läsarna av profilen" + +#: frontWidget.ui:927 +msgctxt "frontWidget|" +msgid "Comment" +msgstr "Skicka en kommentar" + +#: frontWidget.ui:959 +msgctxt "frontWidget|" +msgid "Add to contacts" +msgstr "Lägga till din kontakter" + +#: ui/insertLink.ui:26 +msgctxt "insertLinkDialog|" +msgid "Insert link" +msgstr "Infoga en länk" + +#: ui/insertLink.ui:39 +msgctxt "insertLinkDialog|" +msgid "URL" +msgstr "URL" + +#: ui/insertLink.ui:112 +msgctxt "insertLinkDialog|" +msgid "Link label in text" +msgstr "Länktext" + +#: ui/manualConnectionDialog.ui:26 +msgctxt "manualConnectionDialog|" +msgid "Manually add node to connection queue" +msgstr "Lägga till en nod (anslutningen)" + +#: ui/manualConnectionDialog.ui:48 +msgctxt "manualConnectionDialog|" +msgid "Remote node listen port" +msgstr "TCP-port av peer" + +#: ui/manualConnectionDialog.ui:78 +msgctxt "manualConnectionDialog|" +msgid "Remote node network address" +msgstr "Nätverk adress" + +#: ui/manualConnectionDialog.ui:91 +msgctxt "manualConnectionDialog|" +msgid "IPv4, IPv6 or DNS name" +msgstr "IPv4, IPv6 eller DNS-namn" + +#: ui/metadataQuery.ui:26 +msgctxt "metadataQuery|" +msgid "File information" +msgstr "Information av filen" + +#: ui/metadataQuery.ui:60 +msgctxt "metadataQuery|" +msgid "Name of the file:" +msgstr "Namn: " + +#: ui/metadataQuery.ui:81 +msgctxt "metadataQuery|" +msgid "Owner of file (name or SHA1 if CA operator):" +msgstr "Innehållsägare: " + +#: ui/metadataQuery.ui:111 +msgctxt "metadataQuery|" +msgid "License of use:" +msgstr "Licens: " + +# Lets not translate license names.. +#: ui/metadataQuery.ui:122 +msgctxt "metadataQuery|" +msgid "Public domain" +msgstr "Public domain" + +#: ui/metadataQuery.ui:127 +msgctxt "metadataQuery|" +msgid "GPL" +msgstr "GPL" + +#: ui/metadataQuery.ui:132 +msgctxt "metadataQuery|" +msgid "LGPL" +msgstr "LGPL" + +#: ui/metadataQuery.ui:137 +msgctxt "metadataQuery|" +msgid "BSD" +msgstr "BSD" + +#: ui/metadataQuery.ui:142 +msgctxt "metadataQuery|" +msgid "CC-BY" +msgstr "CC-BY" + +#: ui/metadataQuery.ui:147 +msgctxt "metadataQuery|" +msgid "CC-BY-SA" +msgstr "CC-BY-SA" + +#: ui/metadataQuery.ui:152 +msgctxt "metadataQuery|" +msgid "CC-BY-ND" +msgstr "CC-BY-ND" + +#: ui/metadataQuery.ui:157 +msgctxt "metadataQuery|" +msgid "CC-BY-NC" +msgstr "CC-BY-NC" + +#: ui/metadataQuery.ui:162 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-SA" +msgstr "CC-BY-NC-SA" + +#: ui/metadataQuery.ui:167 +msgctxt "metadataQuery|" +msgid "CC-BY-NC-ND" +msgstr "CC-BY-NC-ND" + +#: ui/metadataQuery.ui:182 +msgctxt "metadataQuery|" +msgid "Mime-type:" +msgstr "Mime-typ:" + +#: ui/metadataQuery.ui:199 +msgctxt "metadataQuery|" +msgid "Description of file:" +msgstr "Beskrivning:" + +#: ui/metadataQuery.ui:218 +msgctxt "metadataQuery|" +msgid "Enter information regarding file before publish:" +msgstr "Ange information före publicera:" + +#: ui/newClassifiedAd.ui:26 +msgctxt "newCaDialog|" +msgid "Post a new classified ad" +msgstr "Skicka en ny annons" + +#: ui/newClassifiedAd.ui:47 +msgctxt "newCaDialog|" +msgid "About" +msgstr "I fråga om" + +#: ui/newClassifiedAd.ui:65 +msgctxt "newCaDialog|" +msgid "of" +msgstr "av" + +#: ui/newClassifiedAd.ui:81 +msgctxt "newCaDialog|" +msgid "in" +msgstr "i" + +#: ui/newClassifiedAd.ui:95 +msgctxt "newCaDialog|" +msgid "Subject" +msgstr "Rubrik" + +#: ui/newClassifiedAd.ui:129 +msgctxt "newCaDialog|" +msgid "Attachment: " +msgstr "Bilagor: " + +#: ui/newClassifiedAd.ui:149 +msgctxt "newCaDialog|" +msgid "Add" +msgstr "Inkludera" + +#: ui/newPrivMsg.ui:26 +msgctxt "newPrivMsgDialog|" +msgid "Send a private message" +msgstr "Skicka en ny brev" + +#: ui/newPrivMsg.ui:39 +msgctxt "newPrivMsgDialog|" +msgid "Subject" +msgstr "Rubrik" + +#: ui/newPrivMsg.ui:53 +msgctxt "newPrivMsgDialog|" +msgid "Recipient" +msgstr "Mottagare" + +#: ui/newPrivMsg.ui:83 +msgctxt "newPrivMsgDialog|" +msgid "Attachments: " +msgstr "Bilagor: " + +#: ui/newPrivMsg.ui:103 +msgctxt "newPrivMsgDialog|" +msgid "Attach" +msgstr "Inkludera" + +#: ui/newProfileComment.ui:26 +msgctxt "newProfileCommentDialog|" +msgid "Comment a operators profile" +msgstr "Skicka en kommentar av en profil" + +#: ui/newProfileComment.ui:39 +msgctxt "newProfileCommentDialog|" +msgid "Subject" +msgstr "Rubrik" + +#: ui/newProfileComment.ui:53 +msgctxt "newProfileCommentDialog|" +msgid "Commented profile" +msgstr "Operatörsprofil" + +#: ui/newProfileComment.ui:89 +msgctxt "newProfileCommentDialog|" +msgid "Attachments:" +msgstr "Bilagor:" + +#: ui/newProfileComment.ui:109 +msgctxt "newProfileCommentDialog|" +msgid "Attach" +msgstr "Inkludera" + +#: ui/newTextDocument.ui:26 +msgctxt "newTextDocumentDialog|" +msgid "Edit and publish a new text document" +msgstr "Skapa och publicera en ny dokument" + +#: ui/newTextDocument.ui:39 +msgctxt "newTextDocumentDialog|" +msgid "Document title" +msgstr "Rubrik" + +#: ui/newTextDocument.ui:75 +msgctxt "newTextDocumentDialog|" +msgid "Attachments:" +msgstr "Bilagor:" + +#: ui/newTextDocument.ui:95 +msgctxt "newTextDocumentDialog|" +msgid "Attach" +msgstr "Inkludera" + +#: ui/profileCommentDisplay.ui:26 +msgctxt "profileCommentDisplay|" +msgid "Comments regarding operator" +msgstr "Kommentarer av en operatör" + +#: ui/profileReadersDialog.ui:26 +msgctxt "profileReadersDialog|" +msgid "Profile readers list" +msgstr "Läsarna av en profil" + +#: ui/profileReadersDialog.ui:37 +msgctxt "profileReadersDialog|" +msgid "Search for profiles to add" +msgstr "Sök för profiler som ska bli läggad till" + +#: ui/profileReadersDialog.ui:44 +msgctxt "profileReadersDialog|" +msgid "First 100 matching profiles:" +msgstr "Först 100 motsvarande profiler:" + +#: ui/profileReadersDialog.ui:66 +msgctxt "profileReadersDialog|" +msgid "Add seleted to list of readers" +msgstr "Inkludera vald profiler" + +#: ui/profileReadersDialog.ui:73 +msgctxt "profileReadersDialog|" +msgid "Current list of readers" +msgstr "Aktuell listan" + +#: ui/profileReadersDialog.ui:90 +msgctxt "profileReadersDialog|" +msgid "Close" +msgstr "Stäng" + +#: ui/profileReadersDialog.ui:109 +msgctxt "profileReadersDialog|" +msgid "Remove selected" +msgstr "Ta bort vald profiler" + +#: ui/searchDisplay.ui:26 +msgctxt "searchDisplay|" +msgid "Search data storage" +msgstr "Sök lokal databas" + +#: ui/searchDisplay.ui:60 +msgctxt "searchDisplay|" +msgid "Words:" +msgstr "Alla ord:" + +#: ui/searchDisplay.ui:70 +msgctxt "searchDisplay|" +msgid "Search" +msgstr "Sök" + +#: ui/searchDisplay.ui:87 +msgctxt "searchDisplay|" +msgid "Network search" +msgstr "Sök i nätverket" + +#: ui/searchDisplay.ui:101 +msgctxt "searchDisplay|" +msgid "Search ads" +msgstr "Sök annonser" + +#: ui/searchDisplay.ui:111 +msgctxt "searchDisplay|" +msgid "Search profiles" +msgstr "Sök profiler" + +#: ui/searchDisplay.ui:121 +msgctxt "searchDisplay|" +msgid "Search comments" +msgstr "Sök kommentarer" + +#: ui/settingsDialog.ui:26 +msgctxt "settingsDialog|" +msgid "Node settings" +msgstr "Inställningar av dator" + +#: ui/settingsDialog.ui:39 +msgctxt "settingsDialog|" +msgid "TCP listen port" +msgstr "TCP-port" + +#: ui/settingsDialog.ui:58 +msgctxt "settingsDialog|" +msgid "Incoming TCP listen port. Change requires node restart. " +msgstr "TCP-port för inkommande trafik. Måste omstarta programmen om ändrats.." + +#: ui/settingsDialog.ui:84 +msgctxt "settingsDialog|" +msgid "DNS name of node" +msgstr "DNS-namn" + +#: ui/settingsDialog.ui:91 +msgctxt "settingsDialog|" +msgid "" +"If you have permanent DNS name for your machine, you may type it here to be " +"used to reference your node" +msgstr "Om du har DNS-namnet for din dator" + +#: ui/settingsDialog.ui:103 +msgctxt "settingsDialog|" +msgid "Data store limits:" +msgstr "Begränsningar för databas" + +#: ui/settingsDialog.ui:115 +msgctxt "settingsDialog|" +msgid "Nr of profiles to keep" +msgstr "Antal profiler" + +#: ui/settingsDialog.ui:154 +msgctxt "settingsDialog|" +msgid "Nr of private messages to keep" +msgstr "Antal E-brev" + +#: ui/settingsDialog.ui:193 +msgctxt "settingsDialog|" +msgid "Nr of binary blobs to keep" +msgstr "Antal filer" + +#: ui/settingsDialog.ui:232 +msgctxt "settingsDialog|" +msgid "Nr of CAs to keep" +msgstr "Antal annons" + +#: ui/settingsDialog.ui:251 +msgctxt "settingsDialog|" +msgid "" +"Number of classified ads to keep in storage, total, including all " +"classifications. Oldest referenced will be deleted first." +msgstr "" + +#: ui/settingsDialog.ui:274 +msgctxt "settingsDialog|" +msgid "Nr of profile comments to keep" +msgstr "Antal kommentarer" + +#: ui/statusDialog.ui:26 +msgctxt "statusDialog|" +msgid "Network and connection status" +msgstr "Översikt av nätverket" + +#: ui/statusDialog.ui:48 +msgctxt "statusDialog|" +msgid "Detected own IPv4" +msgstr "Upphittade egen IPv4 adress" + +#: ui/statusDialog.ui:61 ui/statusDialog.ui:93 +msgctxt "statusDialog|" +msgid "" +"Should your friend have trouble connecting, give her this address with port " +"number" +msgstr "" +"Om din vän kan inte ta kontakt med nätverket, ge honom den här adress med " +"port " + +#: ui/statusDialog.ui:74 +msgctxt "statusDialog|" +msgid "IPv6" +msgstr "IPv6" + +#: ui/statusDialog.ui:113 +msgctxt "statusDialog|" +msgid "TCP port currently used" +msgstr "TCP port" + +#: ui/statusDialog.ui:151 +msgctxt "statusDialog|" +msgid "Currently open connections" +msgstr "Öppna dataströmmar" + +#: ui/statusDialog.ui:195 +msgctxt "statusDialog|" +msgid "Manually add connection" +msgstr "Lägga till en peer" + +#: ui/statusDialog.ui:202 +msgctxt "statusDialog|" +msgid "Close" +msgstr "Stäng" diff -Nru classified-ads-0.07/README.TXT classified-ads-0.09/README.TXT --- classified-ads-0.07/README.TXT 2015-04-12 10:18:49.000000000 +0000 +++ classified-ads-0.09/README.TXT 2015-10-10 12:49:33.000000000 +0000 @@ -1,17 +1,16 @@ Compiling: - You need qt4 or 5, libnatmpm, openssl and qjson. The debian control file is -made for qt4 but program compiles with qt5 also. If using qt5 make sure that -the libqjson in use is linked against qt5 and not qt4, in most linux -distributions shipping both qt4 and 5 the libqjson is linked against qt4 -and will crash if used with qt5. So, using your favourite package-manager + You need 5, libnatmpm, openssl and miniupnpc . The debian control file is +made for qt5 but program compiles with qt4 also, then add libmagick and +libqjson into dependencies. +So, using your favourite package-manager install - libqt4-dev + qtbase5-dev-tools libssl-dev libnatpmp-dev - libqjson-dev + libminiupnpc-dev dpkg-dev (if going to build with dpkg-buildpackage) libgcrypt11-dev (if going to build with dpkg-buildpackage, it checks for this) - libqt4-sql-sqlite (is needed at runtime, not compile time) + libqt5sql5-sqlite (is needed at runtime, not compile time) imagemagick (alternatively download https://github.com/operatornormal/classified-ads/blob/graphics/preprocessed.tar.gz?raw=true and unpack that into same directory with the sources and skip the @@ -28,25 +27,11 @@ make cd .. -Then just say "qmake-qt4 ; make install" and that should do the trick ; or +Then just say "qmake ; make install" and that should do the trick ; or if inside debian-ecosystem "dpkg-buildpackage -r" in this directory should produce a installable package for your environment ; this is the correct way anyway. -In windows program compiles in MinGW ; attempt with MSVC2010 resulted in -unresolvable symbols from moc-files that seems weird to me but the MinGW-build -is all right and it is possible to compile all required libs with MinGW. -Qjson from version control did not work, there is patch included in -directory called patch to make it behave. In windows you can do the -graphics-highres part if you have imagemagick. For windows build you -naturally have the same dependencies as with unix build. For openssl -build instructions follow the build instructions that came with -openssl, you'll want to do the msys-based build. Resulting static -libraries should be in c:\msys\1.0\local\lib\. For miniupnpc the -path that should lead to library is ..\miniupnpc\miniupnpc-1.9\miniupnpc.lib -and that compiles under mingw. QJson is qt-sw and the directory -containing the libs should be ..\qjson-master\build\src. If these paths -do not suit your configuration, see classified-ads.pro file, remember -to modify both include paths and library paths. +For compiling under ms-windows, see readme-file in sub-dir windows. License: LGPL. Happy hacking. diff -Nru classified-ads-0.07/test/testca.cpp classified-ads-0.09/test/testca.cpp --- classified-ads-0.07/test/testca.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/test/testca.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -32,11 +32,13 @@ #include // for Q_IPV6ADDR #include #include +#include #include "../datamodel/camodel.h" #include "../datamodel/ca.h" #include "../datamodel/profilemodel.h" #include "../datamodel/profile.h" #include "../datamodel/trusttreemodel.h" +#include "../util/jsonwrapper.h" Q_IPV6ADDR KNullIpv6Addr ( QHostAddress("::0").toIPv6Address () ) ; Hash KNullHash ; @@ -81,6 +83,10 @@ void tryListOfAdsParsing() ; void trySearchRequest() ; void tryTrustTreeModel() ; + void tryJSonParse() ; + void tryJSonParseWithCompress() ; + void tryJSonParseFailure() ; + void tryJSonSerialize() ; void tryDeletingController() ; private: Hash iHashOfPrivateKey ; @@ -579,7 +585,10 @@ QByteArray resultsSerialized ( ProtocolMessageFormatter::searchResultsSend(items,searchId.iHash160bits[0]) ) ; if(p->parseMessage(resultsSerialized,*c)) { testCaseSuccess = true ; - } + QLOG_STR("p->parseMessage(resultsSerialized,*c) returned true") ; + } else { + QLOG_STR("p->parseMessage(resultsSerialized,*c) returned false") ; + } } } } else { @@ -591,23 +600,39 @@ QLOG_STR("Profile was null??") ; } + // interestingly numRowsAffected() with delete returns always 0 + // if used under qt5.2.1 but under qt4 it returns the number + // of rows deleted. in order to assess the number of rows under + // qt5 we need a separate query: + QSqlQuery query0; + query0.prepare("select count(hash1) from classified_ad where hash1 = :h1 and hash2 = :h2 and hash3 = :h3 ") ; + query0.bindValue(":hash1", ca.iFingerPrint.iHash160bits[0]); + query0.bindValue(":hash2", ca.iFingerPrint.iHash160bits[1]); + query0.bindValue(":hash3", ca.iFingerPrint.iHash160bits[2]); + bool querySuccess = query0.exec() ; + + if ( querySuccess && query0.next() && !query0.isNull(0) ) { + if ( testCaseSuccess == true && query0.value(0).toInt() == 1 ) { + testCaseSuccess = true ; + } + } else { + testCaseSuccess = false ; + QLOG_STR("failure: " + query0.lastError().text() + " querySuccess = " + QString::number(querySuccess) + " isnull = " + QString::number(query0.isNull(0))) ; + } + // after count is checked, the row may go: QSqlQuery query; query.prepare("delete from classified_ad where hash1 = :h1 and hash2 = :h2 and hash3 = :h3 ") ; query.bindValue(":hash1", ca.iFingerPrint.iHash160bits[0]); query.bindValue(":hash2", ca.iFingerPrint.iHash160bits[1]); query.bindValue(":hash3", ca.iFingerPrint.iHash160bits[2]); query.exec() ; - if( query.numRowsAffected () != 1 ) testCaseSuccess = false ; + QSqlQuery query2; query2.prepare("delete from publish where hash1 = :h1 and hash2 = :h2 and hash3 = :h3 ") ; query2.bindValue(":hash1", ca.iFingerPrint.iHash160bits[0]); query2.bindValue(":hash2", ca.iFingerPrint.iHash160bits[1]); query2.bindValue(":hash3", ca.iFingerPrint.iHash160bits[2]); query.exec() ; - if ( c->iNextProtocolItemToSend.size() != 1 ) { - testCaseSuccess = false ; - QLOG_STR("c->iNextProtocolItemToSend->size() != 1 => FAILURE") ; - } delete c; delete p ; delete m ; @@ -684,6 +709,42 @@ delete tl ; delete m ; } +/** + * "ok" case of json text parsing + */ +void TestClassifiedAds::tryJSonParse() { + QByteArray json("{ \"dataItem\": { \"description\": \"is descriptive\" }}"); + bool ok (false); + QVariantMap result = JSonWrapper::parse(json, &ok) ; + QCOMPARE(ok, true) ; + QVERIFY(result.contains("dataItem") == true) ; +} +void TestClassifiedAds::tryJSonParseWithCompress() { + QByteArray json("{ \"dataItem\": { \"description\": \"is descriptive\" }}"); + bool ok (false); + QVariantMap result = JSonWrapper::parse(qCompress(json), &ok,true) ; + QCOMPARE(ok, true) ; + QVERIFY(result.contains("dataItem") == true) ; +} +/** + * tests that if parser is given text that is not json, + * it will correctly reject the result + */ +void TestClassifiedAds::tryJSonParseFailure() { + QByteArray json("{\"is just text, no json text,trolloloo"); + bool ok (false); + QVariantMap result = JSonWrapper::parse(json, &ok) ; + QVERIFY(ok == false) ; +} +/** + * tests that qvariant does get converted into json text + */ +void TestClassifiedAds::tryJSonSerialize() { + QMap m ; + m.insert("stringKey", "stringValue") ; + QByteArray serialized ( JSonWrapper::serialize(QVariant(m).toMap())) ; + QVERIFY(serialized.indexOf("stringValue") > 1) ; +} void TestClassifiedAds::tryCompression() { QByteArray tdata = QString("Here is a string with unique content").toUtf8(); diff -Nru classified-ads-0.07/test/testca.pro classified-ads-0.09/test/testca.pro --- classified-ads-0.07/test/testca.pro 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/test/testca.pro 2015-10-10 12:49:33.000000000 +0000 @@ -17,7 +17,8 @@ ../datamodel/profilecommentmodel.cpp \ ../datamodel/searchmodel.cpp \ ../datamodel/datamodelbase.cpp \ - ../datamodel/profilecomment.cpp ../datamodel/trusttreemodel.cpp + ../datamodel/profilecomment.cpp ../datamodel/trusttreemodel.cpp \ + ../util/jsonwrapper.cpp HEADERS = ../util/hash.h ../mcontroller.h mockup_controller.h \ ../datamodel/model.h ../datamodel/nodemodel.h \ ../datamodel/contentencryptionmodel.h ../net/networklistener.h \ @@ -38,10 +39,19 @@ ../datamodel/profilecommentmodel.h \ ../datamodel/searchmodel.h \ ../datamodel/datamodelbase.h \ - ../datamodel/profilecomment.h ../datamodel/trusttreemodel.h -CONFIG += qtestlib + ../datamodel/profilecomment.h ../datamodel/trusttreemodel.h \ + ../util/jsonwrapper.h CONFIG += debug +greaterThan(QT_MAJOR_VERSION, 4) { + QT += widgets + CONFIG += qtestlib +} else { + CONFIG += qtestlib +} QT += core network sql -LIBS = -lssl -lcrypto -lgcrypt -lnatpmp -lqjson -lgcov -lminiupnpc +LIBS = -lssl -lcrypto -lgcrypt -lnatpmp -lgcov -lminiupnpc +lessThan(QT_MAJOR_VERSION, 5) { + LIBS += -lqjson +} unix:INCLUDEPATH += /usr/include/miniupnpc QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage -DDEBUG diff -Nru classified-ads-0.07/textedit/textedit.cpp classified-ads-0.09/textedit/textedit.cpp --- classified-ads-0.07/textedit/textedit.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/textedit/textedit.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -70,7 +70,13 @@ #include "../log.h" #include "../ui/insertlinkdialog.h" #include - +#if QT_VERSION >= 0x050000 +// qt5 has its own mime-type-handling so lets depend on that, easier.. +#include +#else +// with qt4 use libmagic that does the same job +#include // from libmagic +#endif #ifdef Q_WS_MAC const QString rsrcPath = ":/images/mac"; #else @@ -278,6 +284,10 @@ connect(actionInsertLink, SIGNAL(triggered()), this, SLOT(insertLinkSelected())) ; menu->addAction(actionInsertLink) ; + actionInsertImage = new QAction(tr("Embed image"), this) ; + connect(actionInsertImage, SIGNAL(triggered()), + this, SLOT(insertImageSelected())) ; + menu->addAction(actionInsertImage) ; } void TextEdit::setupTextActions() { @@ -539,6 +549,94 @@ link_dialog->show() ; // the dialog will delete self } +// +// motivation here: we want to insert html snippet that +// looks like this: +// Embedded Image +// +void TextEdit::insertImageSelected() { + QLOG_STR("TextEdit::insertImageSelected") ; + QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), + "", + tr("Files (*.*)")); + bool imageIsOk (false) ; + if ( fileName.length() > 0 ) { + QPixmap pic ; + if ( ! pic.load(fileName) ) { + QMessageBox::about(this,tr("Error"), + tr("Can't load image")); + return ; + } else { + imageIsOk = true ; + } + } + if ( imageIsOk ) { + QString mimeType ; +#if QT_VERSION >= 0x050000 + QMimeDatabase db ; + QMimeType detectedType ( db.mimeTypeForFile(fileName) ) ; + if ( detectedType.isValid() ) { + mimeType = detectedType.name() ; + } +#else + const char *fileNameCStyleHeap (fileName.toUtf8().constData()) ; + + char fileNameCStyle[1024] ; + if ( strlen(fileNameCStyleHeap) < 1024 ) { + strncpy(fileNameCStyle, fileNameCStyleHeap, 1023) ; + // code stolen from http://vivithemage.co.uk/blog/?p=105 so thanks Vivi. + magic_t magic_cookie; + /*MAGIC_MIME tells magic to return a mime of the file, but you can specify different things*/ + magic_cookie = magic_open(MAGIC_MIME); + if (magic_cookie == NULL) { + QLOG_STR("unable to initialize magic library"); + return ; + } + if (magic_load(magic_cookie, NULL) != 0) { + LOG_STR2("cannot load magic database - %s", magic_error(magic_cookie)); + magic_close(magic_cookie); + return ; + } + LOG_STR2("Filename for magic = >%s<", fileNameCStyle); + const char *magic_full( magic_file(magic_cookie, fileNameCStyle) ) ; + if ( magic_full == NULL ) { + LOG_STR2("Magic_file error - %s", magic_error(magic_cookie)); + } else { + mimeType = QString::fromUtf8(magic_full) ; + } + magic_close(magic_cookie); + } +#endif + + if ( mimeType.length() > 0 ) { + int indexOfSemicolon = mimeType.indexOf(';') ; + if ( indexOfSemicolon > 1 ) { + QLOG_STR("Pruning semicolon from mime type " + mimeType) ; + mimeType = mimeType.left(indexOfSemicolon) ; + } + QLOG_STR("mime type " + mimeType) ; + QFile f ( fileName ) ; + if ( f.open(QIODevice::ReadOnly) ) { + if ( f.size() > KMaxProtocolItemSize ) { + emit error ( MController::FileOperationError, tr("File way too big")) ; + } else { + QByteArray content ( f.read(f.size() ) ) ; + QString snippet = + "\""+QFileInfo(f).fileName()+"\"" ; + content.clear() ; + if ( ( (quint32)(snippet.length()) + + (quint32)(textEdit->toHtml().length()) + + 10240 ) + > KMaxProtocolItemSize ) { + emit error ( MController::FileOperationError, tr("File way too big")) ; + } else { + textEdit->insertHtml(snippet) ; + } + } + } + } + } +} void TextEdit::printPreview(QPrinter *printer) { #ifdef QT_NO_PRINTER @@ -740,3 +838,4 @@ QLOG_STR("link label " + aLinkLabel) ; textEdit->insertHtml("
"+aLinkLabel+" ") ; } + diff -Nru classified-ads-0.07/textedit/textedit.h classified-ads-0.09/textedit/textedit.h --- classified-ads-0.07/textedit/textedit.h 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/textedit/textedit.h 2015-10-10 12:49:33.000000000 +0000 @@ -134,6 +134,7 @@ void clipboardDataChanged(); void printPreview(QPrinter *); void insertLinkSelected() ; /**< user says he wants insert a link */ + void insertImageSelected() ; /**< user says he wants embed an image */ private: void mergeFormatOnWordOrSelection(const QTextCharFormat &format); void fontChanged(const QFont &f); @@ -163,7 +164,8 @@ *actionCut, *actionCopy, *actionPaste, - *actionInsertLink; + *actionInsertLink, + *actionInsertImage; QComboBox *comboStyle; QFontComboBox *comboFont; diff -Nru classified-ads-0.07/ui/insertLink.ui classified-ads-0.09/ui/insertLink.ui --- classified-ads-0.07/ui/insertLink.ui 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/ui/insertLink.ui 2015-10-10 12:49:33.000000000 +0000 @@ -47,12 +47,12 @@ - caprofile + caprofile - caad + caad @@ -62,25 +62,40 @@ - cablob + cablob - http + http - ftp + ftp + + + + + + + + + + + + + + + - :// + :// diff -Nru classified-ads-0.07/ui/newprivmsgdialog.cpp classified-ads-0.09/ui/newprivmsgdialog.cpp --- classified-ads-0.07/ui/newprivmsgdialog.cpp 2015-04-10 20:30:58.000000000 +0000 +++ classified-ads-0.09/ui/newprivmsgdialog.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -89,43 +89,47 @@ tr("Recipient addr is not valid")) ; } else { QLOG_STR("Privmsg msg.iRecipient = " + msg.iRecipient.toString() ) ; - if ( iReferencesMsg != KNullHash ) { - msg.iReplyToMsg = iReferencesMsg ; - } else { - msg.iReplyToMsg = KNullHash ; - } - if ( iReferencesCa != KNullHash ) { - msg.iReplyToCa = iReferencesCa ; - } else { - msg.iReplyToCa = KNullHash ; - } - QList* attachmentRecipients = new QList() ; + quint32 dummy ; + QByteArray dummyRecipientKey ; + if ( + iController->model().contentEncryptionModel().PublicKey(msg.iRecipient, + dummyRecipientKey, + &dummy )) { + if ( iReferencesMsg != KNullHash ) { + msg.iReplyToMsg = iReferencesMsg ; + } else { + msg.iReplyToMsg = KNullHash ; + } + if ( iReferencesCa != KNullHash ) { + msg.iReplyToCa = iReferencesCa ; + } else { + msg.iReplyToCa = KNullHash ; + } + QList* attachmentRecipients = new QList() ; - attachmentRecipients->append(iSelectedProfile.iFingerPrint) ; // self - attachmentRecipients->append(msg.iRecipient) ; // recipient + attachmentRecipients->append(iSelectedProfile.iFingerPrint) ; // self + attachmentRecipients->append(msg.iRecipient) ; // recipient - foreach (const MetadataQueryDialog::MetadataResultSet& attachmentFile , - iFilesAboutToBeAttached ) { - Hash attachmentHash = publishBinaryAttachment(attachmentFile, - false, - attachmentRecipients ) ; - if ( attachmentHash != KNullHash ) { - msg.iAttachedFiles.append(attachmentHash) ; + foreach (const MetadataQueryDialog::MetadataResultSet& attachmentFile , + iFilesAboutToBeAttached ) { + Hash attachmentHash = publishBinaryAttachment(attachmentFile, + false, + attachmentRecipients ) ; + if ( attachmentHash != KNullHash ) { + msg.iAttachedFiles.append(attachmentHash) ; + } } - } - delete attachmentRecipients ; - attachmentRecipients = NULL ; - iController->model().lock() ; + delete attachmentRecipients ; + attachmentRecipients = NULL ; + iController->model().lock() ; - if ( iRecipientsNode == KNullHash ) { - iRecipientsNode = tryFindRecipientNode(msg.iRecipient) ; - } + if ( iRecipientsNode == KNullHash ) { + iRecipientsNode = tryFindRecipientNode(msg.iRecipient) ; + } - quint32 dummy ; - if ( iController->model().contentEncryptionModel().PublicKey(iSelectedProfile.iFingerPrint, msg.iProfileKey, - &dummy )) { + &dummy ) ; iController->model().privateMessageModel().publishPrivMessage(msg, iRecipientsNode) ; iSearchModel.newMsgReceived(msg) ; diff -Nru classified-ads-0.07/util/catranslator.cpp classified-ads-0.09/util/catranslator.cpp --- classified-ads-0.07/util/catranslator.cpp 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/util/catranslator.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,120 @@ +/* -*-C++-*- -*-coding: utf-8-unix;-*- + Classified Ads is Copyright (c) Antti Jarvinen 2013. + + This file is part of Classified Ads. + + Classified Ads is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + Classified Ads 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with Classified Ads; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + + +#include "catranslator.h" +#include "../log.h" +#include +#include +#ifdef WIN32 +#include +#endif +/** + * Translation domain for gnu gettext library + */ +static const char* KProgramName ( "classified-ads" ) ; +/** + * This is magick text between gnu gettext context and the string. + * The | is actuallu Qt magick, for some reason Qt wants to have | + * at the end of context strings after they come out from lconvert + * utility but | is missing when QApplication calls ::translate + * method of this class -> thus add the | here. \004 in turn + * is gnu gettext magick. + */ +static const char* KGetTextContextGlue ( "|\004" ) ; + +CATranslator::CATranslator(QObject* aParent) : + QTranslator(aParent) { +#ifdef WIN32 + // in win32 user typically has no locale set in environment variables + // in way that gnu gettext would recognice. offer a bit help: + QString langVariableName ( "LANGUAGE=" ) ; + QLocale systemLocale ( QLocale::system() ) ; + const QString languageName ( systemLocale.name() ) ; + putenv((langVariableName + languageName).toUtf8().constData()) ; + setlocale(LC_MESSAGES,languageName.toUtf8().constData()); + // in win32, assume the translation files reside under + // same directory as the binary + bindtextdomain(KProgramName,"./"); +#else + setlocale(LC_ALL,""); + // in unix-like systems the installer puts files here: + bindtextdomain(KProgramName,"/usr/share/locale"); +#endif + textdomain(KProgramName); + bind_textdomain_codeset(KProgramName, "utf-8") ; +} + +CATranslator::~CATranslator() { + +} + + +QString CATranslator::translate ( const char * aContext, + const char * aSourceText, + const char * aDisambiguation +#if QT_VERSION >= 0x050000 + ,int aPluralForm +#endif + ) const { + char *contextAndSourceText ((char *)malloc(strlen(aContext) + + strlen(aSourceText) + + 5)) ; + if ( contextAndSourceText == NULL ) { + // uh, oh, malloc failure + return QString::fromUtf8(aSourceText) ; + } + strcpy(contextAndSourceText, aContext) ; + strcat(contextAndSourceText, KGetTextContextGlue) ; + strcat(contextAndSourceText, aSourceText) ; + char *proposed_string( + dgettext(KProgramName, + contextAndSourceText) + ); + if ( strcmp(proposed_string, contextAndSourceText) == 0 ) { + // no match, maybe qt platform string + free( contextAndSourceText ); + if ( QTranslator::isEmpty() ) { + // we have no strings in parent class, e.g. native qt + // format translation strings: just return the source + // text + return QString::fromUtf8(aSourceText) ; + } else { + // we have qt native format translations available, so try there: + return QTranslator::translate(aContext, + aSourceText, + aDisambiguation +#if QT_VERSION >= 0x050000 + ,aPluralForm +#endif + ) ; + } + } else { + // yes, a match + QString retval( QString::fromUtf8(proposed_string) ) ; + free(contextAndSourceText) ; + return retval ; + } +} + +bool CATranslator::isEmpty() const { + return false ; +} diff -Nru classified-ads-0.07/util/catranslator.h classified-ads-0.09/util/catranslator.h --- classified-ads-0.07/util/catranslator.h 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/util/catranslator.h 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,78 @@ +/* -*-C++-*- + Classified Ads is Copyright (c) Antti Jarvinen 2013. + + This file is part of Classified Ads. + + Classified Ads is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + Classified Ads 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with Classified Ads; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include + +#ifndef CATRANSLATOR_H +#define CATRANSLATOR_H + +/** + * @brief Class for translating strings + * + * Class for providing translations. In practice this wraps gnu gettext + * but may have also other sources of translations. Note that Qt allows + * multiple translators to be in cascade. + */ +class CATranslator : public QTranslator { + Q_OBJECT +public: + /** + * Constructor. + * + * Has side-effect of initializing gnu gettext library inside. + * This same class may contain gnu gettext .po-file that is + * loaded here at constructor. It is still possible to use + * the @ref QTranslator::load method to load Qt-format + * translation and when @ref CATranslator::translate is called, + * this class will first search for .po file contents and if + * no match is made, then it will return the translation from + * possibly loaded Qt translation file. + */ + CATranslator(QObject* aParent = NULL) ; + /** + * Destructor + */ + ~CATranslator() ; + /** + * Actual translator method. This is used to return actual strings + * + * @param aContext string that tells in which context the aSourceText + * appears in. + * @param aSourceText the actual string to be translated. + * @param aDisambiguation if sourceText appears multiple times + * in same context, this may be used to + * further refine the translation. + * @param aPluralForm Maybe used to select for singular/plural form + * of the translation e.g. "message received" or + * "messages received" + * @return Translation. If translation was not available, then + * returns aSourceText as it is. + */ + virtual QString translate(const char *aContext, + const char *aSourceText, + const char *aDisambiguation = 0 +#if QT_VERSION >= 0x050000 + , int aPluralForm = -1 + ) const Q_DECL_OVERRIDE; +#else + ) const ; +#endif + virtual bool isEmpty() const; +} ; +#endif /* JSONWRAPPER_H */ diff -Nru classified-ads-0.07/util/jsonwrapper.cpp classified-ads-0.09/util/jsonwrapper.cpp --- classified-ads-0.07/util/jsonwrapper.cpp 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/util/jsonwrapper.cpp 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,112 @@ +/* -*-C++-*- -*-coding: utf-8-unix;-*- + Classified Ads is Copyright (c) Antti Jarvinen 2013. + + This file is part of Classified Ads. + + Classified Ads is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + Classified Ads 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with Classified Ads; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "jsonwrapper.h" +#if QT_VERSION >= 0x050000 +#include +#else +#ifdef WIN32 +#include +#include +#else +#include +#include +#endif // WIN32 +#endif // QT_VERSION +#include "../log.h" +// +// this parser method is static +// +QVariantMap JSonWrapper::parse(const QByteArray& aJSonText, + bool* aIsParseOk , + bool aUncompressFirst ) { + if ( aIsParseOk != NULL ) { + *aIsParseOk = false ; // by default declare a failure + } +#if QT_VERSION >= 0x050000 + QJsonParseError errorHandler ; + if ( aUncompressFirst ) { + QByteArray unCompressed ( qUncompress(aJSonText)) ; + QJsonDocument d = QJsonDocument::fromJson(unCompressed,&errorHandler); + if ( errorHandler.error == QJsonParseError::NoError ) { + if ( aIsParseOk ) { + *aIsParseOk= true; + } + return d.toVariant().toMap() ; + } else { + QLOG_STR("Unparseable JSON:" + QString(unCompressed) + ":" + errorHandler.errorString()) ; + return QVariant().toMap() ; + } + } else { + QJsonDocument d = QJsonDocument::fromJson(aJSonText,&errorHandler); + if ( errorHandler.error == QJsonParseError::NoError ) { + if ( aIsParseOk ) { + *aIsParseOk= true; + } + return d.toVariant().toMap() ; + } else { + QLOG_STR("Unparseable JSON:" + QString(aJSonText) + ": " + errorHandler.errorString()) ; + return QVariant().toMap() ; + } + } +#else +// with qt4 use qjson, it is ok + QJson::Parser parser; + bool ok; + if ( aUncompressFirst ) { + QByteArray unCompressed ( qUncompress(aJSonText)) ; + if ( unCompressed.size() > 0 ) { + QVariantMap result = parser.parse (unCompressed, &ok).toMap(); + if ( aIsParseOk != NULL ) { + *aIsParseOk = ok ; // actual parse result + } + return result ; + } else { + return QVariant().toMap() ; // failure, return empty + } + } else { + QVariantMap result = parser.parse (aJSonText, &ok).toMap(); + if ( aIsParseOk != NULL ) { + *aIsParseOk = ok ; // actual parse result + } + return result ; + } +#endif +} + +QByteArray JSonWrapper::serialize(const QVariant& aObjectToSerialize, + bool aFinallyCompress ) { +#if QT_VERSION >= 0x050000 + if ( aFinallyCompress ) { + return qCompress(QJsonDocument::fromVariant(aObjectToSerialize).toJson(QJsonDocument::Compact)) ; + } else { + return QJsonDocument::fromVariant(aObjectToSerialize).toJson(QJsonDocument::Compact) ; + } +#else + QJson::Serializer serializer; + + if ( aFinallyCompress ) { + return qCompress(serializer.serialize(aObjectToSerialize)) ; + } else { + return serializer.serialize(aObjectToSerialize) ; + } +#endif +} + diff -Nru classified-ads-0.07/util/jsonwrapper.h classified-ads-0.09/util/jsonwrapper.h --- classified-ads-0.07/util/jsonwrapper.h 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/util/jsonwrapper.h 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,61 @@ +/* -*-C++-*- + Classified Ads is Copyright (c) Antti Jarvinen 2013. + + This file is part of Classified Ads. + + Classified Ads is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + Classified Ads 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with Classified Ads; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include // Actually for QVariantMap + +#ifndef JSONWRAPPER_H +#define JSONWRAPPER_H + +/** + * @brief Class for wrapping engine to (de)serialize json + * + * Qt5 has included json routines so if using Qt5 it makes sense to + * that because it is one dependency less ; with earlier QT versions a 3rd + * party library is required. This class provides programmer with single API + * to use json routines regardless of underlying implementation. + */ +class JSonWrapper { +public: + /** + * Method that returns aJSonText parsed into a QVariantMap. + * + * @param aJSonText is text to parse. Must be valid json. + * @param aIsParseOk is set to true/false depending on parse success + * @param aUncompressFirst indication if aJSonText is compressed or not. + * if compressed, then qUncompress is applied before parser. + * @return Content of AJSonText as QVariant. Is empty if parse failed + * so user should check value of aIsParseOk before assuming + * anything about the content. + */ + static QVariantMap parse(const QByteArray& aJSonText, + bool* aIsParseOk = NULL, + bool aUncompressFirst = false ) ; + /** + * method that returns QVariant as JSon text. + * + * @param aObjectToSerialize is the object, usually QVariantMap but + * basically any QVariant should do. + * @param aFinallyCompress if set to true, the returned byte-array + * is compressed using qCompress() + * @return serialized stream e.g. json text. + */ + static QByteArray serialize(const QVariant& aObjectToSerialize, + bool aFinallyCompress = false ) ; +} ; +#endif /* JSONWRAPPER_H */ diff -Nru classified-ads-0.07/windows/nsis-installer.nsi classified-ads-0.09/windows/nsis-installer.nsi --- classified-ads-0.07/windows/nsis-installer.nsi 2015-04-12 10:14:02.000000000 +0000 +++ classified-ads-0.09/windows/nsis-installer.nsi 2015-10-10 12:49:33.000000000 +0000 @@ -8,7 +8,7 @@ # define name of installer outFile "Classified-ads-Win32.exe" !define MUI_ICON "turt-transparent-128x128.ico" -!define VERSION "0.06" +!define VERSION "0.09" # ask to be admin in order to create start menu shortcuts to all users RequestExecutionLevel admin Name "Classified ads ${VERSION}" @@ -26,31 +26,34 @@ CreateDirectory "$SMPROGRAMS\Classified-ads" CreateShortCut "$SMPROGRAMS\Classified-ads\uninstall.lnk" "$INSTDIR\uninstall.exe" file /oname=classified-ads.exe ..\release\classified-ads.exe -file /oname=classified_ads_fi.qm ..\classified_ads_fi.qm -file /oname=classified_ads_sv.qm ..\classified_ads_sv.qm -file /oname=qt_ca.qm ..\release\qt_ca.qm -file /oname=qt_cs.qm ..\release\qt_cs.qm -file /oname=qt_de.qm ..\release\qt_de.qm -file /oname=qt_fi.qm ..\release\qt_fi.qm -file /oname=qt_hu.qm ..\release\qt_hu.qm -file /oname=qt_it.qm ..\release\qt_it.qm -file /oname=qt_ja.qm ..\release\qt_ja.qm -file /oname=qt_lv.qm ..\release\qt_lv.qm -file /oname=qt_ru.qm ..\release\qt_ru.qm -file /oname=qt_sk.qm ..\release\qt_sk.qm -file /oname=qt_uk.qm ..\release\qt_uk.qm +CreateDirectory "$INSTDIR\fi\LC_MESSAGES" +file /oname=$INSTDIR\fi\LC_MESSAGES\classified-ads.mo ..\po\fi.mo +CreateDirectory "$INSTDIR\sv\LC_MESSAGES" +file /oname=$INSTDIR\sv\LC_MESSAGES\classified-ads.mo ..\po\sv.mo +CreateDirectory "$INSTDIR\da\LC_MESSAGES" +file /oname=$INSTDIR\da\LC_MESSAGES\classified-ads.mo ..\po\da.mo +file /oname=qt_ca.qm ..\release\translations\qt_ca.qm +file /oname=qt_cs.qm ..\release\translations\qt_cs.qm +file /oname=qt_de.qm ..\release\translations\qt_de.qm +file /oname=qt_fi.qm ..\release\translations\qt_fi.qm +file /oname=qt_hu.qm ..\release\translations\qt_hu.qm +file /oname=qt_it.qm ..\release\translations\qt_it.qm +file /oname=qt_ja.qm ..\release\translations\qt_ja.qm +file /oname=qt_lv.qm ..\release\translations\qt_lv.qm +file /oname=qt_ru.qm ..\release\translations\qt_ru.qm +file /oname=qt_sk.qm ..\release\translations\qt_sk.qm +file /oname=qt_uk.qm ..\release\translations\qt_uk.qm CreateDirectory "$INSTDIR\bearer" CreateDirectory "$INSTDIR\iconengines" CreateDirectory "$INSTDIR\imageformats" CreateDirectory "$INSTDIR\printsupport" CreateDirectory "$INSTDIR\platforms" CreateDirectory "$INSTDIR\sqldrivers" -file /oname=libqjson.dll ..\..\qjson-master\build\src\libqjson.dll -file /oname=miniupnpc.dll ..\..\miniupnpc\miniupnpc-1.9\miniupnpc.dll +file /oname=miniupnpc.dll ..\..\miniupnpc-1.9\miniupnpc.dll CreateShortCut "$SMPROGRAMS\Classified-ads\Classified-ads.lnk" "$INSTDIR\Classified-ads.exe" -file /oname=icudt53.dll deps\icudt53.dll -file /oname=icuin53.dll deps\icuin53.dll -file /oname=icuuc53.dll deps\icuuc53.dll +file /oname=D3Dcompiler_41.dll deps\D3Dcompiler_41.dll +file /oname=libEGL.dll deps\libEGL.dll +file /oname=libGLESV2.dll deps\libGLESV2.dll file /oname=libgcc_s_dw2-1.dll deps\libgcc_s_dw2-1.dll file /oname=libstdc++-6.dll deps\libstdc++-6.dll file /oname=libwinpthread-1.dll deps\libwinpthread-1.dll @@ -79,8 +82,10 @@ file /oname=platforms\qwindows.dll ..\release\platforms\qwindows.dll file /oname=printsupport\windowsprintersupport.dll ..\release\printsupport\windowsprintersupport.dll file /oname=sqldrivers\qsqlite.dll ..\release\sqldrivers\qsqlite.dll -file /oname=libeay32.dll C:\Qt\Tools\mingw491_32\opt\bin\libeay32.dll -file /oname=ssleay32.dll C:\Qt\Tools\mingw491_32\opt\bin\ssleay32.dll +file /oname=libeay32.dll ..\release\libeay32.dll +file /oname=ssleay32.dll ..\release\ssleay32.dll +file /oname=libiconv-2.dll ..\release\libiconv-2.dll +file /oname=libintl-8.dll ..\release\libintl-8.dll file /oname=LICENSE ..\LICENSE WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Classified-ads" "DisplayName" "Classified-ads (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Classified-ads" "UninstallString" "$INSTDIR\Uninstall.exe" @@ -95,8 +100,6 @@ delete "$SMPROGRAMS\Classified-ads\Classified-ads.lnk" RMDIR "$SMPROGRAMS\Classified-ads" delete "$INSTDIR\classified-ads.exe" -delete "$INSTDIR\classified_ads_fi.qm" -delete "$INSTDIR\classified_ads_sv.qm" delete "$INSTDIR\qt_ca.qm" delete "$INSTDIR\qt_cs.qm" delete "$INSTDIR\qt_de.qm" @@ -108,9 +111,9 @@ delete "$INSTDIR\qt_ru.qm" delete "$INSTDIR\qt_sk.qm" delete "$INSTDIR\qt_uk.qm" -delete "$INSTDIR\icudt53.dll" -delete "$INSTDIR\icuin53.dll" -delete "$INSTDIR\icuuc53.dll" +delete "$INSTDIR\D3Dcompiler_41.dll" +delete "$INSTDIR\libEGL.dll" +delete "$INSTDIR\libGLESV2.dll" delete "$INSTDIR\libgcc_s_dw2-1.dll" delete "$INSTDIR\libstdc++-6.dll" delete "$INSTDIR\libwinpthread-1.dll" @@ -142,8 +145,18 @@ delete "$INSTDIR\sqldrivers\qsqlite.dll" delete "$INSTDIR\libeay32.dll" delete "$INSTDIR\ssleay32.dll" -delete "$INSTDIR\libqjson.dll" delete "$INSTDIR\miniupnpc.dll" +delete "$INSTDIR\libiconv-2.dll" +delete "$INSTDIR\libintl-8.dll" +delete "$INSTDIR\fi\LC_MESSAGES\classified-ads.mo" +delete "$INSTDIR\sv\LC_MESSAGES\classified-ads.mo" +delete "$INSTDIR\da\LC_MESSAGES\classified-ads.mo" +RMDIR "$INSTDIR\sv\LC_MESSAGES" +RMDIR "$INSTDIR\sv" +RMDIR "$INSTDIR\fi\LC_MESSAGES" +RMDIR "$INSTDIR\fi" +RMDIR "$INSTDIR\da\LC_MESSAGES" +RMDIR "$INSTDIR\da" RMDIR "$INSTDIR\bearer" RMDIR "$INSTDIR\iconengines" RMDIR "$INSTDIR\imageformats" diff -Nru classified-ads-0.07/windows/README.TXT classified-ads-0.09/windows/README.TXT --- classified-ads-0.07/windows/README.TXT 1970-01-01 00:00:00.000000000 +0000 +++ classified-ads-0.09/windows/README.TXT 2015-10-10 12:49:33.000000000 +0000 @@ -0,0 +1,81 @@ +Here are briefly the steps for setting up dev env for windows: + +1. download qt (v5.5) from http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-windows-x86-mingw492-5.5.0.exe +2. install, also select tools/MinGW4.9.2 from "components" section +3. get openssl, instructions are in http://wiki.qt.io/Compiling_OpenSSL_with_MinGW +3.1 e.g. -> install msys, the 32-bit version from https://msys2.github.io/ +3.2 get https://www.openssl.org/source/openssl-1.0.2d.tar.gz +3.3 get necessary goodies into msys, in msys-shell say + $ pacmac -Sy + $ pacman --needed -S bash pacman pacman-mirrors msys2-runtime + restart the msys shell + $ pacman --needed -S tar perl make + add gcc from qt into path: + $ export PATH=$PATH:/c/qt/Qt5.5.0/Tools/mingw492_32/bin + in directory where openssl is extracted into, configure: + $ ./Configure --prefix=$PWD -I$PWD/include no-idea no-mdc2 no-rc5 shared mingw + and do not try using mingw32-make, it will resort to g++ and fail due to missing CFLAGS + $ make +4. get miniupnpc from http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.tar.gz + compile by saying + $ export PATH=$PATH:/c/qt/Qt5.5.0/Tools/mingw492_32/bin + $ export PATH=.:$PATH + $ make -f Makefile.mingw +5. get libiconv+gnu gettext, e.g. get + http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz + http://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.6.tar.xz + and compile like this: + $ tar xfvz libiconv-1.14.tar.gz + $ cd libiconv-1.14 + $ ./configure --host=i586-pc-mingw32 --build=i586-pc-mingw32 + $ make + $ make install + again, make sure to use make, not mingw32-make + $ xz -d < gettext-0.19.6.tar.xz | tar xfvo - + $ cd gettext-0.19.6 + $ ./configure --host=i586-pc-mingw32 --build=i586-pc-mingw32 + $ make + $ make install + after this the libraries needed at runtime libiconv-2.dll and libintl-8.dll + are at \msys32\usr\local\bin\ +6. Get classified ads, preferably from https://github.com/operatornormal/classified-ads/archive/master.zip + unzip, possibly adjust directories in file classified-ads.pro so that all libraries listed + above are found from their paths. All library compilation was done inside msys shell + but classified ads gets compiled inside Qt shell, so open qt-shell, navigate to directory + and say + qmake + mingw32-make + the resulting binary goes either to sub-directory debug or release depending on your + settings in .pro file. Before running you must copy following .dll files into same + directory with classified-ads.exe: + libeay32.dll and ssleay32.dll from openssl directory + libiconv-2.dll and libintl-8.dll from \msys32\usr\local\bin\ + miniupnpc.dll from miniupnpc directory + +Currently the classified-ads.pro is set up so that all libraries that +classified ads depends on are unpacked at same directory with classified +ads, like this: +C:\foobar>dir + + Kansio C:\foobar + +24.09.2015 18:24 . +24.09.2015 18:24 .. +24.09.2015 16:07 classified_ads +21.09.2015 23:31 debugview +21.09.2015 21:31 deps +21.09.2015 22:24 gettext-0.19.6 +21.09.2015 22:10 libiconv-1.14 +15.09.2015 20:33 miniupnpc-1.9 +15.09.2015 20:24 openssl-1.0.2d +22.09.2015 00:00 2 750 windows-setup.txt + +and programs are compiled in place, gettext and libiconv are also installed +using the "make install" command so they're found from \msys32 path also. + +For producing the installation package, you'll need the nsis installer program. +Before running the installer generation script, run batch file "deps.bat" in +windows sub-directory, it will copy some Qt dll's in place, they're needed +at run-time. + +Happy hacking.