Copy the iTunes database off a libimobiledevice device and load it from the local file

This commit is contained in:
David Sansome 2010-08-01 14:13:27 +00:00
parent 7fce4ada7d
commit 7a6499abde
45 changed files with 859 additions and 327 deletions

View File

@ -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

View File

@ -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

View File

@ -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
View 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
View 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

View File

@ -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) {

View File

@ -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

View 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
View 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

View File

@ -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>();

View File

@ -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");

View File

@ -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);

View 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;
}

View 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

View File

@ -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 أغاني\\أغنية"

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 τραγουδιών"

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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 композиций"

View File

@ -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í"

View File

@ -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 песама"

View File

@ -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"

View File

@ -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"

View File

@ -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 ""

View File

@ -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 композицій"

View File

@ -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 ""

View File

@ -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 歌"