Copy the iTunes database off a libimobiledevice device and load it from the local file
This commit is contained in:
parent
7fce4ada7d
commit
7a6499abde
@ -493,14 +493,21 @@ if(GIO_FOUND)
|
||||
list(APPEND HEADERS devices/giolister.h)
|
||||
endif(GIO_FOUND)
|
||||
|
||||
# libimobiledevice backend and device
|
||||
if(IMOBILEDEVICE_FOUND AND PLIST_FOUND)
|
||||
set(HAVE_IMOBILEDEVICE ON)
|
||||
include_directories(${IMOBILEDEVICE_INCLUDE_DIRS})
|
||||
include_directories(${PLIST_INCLUDE_DIRS})
|
||||
|
||||
list(APPEND SOURCES devices/afcdevice.cpp)
|
||||
list(APPEND SOURCES devices/afcfile.cpp)
|
||||
list(APPEND SOURCES devices/afctransfer.cpp)
|
||||
list(APPEND SOURCES devices/ilister.cpp)
|
||||
list(APPEND SOURCES devices/imobiledeviceconnection.cpp)
|
||||
|
||||
list(APPEND HEADERS devices/afcdevice.h)
|
||||
list(APPEND HEADERS devices/afcfile.h)
|
||||
list(APPEND HEADERS devices/afctransfer.h)
|
||||
list(APPEND HEADERS devices/ilister.h)
|
||||
endif(IMOBILEDEVICE_FOUND AND PLIST_FOUND)
|
||||
|
||||
@ -514,8 +521,12 @@ endif(APPLE)
|
||||
list(APPEND OTHER_SOURCES
|
||||
core/macglobalshortcutbackend.h
|
||||
core/macglobalshortcutbackend.mm
|
||||
devices/afcdevice.cpp
|
||||
devices/afcdevice.h
|
||||
devices/afcfile.cpp
|
||||
devices/afcfile.h
|
||||
devices/afctransfer.cpp
|
||||
devices/afctransfer.h
|
||||
devices/devicekitlister.h
|
||||
devices/devicekitlister.cpp
|
||||
devices/gpoddevice.cpp
|
||||
@ -524,6 +535,8 @@ list(APPEND OTHER_SOURCES
|
||||
devices/gpodloader.h
|
||||
devices/ilister.cpp
|
||||
devices/ilister.h
|
||||
devices/imobiledeviceconnection.cpp
|
||||
devices/imobiledeviceconnection.h
|
||||
ui/macsystemtrayicon.h
|
||||
ui/macsystemtrayicon.mm
|
||||
widgets/osd_mac.mm
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <QCoreApplication>
|
||||
#include <QDir>
|
||||
#include <QStringList>
|
||||
#include <QTemporaryFile>
|
||||
|
||||
#if defined(Q_OS_UNIX)
|
||||
# include <sys/statvfs.h>
|
||||
@ -109,4 +110,29 @@ quint64 FileSystemFreeSpace(const QString& path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString MakeTempDir() {
|
||||
QString path;
|
||||
{
|
||||
QTemporaryFile tempfile;
|
||||
tempfile.open();
|
||||
path = tempfile.fileName();
|
||||
}
|
||||
|
||||
QDir d;
|
||||
d.mkdir(path);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
void RemoveRecursive(const QString& path) {
|
||||
QDir dir(path);
|
||||
foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs))
|
||||
RemoveRecursive(path + "/" + child);
|
||||
|
||||
foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Files))
|
||||
QFile::remove(path + "/" + child);
|
||||
|
||||
dir.rmdir(path);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -26,6 +26,9 @@ namespace Utilities {
|
||||
|
||||
quint64 FileSystemCapacity(const QString& path);
|
||||
quint64 FileSystemFreeSpace(const QString& path);
|
||||
|
||||
QString MakeTempDir();
|
||||
void RemoveRecursive(const QString& path);
|
||||
}
|
||||
|
||||
#endif // UTILITIES_H
|
||||
|
84
src/devices/afcdevice.cpp
Normal file
84
src/devices/afcdevice.cpp
Normal file
@ -0,0 +1,84 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "afcdevice.h"
|
||||
#include "afctransfer.h"
|
||||
#include "devicemanager.h"
|
||||
#include "gpodloader.h"
|
||||
#include "core/utilities.h"
|
||||
|
||||
#include <QThread>
|
||||
|
||||
AfcDevice::AfcDevice(
|
||||
const QUrl& url, DeviceLister* lister, const QString& unique_id,
|
||||
DeviceManager* manager, int database_id, bool first_time)
|
||||
: ConnectedDevice(url, lister, unique_id, manager, database_id, first_time),
|
||||
loader_thread_(new QThread(this)),
|
||||
transfer_(NULL),
|
||||
loader_(NULL),
|
||||
db_(NULL)
|
||||
{
|
||||
// Make a new temporary directory for the iTunesDB. We copy it off the iPod
|
||||
// so that libgpod can have a local directory to use.
|
||||
local_path_ = Utilities::MakeTempDir();
|
||||
InitBackendDirectory(local_path_, first_time);
|
||||
model_->Init();
|
||||
|
||||
transfer_ = new AfcTransfer(url.host(), local_path_, manager_->task_manager());
|
||||
transfer_->moveToThread(loader_thread_);
|
||||
|
||||
connect(transfer_, SIGNAL(TaskStarted(int)), SIGNAL(TaskStarted(int)));
|
||||
connect(transfer_, SIGNAL(CopyFinished()), SLOT(CopyFinished()));
|
||||
connect(loader_thread_, SIGNAL(started()), transfer_, SLOT(CopyFromDevice()));
|
||||
loader_thread_->start();
|
||||
}
|
||||
|
||||
AfcDevice::~AfcDevice() {
|
||||
Utilities::RemoveRecursive(local_path_);
|
||||
}
|
||||
|
||||
void AfcDevice::CopyFinished() {
|
||||
transfer_->deleteLater();
|
||||
transfer_ = NULL;
|
||||
|
||||
// Now load the songs from the local database
|
||||
loader_ = new GPodLoader(local_path_, manager_->task_manager(), backend_);
|
||||
loader_->moveToThread(loader_thread_);
|
||||
|
||||
connect(loader_, SIGNAL(Error(QString)), SIGNAL(Error(QString)));
|
||||
connect(loader_, SIGNAL(TaskStarted(int)), SIGNAL(TaskStarted(int)));
|
||||
connect(loader_, SIGNAL(LoadFinished(Itdb_iTunesDB*)), SLOT(LoadFinished(Itdb_iTunesDB*)));
|
||||
QMetaObject::invokeMethod(loader_, "LoadDatabase");
|
||||
}
|
||||
|
||||
void AfcDevice::LoadFinished(Itdb_iTunesDB* db) {
|
||||
QMutexLocker l(&db_mutex_);
|
||||
db_ = db;
|
||||
db_wait_cond_.wakeAll();
|
||||
|
||||
loader_->deleteLater();
|
||||
loader_ = NULL;
|
||||
}
|
||||
|
||||
bool AfcDevice::CopyToStorage(const QString &source, const QString &destination,
|
||||
const Song &metadata, bool overwrite,
|
||||
bool remove_original) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AfcDevice::DeleteFromStorage(const Song &metadata) {
|
||||
return false;
|
||||
}
|
64
src/devices/afcdevice.h
Normal file
64
src/devices/afcdevice.h
Normal file
@ -0,0 +1,64 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef AFCDEVICE_H
|
||||
#define AFCDEVICE_H
|
||||
|
||||
#include "connecteddevice.h"
|
||||
|
||||
#include <QMutex>
|
||||
#include <QWaitCondition>
|
||||
|
||||
#include <gpod/itdb.h>
|
||||
|
||||
class AfcTransfer;
|
||||
class GPodLoader;
|
||||
|
||||
class AfcDevice : public ConnectedDevice {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Q_INVOKABLE AfcDevice(const QUrl& url, DeviceLister* lister,
|
||||
const QString& unique_id, DeviceManager* manager,
|
||||
int database_id, bool first_time);
|
||||
~AfcDevice();
|
||||
|
||||
static QStringList url_schemes() { return QStringList() << "afc"; }
|
||||
|
||||
bool CopyToStorage(const QString &source, const QString &destination,
|
||||
const Song &metadata, bool overwrite, bool remove_original);
|
||||
bool DeleteFromStorage(const Song &metadata);
|
||||
|
||||
private slots:
|
||||
void CopyFinished();
|
||||
void LoadFinished(Itdb_iTunesDB* db);
|
||||
|
||||
private:
|
||||
void RemoveRecursive(const QString& path);
|
||||
|
||||
private:
|
||||
QThread* loader_thread_;
|
||||
AfcTransfer* transfer_;
|
||||
GPodLoader* loader_;
|
||||
|
||||
QString local_path_;
|
||||
|
||||
QWaitCondition db_wait_cond_;
|
||||
QMutex db_mutex_;
|
||||
Itdb_iTunesDB* db_;
|
||||
};
|
||||
|
||||
#endif // AFCDEVICE_H
|
@ -1,18 +1,27 @@
|
||||
#include "afcfile.h"
|
||||
#include "imobiledeviceconnection.h"
|
||||
|
||||
#include <libimobiledevice/afc.h>
|
||||
|
||||
AFCFile::AFCFile(afc_client_t client, const QUrl& url, QObject* parent)
|
||||
: QIODevice(parent),
|
||||
client_(client),
|
||||
url_(url) {
|
||||
AfcFile::AfcFile(afc_client_t client, const QString& path, QObject* parent)
|
||||
: QIODevice(parent),
|
||||
client_(client),
|
||||
path_(path)
|
||||
{
|
||||
}
|
||||
|
||||
AFCFile::~AFCFile() {
|
||||
AfcFile::AfcFile(iMobileDeviceConnection* connection, const QString& path, QObject* parent)
|
||||
: QIODevice(parent),
|
||||
client_(connection->afc()),
|
||||
path_(path)
|
||||
{
|
||||
}
|
||||
|
||||
AfcFile::~AfcFile() {
|
||||
|
||||
}
|
||||
|
||||
bool AFCFile::open(QIODevice::OpenMode mode) {
|
||||
bool AfcFile::open(QIODevice::OpenMode mode) {
|
||||
afc_file_mode_t afc_mode;
|
||||
switch (mode) {
|
||||
case ReadOnly:
|
||||
@ -29,7 +38,7 @@ bool AFCFile::open(QIODevice::OpenMode mode) {
|
||||
afc_mode = AFC_FOPEN_RW;
|
||||
}
|
||||
afc_error_t err = afc_file_open(
|
||||
client_, url_.path().toUtf8().constData(), afc_mode, &handle_);
|
||||
client_, path_.toUtf8().constData(), afc_mode, &handle_);
|
||||
if (err != AFC_E_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
@ -37,12 +46,12 @@ bool AFCFile::open(QIODevice::OpenMode mode) {
|
||||
return QIODevice::open(mode);
|
||||
}
|
||||
|
||||
void AFCFile::close() {
|
||||
void AfcFile::close() {
|
||||
afc_file_close(client_, handle_);
|
||||
QIODevice::close();
|
||||
}
|
||||
|
||||
bool AFCFile::seek(qint64 pos) {
|
||||
bool AfcFile::seek(qint64 pos) {
|
||||
afc_error_t err = afc_file_seek(client_, handle_, pos, SEEK_SET);
|
||||
if (err != AFC_E_SUCCESS) {
|
||||
return false;
|
||||
@ -51,7 +60,7 @@ bool AFCFile::seek(qint64 pos) {
|
||||
return true;
|
||||
}
|
||||
|
||||
qint64 AFCFile::readData(char* data, qint64 max_size) {
|
||||
qint64 AfcFile::readData(char* data, qint64 max_size) {
|
||||
uint32_t bytes_read = 0;
|
||||
afc_error_t err = afc_file_read(client_, handle_, data, max_size, &bytes_read);
|
||||
if (err != AFC_E_SUCCESS) {
|
||||
@ -60,7 +69,7 @@ qint64 AFCFile::readData(char* data, qint64 max_size) {
|
||||
return bytes_read;
|
||||
}
|
||||
|
||||
qint64 AFCFile::writeData(const char* data, qint64 max_size) {
|
||||
qint64 AfcFile::writeData(const char* data, qint64 max_size) {
|
||||
uint32_t bytes_written = 0;
|
||||
afc_error_t err = afc_file_write(client_, handle_, data, max_size, &bytes_written);
|
||||
if (err != AFC_E_SUCCESS) {
|
||||
|
@ -4,23 +4,25 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include <QIODevice>
|
||||
#include <QUrl>
|
||||
|
||||
struct afc_client_private;
|
||||
typedef afc_client_private* afc_client_t;
|
||||
#include <libimobiledevice/afc.h>
|
||||
|
||||
class AFCFile : public QIODevice {
|
||||
class iMobileDeviceConnection;
|
||||
|
||||
class AfcFile : public QIODevice {
|
||||
Q_OBJECT
|
||||
public:
|
||||
AFCFile(afc_client_t client, const QUrl& url, QObject* parent = 0);
|
||||
~AFCFile();
|
||||
|
||||
public:
|
||||
AfcFile(afc_client_t client, const QString& path, QObject* parent = 0);
|
||||
AfcFile(iMobileDeviceConnection* connection, const QString& path, QObject* parent = 0);
|
||||
~AfcFile();
|
||||
|
||||
// QIODevice
|
||||
void close();
|
||||
bool open(OpenMode mode);
|
||||
bool seek(qint64 pos);
|
||||
|
||||
private:
|
||||
private:
|
||||
// QIODevice
|
||||
qint64 readData(char* data, qint64 max_size);
|
||||
qint64 writeData(const char* data, qint64 max_size);
|
||||
@ -28,7 +30,7 @@ class AFCFile : public QIODevice {
|
||||
afc_client_t client_;
|
||||
uint64_t handle_;
|
||||
|
||||
QUrl url_;
|
||||
QString path_;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
78
src/devices/afctransfer.cpp
Normal file
78
src/devices/afctransfer.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "afcfile.h"
|
||||
#include "afctransfer.h"
|
||||
#include "imobiledeviceconnection.h"
|
||||
#include "core/taskmanager.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QtDebug>
|
||||
|
||||
AfcTransfer::AfcTransfer(const QString& uuid, const QString& local_destination,
|
||||
TaskManager* task_manager, QObject* parent)
|
||||
: QObject(parent),
|
||||
task_manager_(task_manager),
|
||||
uuid_(uuid),
|
||||
local_destination_(local_destination)
|
||||
{
|
||||
original_thread_ = thread();
|
||||
}
|
||||
|
||||
void AfcTransfer::CopyFromDevice() {
|
||||
int task_id = task_manager_->StartTask(tr("Copying iPod database"));
|
||||
emit TaskStarted(task_id);
|
||||
|
||||
// Connect to the device
|
||||
iMobileDeviceConnection c(uuid_);
|
||||
|
||||
CopyDirFromDevice(&c, "/iTunes_Control/Device");
|
||||
CopyDirFromDevice(&c, "/iTunes_Control/iTunes");
|
||||
|
||||
moveToThread(original_thread_);
|
||||
task_manager_->SetTaskFinished(task_id);
|
||||
emit CopyFinished();
|
||||
}
|
||||
|
||||
void AfcTransfer::CopyDirFromDevice(iMobileDeviceConnection* c, const QString& path) {
|
||||
foreach (const QString& filename, c->ReadDirectory(path, QDir::Files | QDir::NoDotAndDotDot)) {
|
||||
CopyFileFromDevice(c, path + "/" + filename);
|
||||
}
|
||||
|
||||
foreach (const QString& dir, c->ReadDirectory(path, QDir::Dirs | QDir::NoDotAndDotDot)) {
|
||||
CopyDirFromDevice(c, path + "/" + dir);
|
||||
}
|
||||
}
|
||||
|
||||
void AfcTransfer::CopyFileFromDevice(iMobileDeviceConnection *c, const QString &path) {
|
||||
QString local_filename = local_destination_ + path;
|
||||
QString local_dir = local_filename.section('/', 0, -2);
|
||||
|
||||
QDir d;
|
||||
d.mkpath(local_dir);
|
||||
|
||||
QFile dest(local_filename);
|
||||
AfcFile source(c, path);
|
||||
|
||||
dest.open(QIODevice::WriteOnly);
|
||||
source.open(QIODevice::ReadOnly);
|
||||
|
||||
dest.write(source.readAll());
|
||||
}
|
||||
|
||||
void AfcTransfer::CopyToDevice() {
|
||||
|
||||
}
|
52
src/devices/afctransfer.h
Normal file
52
src/devices/afctransfer.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef AFCTRANSFER_H
|
||||
#define AFCTRANSFER_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class iMobileDeviceConnection;
|
||||
class TaskManager;
|
||||
|
||||
class AfcTransfer : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AfcTransfer(const QString& uuid, const QString& local_destination,
|
||||
TaskManager* task_manager, QObject* parent = 0);
|
||||
|
||||
public slots:
|
||||
void CopyFromDevice();
|
||||
void CopyToDevice();
|
||||
|
||||
signals:
|
||||
void TaskStarted(int task_id);
|
||||
void CopyFinished();
|
||||
|
||||
private:
|
||||
void CopyDirFromDevice(iMobileDeviceConnection* c, const QString& path);
|
||||
void CopyFileFromDevice(iMobileDeviceConnection* c, const QString& path);
|
||||
|
||||
private:
|
||||
QThread* original_thread_;
|
||||
|
||||
TaskManager* task_manager_;
|
||||
QString uuid_;
|
||||
QString local_destination_;
|
||||
};
|
||||
|
||||
#endif // AFCTRANSFER_H
|
@ -35,6 +35,7 @@
|
||||
# include "giolister.h"
|
||||
#endif
|
||||
#ifdef HAVE_IMOBILEDEVICE
|
||||
# include "afcdevice.h"
|
||||
# include "ilister.h"
|
||||
#endif
|
||||
|
||||
@ -162,6 +163,7 @@ DeviceManager::DeviceManager(BackgroundThread<Database>* database,
|
||||
#endif
|
||||
#ifdef HAVE_IMOBILEDEVICE
|
||||
AddLister(new iLister);
|
||||
AddDeviceClass<AfcDevice>();
|
||||
#endif
|
||||
|
||||
AddDeviceClass<FilesystemDevice>();
|
||||
|
@ -1,18 +1,15 @@
|
||||
#include "ilister.h"
|
||||
#include "imobiledeviceconnection.h"
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QStringList>
|
||||
#include <QtDebug>
|
||||
|
||||
#include <plist/plist.h>
|
||||
|
||||
iLister::iLister() {
|
||||
}
|
||||
|
||||
iLister::~iLister() {
|
||||
}
|
||||
|
||||
|
||||
void iLister::Init() {
|
||||
idevice_event_subscribe(&EventCallback, reinterpret_cast<void*>(this));
|
||||
}
|
||||
@ -36,72 +33,6 @@ void iLister::EventCallback(const idevice_event_t* event, void* context) {
|
||||
}
|
||||
|
||||
|
||||
iLister::Connection::Connection(const char* uuid)
|
||||
: device_(NULL), lockdown_(NULL), afc_(NULL), afc_port_(0) {
|
||||
idevice_error_t err = idevice_new(&device_, uuid);
|
||||
if (err != IDEVICE_E_SUCCESS) {
|
||||
qWarning() << "idevice error:" << err;
|
||||
return;
|
||||
}
|
||||
|
||||
const char* label = QCoreApplication::applicationName().toUtf8().constData();
|
||||
lockdownd_error_t lockdown_err =
|
||||
lockdownd_client_new_with_handshake(device_, &lockdown_, label);
|
||||
if (lockdown_err != LOCKDOWN_E_SUCCESS) {
|
||||
qWarning() << "lockdown error:" << lockdown_err;
|
||||
return;
|
||||
}
|
||||
|
||||
lockdown_err = lockdownd_start_service(lockdown_, "com.apple.afc", &afc_port_);
|
||||
if (lockdown_err != LOCKDOWN_E_SUCCESS) {
|
||||
qWarning() << "lockdown error:" << lockdown_err;
|
||||
return;
|
||||
}
|
||||
|
||||
afc_error_t afc_err = afc_client_new(device_, afc_port_, &afc_);
|
||||
if (afc_err != 0) {
|
||||
qWarning() << "afc error:" << afc_err;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
iLister::Connection::~Connection() {
|
||||
if (afc_) {
|
||||
afc_client_free(afc_);
|
||||
}
|
||||
if (lockdown_) {
|
||||
lockdownd_client_free(lockdown_);
|
||||
}
|
||||
if (device_) {
|
||||
idevice_free(device_);
|
||||
}
|
||||
}
|
||||
|
||||
QString iLister::Connection::GetProperty(const char* property) {
|
||||
plist_t node = NULL;
|
||||
lockdownd_get_value(lockdown_, NULL, property, &node);
|
||||
char* value = NULL;
|
||||
plist_get_string_val(node, &value);
|
||||
plist_free(node);
|
||||
|
||||
QString ret = QString::fromUtf8(value);
|
||||
free(value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
quint64 iLister::Connection::GetInfoLongLong(const char* key) {
|
||||
char* value = NULL;
|
||||
afc_error_t err = afc_get_device_info_key(afc_, key, &value);
|
||||
if (err != AFC_E_SUCCESS || !value) {
|
||||
return 0;
|
||||
}
|
||||
QString num = QString::fromAscii(value);
|
||||
quint64 ret = num.toULongLong();
|
||||
free(value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void iLister::DeviceAddedCallback(const char* uuid) {
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
|
||||
@ -202,10 +133,10 @@ QList<QUrl> iLister::MakeDeviceUrls(const QString& id) {
|
||||
|
||||
void iLister::UnmountDevice(const QString& id) { }
|
||||
|
||||
iLister::DeviceInfo iLister::ReadDeviceInfo(const char *uuid) {
|
||||
iLister::DeviceInfo iLister::ReadDeviceInfo(const char* uuid) {
|
||||
DeviceInfo ret;
|
||||
|
||||
Connection conn(uuid);
|
||||
iMobileDeviceConnection conn(uuid);
|
||||
ret.uuid = uuid;
|
||||
ret.product_type = conn.GetProperty("ProductType");
|
||||
ret.free_bytes = conn.GetInfoLongLong("FSFreeBytes");
|
||||
|
@ -3,9 +3,7 @@
|
||||
|
||||
#include "devicelister.h"
|
||||
|
||||
#include <libimobiledevice/afc.h>
|
||||
#include <libimobiledevice/libimobiledevice.h>
|
||||
#include <libimobiledevice/lockdown.h>
|
||||
|
||||
#include <QMutex>
|
||||
|
||||
@ -15,7 +13,7 @@ class iLister : public DeviceLister {
|
||||
iLister();
|
||||
~iLister();
|
||||
|
||||
int priority() const { return 25; }
|
||||
int priority() const { return 120; }
|
||||
|
||||
virtual QStringList DeviceUniqueIDs();
|
||||
virtual QStringList DeviceIcons(const QString& id);
|
||||
@ -38,22 +36,6 @@ class iLister : public DeviceLister {
|
||||
quint64 total_bytes;
|
||||
};
|
||||
|
||||
class Connection {
|
||||
public:
|
||||
explicit Connection(const char* uuid);
|
||||
~Connection();
|
||||
|
||||
QString GetProperty(const char* property);
|
||||
quint64 GetInfoLongLong(const char* key);
|
||||
|
||||
private:
|
||||
idevice_t device_;
|
||||
lockdownd_client_t lockdown_;
|
||||
afc_client_t afc_;
|
||||
|
||||
uint16_t afc_port_;
|
||||
};
|
||||
|
||||
virtual void Init();
|
||||
|
||||
static void EventCallback(const idevice_event_t* event, void* context);
|
||||
|
143
src/devices/imobiledeviceconnection.cpp
Normal file
143
src/devices/imobiledeviceconnection.cpp
Normal file
@ -0,0 +1,143 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "imobiledeviceconnection.h"
|
||||
|
||||
#include <plist/plist.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QtDebug>
|
||||
|
||||
iMobileDeviceConnection::iMobileDeviceConnection(const QString& uuid)
|
||||
: device_(NULL), lockdown_(NULL), afc_(NULL), afc_port_(0) {
|
||||
idevice_error_t err = idevice_new(&device_, uuid.toUtf8().constData());
|
||||
if (err != IDEVICE_E_SUCCESS) {
|
||||
qWarning() << "idevice error:" << err;
|
||||
return;
|
||||
}
|
||||
|
||||
const char* label = QCoreApplication::applicationName().toUtf8().constData();
|
||||
lockdownd_error_t lockdown_err =
|
||||
lockdownd_client_new_with_handshake(device_, &lockdown_, label);
|
||||
if (lockdown_err != LOCKDOWN_E_SUCCESS) {
|
||||
qWarning() << "lockdown error:" << lockdown_err;
|
||||
return;
|
||||
}
|
||||
|
||||
lockdown_err = lockdownd_start_service(lockdown_, "com.apple.afc", &afc_port_);
|
||||
if (lockdown_err != LOCKDOWN_E_SUCCESS) {
|
||||
qWarning() << "lockdown error:" << lockdown_err;
|
||||
return;
|
||||
}
|
||||
|
||||
afc_error_t afc_err = afc_client_new(device_, afc_port_, &afc_);
|
||||
if (afc_err != 0) {
|
||||
qWarning() << "afc error:" << afc_err;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
iMobileDeviceConnection::~iMobileDeviceConnection() {
|
||||
if (afc_) {
|
||||
afc_client_free(afc_);
|
||||
}
|
||||
if (lockdown_) {
|
||||
lockdownd_client_free(lockdown_);
|
||||
}
|
||||
if (device_) {
|
||||
idevice_free(device_);
|
||||
}
|
||||
}
|
||||
|
||||
QString iMobileDeviceConnection::GetProperty(const QString& property) {
|
||||
plist_t node = NULL;
|
||||
lockdownd_get_value(lockdown_, NULL, property.toUtf8().constData(), &node);
|
||||
char* value = NULL;
|
||||
plist_get_string_val(node, &value);
|
||||
plist_free(node);
|
||||
|
||||
QString ret = QString::fromUtf8(value);
|
||||
free(value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
quint64 iMobileDeviceConnection::GetInfoLongLong(const QString& key) {
|
||||
char* value = NULL;
|
||||
afc_error_t err = afc_get_device_info_key(afc_, key.toUtf8().constData(), &value);
|
||||
if (err != AFC_E_SUCCESS || !value) {
|
||||
return 0;
|
||||
}
|
||||
QString num = QString::fromAscii(value);
|
||||
quint64 ret = num.toULongLong();
|
||||
free(value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
QStringList iMobileDeviceConnection::ReadDirectory(const QString& path,
|
||||
QDir::Filters filters) {
|
||||
char** list = NULL;
|
||||
afc_error_t err = afc_read_directory(afc_, path.toUtf8().constData(), &list);
|
||||
if (err != AFC_E_SUCCESS || !list) {
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
QStringList ret;
|
||||
for (char** p = list ; *p != NULL ; ++p) {
|
||||
QString filename = QString::fromUtf8(*p);
|
||||
free(*p);
|
||||
|
||||
if (filters == QDir::NoFilter)
|
||||
ret << filename;
|
||||
else {
|
||||
if (filters & QDir::NoDotAndDotDot && (filename == "." || filename == ".."))
|
||||
continue;
|
||||
if (!(filters & QDir::Hidden) && filename.startsWith("."))
|
||||
continue;
|
||||
|
||||
QString filetype = GetFileInfo(path + "/" + filename, "st_ifmt");
|
||||
if ((filetype == "S_IFREG" && (filters & QDir::Files)) ||
|
||||
(filetype == "S_IFDIR" && (filters & QDir::Dirs)) ||
|
||||
(filetype == "S_IFLNK" && (!(filters & QDir::NoSymLinks))))
|
||||
ret << filename;
|
||||
}
|
||||
}
|
||||
free(list);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString iMobileDeviceConnection::GetFileInfo(const QString& path, const QString& key) {
|
||||
QString ret;
|
||||
char** infolist = NULL;
|
||||
afc_error_t err = afc_get_file_info(afc_, path.toUtf8().constData(), &infolist);
|
||||
if (err != AFC_E_SUCCESS || !infolist) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString last_key;
|
||||
for (char** p = infolist ; *p != NULL ; ++p) {
|
||||
if (last_key.isNull()) {
|
||||
last_key = QString::fromUtf8(*p);
|
||||
} else {
|
||||
if (last_key == key)
|
||||
ret = QString::fromUtf8(*p);
|
||||
last_key = QString();
|
||||
}
|
||||
free(*p);
|
||||
}
|
||||
free(infolist);
|
||||
return ret;
|
||||
}
|
50
src/devices/imobiledeviceconnection.h
Normal file
50
src/devices/imobiledeviceconnection.h
Normal file
@ -0,0 +1,50 @@
|
||||
/* This file is part of Clementine.
|
||||
|
||||
Clementine is free 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.
|
||||
|
||||
Clementine is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef IMOBILEDEVICECONNECTION_H
|
||||
#define IMOBILEDEVICECONNECTION_H
|
||||
|
||||
#include <libimobiledevice/afc.h>
|
||||
#include <libimobiledevice/libimobiledevice.h>
|
||||
#include <libimobiledevice/lockdown.h>
|
||||
|
||||
#include <QDir>
|
||||
#include <QStringList>
|
||||
|
||||
class iMobileDeviceConnection {
|
||||
public:
|
||||
iMobileDeviceConnection(const QString& uuid);
|
||||
~iMobileDeviceConnection();
|
||||
|
||||
afc_client_t afc() { return afc_; }
|
||||
|
||||
QString GetProperty(const QString& property);
|
||||
quint64 GetInfoLongLong(const QString& key);
|
||||
QStringList ReadDirectory(const QString& path, QDir::Filters filters = QDir::NoFilter);
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(iMobileDeviceConnection);
|
||||
|
||||
QString GetFileInfo(const QString& path, const QString& key);
|
||||
|
||||
idevice_t device_;
|
||||
lockdownd_client_t lockdown_;
|
||||
afc_client_t afc_;
|
||||
|
||||
uint16_t afc_port_;
|
||||
};
|
||||
|
||||
#endif // IMOBILEDEVICECONNECTION_H
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-05-21 01:02+0000\n"
|
||||
"Last-Translator: EL7R <the-ghost@live.com>\n"
|
||||
"Language-Team: Arabic <ar@li.org>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ar\n"
|
||||
"X-Launchpad-Export-Date: 2010-05-22 04:09+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,7 +1737,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "أضِف %n أغاني\\أغنية"
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr "انقل الأغاني"
|
||||
msgid "options"
|
||||
msgstr "الخيارات"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "أزِل %n أغاني\\أغنية"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-06 14:54+0000\n"
|
||||
"Last-Translator: Hristo Apostolov <Unknown>\n"
|
||||
"Language-Team: Bulgarian <bg@li.org>\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: bg\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-07 03:52+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,7 +1737,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 03:50+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: cs_CZ\n"
|
||||
@ -45,15 +45,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -382,6 +382,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Zkopírovat do knihovny..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -583,7 +586,7 @@ msgstr "Upravit informaci o skladbách..."
|
||||
msgid "Edit..."
|
||||
msgstr "Upravit..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Úprava %n stop"
|
||||
|
||||
@ -1738,7 +1741,7 @@ msgstr "Vynulovat"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[pro úpravy klikněte]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "Přidej %n skladby"
|
||||
|
||||
@ -1758,7 +1761,7 @@ msgstr "Přesuň skladby"
|
||||
msgid "options"
|
||||
msgstr "Možnosti"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "Odeber %n skladeb"
|
||||
|
||||
|
@ -12,10 +12,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-16 21:57+0000\n"
|
||||
"Last-Translator: Kabel <CaptainKabel@gmail.com>\n"
|
||||
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
|
||||
"Language: da\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-17 04:04+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -45,15 +45,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -382,6 +382,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Kopiér til bibliotek..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -583,7 +586,7 @@ msgstr "Redigér sporinformation..."
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Redigerer %n spor"
|
||||
|
||||
@ -1741,7 +1744,7 @@ msgstr "Nul"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[Klik for at redigere]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "tilføj %n sange"
|
||||
|
||||
@ -1761,7 +1764,7 @@ msgstr "flyt sange"
|
||||
msgid "options"
|
||||
msgstr "indstillinger"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "fjern %n sange"
|
||||
|
||||
|
@ -12,10 +12,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-19 11:13+0000\n"
|
||||
"Last-Translator: murrayy <julian.held@gmail.com>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-20 04:01+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -45,15 +45,15 @@ msgstr "%1 ausgewählt von"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 Stücke"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n fehlgeschlagen"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n konvertiert"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n verbleibend"
|
||||
|
||||
@ -388,6 +388,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "In die Musiksammlung kopieren..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -591,7 +594,7 @@ msgstr "Metadaten bearbeiten..."
|
||||
msgid "Edit..."
|
||||
msgstr "Bearbeiten..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "%n Stücke bearbeiten"
|
||||
|
||||
@ -1764,7 +1767,7 @@ msgstr "Null"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[zum Bearbeiten klicken]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "%n Stücke hinzufügen"
|
||||
|
||||
@ -1784,7 +1787,7 @@ msgstr "Stücke verschieben"
|
||||
msgid "options"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "%n Stücke entfernen"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-18 09:56+0000\n"
|
||||
"Last-Translator: firewalker <Unknown>\n"
|
||||
"Language-Team: <en@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-19 03:54+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: el_GR\n"
|
||||
@ -46,15 +46,15 @@ msgstr "%1 επιλεγμένα από"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 κομμάτια"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n απέτυχε"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n ολοκληρώθηκε"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n απομένει"
|
||||
|
||||
@ -391,6 +391,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Αντιγραφή στην βιβλιοθήκη..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -594,7 +597,7 @@ msgstr "Τροποποίηση πληροφοριών κομματιού..."
|
||||
msgid "Edit..."
|
||||
msgstr "Επεξεργασία..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Τροποποίηση %n κομματιών"
|
||||
|
||||
@ -1769,7 +1772,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[κλικ για τροποποίηση]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "προσθήκη %n τραγουδιών"
|
||||
|
||||
@ -1789,7 +1792,7 @@ msgstr "μετακίνηση τραγουδιών"
|
||||
msgid "options"
|
||||
msgstr "επιλογές"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "αφαίρεση %n τραγουδιών"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-06-17 01:37+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: English (Canada) <en_CA@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-06-18 03:42+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n failed"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n finished"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n remaining"
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copy to library..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -584,7 +587,7 @@ msgstr "Edit track information..."
|
||||
msgid "Edit..."
|
||||
msgstr "Edit..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editing %n tracks"
|
||||
|
||||
@ -1739,7 +1742,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[click to edit]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "add %n songs"
|
||||
|
||||
@ -1759,7 +1762,7 @@ msgstr "move songs"
|
||||
msgid "options"
|
||||
msgstr "options"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "remove %n songs"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-06-17 01:38+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-06-18 03:42+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copy to library..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr "Edit track information..."
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editing %n tracks"
|
||||
|
||||
@ -1736,7 +1739,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[click to edit]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1756,7 +1759,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "options"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-19 21:03+0000\n"
|
||||
"Last-Translator: Carlos Jenkins Pérez <Unknown>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-20 04:01+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: es_ES\n"
|
||||
@ -45,15 +45,15 @@ msgstr "%1 seleccionadas de"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 pistas"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n fallaron"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n completado(s)"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n pendiente(s)"
|
||||
|
||||
@ -391,6 +391,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copiar a la colección..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -595,7 +598,7 @@ msgstr "Editar información de la pista..."
|
||||
msgid "Edit..."
|
||||
msgstr "Editar..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editando %n pistas"
|
||||
|
||||
@ -1770,7 +1773,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[click para editar]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "agregar %n pistas"
|
||||
|
||||
@ -1790,7 +1793,7 @@ msgstr "mover pistas"
|
||||
msgid "options"
|
||||
msgstr "opciones"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "remover %n pistas"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-06-30 12:14+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-01 03:58+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 kappaletta"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Kopioi kirjastoon"
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr "Muokkaa kappaleen tietoja..."
|
||||
msgid "Edit..."
|
||||
msgstr "Muokkaa..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1736,7 +1739,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1756,7 +1759,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-23 20:36+0000\n"
|
||||
"Last-Translator: Arno <arnaud.bienner@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-24 04:12+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: fr_FR\n"
|
||||
@ -45,15 +45,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 pistes"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n échoué"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n terminé"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n manquant"
|
||||
|
||||
@ -384,6 +384,9 @@ msgstr "Copier sur le périphérique"
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copier dans la bilbiothèque..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -587,7 +590,7 @@ msgstr "Modifier la description de la piste..."
|
||||
msgid "Edit..."
|
||||
msgstr "Éditer..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Éditer %n pistes"
|
||||
|
||||
@ -1750,7 +1753,7 @@ msgstr "Zéro"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[cliquer pour modifier]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1770,7 +1773,7 @@ msgstr "déplacer les chansons"
|
||||
msgid "options"
|
||||
msgstr "options"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-04-27 16:34+0000\n"
|
||||
"Last-Translator: andreout <andre@outeiro.com>\n"
|
||||
"Language-Team: Galician <gl@li.org>\n"
|
||||
"Language: gl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: gl\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-28 03:53+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copiar para a biblioteca"
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editando %n faixas"
|
||||
|
||||
@ -1736,7 +1739,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr "[clique para editar]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1756,7 +1759,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "Opzóns"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -12,10 +12,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-13 06:56+0000\n"
|
||||
"Last-Translator: Vincenzo Reale <smart2128@baslug.org>\n"
|
||||
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:50+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -45,15 +45,15 @@ msgstr "%1 selezionate di"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 tracce"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n non riusciti"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n completati"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n rimanenti"
|
||||
|
||||
@ -390,6 +390,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copia nella raccolta..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -593,7 +596,7 @@ msgstr "Modifica informazioni traccia..."
|
||||
msgid "Edit..."
|
||||
msgstr "Modifica..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Modifica di %n tracce"
|
||||
|
||||
@ -1774,7 +1777,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[clic per modificare]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "aggiungi %n brani"
|
||||
|
||||
@ -1794,7 +1797,7 @@ msgstr "sposta brani"
|
||||
msgid "options"
|
||||
msgstr "opzioni"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "rimuovi %n brani"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-04-27 16:33+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Kazakh <kk@li.org>\n"
|
||||
"Language: kk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: kk\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-28 03:53+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1736,7 +1739,7 @@ msgstr "Нөл"
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1756,7 +1759,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "опциялар"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-22 12:24+0000\n"
|
||||
"Last-Translator: Kazimieras Aliulis <Unknown>\n"
|
||||
"Language-Team: Lithuanian <lt@li.org>\n"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: lt\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-23 04:23+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "%1 pažymėta iš"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 takeliai"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,7 +1737,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-04-14 22:22+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"Language: nb\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nb\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-16 04:07+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Kopier til bibliotek..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr "Rediger informasjon om sporet..."
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Endrer %n spor"
|
||||
|
||||
@ -1738,7 +1741,7 @@ msgstr "Null"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[klikk for å endre]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1758,7 +1761,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-15 22:34+0000\n"
|
||||
"Last-Translator: Balaam's Miracle <Unknown>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nl\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-17 04:04+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "%1 geselecteerd van"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 tracks"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n mislukt"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n voltooid"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n te gaan"
|
||||
|
||||
@ -387,6 +387,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Naar bibliotheek kopiëren..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -590,7 +593,7 @@ msgstr "Trackinformatie bewerken..."
|
||||
msgid "Edit..."
|
||||
msgstr "Bewerken..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "%n tracks bewerken"
|
||||
|
||||
@ -1763,7 +1766,7 @@ msgstr "Nul"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[klik om te bewerken]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "%n nummers toevoegen"
|
||||
|
||||
@ -1783,7 +1786,7 @@ msgstr "nummers verplaatsen"
|
||||
msgid "options"
|
||||
msgstr "opties"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "%n nummers verwijderen"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-05-21 01:01+0000\n"
|
||||
"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
|
||||
"Language-Team: Occitan (post 1500) <oc@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-05-22 04:09+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,7 +1737,7 @@ msgstr "Zèro"
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "opcions"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-23 09:51+0000\n"
|
||||
"Last-Translator: Patryk Wychowaniec <patryk1303@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-24 04:12+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: pl_PL\n"
|
||||
@ -45,15 +45,15 @@ msgstr "%1 zaznaczonych z"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 ścieżek"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n zawiodło"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n zakończone"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -385,6 +385,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Skopiuj do biblioteki..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -588,7 +591,7 @@ msgstr "Edytuj informacje o utworze..."
|
||||
msgid "Edit..."
|
||||
msgstr "Edytuj..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Edytowanie %n ścieżek"
|
||||
|
||||
@ -1745,7 +1748,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr "[kliknij aby edytować]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1765,7 +1768,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "opcje"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 09:28+0000\n"
|
||||
"Last-Translator: Sérgio Marques <Unknown>\n"
|
||||
"Language-Team: Portuguese <pt@li.org>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pt\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "seleccionada(s) %1 de"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 faixas"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n falha(s)"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n concluída(s)"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n restante(s)"
|
||||
|
||||
@ -388,6 +388,9 @@ msgstr "Copiar para o dispositivo..."
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copiar para a biblioteca..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -591,7 +594,7 @@ msgstr "Editar a informação da faixa..."
|
||||
msgid "Edit..."
|
||||
msgstr "Editar..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editando %n faixas"
|
||||
|
||||
@ -1760,7 +1763,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[clique para editar]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "adicionar %n canções"
|
||||
|
||||
@ -1780,7 +1783,7 @@ msgstr "mover canções"
|
||||
msgid "options"
|
||||
msgstr "opções"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "remover %n canções"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-06-26 18:01+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pt_BR\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-27 03:57+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "%1 selecionado(s) de"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 faixas"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n falhou"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n fizalizado"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n faltando"
|
||||
|
||||
@ -384,6 +384,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copiar para biblioteca..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -587,7 +590,7 @@ msgstr "Editar informações da faixa..."
|
||||
msgid "Edit..."
|
||||
msgstr "Editar..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Editando %n faixas"
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[clique para editar]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "Adicionar %n músicas"
|
||||
|
||||
@ -1774,7 +1777,7 @@ msgstr "mover músicas"
|
||||
msgid "options"
|
||||
msgstr "opções"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "Remover %n músicas"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-05-03 21:09+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"Language: ro\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ro\n"
|
||||
"X-Launchpad-Export-Date: 2010-05-04 03:52+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Copiază în bibliotecă..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1735,7 +1738,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1755,7 +1758,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "opțiuni"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10,10 +10,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 06:51+0000\n"
|
||||
"Last-Translator: Pavel Maleev <Unknown>\n"
|
||||
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -43,15 +43,15 @@ msgstr "%1 выбрано из"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 композиций"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n с ошибкой"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n завершено"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n осталось"
|
||||
|
||||
@ -386,6 +386,9 @@ msgstr "Копировать на устройство..."
|
||||
msgid "Copy to library..."
|
||||
msgstr "Копировать в коллекцию..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -589,7 +592,7 @@ msgstr "Изменить информацию о композиции..."
|
||||
msgid "Edit..."
|
||||
msgstr "Изменить..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Редактирую %n треков"
|
||||
|
||||
@ -1760,7 +1763,7 @@ msgstr "По-умолчанию"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[щелкните, чтобы изменить]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "добавить %n композиций"
|
||||
|
||||
@ -1780,7 +1783,7 @@ msgstr "переместить композиции"
|
||||
msgid "options"
|
||||
msgstr "настройки"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "удалить %n композиций"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 09:42+0000\n"
|
||||
"Last-Translator: DAG Software <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Language: sk_SK\n"
|
||||
@ -45,15 +45,15 @@ msgstr "%1 vybratých z"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 skladieb"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n zlyhalo"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n dokončených"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n zostávajúcich"
|
||||
|
||||
@ -388,6 +388,9 @@ msgstr "Skopírovať na zariadenie..."
|
||||
msgid "Copy to library..."
|
||||
msgstr "Skopírovať do zbierky..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -591,7 +594,7 @@ msgstr "Upravť informácie o skladbe..."
|
||||
msgid "Edit..."
|
||||
msgstr "Upraviť..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Upravovanie %n skladieb"
|
||||
|
||||
@ -1758,7 +1761,7 @@ msgstr "Vynulovať"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[kliknite pre úpravu]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "pridať %n piesní"
|
||||
|
||||
@ -1778,7 +1781,7 @@ msgstr "presunúť piesne"
|
||||
msgid "options"
|
||||
msgstr "možnosti"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "odstrániť %n piesní"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-23 16:01+0000\n"
|
||||
"Last-Translator: Далибор Ђурић <Unknown>\n"
|
||||
"Language-Team: Serbian <sr@li.org>\n"
|
||||
"Language: sr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sr\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-24 04:12+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 нумера"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n завршено"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n преостало"
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Копирај у библиотеку"
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -584,7 +587,7 @@ msgstr "Уреди податке о нумери..."
|
||||
msgid "Edit..."
|
||||
msgstr "Уреди..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Уређивање %n нумера"
|
||||
|
||||
@ -1741,7 +1744,7 @@ msgstr "Нулто"
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "додај %n песама"
|
||||
|
||||
@ -1761,7 +1764,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "Опције"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "remove %n песама"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-21 16:23+0000\n"
|
||||
"Last-Translator: alopex <Unknown>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-22 04:11+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n misslyckades"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n färdig"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n återstår"
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Kopiera till bibliotek..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -584,7 +587,7 @@ msgstr "Redigera spårinformation..."
|
||||
msgid "Edit..."
|
||||
msgstr "Redigera..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Redigerar %n spår"
|
||||
|
||||
@ -1742,7 +1745,7 @@ msgstr "Noll"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[klicka för att redigera]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "Lägg till %n songer"
|
||||
|
||||
@ -1762,7 +1765,7 @@ msgstr "Flytta songer"
|
||||
msgid "options"
|
||||
msgstr "alternativ"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "Ta bort %n songer"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-15 05:59+0000\n"
|
||||
"Last-Translator: Cihan Ersoy <Unknown>\n"
|
||||
"Language-Team: Turkish <tr@li.org>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: tr\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-16 03:52+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 parça"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n başarısız"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n tamamlandı"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n kalan"
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "Kütüphaneye kopyala..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr "Parça bilgisini düzenle..."
|
||||
msgid "Edit..."
|
||||
msgstr "Düzenle..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1740,7 +1743,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr "[düzenlemek için tıklayın]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "%n şakıyı ekle"
|
||||
|
||||
@ -1760,7 +1763,7 @@ msgstr "Parçaları taşı"
|
||||
msgid "options"
|
||||
msgstr "seçenekler"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "%n şakıyı çıkart"
|
||||
|
||||
|
@ -34,15 +34,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -371,6 +371,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -572,7 +575,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1724,7 +1727,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1744,7 +1747,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 06:52+0000\n"
|
||||
"Last-Translator: Sergiy Gavrylov <sergiovana@bigmir.net>\n"
|
||||
"Language-Team: Ukrainian <uk@li.org>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: uk\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "вибрано з %1"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 доріжок"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n з помилкою"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n завершено"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n залишилось"
|
||||
|
||||
@ -387,6 +387,9 @@ msgstr "Копіювати до пристрою..."
|
||||
msgid "Copy to library..."
|
||||
msgstr "Скопіювати до фонотеки..."
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -590,7 +593,7 @@ msgstr "Редагувати дані про доріжку..."
|
||||
msgid "Edit..."
|
||||
msgstr "Змінити..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "Редагування %n доріжок"
|
||||
|
||||
@ -1759,7 +1762,7 @@ msgstr "Zero"
|
||||
msgid "[click to edit]"
|
||||
msgstr "[клацніть, щоб змінити]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "додати %n композицій"
|
||||
|
||||
@ -1779,7 +1782,7 @@ msgstr "перемістити композиції"
|
||||
msgid "options"
|
||||
msgstr "параметри"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "вилучити %n композицій"
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-06-07 01:43+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-06-08 03:51+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr ""
|
||||
msgid "%1 tracks"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr ""
|
||||
|
||||
@ -381,6 +381,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -582,7 +585,7 @@ msgstr ""
|
||||
msgid "Edit..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,7 +1737,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr ""
|
||||
|
||||
@ -1754,7 +1757,7 @@ msgstr ""
|
||||
msgid "options"
|
||||
msgstr "选项"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -11,10 +11,10 @@ msgstr ""
|
||||
"PO-Revision-Date: 2010-07-20 03:55+0000\n"
|
||||
"Last-Translator: David Sansome <me@davidsansome.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Launchpad-Export-Date: 2010-07-21 03:55+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
@ -44,15 +44,15 @@ msgstr "%1 選定"
|
||||
msgid "%1 tracks"
|
||||
msgstr "%1 歌曲"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n failed"
|
||||
msgstr "%n 失敗的"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n finished"
|
||||
msgstr "%n 完成的"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "%n remaining"
|
||||
msgstr "%n 剩餘的"
|
||||
|
||||
@ -385,6 +385,9 @@ msgstr ""
|
||||
msgid "Copy to library..."
|
||||
msgstr "複製到音樂庫"
|
||||
|
||||
msgid "Copying iPod database"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid ""
|
||||
"Could not create the GStreamer element \"%1\" - make sure you have all the "
|
||||
@ -586,7 +589,7 @@ msgstr "編輯歌曲資訊..."
|
||||
msgid "Edit..."
|
||||
msgstr "編輯..."
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "Editing %n tracks"
|
||||
msgstr "編輯 %n 歌曲"
|
||||
|
||||
@ -1741,7 +1744,7 @@ msgstr ""
|
||||
msgid "[click to edit]"
|
||||
msgstr "[點擊以編輯]"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "add %n songs"
|
||||
msgstr "加入 %n 歌"
|
||||
|
||||
@ -1761,7 +1764,7 @@ msgstr "移動歌曲"
|
||||
msgid "options"
|
||||
msgstr "選項"
|
||||
|
||||
#, c-format, qt-plural-format
|
||||
#, c-format
|
||||
msgid "remove %n songs"
|
||||
msgstr "移除 %n 歌"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user