Merge branch 'master' into profiles... yikes
Conflicts: core.cpp core.h misc/settings.cpp misc/settings.h widget/form/settings/generalform.h widget/form/settingsform.cpp widget/widget.cpp widget/widget.h
81
INSTALL.md
@ -1,3 +1,10 @@
|
||||
#Install Instructions
|
||||
- [Dependencies](#dependencies)
|
||||
- [Windows](#windows)
|
||||
- [Linux](#linux)
|
||||
- [OS X](#osx)
|
||||
|
||||
<a name="dependencies" />
|
||||
##Dependencies
|
||||
|
||||
| Name | Version | Modules |
|
||||
@ -8,6 +15,7 @@
|
||||
| OpenCV | >= 2.4.9 | core, highgui |
|
||||
| OpenAL Soft | >= 1.16.0 | |
|
||||
|
||||
<a name="windows" />
|
||||
##Windows
|
||||
|
||||
###Qt
|
||||
@ -68,8 +76,9 @@ make install
|
||||
```
|
||||
Copy the dll "OpenAL32.dll" located at "C:\qTox\libs\openal-build\install\bin" to "C:\qTox\libs\lib". Finally, copy the directory "AL" located at "C:\qTox\libs\openal-build\install\include" to "C:\qTox\libs\include". Unlike OpenCV you don't need to patch any files. Feel free to delete the directories "openal-soft-x.y.z" and "openal-build", but you don't need to.
|
||||
|
||||
<a name="linux" />
|
||||
##Linux
|
||||
Most of the dependencies should be available through your package manger.
|
||||
Most of the dependencies should be available through your package manger. You may either follow the directions below, or simply run `./simple_make.sh` after cloning, which will attempt to automatically download dependencies followed by compilation.
|
||||
|
||||
###Cloning the Repository
|
||||
In order to clone the qTox repository you need Git.
|
||||
@ -156,11 +165,77 @@ cd /home/user/qTox
|
||||
./bootstrap.sh # use -h or --help for more information
|
||||
```
|
||||
|
||||
##Building packages
|
||||
After all the dependencies are thus reeady to go, compiling should be as simple as
|
||||
```bash
|
||||
qmake
|
||||
make
|
||||
```
|
||||
|
||||
qTox now has the experimental and probably-dodgy ability to package itself (in .deb
|
||||
###Building packages
|
||||
|
||||
Alternately, qTox now has the experimental and probably-dodgy ability to package itself (in .deb
|
||||
form natively, and .rpm form with <a href="http://joeyh.name/code/alien/">alien</a>).
|
||||
|
||||
After installing the required dependencies, run `bootstrap.sh` and then run the
|
||||
`buildPackages.sh` script, found in the tools folder. It will automatically get the
|
||||
packages necessary for building .debs, so be prepared to type your password for sudo.
|
||||
|
||||
<a name="osx" />
|
||||
##OS X
|
||||
|
||||
###OSX Easy Install
|
||||
|
||||
Since https://github.com/ReDetection/homebrew-qtox you can easily install qtox with homebrew
|
||||
```bash
|
||||
brew install --HEAD ReDetection/qtox/qtox
|
||||
```
|
||||
|
||||
###OSX Full Install Guide
|
||||
|
||||
This guide is intended for people who wish to use an existing or new ProjectTox-Core installation separate to the bundled installation with qTox, if you do not wish to use a separate installation you can skip to the section titled 'Final Steps'.
|
||||
|
||||
Installation on OSX, isn't quite straight forward, here is a quick guide on how to install;
|
||||
|
||||
Note that qTox now requires OpenCV and OpenAL for video and audio.
|
||||
|
||||
The first thing you need to do is install ProjectTox-Core with a/v support. Refer to the INSTALL guide in the PrjectTox-Core github repo.
|
||||
|
||||
Next you need to download QtTools (http://qt-project.org/downloads), at the time of writing this is at version .3.0.
|
||||
Make sure you deselect all the unnecessary components from the 5.3 checkbox (iOS/Android libs) otherwise you will end up with a very large download.
|
||||
|
||||
Once that is installed you will most likely need to set the path for qmake. To do this, open up terminal and paste in the following;
|
||||
|
||||
```bash
|
||||
export PATH=/location/to/qmake/binary:$PATH
|
||||
```
|
||||
|
||||
For myself, the qmake binary was located in /Users/mouseym/Qt/5.3/clang_64/bin/.
|
||||
|
||||
This is not a permanent change, it will revert when you close the terminal window, to add it permanently you will need to add echo the above line to your .profile/.bash_profile.
|
||||
|
||||
Once this is installed, do the following;
|
||||
|
||||
```bash
|
||||
git clone https://github.com/tux3/qTox
|
||||
cd toxgui
|
||||
qmake
|
||||
```
|
||||
|
||||
Now, we need to create a symlink to /usr/local/lib/ and /usr/local/include/
|
||||
```
|
||||
mkdir -p $HOME/qTox/libs
|
||||
sudo ln -s /usr/local/lib $HOME/qTox/libs/lib
|
||||
sudo ln -s /usr/local/include $HOME/qTox/libs/include
|
||||
```
|
||||
####Final Steps
|
||||
|
||||
The final step is to run
|
||||
```bash
|
||||
make
|
||||
```
|
||||
in the qTox directory, or if you are using the bundled tox core installation, you can use
|
||||
```bash
|
||||
./bootstrap.sh
|
||||
make
|
||||
```
|
||||
Assuming all went well you should now have a qTox.app file within the directory. Double click and it should open!
|
||||
|
@ -11,21 +11,24 @@ However, it is not a fork.
|
||||
- Group chats
|
||||
- File transfers, with previewing of images
|
||||
- Audio calls
|
||||
- Video calls (alpha)
|
||||
- Video calls
|
||||
- Tox DNS
|
||||
- Translations in various languages
|
||||
- Avatars
|
||||
|
||||
<h2>Downloads</h2>
|
||||
|
||||
This client runs on Windows, Linux and Mac natively.<br/>
|
||||
|
||||
You can find the latest versions of qTox <a href="https://github.com/tux3/qTox/releases">here</a>, or from the Tox Project's servers :
|
||||
|
||||
<a href="https://jenkins.libtoxcore.so/job/tux3-toxgui-win32/lastSuccessfulBuild/artifact/toxgui-win32.zip">Windows download</a><br/>
|
||||
<a href="https://jenkins.libtoxcore.so/job/ToxGUI%20OS%20X/lastSuccessfulBuild/artifact/qtox.dmg">Mac download </a><br/>
|
||||
<a href="https://jenkins.libtoxcore.so/job/qTox-linux-amd64/">Linux download</a> (click "Last successful artifacts")<br/>
|
||||
|
||||
<h3>Screenshots</h3>
|
||||
<h5>Note: The screenshots may not always be up to date, but they should give a good idea of the general look and features</h5>
|
||||
<img src="https://i.imgur.com/7Jg5tQa.png">/
|
||||
<img src="https://wiki.tox.im/images/5/5d/ToxGUI_tux3.png">
|
||||
|
||||
##Documentation:
|
||||
|
||||
|
BIN
audio/ToxicIncomingCall.pcm
Normal file
@ -103,7 +103,7 @@ rm -rf ${BASE_DIR}/${TOX_CORE_DIR}
|
||||
# afterwards install libsodium to INSTALL_DIR
|
||||
# skip the installation if TOX_ONLY is true
|
||||
if [[ $TOX_ONLY = "false" ]]; then
|
||||
git clone git://github.com/jedisct1/libsodium.git ${BASE_DIR}/${SODIUM_DIR}
|
||||
git clone git://github.com/jedisct1/libsodium.git ${BASE_DIR}/${SODIUM_DIR} --depth 1
|
||||
pushd ${BASE_DIR}/${SODIUM_DIR}
|
||||
git checkout tags/$SODIUM_VER
|
||||
./autogen.sh
|
||||
@ -116,7 +116,7 @@ if [[ $TOX_ONLY = "false" ]]; then
|
||||
|
||||
make -j2 check
|
||||
|
||||
if [[ $GLOBAL = "false" ]]; then
|
||||
if [[ $GLOBAL = "false" || $EUID -eq 0 ]]; then
|
||||
make install
|
||||
else
|
||||
sudo make install
|
||||
@ -128,7 +128,7 @@ fi
|
||||
# clone current master of libtoxcore
|
||||
# make sure to compile with libsodium we just installed to INSTALL_DIR
|
||||
# afterwards install libtoxcore to INSTALL_DIR
|
||||
git clone https://github.com/irungentoo/toxcore.git ${BASE_DIR}/${TOX_CORE_DIR}
|
||||
git clone https://github.com/irungentoo/toxcore.git ${BASE_DIR}/${TOX_CORE_DIR} --depth 1
|
||||
pushd ${BASE_DIR}/${TOX_CORE_DIR}
|
||||
./autogen.sh
|
||||
if [[ $GLOBAL = "false" ]]; then
|
||||
@ -139,7 +139,7 @@ fi
|
||||
|
||||
make -j2
|
||||
|
||||
if [[ $GLOBAL = "false" ]]; then
|
||||
if [[ $GLOBAL = "false" || $EUID -eq 0 ]]; then
|
||||
make install
|
||||
else
|
||||
sudo make install
|
||||
|
509
core.cpp
@ -15,9 +15,9 @@
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
#include "cdata.h"
|
||||
#include "cstring.h"
|
||||
#include "settings.h"
|
||||
#include "misc/cdata.h"
|
||||
#include "misc/cstring.h"
|
||||
#include "misc/settings.h"
|
||||
#include "widget/widget.h"
|
||||
|
||||
#include <tox/tox.h>
|
||||
@ -34,6 +34,9 @@
|
||||
#include <QTimer>
|
||||
#include <QCoreApplication>
|
||||
#include <QDateTime>
|
||||
#include <QList>
|
||||
#include <QBuffer>
|
||||
#include <QMessageBox>
|
||||
|
||||
const QString Core::CONFIG_FILE_NAME = "data";
|
||||
const QString Core::TOX_EXT = ".tox";
|
||||
@ -48,15 +51,9 @@ Core::Core(Camera* cam, QThread *coreThread) :
|
||||
|
||||
toxTimer = new QTimer(this);
|
||||
toxTimer->setSingleShot(true);
|
||||
//saveTimer = new QTimer(this);
|
||||
//saveTimer->start(TOX_SAVE_INTERVAL);
|
||||
bootstrapTimer = new QTimer(this);
|
||||
bootstrapTimer->start(TOX_BOOTSTRAP_INTERVAL);
|
||||
connect(toxTimer, &QTimer::timeout, this, &Core::process);
|
||||
//connect(saveTimer, &QTimer::timeout, this, &Core::saveConfiguration); //Disable save timer in favor of saving on events
|
||||
//connect(fileTimer, &QTimer::timeout, this, &Core::fileHeartbeat);
|
||||
connect(bootstrapTimer, &QTimer::timeout, this, &Core::onBootstrapTimer);
|
||||
connect(&Settings::getInstance(), &Settings::dhtServerListChanged, this, &Core::bootstrapDht);
|
||||
connect(&Settings::getInstance(), &Settings::dhtServerListChanged, this, &Core::process);
|
||||
connect(this, SIGNAL(fileTransferFinished(ToxFile)), this, SLOT(onFileTransferFinished(ToxFile)));
|
||||
|
||||
for (int i=0; i<TOXAV_MAX_CALLS;i++)
|
||||
@ -121,10 +118,13 @@ Core* Core::getInstance()
|
||||
return Widget::getInstance()->getCore();
|
||||
}
|
||||
|
||||
void Core::get_tox()
|
||||
void Core::make_tox()
|
||||
{
|
||||
// IPv6 needed for LAN discovery, but can crash some weird routers. On by default, can be disabled in options.
|
||||
bool enableIPv6 = Settings::getInstance().getEnableIPv6();
|
||||
bool forceTCP = Settings::getInstance().getForceTCP();
|
||||
bool useProxy = Settings::getInstance().getUseProxy();
|
||||
|
||||
if (enableIPv6)
|
||||
qDebug() << "Core starting with IPv6 enabled";
|
||||
else
|
||||
@ -132,11 +132,32 @@ void Core::get_tox()
|
||||
|
||||
Tox_Options toxOptions;
|
||||
toxOptions.ipv6enabled = enableIPv6;
|
||||
toxOptions.udp_disabled = 0;
|
||||
toxOptions.udp_disabled = forceTCP;
|
||||
|
||||
// No proxy by default
|
||||
toxOptions.proxy_enabled = false;
|
||||
toxOptions.proxy_address[0] = 0;
|
||||
toxOptions.proxy_port = 0;
|
||||
|
||||
if (useProxy)
|
||||
{
|
||||
QString proxyAddr = Settings::getInstance().getProxyAddr();
|
||||
int proxyPort = Settings::getInstance().getProxyPort();
|
||||
|
||||
if (proxyAddr.length() > 255)
|
||||
{
|
||||
qWarning() << "Core: proxy address" << proxyAddr << "is too long";
|
||||
}
|
||||
else if (proxyAddr != "" && proxyPort > 0)
|
||||
{
|
||||
qDebug() << "Core: using proxy" << proxyAddr << ":" << proxyPort;
|
||||
toxOptions.proxy_enabled = true;
|
||||
uint16_t sz = CString::fromString(proxyAddr, (unsigned char*)toxOptions.proxy_address);
|
||||
toxOptions.proxy_address[sz] = 0;
|
||||
toxOptions.proxy_port = proxyPort;
|
||||
}
|
||||
}
|
||||
|
||||
tox = tox_new(&toxOptions);
|
||||
if (tox == nullptr)
|
||||
{
|
||||
@ -146,13 +167,29 @@ void Core::get_tox()
|
||||
tox = tox_new(&toxOptions);
|
||||
if (tox == nullptr)
|
||||
{
|
||||
qCritical() << "Tox core failed to start";
|
||||
emit failedToStart();
|
||||
if (toxOptions.proxy_enabled)
|
||||
{
|
||||
//QMessageBox::critical(Widget::getInstance(), tr("Proxy failure", "popup title"),
|
||||
//tr("toxcore failed to start with your proxy settings. qTox cannot run; please modify your "
|
||||
//"settings and restart.", "popup text"));
|
||||
qCritical() << "Core: bad proxy! no toxcore!";
|
||||
emit badProxy();
|
||||
}
|
||||
else
|
||||
{
|
||||
qCritical() << "Tox core failed to start";
|
||||
emit failedToStart();
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
qWarning() << "Core failed to start with IPv6, falling back to IPv4. LAN discovery may not work properly.";
|
||||
}
|
||||
else if (toxOptions.proxy_enabled)
|
||||
{
|
||||
emit badProxy();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
qCritical() << "Tox core failed to start";
|
||||
@ -172,7 +209,7 @@ void Core::get_tox()
|
||||
|
||||
void Core::start()
|
||||
{
|
||||
get_tox();
|
||||
make_tox();
|
||||
|
||||
qsrand(time(nullptr));
|
||||
|
||||
@ -191,7 +228,13 @@ void Core::start()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
loadConfiguration(path);
|
||||
if (!loadConfiguration(path))
|
||||
{
|
||||
emit failedToStart();
|
||||
tox_kill(tox);
|
||||
tox = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
tox_callback_friend_request(tox, onFriendRequest, this);
|
||||
tox_callback_friend_message(tox, onFriendMessage, this);
|
||||
@ -207,6 +250,8 @@ void Core::start()
|
||||
tox_callback_file_send_request(tox, onFileSendRequestCallback, this);
|
||||
tox_callback_file_control(tox, onFileControlCallback, this);
|
||||
tox_callback_file_data(tox, onFileDataCallback, this);
|
||||
tox_callback_avatar_info(tox, onAvatarInfoCallback, this);
|
||||
tox_callback_avatar_data(tox, onAvatarDataCallback, this);
|
||||
|
||||
toxav_register_callstate_callback(toxav, onAvInvite, av_OnInvite, this);
|
||||
toxav_register_callstate_callback(toxav, onAvStart, av_OnStart, this);
|
||||
@ -225,20 +270,101 @@ void Core::start()
|
||||
|
||||
uint8_t friendAddress[TOX_FRIEND_ADDRESS_SIZE];
|
||||
tox_get_address(tox, friendAddress);
|
||||
|
||||
emit friendAddressGenerated(CFriendAddress::toString(friendAddress));
|
||||
|
||||
bootstrapDht();
|
||||
QPixmap pic = Settings::getInstance().getSavedAvatar(getSelfId().toString());
|
||||
if (!pic.isNull() && !pic.size().isEmpty())
|
||||
{
|
||||
QByteArray data;
|
||||
QBuffer buffer(&data);
|
||||
buffer.open(QIODevice::WriteOnly);
|
||||
pic.save(&buffer, "PNG");
|
||||
buffer.close();
|
||||
setAvatar(TOX_AVATAR_FORMAT_PNG, data);
|
||||
}
|
||||
else
|
||||
qDebug() << "Core: Error loading self avatar";
|
||||
|
||||
process(); // starts its own timer
|
||||
}
|
||||
|
||||
/* Using the now commented out statements in checkConnection(), I watched how
|
||||
* many ticks disconnects-after-initial-connect lasted. Out of roughly 15 trials,
|
||||
* 5 disconnected; 4 were DCd for less than 20 ticks, while the 5th was ~50 ticks.
|
||||
* So I set the tolerance here at 25, and initial DCs should be very rare now.
|
||||
* This should be able to go to 50 or 100 without affecting legitimate disconnects'
|
||||
* downtime, but lets be conservative for now. Edit: now 40.
|
||||
*/
|
||||
#define CORE_DISCONNECT_TOLERANCE 40
|
||||
|
||||
void Core::process()
|
||||
{
|
||||
if (!tox)
|
||||
return;
|
||||
|
||||
static int tolerance = CORE_DISCONNECT_TOLERANCE;
|
||||
tox_do(tox);
|
||||
|
||||
#ifdef DEBUG
|
||||
//we want to see the debug messages immediately
|
||||
fflush(stdout);
|
||||
#endif
|
||||
|
||||
if (checkConnection())
|
||||
tolerance = CORE_DISCONNECT_TOLERANCE;
|
||||
else if (!(--tolerance))
|
||||
{
|
||||
bootstrapDht();
|
||||
}
|
||||
|
||||
toxTimer->start(tox_do_interval(tox));
|
||||
}
|
||||
|
||||
void Core::onBootstrapTimer()
|
||||
bool Core::checkConnection()
|
||||
{
|
||||
if (!tox)
|
||||
return;
|
||||
if(!tox_isconnected(tox))
|
||||
bootstrapDht();
|
||||
static bool isConnected = false;
|
||||
//static int count = 0;
|
||||
bool toxConnected = tox_isconnected(tox);
|
||||
|
||||
if (toxConnected && !isConnected) {
|
||||
qDebug() << "Core: Connected to DHT";
|
||||
emit connected();
|
||||
isConnected = true;
|
||||
//if (count) qDebug() << "Core: disconnect count:" << count;
|
||||
//count = 0;
|
||||
} else if (!toxConnected && isConnected) {
|
||||
qDebug() << "Core: Disconnected to DHT";
|
||||
emit disconnected();
|
||||
isConnected = false;
|
||||
//count++;
|
||||
} //else if (!toxConnected) count++;
|
||||
return isConnected;
|
||||
}
|
||||
|
||||
void Core::bootstrapDht()
|
||||
{
|
||||
const Settings& s = Settings::getInstance();
|
||||
QList<Settings::DhtServer> dhtServerList = s.getDhtServerList();
|
||||
|
||||
int listSize = dhtServerList.size();
|
||||
static int j = qrand() % listSize;
|
||||
|
||||
qDebug() << "Core: Bootstraping to the DHT ...";
|
||||
|
||||
int i=0;
|
||||
while (i < 2) // i think the more we bootstrap, the more we jitter because the more we overwrite nodes
|
||||
{
|
||||
const Settings::DhtServer& dhtServer = dhtServerList[j % listSize];
|
||||
if (tox_bootstrap_from_address(tox, dhtServer.address.toLatin1().data(),
|
||||
dhtServer.port, CUserId(dhtServer.userId).data()) == 1)
|
||||
qDebug() << QString("Core: Bootstraping from ")+dhtServer.name+QString(", addr ")+dhtServer.address.toLatin1().data()
|
||||
+QString(", port ")+QString().setNum(dhtServer.port);
|
||||
else
|
||||
qDebug() << "Core: Error bootstraping from "+dhtServer.name;
|
||||
|
||||
j++;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void Core::onFriendRequest(Tox*/* tox*/, const uint8_t* cUserId, const uint8_t* cMessage, uint16_t cMessageSize, void* core)
|
||||
@ -248,7 +374,7 @@ void Core::onFriendRequest(Tox*/* tox*/, const uint8_t* cUserId, const uint8_t*
|
||||
|
||||
void Core::onFriendMessage(Tox*/* tox*/, int friendId, const uint8_t* cMessage, uint16_t cMessageSize, void* core)
|
||||
{
|
||||
emit static_cast<Core*>(core)->friendMessageReceived(friendId, CString::toString(cMessage, cMessageSize));
|
||||
emit static_cast<Core*>(core)->friendMessageReceived(friendId, CString::toString(cMessage, cMessageSize), false);
|
||||
}
|
||||
|
||||
void Core::onFriendNameChange(Tox*/* tox*/, int friendId, const uint8_t* cName, uint16_t cNameSize, void* core)
|
||||
@ -283,6 +409,10 @@ void Core::onUserStatusChanged(Tox*/* tox*/, int friendId, uint8_t userstatus, v
|
||||
status = Status::Online;
|
||||
break;
|
||||
}
|
||||
|
||||
if (status == Status::Online || status == Status::Away)
|
||||
tox_request_avatar_info(static_cast<Core*>(core)->tox, friendId);
|
||||
|
||||
emit static_cast<Core*>(core)->friendStatusChanged(friendId, status);
|
||||
}
|
||||
|
||||
@ -292,23 +422,51 @@ void Core::onConnectionStatusChanged(Tox*/* tox*/, int friendId, uint8_t status,
|
||||
emit static_cast<Core*>(core)->friendStatusChanged(friendId, friendStatus);
|
||||
if (friendStatus == Status::Offline) {
|
||||
static_cast<Core*>(core)->checkLastOnline(friendId);
|
||||
|
||||
for (ToxFile& f : fileSendQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::TRANSMITTING)
|
||||
{
|
||||
f.status = ToxFile::BROKEN;
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, true);
|
||||
}
|
||||
}
|
||||
for (ToxFile& f : fileRecvQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::TRANSMITTING)
|
||||
{
|
||||
f.status = ToxFile::BROKEN;
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ToxFile& f : fileRecvQueue)
|
||||
{
|
||||
if (f.friendId == friendId && f.status == ToxFile::BROKEN)
|
||||
{
|
||||
qDebug() << QString("Core::onConnectionStatusChanged: %1: resuming broken filetransfer from position: %2").arg(f.file->fileName()).arg(f.bytesSent);
|
||||
tox_file_send_control(static_cast<Core*>(core)->tox, friendId, 1, f.fileNum, TOX_FILECONTROL_RESUME_BROKEN, reinterpret_cast<const uint8_t*>(&f.bytesSent), sizeof(uint64_t));
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(f, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Core::onAction(Tox*/* tox*/, int friendId, const uint8_t *cMessage, uint16_t cMessageSize, void *core)
|
||||
{
|
||||
emit static_cast<Core*>(core)->actionReceived(friendId, CString::toString(cMessage, cMessageSize));
|
||||
emit static_cast<Core*>(core)->friendMessageReceived(friendId, CString::toString(cMessage, cMessageSize), true);
|
||||
}
|
||||
|
||||
void Core::onGroupInvite(Tox*, int friendnumber, const uint8_t *group_public_key, void *core)
|
||||
void Core::onGroupInvite(Tox*, int friendnumber, const uint8_t *group_public_key, uint16_t length,void *core)
|
||||
{
|
||||
qDebug() << QString("Core: Group invite by %1").arg(friendnumber);
|
||||
emit static_cast<Core*>(core)->groupInviteReceived(friendnumber, group_public_key);
|
||||
emit static_cast<Core*>(core)->groupInviteReceived(friendnumber, group_public_key,length);
|
||||
}
|
||||
|
||||
void Core::onGroupMessage(Tox*, int groupnumber, int friendgroupnumber, const uint8_t * message, uint16_t length, void *core)
|
||||
void Core::onGroupMessage(Tox*, int groupnumber, int peernumber, const uint8_t * message, uint16_t length, void *_core)
|
||||
{
|
||||
emit static_cast<Core*>(core)->groupMessageReceived(groupnumber, friendgroupnumber, CString::toString(message, length));
|
||||
Core* core = static_cast<Core*>(_core);
|
||||
emit core->groupMessageReceived(groupnumber, CString::toString(message, length), core->getGroupPeerName(groupnumber, peernumber));
|
||||
}
|
||||
|
||||
void Core::onGroupNamelistChange(Tox*, int groupnumber, int peernumber, uint8_t change, void *core)
|
||||
@ -329,7 +487,7 @@ void Core::onFileSendRequestCallback(Tox*, int32_t friendnumber, uint8_t filenum
|
||||
emit static_cast<Core*>(core)->fileReceiveRequested(fileRecvQueue.last());
|
||||
}
|
||||
void Core::onFileControlCallback(Tox* tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber,
|
||||
uint8_t control_type, const uint8_t*, uint16_t, void *core)
|
||||
uint8_t control_type, const uint8_t* data, uint16_t length, void *core)
|
||||
{
|
||||
ToxFile* file{nullptr};
|
||||
if (receive_send == 1)
|
||||
@ -416,12 +574,39 @@ void Core::onFileControlCallback(Tox* tox, int32_t friendnumber, uint8_t receive
|
||||
}
|
||||
else if (receive_send == 0 && control_type == TOX_FILECONTROL_ACCEPT)
|
||||
{
|
||||
if (file->status == ToxFile::BROKEN)
|
||||
{
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(*file, false);
|
||||
file->status = ToxFile::TRANSMITTING;
|
||||
}
|
||||
emit static_cast<Core*>(core)->fileTransferRemotePausedUnpaused(*file, false);
|
||||
}
|
||||
else if ((receive_send == 0 || receive_send == 1) && control_type == TOX_FILECONTROL_PAUSE)
|
||||
{
|
||||
emit static_cast<Core*>(core)->fileTransferRemotePausedUnpaused(*file, true);
|
||||
}
|
||||
else if (receive_send == 1 && control_type == TOX_FILECONTROL_RESUME_BROKEN)
|
||||
{
|
||||
if (length != sizeof(uint64_t))
|
||||
return;
|
||||
|
||||
qDebug() << "Core::onFileControlCallback: TOX_FILECONTROL_RESUME_BROKEN";
|
||||
|
||||
uint64_t resumePos = *reinterpret_cast<const uint64_t*>(data);
|
||||
|
||||
if (resumePos >= file->filesize)
|
||||
{
|
||||
qWarning() << "Core::onFileControlCallback: invalid resume position";
|
||||
tox_file_send_control(tox, file->friendId, 0, file->fileNum, TOX_FILECONTROL_KILL, nullptr, 0); // don't sure about it
|
||||
return;
|
||||
}
|
||||
|
||||
file->status = ToxFile::TRANSMITTING;
|
||||
emit static_cast<Core*>(core)->fileTransferBrokenUnbroken(*file, false);
|
||||
|
||||
file->bytesSent = resumePos;
|
||||
tox_file_send_control(tox, file->friendId, 0, file->fileNum, TOX_FILECONTROL_ACCEPT, nullptr, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << QString("Core: File control callback, receive_send=%1, control_type=%2")
|
||||
@ -453,6 +638,46 @@ void Core::onFileDataCallback(Tox*, int32_t friendnumber, uint8_t filenumber, co
|
||||
file->filesize, file->bytesSent, ToxFile::RECEIVING);
|
||||
}
|
||||
|
||||
void Core::onAvatarInfoCallback(Tox*, int32_t friendnumber, uint8_t format,
|
||||
uint8_t* hash, void* _core)
|
||||
{
|
||||
Core* core = static_cast<Core*>(_core);
|
||||
|
||||
if (format == TOX_AVATAR_FORMAT_NONE)
|
||||
{
|
||||
qDebug() << "Core: Got null avatar info from" << core->getFriendUsername(friendnumber);
|
||||
emit core->friendAvatarRemoved(friendnumber);
|
||||
QFile::remove(QDir(Settings::getInstance().getSettingsDirPath()).filePath("avatars/"+core->getFriendAddress(friendnumber).left(64)+".png"));
|
||||
QFile::remove(QDir(Settings::getInstance().getSettingsDirPath()).filePath("avatars/"+core->getFriendAddress(friendnumber).left(64)+".hash"));
|
||||
}
|
||||
else
|
||||
{
|
||||
QByteArray oldHash = Settings::getInstance().getAvatarHash(core->getFriendAddress(friendnumber));
|
||||
if (QByteArray((char*)hash, TOX_HASH_LENGTH) != oldHash)
|
||||
// comparison failed miserably if I didn't convert hash to QByteArray
|
||||
{
|
||||
qDebug() << "Core: Got new avatar info from" << core->getFriendUsername(friendnumber);
|
||||
tox_request_avatar_data(core->tox, friendnumber);
|
||||
}
|
||||
else
|
||||
qDebug() << "Core: Got same avatar info from" << core->getFriendUsername(friendnumber);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::onAvatarDataCallback(Tox*, int32_t friendnumber, uint8_t,
|
||||
uint8_t *hash, uint8_t *data, uint32_t datalen, void *core)
|
||||
{
|
||||
QPixmap pic;
|
||||
pic.loadFromData((uchar*)data, datalen);
|
||||
if (!pic.isNull())
|
||||
{
|
||||
qDebug() << "Core: Got avatar data from" << static_cast<Core*>(core)->getFriendUsername(friendnumber);
|
||||
Settings::getInstance().saveAvatar(pic, static_cast<Core*>(core)->getFriendAddress(friendnumber));
|
||||
Settings::getInstance().saveAvatarHash(QByteArray((char*)hash, TOX_HASH_LENGTH), static_cast<Core*>(core)->getFriendAddress(friendnumber));
|
||||
emit static_cast<Core*>(core)->friendAvatarChanged(friendnumber, pic);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::acceptFriendRequest(const QString& userId)
|
||||
{
|
||||
int friendId = tox_add_friend_norequest(tox, CUserId(userId).data());
|
||||
@ -494,10 +719,14 @@ void Core::requestFriendship(const QString& friendAddress, const QString& messag
|
||||
|
||||
void Core::sendMessage(int friendId, const QString& message)
|
||||
{
|
||||
CString cMessage(message);
|
||||
QList<CString> cMessages = splitMessage(message);
|
||||
|
||||
int messageId = tox_send_message(tox, friendId, cMessage.data(), cMessage.size());
|
||||
emit messageSentResult(friendId, message, messageId);
|
||||
for (auto &cMsg :cMessages)
|
||||
{
|
||||
int messageId = tox_send_message(tox, friendId, cMsg.data(), cMsg.size());
|
||||
if (messageId == 0)
|
||||
emit messageSentResult(friendId, message, messageId);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::sendAction(int friendId, const QString &action)
|
||||
@ -516,9 +745,14 @@ void Core::sendTyping(int friendId, bool typing)
|
||||
|
||||
void Core::sendGroupMessage(int groupId, const QString& message)
|
||||
{
|
||||
CString cMessage(message);
|
||||
QList<CString> cMessages = splitMessage(message);
|
||||
|
||||
tox_group_message_send(tox, groupId, cMessage.data(), cMessage.size());
|
||||
for (auto &cMsg :cMessages)
|
||||
{
|
||||
int ret = tox_group_message_send(tox, groupId, cMsg.data(), cMsg.size());
|
||||
if (ret == -1)
|
||||
emit groupSentResult(groupId, message, ret);
|
||||
}
|
||||
}
|
||||
|
||||
void Core::sendFile(int32_t friendId, QString Filename, QString FilePath, long long filesize)
|
||||
@ -528,6 +762,7 @@ void Core::sendFile(int32_t friendId, QString Filename, QString FilePath, long l
|
||||
if (fileNum == -1)
|
||||
{
|
||||
qWarning() << "Core::sendFile: Can't create the Tox file sender";
|
||||
emit fileSendFailed(friendId, Filename);
|
||||
return;
|
||||
}
|
||||
qDebug() << QString("Core::sendFile: Created file sender %1 with friend %2").arg(fileNum).arg(friendId);
|
||||
@ -604,7 +839,7 @@ void Core::pauseResumeFileRecv(int friendId, int fileNum)
|
||||
tox_file_send_control(tox, file->friendId, 1, file->fileNum, TOX_FILECONTROL_ACCEPT, nullptr, 0);
|
||||
}
|
||||
else
|
||||
qWarning() << "Core::pauseResumeFileRecv: File is stopped";
|
||||
qWarning() << "Core::pauseResumeFileRecv: File is stopped or broken";
|
||||
}
|
||||
|
||||
void Core::cancelFileSend(int friendId, int fileNum)
|
||||
@ -741,17 +976,36 @@ void Core::setUsername(const QString& username)
|
||||
}
|
||||
}
|
||||
|
||||
QString Core::getSelfId()
|
||||
void Core::setAvatar(uint8_t format, const QByteArray& data)
|
||||
{
|
||||
if (tox_set_avatar(tox, format, (uint8_t*)data.constData(), data.size()) != 0)
|
||||
{
|
||||
qWarning() << "Core: Failed to set self avatar";
|
||||
return;
|
||||
}
|
||||
|
||||
QPixmap pic;
|
||||
pic.loadFromData(data);
|
||||
Settings::getInstance().saveAvatar(pic, getSelfId().toString());
|
||||
emit selfAvatarChanged(pic);
|
||||
|
||||
// Broadcast our new avatar!
|
||||
// according to tox.h, we need not broadcast this ourselves, but initial testing indicated elsewise
|
||||
const uint32_t friendCount = tox_count_friendlist(tox);;
|
||||
for (unsigned i=0; i<friendCount; i++)
|
||||
tox_send_avatar_info(tox, i);
|
||||
}
|
||||
|
||||
ToxID Core::getSelfId()
|
||||
{
|
||||
uint8_t friendAddress[TOX_FRIEND_ADDRESS_SIZE];
|
||||
tox_get_address(tox, friendAddress);
|
||||
|
||||
return CFriendAddress::toString(friendAddress);
|
||||
return ToxID::fromString(CFriendAddress::toString(friendAddress));
|
||||
}
|
||||
|
||||
QString Core::getIDString()
|
||||
{
|
||||
return getSelfId().left(12);
|
||||
return getSelfId().toString().left(12);
|
||||
// 12 is the smallest multiple of four such that
|
||||
// 16^n > 10^10 (which is roughly the planet's population)
|
||||
}
|
||||
@ -813,79 +1067,6 @@ void Core::onFileTransferFinished(ToxFile file)
|
||||
emit fileDownloadFinished(file.filePath);
|
||||
}
|
||||
|
||||
void Core::bootstrapDht(bool reset)
|
||||
{
|
||||
const Settings& s = Settings::getInstance();
|
||||
QList<Settings::DhtServer> dhtServerList = s.getDhtServerList();
|
||||
|
||||
int listSize = dhtServerList.size();
|
||||
static int j = qrand() % listSize, n=0;
|
||||
|
||||
if (reset)
|
||||
{
|
||||
n = 0;
|
||||
bootstrapTimer->setInterval(TOX_BOOTSTRAP_INTERVAL);
|
||||
return;
|
||||
}
|
||||
|
||||
// We couldn't connect after trying 6 different nodes, let's try something else
|
||||
if (n>3)
|
||||
{
|
||||
qDebug() << "Core: We're having trouble connecting to the DHT, slowing down";
|
||||
bootstrapTimer->setInterval(TOX_BOOTSTRAP_INTERVAL*(n-1));
|
||||
}
|
||||
else
|
||||
qDebug() << "Core: Connecting to the DHT ...";
|
||||
|
||||
int i=0;
|
||||
while (i < (2 - (n>3)))
|
||||
{
|
||||
const Settings::DhtServer& dhtServer = dhtServerList[j % listSize];
|
||||
if (tox_bootstrap_from_address(tox, dhtServer.address.toLatin1().data(),
|
||||
dhtServer.port, CUserId(dhtServer.userId).data()) == 1)
|
||||
qDebug() << QString("Core: Bootstraping from ")+dhtServer.name+QString(", addr ")+dhtServer.address.toLatin1().data()
|
||||
+QString(", port ")+QString().setNum(dhtServer.port);
|
||||
else
|
||||
qDebug() << "Core: Error bootstraping from "+dhtServer.name;
|
||||
|
||||
tox_do(tox);
|
||||
j++;
|
||||
i++;
|
||||
n++;
|
||||
}
|
||||
}
|
||||
|
||||
void Core::process()
|
||||
{
|
||||
if (tox)
|
||||
{
|
||||
tox_do(tox);
|
||||
#ifdef DEBUG
|
||||
//we want to see the debug messages immediately
|
||||
fflush(stdout);
|
||||
#endif
|
||||
checkConnection();
|
||||
//int toxInterval = tox_do_interval(tox);
|
||||
//qDebug() << QString("Tox interval %1").arg(toxInterval);
|
||||
}
|
||||
toxTimer->start(50);
|
||||
}
|
||||
|
||||
void Core::checkConnection()
|
||||
{
|
||||
static bool isConnected = false;
|
||||
|
||||
if (tox_isconnected(tox) && !isConnected) {
|
||||
qDebug() << "Core: Connected to DHT";
|
||||
emit connected();
|
||||
isConnected = true;
|
||||
} else if (!tox_isconnected(tox) && isConnected) {
|
||||
qDebug() << "Core: Disconnected to DHT";
|
||||
emit disconnected();
|
||||
isConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
QString Core::sanitize(QString name)
|
||||
{
|
||||
// these are pretty much Windows banned filename characters
|
||||
@ -900,29 +1081,45 @@ QString Core::sanitize(QString name)
|
||||
return name;
|
||||
}
|
||||
|
||||
void Core::loadConfiguration(QString path)
|
||||
bool Core::loadConfiguration(QString path)
|
||||
{
|
||||
// setting the profile is now the responsibility of the caller
|
||||
QFile conf(path);
|
||||
QFile configurationFile(path);
|
||||
qDebug() << "Core::loadConfiguration: reading from " << path;
|
||||
|
||||
if (!conf.exists()) {
|
||||
if (!configurationFile.exists()) {
|
||||
qWarning() << "The Tox configuration file was not found";
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!conf.open(QIODevice::ReadOnly)) {
|
||||
if (!configurationFile.open(QIODevice::ReadOnly)) {
|
||||
qCritical() << "File " << path << " cannot be opened";
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
qint64 fileSize = conf.size();
|
||||
qint64 fileSize = configurationFile.size();
|
||||
if (fileSize > 0) {
|
||||
QByteArray data = conf.readAll();
|
||||
tox_load(tox, reinterpret_cast<uint8_t *>(data.data()), data.size());
|
||||
QByteArray data = configurationFile.readAll();
|
||||
int error = tox_load(tox, reinterpret_cast<uint8_t *>(data.data()), data.size());
|
||||
if (error < 0)
|
||||
{
|
||||
qWarning() << "Core: tox_load failed with error "<<error;
|
||||
}
|
||||
else if (error == 1) // Encrypted data save
|
||||
{
|
||||
qWarning() << "Core: Can not open encrypted tox save";
|
||||
if (QMessageBox::Ok != QMessageBox::warning(nullptr, tr("Encrypted profile"),
|
||||
tr("Your tox profile seems to be encrypted, qTox can't open it\nDo you want to erase this profile ?"),
|
||||
QMessageBox::Ok | QMessageBox::Cancel))
|
||||
{
|
||||
qWarning() << "Core: Couldn't open encrypted save, giving up";
|
||||
configurationFile.close();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
conf.close();
|
||||
configurationFile.close();
|
||||
|
||||
// set GUI with user and statusmsg
|
||||
QString name = getUsername();
|
||||
@ -934,6 +1131,7 @@ void Core::loadConfiguration(QString path)
|
||||
emit statusMessageSet(msg);
|
||||
|
||||
loadFriends();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Core::saveConfiguration()
|
||||
@ -974,6 +1172,8 @@ void Core::saveConfiguration(const QString& path)
|
||||
return;
|
||||
}
|
||||
|
||||
Settings::getInstance().save();
|
||||
|
||||
QSaveFile configurationFile(path);
|
||||
if (!configurationFile.open(QIODevice::WriteOnly)) {
|
||||
qCritical() << "File " << path << " cannot be opened";
|
||||
@ -989,14 +1189,14 @@ void Core::saveConfiguration(const QString& path)
|
||||
configurationFile.commit();
|
||||
delete[] data;
|
||||
}
|
||||
|
||||
Settings::getInstance().save();
|
||||
}
|
||||
|
||||
void Core::switchConfiguration(QString profile)
|
||||
{
|
||||
saveConfiguration();
|
||||
|
||||
toxTimer->stop();
|
||||
|
||||
if (tox) {
|
||||
toxav_kill(toxav);
|
||||
toxav = nullptr;
|
||||
@ -1005,11 +1205,20 @@ void Core::switchConfiguration(QString profile)
|
||||
}
|
||||
emit clearFriends();
|
||||
|
||||
get_tox();
|
||||
bootstrapDht(true); // reset this func
|
||||
make_tox();
|
||||
|
||||
Settings::getInstance().setCurrentProfile(profile);
|
||||
loadConfiguration(Settings::getSettingsDirPath() + QDir::separator() + profile + TOX_EXT);
|
||||
if (!loadConfiguration(Settings::getSettingsDirPath() + QDir::separator() + profile + TOX_EXT))
|
||||
{
|
||||
emit failedToStart();
|
||||
toxav_kill(toxav);
|
||||
toxav = nullptr;
|
||||
tox_kill(tox);
|
||||
tox = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
process(); // restarts toxTimer
|
||||
}
|
||||
|
||||
void Core::loadFriends()
|
||||
@ -1028,7 +1237,7 @@ void Core::loadFriends()
|
||||
if (nameSize > 0) {
|
||||
uint8_t *name = new uint8_t[nameSize];
|
||||
if (tox_get_name(tox, ids[i], name) == nameSize) {
|
||||
emit friendUsernameLoaded(ids[i], CString::toString(name, nameSize));
|
||||
emit friendUsernameChanged(ids[i], CString::toString(name, nameSize));
|
||||
}
|
||||
delete[] name;
|
||||
}
|
||||
@ -1037,7 +1246,7 @@ void Core::loadFriends()
|
||||
if (statusMessageSize > 0) {
|
||||
uint8_t *statusMessage = new uint8_t[statusMessageSize];
|
||||
if (tox_get_status_message(tox, ids[i], statusMessage, statusMessageSize) == statusMessageSize) {
|
||||
emit friendStatusMessageLoaded(ids[i], CString::toString(statusMessage, statusMessageSize));
|
||||
emit friendStatusMessageChanged(ids[i], CString::toString(statusMessage, statusMessageSize));
|
||||
}
|
||||
delete[] statusMessage;
|
||||
}
|
||||
@ -1098,10 +1307,10 @@ QList<QString> Core::getGroupPeerNames(int groupId) const
|
||||
return names;
|
||||
}
|
||||
|
||||
int Core::joinGroupchat(int32_t friendnumber, const uint8_t* friend_group_public_key) const
|
||||
int Core::joinGroupchat(int32_t friendnumber, const uint8_t* friend_group_public_key,uint16_t length) const
|
||||
{
|
||||
qDebug() << QString("Trying to join groupchat invite by friend %1").arg(friendnumber);
|
||||
return tox_join_groupchat(tox, friendnumber, friend_group_public_key);
|
||||
return tox_join_groupchat(tox, friendnumber, friend_group_public_key,length);
|
||||
}
|
||||
|
||||
void Core::quitGroupChat(int groupId) const
|
||||
@ -1252,3 +1461,39 @@ QString Core::getFriendAddress(int friendNumber) const
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
QString Core::getFriendUsername(int friendnumber) const
|
||||
{
|
||||
uint8_t name[TOX_MAX_NAME_LENGTH];
|
||||
tox_get_name(tox, friendnumber, name);
|
||||
return CString::toString(name, tox_get_name_size(tox, friendnumber));
|
||||
}
|
||||
|
||||
QList<CString> Core::splitMessage(const QString &message)
|
||||
{
|
||||
QList<CString> splittedMsgs;
|
||||
QByteArray ba_message(message.toUtf8());
|
||||
|
||||
while (ba_message.size() > TOX_MAX_MESSAGE_LENGTH)
|
||||
{
|
||||
int splitPos = ba_message.lastIndexOf(' ', TOX_MAX_MESSAGE_LENGTH - 1);
|
||||
if (splitPos <= 0)
|
||||
{
|
||||
splitPos = TOX_MAX_MESSAGE_LENGTH;
|
||||
if (ba_message[splitPos] & 0x80)
|
||||
{
|
||||
do {
|
||||
splitPos--;
|
||||
} while (!(ba_message[splitPos] & 0x40));
|
||||
}
|
||||
splitPos--;
|
||||
}
|
||||
|
||||
splittedMsgs.push_back(CString(ba_message.left(splitPos + 1)));
|
||||
ba_message = ba_message.mid(splitPos + 1);
|
||||
}
|
||||
|
||||
splittedMsgs.push_back(CString(ba_message));
|
||||
|
||||
return splittedMsgs;
|
||||
}
|
||||
|
45
core.h
@ -28,6 +28,7 @@ template <typename T> class QList;
|
||||
class Camera;
|
||||
class QTimer;
|
||||
class QString;
|
||||
class CString;
|
||||
|
||||
class Core : public QObject
|
||||
{
|
||||
@ -43,7 +44,8 @@ public:
|
||||
QString getGroupPeerName(int groupId, int peerId) const;
|
||||
QList<QString> getGroupPeerNames(int groupId) const;
|
||||
QString getFriendAddress(int friendNumber) const;
|
||||
int joinGroupchat(int32_t friendnumber, const uint8_t* friend_group_public_key) const;
|
||||
QString getFriendUsername(int friendNumber) const;
|
||||
int joinGroupchat(int32_t friendnumber, const uint8_t* friend_group_public_key,uint16_t length) const;
|
||||
void quitGroupChat(int groupId) const;
|
||||
void dispatchVideoFrame(vpx_image img) const;
|
||||
|
||||
@ -55,7 +57,7 @@ public:
|
||||
|
||||
QString getUsername();
|
||||
QString getStatusMessage();
|
||||
QString getSelfId();
|
||||
ToxID getSelfId();
|
||||
|
||||
void increaseVideoBusyness();
|
||||
void decreaseVideoBusyness();
|
||||
@ -63,7 +65,7 @@ public:
|
||||
public slots:
|
||||
void start();
|
||||
void process();
|
||||
void bootstrapDht(bool reset = false);
|
||||
void bootstrapDht();
|
||||
|
||||
void acceptFriendRequest(const QString& userId);
|
||||
void requestFriendship(const QString& friendAddress, const QString& message);
|
||||
@ -76,6 +78,7 @@ public slots:
|
||||
void setStatus(Status status);
|
||||
void setUsername(const QString& username);
|
||||
void setStatusMessage(const QString& message);
|
||||
void setAvatar(uint8_t format, const QByteArray& data);
|
||||
|
||||
void sendMessage(int friendId, const QString& message);
|
||||
void sendGroupMessage(int groupId, const QString& message);
|
||||
@ -102,7 +105,7 @@ signals:
|
||||
void disconnected();
|
||||
|
||||
void friendRequestReceived(const QString& userId, const QString& message);
|
||||
void friendMessageReceived(int friendId, const QString& message);
|
||||
void friendMessageReceived(int friendId, const QString& message, bool isAction);
|
||||
|
||||
void friendAdded(int friendId, const QString& userId);
|
||||
void clearFriends();
|
||||
@ -111,9 +114,8 @@ signals:
|
||||
void friendStatusMessageChanged(int friendId, const QString& message);
|
||||
void friendUsernameChanged(int friendId, const QString& username);
|
||||
void friendTypingChanged(int friendId, bool isTyping);
|
||||
|
||||
void friendStatusMessageLoaded(int friendId, const QString& message);
|
||||
void friendUsernameLoaded(int friendId, const QString& username);
|
||||
void friendAvatarChanged(int friendId, const QPixmap& pic);
|
||||
void friendAvatarRemoved(int friendId);
|
||||
|
||||
void friendAddressGenerated(const QString& friendAddress);
|
||||
|
||||
@ -122,15 +124,17 @@ signals:
|
||||
void friendLastSeenChanged(int friendId, const QDateTime& dateTime);
|
||||
|
||||
void emptyGroupCreated(int groupnumber);
|
||||
void groupInviteReceived(int friendnumber, const uint8_t *group_public_key);
|
||||
void groupMessageReceived(int groupnumber, int friendgroupnumber, const QString& message);
|
||||
void groupInviteReceived(int friendnumber, const uint8_t *group_public_key,uint16_t length);
|
||||
void groupMessageReceived(int groupnumber, const QString& message, const QString& author);
|
||||
void groupNamelistChanged(int groupnumber, int peernumber, uint8_t change);
|
||||
|
||||
void usernameSet(const QString& username);
|
||||
void statusMessageSet(const QString& message);
|
||||
void statusSet(Status status);
|
||||
void selfAvatarChanged(const QPixmap& pic);
|
||||
|
||||
void messageSentResult(int friendId, const QString& message, int messageId);
|
||||
void groupSentResult(int groupId, const QString& message, int result);
|
||||
void actionSentResult(int friendId, const QString& action, int success);
|
||||
|
||||
void failedToAddFriend(const QString& userId);
|
||||
@ -140,9 +144,8 @@ signals:
|
||||
void failedToSetStatus(Status status);
|
||||
void failedToSetTyping(bool typing);
|
||||
|
||||
void actionReceived(int friendId, const QString& acionMessage);
|
||||
|
||||
void failedToStart();
|
||||
void badProxy();
|
||||
|
||||
void fileSendStarted(ToxFile file);
|
||||
void fileReceiveRequested(ToxFile file);
|
||||
@ -154,6 +157,9 @@ signals:
|
||||
void fileTransferPaused(int FriendId, int FileNum, ToxFile::FileDirection direction);
|
||||
void fileTransferInfo(int FriendId, int FileNum, int64_t Filesize, int64_t BytesSent, ToxFile::FileDirection direction);
|
||||
void fileTransferRemotePausedUnpaused(ToxFile file, bool paused);
|
||||
void fileTransferBrokenUnbroken(ToxFile file, bool broken);
|
||||
|
||||
void fileSendFailed(int FriendId, const QString& fname);
|
||||
|
||||
void avInvite(int friendId, int callIndex, bool video);
|
||||
void avStart(int friendId, int callIndex, bool video);
|
||||
@ -177,7 +183,7 @@ private:
|
||||
static void onUserStatusChanged(Tox* tox, int friendId, uint8_t userstatus, void* core);
|
||||
static void onConnectionStatusChanged(Tox* tox, int friendId, uint8_t status, void* core);
|
||||
static void onAction(Tox* tox, int friendId, const uint8_t* cMessage, uint16_t cMessageSize, void* core);
|
||||
static void onGroupInvite(Tox *tox, int friendnumber, const uint8_t *group_public_key, void *userdata);
|
||||
static void onGroupInvite(Tox *tox, int friendnumber, const uint8_t *group_public_key, uint16_t length,void *userdata);
|
||||
static void onGroupMessage(Tox *tox, int groupnumber, int friendgroupnumber, const uint8_t * message, uint16_t length, void *userdata);
|
||||
static void onGroupNamelistChange(Tox *tox, int groupnumber, int peernumber, uint8_t change, void *userdata);
|
||||
static void onFileSendRequestCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, uint64_t filesize,
|
||||
@ -185,6 +191,8 @@ private:
|
||||
static void onFileControlCallback(Tox *tox, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber,
|
||||
uint8_t control_type, const uint8_t *data, uint16_t length, void *core);
|
||||
static void onFileDataCallback(Tox *tox, int32_t friendnumber, uint8_t filenumber, const uint8_t *data, uint16_t length, void *userdata);
|
||||
static void onAvatarInfoCallback(Tox* tox, int32_t friendnumber, uint8_t format, uint8_t *hash, void *userdata);
|
||||
static void onAvatarDataCallback(Tox* tox, int32_t friendnumber, uint8_t format, uint8_t *hash, uint8_t *data, uint32_t datalen, void *userdata);
|
||||
|
||||
static void onAvInvite(void* toxav, int32_t call_index, void* core);
|
||||
static void onAvStart(void* toxav, int32_t call_index, void* core);
|
||||
@ -206,14 +214,11 @@ private:
|
||||
static void playCallVideo(ToxAv* toxav, int32_t callId, vpx_image_t* img, void *user_data);
|
||||
void sendCallVideo(int callId);
|
||||
|
||||
void checkConnection();
|
||||
void onBootstrapTimer();
|
||||
|
||||
void loadConfiguration(QString path);
|
||||
static QString sanitize(QString name);
|
||||
|
||||
void get_tox();
|
||||
bool checkConnection();
|
||||
|
||||
bool loadConfiguration(QString path); // Returns false for a critical error, true otherwise
|
||||
static QString sanitize(QString name);
|
||||
void make_tox();
|
||||
void loadFriends();
|
||||
|
||||
static void sendAllFileData(Core* core, ToxFile* file);
|
||||
@ -221,6 +226,8 @@ private:
|
||||
|
||||
void checkLastOnline(int friendId);
|
||||
|
||||
QList<CString> splitMessage(const QString &message);
|
||||
|
||||
private slots:
|
||||
void onFileTransferFinished(ToxFile file);
|
||||
|
||||
|
@ -273,7 +273,9 @@ void Core::decreaseVideoBusyness()
|
||||
|
||||
void Core::micMuteToggle(int callId)
|
||||
{
|
||||
calls[callId].muteMic = !calls[callId].muteMic;
|
||||
if (calls[callId].active) {
|
||||
calls[callId].muteMic = !calls[callId].muteMic;
|
||||
}
|
||||
}
|
||||
|
||||
void Core::onAvCancel(void* _toxav, int32_t callId, void* core)
|
||||
|
@ -3,9 +3,7 @@
|
||||
|
||||
#define TOXAV_MAX_CALLS 16
|
||||
#define GROUPCHAT_MAX_SIZE 32
|
||||
#define TOX_SAVE_INTERVAL 30*1000
|
||||
#define TOX_FILE_INTERVAL 0
|
||||
#define TOX_BOOTSTRAP_INTERVAL 5*1000
|
||||
#define TOXAV_RINGING_TIME 15
|
||||
|
||||
// TODO: Put that in the settings
|
||||
|
@ -10,6 +10,32 @@ class QTimer;
|
||||
|
||||
enum class Status : int {Online = 0, Away, Busy, Offline};
|
||||
|
||||
#define TOX_ID_PUBLIC_KEY_LENGTH 64
|
||||
#define TOX_ID_NO_SPAM_LENGTH 8
|
||||
#define TOX_ID_CHECKSUM_LENGTH 4
|
||||
|
||||
struct ToxID
|
||||
{
|
||||
QString publicKey;
|
||||
QString noSpam;
|
||||
QString checkSum;
|
||||
|
||||
QString toString() const
|
||||
{
|
||||
return publicKey + noSpam + checkSum;
|
||||
}
|
||||
|
||||
ToxID static fromString(QString id)
|
||||
{
|
||||
ToxID toxID;
|
||||
toxID.publicKey = id.left(TOX_ID_PUBLIC_KEY_LENGTH);
|
||||
toxID.noSpam = id.mid(TOX_ID_PUBLIC_KEY_LENGTH, TOX_ID_NO_SPAM_LENGTH);
|
||||
toxID.checkSum = id.right(TOX_ID_CHECKSUM_LENGTH);
|
||||
return toxID;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
struct DhtServer
|
||||
{
|
||||
QString name;
|
||||
@ -24,7 +50,8 @@ struct ToxFile
|
||||
{
|
||||
STOPPED,
|
||||
PAUSED,
|
||||
TRANSMITTING
|
||||
TRANSMITTING,
|
||||
BROKEN
|
||||
};
|
||||
|
||||
enum FileDirection : bool
|
||||
|
4
debian/control
vendored
@ -3,11 +3,11 @@ Maintainer: John Smith <barrdetwix@gmail.com>
|
||||
Section: misc
|
||||
Priority: optional
|
||||
Standards-Version: 3.9.5
|
||||
Build-Depends: debhelper (>= 9), cdbs, qt5-qmake, qt5-default, libopenal-dev, libopencv-dev, libopus-dev
|
||||
Build-Depends: debhelper (>= 9), cdbs, qt5-qmake, libopenal-dev (>= 1:1.15.1), libopencv-dev (>= 2.4.8), libopus-dev (>= 1.0), qtbase5-dev (>= 5.2), sudo, autoconf, libtool, pkg-config, libvpx-dev
|
||||
|
||||
Package: qtox
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Depends: libc6 (>= 2.17), libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libopenal1 (>= 1.14), libopencv-core2.4, libopencv-highgui2.4, libopus0 (>= 1.0), libqt5core5a (>= 5.2), libqt5gui5 (>= 5.2), libqt5network5 (>= 5.0), libqt5widgets5 (>= 5.2), libqt5xml5 (>= 5.0), libstdc++6 (>= 4.9), libvpx1 (>= 1.0.0)
|
||||
Description: Tox client
|
||||
qTox is a powerful Tox client that follows the Tox design guidelines.
|
||||
Tox is a decentralized and encrypted replacement for Skype, supporting
|
||||
|
2
debian/rules
vendored
@ -3,4 +3,4 @@
|
||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
||||
include /usr/share/cdbs/1/class/qmake.mk
|
||||
|
||||
QMAKE=qmake STATICPKG=YES
|
||||
QMAKE=qmake -qt=5 STATICPKG=YES
|
||||
|
1
debian/source/options
vendored
Normal file
@ -0,0 +1 @@
|
||||
--diff-ignore=libs
|
@ -16,33 +16,49 @@
|
||||
|
||||
#include "filetransferinstance.h"
|
||||
#include "core.h"
|
||||
#include "misc/style.h"
|
||||
#include <math.h>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QBuffer>
|
||||
#include <QDebug>
|
||||
#include <QPainter>
|
||||
|
||||
#define CONTENT_WIDTH 250
|
||||
#define MAX_PREVIEW_SIZE 25*1024*1024
|
||||
|
||||
uint FileTransferInstance::Idconter = 0;
|
||||
|
||||
FileTransferInstance::FileTransferInstance(ToxFile File)
|
||||
: lastUpdate{QDateTime::currentDateTime()}, lastBytesSent{0},
|
||||
: lastBytesSent{0},
|
||||
fileNum{File.fileNum}, friendId{File.friendId}, direction{File.direction}
|
||||
{
|
||||
id = Idconter++;
|
||||
state = tsPending;
|
||||
remotePaused = false;
|
||||
lastUpdateTime = QDateTime::currentDateTime();
|
||||
|
||||
filename = File.fileName;
|
||||
|
||||
// update this whenever you change the font in innerStyle.css
|
||||
QFontMetrics fm(Style::getFont(Style::Small));
|
||||
|
||||
filenameElided = fm.elidedText(filename, Qt::ElideRight, CONTENT_WIDTH);
|
||||
|
||||
size = getHumanReadableSize(File.filesize);
|
||||
speed = "0B/s";
|
||||
eta = "00:00";
|
||||
|
||||
if (File.direction == ToxFile::SENDING)
|
||||
{
|
||||
QImage preview;
|
||||
File.file->seek(0);
|
||||
if (preview.loadFromData(File.file->readAll()))
|
||||
if (File.file->size() <= MAX_PREVIEW_SIZE)
|
||||
{
|
||||
pic = preview.scaledToHeight(50);
|
||||
QImage preview;
|
||||
File.file->seek(0);
|
||||
if (preview.loadFromData(File.file->readAll()))
|
||||
{
|
||||
pic = preview.scaledToHeight(50);
|
||||
}
|
||||
}
|
||||
File.file->seek(0);
|
||||
}
|
||||
@ -63,27 +79,27 @@ void FileTransferInstance::onFileTransferInfo(int FriendId, int FileNum, int64_t
|
||||
return;
|
||||
|
||||
// state = tsProcessing;
|
||||
QDateTime newtime = QDateTime::currentDateTime();
|
||||
int timediff = lastUpdate.secsTo(newtime);
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
if (lastUpdateTime.secsTo(now) < 1) //update every 1s
|
||||
return;
|
||||
|
||||
int timediff = startTime.secsTo(now);
|
||||
if (timediff <= 0)
|
||||
return;
|
||||
qint64 diff = BytesSent - lastBytesSent;
|
||||
if (diff < 0)
|
||||
{
|
||||
qWarning() << "FileTransferInstance::onFileTransferInfo: Negative transfer speed !";
|
||||
diff = 0;
|
||||
}
|
||||
long rawspeed = diff / timediff;
|
||||
|
||||
long rawspeed = BytesSent / timediff;
|
||||
|
||||
speed = getHumanReadableSize(rawspeed)+"/s";
|
||||
size = getHumanReadableSize(Filesize);
|
||||
totalBytes = Filesize;
|
||||
if (!rawspeed)
|
||||
return;
|
||||
int etaSecs = (Filesize - BytesSent) / rawspeed;
|
||||
QTime etaTime(0,0);
|
||||
etaTime = etaTime.addSecs(etaSecs);
|
||||
eta = etaTime.toString("mm:ss");
|
||||
lastUpdate = newtime;
|
||||
lastBytesSent = BytesSent;
|
||||
lastUpdateTime = now;
|
||||
emit stateUpdated();
|
||||
}
|
||||
|
||||
@ -107,7 +123,7 @@ void FileTransferInstance::onFileTransferFinished(ToxFile File)
|
||||
{
|
||||
QImage preview;
|
||||
QFile previewFile(File.filePath);
|
||||
if (previewFile.open(QIODevice::ReadOnly) && previewFile.size() <= 1024*1024*25) // Don't preview big (>25MiB) images
|
||||
if (previewFile.open(QIODevice::ReadOnly) && previewFile.size() <= MAX_PREVIEW_SIZE) // Don't preview big (>25MiB) images
|
||||
{
|
||||
if (preview.loadFromData(previewFile.readAll()))
|
||||
{
|
||||
@ -129,6 +145,7 @@ void FileTransferInstance::onFileTransferAccepted(ToxFile File)
|
||||
|
||||
remotePaused = false;
|
||||
state = tsProcessing;
|
||||
startTime = QDateTime::currentDateTime();
|
||||
|
||||
emit stateUpdated();
|
||||
}
|
||||
@ -188,7 +205,7 @@ void FileTransferInstance::acceptRecvRequest()
|
||||
QString path;
|
||||
while (true)
|
||||
{
|
||||
path = QFileDialog::getSaveFileName(0, tr("Save a file","Title of the file saving dialog"), QDir::current().filePath(filename));
|
||||
path = QFileDialog::getSaveFileName(0, tr("Save a file","Title of the file saving dialog"), QDir::home().filePath(filename));
|
||||
if (path.isEmpty())
|
||||
return;
|
||||
else
|
||||
@ -208,6 +225,8 @@ void FileTransferInstance::acceptRecvRequest()
|
||||
Core::getInstance()->acceptFileRecvRequest(friendId, fileNum, path);
|
||||
state = tsProcessing;
|
||||
|
||||
startTime = QDateTime::currentDateTime();
|
||||
|
||||
emit stateUpdated();
|
||||
}
|
||||
|
||||
@ -277,6 +296,12 @@ QString FileTransferInstance::getHtmlImage()
|
||||
rightBtnImg = QImage(":/ui/fileTransferInstance/pauseGreyFileButton.png");
|
||||
|
||||
res = draw2ButtonsForm("silver", leftBtnImg, rightBtnImg);
|
||||
} else if (state == tsBroken)
|
||||
{
|
||||
QImage leftBtnImg(":/ui/fileTransferInstance/stopFileButton.png");
|
||||
QImage rightBtnImg(":/ui/fileTransferInstance/pauseGreyFileButton.png");
|
||||
|
||||
res = draw2ButtonsForm("red", leftBtnImg, rightBtnImg);
|
||||
} else if (state == tsCanceled)
|
||||
{
|
||||
res = drawButtonlessForm("red");
|
||||
@ -326,7 +351,7 @@ QString FileTransferInstance::drawButtonlessForm(const QString &type)
|
||||
imgBStr = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/emptyRGreenFileButton.png")) + "\">";
|
||||
}
|
||||
|
||||
QString content = "<p>" + filename + "</p><p>" + size + "</p>";
|
||||
QString content = "<p>" + filenameElided + "</p><p>" + size + "</p>";
|
||||
|
||||
return wrapIntoForm(content, type, imgAStr, imgBStr);
|
||||
}
|
||||
@ -352,29 +377,89 @@ QString FileTransferInstance::draw2ButtonsForm(const QString &type, const QImage
|
||||
QString imgBstr = "<img src=\"data:ftrans." + widgetId + ".btnB/png;base64," + QImage2base64(imgB) + "\">";
|
||||
|
||||
QString content;
|
||||
content += "<p>" + filename + "</p>";
|
||||
content += "<p>" + getHumanReadableSize(lastBytesSent) + " / " + size + " (" + speed + " ETA: " + eta + ")</p>\n";
|
||||
QString progrBar = "<img src=\"data:progressbar." + widgetId + "/png;base64," + QImage2base64(drawProgressBarImg(double(lastBytesSent)/totalBytes, CONTENT_WIDTH, 9)) + "\">";
|
||||
|
||||
content = "<p>" + filenameElided + "</p>";
|
||||
content += "<table cellspacing=\"0\"><tr>";
|
||||
content += "<td>" + size + "</td>";
|
||||
content += "<td align=center>" + speed + "</td>";
|
||||
content += "<td align=right>ETA: " + eta + "</td>";
|
||||
content += "</tr><tr><td colspan=3>";
|
||||
content += progrBar;
|
||||
content += "</td></tr></table>";
|
||||
|
||||
return wrapIntoForm(content, type, imgAstr, imgBstr);
|
||||
}
|
||||
|
||||
QString FileTransferInstance::wrapIntoForm(const QString& content, const QString &type, const QString &imgAstr, const QString &imgBstr)
|
||||
{
|
||||
QString res;
|
||||
QString w = QString::number(QImage(":/ui/fileTransferInstance/emptyLRedFileButton.png").size().width());
|
||||
QString imgLeftA, imgLeftB;
|
||||
|
||||
res = "<table widht=100% cellspacing=\"0\">\n";
|
||||
if (type == "green")
|
||||
{
|
||||
imgLeftA = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/emptyLGreenFileButton.png").mirrored(true,false)) + "\">";
|
||||
imgLeftB = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/emptyLGreenFileButton.png").mirrored(true,true)) + "\">";
|
||||
}
|
||||
|
||||
if (type == "silver")
|
||||
{
|
||||
imgLeftA = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/sliverRTEdge.png").mirrored(true,false)) + "\">";
|
||||
imgLeftB = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/sliverRTEdge.png").mirrored(true,true)) + "\">";
|
||||
}
|
||||
|
||||
if (type == "red")
|
||||
{
|
||||
imgLeftA = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/emptyLRedFileButton.png").mirrored(true,false)) + "\">";
|
||||
imgLeftB = "<img src=\"data:placeholder/png;base64," + QImage2base64(QImage(":/ui/fileTransferInstance/emptyLRedFileButton.png").mirrored(true,true)) + "\">";
|
||||
}
|
||||
|
||||
QString res;
|
||||
res = "<table cellspacing=\"0\">\n";
|
||||
res += "<tr valign=middle>\n";
|
||||
res += "<td width=" + w + ">\n";
|
||||
res += "<div class=button>" + imgLeftA + "<br>" + imgLeftB + "</div>\n";
|
||||
res += "</td>\n";
|
||||
res += insertMiniature(type);
|
||||
res += "<td width=100%>\n";
|
||||
res += "<td width=" + QString::number(CONTENT_WIDTH + 30) + ">\n";
|
||||
res += "<div class=" + type + ">";
|
||||
res += content;
|
||||
res += "</div>\n";
|
||||
res += "</td>\n";
|
||||
res += "<td>\n";
|
||||
res += "<div class=button>" + imgAstr + "<br>" + imgBstr+ "</div>\n";
|
||||
res += "<div class=button>" + imgAstr + "<br>" + imgBstr + "</div>\n";
|
||||
res += "</td>\n";
|
||||
res += "</tr>\n";
|
||||
res += "</table>\n";
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
QImage FileTransferInstance::drawProgressBarImg(const double &part, int w, int h)
|
||||
{
|
||||
QImage progressBar(w, h, QImage::Format_Mono);
|
||||
|
||||
QPainter qPainter(&progressBar);
|
||||
qPainter.setBrush(Qt::NoBrush);
|
||||
qPainter.setPen(Qt::black);
|
||||
qPainter.drawRect(0, 0, w - 1, h - 1);
|
||||
|
||||
qPainter.setBrush(Qt::SolidPattern);
|
||||
qPainter.setPen(Qt::black);
|
||||
qPainter.drawRect(1, 0, (w - 2) * (part), h - 1);
|
||||
|
||||
return progressBar;
|
||||
}
|
||||
|
||||
void FileTransferInstance::onFileTransferBrokenUnbroken(ToxFile File, bool broken)
|
||||
{
|
||||
if (File.fileNum != fileNum || File.friendId != friendId || File.direction != direction)
|
||||
return;
|
||||
|
||||
if (broken)
|
||||
state = tsBroken;
|
||||
else
|
||||
state = tsProcessing;
|
||||
|
||||
emit stateUpdated();
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ class FileTransferInstance : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum TransfState {tsPending, tsProcessing, tsPaused, tsFinished, tsCanceled};
|
||||
enum TransfState {tsPending, tsProcessing, tsPaused, tsFinished, tsCanceled, tsBroken};
|
||||
|
||||
public:
|
||||
explicit FileTransferInstance(ToxFile File);
|
||||
@ -43,6 +43,7 @@ public slots:
|
||||
void onFileTransferAccepted(ToxFile File);
|
||||
void onFileTransferPaused(int FriendId, int FileNum, ToxFile::FileDirection Direction);
|
||||
void onFileTransferRemotePausedUnpaused(ToxFile File, bool paused);
|
||||
void onFileTransferBrokenUnbroken(ToxFile File, bool broken);
|
||||
void pressFromHtml(QString);
|
||||
|
||||
signals:
|
||||
@ -62,6 +63,7 @@ private:
|
||||
QString draw2ButtonsForm(const QString &type, const QImage &imgA, const QImage &imgB);
|
||||
QString insertMiniature(const QString &type);
|
||||
QString wrapIntoForm(const QString &content, const QString &type, const QString &imgAstr, const QString &imgBstr);
|
||||
QImage drawProgressBarImg(const double &part, int w, int h);
|
||||
|
||||
private:
|
||||
static uint Idconter;
|
||||
@ -71,8 +73,9 @@ private:
|
||||
bool remotePaused;
|
||||
QImage pic;
|
||||
QString filename, size, speed, eta;
|
||||
QDateTime lastUpdate;
|
||||
long long lastBytesSent;
|
||||
QString filenameElided;
|
||||
QDateTime startTime, lastUpdateTime;
|
||||
long long lastBytesSent, totalBytes;
|
||||
int fileNum;
|
||||
int friendId;
|
||||
QString savePath;
|
||||
|
@ -36,19 +36,17 @@ Friend::~Friend()
|
||||
|
||||
void Friend::setName(QString name)
|
||||
{
|
||||
widget->name.setText(name);
|
||||
widget->name.setToolTip(name); // for overlength names
|
||||
widget->setName(name);
|
||||
chatForm->setName(name);
|
||||
}
|
||||
|
||||
void Friend::setStatusMessage(QString message)
|
||||
{
|
||||
widget->statusMessage.setText(message);
|
||||
widget->statusMessage.setToolTip(message); // for overlength messsages
|
||||
widget->setStatusMsg(message);
|
||||
chatForm->setStatusMessage(message);
|
||||
}
|
||||
|
||||
QString Friend::getName()
|
||||
{
|
||||
return widget->name.text();
|
||||
return widget->getName();
|
||||
}
|
||||
|
57
group.cpp
@ -24,16 +24,14 @@
|
||||
#include <QTimer>
|
||||
|
||||
Group::Group(int GroupId, QString Name)
|
||||
: groupId(GroupId), nPeers{0}, hasPeerInfo{false}, peerInfoTimer{new QTimer}
|
||||
: groupId(GroupId), nPeers{0}
|
||||
{
|
||||
widget = new GroupWidget(groupId, Name);
|
||||
chatForm = new GroupChatForm(this);
|
||||
connect(peerInfoTimer, SIGNAL(timeout()), this, SLOT(queryPeerInfo()));
|
||||
peerInfoTimer->setInterval(500);
|
||||
peerInfoTimer->setSingleShot(false);
|
||||
//peerInfoTimer.start();
|
||||
|
||||
//in groupchats, we only notify on messages containing your name
|
||||
//in groupchats, we only notify on messages containing your name <-- dumb
|
||||
// sound notifications should be on all messages, but system popup notification
|
||||
// on naming is appropriate
|
||||
hasNewMessages = 0;
|
||||
userWasMentioned = 0;
|
||||
}
|
||||
@ -42,53 +40,6 @@ Group::~Group()
|
||||
{
|
||||
delete chatForm;
|
||||
delete widget;
|
||||
delete peerInfoTimer;
|
||||
}
|
||||
|
||||
void Group::queryPeerInfo()
|
||||
{
|
||||
const Core* core = Core::getInstance();
|
||||
int nPeersResult = core->getGroupNumberPeers(groupId);
|
||||
if (nPeersResult == -1)
|
||||
{
|
||||
qDebug() << "Group::queryPeerInfo: Can't get number of peers";
|
||||
return;
|
||||
}
|
||||
nPeers = nPeersResult;
|
||||
widget->onUserListChanged();
|
||||
chatForm->onUserListChanged();
|
||||
|
||||
if (nPeersResult == 0)
|
||||
return;
|
||||
|
||||
bool namesOk = true;
|
||||
QList<QString> names = core->getGroupPeerNames(groupId);
|
||||
if (names.isEmpty())
|
||||
{
|
||||
qDebug() << "Group::queryPeerInfo: Can't get names of peers";
|
||||
return;
|
||||
}
|
||||
for (int i=0; i<names.size(); i++)
|
||||
{
|
||||
QString name = names[i];
|
||||
if (name.isEmpty())
|
||||
{
|
||||
name = "<Unknown>";
|
||||
namesOk = false;
|
||||
}
|
||||
peers[i] = name;
|
||||
}
|
||||
nPeers = names.size();
|
||||
|
||||
widget->onUserListChanged();
|
||||
chatForm->onUserListChanged();
|
||||
|
||||
if (namesOk)
|
||||
{
|
||||
qDebug() << "Group::queryPeerInfo: Successfully loaded names";
|
||||
hasPeerInfo = true;
|
||||
peerInfoTimer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
void Group::addPeer(int peerId, QString name)
|
||||
|
6
group.h
@ -25,7 +25,6 @@
|
||||
struct Friend;
|
||||
class GroupWidget;
|
||||
class GroupChatForm;
|
||||
class QTimer;
|
||||
|
||||
class Group : public QObject
|
||||
{
|
||||
@ -37,17 +36,12 @@ public:
|
||||
void removePeer(int peerId);
|
||||
void updatePeer(int peerId, QString newName);
|
||||
|
||||
private slots:
|
||||
void queryPeerInfo();
|
||||
|
||||
public:
|
||||
int groupId;
|
||||
QMap<int,QString> peers;
|
||||
int nPeers;
|
||||
GroupWidget* widget;
|
||||
GroupChatForm* chatForm;
|
||||
bool hasPeerInfo;
|
||||
QTimer* peerInfoTimer;
|
||||
int hasNewMessages, userWasMentioned;
|
||||
};
|
||||
|
||||
|
BIN
img/avatar_mask.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
img/contact.png
Before Width: | Height: | Size: 790 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 1.5 KiB |
BIN
img/group.png
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 1.6 KiB |
BIN
img/group_2x.png
Normal file
After Width: | Height: | Size: 512 B |
Before Width: | Height: | Size: 671 B After Width: | Height: | Size: 2.2 KiB |
BIN
img/icons/qtox-128x128.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
img/icons/qtox-14x14.png
Normal file
After Width: | Height: | Size: 480 B |
BIN
img/icons/qtox-16x16.png
Normal file
After Width: | Height: | Size: 563 B |
BIN
img/icons/qtox-192x192.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
img/icons/qtox-22x22.png
Normal file
After Width: | Height: | Size: 689 B |
BIN
img/icons/qtox-24x24.png
Normal file
After Width: | Height: | Size: 784 B |
BIN
img/icons/qtox-256x256.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
img/icons/qtox-32x32.png
Normal file
After Width: | Height: | Size: 937 B |
BIN
img/icons/qtox-36x36.png
Normal file
After Width: | Height: | Size: 978 B |
BIN
img/icons/qtox-48x48.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
img/icons/qtox-512x512.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
img/icons/qtox-64x64.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
img/icons/qtox-72x72.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
img/icons/qtox-96x96.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
4
img/icons/qtox.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<path d="m80 31 48-15 42 15v205h-90z" fill="#FFF" fill-opacity="0.33"/>
|
||||
<path d="m128.06-0.25c-31.017-0.0007-62.06 20.75-62.06 62.25v30h-16c-17.944 0-29 12.35-29 30v104c0 18.08 11.941 29.94 30 30l154 0.5c17.98 0.06 30-12.48 30-30.5v-104c0-17.94-12.07-30.583-30-30h-15l0.03-30c0.05-41.497-30.95-62.249-61.97-62.25zm-0.06 25.25c21.06 0 36 15.484 36 35 0 20.467-8 40-36 50 5-8 7-11 8-19-29 3-44-12.2-44-31s14.94-35 36-35zm0 96c14.86 0 27 11.87 27 27s-11 22.98-17.44 25.25 25.44 7.75 25.44 34.75v11c0 6-4 10-10 10h-51c-6 0-10-4-10-10v-11c0-27 26.38-34.72 26.38-34.72-5.39-1.27-17.38-10.28-17.38-25.28s12.14-27 27-27z" fill="#252325"/>
|
||||
</svg>
|
After Width: | Height: | Size: 902 B |
BIN
img/settings/av.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
img/settings/general.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
img/settings/identity.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
img/settings/privacy.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
6
main.cpp
@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
#include "widget/widget.h"
|
||||
#include "settings.h"
|
||||
#include "misc/settings.h"
|
||||
#include <QApplication>
|
||||
#include <QFontDatabase>
|
||||
#include <QTranslator>
|
||||
@ -27,6 +27,10 @@ int main(int argc, char *argv[])
|
||||
a.setApplicationName("qTox");
|
||||
a.setOrganizationName("Tox");
|
||||
|
||||
// Windows platform plugins DLL hell fix
|
||||
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath());
|
||||
a.addLibraryPath("platforms");
|
||||
|
||||
// Load translations
|
||||
QTranslator translator;
|
||||
if (Settings::getInstance().getUseTranslations())
|
||||
|
1519
mainwindow.ui
@ -17,10 +17,23 @@
|
||||
#include "cstring.h"
|
||||
#include <QString>
|
||||
|
||||
CString::CString(const QString& string)
|
||||
CString::CString(const QString& string) :
|
||||
CString(string.toUtf8())
|
||||
{
|
||||
cString = new uint8_t[string.length() * MAX_SIZE_OF_UTF8_ENCODED_CHARACTER]();
|
||||
cStringSize = fromString(string, cString);
|
||||
}
|
||||
|
||||
CString::CString(const QByteArray& ba_string)
|
||||
{
|
||||
cString = new uint8_t[ba_string.size()]();
|
||||
cStringSize = ba_string.size();
|
||||
memcpy(cString, reinterpret_cast<const uint8_t*>(ba_string.data()), cStringSize);
|
||||
}
|
||||
|
||||
CString::CString(const CString &cstr)
|
||||
{
|
||||
cStringSize = cstr.cStringSize;
|
||||
cString = new uint8_t[cStringSize]();
|
||||
memcpy(cString, cstr.cString, cStringSize);
|
||||
}
|
||||
|
||||
CString::~CString()
|
@ -20,24 +20,26 @@
|
||||
#include <cstdint>
|
||||
|
||||
class QString;
|
||||
class QByteArray;
|
||||
|
||||
class CString
|
||||
{
|
||||
public:
|
||||
explicit CString(const QString& string);
|
||||
explicit CString(const QByteArray& ba_string);
|
||||
explicit CString(const CString& cstr);
|
||||
~CString();
|
||||
|
||||
uint8_t* data();
|
||||
uint16_t size();
|
||||
|
||||
static QString toString(const uint8_t* cMessage, const uint16_t cMessageSize);
|
||||
static uint16_t fromString(const QString& message, uint8_t* cMessage);
|
||||
|
||||
private:
|
||||
const static int MAX_SIZE_OF_UTF8_ENCODED_CHARACTER = 4;
|
||||
|
||||
uint8_t* cString;
|
||||
uint16_t cStringSize;
|
||||
|
||||
static uint16_t fromString(const QString& message, uint8_t* cMessage);
|
||||
};
|
||||
#endif // CSTRING_H
|
@ -110,7 +110,11 @@ void Settings::load()
|
||||
enableIPv6 = s.value("enableIPv6", true).toBool();
|
||||
useTranslations = s.value("useTranslations", true).toBool();
|
||||
makeToxPortable = s.value("makeToxPortable", false).toBool();
|
||||
currentProfile = s.value("currentProfile", "").toString();
|
||||
forceTCP = s.value("forceTCP", false).toBool();
|
||||
useProxy = s.value("useProxy", false).toBool();
|
||||
proxyAddr = s.value("proxyAddr", "").toString();
|
||||
proxyPort = s.value("proxyPort", 0).toInt();
|
||||
currentProfile = s.value("currentProfile", "").toString();
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("Widgets");
|
||||
@ -131,7 +135,6 @@ void Settings::load()
|
||||
timestampFormat = s.value("timestampFormat", "hh:mm").toString();
|
||||
minimizeOnClose = s.value("minimizeOnClose", false).toBool();
|
||||
useNativeStyle = s.value("nativeStyle", false).toBool();
|
||||
useNativeDecoration = s.value("nativeDecoration", true).toBool();
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("State");
|
||||
@ -211,6 +214,10 @@ void Settings::save(QString path)
|
||||
s.setValue("enableIPv6", enableIPv6);
|
||||
s.setValue("useTranslations",useTranslations);
|
||||
s.setValue("makeToxPortable",makeToxPortable);
|
||||
s.setValue("useProxy", useProxy);
|
||||
s.setValue("forceTCP", forceTCP);
|
||||
s.setValue("proxyAddr", proxyAddr);
|
||||
s.setValue("proxyPort", proxyPort);
|
||||
s.setValue("currentProfile", currentProfile);
|
||||
s.endGroup();
|
||||
|
||||
@ -232,7 +239,6 @@ void Settings::save(QString path)
|
||||
s.setValue("timestampFormat", timestampFormat);
|
||||
s.setValue("minimizeOnClose", minimizeOnClose);
|
||||
s.setValue("nativeStyle", useNativeStyle);
|
||||
s.setValue("nativeDecoration", useNativeDecoration);
|
||||
s.endGroup();
|
||||
|
||||
s.beginGroup("State");
|
||||
@ -259,6 +265,58 @@ QString Settings::getSettingsDirPath()
|
||||
#endif
|
||||
}
|
||||
|
||||
QPixmap Settings::getSavedAvatar(const QString &ownerId)
|
||||
{
|
||||
QDir dir(getSettingsDirPath());
|
||||
QString filePath = dir.filePath("avatars/"+ownerId.left(64)+".png");
|
||||
QFileInfo info(filePath);
|
||||
QPixmap pic;
|
||||
if (!info.exists())
|
||||
{
|
||||
QString filePath = dir.filePath("avatar_"+ownerId.left(64));
|
||||
if (!QFileInfo(filePath).exists()) // try without truncation, for old self avatars
|
||||
filePath = dir.filePath("avatar_"+ownerId);
|
||||
pic.load(filePath);
|
||||
saveAvatar(pic, ownerId);
|
||||
QFile::remove(filePath);
|
||||
}
|
||||
else
|
||||
pic.load(filePath);
|
||||
return pic;
|
||||
}
|
||||
|
||||
void Settings::saveAvatar(QPixmap& pic, const QString& ownerId)
|
||||
{
|
||||
QDir dir(getSettingsDirPath());
|
||||
dir.mkdir("avatars/");
|
||||
// ignore nospam (good idea, and also the addFriend funcs which call getAvatar don't have it)
|
||||
QString filePath = dir.filePath("avatars/"+ownerId.left(64)+".png");
|
||||
pic.save(filePath, "png");
|
||||
}
|
||||
|
||||
void Settings::saveAvatarHash(const QByteArray& hash, const QString& ownerId)
|
||||
{
|
||||
QDir dir(getSettingsDirPath());
|
||||
dir.mkdir("avatars/");
|
||||
QFile file(dir.filePath("avatars/"+ownerId.left(64)+".hash"));
|
||||
if (!file.open(QIODevice::WriteOnly))
|
||||
return;
|
||||
file.write(hash);
|
||||
file.close();
|
||||
}
|
||||
|
||||
QByteArray Settings::getAvatarHash(const QString& ownerId)
|
||||
{
|
||||
QDir dir(getSettingsDirPath());
|
||||
dir.mkdir("avatars/");
|
||||
QFile file(dir.filePath("avatars/"+ownerId.left(64)+".hash"));
|
||||
if (!file.open(QIODevice::ReadOnly))
|
||||
return QByteArray();
|
||||
QByteArray out = file.readAll();
|
||||
file.close();
|
||||
return out;
|
||||
}
|
||||
|
||||
const QList<Settings::DhtServer>& Settings::getDhtServerList() const
|
||||
{
|
||||
return dhtServerList;
|
||||
@ -313,6 +371,45 @@ void Settings::setUseTranslations(bool newValue)
|
||||
useTranslations = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getForceTCP() const
|
||||
{
|
||||
return forceTCP;
|
||||
}
|
||||
|
||||
void Settings::setForceTCP(bool newValue)
|
||||
{
|
||||
forceTCP = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getUseProxy() const
|
||||
{
|
||||
return useProxy;
|
||||
}
|
||||
void Settings::setUseProxy(bool newValue)
|
||||
{
|
||||
useProxy = newValue;
|
||||
}
|
||||
|
||||
QString Settings::getProxyAddr() const
|
||||
{
|
||||
return proxyAddr;
|
||||
}
|
||||
|
||||
void Settings::setProxyAddr(const QString& newValue)
|
||||
{
|
||||
proxyAddr = newValue;
|
||||
}
|
||||
|
||||
int Settings::getProxyPort() const
|
||||
{
|
||||
return proxyPort;
|
||||
}
|
||||
|
||||
void Settings::setProxyPort(int newValue)
|
||||
{
|
||||
proxyPort = newValue;
|
||||
}
|
||||
|
||||
bool Settings::getEnableLogging() const
|
||||
{
|
||||
return enableLogging;
|
||||
@ -438,16 +535,6 @@ void Settings::setUseNativeStyle(bool value)
|
||||
useNativeStyle = value;
|
||||
}
|
||||
|
||||
bool Settings::getUseNativeDecoration() const
|
||||
{
|
||||
return useNativeDecoration;
|
||||
}
|
||||
|
||||
void Settings::setUseNativeDecoration(bool value)
|
||||
{
|
||||
useNativeDecoration = value;
|
||||
}
|
||||
|
||||
QByteArray Settings::getWindowGeometry() const
|
||||
{
|
||||
return windowGeometry;
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include <QHash>
|
||||
#include <QObject>
|
||||
#include <QPixmap>
|
||||
|
||||
class Settings : public QObject
|
||||
{
|
||||
@ -54,12 +55,30 @@ public:
|
||||
bool getUseTranslations() const;
|
||||
void setUseTranslations(bool newValue);
|
||||
|
||||
bool getForceTCP() const;
|
||||
void setForceTCP(bool newValue);
|
||||
|
||||
QString getProxyAddr() const;
|
||||
void setProxyAddr(const QString& newValue);
|
||||
|
||||
bool getUseProxy() const;
|
||||
void setUseProxy(bool newValue);
|
||||
|
||||
int getProxyPort() const;
|
||||
void setProxyPort(int newValue);
|
||||
|
||||
bool getEnableLogging() const;
|
||||
void setEnableLogging(bool newValue);
|
||||
|
||||
bool getEncryptLogs() const;
|
||||
void setEncryptLogs(bool newValue);
|
||||
|
||||
QPixmap getSavedAvatar(const QString& ownerId);
|
||||
void saveAvatar(QPixmap& pic, const QString& ownerId);
|
||||
|
||||
QByteArray getAvatarHash(const QString& ownerId);
|
||||
void saveAvatarHash(const QByteArray& hash, const QString& ownerId);
|
||||
|
||||
// Assume all widgets have unique names
|
||||
// Don't use it to save every single thing you want to save, use it
|
||||
// for some general purpose widgets, such as MainWindows or Splitters,
|
||||
@ -117,9 +136,6 @@ public:
|
||||
bool getUseNativeStyle() const;
|
||||
void setUseNativeStyle(bool value);
|
||||
|
||||
bool getUseNativeDecoration() const;
|
||||
void setUseNativeDecoration(bool value);
|
||||
|
||||
QByteArray getWindowGeometry() const;
|
||||
void setWindowGeometry(const QByteArray &value);
|
||||
|
||||
@ -152,6 +168,13 @@ private:
|
||||
bool enableIPv6;
|
||||
bool useTranslations;
|
||||
static bool makeToxPortable;
|
||||
|
||||
bool forceTCP;
|
||||
|
||||
bool useProxy;
|
||||
QString proxyAddr;
|
||||
int proxyPort;
|
||||
|
||||
QString currentProfile;
|
||||
|
||||
bool enableLogging;
|
||||
@ -167,7 +190,6 @@ private:
|
||||
int emojiFontPointSize;
|
||||
bool minimizeOnClose;
|
||||
bool useNativeStyle;
|
||||
bool useNativeDecoration;
|
||||
QByteArray windowGeometry;
|
||||
QByteArray windowState;
|
||||
QByteArray splitterState;
|
||||
@ -182,7 +204,7 @@ private:
|
||||
|
||||
signals:
|
||||
//void dataChanged();
|
||||
void dhtServerListChanged(bool reset = false);
|
||||
void dhtServerListChanged();
|
||||
void logStorageOptsChanged();
|
||||
void smileyPackChanged();
|
||||
void emojiFontChanged();
|
@ -40,24 +40,38 @@ SmileyPack& SmileyPack::getInstance()
|
||||
return smileyPack;
|
||||
}
|
||||
|
||||
QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QString &path)
|
||||
QList<QPair<QString, QString> > SmileyPack::listSmileyPacks(const QStringList &paths)
|
||||
{
|
||||
QList<QPair<QString, QString> > smileyPacks;
|
||||
|
||||
QDir dir(path);
|
||||
foreach (const QString& subdirectory, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
|
||||
for (QString path : paths)
|
||||
{
|
||||
dir.cd(subdirectory);
|
||||
if (path.leftRef(1) == "~")
|
||||
path.replace(0, 1, QDir::homePath());
|
||||
|
||||
QFileInfoList entries = dir.entryInfoList(QStringList() << "emoticons.xml", QDir::Files);
|
||||
if (entries.size() > 0) // does it contain a file called emoticons.xml?
|
||||
QDir dir(path);
|
||||
if (!dir.exists())
|
||||
continue;
|
||||
|
||||
for (const QString& subdirectory : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
|
||||
{
|
||||
QString packageName = dir.dirName();
|
||||
QString relPath = QDir(QCoreApplication::applicationDirPath()).relativeFilePath(entries[0].absoluteFilePath());
|
||||
smileyPacks << QPair<QString, QString>(packageName, relPath);
|
||||
}
|
||||
dir.cd(subdirectory);
|
||||
|
||||
dir.cdUp();
|
||||
QFileInfoList entries = dir.entryInfoList(QStringList() << "emoticons.xml", QDir::Files);
|
||||
if (entries.size() > 0) // does it contain a file called emoticons.xml?
|
||||
{
|
||||
QString packageName = dir.dirName();
|
||||
QString absPath = entries[0].absoluteFilePath();
|
||||
QString relPath = QDir(QCoreApplication::applicationDirPath()).relativeFilePath(absPath);
|
||||
|
||||
if (relPath.leftRef(2) == "..")
|
||||
smileyPacks << QPair<QString, QString>(packageName, absPath);
|
||||
else
|
||||
smileyPacks << QPair<QString, QString>(packageName, relPath); // use relative path for subdirectories
|
||||
}
|
||||
|
||||
dir.cdUp();
|
||||
}
|
||||
}
|
||||
|
||||
return smileyPacks;
|
@ -22,7 +22,10 @@
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
#define SMILEYPACK_DEFAULT_PATH "./smileys"
|
||||
#define SMILEYPACK_SEARCH_PATHS \
|
||||
{ \
|
||||
"./smileys", "/usr/share/qtox/smileys", "/usr/share/emoticons", "~/.kde4/share/emoticons", "~/.kde/share/emoticons" \
|
||||
}
|
||||
|
||||
//maps emoticons to smileys
|
||||
class SmileyPack : public QObject
|
||||
@ -30,10 +33,10 @@ class SmileyPack : public QObject
|
||||
Q_OBJECT
|
||||
public:
|
||||
static SmileyPack& getInstance();
|
||||
static QList<QPair<QString, QString>> listSmileyPacks(const QString& path = SMILEYPACK_DEFAULT_PATH);
|
||||
static QList<QPair<QString, QString> > listSmileyPacks(const QStringList& paths = SMILEYPACK_SEARCH_PATHS);
|
||||
static bool isValid(const QString& filename);
|
||||
|
||||
bool load(const QString &filename);
|
||||
bool load(const QString& filename);
|
||||
QString smileyfied(QString msg);
|
||||
QList<QStringList> getEmoticons() const;
|
||||
QString getAsRichText(const QString& key);
|
144
misc/style.cpp
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program 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 COPYING file for more details.
|
||||
*/
|
||||
|
||||
#include "style.h"
|
||||
#include "settings.h"
|
||||
|
||||
#include <QFile>
|
||||
#include <QDebug>
|
||||
#include <QMap>
|
||||
#include <QRegularExpression>
|
||||
#include <QWidget>
|
||||
#include <QStyle>
|
||||
#include <QFontInfo>
|
||||
|
||||
// helper functions
|
||||
QFont appFont(int pixelSize, int weight)
|
||||
{
|
||||
QFont font;
|
||||
font.setPixelSize(pixelSize);
|
||||
font.setWeight(weight);
|
||||
return font;
|
||||
}
|
||||
|
||||
QString qssifyFont(QFont font)
|
||||
{
|
||||
return QString("%1 %2px \"%3\"")
|
||||
.arg(font.weight()*8)
|
||||
.arg(font.pixelSize())
|
||||
.arg(font.family());
|
||||
}
|
||||
|
||||
QString Style::getStylesheet(const QString &filename)
|
||||
{
|
||||
if (!Settings::getInstance().getUseNativeStyle())
|
||||
{
|
||||
QFile file(filename);
|
||||
if (file.open(QFile::ReadOnly | QFile::Text))
|
||||
return resolve(file.readAll());
|
||||
else
|
||||
qWarning() << "Style: Stylesheet " << filename << " not found";
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
QColor Style::getColor(Style::ColorPalette entry)
|
||||
{
|
||||
// colors as defined in
|
||||
// https://github.com/ItsDuke/Tox-UI/blob/master/UI%20GUIDELINES.md
|
||||
static QColor palette[] = {
|
||||
QColor("#6bc260"),
|
||||
QColor("#cebf44"),
|
||||
QColor("#c84e4e"),
|
||||
QColor("#000000"),
|
||||
QColor("#1c1c1c"),
|
||||
QColor("#414141"),
|
||||
QColor("#414141").lighter(120),
|
||||
QColor("#d1d1d1"),
|
||||
QColor("#ffffff"),
|
||||
};
|
||||
|
||||
return palette[entry];
|
||||
}
|
||||
|
||||
QFont Style::getFont(Style::Font font)
|
||||
{
|
||||
// fonts as defined in
|
||||
// https://github.com/ItsDuke/Tox-UI/blob/master/UI%20GUIDELINES.md
|
||||
|
||||
static int defSize = QFontInfo(QFont()).pixelSize();
|
||||
|
||||
static QFont fonts[] = {
|
||||
appFont(defSize + 2, QFont::Bold),
|
||||
appFont(defSize , QFont::Normal),
|
||||
appFont(defSize , QFont::Bold),
|
||||
appFont(defSize - 1, QFont::Normal),
|
||||
appFont(defSize - 1, QFont::Bold),
|
||||
appFont(defSize - 2, QFont::Normal),
|
||||
appFont(defSize - 2, QFont::Light),
|
||||
};
|
||||
|
||||
return fonts[font];
|
||||
}
|
||||
|
||||
QString Style::resolve(QString qss)
|
||||
{
|
||||
static QMap<QString, QString> dict = {
|
||||
// colors
|
||||
{"@green", getColor(Green).name()},
|
||||
{"@yellow", getColor(Yellow).name()},
|
||||
{"@red", getColor(Red).name()},
|
||||
{"@black", getColor(Black).name()},
|
||||
{"@darkGrey", getColor(DarkGrey).name()},
|
||||
{"@mediumGrey", getColor(MediumGrey).name()},
|
||||
{"@mediumGreyLight", getColor(MediumGreyLight).name()},
|
||||
{"@lightGrey", getColor(LightGrey).name()},
|
||||
{"@white", getColor(White).name()},
|
||||
|
||||
// fonts
|
||||
{"@extraBig", qssifyFont(getFont(ExtraBig))},
|
||||
{"@big", qssifyFont(getFont(Big))},
|
||||
{"@bigBold", qssifyFont(getFont(BigBold))},
|
||||
{"@medium", qssifyFont(getFont(Medium))},
|
||||
{"@mediumBold", qssifyFont(getFont(MediumBold))},
|
||||
{"@small", qssifyFont(getFont(Small))},
|
||||
{"@smallLight", qssifyFont(getFont(SmallLight))},
|
||||
};
|
||||
|
||||
for (const QString& key : dict.keys())
|
||||
{
|
||||
qss.replace(QRegularExpression(QString("%1\\b").arg(key)), dict[key]);
|
||||
}
|
||||
|
||||
return qss;
|
||||
}
|
||||
|
||||
void Style::repolish(QWidget *w)
|
||||
{
|
||||
w->style()->unpolish(w);
|
||||
w->style()->polish(w);
|
||||
|
||||
for (QObject* o : w->children())
|
||||
{
|
||||
QWidget* c = qobject_cast<QWidget*>(o);
|
||||
if (c)
|
||||
{
|
||||
c->style()->unpolish(c);
|
||||
c->style()->polish(c);
|
||||
}
|
||||
}
|
||||
}
|
63
misc/style.h
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
Copyright (C) 2014 by Project Tox <https://tox.im>
|
||||
|
||||
This file is part of qTox, a Qt-based graphical interface for Tox.
|
||||
|
||||
This program is libre software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program 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 COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef STYLE_H
|
||||
#define STYLE_H
|
||||
|
||||
#include <QColor>
|
||||
#include <QFont>
|
||||
|
||||
class QString;
|
||||
class QWidget;
|
||||
|
||||
class Style
|
||||
{
|
||||
public:
|
||||
enum ColorPalette
|
||||
{
|
||||
Green,
|
||||
Yellow,
|
||||
Red,
|
||||
Black,
|
||||
DarkGrey,
|
||||
MediumGrey,
|
||||
MediumGreyLight,
|
||||
LightGrey,
|
||||
White,
|
||||
};
|
||||
|
||||
enum Font
|
||||
{
|
||||
ExtraBig, // [SystemDefault + 2]px, bold
|
||||
Big, // [SystemDefault ]px
|
||||
BigBold, // [SystemDefault ]px, bold
|
||||
Medium, // [SystemDefault - 1]px
|
||||
MediumBold, // [SystemDefault - 1]px, bold
|
||||
Small, // [SystemDefault - 2]px
|
||||
SmallLight // [SystemDefault - 2]px, light
|
||||
};
|
||||
|
||||
static QString getStylesheet(const QString& filename);
|
||||
static QColor getColor(ColorPalette entry);
|
||||
static QFont getFont(Font font);
|
||||
static QString resolve(QString qss);
|
||||
static void repolish(QWidget* w);
|
||||
|
||||
private:
|
||||
Style();
|
||||
};
|
||||
|
||||
#endif // STYLE_H
|
12
qTox.desktop
Normal file
@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=qTox
|
||||
GenericName=Tox client
|
||||
Comment=qTox is a powerful Tox client that follows the Tox design guidelines.
|
||||
TryExec=qtox
|
||||
Exec=qtox
|
||||
Icon=qtox
|
||||
Categories=InstantMessaging;;AudioVideo;Network;
|
||||
Terminal=false
|
||||
MimeType=x-scheme-handler/tox;
|
73
qtox.pro
@ -26,13 +26,21 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
TARGET = qtox
|
||||
TEMPLATE = app
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
mainwindow.ui \
|
||||
widget/form/settings/generalsettings.ui \
|
||||
widget/form/settings/avsettings.ui \
|
||||
widget/form/settings/identitysettings.ui
|
||||
CONFIG += c++11
|
||||
|
||||
TRANSLATIONS = translations/de.ts \
|
||||
translations/fr.ts \
|
||||
translations/it.ts \
|
||||
translations/ru.ts
|
||||
translations/ru.ts \
|
||||
translations/pirate.ts \
|
||||
translations/pl.ts \
|
||||
translations/fi.ts \
|
||||
translations/mannol.ts \
|
||||
translations/uk.ts
|
||||
|
||||
RESOURCES += res.qrc
|
||||
|
||||
@ -44,8 +52,9 @@ contains(JENKINS,YES) {
|
||||
|
||||
# Rules for Windows, Mac OSX, and Linux
|
||||
win32 {
|
||||
LIBS += -L$$PWD/libs/lib -llibopencv_core249 -llibopencv_highgui249 -llibopencv_imgproc249 -lOpenAL32
|
||||
LIBS += $$PWD/libs/lib/libtoxav.a $$PWD/libs/lib/libopus.a $$PWD/libs/lib/libvpx.a $$PWD/libs/lib/libtoxcore.a -lws2_32 $$PWD/libs/lib/libsodium.a -lpthread -liphlpapi
|
||||
LIBS += -liphlpapi -L$$PWD/libs/lib -ltoxav -ltoxcore -lvpx -lpthread
|
||||
LIBS += -L$$PWD/libs/lib -lopencv_core248 -lopencv_highgui248 -lopencv_imgproc248 -lOpenAL32 -lopus
|
||||
LIBS += -lz -lopengl32 -lole32 -loleaut32 -luuid -lvfw32 -ljpeg -ltiff -lpng -ljasper -lIlmImf -lHalf -lws2_32
|
||||
} else {
|
||||
macx {
|
||||
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lsodium -lvpx -framework OpenAL -lopencv_core -lopencv_highgui
|
||||
@ -54,7 +63,10 @@ win32 {
|
||||
contains(STATICPKG, YES) {
|
||||
target.path = /usr/bin
|
||||
INSTALLS += target
|
||||
LIBS += -L$$PWD/libs/lib/ -Wl,-Bstatic -ltoxcore -ltoxav -lsodium -Wl,-Bdynamic -lopus -lvpx -lopenal -lopencv_core -lopencv_highgui
|
||||
LIBS += -L$$PWD/libs/lib/ -lopus -lvpx -lopenal -Wl,-Bstatic -ltoxcore -ltoxav -lsodium -lopencv_highgui -lopencv_imgproc -lopencv_core -lz -Wl,-Bdynamic
|
||||
LIBS += -Wl,-Bstatic -ljpeg -ltiff -lpng -ljasper -lIlmImf -lIlmThread -lIex -ldc1394 -lraw1394 -lHalf -lz -llzma -ljbig
|
||||
LIBS += -Wl,-Bdynamic -ltbb -lv4l1 -lv4l2 -lgnutls -lrtmp -lgnutls -lavformat -lavcodec -lavutil -lavfilter -lswscale -lusb-1.0
|
||||
|
||||
} else {
|
||||
LIBS += -L$$PWD/libs/lib/ -ltoxcore -ltoxav -lvpx -lopenal -lopencv_core -lopencv_highgui
|
||||
}
|
||||
@ -79,7 +91,12 @@ win32 {
|
||||
HEADERS += widget/form/addfriendform.h \
|
||||
widget/form/chatform.h \
|
||||
widget/form/groupchatform.h \
|
||||
widget/form/settingsform.h \
|
||||
widget/form/settingswidget.h \
|
||||
widget/form/settings/genericsettings.h \
|
||||
widget/form/settings/generalform.h \
|
||||
widget/form/settings/identityform.h \
|
||||
widget/form/settings/privacyform.h \
|
||||
widget/form/settings/avform.h \
|
||||
widget/form/filesform.h \
|
||||
widget/tool/chattextedit.h \
|
||||
widget/tool/friendrequestdialog.h \
|
||||
@ -89,34 +106,43 @@ HEADERS += widget/form/addfriendform.h \
|
||||
friend.h \
|
||||
group.h \
|
||||
grouplist.h \
|
||||
settings.h \
|
||||
misc/settings.h \
|
||||
core.h \
|
||||
friendlist.h \
|
||||
cdata.h \
|
||||
cstring.h \
|
||||
misc/cdata.h \
|
||||
misc/cstring.h \
|
||||
widget/selfcamview.h \
|
||||
widget/camera.h \
|
||||
widget/netcamview.h \
|
||||
smileypack.h \
|
||||
misc/smileypack.h \
|
||||
widget/emoticonswidget.h \
|
||||
style.h \
|
||||
misc/style.h \
|
||||
widget/adjustingscrollarea.h \
|
||||
widget/croppinglabel.h \
|
||||
widget/friendlistwidget.h \
|
||||
widget/genericchatroomwidget.h \
|
||||
widget/form/genericchatform.h \
|
||||
widget/tool/chataction.h \
|
||||
widget/tool/chatactions/chataction.h \
|
||||
widget/chatareawidget.h \
|
||||
filetransferinstance.h \
|
||||
corestructs.h \
|
||||
coredefines.h \
|
||||
coreav.h
|
||||
coreav.h \
|
||||
widget/tool/chatactions/messageaction.h \
|
||||
widget/tool/chatactions/filetransferaction.h \
|
||||
widget/tool/chatactions/systemmessageaction.h \
|
||||
widget/tool/chatactions/actionaction.h \
|
||||
widget/maskablepixmapwidget.h
|
||||
|
||||
SOURCES += \
|
||||
widget/form/addfriendform.cpp \
|
||||
widget/form/chatform.cpp \
|
||||
widget/form/groupchatform.cpp \
|
||||
widget/form/settingsform.cpp \
|
||||
widget/form/settingswidget.cpp \
|
||||
widget/form/settings/generalform.cpp \
|
||||
widget/form/settings/identityform.cpp \
|
||||
widget/form/settings/privacyform.cpp \
|
||||
widget/form/settings/avform.cpp \
|
||||
widget/form/filesform.cpp \
|
||||
widget/tool/chattextedit.cpp \
|
||||
widget/tool/friendrequestdialog.cpp \
|
||||
@ -129,22 +155,27 @@ SOURCES += \
|
||||
group.cpp \
|
||||
grouplist.cpp \
|
||||
main.cpp \
|
||||
settings.cpp \
|
||||
cdata.cpp \
|
||||
cstring.cpp \
|
||||
misc/settings.cpp \
|
||||
misc/cdata.cpp \
|
||||
misc/cstring.cpp \
|
||||
widget/selfcamview.cpp \
|
||||
widget/camera.cpp \
|
||||
widget/netcamview.cpp \
|
||||
smileypack.cpp \
|
||||
misc/smileypack.cpp \
|
||||
widget/emoticonswidget.cpp \
|
||||
style.cpp \
|
||||
misc/style.cpp \
|
||||
widget/adjustingscrollarea.cpp \
|
||||
widget/croppinglabel.cpp \
|
||||
widget/friendlistwidget.cpp \
|
||||
coreav.cpp \
|
||||
widget/genericchatroomwidget.cpp \
|
||||
widget/form/genericchatform.cpp \
|
||||
widget/tool/chataction.cpp \
|
||||
widget/tool/chatactions/chataction.cpp \
|
||||
widget/chatareawidget.cpp \
|
||||
filetransferinstance.cpp \
|
||||
corestructs.cpp
|
||||
corestructs.cpp \
|
||||
widget/tool/chatactions/messageaction.cpp \
|
||||
widget/tool/chatactions/filetransferaction.cpp \
|
||||
widget/tool/chatactions/systemmessageaction.cpp \
|
||||
widget/tool/chatactions/actionaction.cpp \
|
||||
widget/maskablepixmapwidget.cpp
|
||||
|
29
res.qrc
@ -84,18 +84,6 @@
|
||||
<file>ui/videoButton/videoButtonYellowPressed.png</file>
|
||||
<file>img/group_dark.png</file>
|
||||
<file>ui/window/applicationIcon.png</file>
|
||||
<file>ui/window/closeButton.png</file>
|
||||
<file>ui/window/closeButtonHover.png</file>
|
||||
<file>ui/window/closeButtonPressed.png</file>
|
||||
<file>ui/window/maximizeButton.png</file>
|
||||
<file>ui/window/maximizeButtonHover.png</file>
|
||||
<file>ui/window/maximizeButtonPressed.png</file>
|
||||
<file>ui/window/minimizeButton.png</file>
|
||||
<file>ui/window/minimizeButtonHover.png</file>
|
||||
<file>ui/window/minimizeButtonPressed.png</file>
|
||||
<file>ui/window/restoreButton.png</file>
|
||||
<file>ui/window/restoreButtonHover.png</file>
|
||||
<file>ui/window/restoreButtonPressed.png</file>
|
||||
<file>ui/friendList/friendList.css</file>
|
||||
<file>ui/window/window.css</file>
|
||||
<file>img/status/dot_busy.png</file>
|
||||
@ -135,5 +123,22 @@
|
||||
<file>ui/fileTransferInstance/emptyRGreenFileButton.png</file>
|
||||
<file>ui/fileTransferInstance/emptyRRedFileButton.png</file>
|
||||
<file>audio/notification.pcm</file>
|
||||
<file>audio/ToxicIncomingCall.pcm</file>
|
||||
<file>img/settings/general.png</file>
|
||||
<file>img/settings/identity.png</file>
|
||||
<file>img/settings/privacy.png</file>
|
||||
<file>img/settings/av.png</file>
|
||||
<file>translations/pl.qm</file>
|
||||
<file>translations/fi.qm</file>
|
||||
<file>translations/mannol.qm</file>
|
||||
<file>translations/uk.qm</file>
|
||||
<file>img/avatar_mask.png</file>
|
||||
<file>img/group_2x.png</file>
|
||||
<file>ui/chatroomWidgets/genericChatroomWidget.css</file>
|
||||
<file>ui/fileTransferInstance/sliverRTEdge.png</file>
|
||||
<file>ui/window/statusPanel.css</file>
|
||||
<file>ui/settings/mainContent.css</file>
|
||||
<file>ui/settings/mainHead.css</file>
|
||||
<file>translations/pirate.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
BIN
smileys/default/Kappa.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
@ -82,4 +82,7 @@
|
||||
<string>XD</string>
|
||||
</emoticon>
|
||||
|
||||
<emoticon file="Kappa.png">
|
||||
<string>:Kappa:</string>
|
||||
</emoticon>
|
||||
</messaging-emoticon-map>
|
||||
|
@ -56,9 +56,19 @@ done
|
||||
if [[ $OPT_APT = "true" ]]; then
|
||||
echo "Installing missing tools (if any)..."
|
||||
if [[ $EUID -ne 0 && $OPT_SUDO = "true" ]]; then
|
||||
sudo apt-get install wget debhelper cdbs devscripts alien tar gzip build-essential
|
||||
sudo apt-get install wget debhelper cdbs devscripts alien tar gzip build-essential sudo autoconf libtool pkg-config libvpx-dev -y
|
||||
else
|
||||
apt-get install wget debhelper cdbs devscripts alien tar gzip build-essential
|
||||
apt-get install wget debhelper cdbs devscripts alien tar gzip build-essential sudo autoconf libtool pkg-config libvpx-dev -y
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get the requried dependencies if needed
|
||||
if [[ $OPT_APT = "true" ]]; then
|
||||
echo "Installing missing dependencies (if any)..."
|
||||
if [[ $EUID -ne 0 && $OPT_SUDO = "true" ]]; then
|
||||
sudo apt-get install qt5-qmake libopenal-dev libopencv-dev libopus-dev -y
|
||||
else
|
||||
apt-get install qt5-qmake libopenal-dev libopencv-dev libopus-dev -y
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -77,7 +87,9 @@ mv qTox-master $VERNAME
|
||||
|
||||
# Build packages
|
||||
cd $VERNAME
|
||||
debuild -us -uc
|
||||
./bootstrap.sh --local
|
||||
debuild -us -uc -aamd64
|
||||
debuild -us -uc -ai386
|
||||
cd ..
|
||||
|
||||
# alien warns that it should probably be run as root...
|
||||
|
45
tools/publish.py
Normal file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/python2.7
|
||||
|
||||
from github3 import login, GitHub
|
||||
from getpass import getpass, getuser
|
||||
import time
|
||||
import datetime
|
||||
import sys
|
||||
try:
|
||||
import readline
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
platform=''
|
||||
if (len(sys.argv) >= 3):
|
||||
platform=sys.argv[2]
|
||||
|
||||
versionNumber = str(time.time())
|
||||
if (platform != ''):
|
||||
version = 'qtox-'+platform+'-'+versionNumber
|
||||
else:
|
||||
version = 'qtox-'+versionNumber
|
||||
if (platform == 'windows'):
|
||||
title = 'qTox Windows '+datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
|
||||
elif (platform == 'linux'):
|
||||
title = 'qTox Linux '+datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
|
||||
else:
|
||||
title = 'qTox '+datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
|
||||
user = "tux3"
|
||||
password = ""
|
||||
if password == "":
|
||||
password = getpass('GitHub password for {0}: '.format(user))
|
||||
|
||||
# Obviously you could also prompt for an OAuth token
|
||||
if not (user and password):
|
||||
print("Cowardly refusing to login without a username and password.")
|
||||
sys.exit(1)
|
||||
|
||||
g = login(user, password)
|
||||
repo = g.repository('tux3', 'qTox')
|
||||
release = repo.create_release(version,'master',title,'This is an automated release of qTox, published by qTox\'s continous integration server.',False,False)
|
||||
|
||||
if (len(sys.argv) >= 2):
|
||||
file = open(sys.argv[1], 'r')
|
||||
release.upload_asset('application/octet-stream',sys.argv[1],file)
|
||||
|
@ -1,75 +1,102 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="de_DE">
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="132"/>
|
||||
<source>Video Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="136"/>
|
||||
<location filename="../widget/settingsdialog.cpp" line="163"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="157"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="32"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Freunde hinzufügen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="35"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="36"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Nachricht</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Freundschaftseinladung versenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Lass uns Toxen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="93"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Bitte gib eine gültige Tox ID ein</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="110"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="114"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Fehler beim Auflösen des DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Unererwartete Anzahl von Texteinträgen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Unerwartete Anzahl von Werten innerhalb des Texteintrages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="133"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Der DNS Eintrag enthält keine gültige TOX ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Der DNS Eintrag enthält keine gültige TOX ID</translation>
|
||||
@ -78,74 +105,77 @@
|
||||
<context>
|
||||
<name>Camera</name>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="161"/>
|
||||
<source>Camera eror</source>
|
||||
<translation>Kamerafehler</translation>
|
||||
<translation type="vanished">Kamerafehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="162"/>
|
||||
<source>Camera format %1 not supported, can't use the camera</source>
|
||||
<translation>Kameraformat %1 wird nicht unterstützt. Die Kamera kann nicht verwendet werden</translation>
|
||||
<translation type="vanished">Kameraformat %1 wird nicht unterstützt. Die Kamera kann nicht verwendet werden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="283"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="80"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Datei versenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="620"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="626"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Chatverlauf speichern</translation>
|
||||
<translation type="vanished">Chatverlauf speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CopyableElideLabel</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/copyableelidelabel.cpp" line="29"/>
|
||||
<source>Copy</source>
|
||||
<translation>Kopieren</translation>
|
||||
<translation type="vanished">Kopieren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="281"/>
|
||||
<location filename="../filetransferinstance.cpp" line="191"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Datei speichern</translation>
|
||||
<translation type="unfinished">Datei speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<message>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation type="vanished">Datei speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="25"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="33"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="34"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -189,69 +219,149 @@
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="86"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="84"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Tox ID kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="87"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="85"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>In Gruppe einladen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="97"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="95"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Freund entfernen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="31"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="34"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation type="unfinished">IPv6 aktivieren (empfohlen)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="36"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="38"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="39"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="48"/>
|
||||
<source>Theme</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="49"/>
|
||||
<source>Smiley Pack</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="142"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="148"/>
|
||||
<source>Save chat log</source>
|
||||
<translation type="unfinished">Chatverlauf speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="49"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="41"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 Personen im Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="146"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="83"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Unbekannt></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="215"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="90"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 Personen im Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="234"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Chatverlauf speichern</translation>
|
||||
<translation type="vanished">Chatverlauf speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="54"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="141"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="58"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="100"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 Personen im Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="56"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="143"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="60"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="102"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>0 Personen im Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="84"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="83"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Gruppe verlassen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="82"/>
|
||||
<source>Public Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="83"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation type="unfinished">Benutzername</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="85"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation type="unfinished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="95"/>
|
||||
<source>Tox ID</source>
|
||||
<translation type="unfinished">Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="96"/>
|
||||
<source>Your Tox ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
@ -303,73 +413,81 @@
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="32"/>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Tox Video testen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="197"/>
|
||||
<source>qTox – Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="224"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="230"/>
|
||||
<source>Identity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="236"/>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="242"/>
|
||||
<source>Audio/Video</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="251"/>
|
||||
<source>Ok</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="252"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="253"/>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="34"/>
|
||||
<source>User Settings</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Einstellungen</translation>
|
||||
<translation type="vanished">Einstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="37"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Benutzername</translation>
|
||||
<translation type="vanished">Benutzername</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="38"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Status</translation>
|
||||
<translation type="vanished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="39"/>
|
||||
<source>(click here to copy)</source>
|
||||
<comment>Click on this text to copy TID to clipboard</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="47"/>
|
||||
<source>Test video</source>
|
||||
<comment>Text on a button to test the video/webcam</comment>
|
||||
<translation>Video testen</translation>
|
||||
<translation type="vanished">Video testen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="48"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>IPv6 aktivieren (empfohlen)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="50"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="52"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="54"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="56"/>
|
||||
<source>Smiley Pack</source>
|
||||
<comment>Text on smiley pack label</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="vanished">IPv6 aktivieren (empfohlen)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -395,22 +513,28 @@
|
||||
<translation type="vanished">Strg+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="128"/>
|
||||
<location filename="../widget/widget.cpp" line="133"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation type="unfinished">Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="130"/>
|
||||
<location filename="../widget/widget.cpp" line="135"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation type="unfinished">Abwesend</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="132"/>
|
||||
<location filename="../widget/widget.cpp" line="137"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation type="unfinished">Beschäftigt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="605"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation type="unfinished"><Unbekannt></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
BIN
translations/fi.qm
Normal file
540
translations/fi.ts
Normal file
@ -0,0 +1,540 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="fi_FI">
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="132"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Videoasetukset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="136"/>
|
||||
<location filename="../widget/settingsdialog.cpp" line="163"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Videon esikatselu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="157"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Lopeta esikatselu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Lisää kontakti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Viesti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Lähetä kontaktipyyntö</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Lisää kontakteihin?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Anna kelvollinen Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Et voi lisätä itseäsi kontaktiksi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Osoitetta ei ole olemassa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Virhe DNS pyynnössä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Virheellinen määrä tekstitietueita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Odottamaton määrä tekstitietueita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>DNS vastaus ei sisällä Tox ID:tä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>DNS vastaus ei sisällä kelvollista Tox ID:tä</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Camera</name>
|
||||
<message>
|
||||
<source>Camera eror</source>
|
||||
<translation type="vanished">Kamerafehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Camera format %1 not supported, can't use the camera</source>
|
||||
<translation type="vanished">Kameraformat %1 wird nicht unterstützt. Die Kamera kann nicht verwendet werden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="80"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Lähetä tiedosto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save chat log</source>
|
||||
<translation type="vanished">Chatverlauf speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CopyableElideLabel</name>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation type="vanished">Kopieren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="191"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Tallenna tiedosto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Kohteeseen ei voi tallentaa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Käyttöoikeudet eivät riitä kohteeseen tallentamiseen. Valitse toinen kohde tai peru.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<message>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation type="vanished">Datei speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Tiedostojen siirrot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation>Ladatut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation>Lähetetyt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendRequestDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="30"/>
|
||||
<source>Friend request</source>
|
||||
<comment>Title of the window to aceept/deny a friend request</comment>
|
||||
<translation>Kontaktipyyntö</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="32"/>
|
||||
<source>Someone wants to make friends with you</source>
|
||||
<translation>Sinulle on lähetetty kontaktipyyntö</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="33"/>
|
||||
<source>User ID:</source>
|
||||
<translation>Käyttäjän ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="37"/>
|
||||
<source>Friend request message:</source>
|
||||
<translation>Kontaktipyynnön viesti:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="44"/>
|
||||
<source>Accept</source>
|
||||
<comment>Accept a friend request</comment>
|
||||
<translation>Hyväksy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="45"/>
|
||||
<source>Reject</source>
|
||||
<comment>Reject a friend request</comment>
|
||||
<translation>Hylkää</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="84"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Kopioi kontaktin ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="85"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Kutsu ryhmään</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="95"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Poista kontakti</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="31"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Yleiset asetukset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="34"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>Aktivoi IPv6 (suositeltu)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="36"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation>Käytä käännöksiä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="38"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation>Tee ohjelmasta siirrettävä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="39"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation>Tallenna asetukset työhakemistoon normaalin asetushakemiston sijaan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="48"/>
|
||||
<source>Theme</source>
|
||||
<translation>Teema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="49"/>
|
||||
<source>Smiley Pack</source>
|
||||
<translation>Hymiö-paketti</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="142"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="148"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Tallenna keskustelu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="41"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 henkilö keskustelussa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="83"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Tuntematon></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="90"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 henkilöä keskustelussa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save chat log</source>
|
||||
<translation type="vanished">Chatverlauf speichern</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="58"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="100"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 henkilöä keskustelussa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="60"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="102"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>0 henkilöä keskustelussa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="83"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Sulje ryhmä</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="82"/>
|
||||
<source>Public Information</source>
|
||||
<translation>Julkiset tiedot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="83"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Nimi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="85"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Tila</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="95"/>
|
||||
<source>Tox ID</source>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="96"/>
|
||||
<source>Your Tox ID</source>
|
||||
<translation>Sinun Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1918"/>
|
||||
<source>Your name</source>
|
||||
<translation>Sinun nimesi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2000"/>
|
||||
<source>Your status</source>
|
||||
<translation>Sinun tilasi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2566"/>
|
||||
<source>Add friends</source>
|
||||
<translation>Lisää kontakti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2592"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation>Luo keskusteluryhmä</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2624"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation>Näytä valmiit tiedostojensiirrot</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2656"/>
|
||||
<source>Change your settings</source>
|
||||
<translation>Muuta asetuksiasi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3238"/>
|
||||
<source>Close</source>
|
||||
<translation>Sulje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3241"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Tox videotesti</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="197"/>
|
||||
<source>qTox – Settings</source>
|
||||
<translation>qTox - Asetukset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="224"/>
|
||||
<source>General</source>
|
||||
<translation>Yleiset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="230"/>
|
||||
<source>Identity</source>
|
||||
<translation>Identiteetti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="236"/>
|
||||
<source>Privacy</source>
|
||||
<translation>Yksityisyys</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="242"/>
|
||||
<source>Audio/Video</source>
|
||||
<translation>Audio/Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="251"/>
|
||||
<source>Ok</source>
|
||||
<translation>Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="252"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Peru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="253"/>
|
||||
<source>Apply</source>
|
||||
<translation>Ota käyttöön</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsForm</name>
|
||||
<message>
|
||||
<source>User Settings</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation type="vanished">Einstellungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation type="vanished">Benutzername</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation type="vanished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Test video</source>
|
||||
<comment>Text on a button to test the video/webcam</comment>
|
||||
<translation type="vanished">Video testen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation type="vanished">IPv6 aktivieren (empfohlen)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<source>Tox</source>
|
||||
<translation type="vanished">Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your name</source>
|
||||
<translation type="vanished">Dein Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your status</source>
|
||||
<translation type="vanished">Dein Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation type="vanished">Schließen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="vanished">Strg+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="133"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="135"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Poissa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="137"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Kiireinen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="605"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><tuntematon></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1,75 +1,136 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="fr_FR">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="41"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished">Cacher l'aperçu vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="47"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished">Montrer l'aperçu vidéo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<source>Video Settings</source>
|
||||
<translation type="vanished">Options vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="vanished">Montrer l'aperçu vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="vanished">Cacher l'aperçu vidéo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="20"/>
|
||||
<source>Video settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="26"/>
|
||||
<source>Show video preview</source>
|
||||
<translation type="unfinished">Montrer l'aperçu vidéo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="32"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Ajouter des amis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="35"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>ID Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="36"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Envoyer la demande d'ami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Je souhaiterais vous ajouter à mes contacts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="93"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Merci de remplir un ID Tox valide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="110"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Vous ne pouvez pas vous ajouter vous même en temps qu'ami!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="114"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Cette addresse n'existe pas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Erreur en consultant le serveur DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Nombre d'entrées texte innatendu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Nombre d'entrées numériques dans l'entrée texte innatendu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="133"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>La réponse DNS ne contient aucun ID Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>La réponse DNS ne contient pas d'ID Tox valide</translation>
|
||||
@ -78,76 +139,93 @@
|
||||
<context>
|
||||
<name>Camera</name>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="161"/>
|
||||
<source>Camera eror</source>
|
||||
<translation>Erreur de caméra</translation>
|
||||
<translation type="vanished">Erreur de caméra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="162"/>
|
||||
<source>Camera format %1 not supported, can't use the camera</source>
|
||||
<translation>Format %1 de la caméra non supporté, impossible de l'utiliser</translation>
|
||||
<translation type="vanished">Format %1 de la caméra non supporté, impossible de l'utiliser</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="283"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="105"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Envoyer un fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="620"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="626"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Sauvegarder l'historique de conversation</translation>
|
||||
<translation type="vanished">Sauvegarder l'historique de conversation</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CopyableElideLabel</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/copyableelidelabel.cpp" line="29"/>
|
||||
<source>Copy</source>
|
||||
<translation>Copier</translation>
|
||||
<translation type="vanished">Copier</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="281"/>
|
||||
<location filename="../core.cpp" line="1068"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1069"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="208"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Sauvegarder un fichier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Impossible d'écrire ici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Vous n'avez pas la permission d'écrire ici. Choisissez un audre endroit, ou annulez.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<message>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation type="vanished">Sauvegarder un fichier</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="25"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Transfers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="33"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Téléchargements</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="34"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Envois</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -189,187 +267,392 @@
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="86"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="48"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Copier l'ID ami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="87"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Inviter dans un groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="97"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="59"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Supprimer ami</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="49"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 personnes</translation>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="26"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">Options Générales</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<source>General Settings</source>
|
||||
<translation type="vanished">Options Générales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="146"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Inconnu></translation>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation type="vanished">Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="215"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 personnes</translation>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="vanished">Utiliser les traductions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="234"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="vanished">Rendre Tox portable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="vanished">Sauvegarde les options dans le dossier courant au lieu du dossier de configuration habituel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Theme</source>
|
||||
<translation type="vanished">Thème</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Smiley Pack</source>
|
||||
<translation type="vanished">Pack de smileys</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">Options Générales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation type="unfinished">Utiliser les traductions</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation type="unfinished">Sauvegarde les options dans le dossier courant au lieu du dossier de configuration habituel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation type="unfinished">Rendre Tox portable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="55"/>
|
||||
<source>Theme</source>
|
||||
<translation type="unfinished">Thème</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="61"/>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation type="unfinished">Pack de smileys</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="80"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation type="unfinished">Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
|
||||
<extracomment>force tcp checkbox tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="90"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="97"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="106"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="116"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="149"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="155"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Sauvegarder l'historique de conversation</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="54"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="141"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="47"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 personnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><Unknown></source>
|
||||
<translation type="vanished"><Inconnu></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="85"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 personnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="56"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="143"/>
|
||||
<source>Save chat log</source>
|
||||
<translation type="vanished">Sauvegarder l'historique de conversation</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="59"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 personnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="61"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>0 personnes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="84"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="48"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Quitter le groupe</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identityform.cpp" line="29"/>
|
||||
<source>Your identity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<source>Public Information</source>
|
||||
<translation type="vanished">Informations Publiques</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation type="vanished">Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation type="vanished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tox ID</source>
|
||||
<translation type="vanished">ID Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your Tox ID</source>
|
||||
<translation type="vanished">Votre ID Tox</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<source>Public Information</source>
|
||||
<translation type="unfinished">Informations Publiques</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished">Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<source>Status</source>
|
||||
<translation type="unfinished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<source>Tox ID</source>
|
||||
<translation type="unfinished">ID Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1918"/>
|
||||
<location filename="../mainwindow.ui" line="859"/>
|
||||
<source>Your name</source>
|
||||
<translation type="unfinished">Votre nom</translation>
|
||||
<translation>Votre nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2000"/>
|
||||
<location filename="../mainwindow.ui" line="941"/>
|
||||
<source>Your status</source>
|
||||
<translation type="unfinished">Votre status</translation>
|
||||
<translation>Votre status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2566"/>
|
||||
<location filename="../mainwindow.ui" line="1089"/>
|
||||
<source>Add friends</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ajouter des amis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2592"/>
|
||||
<location filename="../mainwindow.ui" line="1115"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Creer un groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2624"/>
|
||||
<location filename="../mainwindow.ui" line="1147"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Voir les transfers de fichiers terminés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2656"/>
|
||||
<location filename="../mainwindow.ui" line="1179"/>
|
||||
<source>Change your settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Changer les options</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3238"/>
|
||||
<location filename="../mainwindow.ui" line="1761"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished">Fermer</translation>
|
||||
<translation>Fermer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3241"/>
|
||||
<location filename="../mainwindow.ui" line="1764"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="unfinished">Ctrl+Q</translation>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="32"/>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Test vidéo Tox</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<source>qTox – Settings</source>
|
||||
<translation type="vanished">qTox — Options</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="vanished">General</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Identity</source>
|
||||
<translation type="vanished">Identité</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="vanished">Vie Privée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio/Video</source>
|
||||
<translation type="vanished">Audio/Vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ok</source>
|
||||
<translation type="vanished">Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="vanished">Annuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="vanished">Appliquer</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="34"/>
|
||||
<source>User Settings</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Configuration</translation>
|
||||
<translation type="vanished">Configuration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="37"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Nom</translation>
|
||||
<translation type="vanished">Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="38"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Status</translation>
|
||||
<translation type="vanished">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="39"/>
|
||||
<source>(click here to copy)</source>
|
||||
<comment>Click on this text to copy TID to clipboard</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="47"/>
|
||||
<source>Test video</source>
|
||||
<comment>Text on a button to test the video/webcam</comment>
|
||||
<translation>Tester la vidéo</translation>
|
||||
<translation type="vanished">Tester la vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="48"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="50"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="52"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="54"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="56"/>
|
||||
<source>Smiley Pack</source>
|
||||
<comment>Text on smiley pack label</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation type="vanished">Activer IPv6 (recommandé)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -395,22 +678,66 @@
|
||||
<translation type="vanished">Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="128"/>
|
||||
<location filename="../widget/widget.cpp" line="88"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation type="unfinished">Connecté</translation>
|
||||
<translation>Connecté</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="130"/>
|
||||
<location filename="../widget/widget.cpp" line="90"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation type="unfinished">Indisponnible</translation>
|
||||
<translation>Indisponnible</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="132"/>
|
||||
<location filename="../widget/widget.cpp" line="92"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation type="unfinished">Occupé</translation>
|
||||
<translation>Occupé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="225"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>This image is too big</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="287"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="296"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="611"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Inconnu></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
@ -1,75 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="it_IT">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation>Impostazioni Audio/Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="41"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Ferma webcam</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="47"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Prova webcam</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="20"/>
|
||||
<source>Video settings</source>
|
||||
<translation>Impostazioni Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="26"/>
|
||||
<source>Show video preview</source>
|
||||
<translation>Prova webcam</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="32"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Aggiungi Contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="35"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="36"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Messaggio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Invia richiesta d'amicizia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Permettimi di aggiungerti alla mia lista contatti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="93"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Inserisci un Tox ID valido</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="110"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Non puoi aggiungere te stesso come contatto!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Questo indirizzo non esiste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="114"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Errore nel consultare il server DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Numero inaspettato di text-records</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Numero inaspettato di valori nel text-record</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="133"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>La risposta del server DNS non contiene nessun Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>La risposta del server DNS non contiene un Tox ID valido</translation>
|
||||
@ -78,27 +122,41 @@
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="73"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="105"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Invia un file</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1068"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Profilo criptato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1069"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Il tuo profilo Tox sembra essere criptato, qTox non può aprirlo\nVuoi eliminare questo profilo?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="162"/>
|
||||
<location filename="../filetransferinstance.cpp" line="208"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Salva file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="173"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="173"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Non hai sufficienti permessi per scrivere in questa locazione. Scegli un'altra posizione, o annulla il salvataggio.</translation>
|
||||
@ -107,18 +165,18 @@
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="25"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Files Trasferiti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="33"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation>Ricevuti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="34"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation>Inviati</translation>
|
||||
</message>
|
||||
@ -162,29 +220,118 @@
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="83"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="48"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Copia Tox ID del contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="84"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Invita nel gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="94"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="59"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Rimuovi contatto</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="26"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Impostazioni Generali</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Impostazioni Generali</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation>Impostazioni Connessione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="80"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Abilita IPv6 (consigliato)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation>Abilita traduzioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation>Slava le impostazioni nella directory di lavoro corrente, invece della directory di default</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation>Rendi qTox portabile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="55"/>
|
||||
<source>Theme</source>
|
||||
<translation>Impostazioni Tema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="61"/>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation>Emoticons</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="97"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation>Usa proxy (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="106"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>IP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="116"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation>Porta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="90"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Disabilita connessioni UDP (non raccomandato)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
|
||||
<extracomment>force tcp checkbox tooltip</extracomment>
|
||||
<translation>Questo permette di usare qTox con Tor; tuttavia aggiunge carico alla rete Tox, quindi usalo solo se necessario.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="158"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="164"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="149"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="155"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Salva il log della chat</translation>
|
||||
</message>
|
||||
@ -192,18 +339,13 @@
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="39"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="47"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 utenti in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="81"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Sconosciuto></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="88"/>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="85"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 utenti in chat</translation>
|
||||
</message>
|
||||
@ -211,24 +353,65 @@
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="58"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="100"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="59"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 utenti in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="60"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="102"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="61"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>0 utenti in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="83"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="48"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Esci dal gruppo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identityform.cpp" line="29"/>
|
||||
<source>Your identity</source>
|
||||
<translation>Il tuo profilo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation>Form</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<source>Public Information</source>
|
||||
<translation>Informazioni Pubbliche</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<source>Name</source>
|
||||
<translation>Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<source>Status</source>
|
||||
<translation>Stato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<source>Tox ID</source>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation>(clicca qui per copiare)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
@ -237,137 +420,126 @@
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1918"/>
|
||||
<location filename="../mainwindow.ui" line="859"/>
|
||||
<source>Your name</source>
|
||||
<translation>qTox User</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2000"/>
|
||||
<location filename="../mainwindow.ui" line="941"/>
|
||||
<source>Your status</source>
|
||||
<translation>Toxing on qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2566"/>
|
||||
<location filename="../mainwindow.ui" line="1089"/>
|
||||
<source>Add friends</source>
|
||||
<translation>Aggiungi contatto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2592"/>
|
||||
<location filename="../mainwindow.ui" line="1115"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation>Crea un gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2624"/>
|
||||
<location filename="../mainwindow.ui" line="1147"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation>Visualizza i trasferimenti completati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2656"/>
|
||||
<location filename="../mainwindow.ui" line="1179"/>
|
||||
<source>Change your settings</source>
|
||||
<translation>Cambia le impostazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3238"/>
|
||||
<location filename="../mainwindow.ui" line="1761"/>
|
||||
<source>Close</source>
|
||||
<translation>Chiudi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3241"/>
|
||||
<location filename="../mainwindow.ui" line="1764"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation>Impostazioni privacy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="30"/>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>qTox video test</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="34"/>
|
||||
<source>User Settings</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Impostazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="37"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="38"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Stato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="39"/>
|
||||
<source>(click here to copy)</source>
|
||||
<comment>Click on this text to copy TID to clipboard</comment>
|
||||
<translation>(clicca qui per copiare)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="47"/>
|
||||
<source>Test video</source>
|
||||
<comment>Text on a button to test the video/webcam</comment>
|
||||
<translation>Prova la webcam</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="48"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>Abilita IPv6 (consigliato)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="50"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation>Abilita traduzioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="52"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation>Rendi qTox portabile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="54"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation>Slava le impostazioni nella directory di lavoro corrente, invece della directory di default</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="56"/>
|
||||
<source>Smiley Pack</source>
|
||||
<comment>Text on smiley pack label</comment>
|
||||
<translation>Emoticons</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="129"/>
|
||||
<location filename="../widget/widget.cpp" line="88"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="131"/>
|
||||
<location filename="../widget/widget.cpp" line="90"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Assente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="133"/>
|
||||
<location filename="../widget/widget.cpp" line="92"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Occupato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="225"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Scegli un'immagine per il profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Impossibile aprire il file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Impossibile leggere l'immagine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>L'immagine è troppo grande</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="287"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation>Impossibile avviare Toxcore.\nqTox terminerà dopo che avrai chiuso questo messaggio.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="296"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Impossibile avviare Toxcore con le tue impostazione proxy.\nqTox non può funzionare correttamente, per favore modifica le impostazioni e riavvia il programma.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="611"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Sconosciuto></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
BIN
translations/mannol.qm
Normal file
458
translations/mannol.ts
Normal file
@ -0,0 +1,458 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="132"/>
|
||||
<source>Video Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="136"/>
|
||||
<location filename="../widget/settingsdialog.cpp" line="163"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="157"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="80"/>
|
||||
<source>Send a file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="191"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="202"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendRequestDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="30"/>
|
||||
<source>Friend request</source>
|
||||
<comment>Title of the window to aceept/deny a friend request</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="32"/>
|
||||
<source>Someone wants to make friends with you</source>
|
||||
<translation>Ayy ! You have mothafucking friend request you little bitch !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="33"/>
|
||||
<source>User ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="37"/>
|
||||
<source>Friend request message:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="44"/>
|
||||
<source>Accept</source>
|
||||
<comment>Accept a friend request</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="45"/>
|
||||
<source>Reject</source>
|
||||
<comment>Reject a friend request</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="84"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="85"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="95"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="31"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="34"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="36"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="38"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="39"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="48"/>
|
||||
<source>Theme</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="49"/>
|
||||
<source>Smiley Pack</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="142"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="148"/>
|
||||
<source>Save chat log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="41"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="83"/>
|
||||
<source><Unknown></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="90"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="58"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="100"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="60"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="102"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="83"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="82"/>
|
||||
<source>Public Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="83"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="85"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="95"/>
|
||||
<source>Tox ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="96"/>
|
||||
<source>Your Tox ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1918"/>
|
||||
<source>Your name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2000"/>
|
||||
<source>Your status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2566"/>
|
||||
<source>Add friends</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2592"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2624"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2656"/>
|
||||
<source>Change your settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3238"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3241"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="197"/>
|
||||
<source>qTox – Settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="224"/>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="230"/>
|
||||
<source>Identity</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="236"/>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="242"/>
|
||||
<source>Audio/Video</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="251"/>
|
||||
<source>Ok</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="252"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="253"/>
|
||||
<source>Apply</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="133"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="135"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="137"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="605"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
BIN
translations/pirate.qm
Normal file
545
translations/pirate.ts
Normal file
@ -0,0 +1,545 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="en_PIRATE">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation type="unfinished">Hollerin'/Crystals o' Far-Seein' settings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="41"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished">Hide crystals o' Far-Seein' preview</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="47"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="unfinished">See crystals o' Far-Seein' preview</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="20"/>
|
||||
<source>Video settings</source>
|
||||
<translation type="unfinished">Crystals o' Far-Seein' settings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="26"/>
|
||||
<source>Show video preview</source>
|
||||
<translation type="unfinished">See crystals o' Far-Seein' preview</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Recruit yer crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation type="unfinished">Parchment Bottle of recruiting</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation type="unfinished">Send recruitment letter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation type="unfinished">Tox, arrr?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation type="unfinished">Throw in here Tox ID, but a rightful one!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation type="unfinished">Yer cannot add yerself in yer crew!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished">Recruitment address yer usin' ain't there</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation type="unfinished">DNS witchery errored upon looking</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished">All numbery that DNS brought upon was unexpectable</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished">All things </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="105"/>
|
||||
<source>Send a file</source>
|
||||
<translation type="unfinished">Send treasure</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1068"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1069"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="208"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation type="unfinished">Receive treasure</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation type="unfinished">Cannot bury treasure here</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation type="unfinished">Captain did't give permission bury that treasure here! Find another location or abandon hope of keepin' it.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation type="unfinished">Treasures given/received</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation type="unfinished">Received</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation type="unfinished">Sent</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendRequestDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="30"/>
|
||||
<source>Friend request</source>
|
||||
<comment>Title of the window to aceept/deny a friend request</comment>
|
||||
<translation type="unfinished">Recruitment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="32"/>
|
||||
<source>Someone wants to make friends with you</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="33"/>
|
||||
<source>User ID:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="37"/>
|
||||
<source>Friend request message:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="44"/>
|
||||
<source>Accept</source>
|
||||
<comment>Accept a friend request</comment>
|
||||
<translation type="unfinished">Arr</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="45"/>
|
||||
<source>Reject</source>
|
||||
<comment>Reject a friend request</comment>
|
||||
<translation type="unfinished">No</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="48"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation type="unfinished">Recruit in group</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="59"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation type="unfinished">Throw out traitor</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="26"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">O' ship settings</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<source>General Settings</source>
|
||||
<translation type="unfinished">O' ship settings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation type="unfinished">Linguistics use</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="55"/>
|
||||
<source>Theme</source>
|
||||
<translation type="unfinished">Lookin'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="61"/>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation type="unfinished">Teeth showin' box</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation type="unfinished">Sailin' setting</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="80"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation type="unfinished">Use IPv6 (good for ya)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
|
||||
<extracomment>force tcp checkbox tooltip</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="90"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="97"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="106"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="116"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="149"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="155"/>
|
||||
<source>Save chat log</source>
|
||||
<translation type="unfinished">Write log of yer talkin'</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="47"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation type="unfinished">%1 mates in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="85"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation type="unfinished">%1 mates in chat</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="59"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation type="unfinished">%1 mates in chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="61"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="48"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identityform.cpp" line="29"/>
|
||||
<source>Your identity</source>
|
||||
<translation type="unfinished">Yer self</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<source>Public Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<source>Status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<source>Tox ID</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation type="unfinished">Yer Tox ID (hit to steal)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="859"/>
|
||||
<source>Your name</source>
|
||||
<translation>Yer name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="941"/>
|
||||
<source>Your status</source>
|
||||
<translation>Yer status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1089"/>
|
||||
<source>Add friends</source>
|
||||
<translation>Recruit crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1115"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation>Make a chat with yer mates</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1147"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation>See treasures given and received</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1179"/>
|
||||
<source>Change your settings</source>
|
||||
<translation>Change yer setting'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1761"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1764"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation>Secrecy settin'</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Tox crystals o' Far-Seein' test</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="88"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="90"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="92"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="225"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Choose yer flag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Treasure cannot be opened</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation type="unfinished">Cannot see treasure</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>This image is too big</source>
|
||||
<translation type="unfinished">Yer flag too big</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="287"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="296"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="611"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
BIN
translations/pl.qm
Normal file
667
translations/pl.ts
Normal file
@ -0,0 +1,667 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="pl_PL">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation>Ustawienia audio/video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="41"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Ukryj podgląd wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="47"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Pokaż podgląd wideo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<source>Video Settings</source>
|
||||
<translation type="obsolete">Ustawienia wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="obsolete">Pokaż podgląd wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation type="obsolete">Ukryj podgląd wideo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="20"/>
|
||||
<source>Video settings</source>
|
||||
<translation>Ustawienia wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="26"/>
|
||||
<source>Show video preview</source>
|
||||
<translation>Pokaż podgląd wideo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Dodaj znajomych</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Wiadomość</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Wyślij zapytanie do znajomego</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Może Tox ze mną?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Proszę wpisać poprawny Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Nie możesz dodać siebie jako znajomego!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Ten adres nie istnieje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Błąd podczas sprawdzania DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Nieoczekiwana liczba wpisów tekstowych</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Nieoczekiwana liczba wartości we wpisie tekstowym</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>DNS nie zawiera żadnego Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>DNS nie zawiera poprawnego Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="105"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Wyślij plik</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1068"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Zaszyfrowany profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1069"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Twój profil zdaje się być zaszyfrowany, qTox nie jest w stanie go otworzyć
|
||||
Czy chcesz usunąć ten profil ?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="208"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Zapisz plik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Nie można zapisać w lokacji</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Nie masz uprawnienia by zapisać w tej lokacji. Wybierz inną lub anuluj zapis.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Przesłane pliki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation>Pobrane</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation>Wysłane</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendRequestDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="30"/>
|
||||
<source>Friend request</source>
|
||||
<comment>Title of the window to aceept/deny a friend request</comment>
|
||||
<translatorcomment>no idea how it shoule be translated</translatorcomment>
|
||||
<translation>Zapytanie znajomego</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="32"/>
|
||||
<source>Someone wants to make friends with you</source>
|
||||
<translation>Ktoś chce być twoim znajomym</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="33"/>
|
||||
<source>User ID:</source>
|
||||
<translation>ID użytkownika:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="37"/>
|
||||
<source>Friend request message:</source>
|
||||
<translatorcomment>better wording needed?</translatorcomment>
|
||||
<translation>Wiadomość w zapytaniu do znajomej/go:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="44"/>
|
||||
<source>Accept</source>
|
||||
<comment>Accept a friend request</comment>
|
||||
<translation>Zaakceptuj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="45"/>
|
||||
<source>Reject</source>
|
||||
<comment>Reject a friend request</comment>
|
||||
<translation>Odrzuć</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="48"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Kopiuj ID znajomej/go</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Zaproś do grupy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="59"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Usuń znajomego</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="26"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Główne ustawienia</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<source>General Settings</source>
|
||||
<translation type="obsolete">Główne ustawienia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation type="obsolete">Użyj IPv6 (rekomendowane)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation type="obsolete">Użyj tłumaczenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation type="obsolete">Zrób Tox przenośnym</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="obsolete">Zamiast domyślnego katalogu użyj obecnego do zapisania ustawień</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Theme</source>
|
||||
<translation type="obsolete">Motyw</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Smiley Pack</source>
|
||||
<translatorcomment>needs better translation</translatorcomment>
|
||||
<translation type="obsolete">Paczka uśmiechów</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Główne ustawienia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation>Użyj tłumaczenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation>Zamiast domyślnego katalogu użyj obecnego do zapisania ustawień</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="45"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation>Zrób Tox przenośnym</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="55"/>
|
||||
<source>Theme</source>
|
||||
<translation>Motyw</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="61"/>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translatorcomment>better translation? anyone?</translatorcomment>
|
||||
<translation>Paczka uśmiechów</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="74"/>
|
||||
<source>Connection Settings</source>
|
||||
<translation>Ustawienia połączenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="80"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Użyj IPv6 (rekomendowane)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
|
||||
<extracomment>force tcp checkbox tooltip</extracomment>
|
||||
<translation>To pozwala n.p. na toxowanie przez Tora. Niestety obciąża to sieć Tox, więc używaj tylko w razie potrzeby.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="90"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Wyłącz UDP (nie rekomendowane)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="97"/>
|
||||
<source>Use proxy (SOCKS5)</source>
|
||||
<translation>Użyj proxy (SOCKS5)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="106"/>
|
||||
<source>Address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>Adres</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="116"/>
|
||||
<source>Port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation>Port</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="149"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="155"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Zapisz historię rozmowy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="47"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 użytkowników w czacie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><Unknown></source>
|
||||
<translation type="obsolete"><Nieznany/a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="85"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 użytkowników w czacie</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="59"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 użytkowników w czacie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="61"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>0 użytkowników w czacie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="48"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Opuść grupę</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identityform.cpp" line="29"/>
|
||||
<source>Your identity</source>
|
||||
<translation>Twoja tożsamość</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<source>Public Information</source>
|
||||
<translation type="obsolete">Informacja publiczna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation type="obsolete">Nick</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation type="obsolete">Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tox ID</source>
|
||||
<translation type="obsolete">Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your Tox ID</source>
|
||||
<translation type="obsolete">Twój Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<source>Public Information</source>
|
||||
<translation>Informacja publiczna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<source>Name</source>
|
||||
<translation>Nick</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<source>Status</source>
|
||||
<translation>Status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<source>Tox ID</source>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation>Twój Tox ID (kliknij by skopiować)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="859"/>
|
||||
<source>Your name</source>
|
||||
<translation>Twój nick</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="941"/>
|
||||
<source>Your status</source>
|
||||
<translation>Twój status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1089"/>
|
||||
<source>Add friends</source>
|
||||
<translation>Dodaj znajomych</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1115"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation>Utwórz czat grupowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1147"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation>Zobacz zakończone transfery plików</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1179"/>
|
||||
<source>Change your settings</source>
|
||||
<translatorcomment>translated as "change settings"; seems to be simpler this way</translatorcomment>
|
||||
<translation>Zmień ustawienia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1761"/>
|
||||
<source>Close</source>
|
||||
<translation>Zamknij</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1764"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation>Ustawienia prywatności</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Tox test wideo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<source>qTox – Settings</source>
|
||||
<translation type="obsolete">qTox – Ustawienia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="obsolete">Główne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Identity</source>
|
||||
<translation type="obsolete">Tożsamość</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="obsolete">Prywatność</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio/Video</source>
|
||||
<translation type="obsolete">Audio/Wideo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ok</source>
|
||||
<translation type="obsolete">Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation type="obsolete">Anuluj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation type="obsolete">Zastosuj</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="88"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>Online</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="90"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Nieobecny/a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="92"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Zajęty/a</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="225"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Wybierz obrazek profilu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>Error</source>
|
||||
<translation>Błąd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Nie można otworzyć tego pliku</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Nie można odczytać tego obrazka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>Ten obrazek jest zbyt wielki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="287"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation>Nie udało się uruchomić Toxcore, aplikacja zamknie się po zamknięciu tej wiadomości.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="296"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Nie udało się uruchomić toxcore z twoimi ustawieniami proxy. qTox nie może działać, proszę zmodyfikuj ustawienia i zrestartuj.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="611"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Nieznany/a></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1,153 +1,188 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<TS version="2.0" language="ru_RU">
|
||||
<context>
|
||||
<name>AVForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="22"/>
|
||||
<source>Audio/Video settings</source>
|
||||
<translation>Настройки аудио/видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="41"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Спрятать видео-превью</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avform.cpp" line="47"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Посмотреть видео-превью</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AVSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="14"/>
|
||||
<location filename="../ui_avsettings.h" line="65"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="20"/>
|
||||
<location filename="../ui_avsettings.h" line="66"/>
|
||||
<source>Video settings</source>
|
||||
<translation>Настройки видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/avsettings.ui" line="26"/>
|
||||
<location filename="../ui_avsettings.h" line="67"/>
|
||||
<source>Show video preview</source>
|
||||
<translation>Посмотреть видео-превью</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="32"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Добавление друзей</translation>
|
||||
<translation>Добавить друзей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="35"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="36"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Сообщение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translatorcomment>Мне не нравится, но другого не придумал, и фейсбук использует это</translatorcomment>
|
||||
<translation>Отправить запрос на добавление в друзья</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translatorcomment>Вот таким нехитрым и незамысловатым образом решаются сложные переводчиские проблемы</translatorcomment>
|
||||
<translation>Добавь меня, а?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="93"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Пожалуйста, введите корректный Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="110"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Вы не можете добавить себя как друга!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Нет такого адреса</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="114"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Ошибка при просмотре DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Непредвиденное количество текстовых записей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Непредвиденное количество значений в текстовой записи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="133"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>В ответе DNS ни одного Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Ответ DNS не содержит корректных Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Camera</name>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="161"/>
|
||||
<source>Camera eror</source>
|
||||
<translation>Ошибка камеры</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/camera.cpp" line="162"/>
|
||||
<source>Camera format %1 not supported, can't use the camera</source>
|
||||
<translation>Формат камеры %1 не поддерживается, невозможно использовать камеру</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="283"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="105"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Отправить файл</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Core</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="620"/>
|
||||
<location filename="../widget/form/chatform.cpp" line="626"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Сохранить лог чата</translation>
|
||||
<location filename="../core.cpp" line="1064"/>
|
||||
<source>Encrypted profile</source>
|
||||
<translation>Зашифрованный профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../core.cpp" line="1065"/>
|
||||
<source>Your tox profile seems to be encrypted, qTox can't open it
|
||||
Do you want to erase this profile ?</source>
|
||||
<translation>Похоже, ваш tox-профиль зашифрован, qTox не может открыть его
|
||||
Вы хотите удалить этот профиль?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CopyableElideLabel</name>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/copyableelidelabel.cpp" line="29"/>
|
||||
<source>Copy</source>
|
||||
<translation>Копировать</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransfertWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="281"/>
|
||||
<location filename="../filetransferinstance.cpp" line="208"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Сохранить файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Непригодная для записи локация</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/filetransfertwidget.cpp" line="292"/>
|
||||
<location filename="../filetransferinstance.cpp" line="219"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>У вас нет прав записи в эту локацию. Выберете другую или закройте диалог сохранения.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="25"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Переданные файлы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="33"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation>Загрузки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="34"/>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation>Выгрузки</translation>
|
||||
</message>
|
||||
@ -193,246 +228,362 @@
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="86"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="48"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Копировать ID друга</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="87"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="49"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Пригласить в группу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="97"/>
|
||||
<location filename="../widget/friendwidget.cpp" line="59"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Удалить друга</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<name>GeneralForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="49"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="26"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Общие настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="146"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Неизвестно></translation>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="100"/>
|
||||
<source>Bad port</source>
|
||||
<comment>title of bad port popup</comment>
|
||||
<translation>Неправильный порт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="215"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
<location filename="../widget/form/settings/generalform.cpp" line="100"/>
|
||||
<source>The port you entered is invalid; please enter another.</source>
|
||||
<comment>text of bad port popup</comment>
|
||||
<translation>Введёный порт неверен; введите другой.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralSettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="14"/>
|
||||
<location filename="../ui_generalsettings.h" line="154"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="234"/>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="29"/>
|
||||
<location filename="../ui_generalsettings.h" line="155"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Общие настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="35"/>
|
||||
<location filename="../ui_generalsettings.h" line="156"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<extracomment>Text on a checkbox to enable IPv6</extracomment>
|
||||
<translation>Включить IPv6 (рекомендуется)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="42"/>
|
||||
<location filename="../ui_generalsettings.h" line="157"/>
|
||||
<source>Use translations</source>
|
||||
<extracomment>Text on a checkbox to enable translations</extracomment>
|
||||
<translation>Использовать перевод</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="49"/>
|
||||
<location filename="../ui_generalsettings.h" line="159"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<extracomment>describes makeToxPortable checkbox</extracomment>
|
||||
<translation>Сохранять настройки в рабочую директорию вместо страндартной папки настроек</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="52"/>
|
||||
<location filename="../ui_generalsettings.h" line="161"/>
|
||||
<source>Make Tox portable</source>
|
||||
<translation>Портативный режим</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="62"/>
|
||||
<location filename="../ui_generalsettings.h" line="162"/>
|
||||
<source>Theme</source>
|
||||
<translation>Тема</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="68"/>
|
||||
<location filename="../ui_generalsettings.h" line="163"/>
|
||||
<source>Smiley Pack</source>
|
||||
<extracomment>Text on smiley pack label</extracomment>
|
||||
<translation>Набор смайликов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="81"/>
|
||||
<location filename="../ui_generalsettings.h" line="164"/>
|
||||
<source>Proxy settings</source>
|
||||
<translation>Настройки прокси</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="87"/>
|
||||
<location filename="../ui_generalsettings.h" line="165"/>
|
||||
<source>Disable UDP (not recommended)</source>
|
||||
<extracomment>Text on checkbox to disable UDP</extracomment>
|
||||
<translation>Выключить UDP (не рекомендуется)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="90"/>
|
||||
<location filename="../ui_generalsettings.h" line="167"/>
|
||||
<source>This allows, e.g., toxing over Tor. It adds load to the Tox network however, so use only when necessary.</source>
|
||||
<extracomment>force tcp checkbox tooltip</extracomment>
|
||||
<translation>Это позволяет, например, использовать tox поверх Tor. Однако это добавляет нагрузку на сеть Tox, так что используйте только в случае необходимости.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="99"/>
|
||||
<location filename="../ui_generalsettings.h" line="169"/>
|
||||
<source>Proxy address</source>
|
||||
<extracomment>Text on proxy addr label</extracomment>
|
||||
<translation>Адрес прокси</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/generalsettings.ui" line="106"/>
|
||||
<location filename="../ui_generalsettings.h" line="170"/>
|
||||
<source>Proxy port</source>
|
||||
<extracomment>Text on proxy port label</extracomment>
|
||||
<translation>Порт прокси</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="149"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="155"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Сохранить лог чата</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="47"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="85"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="84"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="48"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Покинуть группу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="54"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="141"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="39"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="59"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>%1 пользователей в чате</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="56"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="143"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="41"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="61"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>Ни одного пользователя в чате</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identityform.cpp" line="29"/>
|
||||
<source>Your identity</source>
|
||||
<translation>Ваша идентификация</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentitySettings</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="14"/>
|
||||
<location filename="../ui_identitysettings.h" line="100"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="20"/>
|
||||
<location filename="../ui_identitysettings.h" line="101"/>
|
||||
<source>Public Information</source>
|
||||
<translation>Публичные данные</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="26"/>
|
||||
<location filename="../ui_identitysettings.h" line="102"/>
|
||||
<source>Name</source>
|
||||
<translation>Имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="36"/>
|
||||
<location filename="../ui_identitysettings.h" line="103"/>
|
||||
<source>Status</source>
|
||||
<translation>Статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="49"/>
|
||||
<location filename="../ui_identitysettings.h" line="104"/>
|
||||
<source>Tox ID</source>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/identitysettings.ui" line="55"/>
|
||||
<location filename="../ui_identitysettings.h" line="105"/>
|
||||
<source>Your Tox ID (click to copy)</source>
|
||||
<translation>Ваш Tox ID (нажмите на него, чтобы скопировать)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<location filename="../ui_mainwindow.h" line="492"/>
|
||||
<source>qTox</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1918"/>
|
||||
<location filename="../mainwindow.ui" line="859"/>
|
||||
<location filename="../ui_mainwindow.h" line="495"/>
|
||||
<source>Your name</source>
|
||||
<translation type="unfinished">Ваше имя</translation>
|
||||
<translation>Ваше имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2000"/>
|
||||
<location filename="../mainwindow.ui" line="941"/>
|
||||
<location filename="../ui_mainwindow.h" line="496"/>
|
||||
<source>Your status</source>
|
||||
<translation type="unfinished">Ваш статус</translation>
|
||||
<translation>Ваш статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2566"/>
|
||||
<location filename="../mainwindow.ui" line="1089"/>
|
||||
<location filename="../ui_mainwindow.h" line="499"/>
|
||||
<source>Add friends</source>
|
||||
<translation type="unfinished">Добавить друзей</translation>
|
||||
<translation>Добавить друзей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2592"/>
|
||||
<location filename="../mainwindow.ui" line="1115"/>
|
||||
<location filename="../ui_mainwindow.h" line="503"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation type="unfinished">Создать групповой чат</translation>
|
||||
<translation>Создать групповой чат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2624"/>
|
||||
<location filename="../mainwindow.ui" line="1147"/>
|
||||
<location filename="../ui_mainwindow.h" line="507"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Завершённые файлопередачи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2656"/>
|
||||
<location filename="../mainwindow.ui" line="1179"/>
|
||||
<location filename="../ui_mainwindow.h" line="511"/>
|
||||
<source>Change your settings</source>
|
||||
<translation type="unfinished">Изменить ваши настройки</translation>
|
||||
<translation>Изменить ваши настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3238"/>
|
||||
<location filename="../mainwindow.ui" line="1761"/>
|
||||
<location filename="../ui_mainwindow.h" line="493"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished">Закрыть</translation>
|
||||
<translation>Закрыть</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3241"/>
|
||||
<location filename="../mainwindow.ui" line="1764"/>
|
||||
<location filename="../ui_mainwindow.h" line="494"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="unfinished">Ctrl+Q</translation>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PrivacyForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settings/privacyform.cpp" line="21"/>
|
||||
<source>Privacy settings</source>
|
||||
<translation>Настройки приватности</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="32"/>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Проверка видео</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="34"/>
|
||||
<source>User Settings</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Пользовательские настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="37"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="38"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="39"/>
|
||||
<source>(click here to copy)</source>
|
||||
<comment>Click on this text to copy TID to clipboard</comment>
|
||||
<translation>(нажмите здесь чтобы скопировать)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="47"/>
|
||||
<source>Test video</source>
|
||||
<comment>Text on a button to test the video/webcam</comment>
|
||||
<translation>Проверить видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="48"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>Включить IPv6 (рекомендуется)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="50"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translatorcomment>Так гораздо понятнее, чем «использовать переводы»</translatorcomment>
|
||||
<translation>Русскоязычный интерфейс</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="52"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation>Портативный режим</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="54"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/settingsform.cpp" line="56"/>
|
||||
<source>Smiley Pack</source>
|
||||
<comment>Text on smiley pack label</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<source>Tox</source>
|
||||
<translation type="vanished">Tox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your name</source>
|
||||
<translation type="vanished">Ваше имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Your status</source>
|
||||
<translation type="vanished">Ваш статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add friends</source>
|
||||
<translation type="vanished">Добавить друзей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create a group chat</source>
|
||||
<translation type="vanished">Создать групповой чат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(button inactive currently)</source>
|
||||
<translation type="vanished">(кнопка на данный момент неактивна)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change your settings</source>
|
||||
<translation type="vanished">Изменить ваши настройки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation type="vanished">Закрыть</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation type="vanished">Ctrl+Q</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="128"/>
|
||||
<location filename="../widget/widget.cpp" line="88"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation type="unfinished">В сети</translation>
|
||||
<translation>В сети</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="130"/>
|
||||
<location filename="../widget/widget.cpp" line="90"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translatorcomment>Вероятно, это не столь долгое путешествие</translatorcomment>
|
||||
<translation type="unfinished">Отошёл</translation>
|
||||
<translation>Отошёл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="132"/>
|
||||
<location filename="../widget/widget.cpp" line="92"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation type="unfinished">Занят</translation>
|
||||
<translation>Занят</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="225"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Выбрать картинку для профиля</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="232"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Невозможно открыть файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="239"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Невозможно прочесть это изображение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="260"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>Это изображение слишком большое</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="287"/>
|
||||
<source>Toxcore failed to start, the application will terminate after you close this message.</source>
|
||||
<translation>Не удалось запустить toxcore, приложение будет завершено после того как вы закроете это сообщение.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="296"/>
|
||||
<source>toxcore failed to start with your proxy settings. qTox cannot run; please modify your settings and restart.</source>
|
||||
<comment>popup text</comment>
|
||||
<translation>Не удалось запустить toxcore с вашими настройками прокси, qTox не может работать; измените ваши настройки и перезапустите его.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="611"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Неизвестно></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
BIN
translations/uk.qm
Normal file
485
translations/uk.ts
Normal file
@ -0,0 +1,485 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="uk_UA">
|
||||
<context>
|
||||
<name>AVPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="132"/>
|
||||
<source>Video Settings</source>
|
||||
<translation>Параметри відео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="136"/>
|
||||
<location filename="../widget/settingsdialog.cpp" line="163"/>
|
||||
<source>Show video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Показати вікно попереднього перегляду</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="157"/>
|
||||
<source>Hide video preview</source>
|
||||
<comment>On a button</comment>
|
||||
<translation>Приховати вікно попереднього перегляду</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddFriendForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="34"/>
|
||||
<source>Add Friends</source>
|
||||
<translation>Додати друзів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="37"/>
|
||||
<source>Tox ID</source>
|
||||
<comment>Tox ID of the person you're sending a friend request to</comment>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="38"/>
|
||||
<source>Message</source>
|
||||
<comment>The message you send in friend requests</comment>
|
||||
<translation>Повідомлення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="39"/>
|
||||
<source>Send friend request</source>
|
||||
<translation>Надіслати запит на дружбу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="40"/>
|
||||
<source>Tox me maybe?</source>
|
||||
<comment>Default message in friend requests if the field is left blank. Write something appropriate!</comment>
|
||||
<translation>Може поспілкуємось?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="96"/>
|
||||
<source>Please fill in a valid Tox ID</source>
|
||||
<comment>Tox ID of the friend you're sending a friend request to</comment>
|
||||
<translation>Заповніть коректним Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="99"/>
|
||||
<source>You can't add yourself as a friend!</source>
|
||||
<comment>When trying to add your own Tox ID as friend</comment>
|
||||
<translation>Ви не можете додати самого себе до друзів!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="116"/>
|
||||
<source>This address does not exist</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Цієї адреси не існує</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="120"/>
|
||||
<source>Error while looking up DNS</source>
|
||||
<comment>The DNS gives the Tox ID associated to toxme.se addresses</comment>
|
||||
<translation>Помилка під час перегляду DNS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="126"/>
|
||||
<source>Unexpected number of text records</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Неочікуване число текстових записів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="132"/>
|
||||
<source>Unexpected number of values in text record</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Неочікуване число значень в текстових записах</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="139"/>
|
||||
<source>The DNS lookup does not contain any Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Відповідь DNS не містить жодного Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="145"/>
|
||||
<location filename="../widget/form/addfriendform.cpp" line="151"/>
|
||||
<source>The DNS lookup does not contain a valid Tox ID</source>
|
||||
<comment>Error with the DNS</comment>
|
||||
<translation>Відповідь DNS не містить жодного коректного Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/chatform.cpp" line="88"/>
|
||||
<source>Send a file</source>
|
||||
<translation>Надіслати файл</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileTransferInstance</name>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="205"/>
|
||||
<source>Save a file</source>
|
||||
<comment>Title of the file saving dialog</comment>
|
||||
<translation>Зберегти файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="216"/>
|
||||
<source>Location not writable</source>
|
||||
<comment>Title of permissions popup</comment>
|
||||
<translation>Немає прав на запис</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../filetransferinstance.cpp" line="216"/>
|
||||
<source>You do not have permission to write that location. Choose another, or cancel the save dialog.</source>
|
||||
<comment>text of permissions popup</comment>
|
||||
<translation>Ви не маєте прав на запис за цим розташуванням. Оберіть інше місце призначення, або скасуйте передачу.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FilesForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="30"/>
|
||||
<source>Transfered Files</source>
|
||||
<comment>"Headline" of the window</comment>
|
||||
<translation>Передані файли</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="38"/>
|
||||
<source>Downloads</source>
|
||||
<translation>Завантажені</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/filesform.cpp" line="39"/>
|
||||
<source>Uploads</source>
|
||||
<translation>Вивантажені</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendRequestDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="30"/>
|
||||
<source>Friend request</source>
|
||||
<comment>Title of the window to aceept/deny a friend request</comment>
|
||||
<translation>Запит на дружбу</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="32"/>
|
||||
<source>Someone wants to make friends with you</source>
|
||||
<translation>Дехто хоче долучитися до переліку друзів з вами</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="33"/>
|
||||
<source>User ID:</source>
|
||||
<translation>ID користувача:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="37"/>
|
||||
<source>Friend request message:</source>
|
||||
<translation>Повідомлення запиту:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="44"/>
|
||||
<source>Accept</source>
|
||||
<comment>Accept a friend request</comment>
|
||||
<translation>Прийняти</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/tool/friendrequestdialog.cpp" line="45"/>
|
||||
<source>Reject</source>
|
||||
<comment>Reject a friend request</comment>
|
||||
<translation>Відхилити</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FriendWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="90"/>
|
||||
<source>Copy friend ID</source>
|
||||
<comment>Menu to copy the Tox ID of that friend</comment>
|
||||
<translation>Копіювати дружній ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="91"/>
|
||||
<source>Invite in group</source>
|
||||
<comment>Menu to invite a friend in a groupchat</comment>
|
||||
<translation>Запросити до групи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/friendwidget.cpp" line="101"/>
|
||||
<source>Remove friend</source>
|
||||
<comment>Menu to remove the friend from our friendlist</comment>
|
||||
<translation>Вилучити з друзів</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GeneralPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="31"/>
|
||||
<source>General Settings</source>
|
||||
<translation>Основні параметри</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="34"/>
|
||||
<source>Enable IPv6 (recommended)</source>
|
||||
<comment>Text on a checkbox to enable IPv6</comment>
|
||||
<translation>Дозволити IPv6 (рекомендовано)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="36"/>
|
||||
<source>Use translations</source>
|
||||
<comment>Text on a checkbox to enable translations</comment>
|
||||
<translation>Використовувати мову системи</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="38"/>
|
||||
<source>Make Tox portable</source>
|
||||
<comment>Text on a checkbox to make qTox a portable application</comment>
|
||||
<translation>Портативний запуск</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="39"/>
|
||||
<source>Save settings to the working directory instead of the usual conf dir</source>
|
||||
<comment>describes makeToxPortable checkbox</comment>
|
||||
<translation>Зберігати налаштування в робочий теці</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="48"/>
|
||||
<source>Theme</source>
|
||||
<translation>Графічна тема</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="49"/>
|
||||
<source>Smiley Pack</source>
|
||||
<translation>Графічний пакунок емоційних картинок</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GenericChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="144"/>
|
||||
<location filename="../widget/form/genericchatform.cpp" line="150"/>
|
||||
<source>Save chat log</source>
|
||||
<translation>Зберегти чат</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupChatForm</name>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="45"/>
|
||||
<source>%1 users in chat</source>
|
||||
<comment>Number of users in chat</comment>
|
||||
<translation>Користувачів у чаті: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="84"/>
|
||||
<source><Unknown></source>
|
||||
<translation><Невідомо></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/form/groupchatform.cpp" line="91"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>Користувачів у чаті: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GroupWidget</name>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="60"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="102"/>
|
||||
<source>%1 users in chat</source>
|
||||
<translation>Користувачів у чаті: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="62"/>
|
||||
<location filename="../widget/groupwidget.cpp" line="104"/>
|
||||
<source>0 users in chat</source>
|
||||
<translation>Немає користувачів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/groupwidget.cpp" line="85"/>
|
||||
<source>Quit group</source>
|
||||
<comment>Menu to quit a groupchat</comment>
|
||||
<translation>Вийти з групи</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>IdentityPage</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="82"/>
|
||||
<source>Public Information</source>
|
||||
<translation>Публічна інформація</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="83"/>
|
||||
<source>Name</source>
|
||||
<comment>Username/nick</comment>
|
||||
<translation>Ім'я</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="85"/>
|
||||
<source>Status</source>
|
||||
<comment>Status message</comment>
|
||||
<translation>Статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="95"/>
|
||||
<source>Tox ID</source>
|
||||
<translation>Tox ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="96"/>
|
||||
<source>Your Tox ID</source>
|
||||
<translation>Ваш Tox ID</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>qTox</source>
|
||||
<translation>qTox</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1909"/>
|
||||
<source>Your name</source>
|
||||
<translation>Ваше ім'я</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="1991"/>
|
||||
<source>Your status</source>
|
||||
<translation>Ваш статус</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2557"/>
|
||||
<source>Add friends</source>
|
||||
<translation>Додати друзів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2583"/>
|
||||
<source>Create a group chat</source>
|
||||
<translation>Створити груповий чат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2615"/>
|
||||
<source>View completed file transfers</source>
|
||||
<translation>Переглянути завершені передачі файлів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="2647"/>
|
||||
<source>Change your settings</source>
|
||||
<translation>Змінити параметри</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3229"/>
|
||||
<source>Close</source>
|
||||
<translation>Закрити</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="3232"/>
|
||||
<source>Ctrl+Q</source>
|
||||
<translation>Ctrl+Q</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelfCamView</name>
|
||||
<message>
|
||||
<location filename="../widget/selfcamview.cpp" line="33"/>
|
||||
<source>Tox video test</source>
|
||||
<comment>Title of the window to test the video/webcam</comment>
|
||||
<translation>Перевірка відео tox</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsDialog</name>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="197"/>
|
||||
<source>qTox – Settings</source>
|
||||
<translation>qTox - Параметри</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="224"/>
|
||||
<source>General</source>
|
||||
<translation>Основні</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="230"/>
|
||||
<source>Identity</source>
|
||||
<translation>Ідентифікація</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="236"/>
|
||||
<source>Privacy</source>
|
||||
<translation>Приватність</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="242"/>
|
||||
<source>Audio/Video</source>
|
||||
<translation>Аудіо/Відео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="251"/>
|
||||
<source>Ok</source>
|
||||
<translation>Гаразд</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="252"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Скасувати</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/settingsdialog.cpp" line="253"/>
|
||||
<source>Apply</source>
|
||||
<translation>Застосувати</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Widget</name>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="141"/>
|
||||
<source>Online</source>
|
||||
<comment>Button to set your status to 'Online'</comment>
|
||||
<translation>В мережі</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="143"/>
|
||||
<source>Away</source>
|
||||
<comment>Button to set your status to 'Away'</comment>
|
||||
<translation>Відійшов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="145"/>
|
||||
<source>Busy</source>
|
||||
<comment>Button to set your status to 'Busy'</comment>
|
||||
<translation>Зайнятий</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="285"/>
|
||||
<source>Choose a profile picture</source>
|
||||
<translation>Оберіть зображення для профілю</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="292"/>
|
||||
<location filename="../widget/widget.cpp" line="299"/>
|
||||
<location filename="../widget/widget.cpp" line="320"/>
|
||||
<source>Error</source>
|
||||
<translation>Помилка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="292"/>
|
||||
<source>Unable to open this file</source>
|
||||
<translation>Неможливо відкрити цей файл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="299"/>
|
||||
<source>Unable to read this image</source>
|
||||
<translation>Неможливо прочитати це зображення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="320"/>
|
||||
<source>This image is too big</source>
|
||||
<translation>Зображення завелике</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widget/widget.cpp" line="664"/>
|
||||
<source><Unknown></source>
|
||||
<comment>Placeholder when we don't know someone's name in a group chat</comment>
|
||||
<translation><Невідомо></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -1,64 +1,75 @@
|
||||
div.name_me {
|
||||
color: #646464;
|
||||
font-weight: bold;
|
||||
padding-right: 3px;
|
||||
}
|
||||
|
||||
div.name {
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
padding-right: 3px;
|
||||
color: @black;
|
||||
font: @bigBold;
|
||||
}
|
||||
|
||||
div.message {
|
||||
color: #000000;
|
||||
padding-right: 3px;
|
||||
padding-left: 3px;
|
||||
color: @black;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.action {
|
||||
color: #1818FF;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.date {
|
||||
color: #000000;
|
||||
padding-left: 3px;
|
||||
white-space: nowrap;
|
||||
color: @black;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.quote {
|
||||
background-color: #6bc260;
|
||||
div.name_me {
|
||||
color: @mediumGrey;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.message_me {
|
||||
color: @black;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
div.date_me {
|
||||
color: @black;
|
||||
font: @big;
|
||||
}
|
||||
|
||||
span.quote {
|
||||
color: #6bc260;
|
||||
}
|
||||
|
||||
div.green {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-left: 12px;
|
||||
margin-left: 0px;
|
||||
margin-right: 12px;
|
||||
color: #ffffff;
|
||||
background-color: #6bc260;
|
||||
font-size: 10px;
|
||||
color: @white;
|
||||
background-color: @green;
|
||||
font: @small;
|
||||
}
|
||||
|
||||
div.silver {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-left: 12px;
|
||||
margin-left: 0px;
|
||||
margin-right: 12px;
|
||||
color: #000000;
|
||||
background-color: #d1d1d1;
|
||||
font-size: 10px;
|
||||
color: @black;
|
||||
background-color: @lightGrey;
|
||||
font: @small;
|
||||
}
|
||||
|
||||
div.red {
|
||||
margin-top: 12px;
|
||||
margin-bottom: 12px;
|
||||
margin-left: 12px;
|
||||
margin-left: 0px;
|
||||
margin-right: 12px;
|
||||
color: #ffffff;
|
||||
background-color: rgb(200,78,78);
|
||||
font-size: 10px;
|
||||
color: @white;
|
||||
background-color: @red;
|
||||
font: @small;
|
||||
}
|
||||
|
||||
div.button {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
color: #ffffff;
|
||||
color: @white;
|
||||
}
|
||||
|
38
ui/chatroomWidgets/genericChatroomWidget.css
Normal file
@ -0,0 +1,38 @@
|
||||
GenericChatroomWidget
|
||||
{
|
||||
background-color: @mediumGrey;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="true"]
|
||||
{
|
||||
background-color: @white;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="false"]:hover
|
||||
{
|
||||
background-color: @mediumGreyLight;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="true"] > QLabel#status
|
||||
{
|
||||
font: @medium;
|
||||
color: @mediumGrey;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="false"] > QLabel#status
|
||||
{
|
||||
font: @medium;
|
||||
color: @lightGrey;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="true"] > QLabel#name
|
||||
{
|
||||
font: @big;
|
||||
color: @darkGrey;
|
||||
}
|
||||
|
||||
GenericChatroomWidget[active="false"] > QLabel#name
|
||||
{
|
||||
font: @big;
|
||||
color: @white;
|
||||
}
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 216 B |
Before Width: | Height: | Size: 263 B After Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 233 B |
@ -35,6 +35,6 @@ QRadioButton::indicator::checked
|
||||
|
||||
QMenu
|
||||
{
|
||||
background-color: rgb(240,240,240); /* sets background of the menu */
|
||||
border: 1px solid;
|
||||
background-color: @mediumGrey; /* sets background of the menu */
|
||||
border: 0px solid;
|
||||
}
|
||||
|
BIN
ui/fileTransferInstance/sliverRTEdge.png
Normal file
After Width: | Height: | Size: 225 B |
@ -3,18 +3,16 @@ QScrollArea {
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
background: transparent;
|
||||
width: 14px;
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
background: rgb(65,65,65);
|
||||
width: 16px;
|
||||
padding: 0px 3px 0px 3px;
|
||||
}
|
||||
|
||||
QScrollBar:handle:vertical {
|
||||
background: rgba(18, 18, 18, 204);
|
||||
min-height: 20px;
|
||||
border-radius: 3px;
|
||||
margin-left: 3px;
|
||||
margin-right: 1px;
|
||||
border-radius: 5px;
|
||||
margin: 3px 0px 3px 0px;
|
||||
}
|
||||
|
||||
QScrollBar:handle:vertical:hover {
|
||||
|
@ -1,5 +1,5 @@
|
||||
QTextEdit {
|
||||
border-color: #c4c1bd;
|
||||
border-color: @lightGrey;
|
||||
border-style: solid;
|
||||
border-width: 1px 0 1px 1px;
|
||||
}
|
||||
|
36
ui/settings/mainContent.css
Normal file
@ -0,0 +1,36 @@
|
||||
QCheckBox
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
QLabel
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
QGroupBox::title
|
||||
{
|
||||
color: black;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
QWidget
|
||||
{
|
||||
color: black;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
QComboBox
|
||||
{
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
QComboBox:on QComboBox:off QComboBox:drop-down
|
||||
{
|
||||
background: rgba(18, 18, 18, 204);
|
||||
}
|
||||
|
||||
QComboBox:active
|
||||
{
|
||||
background: white;
|
||||
}
|
5
ui/settings/mainHead.css
Normal file
@ -0,0 +1,5 @@
|
||||
QWidget
|
||||
{
|
||||
color: black;
|
||||
background: white;
|
||||
}
|
Before Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 372 B |
Before Width: | Height: | Size: 401 B |
Before Width: | Height: | Size: 401 B |
Before Width: | Height: | Size: 402 B |
Before Width: | Height: | Size: 371 B |
Before Width: | Height: | Size: 371 B |
Before Width: | Height: | Size: 372 B |
Before Width: | Height: | Size: 401 B |