text:
_version = "0.13.0"

_description = """
  NOTES:

    - the property names for the database are the union of those for
      all molecules.

    - missing property values will be set to 'N/A', though this can be
      changed with the --missingPropertyVal argument.

    - The property names may be altered on loading the database.  Any
      non-alphanumeric character in a property name will be replaced
      with '_'. e.g. "Gold.Goldscore.Constraint.Score" becomes
      "Gold_Goldscore_Constraint_Score".  This is important to know
      when querying.

    - Property names are not case sensitive in the database; this may
      cause some problems if they are case sensitive in the sd file.

"""
import argparse

from rdkit import RDConfig
from rdkit import Chem
from rdkit.Dbase.DbConnection import DbConnect
from rdkit.Dbase import DbModule
from rdkit.RDLogger import logger
from rdkit.Chem.MolDb import Loader

logger = logger()
import sys, os
import io
import pickle
from rdkit.Chem.MolDb.FingerprintUtils import BuildSigFactory, LayeredOptions
from rdkit.Chem.MolDb import FingerprintUtils

# ---- ---- ---- ----  ---- ---- ---- ----  ---- ---- ---- ----  ---- ---- ---- ----

def initParser():
  """ Initialize the command line parser """
  parser = argparse.ArgumentParser(usage='CreateDB [optional arguments] <filename>',
                                   description=_description,
                                   formatter_class=argparse.RawDescriptionHelpFormatter)

  parser.add_argument('filename', nargs='?', help='File containg molecules to load into database')
  parser.add_argument('--version', action='version', version='%(prog)s ' + _version)

  parser.add_argument('--outDir', '--dbDir', default='', help='name of the output directory')
  parser.add_argument('--molDbName', default='Compounds.sqlt', help='name of the molecule database')
  parser.add_argument('--molIdName', default='compound_id', help='name of the database key column')
  parser.add_argument('--regName', default='molecules', help='name of the molecular registry table')
  parser.add_argument('--pairDbName', default='AtomPairs.sqlt', help='name of the atom pairs database')
  parser.add_argument('--pairTableName', default='atompairs', help='name of the atom pairs table')
  parser.add_argument('--fpDbName', default='Fingerprints.sqlt',
                    help='name of the 2D fingerprints database')
  parser.add_argument('--fpTableName', default='rdkitfps', help='name of the 2D fingerprints table')
  parser.add_argument('--layeredTableName', default='layeredfps',
                    help='name of the layered fingerprints table')
  parser.add_argument('--descrDbName', default='Descriptors.sqlt',
                    help='name of the descriptor database')
  parser.add_argument('--descrTableName', default='descriptors_v1', help='name of the descriptor table')
  parser.add_argument('--descriptorCalcFilename', default=os.path.join(RDConfig.RDBaseDir, 'Projects',
                                                                     'DbCLI', 'moe_like.dsc'),
                    help='name of the file containing the descriptor calculator')
  parser.add_argument('--errFilename', default='loadErrors.txt',
                    help='name of the file to contain information about molecules that fail to load')
  parser.add_argument('--noPairs', default=True, dest='doPairs', action='store_false',
                    help='skip calculating atom pairs')
  parser.add_argument('--noFingerprints', default=True, dest='doFingerprints', action='store_false',
                    help='skip calculating 2D fingerprints')
  parser.add_argument('--noLayeredFps', default=True, dest='doLayered', action='store_false',
                    help='skip calculating layered fingerprints')
  parser.add_argument('--noDescriptors', default=True, dest='doDescriptors', action='store_false',
                    help='skip calculating descriptors')
  parser.add_argument('--noProps', default=False, dest='skipProps', action='store_true',
                    help="don't include molecular properties in the database")
  parser.add_argument('--noSmiles', default=False, dest='skipSmiles', action='store_true',
                    help="don't include SMILES in the database (can make loading somewhat faster)")
  parser.add_argument('--maxRowsCached', default=-1,
                    help="maximum number of rows to cache before doing a database commit")

  parser.add_argument('--silent', default=False, action='store_true',
                    help='do not provide status messages')

  parser.add_argument('--molFormat', default='', choices=('smiles', 'sdf', ''),
                    help='specify the format of the input file')
  parser.add_argument(
    '--nameProp', default='_Name',
    help='specify the SD property to be used for the molecule names. Default is to use the mol block name')
  parser.add_argument(
    '--missingPropertyVal', default='N/A',
    help='value to insert in the database if a property value is missing. Default is %(default)s.')
  parser.add_argument('--addProps', default=False, action='store_true',
                    help='add computed properties to the output')
  parser.add_argument('--noExtras', default=False, action='store_true',
                    help='skip all non-molecule databases')
  parser.add_argument('--skipLoad', '--skipMols', action="store_false", dest='loadMols', default=True,
                    help='skip the molecule loading (assumes mol db already exists)')
  parser.add_argument('--updateDb', '--update', default=False, action='store_true',
                    help='add to an existing database')
  parser.add_argument('--doPharm2D', default=False, action='store_true',
                    help='skip calculating Pharm2D fingerprints')
  parser.add_argument('--pharm2DTableName', default='pharm2dfps',
                    help='name of the Pharm2D fingerprints table')
  parser.add_argument('--fdefFile', '--fdef',
                    default=os.path.join(RDConfig.RDDataDir, 'Novartis1.fdef'),
                    help='provide the name of the fdef file to use for 2d pharmacophores')
  parser.add_argument('--doGobbi2D', default=False, action='store_true',
                    help='skip calculating Gobbi 2D fingerprints')
  parser.add_argument('--gobbi2DTableName', default='gobbi2dfps',
                    help='name of the Gobbi 2D fingerprints table')

  parser.add_argument('--noMorganFps', '--noCircularFps', default=True, dest='doMorganFps',
                    action='store_false', help='skip calculating Morgan (circular) fingerprints')
  parser.add_argument('--morganFpTableName', default='morganfps',
                    help='name of the Morgan fingerprints table')

  parser.add_argument('--delimiter', '--delim', default=' ', help='the delimiter in the input file')
  parser.add_argument('--titleLine', default=False, action='store_true',
                    help='the input file contains a title line')
  parser.add_argument('--smilesColumn', '--smilesCol', default=0, type=int,
                    help='the column index with smiles')
  parser.add_argument('--nameColumn', '--nameCol', default=1, type=int,
                    help='the column index with mol names')
  return parser

def CreateDb(options, dataFilename='', supplier=None):
  if not dataFilename and supplier is None:
    raise ValueError('Please provide either a data filename or a supplier')

  if options.errFilename:
    errFile = open(os.path.join(options.outDir, options.errFilename), 'w+')
  else:
    errFile = None

  if options.noExtras:
    options.doPairs = False
    options.doDescriptors = False
    options.doFingerprints = False
    options.doPharm2D = False
    options.doGobbi2D = False
    options.doLayered = False
    options.doMorganFps = False

  if options.loadMols:
    if supplier is None:
      if not options.molFormat:
        ext = os.path.splitext(dataFilename)[-1].lower()
        if ext == '.sdf':
          options.molFormat = 'sdf'
        elif ext in ('.smi', '.smiles', '.txt', '.csv'):
          options.molFormat = 'smiles'
          if not options.delimiter:
            # guess the delimiter
            import csv
            sniffer = csv.Sniffer()
            dlct = sniffer.sniff(open(dataFilename, 'r').read(2000))
            options.delimiter = dlct.delimiter
            if not options.silent:
              logger.info(
                'Guessing that delimiter is %s. Use --delimiter argument if this is wrong.' %
                repr(options.delimiter))

        if not options.silent:
          logger.info('Guessing that mol format is %s. Use --molFormat argument if this is wrong.' %
                      repr(options.molFormat))
      if options.molFormat == 'smiles':
        if options.delimiter == '\\t':
          options.delimiter = '\t'
        supplier = Chem.SmilesMolSupplier(
          dataFilename, titleLine=options.titleLine, delimiter=options.delimiter,
          smilesColumn=options.smilesColumn, nameColumn=options.nameColumn)
      else:
        supplier = Chem.SDMolSupplier(dataFilename)
    if not options.silent:
      logger.info('Reading molecules and constructing molecular database.')
    Loader.LoadDb(supplier, os.path.join(options.outDir, options.molDbName), errorsTo=errFile,
                  regName=options.regName, nameCol=options.molIdName, skipProps=options.skipProps,
                  defaultVal=options.missingPropertyVal, addComputedProps=options.addProps,
                  uniqNames=True, skipSmiles=options.skipSmiles,
                  maxRowsCached=int(options.maxRowsCached), silent=options.silent,
                  nameProp=options.nameProp, lazySupplier=int(options.maxRowsCached) > 0,
                  startAnew=not options.updateDb)

  if options.doPairs:
    pairConn = DbConnect(os.path.join(options.outDir, options.pairDbName))
    pairCurs = pairConn.GetCursor()
    try:
      pairCurs.execute('drop table %s' % (options.pairTableName))
    except Exception:
      pass
    pairCurs.execute(
      'create table %s (guid integer not null primary key,%s varchar not null unique,atompairfp blob,torsionfp blob)'
      % (options.pairTableName, options.molIdName))

  if options.doFingerprints or options.doPharm2D or options.doGobbi2D or options.doLayered:
    fpConn = DbConnect(os.path.join(options.outDir, options.fpDbName))
    fpCurs = fpConn.GetCursor()
    try:
      fpCurs.execute('drop table %s' % (options.fpTableName))
    except Exception:
      pass
    try:
      fpCurs.execute('drop table %s' % (options.pharm2DTableName))
    except Exception:
      pass
    try:
      fpCurs.execute('drop table %s' % (options.gobbi2DTableName))
    except Exception:
      pass
    try:
      fpCurs.execute('drop table %s' % (options.layeredTableName))
    except Exception:
      pass

    if options.doFingerprints:
      fpCurs.execute(
        'create table %s (guid integer not null primary key,%s varchar not null unique,rdkfp blob)'
        % (options.fpTableName, options.molIdName))
    if options.doLayered:
      layeredQs = ','.join('?' * LayeredOptions.nWords)
      colDefs = ','.join(['Col_%d integer' % (x + 1) for x in range(LayeredOptions.nWords)])
      fpCurs.execute(
        'create table %s (guid integer not null primary key,%s varchar not null unique,%s)' % (
          options.layeredTableName, options.molIdName, colDefs))

    if options.doPharm2D:
      fpCurs.execute(
        'create table %s (guid integer not null primary key,%s varchar not null unique,pharm2dfp blob)'
        % (options.pharm2DTableName, options.molIdName))
      sigFactory = BuildSigFactory(options)
    if options.doGobbi2D:
      fpCurs.execute(
        'create table %s (guid integer not null primary key,%s varchar not null unique,gobbi2dfp blob)'
        % (options.gobbi2DTableName, options.molIdName))
      from rdkit.Chem.Pharm2D import Generate, Gobbi_Pharm2D

  if options.doMorganFps:
    fpConn = DbConnect(os.path.join(options.outDir, options.fpDbName))
    fpCurs = fpConn.GetCursor()
    try:
      fpCurs.execute('drop table %s' % (options.morganFpTableName))
    except Exception:
      pass
    fpCurs.execute(
      'create table %s (guid integer not null primary key,%s varchar not null unique,morganfp blob)'
      % (options.morganFpTableName, options.molIdName))

  if options.doDescriptors:
    descrConn = DbConnect(os.path.join(options.outDir, options.descrDbName))
    with open(options.descriptorCalcFilename, 'r') as inTF:
      buf = inTF.read().replace('\r\n', '\n').encode('utf-8')
      inTF.close()
    calc = pickle.load(io.BytesIO(buf))
    nms = [x for x in calc.GetDescriptorNames()]
    descrCurs = descrConn.GetCursor()
    descrs = ['guid integer not null primary key', '%s varchar not null unique' % options.molIdName]
    descrs.extend(['%s float' % x for x in nms])
    try:
      descrCurs.execute('drop table %s' % (options.descrTableName))
    except Exception:
      pass
    descrCurs.execute('create table %s (%s)' % (options.descrTableName, ','.join(descrs)))
    descrQuery = ','.join([DbModule.placeHolder] * len(descrs))
  pairRows = []
  fpRows = []
  layeredRows = []
  descrRows = []
  pharm2DRows = []
  gobbi2DRows = []
  morganRows = []

  if not options.silent:
    logger.info('Generating fingerprints and descriptors:')
  molConn = DbConnect(os.path.join(options.outDir, options.molDbName))
  molCurs = molConn.GetCursor()
  if not options.skipSmiles:
    molCurs.execute('select guid,%s,smiles,molpkl from %s' % (options.molIdName, options.regName))
  else:
    molCurs.execute('select guid,%s,molpkl from %s' % (options.molIdName, options.regName))
  i = 0
  while 1:
    try:
      tpl = molCurs.fetchone()
      molGuid = tpl[0]
      molId = tpl[1]
      pkl = tpl[-1]
      i += 1
    except Exception:
      break
    if isinstance(pkl, (bytes, str)):
      mol = Chem.Mol(pkl)
    else:
      mol = Chem.Mol(str(pkl))
    if not mol:
      continue

    if options.doPairs:
      pairs = FingerprintUtils.BuildAtomPairFP(mol)
      torsions = FingerprintUtils.BuildTorsionsFP(mol)
      pkl1 = DbModule.binaryHolder(pairs.ToBinary())
      pkl2 = DbModule.binaryHolder(torsions.ToBinary())
      row = (molGuid, molId, pkl1, pkl2)
      pairRows.append(row)
    if options.doFingerprints:
      fp2 = FingerprintUtils.BuildRDKitFP(mol)
      pkl = DbModule.binaryHolder(fp2.ToBinary())
      row = (molGuid, molId, pkl)
      fpRows.append(row)
    if options.doLayered:
      words = LayeredOptions.GetWords(mol)
      row = [molGuid, molId] + words
      layeredRows.append(row)
    if options.doDescriptors:
      descrs = calc.CalcDescriptors(mol)
      row = [molGuid, molId]
      row.extend(descrs)
      descrRows.append(row)
    if options.doPharm2D:
      FingerprintUtils.sigFactory = sigFactory
      fp = FingerprintUtils.BuildPharm2DFP(mol)
      pkl = DbModule.binaryHolder(fp.ToBinary())
      row = (molGuid, molId, pkl)
      pharm2DRows.append(row)
    if options.doGobbi2D:
      FingerprintUtils.sigFactory = Gobbi_Pharm2D.factory
      fp = FingerprintUtils.BuildPharm2DFP(mol)
      pkl = DbModule.binaryHolder(fp.ToBinary())
      row = (molGuid, molId, pkl)
      gobbi2DRows.append(row)
    if options.doMorganFps:
      morgan = FingerprintUtils.BuildMorganFP(mol)
      pkl = DbModule.binaryHolder(morgan.ToBinary())
      row = (molGuid, molId, pkl)
      morganRows.append(row)

    if not i % 500:
      if len(pairRows):
        pairCurs.executemany('insert into %s values (?,?,?,?)' % options.pairTableName, pairRows)
        pairRows = []
        pairConn.Commit()
      if len(fpRows):
        fpCurs.executemany('insert into %s values (?,?,?)' % options.fpTableName, fpRows)
        fpRows = []
        fpConn.Commit()
      if len(layeredRows):
        fpCurs.executemany('insert into %s values (?,?,%s)' % (options.layeredTableName, layeredQs),
                           layeredRows)
        layeredRows = []
        fpConn.Commit()
      if len(descrRows):
        descrCurs.executemany('insert into %s values (%s)' % (options.descrTableName, descrQuery),
                              descrRows)
        descrRows = []
        descrConn.Commit()
      if len(pharm2DRows):
        fpCurs.executemany('insert into %s values (?,?,?)' % options.pharm2DTableName, pharm2DRows)
        pharm2DRows = []
        fpConn.Commit()
      if len(gobbi2DRows):
        fpCurs.executemany('insert into %s values (?,?,?)' % options.gobbi2DTableName, gobbi2DRows)
        gobbi2DRows = []
        fpConn.Commit()
      if len(morganRows):
        fpCurs.executemany('insert into %s values (?,?,?)' % options.morganFpTableName, morganRows)
        morganRows = []
        fpConn.Commit()

    if not options.silent and not i % 500:
      logger.info('  Done: %d' % (i))

  if len(pairRows):
    pairCurs.executemany('insert into %s values (?,?,?,?)' % options.pairTableName, pairRows)
    pairRows = []
    pairConn.Commit()
  if len(fpRows):
    fpCurs.executemany('insert into %s values (?,?,?)' % options.fpTableName, fpRows)
    fpRows = []
    fpConn.Commit()
  if len(layeredRows):
    fpCurs.executemany('insert into %s values (?,?,%s)' % (options.layeredTableName, layeredQs),
                       layeredRows)
    layeredRows = []
    fpConn.Commit()
  if len(descrRows):
    descrCurs.executemany('insert into %s values (%s)' % (options.descrTableName, descrQuery),
                          descrRows)
    descrRows = []
    descrConn.Commit()
  if len(pharm2DRows):
    fpCurs.executemany('insert into %s values (?,?,?)' % options.pharm2DTableName, pharm2DRows)
    pharm2DRows = []
    fpConn.Commit()
  if len(gobbi2DRows):
    fpCurs.executemany('insert into %s values (?,?,?)' % options.gobbi2DTableName, gobbi2DRows)
    gobbi2DRows = []
    fpConn.Commit()
  if len(morganRows):
    fpCurs.executemany('insert into %s values (?,?,?)' % options.morganFpTableName, morganRows)
    morganRows = []
    fpConn.Commit()

  if not options.silent:
    logger.info('Finished.')

if __name__ == '__main__':
  parser = initParser()
  options = parser.parse_args()
  if options.loadMols:
    if options.filename is None:
      parser.error('please provide a filename argument')
    dataFilename = options.filename
    try:
      dataFile = open(dataFilename, 'r')
    except IOError:
      logger.error('input file %s does not exist' % (dataFilename))
      sys.exit(0)
    dataFile = None

  if not options.outDir:
    prefix = os.path.splitext(dataFilename)[0]
    options.outDir = prefix

  if not os.path.exists(options.outDir):
    try:
      os.mkdir(options.outDir)
    except Exception:
      logger.error('could not create output directory %s' % options.outDir)
      sys.exit(1)

  if 1:
    CreateDb(options, dataFilename)
  else:
    import cProfile
    cProfile.run("CreateDb(options,dataFilename)", "create.prof")
    import pstats
    p = pstats.Stats('create.prof')
    p.strip_dirs().sort_stats('cumulative').print_stats(25)


text:
var __testing_context__;

import resolver from "fakturama/tests/helpers/resolver";

function defaultSubject(factory, options) {
    return factory.create(options);
}

export function moduleFor(fullName, description, callbacks, delegate) {
    callbacks = callbacks || { };

    var needs = [fullName].concat(callbacks.needs || []);
    var container = isolatedContainer(needs);

    callbacks.subject = callbacks.subject || defaultSubject;

    callbacks.setup    = callbacks.setup    || function() { };
    callbacks.teardown = callbacks.teardown || function() { };

    function factory() {
        return container.lookupFactory(fullName);
    }

    function subject(options) {
        return callbacks.subject(factory(), options);
    }

    __testing_context__ = {
        container: container,
        subject: subject,
        factory: factory,
        __setup_properties__: callbacks
    };

    if (delegate) {
        delegate(container, __testing_context__);
    }

    var context = __testing_context__;
    var _callbacks = {
        setup: function(){
            buildContextVariables(context);
            callbacks.setup.call(context, container);
        },
        teardown: function(){
            Ember.run(function(){
                container.destroy();
                // destroy all cached variables
            });

            Ember.$("#ember-testing").empty();
            // maybe destroy all the add-hoc objects

            callbacks.teardown(container);
        }
    };

    module(description || fullName, _callbacks);
}

// allow arbitrary named factories, like rspec let
function buildContextVariables(context) {
    var cache = { };
    var callbacks = context.__setup_properties__;
    var factory = context.factory;
    var container = context.container;

    Ember.keys(callbacks).filter(function(key){
        // ignore the default setup/teardown keys
        return key !== "setup" && key !== "teardown";
    }).forEach(function(key){
        context[key] = function(options) {
            if (cache[key]) {
                return cache[key];
            }

            var result = callbacks[key](factory(), options, container);
            cache[key] = result;
            return result;
        };
    });
}

export function test(testName, callback) {
    var context = __testing_context__; // save refence

    function wrapper() {
        var result = callback.call(context);

        function failTestOnPromiseRejection(reason) {
            ok(false, reason);
        }

        Ember.run(function(){
            stop();
            Ember.RSVP.Promise.cast(result)["catch"](failTestOnPromiseRejection)["finally"](start);
        });
    }

    QUnit.test(testName, wrapper);
}

export function moduleForModel(name, description, callbacks) {
    moduleFor("model:" + name, description, callbacks, function(container, context) {
        // custom model specific awesomeness
        container.register("store:main", DS.Store);
        container.register("adapter:application", DS.FixtureAdapter);

        context.__setup_properties__.store = function(){
            return container.lookup("store:main");
        };

        if (context.__setup_properties__.subject === defaultSubject) {
            context.__setup_properties__.subject = function(factory, options) {
                return Ember.run(function() {
                    return container.lookup("store:main").createRecord(name, options);
                });
            };
        }
    });
}

export function moduleForComponent(name, description, callbacks) {
    moduleFor("component:" + name, description, callbacks, function(container, context) {
        var templateName = "template:components/" + name;

        var template = resolver.resolve(templateName);

        if (template) {
            container.register(templateName, template);
            container.injection("component:" + name, "template", templateName);
        }

        context.__setup_properties__.$ = function(selector) {
            var view = Ember.run(function(){
                return context.subject().appendTo(Ember.$("#ember-testing")[0]);
            });

            return view.$();
        };
    });
}

redpajama_set_name: RedPajamaGithub


text:
module Quality
  module Tools
    # Adds 'rubocop' tool support to quality gem
    module Brakeman
      private

      def quality_brakeman
        ratchet_quality_cmd('brakeman',
                            args: '-q --summary -f csv 2>/dev/null',
                            gives_error_code_on_no_relevant_code: true) do |line|
          if line =~ /Security Warnings,([0-9]*) \([0-9]*\)$/
            $1.to_i
          else
            0
          end
        end
      end
    end
  end
end


text:
'use strict';

/**
 * @ngdoc function
 * @name nodeAngularAppApp.controller:LogoutCtrl
 * @description
 * # LogoutCtrl
 * Controller of the nodeAngularAppApp
 */
angular.module('nodeAngularAppApp')
  .controller('LogoutCtrl', function (authToken,$state) {
    authToken.removeToken();
    $state.go('main');
  });


text:
<!DOCTYPE html>

		<title>PIE Jobs | Pattern Lab</title>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<link rel="stylesheet" href="../../css/style.css?1452369477" media="all" />

		<meta http-equiv="cache-control" content="max-age=0" />
		<meta http-equiv="cache-control" content="no-cache" />
		<meta http-equiv="expires" content="0" />
		<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
		<meta http-equiv="pragma" content="no-cache" />

		<link rel="stylesheet" href="../../styleguide/css/styleguide.css?1452369477" media="all">
		<link rel="stylesheet" href="../../styleguide/css/styleguide-specific.css?1452369477" media="all" />

			Alert name
			Date created
			Keywords
			Location
			Frequency
			Status

Add alert

This is a long title of an alert

<button data-remodal-target="modal-stats" class="text-btn">Show results</button>

Email

Edit

Disable

Delete

July 13, 2015

'design' 'marketing' 'management'

London

Weekly

Enabled

This is a test

<button data-remodal-target="modal-stats" class="text-btn">Show results</button>

Email

Edit

Disable

Delete

July 13, 2015

'design'

London

Weekly

Enabled


text:
from django.contrib.syndication.views import Feed
from sgrstats.polls.models import Poll

class LatestPollsFeed(Feed):
    title = 'SGRstats.com polls'
    link = '/polls/'
    description = 'Latest polls from SGRstats.com - your primary source for Stargate Resistance related news, articles and player statistics'

    def items(self):
        return Poll.objects.all().order_by('-date_published')[:10]

    def item_title(self, item):
        return item.question

    def item_description(self, item):
        return item.description

    def item_author_name(self, item):
        return item.author.username

    def item_pubdate(self, item):
        return item.date_published


text:
<TS language="it" version="2.0">
<context>
    <name>AboutDialog</name>
    </context>
<context>
    <name>AddEditAtomNode</name>
    </context>
<context>
    <name>AddressBookPage</name>
    <message>
        <source>Double-click to edit address or label</source>
        <translation>Fai doppio click per modificare o cancellare l'etichetta</translation>
    </message>
    <message>
        <source>Create a new address</source>
        <translation>Crea un nuovo indirizzo</translation>
    </message>
    <message>
        <source>Copy the currently selected address to the system clipboard</source>
        <translation>Copia l'indirizzo attualmente selezionato nella clipboard</translation>
    </message>
    <message>
        <source>&Copy Address</source>
        <translation>&Copia l'indirizzo</translation>
    </message>
    <message>
        <source>Delete the currently selected address from the list</source>
        <translation>Cancella l'indirizzo attualmente selezionato dalla lista</translation>
    </message>
    <message>
        <source>&Delete</source>
        <translation>&Cancella</translation>
    </message>
    <message>
        <source>Copy &Label</source>
        <translation>Copia &l'etichetta</translation>
    </message>
    <message>
        <source>&Edit</source>
        <translation>&Modifica</translation>
    </message>
    <message>
        <source>Comma separated file (*.csv)</source>
        <translation>Testo CSV (*.csv)</translation>
    </message>
    </context>
<context>
    <name>AddressTableModel</name>
    <message>
        <source>Label</source>
        <translation>Etichetta</translation>
    </message>
    <message>
        <source>Address</source>
        <translation>Indirizzo</translation>
    </message>
    <message>
        <source>(no label)</source>
        <translation>(nessuna etichetta)</translation>
    </message>
</context>
<context>
    <name>AskPassphraseDialog</name>
    <message>
        <source>Passphrase Dialog</source>
        <translation>Finestra passphrase</translation>
    </message>
    <message>
        <source>Enter passphrase</source>
        <translation>Inserisci la passphrase</translation>
    </message>
    <message>
        <source>New passphrase</source>
        <translation>Nuova passphrase</translation>
    </message>
    <message>
        <source>Repeat new passphrase</source>
        <translation>Ripeti la passphrase</translation>
    </message>
    <message>
        <source>Encrypt wallet</source>
        <translation>Cifra il portamonete</translation>
    </message>
    <message>
        <source>This operation needs your wallet passphrase to unlock the wallet.</source>
        <translation>Quest'operazione necessita della passphrase per sbloccare il portamonete.</translation>
    </message>
    <message>
        <source>Unlock wallet</source>
        <translation>Sblocca il portamonete</translation>
    </message>
    <message>
        <source>This operation needs your wallet passphrase to decrypt the wallet.</source>
        <translation>Quest'operazione necessita della passphrase per decifrare il portamonete,</translation>
    </message>
    <message>
        <source>Decrypt wallet</source>
        <translation>Decifra il portamonete</translation>
    </message>
    <message>
        <source>Change passphrase</source>
        <translation>Cambia la passphrase</translation>
    </message>
    <message>
        <source>Enter the old and new passphrase to the wallet.</source>
        <translation>Inserisci la vecchia e la nuova passphrase per il portamonete.</translation>
    </message>
    <message>
        <source>Confirm wallet encryption</source>
        <translation>Conferma la cifratura del portamonete</translation>
    </message>
    <message>
        <source>Are you sure you wish to encrypt your wallet?</source>
        <translation>Si è sicuri di voler cifrare il portamonete?</translation>
    </message>
    <message>
        <source>IMPORTANT: Any previous backups you have made of your wallet file should be replaced with the newly generated, encrypted wallet file. For security reasons, previous backups of the unencrypted wallet file will become useless as soon as you start using the new, encrypted wallet.</source>
        <translation>IMPORTANTE: qualsiasi backup del portafoglio effettuato precedentemente dovrebbe essere sostituito con il file del portafoglio criptato appena generato. Per ragioni di sicurezza, i backup precedenti del file del portafoglio non criptato diventeranno inservibili non appena si inizi ad usare il nuovo portafoglio criptato.</translation>
    </message>
    <message>
        <source>Warning: The Caps Lock key is on!</source>
        <translation>Attenzione: tasto Blocco maiuscole attivo.</translation>
    </message>
    <message>
        <source>Wallet encrypted</source>
        <translation>Portamonete cifrato</translation>
    </message>
    <message>
        <source>Wallet encryption failed</source>
        <translation>Cifratura del portamonete fallita</translation>
    </message>
    <message>
        <source>Wallet encryption failed due to an internal error. Your wallet was not encrypted.</source>
        <translation>Cifratura del portamonete fallita a causa di un errore interno. Il portamonete non è stato cifrato.</translation>
    </message>
    <message>
        <source>The supplied passphrases do not match.</source>
        <translation>Le passphrase inserite non corrispondono.</translation>
    </message>
    <message>
        <source>Wallet unlock failed</source>
        <translation>Sblocco del portamonete fallito</translation>
    </message>
    <message>
        <source>The passphrase entered for the wallet decryption was incorrect.</source>
        <translation>La passphrase inserita per la decifrazione del portamonete è errata.</translation>
    </message>
    <message>
        <source>Wallet decryption failed</source>
        <translation>Decifrazione del portamonete fallita</translation>
    </message>
    <message>
        <source>Wallet passphrase was successfully changed.</source>
        <translation>Passphrase del portamonete modificata con successo.</translation>
    </message>
</context>
<context>
    <name>AtomNodeConfigDialog</name>
    </context>
<context>
    <name>BanTableModel</name>
    </context>
<context>
    <name>BitcoinGUI</name>
    <message>
        <source>Sign &message...</source>
        <translation>Firma il &messaggio...</translation>
    </message>
    <message>
        <source>Show general overview of wallet</source>
        <translation>Mostra lo stato generale del portamonete</translation>
    </message>
    <message>
        <source>&Transactions</source>
        <translation>&Transazioni</translation>
    </message>
    <message>
        <source>Browse transaction history</source>
        <translation>Cerca nelle transazioni</translation>
    </message>
    <message>
        <source>E&xit</source>
        <translation>&Esci</translation>
    </message>
    <message>
        <source>Quit application</source>
        <translation>Chiudi applicazione</translation>
    </message>
    <message>
        <source>About &Qt</source>
        <translation>Informazioni su &Qt</translation>
    </message>
    <message>
        <source>Show information about Qt</source>
        <translation>Mostra informazioni su Qt</translation>
    </message>
    <message>
        <source>&Options...</source>
        <translation>&Opzioni...</translation>
    </message>
    <message>
        <source>&Encrypt Wallet...</source>
        <translation>&Cifra il portamonete...</translation>
    </message>
    <message>
        <source>&Backup Wallet...</source>
        <translation>&Backup Portamonete...</translation>
    </message>
    <message>
        <source>&Change Passphrase...</source>
        <translation>&Cambia la passphrase...</translation>
    </message>
    <message>
        <source>Backup wallet to another location</source>
        <translation>Backup portamonete in un'altra locazione</translation>
    </message>
    <message>
        <source>Change the passphrase used for wallet encryption</source>
        <translation>Cambia la passphrase per la cifratura del portamonete</translation>
    </message>
    <message>
        <source>&Debug window</source>
        <translation>Finestra &Debug</translation>
    </message>
    <message>
        <source>Open debugging and diagnostic console</source>
        <translation>Apri la console di degugging e diagnostica</translation>
    </message>
    <message>
        <source>&Verify message...</source>
        <translation>&Verifica messaggio...</translation>
    </message>
    <message>
        <source>Wallet</source>
        <translation>Portamonete</translation>
    </message>
    <message>
        <source>&Show / Hide</source>
        <translation>&Mostra/Nascondi</translation>
    </message>
    <message>
        <source>&File</source>
        <translation>&File</translation>
    </message>
    <message>
        <source>&Settings</source>
        <translation>&Impostazioni</translation>
    </message>
    <message>
        <source>&Help</source>
        <translation>&Aiuto</translation>
    </message>
    <message>
        <source>Tabs toolbar</source>
        <translation>Barra degli strumenti "Tabs"</translation>
    </message>
    <message>
        <source>[testnet]</source>
        <translation>[testnet]</translation>
    </message>
    <message>
        <source>Up to date</source>
        <translation>Aggiornato</translation>
    </message>
    <message>
        <source>Catching up...</source>
        <translation>In aggiornamento...</translation>
    </message>
    <message>
        <source>Sent transaction</source>
        <translation>Transazione inviata</translation>
    </message>
    <message>
        <source>Incoming transaction</source>
        <translation>Transazione ricevuta</translation>
    </message>
    <message>
        <source>Date: %1
Amount: %2
Type: %3
Address: %4
</source>
        <translation>Data: %1
Quantità: %2
Tipo: %3
Indirizzo: %4

</translation>
    </message>
    <message>
        <source>Wallet is encrypted and currently unlocked</source>
        <translation>Il portamonete è cifrato e attualmente sbloccato</translation>
    </message>
    <message>
        <source>Wallet is encrypted and currently locked</source>
        <translation>Il portamonete è cifrato e attualmente bloccato</translation>
    </message>
    <message numerus="yes">
        <source>%n hour(s)</source>
        <translation><numerusform>%n ora</numerusform><numerusform>%n ore</numerusform></translation>
    </message>
    <message numerus="yes">
        <source>%n day(s)</source>
        <translation><numerusform>%n giorno</numerusform><numerusform>%n giorni</numerusform></translation>
    </message>
    </context>
<context>
    <name>ClientModel</name>
    <message>
        <source>Network Alert</source>
        <translation>Avviso di rete</translation>
    </message>
</context>
<context>
    <name>CoinControlDialog</name>
    <message>
        <source>Quantity:</source>
        <translation>Quantità:</translation>
    </message>
    <message>
        <source>Bytes:</source>
        <translation>Byte:</translation>
    </message>
    <message>
        <source>Amount:</source>
        <translation>Importo:</translation>
    </message>
    <message>
        <source>Priority:</source>
        <translation>Priorità:</translation>
    </message>
    <message>
        <source>Fee:</source>
        <translation>Commissione:</translation>
    </message>
    <message>
        <source>Low Output:</source>
        <translation>Low Output:</translation>
    </message>
    <message>
        <source>no</source>
        <translation>no</translation>
    </message>
    <message>
        <source>After Fee:</source>
        <translation>Dopo Commissione:</translation>
    </message>
    <message>
        <source>Change:</source>
        <translation>Resto:</translation>
    </message>
    <message>
        <source>(un)select all</source>
        <translation>(de)seleziona tutto</translation>
    </message>
    <message>
        <source>Tree mode</source>
        <translation>Modalità Albero</translation>
    </message>
    <message>
        <source>List mode</source>
        <translation>Modalità Lista</translation>
    </message>
    <message>
        <source>Amount</source>
        <translation>Importo</translation>
    </message>
    <message>
        <source>Address</source>
        <translation>Indirizzo</translation>
    </message>
    <message>
        <source>Date</source>
        <translation>Data</translation>
    </message>
    <message>
        <source>Confirmations</source>
        <translation>Conferme:</translation>
    </message>
    <message>
        <source>Confirmed</source>
        <translation>Confermato</translation>
    </message>
    <message>
        <source>Priority</source>
        <translation>Priorità</translation>
    </message>
    <message>
        <source>Copy address</source>
        <translation>Copia l'indirizzo</translation>
    </message>
    <message>
        <source>Copy label</source>
        <translation>Copia l'etichetta</translation>
    </message>
    <message>
        <source>Copy amount</source>
        <translation>Copia l'importo</translation>
    </message>
    <message>
        <source>Copy transaction ID</source>
        <translation>Copia l'ID transazione</translation>
    </message>
    <message>
        <source>Copy quantity</source>
        <translation>Copia quantità</translation>
    </message>
    <message>
        <source>Copy fee</source>
        <translation>Copia commissione</translation>
    </message>
    <message>
        <source>Copy after fee</source>
        <translation>Copia dopo commissione</translation>
    </message>
    <message>
        <source>Copy bytes</source>
        <translation>Copia byte</translation>
    </message>
    <message>
        <source>Copy priority</source>
        <translation>Copia priorità</translation>
    </message>
    <message>
        <source>Copy low output</source>
        <translation>Copia low output</translation>
    </message>
    <message>
        <source>Copy change</source>
        <translation>Copia resto</translation>
    </message>
    <message>
        <source>highest</source>
        <translation>massima</translation>
    </message>
    <message>
        <source>high</source>
        <translation>alta</translation>
    </message>
    <message>
        <source>medium-high</source>
        <translation>medio-alta</translation>
    </message>
    <message>
        <source>medium</source>
        <translation>media</translation>
    </message>
    <message>
        <source>low-medium</source>
        <translation>medio-bassa</translation>
    </message>
    <message>
        <source>low</source>
        <translation>bassa</translation>
    </message>
    <message>
        <source>lowest</source>
        <translation>infima</translation>
    </message>
    <message>
        <source>yes</source>
        <translation>si</translation>
    </message>
    <message>
        <source>(no label)</source>
        <translation>(nessuna etichetta)</translation>
    </message>
    <message>
        <source>change from %1 (%2)</source>
        <translation>resto da %1 (%2)</translation>
    </message>
    <message>
        <source>(change)</source>
        <translation>(resto)</translation>
    </message>
    </context>
<context>
    <name>DarksendConfig</name>
    </context>
<context>
    <name>EditAddressDialog</name>
    <message>
        <source>Edit Address</source>
        <translation>Modifica l'indirizzo</translation>
    </message>
    <message>
        <source>&Label</source>
        <translation>&Etichetta</translation>
    </message>
    <message>
        <source>&Address</source>
        <translation>&Indirizzo</translation>
    </message>
    <message>
        <source>New receiving address</source>
        <translation>Nuovo indirizzo di ricezione</translation>
    </message>
    <message>
        <source>New sending address</source>
        <translation>Nuovo indirizzo d'invio</translation>
    </message>
    <message>
        <source>Edit receiving address</source>
        <translation>Modifica indirizzo di ricezione</translation>
    </message>
    <message>
        <source>Edit sending address</source>
        <translation>Modifica indirizzo d'invio</translation>
    </message>
    <message>
        <source>The entered address "%1" is already in the address book.</source>
        <translation>L'indirizzo inserito "%1" è già in rubrica.</translation>
    </message>
    <message>
        <source>Could not unlock wallet.</source>
        <translation>Impossibile sbloccare il portamonete.</translation>
    </message>
    <message>
        <source>New key generation failed.</source>
        <translation>Generazione della nuova chiave non riuscita.</translation>
    </message>
</context>
<context>
    <name>GUIUtil::HelpMessageBox</name>
    </context>
<context>
    <name>MasternodeManager</name>
    </context>
<context>
    <name>MultisigAddressEntry</name>
    </context>
<context>
    <name>MultisigDialog</name>
    </context>
<context>
    <name>MultisigInputEntry</name>
    </context>
<context>
    <name>OptionsDialog</name>
    <message>
        <source>Options</source>
        <translation>Opzioni</translation>
    </message>
    <message>
        <source>&Main</source>
        <translation>&Principale</translation>
    </message>
    <message>
        <source>Pay transaction &fee</source>
        <translation>Paga la &commissione</translation>
    </message>
    <message>
        <source>&Network</source>
        <translation>Rete</translation>
    </message>
    <message>
        <source>Map port using &UPnP</source>
        <translation>Mappa le porte tramite l'&UPnP</translation>
    </message>
    <message>
        <source>Proxy &IP:</source>
        <translation>&IP del proxy:</translation>
    </message>
    <message>
        <source>&Port:</source>
        <translation>&Porta:</translation>
    </message>
    <message>
        <source>Port of the proxy (e.g. 9050)</source>
        <translation>Porta del proxy (es. 9050)</translation>
    </message>
    <message>
        <source>&Window</source>
        <translation>&Finestra</translation>
    </message>
    <message>
        <source>Show only a tray icon after minimizing the window.</source>
        <translation>Mostra solo un'icona nel tray quando si minimizza la finestra</translation>
    </message>
    <message>
        <source>&Minimize to the tray instead of the taskbar</source>
        <translation>&Minimizza sul tray invece che sulla barra delle applicazioni</translation>
    </message>
    <message>
        <source>Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu.</source>
        <translation>Riduci ad icona, invece di uscire dall'applicazione quando la finestra viene chiusa. Quando questa opzione è attivata, l'applicazione verrà chiusa solo dopo aver selezionato Esci nel menu.</translation>
    </message>
    <message>
        <source>M&inimize on close</source>
        <translation>M&inimizza alla chiusura</translation>
    </message>
    <message>
        <source>&Display</source>
        <translation>&Mostra</translation>
    </message>
    <message>
        <source>User Interface &language:</source>
        <translation>&Lingua Interfaccia Utente:</translation>
    </message>
    <message>
        <source>&Unit to show amounts in:</source>
        <translation>&Unità di misura degli importi in:</translation>
    </message>
    <message>
        <source>Choose the default subdivision unit to show in the interface and when sending coins.</source>
        <translation>Scegli l'unità di suddivisione predefinita per l'interfaccia e per l'invio di monete</translation>
    </message>
    <message>
        <source>Whether to show coin control features or not.</source>
        <translation>Mostrare/non mostrare le funzionalita' di controllo della moneta.</translation>
    </message>
    <message>
        <source>&OK</source>
        <translation>&OK</translation>
    </message>
    <message>
        <source>&Cancel</source>
        <translation>&Cancella</translation>
    </message>
    <message>
        <source>default</source>
        <translation>predefinito</translation>
    </message>
    <message>
        <source>The supplied proxy address is invalid.</source>
        <translation>L'indirizzo proxy che hai fornito è invalido.</translation>
    </message>
</context>
<context>
    <name>OverviewPage</name>
    <message>
        <source>Form</source>
        <translation>Modulo</translation>
    </message>
    <message>
        <source>Your current spendable balance</source>
        <translation>Saldo spendibile attuale</translation>
    </message>
    <message>
        <source>Immature:</source>
        <translation>Immaturo:</translation>
    </message>
    <message>
        <source>Mined balance that has not yet matured</source>
        <translation>Importo scavato che non è ancora maturato</translation>
    </message>
    <message>
        <source>Total:</source>
        <translation>Totale:</translation>
    </message>
    <message>
        <source>Your current total balance</source>
        <translation>Saldo totale attuale</translation>
    </message>
    <message>
        <source>out of sync</source>
        <translation>fuori sincrono</translation>
    </message>
    </context>
<context>
    <name>PaymentServer</name>
    </context>
<context>
    <name>PeerTableModel</name>
    </context>
<context>
    <name>QObject</name>
    </context>
<context>
    <name>QRCodeDialog</name>
    </context>
<context>
    <name>RPCConsole</name>
    <message>
        <source>Client name</source>
        <translation>Nome del client</translation>
    </message>
    <message>
        <source>N/A</source>
        <translation>N/D</translation>
    </message>
    <message>
        <source>Client version</source>
        <translation>Versione client</translation>
    </message>
    <message>
        <source>&Information</source>
        <translation>&Informazione</translation>
    </message>
    <message>
        <source>Using OpenSSL version</source>
        <translation>Versione OpenSSL in uso</translation>
    </message>
    <message>
        <source>Startup time</source>
        <translation>Tempo di avvio</translation>
    </message>
    <message>
        <source>Network</source>
        <translation>Rete</translation>
    </message>
    <message>
        <source>Number of connections</source>
        <translation>Numero connessioni</translation>
    </message>
    <message>
        <source>Block chain</source>
        <translation>Block chain</translation>
    </message>
    <message>
        <source>Current number of blocks</source>
        <translation>Numero attuale di blocchi</translation>
    </message>
    <message>
        <source>Last block time</source>
        <translation>Ora dell blocco piu recente</translation>
    </message>
    <message>
        <source>&Open</source>
        <translation>&Apri</translation>
    </message>
    <message>
        <source>&Console</source>
        <translation>&Console</translation>
    </message>
    <message>
        <source>Build date</source>
        <translation>Data di creazione</translation>
    </message>
    <message>
        <source>Debug log file</source>
        <translation>File log del Debug</translation>
    </message>
    <message>
        <source>Clear console</source>
        <translation>Svuota console</translation>
    </message>
    <message>
        <source>Use up and down arrows to navigate history, and Ctrl-L to clear screen.</source>
        <translation>Usa le frecce direzionali per navigare la cronologia, and Ctrl-L per cancellarla.</translation>
    </message>
    </context>
<context>
    <name>SendCoinsDialog</name>
    <message>
        <source>Send Coins</source>
        <translation>Spedisci Bitcoin</translation>
    </message>
    <message>
        <source>Coin Control Features</source>
        <translation>Funzionalità di Coin Control</translation>
    </message>
    <message>
        <source>Inputs...</source>
        <translation>Input...</translation>
    </message>
    <message>
        <source>automatically selected</source>
        <translation>selezionato automaticamente</translation>
    </message>
    <message>
        <source>Insufficient funds!</source>
        <translation>Fondi insufficienti!</translation>
    </message>
    <message>
        <source>Quantity:</source>
        <translation>Quantità:</translation>
    </message>
    <message>
        <source>Bytes:</source>
        <translation>Byte:</translation>
    </message>
    <message>
        <source>Amount:</source>
        <translation>Importo:</translation>
    </message>
    <message>
        <source>Priority:</source>
        <translation>Priorità:</translation>
    </message>
    <message>
        <source>Fee:</source>
        <translation>Commissione:</translation>
    </message>
    <message>
        <source>Low Output:</source>
        <translation>Low Output:</translation>
    </message>
    <message>
        <source>After Fee:</source>
        <translation>Dopo Commissione:</translation>
    </message>
    <message>
        <source>Send to multiple recipients at once</source>
        <translation>Spedisci a diversi beneficiari in una volta sola</translation>
    </message>
    <message>
        <source>Add &Recipient</source>
        <translation>&Aggiungi beneficiario</translation>
    </message>
    <message>
        <source>Clear &All</source>
        <translation>Cancella &tutto</translation>
    </message>
    <message>
        <source>Balance:</source>
        <translation>Saldo:</translation>
    </message>
    <message>
        <source>Confirm the send action</source>
        <translation>Conferma la spedizione</translation>
    </message>
    <message>
        <source>S&end</source>
        <translation>&Spedisci</translation>
    </message>
    <message>
        <source>Copy quantity</source>
        <translation>Copia quantità</translation>
    </message>
    <message>
        <source>Copy amount</source>
        <translation>Copia l'importo</translation>
    </message>
    <message>
        <source>Copy fee</source>
        <translation>Copia commissione</translation>
    </message>
    <message>
        <source>Copy after fee</source>
        <translation>Copia dopo commissione</translation>
    </message>
    <message>
        <source>Copy bytes</source>
        <translation>Copia byte</translation>
    </message>
    <message>
        <source>Copy priority</source>
        <translation>Copia priorità</translation>
    </message>
    <message>
        <source>Copy low output</source>
        <translation>Copia low output</translation>
    </message>
    <message>
        <source>Copy change</source>
        <translation>Copia resto</translation>
    </message>
    <message>
        <source>Confirm send coins</source>
        <translation>Conferma la spedizione di bitcoin</translation>
    </message>
    <message>
        <source>The recipient address is not valid, please recheck.</source>
        <translation>L'indirizzo del beneficiario non è valido, per cortesia controlla.</translation>
    </message>
    <message>
        <source>The amount to pay must be larger than 0.</source>
        <translation>L'importo da pagare dev'essere maggiore di 0.</translation>
    </message>
    <message>
        <source>The amount exceeds your balance.</source>
        <translation>L'importo è superiore al saldo attuale</translation>
    </message>
    <message>
        <source>The total exceeds your balance when the %1 transaction fee is included.</source>
        <translation>Il totale è superiore al saldo attuale includendo la commissione %1.</translation>
    </message>
    <message>
        <source>Duplicate address found, can only send to each address once per send operation.</source>
        <translation>Trovato un indirizzo doppio, si può spedire solo una volta a ciascun indirizzo in una singola operazione.</translation>
    </message>
    <message>
        <source>(no label)</source>
        <translation>(nessuna etichetta)</translation>
    </message>
</context>
<context>
    <name>SendCoinsEntry</name>
    <message>
        <source>A&mount:</source>
        <translation>&Importo:</translation>
    </message>
    <message>
        <source>Pay &To:</source>
        <translation>Paga &a:</translation>
    </message>
    <message>
        <source>Enter a label for this address to add it to your address book</source>
        <translation>Inserisci un'etichetta per questo indirizzo, per aggiungerlo nella rubrica</translation>
    </message>
    <message>
        <source>&Label:</source>
        <translation>&Etichetta</translation>
    </message>
    <message>
        <source>Alt+A</source>
        <translation>Alt+A</translation>
    </message>
    <message>
        <source>Paste address from clipboard</source>
        <translation>Incollare l'indirizzo dagli appunti</translation>
    </message>
    <message>
        <source>Alt+P</source>
        <translation>Alt+P</translation>
    </message>
    </context>
<context>
    <name>SignVerifyMessageDialog</name>
    <message>
        <source>Signatures - Sign / Verify a Message</source>
        <translation>Firme - Firma / Verifica un messaggio</translation>
    </message>
    <message>
        <source>&Sign Message</source>
        <translation>&Firma il messaggio</translation>
    </message>
    <message>
        <source>You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to.</source>
        <translation>Puoi firmare messeggi con i tuoi indirizzi per dimostrare che sono tuoi. Fai attenzione a non firmare niente di vago, visto che gli attacchi di phishing potrebbero cercare di spingerti a mettere la tua firma su di loro. Firma solo dichiarazioni completamente dettagliate con cui sei d'accordo.</translation>
    </message>
    <message>
        <source>Alt+A</source>
        <translation>Alt+A</translation>
    </message>
    <message>
        <source>Paste address from clipboard</source>
        <translation>Incollare l'indirizzo dagli appunti</translation>
    </message>
    <message>
        <source>Alt+P</source>
        <translation>Alt+P</translation>
    </message>
    <message>
        <source>Enter the message you want to sign here</source>
        <translation>Inserisci qui il messaggio che vuoi firmare</translation>
    </message>
    <message>
        <source>Copy the current signature to the system clipboard</source>
        <translation>Copia la firma corrente nella clipboard</translation>
    </message>
    <message>
        <source>Reset all sign message fields</source>
        <translation>Reimposta tutti i campi della firma</translation>
    </message>
    <message>
        <source>Clear &All</source>
        <translation>Cancella &tutto</translation>
    </message>
    <message>
        <source>&Verify Message</source>
        <translation>&Verifica Messaggio</translation>
    </message>
    <message>
        <source>Enter the signing address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack.</source>
        <translation>Inserisci l'indirizzo per la firma, il messaggio (verifica di copiare esattamente anche i ritorni a capo, gli spazi, le tabulazioni, etc) e la firma qui sotto, per verificare il messaggio. Verifica che il contenuto della firma non sia più grande di quello del messaggio per evitare attacchi di tipo man-in-the-middle.</translation>
    </message>
    <message>
        <source>Reset all verify message fields</source>
        <translation>Reimposta tutti i campi della verifica messaggio</translation>
    </message>
    <message>
        <source>Click "Sign Message" to generate signature</source>
        <translation>Clicca "Firma il messaggio" per ottenere la firma</translation>
    </message>
    <message>
        <source>The entered address is invalid.</source>
        <translation>L'indirizzo inserito non è valido.</translation>
    </message>
    <message>
        <source>Please check the address and try again.</source>
        <translation>Per favore controlla l'indirizzo e prova ancora</translation>
    </message>
    <message>
        <source>The entered address does not refer to a key.</source>
        <translation>L'indirizzo bitcoin inserito non è associato a nessuna chiave.</translation>
    </message>
    <message>
        <source>Wallet unlock was cancelled.</source>
        <translation>Sblocco del portafoglio annullato.</translation>
    </message>
    <message>
        <source>Private key for the entered address is not available.</source>
        <translation>La chiave privata per l'indirizzo inserito non è disponibile.</translation>
    </message>
    <message>
        <source>Message signing failed.</source>
        <translation>Firma messaggio fallita.</translation>
    </message>
    <message>
        <source>Message signed.</source>
        <translation>Messaggio firmato.</translation>
    </message>
    <message>
        <source>The signature could not be decoded.</source>
        <translation>Non è stato possibile decodificare la firma.</translation>
    </message>
    <message>
        <source>Please check the signature and try again.</source>
        <translation>Per favore controlla la firma e prova ancora.</translation>
    </message>
    <message>
        <source>The signature did not match the message digest.</source>
        <translation>La firma non corrisponde al sunto del messaggio.</translation>
    </message>
    <message>
        <source>Message verification failed.</source>
        <translation>Verifica messaggio fallita.</translation>
    </message>
    <message>
        <source>Message verified.</source>
        <translation>Messaggio verificato.</translation>
    </message>
</context>
<context>
    <name>TrafficGraphWidget</name>
    </context>
<context>
    <name>TransactionDesc</name>
    <message>
        <source>Open until %1</source>
        <translation>Aperto fino a %1</translation>
    </message>
    <message>
        <source>conflicted</source>
        <translation>in conflitto</translation>
    </message>
    <message>
        <source>%1/offline</source>
        <translation>%1/offline</translation>
    </message>
    <message>
        <source>%1/unconfirmed</source>
        <translation>%1/non confermato</translation>
    </message>
    <message>
        <source>%1 confirmations</source>
        <translation>%1 conferme</translation>
    </message>
    <message>
        <source>Status</source>
        <translation>Stato</translation>
    </message>
    <message numerus="yes">
        <source>, broadcast through %n node(s)</source>
        <translation><numerusform>, trasmesso attraverso %n nodo</numerusform><numerusform>, trasmesso attraverso %n nodi</numerusform></translation>
    </message>
    <message>
        <source>Date</source>
        <translation>Data</translation>
    </message>
    <message>
        <source>Source</source>
        <translation>Sorgente</translation>
    </message>
    <message>
        <source>Generated</source>
        <translation>Generato</translation>
    </message>
    <message>
        <source>From</source>
        <translation>Da</translation>
    </message>
    <message>
        <source>To</source>
        <translation>A</translation>
    </message>
    <message>
        <source>own address</source>
        <translation>proprio indirizzo</translation>
    </message>
    <message>
        <source>label</source>
        <translation>etichetta</translation>
    </message>
    <message>
        <source>Credit</source>
        <translation>Credito</translation>
    </message>
    <message numerus="yes">
        <source>matures in %n more block(s)</source>
        <translation><numerusform>matura in %n ulteriore blocco</numerusform><numerusform>matura in altri %n blocchi</numerusform></translation>
    </message>
    <message>
        <source>not accepted</source>
        <translation>non accettate</translation>
    </message>
    <message>
        <source>Debit</source>
        <translation>Debito</translation>
    </message>
    <message>
        <source>Transaction fee</source>
        <translation>Commissione transazione</translation>
    </message>
    <message>
        <source>Net amount</source>
        <translation>Importo netto</translation>
    </message>
    <message>
        <source>Message</source>
        <translation>Messaggio</translation>
    </message>
    <message>
        <source>Comment</source>
        <translation>Commento</translation>
    </message>
    <message>
        <source>Transaction ID</source>
        <translation>ID della transazione</translation>
    </message>
    <message>
        <source>Debug information</source>
        <translation>Informazione di debug</translation>
    </message>
    <message>
        <source>Transaction</source>
        <translation>Transazione</translation>
    </message>
    <message>
        <source>Inputs</source>
        <translation>Input</translation>
    </message>
    <message>
        <source>Amount</source>
        <translation>Importo</translation>
    </message>
    <message>
        <source>true</source>
        <translation>vero</translation>
    </message>
    <message>
        <source>false</source>
        <translation>falso</translation>
    </message>
    <message>
        <source>, has not been successfully broadcast yet</source>
        <translation>, non è stato ancora trasmesso con successo</translation>
    </message>
    <message>
        <source>unknown</source>
        <translation>sconosciuto</translation>
    </message>
</context>
<context>
    <name>TransactionDescDialog</name>
    <message>
        <source>Transaction details</source>
        <translation>Dettagli sulla transazione</translation>
    </message>
    <message>
        <source>This pane shows a detailed description of the transaction</source>
        <translation>Questo pannello mostra una descrizione dettagliata della transazione</translation>
    </message>
</context>
<context>
    <name>TransactionTableModel</name>
    <message>
        <source>Date</source>
        <translation>Data</translation>
    </message>
    <message>
        <source>Type</source>
        <translation>Tipo</translation>
    </message>
    <message>
        <source>Address</source>
        <translation>Indirizzo</translation>
    </message>
    <message>
        <source>Open until %1</source>
        <translation>Aperto fino a %1</translation>
    </message>
    <message>
        <source>Confirmed (%1 confirmations)</source>
        <translation>Confermato (%1 conferme)</translation>
    </message>
    <message numerus="yes">
        <source>Open for %n more block(s)</source>
        <translation><numerusform>Aperto per %n altro blocco</numerusform><numerusform>Aperto per altri %n blocchi</numerusform></translation>
    </message>
    <message>
        <source>Offline</source>
        <translation>Offline</translation>
    </message>
    <message>
        <source>Unconfirmed</source>
        <translation>Non confermato:</translation>
    </message>
    <message>
        <source>Confirming (%1 of %2 recommended confirmations)</source>
        <translation>In conferma (%1 di %2 conferme raccomandate)</translation>
    </message>
    <message>
        <source>Conflicted</source>
        <translation>In conflitto</translation>
    </message>
    <message>
        <source>Immature (%1 confirmations, will be available after %2)</source>
        <translation>Immaturo (%1 conferme, sarà disponibile fra %2)</translation>
    </message>
    <message>
        <source>This block was not received by any other nodes and will probably not be accepted!</source>
        <translation>Questo blocco non è stato ricevuto da altri nodi e probabilmente non sarà accettato!</translation>
    </message>
    <message>
        <source>Generated but not accepted</source>
        <translation>Generati, ma non accettati</translation>
    </message>
    <message>
        <source>Received with</source>
        <translation>Ricevuto tramite</translation>
    </message>
    <message>
        <source>Received from</source>
        <translation>Ricevuto da</translation>
    </message>
    <message>
        <source>Sent to</source>
        <translation>Spedito a</translation>
    </message>
    <message>
        <source>Payment to yourself</source>
        <translation>Pagamento a te stesso</translation>
    </message>
    <message>
        <source>Mined</source>
        <translation>Ottenuto dal mining</translation>
    </message>
    <message>
        <source>(n/a)</source>
        <translation>(N / a)</translation>
    </message>
    <message>
        <source>Transaction status. Hover over this field to show number of confirmations.</source>
        <translation>Stato della transazione. Passare con il mouse su questo campo per vedere il numero di conferme.</translation>
    </message>
    <message>
        <source>Date and time that the transaction was received.</source>
        <translation>Data e ora in cui la transazione è stata ricevuta.</translation>
    </message>
    <message>
        <source>Type of transaction.</source>
        <translation>Tipo di transazione.</translation>
    </message>
    <message>
        <source>Destination address of transaction.</source>
        <translation>Indirizzo di destinazione della transazione.</translation>
    </message>
    <message>
        <source>Amount removed from or added to balance.</source>
        <translation>Importo rimosso o aggiunto al saldo.</translation>
    </message>
</context>
<context>
    <name>TransactionView</name>
    <message>
        <source>All</source>
        <translation>Tutti</translation>
    </message>
    <message>
        <source>Today</source>
        <translation>Oggi</translation>
    </message>
    <message>
        <source>This week</source>
        <translation>Questa settimana</translation>
    </message>
    <message>
        <source>This month</source>
        <translation>Questo mese</translation>
    </message>
    <message>
        <source>Last month</source>
        <translation>Il mese scorso</translation>
    </message>
    <message>
        <source>This year</source>
        <translation>Quest'anno</translation>
    </message>
    <message>
        <source>Range...</source>
        <translation>Intervallo...</translation>
    </message>
    <message>
        <source>Received with</source>
        <translation>Ricevuto tramite</translation>
    </message>
    <message>
        <source>Sent to</source>
        <translation>Spedito a</translation>
    </message>
    <message>
        <source>To yourself</source>
        <translation>A te</translation>
    </message>
    <message>
        <source>Mined</source>
        <translation>Ottenuto dal mining</translation>
    </message>
    <message>
        <source>Other</source>
        <translation>Altro</translation>
    </message>
    <message>
        <source>Enter address or label to search</source>
        <translation>Inserisci un indirizzo o un'etichetta da cercare</translation>
    </message>
    <message>
        <source>Min amount</source>
        <translation>Importo minimo</translation>
    </message>
    <message>
        <source>Copy address</source>
        <translation>Copia l'indirizzo</translation>
    </message>
    <message>
        <source>Copy label</source>
        <translation>Copia l'etichetta</translation>
    </message>
    <message>
        <source>Copy amount</source>
        <translation>Copia l'importo</translation>
    </message>
    <message>
        <source>Copy transaction ID</source>
        <translation>Copia l'ID transazione</translation>
    </message>
    <message>
        <source>Edit label</source>
        <translation>Modifica l'etichetta</translation>
    </message>
    <message>
        <source>Show transaction details</source>
        <translation>Mostra i dettagli della transazione</translation>
    </message>
    <message>
        <source>Comma separated file (*.csv)</source>
        <translation>Testo CSV (*.csv)</translation>
    </message>
    <message>
        <source>Confirmed</source>
        <translation>Confermato</translation>
    </message>
    <message>
        <source>Date</source>
        <translation>Data</translation>
    </message>
    <message>
        <source>Type</source>
        <translation>Tipo</translation>
    </message>
    <message>
        <source>Label</source>
        <translation>Etichetta</translation>
    </message>
    <message>
        <source>Address</source>
        <translation>Indirizzo</translation>
    </message>
    <message>
        <source>ID</source>
        <translation>ID</translation>
    </message>
    <message>
        <source>Range:</source>
        <translation>Intervallo:</translation>
    </message>
    <message>
        <source>to</source>
        <translation>a</translation>
    </message>
</context>
<context>
    <name>WalletModel</name>
    </context>
<context>
    <name>bitcoin-core</name>
    <message>
        <source>Usage:</source>
        <translation>Utilizzo:</translation>
    </message>
    <message>
        <source>List commands</source>
        <translation>Lista comandi
</translation>
    </message>
    <message>
        <source>Get help for a command</source>
        <translation>Aiuto su un comando
</translation>
    </message>
    <message>
        <source>Options:</source>
        <translation>Opzioni:
</translation>
    </message>
    <message>
        <source>Specify wallet file (within data directory)</source>
        <translation>Specifica il file portafoglio  (nella cartella dati)</translation>
    </message>
    <message>
        <source>Specify data directory</source>
        <translation>Specifica la cartella dati
</translation>
    </message>
    <message>
        <source>Set database cache size in megabytes (default: 25)</source>
        <translation>Imposta la dimensione cache del database in megabyte (predefinita: 25)</translation>
    </message>
    <message>
        <source>Maintain at most <n> connections to peers (default: 125)</source>
        <translation>Mantieni al massimo <n> connessioni ai peer (predefinite: 125)</translation>
    </message>
    <message>
        <source>Connect to a node to retrieve peer addresses, and disconnect</source>
        <translation>Connessione ad un nodo per ricevere l'indirizzo del peer, e disconnessione</translation>
    </message>
    <message>
        <source>Specify your own public address</source>
        <translation>Specifica il tuo indirizzo pubblico</translation>
    </message>
    <message>
        <source>Threshold for disconnecting misbehaving peers (default: 100)</source>
        <translation>Soglia di disconnessione dei peer di cattiva qualità (predefinita: 100)</translation>
    </message>
    <message>
        <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source>
        <translation>Numero di secondi di sospensione che i peer di cattiva qualità devono trascorrere prima di riconnettersi (predefiniti: 86400)</translation>
    </message>
    <message>
        <source>An error occurred while setting up the RPC port %u for listening on IPv4: %s</source>
        <translation>Errore riscontrato durante l'impostazione della porta RPC %u per l'ascolto su IPv4: %s</translation>
    </message>
    <message>
        <source>Accept command line and JSON-RPC commands</source>
        <translation>Accetta da linea di comando e da comandi JSON-RPC
</translation>
    </message>
    <message>
        <source>Run in the background as a daemon and accept commands</source>
        <translation>Esegui in background come demone e accetta i comandi
</translation>
    </message>
    <message>
        <source>Use the test network</source>
        <translation>Utilizza la rete di prova
</translation>
    </message>
    <message>
        <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source>
        <translation>Accetta connessioni dall'esterno (predefinito: 1 se no -proxy o -connect)</translation>
    </message>
    <message>
        <source>An error occurred while setting up the RPC port %u for listening on IPv6, falling back to IPv4: %s</source>
        <translation>Errore riscontrato durante l'impostazione della porta RPC %u per l'ascolto su IPv6, tornando su IPv4: %s</translation>
    </message>
    <message>
        <source>Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction.</source>
        <translation>Attenzione: -paytxfee è molto alta. Questa è la commissione che si paga quando si invia una transazione.</translation>
    </message>
    <message>
        <source>Warning: error reading wallet.dat! All keys read correctly, but transaction data or address book entries might be missing or incorrect.</source>
        <translation>Attenzione: errore di lettura di wallet.dat!  Tutte le chiave lette correttamente, ma i dati delle transazioni o le voci in rubrica potrebbero mancare o non essere corretti.</translation>
    </message>
    <message>
        <source>Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup.</source>
        <translation>Attenzione: wallet.dat corrotto, dati salvati! Il wallet.dat originale salvato come wallet.{timestamp}.bak in %s; se il tuo bilancio o le transazioni non sono corrette dovresti ripristinare da un backup.</translation>
    </message>
    <message>
        <source>Attempt to recover private keys from a corrupt wallet.dat</source>
        <translation>Tenta di recuperare le chiavi private da un wallet.dat corrotto</translation>
    </message>
    <message>
        <source>Block creation options:</source>
        <translation>Opzioni creazione blocco:</translation>
    </message>
    <message>
        <source>Connect only to the specified node(s)</source>
        <translation>Connetti solo al nodo specificato</translation>
    </message>
    <message>
        <source>Discover own IP address (default: 1 when listening and no -externalip)</source>
        <translation>Scopri proprio indirizzo IP (predefinito: 1 se in ascolto e no -externalip)</translation>
    </message>
    <message>
        <source>Failed to listen on any port. Use -listen=0 if you want this.</source>
        <translation>Impossibile mettersi in ascolto su una porta. Usa -listen=0 se vuoi usare questa opzione.</translation>
    </message>
    <message>
        <source>Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)</source>
        <translation>Buffer di ricezione massimo per connessione, <n>*1000 byte (predefinito: 5000)</translation>
    </message>
    <message>
        <source>Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)</source>
        <translation>Buffer di invio massimo per connessione, <n>*1000 byte (predefinito: 1000)</translation>
    </message>
    <message>
        <source>Only connect to nodes in network <net> (IPv4, IPv6 or Tor)</source>
        <translation>Connetti solo a nodi nella rete <net> (IPv4, IPv6 o Tor)</translation>
    </message>
    <message>
        <source>SSL options: (see the Bitcoin Wiki for SSL setup instructions)</source>
        <translation>Opzioni SSL: (vedi il wiki di Bitcoin per le istruzioni di configurazione SSL)</translation>
    </message>
    <message>
        <source>Send trace/debug info to console instead of debug.log file</source>
        <translation>Invia le informazioni di trace/debug alla console invece che al file debug.log</translation>
    </message>
    <message>
        <source>Set minimum block size in bytes (default: 0)</source>
        <translation>Imposta dimensione minima del blocco in bytes (predefinita: 0)</translation>
    </message>
    <message>
        <source>Shrink debug.log file on client startup (default: 1 when no -debug)</source>
        <translation>Riduci il file debug.log all'avvio del client (predefinito: 1 se non impostato -debug)</translation>
    </message>
    <message>
        <source>Specify connection timeout in milliseconds (default: 5000)</source>
        <translation>Specifica il timeout di connessione in millisecondi (predefinito: 5000)</translation>
    </message>
    <message>
        <source>Use UPnP to map the listening port (default: 0)</source>
        <translation>Usa UPnP per mappare la porta in ascolto (predefinito: 0)</translation>
    </message>
    <message>
        <source>Use UPnP to map the listening port (default: 1 when listening)</source>
        <translation>Usa UPnP per mappare la porta in ascolto (predefinito: 1 when listening)</translation>
    </message>
    <message>
        <source>Username for JSON-RPC connections</source>
        <translation>Nome utente per connessioni JSON-RPC
</translation>
    </message>
    <message>
        <source>Warning: This version is obsolete, upgrade required!</source>
        <translation>Attenzione: questa versione è obsoleta, aggiornamento necessario!</translation>
    </message>
    <message>
        <source>wallet.dat corrupt, salvage failed</source>
        <translation>wallet.dat corrotto, salvataggio fallito</translation>
    </message>
    <message>
        <source>Password for JSON-RPC connections</source>
        <translation>Password per connessioni JSON-RPC
</translation>
    </message>
    <message>
        <source>Allow JSON-RPC connections from specified IP address</source>
        <translation>Consenti connessioni JSON-RPC dall'indirizzo IP specificato
</translation>
    </message>
    <message>
        <source>Send commands to node running on <ip> (default: 127.0.0.1)</source>
        <translation>Inviare comandi al nodo in esecuzione su <ip> (predefinito: 127.0.0.1)</translation>
    </message>
    <message>
        <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source>
        <translation>Esegui il comando quando il miglior block cambia(%s nel cmd è sostituito dall'hash del blocco)</translation>
    </message>
    <message>
        <source>Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)</source>
        <translation>Esegui comando quando una transazione del portafoglio cambia (%s in cmd è sostituito da TxID)</translation>
    </message>
    <message>
        <source>Upgrade wallet to latest format</source>
        <translation>Aggiorna il wallet all'ultimo formato</translation>
    </message>
    <message>
        <source>Set key pool size to <n> (default: 100)</source>
        <translation>Impostare la quantità di chiavi di riserva a <n> (predefinita: 100)</translation>
    </message>
    <message>
        <source>Rescan the block chain for missing wallet transactions</source>
        <translation>Ripeti analisi della catena dei blocchi per cercare le transazioni  mancanti dal portamonete
</translation>
    </message>
    <message>
        <source>Use OpenSSL (https) for JSON-RPC connections</source>
        <translation>Utilizzare OpenSSL (https) per le connessioni  JSON-RPC
</translation>
    </message>
    <message>
        <source>Server certificate file (default: server.cert)</source>
        <translation>File certificato del server (predefinito: server.cert)</translation>
    </message>
    <message>
        <source>Server private key (default: server.pem)</source>
        <translation>Chiave privata del server (predefinito: server.pem)</translation>
    </message>
    <message>
        <source>This help message</source>
        <translation>Questo messaggio di aiuto
</translation>
    </message>
    <message>
        <source>Unable to bind to %s on this computer (bind returned error %d, %s)</source>
        <translation>Impossibile collegarsi alla %s su questo computer (bind returned error %d, %s)</translation>
    </message>
    <message>
        <source>Allow DNS lookups for -addnode, -seednode and -connect</source>
        <translation>Consenti ricerche DNS per aggiungere nodi e collegare
</translation>
    </message>
    <message>
        <source>Loading addresses...</source>
        <translation>Caricamento indirizzi...</translation>
    </message>
    <message>
        <source>Error loading wallet.dat: Wallet corrupted</source>
        <translation>Errore caricamento wallet.dat: Wallet corrotto</translation>
    </message>
    <message>
        <source>Error loading wallet.dat</source>
        <translation>Errore caricamento wallet.dat</translation>
    </message>
    <message>
        <source>Invalid -proxy address: '%s'</source>
        <translation>Indirizzo -proxy non valido: '%s'</translation>
    </message>
    <message>
        <source>Unknown network specified in -onlynet: '%s'</source>
        <translation>Rete sconosciuta specificata in -onlynet: '%s'</translation>
    </message>
    <message>
        <source>Unknown -socks proxy version requested: %i</source>
        <translation>Versione -socks proxy sconosciuta richiesta: %i</translation>
    </message>
    <message>
        <source>Cannot resolve -bind address: '%s'</source>
        <translation>Impossibile risolvere -bind address: '%s'</translation>
    </message>
    <message>
        <source>Cannot resolve -externalip address: '%s'</source>
        <translation>Impossibile risolvere indirizzo -externalip: '%s'</translation>
    </message>
    <message>
        <source>Invalid amount for -paytxfee=<amount>: '%s'</source>
        <translation>Importo non valido per -paytxfee=<amount>: '%s'</translation>
    </message>
    <message>
        <source>Invalid amount</source>
        <translation>Importo non valido</translation>
    </message>
    <message>
        <source>Insufficient funds</source>
        <translation>Fondi insufficienti</translation>
    </message>
    <message>
        <source>Loading block index...</source>
        <translation>Caricamento dell'indice del blocco...</translation>
    </message>
    <message>
        <source>Add a node to connect to and attempt to keep the connection open</source>
        <translation>Elérendő csomópont megadása and attempt to keep the connection open</translation>
    </message>
    <message>
        <source>Loading wallet...</source>
        <translation>Caricamento portamonete...</translation>
    </message>
    <message>
        <source>Cannot downgrade wallet</source>
        <translation>Non è possibile retrocedere il wallet</translation>
    </message>
    <message>
        <source>Cannot write default address</source>
        <translation>Non è possibile scrivere l'indirizzo predefinito</translation>
    </message>
    <message>
        <source>Rescanning...</source>
        <translation>Ripetere la scansione...</translation>
    </message>
    <message>
        <source>Done loading</source>
        <translation>Caricamento completato</translation>
    </message>
    <message>
        <source>To use the %s option</source>
        <translation>Per usare la opzione %s</translation>
    </message>
    <message>
        <source>Error</source>
        <translation>Errore</translation>
    </message>
    <message>
        <source>You must set rpcpassword=<password> in the configuration file:
%s
If the file does not exist, create it with owner-readable-only file permissions.</source>
        <translation>Devi settare rpcpassword=<password> nel file di configurazione: %s Se il file non esiste, crealo con i permessi di amministratore</translation>
    </message>
</context>
</TS>


text:
module Identity
  # This class represents the Openstack Project
  class Project < Core::ServiceLayer::Model
    validates :name, presence: { message: 'Name should not be empty' }

     # validate presence only on create to prevent errors in cases where a project doesn't have a desccription but something else about the project
     # is edited (e.g. the labels to set shard info). Without the 'on: :create' this validation will prevent the edit action
    validates :description, presence: { message: 'Please enter a description' }, on: :create
    # limit from billing api and keystone, allow blank for same reason as on: :create above
    validates :description,
              length: { maximum: 255, too_long: '255 characters is the maximum allowed' }, allow_blank: true

    attr_accessor :inquiry_id # to close inquiry after creation

    def after_save
      # FriendlyIdEntry.update_project_entry(self)
      FriendlyIdEntry.delete_project_entry(self)
      true
    end

    def sharding_enabled
      return read(:tags).include?('sharding_enabled') || false
    end

    def shards
      shards = []
      read(:tags).each do |tag|
        shards << tag if tag.start_with?('vc-')
      end
      shards
    end

    def subprojects_ids
      return @subprojetcs_ids if @subprojetcs_ids

      @subprojetcs_ids = read(:subtree)
      if @subprojetcs_ids.is_a?(Array)
        @subprojetcs_ids = @subprojetcs_ids.collect do |project_attrs|
          project_attrs.fetch('project', {}).fetch('id', nil)
        end
      end
      @subprojetcs_ids
    end

    def parents_project_ids
      return @parents_project_ids if @parents_project_ids

      @parents_project_ids = read(:parents)
      if @parents_project_ids.is_a?(Array)
        @parents_project_ids = @parents_project_ids.collect do |project_attrs|
          project_attrs.fetch('project', {}).fetch('id', nil)
        end
      elsif @parents_project_ids.is_a?(Hash)
        @parents_project_ids = hash_to_array(@parents_project_ids)
      end
      @parents_project_ids
    end

    def friendly_id
      return nil if id.nil?
      return id if domain_id.blank? || name.blank?

      friendly_id_entry = FriendlyIdEntry
                          .find_or_create_entry('Project', domain_id, id, attributes['name'])
      friendly_id_entry.slug
    end

    def hash_to_array(hash, array = [])
      hash.try(:each) do |k, v|
        array << k
        to_array(v, array)
      end
      array
    end
  end
end