### The Problem

Using native Qt translation files (TS, `*.ts`) for exchanging with Transifex platform limits means to provide context
to translators to the only category:

| C++ source code                               | TS XML element                                 | Transifex metadata
|-----------------------------------------------|------------------------------------------------|:------------------:
| Class Name                                    | `<name>`ClassName`</name>`                     | Context
| `disambiguation` parameter of `tr()` function | `<comment>`Short comment`</comment>`           | N/A
| [Translator Comments](https://doc.qt.io/qt-5/i18n-source-translation.html#translator-comments) `//: ...` | `<extracomment>`Nice comment.`</extracomment>` | N/A

More details:
- https://docs.transifex.com/formats/introduction
- https://docs.transifex.com/formats/qt-ts
- https://doc.qt.io/qt-5/linguist-ts-file-format.html

### The Solution

[XLIFF](https://en.wikipedia.org/wiki/XLIFF) file format is supported by Transifex much better.

And Qt provides us with a stand-alone conversion tool `lconvert`.

```sh
$ lconvert -o bitcoin_es.xlf -i bitcoin_en.ts
```

Now more context options are available:

| TS XML element                                 | XLIFF XML element                               | Transifex metadata
|------------------------------------------------|-------------------------------------------------|:------------------:
| `<name>`ClassName`</name>`                     | `<group resname="ClassName">`...`</group>`      | yes
| `<comment>`Short comment`</comment>`           | `<context>`Short comment`</context>`            | yes
| `<extracomment>`Nice comment.`</extracomment>` | `<note from="developer">`Nice comment.`</note>` | yes

More details:
- https://docs.transifex.com/formats/xliff
- https://code.qt.io/cgit/qt/qttools.git/tree/src/linguist/lconvert/lconvert.pro?h=5.12.10

---

Looking for Concept (N)ACKs.
deleteAction->setEnabled(false);
            break;
        }
        ui->copyAddress->setEnabled(true);
    }
    else
    {
        ui->deleteAddress->setEnabled(false);
        ui->copyAddress->setEnabled(false);
    }
}
void AddressBookPage::done(int retval)
{
    QTableView *table = ui->tableView;
    if(!table->selectionModel() || !table->model())
        return;
    
    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
    for (const QModelIndex& index : indexes) {
        QVariant address = table->model()->data(index);
        returnValue = address.toString();
    }
    if(returnValue.isEmpty())
    {
        
        retval = Rejected;
    }
    QDialog::done(retval);
}
void AddressBookPage::on_exportButton_clicked()