diff --git a/data/data.qrc b/data/data.qrc index 84cb9fbbc..067db8f40 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -294,5 +294,6 @@ schema/jamendo.sql schema/schema-23.sql schema/schema-24.sql + pythonstartup.py diff --git a/data/pythonstartup.py b/data/pythonstartup.py new file mode 100644 index 000000000..7a9abfd4b --- /dev/null +++ b/data/pythonstartup.py @@ -0,0 +1,20 @@ +import clementine +import sys + +class __ClementineLogger__: + def __init__(self, error): + self._error = error + self._buffer = '' + + def write(self, data): + self._buffer = self._buffer + data + i = self._buffer.find('\n') + while i != -1: + line = self._buffer[0:i] + self._buffer = self._buffer[i+1:] + i = self._buffer.find('\n') + + clementine.pythonengine.AddLogLine(line, self._error) + +sys.stdout = __ClementineLogger__(False) +sys.stderr = __ClementineLogger__(True) diff --git a/src/scripting/languageengine.cpp b/src/scripting/languageengine.cpp index 6e9177e36..740f3b5a9 100644 --- a/src/scripting/languageengine.cpp +++ b/src/scripting/languageengine.cpp @@ -16,3 +16,8 @@ */ #include "languageengine.h" + +LanguageEngine::LanguageEngine(ScriptManager* manager) + : manager_(manager) +{ +} diff --git a/src/scripting/languageengine.h b/src/scripting/languageengine.h index 8fb50758d..1b9c9c779 100644 --- a/src/scripting/languageengine.h +++ b/src/scripting/languageengine.h @@ -24,14 +24,19 @@ class Script; class LanguageEngine { public: + LanguageEngine(ScriptManager* manager); virtual ~LanguageEngine() {} + ScriptManager* manager() const { return manager_; } + virtual ScriptManager::Language language() const = 0; virtual QString name() const = 0; - virtual void Init(const ScriptManager::GlobalData& data) = 0; + virtual Script* CreateScript(const QString& path, const QString& script_file, + const QString& id) = 0; - virtual Script* CreateScript(const QString& path, const QString& script_file) = 0; +private: + ScriptManager* manager_; }; #endif // LANGUAGEENGINE_H diff --git a/src/scripting/python/clementine.sip b/src/scripting/python/clementine.sip index 91b782839..7ef5f6fd8 100644 --- a/src/scripting/python/clementine.sip +++ b/src/scripting/python/clementine.sip @@ -6,5 +6,6 @@ %Include engine_fwd.sip %Include player.sip %Include playlistitem.sip +%Include pythonengine.sip %Include scriptinterface.sip %Include song.sip diff --git a/src/scripting/python/pythonengine.cpp b/src/scripting/python/pythonengine.cpp index 4d12442bf..ef34a0b68 100644 --- a/src/scripting/python/pythonengine.cpp +++ b/src/scripting/python/pythonengine.cpp @@ -16,38 +16,97 @@ */ #include +#include #include "pythonengine.h" #include "pythonscript.h" +#include "sipAPIclementine.h" + +#include extern "C" { void initclementine(); } -PythonEngine::PythonEngine() - : initialised_(false) +PythonEngine::PythonEngine(ScriptManager* manager) + : LanguageEngine(manager), + initialised_(false) { } -void PythonEngine::Init(const ScriptManager::GlobalData& data) { - data_ = data; +const sipAPIDef* PythonEngine::GetSIPApi() { +#if defined(SIP_USE_PYCAPSULE) + return (const sipAPIDef *)PyCapsule_Import("sip._C_API", 0); +#else + PyObject *sip_module; + PyObject *sip_module_dict; + PyObject *c_api; + + /* Import the SIP module. */ + sip_module = PyImport_ImportModule("sip"); + + if (sip_module == NULL) + return NULL; + + /* Get the module's dictionary. */ + sip_module_dict = PyModule_GetDict(sip_module); + + /* Get the "_C_API" attribute. */ + c_api = PyDict_GetItemString(sip_module_dict, "_C_API"); + + if (c_api == NULL) + return NULL; + + /* Sanity check that it is the right type. */ + if (!PyCObject_Check(c_api)) + return NULL; + + /* Get the actual pointer from the object. */ + return (const sipAPIDef *)PyCObject_AsVoidPtr(c_api); +#endif } -Script* PythonEngine::CreateScript(const QString& path, const QString& script_file) { +Script* PythonEngine::CreateScript(const QString& path, + const QString& script_file, + const QString& id) { // Initialise Python if it hasn't been done yet if (!initialised_) { + AddLogLine("Initialising python...", false); + // Add the Clementine builtin module PyImport_AppendInittab(const_cast("clementine"), initclementine); + // Initialise python Py_SetProgramName(const_cast("clementine")); PyEval_InitThreads(); Py_InitializeEx(0); + + // Get the clementine module so we can put stuff in it + clementine_module_ = PyImport_ImportModule("clementine"); + sip_api_ = GetSIPApi(); + + // Add objects to the module + AddObject(manager()->data().player_, sipType_Player, "player"); + AddObject(this, sipType_PythonEngine, "pythonengine"); + + // Run the startup script - this redirects sys.stdout and sys.stderr to our + // log handler. + QFile python_startup(":pythonstartup.py"); + python_startup.open(QIODevice::ReadOnly); + QByteArray python_startup_script = python_startup.readAll(); + + if (PyRun_SimpleString(python_startup_script.constData()) != 0) { + AddLogLine("Could not execute startup code", true); + Py_Finalize(); + return NULL; + } + PyEval_ReleaseLock(); initialised_ = true; } - Script* ret = new PythonScript(this, path, script_file); + Script* ret = new PythonScript(this, path, script_file, id); if (ret->Init()) { return ret; } @@ -55,3 +114,13 @@ Script* PythonEngine::CreateScript(const QString& path, const QString& script_fi delete ret; return NULL; } + +void PythonEngine::AddObject(void* object, const _sipTypeDef* type, + const char * name) const { + PyObject* python_object = sip_api_->api_convert_from_type(object, type, NULL); + PyModule_AddObject(clementine_module_, name, python_object); +} + +void PythonEngine::AddLogLine(const QString& message, bool error) { + manager()->AddLogLine("Python", message, error); +} diff --git a/src/scripting/python/pythonengine.h b/src/scripting/python/pythonengine.h index 2281be1cf..b9e594bb0 100644 --- a/src/scripting/python/pythonengine.h +++ b/src/scripting/python/pythonengine.h @@ -20,22 +20,33 @@ #include "scripting/languageengine.h" +struct _object; // PyObject +struct _sipAPIDef; +struct _sipTypeDef; + class PythonEngine : public LanguageEngine { public: - PythonEngine(); + PythonEngine(ScriptManager* manager); ScriptManager::Language language() const { return ScriptManager::Language_Python; } QString name() const { return "python"; } - const ScriptManager::GlobalData& data() const { return data_; } + Script* CreateScript(const QString& path, const QString& script_file, + const QString& id); - void Init(const ScriptManager::GlobalData& data); - Script* CreateScript(const QString& path, const QString& script_file); + const _sipAPIDef* sip_api() const { return sip_api_; } + + void AddLogLine(const QString& message, bool error = false); private: - ScriptManager::GlobalData data_; + static const _sipAPIDef* GetSIPApi(); + void AddObject(void* object, const _sipTypeDef* type, const char* name) const; +private: bool initialised_; + + _object* clementine_module_; + const _sipAPIDef* sip_api_; }; #endif // PYTHONENGINE_H diff --git a/src/scripting/python/pythonengine.sip b/src/scripting/python/pythonengine.sip new file mode 100644 index 000000000..d01affb75 --- /dev/null +++ b/src/scripting/python/pythonengine.sip @@ -0,0 +1,12 @@ +class PythonEngine { + +%TypeHeaderCode +#include "scripting/python/pythonengine.h" +%End + +public: + void AddLogLine(const QString& message, bool error = false); + +private: + PythonEngine(); +}; diff --git a/src/scripting/python/pythonscript.cpp b/src/scripting/python/pythonscript.cpp index 74f044d26..f1e167fbd 100644 --- a/src/scripting/python/pythonscript.cpp +++ b/src/scripting/python/pythonscript.cpp @@ -26,97 +26,64 @@ #include -static const sipAPIDef* GetSIPApi() { -#if defined(SIP_USE_PYCAPSULE) - return (const sipAPIDef *)PyCapsule_Import("sip._C_API", 0); -#else - PyObject *sip_module; - PyObject *sip_module_dict; - PyObject *c_api; - - /* Import the SIP module. */ - sip_module = PyImport_ImportModule("sip"); - - if (sip_module == NULL) - return NULL; - - /* Get the module's dictionary. */ - sip_module_dict = PyModule_GetDict(sip_module); - - /* Get the "_C_API" attribute. */ - c_api = PyDict_GetItemString(sip_module_dict, "_C_API"); - - if (c_api == NULL) - return NULL; - - /* Sanity check that it is the right type. */ - if (!PyCObject_Check(c_api)) - return NULL; - - /* Get the actual pointer from the object. */ - return (const sipAPIDef *)PyCObject_AsVoidPtr(c_api); -#endif -} - - -PythonScript::PythonScript(PythonEngine* engine, - const QString& path, const QString& script_file) - : Script(path, script_file), - engine_(engine), - interpreter_(NULL), - clementine_module_(NULL), - sip_api_(NULL) +PythonScript::PythonScript(PythonEngine* engine, const QString& path, + const QString& script_file, const QString& id) + : Script(engine, path, script_file, id), + engine_(engine) { } bool PythonScript::Init() { + engine_->AddLogLine("Loading script file \"" + script_file() + "\"", false); + // Open the file QFile file(script_file()); if (!file.open(QIODevice::ReadOnly)) { - qWarning() << "Error opening file:" << script_file(); + engine_->AddLogLine("Could not open file", true); return false; } - // Create a python interpreter PyEval_AcquireLock(); - interpreter_ = Py_NewInterpreter(); - // Get the clementine module so we can put stuff in it - clementine_module_ = PyImport_ImportModule("clementine"); - sip_api_ = GetSIPApi(); + // Create a module for this script + // TODO: allowed characters? + PyObject* module = PyImport_AddModule(id().toAscii().constData()); + PyObject* dict = PyModule_GetDict(module); - AddObject(engine_->data().player_, sipType_Player, "player"); - AddObject(interface(), sipType_ScriptInterface, "script"); + // Add __builtins__ + PyObject* builtin_mod = PyImport_ImportModule("__builtin__"); + PyModule_AddObject(module, "__builtins__", builtin_mod); + Py_DECREF(builtin_mod); - PyEval_ReleaseLock(); + // Set __file__ + PyModule_AddStringConstant(module, "__file__", script_file().toLocal8Bit().constData()); + + // Set script + PyObject* script = engine_->sip_api()->api_convert_from_type( + interface(), sipType_ScriptInterface, NULL); + PyModule_AddObject(module, "script", script); // Get a file stream from the file handle FILE* stream = fdopen(file.handle(), "r"); - if (PyRun_SimpleFile(stream, script_file().toLocal8Bit().constData()) != 0) { - PyEval_AcquireLock(); - Py_EndInterpreter(interpreter_); + // Run the script + PyObject* result = PyRun_File( + stream, script_file().toLocal8Bit().constData(), Py_file_input, dict, dict); + if (result == NULL) { + engine_->AddLogLine("Could not execute file", true); + PyErr_Print(); PyEval_ReleaseLock(); - - interpreter_ = NULL; return false; } + Py_DECREF(result); + PyEval_ReleaseLock(); return true; } -void PythonScript::AddObject(void* object, const _sipTypeDef* type, - const char * name) const { - PyObject* python_object = sip_api_->api_convert_from_type(object, type, NULL); - PyModule_AddObject(clementine_module_, name, python_object); -} + bool PythonScript::Unload() { - PyEval_AcquireLock(); - PyThreadState_Swap(interpreter_); - Py_EndInterpreter(interpreter_); - PyEval_ReleaseLock(); - - interpreter_ = NULL; + // TODO: Actually do some cleanup return true; } diff --git a/src/scripting/python/pythonscript.h b/src/scripting/python/pythonscript.h index b8f2b22f0..e9eb2abae 100644 --- a/src/scripting/python/pythonscript.h +++ b/src/scripting/python/pythonscript.h @@ -20,30 +20,18 @@ #include "scripting/script.h" -struct _object; // PyObject -struct _sipAPIDef; -struct _sipTypeDef; -struct _ts; // PyThreadState - class PythonEngine; class PythonScript : public Script { public: - PythonScript(PythonEngine* engine, - const QString& path, const QString& script_file); + PythonScript(PythonEngine* engine, const QString& path, + const QString& script_file, const QString& id); bool Init(); bool Unload(); -private: - void AddObject(void* object, const _sipTypeDef* type, const char* name) const; - private: PythonEngine* engine_; - - _ts* interpreter_; - _object* clementine_module_; - const _sipAPIDef* sip_api_; }; #endif // PYTHONSCRIPT_H diff --git a/src/scripting/script.cpp b/src/scripting/script.cpp index 58d264b84..73c286f5a 100644 --- a/src/scripting/script.cpp +++ b/src/scripting/script.cpp @@ -18,10 +18,13 @@ #include "script.h" #include "scriptinterface.h" -Script::Script(const QString& path, const QString& script_file) - : interface_(new ScriptInterface), +Script::Script(LanguageEngine* language, const QString& path, + const QString& script_file, const QString& id) + : interface_(new ScriptInterface(this)), + language_(language), path_(path), - script_file_(script_file) + script_file_(script_file), + id_(id) { } diff --git a/src/scripting/script.h b/src/scripting/script.h index bdb622603..c4edb6153 100644 --- a/src/scripting/script.h +++ b/src/scripting/script.h @@ -22,16 +22,19 @@ #include +class LanguageEngine; class ScriptInterface; class Script { public: - Script(const QString& path, const QString& script_file); + Script(LanguageEngine* language, const QString& path, + const QString& script_file, const QString& id); virtual ~Script(); + LanguageEngine* language() const { return language_; } const QString& path() const { return path_; } const QString& script_file() const { return script_file_; } - + const QString& id() const { return id_; } ScriptInterface* interface() const { return interface_.get(); } virtual bool Init() = 0; @@ -43,8 +46,10 @@ protected: private: Q_DISABLE_COPY(Script); + LanguageEngine* language_; QString path_; QString script_file_; + QString id_; }; #endif // SCRIPT_H diff --git a/src/scripting/scriptdialog.cpp b/src/scripting/scriptdialog.cpp index bf71c76d8..bc7ba5aef 100644 --- a/src/scripting/scriptdialog.cpp +++ b/src/scripting/scriptdialog.cpp @@ -112,8 +112,13 @@ void ScriptDialog::SetManager(ScriptManager* manager) { connect(manager, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(DataChanged(QModelIndex,QModelIndex))); + connect(manager, SIGNAL(LogLineAdded(QString)), SLOT(LogLineAdded(QString))); connect(ui_->list->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(CurrentChanged(QModelIndex))); + + foreach (const QString& html, manager->log_lines()) { + LogLineAdded(html); + } } void ScriptDialog::CurrentChanged(const QModelIndex& index) { @@ -151,3 +156,7 @@ void ScriptDialog::Settings() { void ScriptDialog::Details() { } + +void ScriptDialog::LogLineAdded(const QString& html) { + ui_->console->append(html); +} diff --git a/src/scripting/scriptdialog.h b/src/scripting/scriptdialog.h index b99d4d75f..5eb5f9189 100644 --- a/src/scripting/scriptdialog.h +++ b/src/scripting/scriptdialog.h @@ -59,6 +59,7 @@ public: private slots: void DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right); void CurrentChanged(const QModelIndex& index); + void LogLineAdded(const QString& html); void Enable(); void Disable(); diff --git a/src/scripting/scriptdialog.ui b/src/scripting/scriptdialog.ui index a545f9192..65d91dfc4 100644 --- a/src/scripting/scriptdialog.ui +++ b/src/scripting/scriptdialog.ui @@ -6,8 +6,8 @@ 0 0 - 645 - 388 + 718 + 447 @@ -15,68 +15,100 @@ - - - - - - + + + 2 + + + + My scripts + + - - - false - - - Enable - - + - - - false - - - Disable - - - - - - - false - - - Settings... - - - - - - - false - - - Details... - - - - - - - Qt::Vertical - - - - 20 - 40 - - - + + + + + false + + + Enable + + + + + + + false + + + Disable + + + + + + + false + + + Settings... + + + + + + + false + + + Details... + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + - - + + + + Get new scripts + + + + + Script console + + + + + + true + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + diff --git a/src/scripting/scriptinterface.cpp b/src/scripting/scriptinterface.cpp index fa3acd7fc..7abe49cf1 100644 --- a/src/scripting/scriptinterface.cpp +++ b/src/scripting/scriptinterface.cpp @@ -15,13 +15,20 @@ along with Clementine. If not, see . */ +#include "languageengine.h" +#include "script.h" #include "scriptinterface.h" -ScriptInterface::ScriptInterface(QObject* parent) - : QObject(parent) +ScriptInterface::ScriptInterface(Script* script, QObject* parent) + : QObject(parent), + script_(script) { } void ScriptInterface::ShowSettingsDialog() { emit SettingsDialogRequested(); } + +void ScriptInterface::AddLogLine(const QString& message, bool error) { + script_->language()->manager()->AddLogLine(script_->id(), message, error); +} diff --git a/src/scripting/scriptinterface.h b/src/scripting/scriptinterface.h index ce096ec85..86fe7342c 100644 --- a/src/scripting/scriptinterface.h +++ b/src/scripting/scriptinterface.h @@ -20,20 +20,30 @@ #include +#include + +class Script; + // An instance of this class is made available to each script class ScriptInterface : public QObject { Q_OBJECT public: - ScriptInterface(QObject* parent = 0); + ScriptInterface(Script* script, QObject* parent = 0); public slots: // Callable by C++ void ShowSettingsDialog(); + // Callable by the script + void AddLogLine(const QString& message, bool error = false); + signals: // Scripts should connect to this and show a settings dialog void SettingsDialogRequested(); + +private: + Script* script_; }; #endif // SCRIPTINTERFACE_H diff --git a/src/scripting/scriptmanager.cpp b/src/scripting/scriptmanager.cpp index 02b1be703..2a885f770 100644 --- a/src/scripting/scriptmanager.cpp +++ b/src/scripting/scriptmanager.cpp @@ -28,6 +28,7 @@ #include #include +#include #include const char* ScriptManager::kSettingsGroup = "Scripts"; @@ -35,11 +36,10 @@ const char* ScriptManager::kIniFileName = "script.ini"; const char* ScriptManager::kIniSettingsGroup = "Script"; ScriptManager::ScriptManager(QObject* parent) - : QAbstractListModel(parent), - player_(NULL) + : QAbstractListModel(parent) { #ifdef HAVE_SCRIPTING_PYTHON - engines_ << new PythonEngine; + engines_ << new PythonEngine(this); #endif search_paths_ << Utilities::GetConfigPath(Utilities::Path_Scripts); @@ -57,9 +57,7 @@ ScriptManager::~ScriptManager() { } void ScriptManager::Init(const GlobalData& data) { - foreach (LanguageEngine* engine, engines_) { - engine->Init(data); - } + data_ = data; // Load settings LoadSettings(); @@ -158,7 +156,7 @@ ScriptManager::ScriptInfo ScriptManager::LoadScriptInfo(const QString& path) { if (enabled_scripts_.contains(id)) { // Load the script if it's enabled - ret.loaded_ = engine->CreateScript(path, ret.script_file_); + ret.loaded_ = engine->CreateScript(path, ret.script_file_, ret.id_); if (!ret.loaded_) { // Failed to load? Disable it so we don't try again enabled_scripts_.remove(id); @@ -227,7 +225,7 @@ void ScriptManager::Enable(const QModelIndex& index) { } // Load the script - info->loaded_ = engine->CreateScript(info->path_, info->script_file_); + info->loaded_ = engine->CreateScript(info->path_, info->script_file_, info->id_); // If it loaded correctly then automatically load it in the future if (info->loaded_) { @@ -266,3 +264,20 @@ void ScriptManager::ShowSettingsDialog(const QModelIndex& index) { info->loaded_->interface()->ShowSettingsDialog(); } + +void ScriptManager::AddLogLine(const QString& who, const QString& message, bool error) { + foreach (const QString& line, message.split("\n", QString::SkipEmptyParts)) { + QString plain = "[" + who + "] " + line; + QString html = "[" + Qt::escape(who) + "] " + Qt::escape(line); + html.replace(' ', " "); + + if (error) { + html = "" + html + ""; + } + + log_lines_ << html; + emit LogLineAdded(html); + + qDebug() << plain.toLocal8Bit().constData(); + } +} diff --git a/src/scripting/scriptmanager.h b/src/scripting/scriptmanager.h index db0a080a0..3a390a4c4 100644 --- a/src/scripting/scriptmanager.h +++ b/src/scripting/scriptmanager.h @@ -62,15 +62,24 @@ public: static const char* kIniSettingsGroup; void Init(const GlobalData& data); + const GlobalData& data() const { return data_; } void Enable(const QModelIndex& index); void Disable(const QModelIndex& index); void ShowSettingsDialog(const QModelIndex& index); + QStringList log_lines() const { return log_lines_; } + // QAbstractListModel int rowCount(const QModelIndex& parent = QModelIndex()) const; QVariant data(const QModelIndex& index, int role) const; +public slots: + void AddLogLine(const QString& who, const QString& message, bool error); + +signals: + void LogLineAdded(const QString& html); + private: struct ScriptInfo { ScriptInfo() : language_(Language_Unknown), loaded_(NULL) {} @@ -101,14 +110,21 @@ private: LanguageEngine* EngineForLanguage(Language language) const; private: + // Language engines QList engines_; + // All scripts we know about QStringList search_paths_; QList info_; + // Names of scripts that get loaded automatically QSet enabled_scripts_; - Player* player_; + // HTML log messages + QStringList log_lines_; + + // Things available to scripts + GlobalData data_; }; #endif // SCRIPTMANAGER_H diff --git a/src/translations/ar.po b/src/translations/ar.po index 1bdd2fcdf..1f1e39e62 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "النوع" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/be.po b/src/translations/be.po index f807e3c34..719834447 100644 --- a/src/translations/be.po +++ b/src/translations/be.po @@ -1048,6 +1048,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1450,6 +1453,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1911,6 +1917,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/bg.po b/src/translations/bg.po index 2bf76c322..d6539928b 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -1036,6 +1036,9 @@ msgstr "Общи настройки" msgid "Genre" msgstr "Жанр" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1440,6 +1443,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Име" @@ -1901,6 +1907,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/br.po b/src/translations/br.po index 316bd2abf..bc2394ec8 100644 --- a/src/translations/br.po +++ b/src/translations/br.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/ca.po b/src/translations/ca.po index 695c67851..925ac61b5 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -1065,6 +1065,9 @@ msgstr "Arranjaments generals" msgid "Genre" msgstr "Gènere" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Obtenint canals" @@ -1472,6 +1475,9 @@ msgstr "La meva emissora de ràdio" msgid "My Recommendations" msgstr "Les meves recomanacions" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nom" @@ -1935,6 +1941,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/cs.po b/src/translations/cs.po index 44564276a..468b7aeef 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -1061,6 +1061,9 @@ msgstr "Obecná nastavení" msgid "Genre" msgstr "Žánr" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Získávají se kanály" @@ -1473,6 +1476,9 @@ msgstr "Moje rozhlasová stanice" msgid "My Recommendations" msgstr "Má doporučení" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Název" @@ -1936,6 +1942,9 @@ msgstr "Výsledek" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Se skladbami, které poslouchám, dělat to, čemu se říká \"scrobble\"" diff --git a/src/translations/cy.po b/src/translations/cy.po index 9905ba741..e4b46b675 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/da.po b/src/translations/da.po index c9cd78849..95aa4a2ee 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -1037,6 +1037,9 @@ msgstr "Generelle indstillinger" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Henter kanaler" @@ -1441,6 +1444,9 @@ msgstr "Min radiostation" msgid "My Recommendations" msgstr "Mine anbefalinger" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Navn" @@ -1902,6 +1908,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Scrobble-spor som jeg lytter til" diff --git a/src/translations/de.po b/src/translations/de.po index 45ad65d1e..a18a91dc7 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -1064,6 +1064,9 @@ msgstr "Allgemeine Einstellungen" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Lade Channels" @@ -1476,6 +1479,9 @@ msgstr "Meine Radiostation" msgid "My Recommendations" msgstr "Meine Empfehlungen" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Name" @@ -1939,6 +1945,9 @@ msgstr "Bewertung" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Stücke die ich höre \"scrobbeln\"" diff --git a/src/translations/el.po b/src/translations/el.po index fd36b0b7e..272a54a87 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -1071,6 +1071,9 @@ msgstr "Γενικές ρυθμίσεις" msgid "Genre" msgstr "Είδος" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Λήψη καναλιών" @@ -1481,6 +1484,9 @@ msgstr "Οι Σταθμοί μου" msgid "My Recommendations" msgstr "Οι Προτάσεις μου" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Όνομα" @@ -1946,6 +1952,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Κάνε \"srobble\" τα κομμάτια που ακούω" diff --git a/src/translations/en.po b/src/translations/en.po index 8b494045b..2f2385451 100644 --- a/src/translations/en.po +++ b/src/translations/en.po @@ -1023,6 +1023,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1425,6 +1428,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1886,6 +1892,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index e32490426..8537b64a6 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -1037,6 +1037,9 @@ msgstr "General settings" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Getting channels" @@ -1440,6 +1443,9 @@ msgstr "My Radio Station" msgid "My Recommendations" msgstr "My Recommendations" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Name" @@ -1902,6 +1908,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index 79b634b05..614bbd520 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -1035,6 +1035,9 @@ msgstr "General settings" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Getting channels" @@ -1438,6 +1441,9 @@ msgstr "My Radio Station" msgid "My Recommendations" msgstr "My Recommendations" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Name" @@ -1899,6 +1905,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" diff --git a/src/translations/eo.po b/src/translations/eo.po index cbcf89f8c..6a52fd8d1 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/es.po b/src/translations/es.po index e81c9c5c2..1ad9433d6 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -1069,6 +1069,9 @@ msgstr "Preferencias generales" msgid "Genre" msgstr "Género" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Obteniendo canales" @@ -1482,6 +1485,9 @@ msgstr "Mi Estación de Radio" msgid "My Recommendations" msgstr "Mis Recomendaciones" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nombre" @@ -1947,6 +1953,9 @@ msgstr "Puntuación" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Enviar las pistas que reproduzco" diff --git a/src/translations/et.po b/src/translations/et.po index 08e996ddd..75971fa5e 100644 --- a/src/translations/et.po +++ b/src/translations/et.po @@ -1035,6 +1035,9 @@ msgstr "Üldised seadistused" msgid "Genre" msgstr "Žanr" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1438,6 +1441,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nimi" @@ -1899,6 +1905,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/eu.po b/src/translations/eu.po index 373104e1c..c511aa298 100644 --- a/src/translations/eu.po +++ b/src/translations/eu.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/fi.po b/src/translations/fi.po index f52694cfe..ce77cc5c8 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -1034,6 +1034,9 @@ msgstr "Yleiset asetukset" msgid "Genre" msgstr "Tyylilaji" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1438,6 +1441,9 @@ msgstr "Oma radioasemani" msgid "My Recommendations" msgstr "Omat suositukseni" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nimi" @@ -1899,6 +1905,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/fr.po b/src/translations/fr.po index 57c7d699a..fdd0bc927 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -1073,6 +1073,9 @@ msgstr "Configuration générale" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Récupération des canaux" @@ -1487,6 +1490,9 @@ msgstr "Ma station de radio" msgid "My Recommendations" msgstr "Mes suggestions" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nom" @@ -1952,6 +1958,9 @@ msgstr "Score" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Envoyer les titres des pistes que j'écoute (scrobble)" diff --git a/src/translations/gl.po b/src/translations/gl.po index 300592340..38730defe 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -1038,6 +1038,9 @@ msgstr "" msgid "Genre" msgstr "Xénero" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Obter canais" @@ -1442,6 +1445,9 @@ msgstr "A Miña Emisora" msgid "My Recommendations" msgstr "As miñas recomendazóns" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nome" @@ -1903,6 +1909,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/he.po b/src/translations/he.po index b9150f589..37ca42cc0 100644 --- a/src/translations/he.po +++ b/src/translations/he.po @@ -1038,6 +1038,9 @@ msgstr "הגדרות כלליות" msgid "Genre" msgstr "סגנון" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "מקבל ערוצים" @@ -1443,6 +1446,9 @@ msgstr "תחנת הרדיו שלי" msgid "My Recommendations" msgstr "ההמלצות שלי" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "שם" @@ -1905,6 +1911,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/hi.po b/src/translations/hi.po index a719ded99..b7853b020 100644 --- a/src/translations/hi.po +++ b/src/translations/hi.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/hr.po b/src/translations/hr.po index 34ca4edc8..7c06b7380 100644 --- a/src/translations/hr.po +++ b/src/translations/hr.po @@ -1040,6 +1040,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1442,6 +1445,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1903,6 +1909,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/hu.po b/src/translations/hu.po index 0b1a981f6..3d5262a8f 100644 --- a/src/translations/hu.po +++ b/src/translations/hu.po @@ -1062,6 +1062,9 @@ msgstr "Általános beállítások" msgid "Genre" msgstr "Műfaj" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Csatornák betöltése" @@ -1472,6 +1475,9 @@ msgstr "A rádióadóm" msgid "My Recommendations" msgstr "Ajánlásaim" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Név" @@ -1935,6 +1941,9 @@ msgstr "Pontszám" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Az általam hallgatott számok Scrobble funkcióval történő figyelése" diff --git a/src/translations/it.po b/src/translations/it.po index 40cf923ca..5febda59c 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -1066,6 +1066,9 @@ msgstr "Impostazioni generali" msgid "Genre" msgstr "Genere" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Recupero dei canali" @@ -1479,6 +1482,9 @@ msgstr "La mia stazione radio" msgid "My Recommendations" msgstr "I miei consigli" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nome" @@ -1943,6 +1949,9 @@ msgstr "Punteggio" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Scrobbling delle tracce ascoltate" diff --git a/src/translations/ja.po b/src/translations/ja.po index ca17d65a2..e9005cb72 100644 --- a/src/translations/ja.po +++ b/src/translations/ja.po @@ -1055,6 +1055,9 @@ msgstr "全般設定" msgid "Genre" msgstr "ジャンル" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "チャンネルの取得中" @@ -1462,6 +1465,9 @@ msgstr "ラジオ局" msgid "My Recommendations" msgstr "おすすめ" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "名前" @@ -1925,6 +1931,9 @@ msgstr "スコア" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "聴取するトラックを Scrobble する" diff --git a/src/translations/kk.po b/src/translations/kk.po index d5eafc047..40a202df0 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "Жанры" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1438,6 +1441,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Аты" @@ -1899,6 +1905,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/lt.po b/src/translations/lt.po index 33a616758..5a0c9caac 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -1034,6 +1034,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/nb.po b/src/translations/nb.po index f2e2168aa..2e27cbabd 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -1046,6 +1046,9 @@ msgstr "Generelle innstillinger" msgid "Genre" msgstr "Sjanger" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Henter kanaler" @@ -1450,6 +1453,9 @@ msgstr "Min radiostasjon" msgid "My Recommendations" msgstr "Mine anbefalinger" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Navn" @@ -1911,6 +1917,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Fortell last.fm om sangene jeg har lyttet til" diff --git a/src/translations/nl.po b/src/translations/nl.po index 1c25f18b5..787abd0de 100644 --- a/src/translations/nl.po +++ b/src/translations/nl.po @@ -1057,6 +1057,9 @@ msgstr "Algemene instellingen" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Kanalen ophalen" @@ -1465,6 +1468,9 @@ msgstr "Mijn radiostation" msgid "My Recommendations" msgstr "Mijn aanbevelingen" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Naam" @@ -1930,6 +1936,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Scrobble de tracks waar ik naar luister" diff --git a/src/translations/oc.po b/src/translations/oc.po index af25b8227..30c5b8110 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -1034,6 +1034,9 @@ msgstr "Paramètres generals" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1436,6 +1439,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nom" @@ -1897,6 +1903,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/pl.po b/src/translations/pl.po index c028d3527..929245911 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -1059,6 +1059,9 @@ msgstr "Podstawowe ustawienia" msgid "Genre" msgstr "Gatunek" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Pobieranie kanałów" @@ -1466,6 +1469,9 @@ msgstr "Moje stacje radiowe" msgid "My Recommendations" msgstr "Moje rekomendacje" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nazwa" @@ -1930,6 +1936,9 @@ msgstr "Wynik" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Wysyłaj informacje o utworach których słucham" diff --git a/src/translations/pt.po b/src/translations/pt.po index 6f8be4fb1..68565947b 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -1066,6 +1066,9 @@ msgstr "Definições gerais" msgid "Genre" msgstr "Género" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Obtendo canais" @@ -1476,6 +1479,9 @@ msgstr "A minha estação de rádio" msgid "My Recommendations" msgstr "As minhas recomendações" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nome" @@ -1940,6 +1946,9 @@ msgstr "Pontuação" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Enviar as faixas que eu oiço" diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index 8293c97e1..853592878 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -1059,6 +1059,9 @@ msgstr "Configurações gerais" msgid "Genre" msgstr "Gênero" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Adquirindo canais" @@ -1471,6 +1474,9 @@ msgstr "Minha Estação de Rádio" msgid "My Recommendations" msgstr "Minhas Recomendações" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nome" @@ -1936,6 +1942,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Adicionar ao meu perfil os dados das músicas que eu ouvir" diff --git a/src/translations/ro.po b/src/translations/ro.po index 8a6eaad98..01aeed0f3 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -1034,6 +1034,9 @@ msgstr "Setări generale" msgid "Genre" msgstr "Gen" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Se preiau canalele" @@ -1437,6 +1440,9 @@ msgstr "Postul meu de radio" msgid "My Recommendations" msgstr "Recomandările mele" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Nume" @@ -1898,6 +1904,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/ru.po b/src/translations/ru.po index d13fd54fa..190a3c273 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -1057,6 +1057,9 @@ msgstr "Общие настройки" msgid "Genre" msgstr "Жанр" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Получение каналов" @@ -1467,6 +1470,9 @@ msgstr "Моя радиостанция" msgid "My Recommendations" msgstr "Мои рекомендации" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Имя" @@ -1930,6 +1936,9 @@ msgstr "Счет" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Скробблить треки, которые я слушаю" diff --git a/src/translations/sk.po b/src/translations/sk.po index 160878fde..73fed9c9d 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -1056,6 +1056,9 @@ msgstr "Všeobecné nastavenia" msgid "Genre" msgstr "Žáner" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Preberanie kanálov" @@ -1464,6 +1467,9 @@ msgstr "Moje rádio stanice" msgid "My Recommendations" msgstr "Moje odporúčania" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Názov" @@ -1926,6 +1932,9 @@ msgstr "Skóre" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Skrobblovať skladby, ktoré počúvam" diff --git a/src/translations/sl.po b/src/translations/sl.po index 465325ecb..b30551627 100644 --- a/src/translations/sl.po +++ b/src/translations/sl.po @@ -1058,6 +1058,9 @@ msgstr "Splošne nastavitve" msgid "Genre" msgstr "Zvrst" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Pridobivanje kanalov" @@ -1466,6 +1469,9 @@ msgstr "Moja radijska postaja" msgid "My Recommendations" msgstr "Moja priporočila" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Ime" @@ -1929,6 +1935,9 @@ msgstr "Rezultat" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Pošlji podatke o predvajanih skladbah" diff --git a/src/translations/sr.po b/src/translations/sr.po index ce8ff427c..aef179c9e 100644 --- a/src/translations/sr.po +++ b/src/translations/sr.po @@ -1037,6 +1037,9 @@ msgstr "Опште поставке" msgid "Genre" msgstr "Жанр" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Добављање канала" @@ -1441,6 +1444,9 @@ msgstr "Моја радио станица" msgid "My Recommendations" msgstr "Моје препоруке" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Име" @@ -1902,6 +1908,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/sv.po b/src/translations/sv.po index b2e19a0f9..bec1e4c94 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -1062,6 +1062,9 @@ msgstr "Allmänna inställningar" msgid "Genre" msgstr "Genre" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Hämtar kanaler" @@ -1470,6 +1473,9 @@ msgstr "Min radiostation" msgid "My Recommendations" msgstr "Mina rekommendationer" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Namn" @@ -1931,6 +1937,9 @@ msgstr "Poäng" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Skrobbla låtar som jag lyssnar på" diff --git a/src/translations/tr.po b/src/translations/tr.po index 8f97f9332..3d38b8f13 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -1055,6 +1055,9 @@ msgstr "Genel ayarlar" msgid "Genre" msgstr "Tür" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Kanallar alınıyor" @@ -1466,6 +1469,9 @@ msgstr "Radyom" msgid "My Recommendations" msgstr "Önerdiklerim" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "İsim" @@ -1929,6 +1935,9 @@ msgstr "Puan" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Dinlediğim parçaları skropla" diff --git a/src/translations/translations.pot b/src/translations/translations.pot index b99bde1be..a1cb790c6 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -1024,6 +1024,9 @@ msgstr "" msgid "Genre" msgstr "" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1426,6 +1429,9 @@ msgstr "" msgid "My Recommendations" msgstr "" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1887,6 +1893,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/uk.po b/src/translations/uk.po index 1b3bc9181..3493c6ae9 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -1058,6 +1058,9 @@ msgstr "Загальні налаштування" msgid "Genre" msgstr "Жанр" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "Отримання каналів" @@ -1468,6 +1471,9 @@ msgstr "Моя радіостанція" msgid "My Recommendations" msgstr "Мої рекомендації" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "Назва" @@ -1931,6 +1937,9 @@ msgstr "Рахунок" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "Скробблити доріжки, які я слухаю" diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po index bca09e346..90c2d5095 100644 --- a/src/translations/zh_CN.po +++ b/src/translations/zh_CN.po @@ -1036,6 +1036,9 @@ msgstr "常规设置" msgid "Genre" msgstr "流派" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1440,6 +1443,9 @@ msgstr "我的电台" msgid "My Recommendations" msgstr "我的推荐" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "" @@ -1901,6 +1907,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr "" diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index d2b9f5c6c..fa9b7ad26 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -1038,6 +1038,9 @@ msgstr "一般設定" msgid "Genre" msgstr "風格" +msgid "Get new scripts" +msgstr "" + msgid "Getting channels" msgstr "" @@ -1441,6 +1444,9 @@ msgstr "我的廣播站" msgid "My Recommendations" msgstr "我推薦的電台" +msgid "My scripts" +msgstr "" + msgid "Name" msgstr "名稱" @@ -1902,6 +1908,9 @@ msgstr "" msgid "Script Manager" msgstr "" +msgid "Script console" +msgstr "" + msgid "Scrobble tracks that I listen to" msgstr ""