← Back to team overview

nuvola-player-builders team mailing list archive

[Merge] lp:nuvola-player/releases-1.x into lp:nuvola-player

 

Jiří Janoušek has proposed merging lp:nuvola-player/releases-1.x into lp:nuvola-player.

Requested reviews:
  Jiří Janoušek (fenryxo)

For more details, see:
https://code.launchpad.net/~fenryxo/nuvola-player/releases-1.x/+merge/110546
-- 
https://code.launchpad.net/~fenryxo/nuvola-player/releases-1.x/+merge/110546
Your team Nuvola Player Builders is subscribed to branch lp:nuvola-player.
=== modified file 'CHANGELOG'
--- CHANGELOG	2012-02-18 10:58:29 +0000
+++ CHANGELOG	2012-06-15 15:20:27 +0000
@@ -5,38 +5,125 @@
 tray icon and notifications). It also remembers last session
 and the current view (album, genre list, ...).
 
-
-=== 1.0.2 - February 13, 2012 ===
-
-Bug fix release. Changes since 1.0.1:
-
- * Updated link to development changelog
- * Track GNOME/XFCE session to quit properly. Fixes lp:909430
- * Cache is no longer flushed to disk, only dumped.
- * Executable rsvg-convert is used instead of rsvg to generate PNG images
-   from SVG source images
- * Fixed Google Music sandbox pattern. Fixes lp:928535
- * Updated field "maintainer_link" of services' metadata.
- * Updated translations.
-
-=== 1.0.1 - January 4, 2012 ==
-
-Bug fix release with patches from Debian Mentors review process. Changes since 1.0.0:
-
- * Removed build flags --with-unity-quick-list, --with-browser-cache
-   and --deprecated-ppa.
- * PNG files are generated from source SVG files. New build dependency: rsvg
- * Removed deprecated Encoding field in desktop file
- * Clean-up and fixed typo
- * VAPI for Gee shipped with Nuvola Player is used only for libgee < 0.6
- * Unsupported MPRIS properties are not exported.
- * Crash dialog has option to disable crash dialog.
- * Updated translations.
-
-
-=== 1.0 - December 23, 2011 ===
-
-Feature release. Changes since 0.3.2:
+<<<<<<< TREE
+
+=== 1.0.2 - February 13, 2012 ===
+
+Bug fix release. Changes since 1.0.1:
+
+ * Updated link to development changelog
+ * Track GNOME/XFCE session to quit properly. Fixes lp:909430
+ * Cache is no longer flushed to disk, only dumped.
+ * Executable rsvg-convert is used instead of rsvg to generate PNG images
+   from SVG source images
+ * Fixed Google Music sandbox pattern. Fixes lp:928535
+ * Updated field "maintainer_link" of services' metadata.
+ * Updated translations.
+
+=== 1.0.1 - January 4, 2012 ==
+
+Bug fix release with patches from Debian Mentors review process. Changes since 1.0.0:
+
+ * Removed build flags --with-unity-quick-list, --with-browser-cache
+   and --deprecated-ppa.
+ * PNG files are generated from source SVG files. New build dependency: rsvg
+ * Removed deprecated Encoding field in desktop file
+ * Clean-up and fixed typo
+ * VAPI for Gee shipped with Nuvola Player is used only for libgee < 0.6
+ * Unsupported MPRIS properties are not exported.
+ * Crash dialog has option to disable crash dialog.
+ * Updated translations.
+
+
+=== 1.0 - December 23, 2011 ===
+
+Feature release. Changes since 0.3.2:
+=======
+=== 1.0.5 - April 4, 2012 ===
+
+Nuvola Player 1.0.5 contains modified workaround for bug[1][2] present
+in the latest stable WebKitGTK release (1.8) that causes some Flash-dependent
+pages are not rendered properly, do not update and are unresponsive to user
+actions. Unfortunately, this bug affects also Google Play, Grooveshark
+and Pandora Radio and makes them unusable in Nuvola Player.
+
+The latest stable Nuvola Player release 1.0.5 contains simple workaround
+that sets window size to magic values that worked during my tests. However,
+these values may be dependent on user settings, e.g. GTK theme, window manager,
+font sizes, whatever. If the default workaround does not work for you, you can
+try to set your own magic values:
+
+1) Quit Nuvola Player (hiding the window is not enough).
+2) Open or create file  .config/nuvolaplayer/ui_state.conf
+3) Append following lines:
+bug958154_window_w = 1010
+bug958154_window_h = 534
+5) Replace “1010” with your magic window width and “534” with your magic window
+   height.
+4) Save the file
+5) Launch Nuvola Player
+6) If the values don’t work, go to 1.
+
+If you are affected by that bug, I encourage you to add some “heat”
+to the Ubuntu bug[2] or upstream bug[1].
+
+[1] https://bugs.webkit.org/show_bug.cgi?id=81450
+[2] https://bugs.launchpad.net/webkit/+bug/973719
+
+=== 1.0.4 - March 31, 2012 ===
+
+Bug fix release. Changes since 1.0.3:
+
+ * Fall back to classic key bindings manager if GNOME Settings Daemon
+   is present, but doesn't handle multimedia keys. LP:940504
+ * Added workaround for WebKitGTK 1.8 rendering bug. LP:958154
+ * Added integration of Rdio by Stefan Lohmaier.
+ * Added integration of Pandora Radio by Adam Wolfe Gordon.
+ * Updated translations.
+
+=== 1.0.3 - March 17, 2012 ===
+
+Bug fix release. Changes since 1.0.2:
+
+ * Fixed Menu and MenuItem conflicts in namespace GLib/Gtk (GNOME 3.3).
+   Patch by Vincent Untz. LP:940456
+ * Compatibility with Valac 0.15. Patch by Vincent Untz. LP:940456
+ * Added option to disable usage of space key in keybindings. LP:934182.
+ * Google Music is now a part of Google Play. Fixes LP:948760
+ * Updated translations.
+
+=== 1.0.2 - February 13, 2012 ===
+
+Bug fix release. Changes since 1.0.1:
+
+ * Updated link to development changelog
+ * Track GNOME/XFCE session to quit properly. Fixes lp:909430
+ * Cache is no longer flushed to disk, only dumped.
+ * Executable rsvg-convert is used instead of rsvg to generate PNG images
+   from SVG source images
+ * Fixed Google Music sandbox pattern. Fixes lp:928535
+ * Updated field "maintainer_link" of services' metadata.
+ * Updated translations.
+
+=== 1.0.1 - January 4, 2012 ==
+
+Bug fix release with patches from Debian Mentors review process. Changes since 1.0.0:
+
+ * Removed build flags --with-unity-quick-list, --with-browser-cache
+   and --deprecated-ppa.
+ * PNG files are generated from source SVG files. New build dependency: rsvg
+ * Removed deprecated Encoding field in desktop file
+ * Clean-up and fixed typo
+ * VAPI for Gee shipped with Nuvola Player is used only for libgee < 0.6
+ * Unsupported MPRIS properties are not exported.
+ * Crash dialog has option to disable crash dialog.
+ * Updated translations.
+
+
+=== 1.0 - December 23, 2011 ===
+
+Feature release. Changes since 0.3.2:
+>>>>>>> MERGE-SOURCE
 
  * The core has been rewritten to supports multiple services and all service-specific data
    are stored in separate files outside the core of the application and are loaded

=== modified file 'README'
--- README	2012-03-26 20:58:21 +0000
+++ README	2012-06-15 15:20:27 +0000
@@ -46,6 +46,7 @@
 
     libglib (>= 2.26), libgee (>= 0.5), libsoup (>= 2.30),
     libgtk (>= 2.20), libwebkitgtk (>= 1.2), python (>= 2.6), valac (>= 0.12),
+<<<<<<< TREE
     libnotify (>= 0.4), libx11, libunique (>= 0.9), intltool, librsvg-bin,
     json-glib-1.0 (>= 0.7)
 
@@ -59,6 +60,24 @@
     
     python-scour
         enables optimization of SVG icon (reduced size)
+=======
+    libnotify (>= 0.4), libx11, libunique (>= 0.9), intltool, librsvg-bin
+
+    
+There are some optional dependencies:
+    libsoup >= 2.34
+        enables browser cache for remote objects (images, etc.)
+    
+    libunity, libdbusmenu-glib
+        enables integration with Unity Quick List
+    
+    libindicate, libdbusmenu-glib
+        needed for integration with Maverick version of Ubuntu Sound menu,
+        see --with-indicator-sound-maverick build flag
+    
+    python-scour
+        enables optimization of SVG icon (reduced size)
+>>>>>>> MERGE-SOURCE
 
 3) Clean the build environment
 
@@ -71,6 +90,13 @@
 distribution should already contain standalone version of Waf. To trigger configure
 process, run command `./waf configure`. There are a few configuration options:
 
+<<<<<<< TREE
+=======
+    --with-indicator-sound-maverick
+        Include support for Ubuntu Maverick version of Sound indicator
+        Requires: libindicate, libdbusmenu-glib
+    
+>>>>>>> MERGE-SOURCE
     --without-glib-dbus
         Allows building with GLib < 2.26, but without following fratures:
             * multimedia keys

=== modified file 'README.Fedora'
--- README.Fedora	2012-02-12 14:40:38 +0000
+++ README.Fedora	2012-06-15 15:20:27 +0000
@@ -11,7 +11,11 @@
 
 	# yum install gcc glib2-devel libgee-devel libsoup-devel \
 	  gtk2-devel webkitgtk-devel python vala libnotify-devel \
+<<<<<<< TREE
 	  libX11-devel unique-devel intltool librsvg2 libjson-glib-devel
+=======
+	  libX11-devel unique-devel intltool librsvg2
+>>>>>>> MERGE-SOURCE
 
 2.) Compilation
 

=== modified file 'README.Ubuntu'
--- README.Ubuntu	2012-03-26 20:58:21 +0000
+++ README.Ubuntu	2012-06-15 15:20:27 +0000
@@ -31,7 +31,11 @@
     # apt-get install libglib2.0-dev libgee-dev libsoup2.4-dev \
       libgtk2.0-dev libwebkitgtk-dev python valac libnotify-dev \
       libx11-dev libunique-dev libdbusmenu-glib-dev libunity-dev \
+<<<<<<< TREE
       intltool librsvg2-bin python-scour libjson-glib-dev
+=======
+      intltool librsvg2-bin python-scour
+>>>>>>> MERGE-SOURCE
 
 2.) Compilation
 
@@ -57,7 +61,11 @@
     # apt-get install libglib2.0-dev libgee-dev libsoup2.4-dev \
       libgtk2.0-dev libwebkitgtk-dev python valac libnotify-dev \
       libx11-dev libunique-dev libdbusmenu-glib-dev libunity-dev \
+<<<<<<< TREE
       intltool librsvg2-bin libjson-glib-dev
+=======
+      intltool librsvg2-bin
+>>>>>>> MERGE-SOURCE
 
 2.) Compilation
 
@@ -86,7 +94,11 @@
     # apt-get install libglib2.0-dev libgee-dev libsoup2.4-dev \
       libgtk2.0-dev libwebkit-dev python valac libnotify-dev \
       libx11-dev libunique-dev libdbusmenu-glib-dev libindicate-dev \
+<<<<<<< TREE
       intltool librsvg2-bin libjson-glib-dev
+=======
+      intltool librsvg2-bin
+>>>>>>> MERGE-SOURCE
 
 2.) Compilation
 
@@ -113,7 +125,11 @@
     # apt-get update
     # apt-get install libglib2.0-dev libgee-dev libsoup2.4-dev \
       libgtk2.0-dev libwebkit-dev python valac libnotify-dev \
+<<<<<<< TREE
       libx11-dev libunique-dev intltool librsvg2-bin libjson-glib-dev
+=======
+      libx11-dev libunique-dev intltool librsvg2-bin
+>>>>>>> MERGE-SOURCE
 
 2.) Compilation
 

=== modified file 'data/nuvolaplayer/ui/actions_mode_both.xml'
=== modified file 'data/nuvolaplayer/ui/actions_mode_menubar.xml'
=== modified file 'data/nuvolaplayer/ui/actions_mode_toolbar.xml'
=== modified file 'libfenryxo/app.vala'
=== modified file 'libfenryxo/config.vala'
=== modified file 'libfenryxo/connection.vala'
--- libfenryxo/connection.vala	2012-05-04 23:30:07 +0000
+++ libfenryxo/connection.vala	2012-06-15 15:20:27 +0000
@@ -22,6 +22,7 @@
 using Soup;
 using Fenryxo.Path;
 using Fenryxo.Logger;
+<<<<<<< TREE
 using Fenryxo.System;
 
 
@@ -30,6 +31,9 @@
 private extern void soup_session_add_feature_by_type(Soup.Session session, GLib.Type feature_type);
 //~ private extern void soup_session_remove_feature(Soup.Session session, Soup.SessionFeature feature);
 private extern void soup_session_remove_feature_by_type(Soup.Session session, GLib.Type feature_type);
+=======
+using Fenryxo.System;
+>>>>>>> MERGE-SOURCE
 
 namespace Fenryxo{
 	
@@ -204,7 +208,15 @@
 			
 			weak SessionFeature? feature = this.session.get_feature(typeof(CookieJarText));
 			if(feature != null) this.session.remove_feature(feature);
+<<<<<<< TREE
 			soup_session_add_feature(session, new CookieJarText(file.get_path(), false));
+=======
+			#if VALAC_0_15
+				session.add_feature(new CookieJarText(file.get_path(), false));
+			#else
+				session.add_feature = new CookieJarText(file.get_path(), false);
+			#endif
+>>>>>>> MERGE-SOURCE
 		}
 		
 		#if LIBSOUP_CACHE
@@ -246,7 +258,15 @@
 				}
 				
 				if(add_cache){
+<<<<<<< TREE
 					soup_session_add_feature(session, (owned) cache);
+=======
+					#if VALAC_0_15
+						session.add_feature((owned) cache);
+					#else
+						session.add_feature = (owned) cache;
+					#endif
+>>>>>>> MERGE-SOURCE
 				}
 			}
 			

=== modified file 'libfenryxo/system.vala'
=== modified file 'man/nuvolaplayer.1.xml'
--- man/nuvolaplayer.1.xml	2011-12-18 13:36:09 +0000
+++ man/nuvolaplayer.1.xml	2012-06-15 15:20:27 +0000
@@ -155,8 +155,7 @@
       <command>&dhpackage;</command> command.</para>
     <para><emphasis>Nuvola Player</emphasis> runs web interface of cloud music service
     in its own window and provides integration with a Linux desktop (system tray,
-    Ubuntu sound menu, dock menu and notifications). Currently supported services are
-    Google Music, Grooveshark, Hype Machine and 8tracks.
+    Ubuntu sound menu, dock menu and notifications).
  </para>
   </refsect1>
   <refsect1 id="options">

=== modified file 'src/core/application.vala'
--- src/core/application.vala	2012-03-26 20:15:15 +0000
+++ src/core/application.vala	2012-06-15 15:20:27 +0000
@@ -116,11 +116,16 @@
 		public override void run(){
 			this.check_crashed();
 			this.init_connection();
+<<<<<<< TREE
 			this.set_up_page_cache();
 			ui_actions = new UIActions(this);
 			view = new MainView(this);
 			
 			this.player = new Player(this, this.storage);
+=======
+			WebKit.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER);
+			this.frame = new MainView(this);
+>>>>>>> MERGE-SOURCE
 			this.main_window = new MainWindow(this);
 			this.main_window.close_action.connect(this.on_close_action);
 			/* Show page title as window title */

=== modified file 'src/core/service.vala'
--- src/core/service.vala	2012-03-24 22:35:45 +0000
+++ src/core/service.vala	2012-06-15 15:20:27 +0000
@@ -272,6 +272,7 @@
 		public static const string CONFIG_PREFIX = "service";
 		
 		[Description(nick = "service identifier", blurb = "Unique identitier of service")]
+<<<<<<< TREE
 		public string id{
 			get;
 			private set;
@@ -366,7 +367,34 @@
 		
 		/**
 		 * Loads new service integration
+=======
+		public string? id {get; private set; }
+		
+		[Description(nick = "service name", blurb = "Full name of the service")]
+		public string? name {get; private set; }
+		
+		//== Fields ==//
+		
+		/**
+		 * URI of file with selector template
+		 */
+		private string selector_uri = "file:///";
+		private Application app;
+		private MainView frame;
+		/* main page of the web interface for music playback */
+		private string home_url;
+		private string? prev_id = null;
+		private Storage storage;
+		private Regex? sandbox;
+		private bool skip_selector = false;
+		private File? selector_template;
+		private string[] blacklist;
+		
+		/**
+		 * Creates new Service.
+>>>>>>> MERGE-SOURCE
 		 * 
+<<<<<<< TREE
 		 * @param id			service id
 		 * @param version		version of service integration
 		 * @param integration	integration script
@@ -389,6 +417,87 @@
 					"Empty 'sandbox_pattern' entry");
 			}
 			
+=======
+		 * @param app main application obejct
+		 * @param view the main webview
+		 * @param storage storage wrapper
+		 */
+		public Service(Application app, MainView view, Storage storage){
+			this.app = app;
+			this.frame = view;
+			this.storage = storage;
+			
+			/* Look for selector template file. If found, store its uri. */
+			this.selector_template = get_data_file(APPNAME + "/" + SELECTOR_TEMPLATE_PATH);
+			if(this.selector_template != null) this.selector_uri = this.selector_template.get_uri();
+			
+			if(WebKit.MAJOR_VERSION == 1
+			&& (WebKit.MINOR_VERSION == 7 || WebKit.MINOR_VERSION == 8)){
+				blacklist = this.app.config.array("bug958154_blacklist");
+				if(blacklist.length == 0){
+					// Default blacklist for for LP:958154
+					blacklist = {"pandora", "rdio", "googlemusic"};
+				}
+			}
+			else{
+				blacklist = this.app.config.array("services_blacklist");
+				if(blacklist.length == 0){
+					// Default blacklist
+					blacklist = {"googlemusic"};
+				}
+			}
+			
+			/* Load service from the last session or show service selector */
+			var service = this.app.ui_state[CONFIG_PREFIX] ?? "";
+			if(!(service in Service.list_services(blacklist))){
+				service = null;
+			}
+			this.replace(service);
+			
+			/* handle new page and new window requests to apply URL sandbox */
+			this.frame.navigation_policy_decision_requested.connect(this.on_new_page);
+			this.frame.new_window_policy_decision_requested.connect(this.on_new_window);
+			
+			/* Install service to newly created JavaScript environment
+			 * and load scripts when page is loaded */
+			this.frame.window_object_cleared.connect(this.install_service);
+			this.frame.document_load_finished.connect(this.on_frame_loaded);
+		}
+		
+		//==== Public methods ====//
+		
+		/**
+		 * Disconnect service frowm view's signals
+		 */
+		public void disconnect_from_view(){
+			this.frame.navigation_policy_decision_requested.disconnect(this.on_new_page);
+			this.frame.new_window_policy_decision_requested.disconnect(this.on_new_window);
+			this.frame.document_load_finished.disconnect(this.on_frame_loaded);
+			this.frame.window_object_cleared.disconnect(this.install_service);
+		}
+		
+		/**
+		 * Loads service interface or service selector
+		*/
+		public void load(){
+			if(this.id == null){
+				this.show_selector();
+				return;
+			}
+			
+			var uri = this.app.ui_state[CONFIG_PREFIX + "." + this.id + ".last_uri"] ?? this.home_url;
+			
+			log_debug("Starting web interface for %s: %s", this.id, uri);
+			this.frame.open(uri);
+			this.prev_id = null;
+			this.service_loaded(this.id);
+		}
+		
+		/**
+		 * Shows service selector
+		 */
+		public void switch_service(){
+>>>>>>> MERGE-SOURCE
 			try{
 				sandbox = new Regex(sandbox_pattern,
 						RegexCompileFlags.CASELESS | RegexCompileFlags.ANCHORED);
@@ -701,6 +810,451 @@
 //~ 			log_debug(@"Data changed: %s, %s, %s, %s, $playback_state, $can_prev, $can_next, $can_thumbs_up, $can_thumbs_down, $can_favorite",
 //~ 			 song ?? "null", artist ?? "null", album ?? "null", art_uri ?? "null");
 		}
+<<<<<<< TREE
+=======
+		
+		/**
+		 * Emitted when service selector is shown
+		 */
+		public signal void selector_shown();
+		
+		/**
+		 * Emitted if new service is loaded
+		 * 
+		 * @param id service identifier
+		 */
+		public signal void service_loaded(string id);
+		
+		//==== Private methods ====//
+		
+		/**
+		 * Replaces current service with new service or service selector.
+		 * Service selector is shown is id is null or service has invalid
+		 * metadata.
+		 * 
+		 * @param id service identifier
+		 */
+		private void replace(string? id){
+			Regex? sandbox = null;
+			string name = null;
+			string home_page = null;
+			
+			if(id != null && read_metadata(id, out name, out home_page,
+				out sandbox, null, null, null)){
+				this.id = id;
+				this.name = (owned)name;
+				this.home_url = (owned)home_page;
+				this.sandbox = sandbox;
+				return;
+			}
+			
+			this.id = null;
+			this.show_selector();
+		}
+		
+		/**
+		 * Create and show service selector
+		 */
+		private void show_selector(){
+			// HTML string containing links to services and description
+			string items = "";
+			string name;
+			foreach(string service in list_services(blacklist)){
+				if(!read_metadata(service, out name, null, null, null, null, null)) continue;
+				items += SELECTOR_ITEM_TEMPLATE.printf(
+					service, name,
+					/// Shown in Service selector if service doesn't provide description
+					get_description(service) ?? _("No description provided for this service."));
+				
+			}
+			/// Shown as heading in Service selector 
+			string subheading = _("Select cloud music service");
+			
+			string cancel_button;
+			if(this.prev_id != null){
+				cancel_button  = "<a class=\"cancel\" href=\"nuvola:%1$s\">%2$s</a>"
+				/// Shown as label of Cancel button in Service selector
+				.printf(this.prev_id, _("Cancel"));
+			}
+			else{
+				cancel_button = "";
+			}
+			
+			// unowned string is used to avoid copying of SELECTOR_FALLBACK
+			// TODO: check the C code if it really works!
+			unowned string template;
+			string external_template;
+			
+			if(selector_template == null){
+				log_warning("Unable to find selector template '%s'",
+					SELECTOR_TEMPLATE_PATH); 
+				template = SELECTOR_FALLBACK;
+			}
+			else{
+				try{
+					external_template = read_file(selector_template);
+					template = external_template;
+				}
+				catch(Error e){
+					log_critical("Unable to load selector template '%s': %s",
+						selector_template.get_path(), e.message);
+					template = SELECTOR_FALLBACK;
+				}
+					
+			}
+			 
+			this.skip_selector = true; // Used to break loop
+			
+			this.frame.load_string(
+				template.printf(DISPLAY_NAME, subheading, cancel_button, items),
+				"text/html", "utf-8", selector_uri);
+			this.selector_shown();
+		}
+		
+		/**
+		 * Decide whether open page in main view or in the default browser
+		 */
+		private bool on_new_page(WebFrame frame, NetworkRequest req,
+			WebNavigationAction action, WebPolicyDecision decision){
+			if(frame != this.frame.get_main_frame()){
+				// don't care about pages in <iframe> elements
+				return false;
+			}
+			
+			string uri = req.get_uri();
+			log_debug("New page request: URI: %s, frame URI: %s",
+				uri, frame.get_uri() ?? "null");
+				
+			
+			if(this.id == null){
+				// Behavior specific for service selector
+				if(uri == selector_uri){
+					// Request to navigate to service selector
+					if(this.skip_selector){
+						// this.show_selector() caused the new page request
+						this.skip_selector = false;
+					}
+					else{
+						// reload button has been pressed
+						this.show_selector();
+					}
+					return false;
+				}
+				else if(uri.has_prefix("nuvola:")){
+					// Special prefix used in service selector
+					// to navigate to service
+					decision.ignore();
+					var service = uri.substring(7);
+					this.app.ui_state[CONFIG_PREFIX] = service;
+					this.replace(service);
+					this.load();
+					return true;
+				}
+				
+				// Other pages (links to Wikipedia, etc.)
+				// are opened in default browser
+				open_uri_with_fallback(uri);
+				decision.ignore();
+				return true;
+			}
+			
+			
+			
+			/* Open Flash install page in default browser */
+			if(uri.has_prefix("http://get.adobe.com/flashplayer";)){
+				open_uri_with_fallback(uri);
+				decision.ignore();
+				return true;
+			}
+			
+			// If page doesn't match sandbox, open it in default browser		
+			if(!this.sandbox.match(uri)){
+				open_uri_with_fallback(uri);
+				decision.ignore();
+				return true;
+			}
+			
+			this.app.ui_state[CONFIG_PREFIX + "." + this.id + ".last_uri"] = (owned) uri;
+			try{
+				this.app.ui_state.save();
+			}
+			catch(Error e){
+				log_warning("Unable to save UI state: %s", e.message);
+			}
+			
+			return false;
+		}
+		
+		/**
+		 * Open new window in the default web browser
+		 */
+		private bool on_new_window(WebFrame frame, NetworkRequest req,
+			WebNavigationAction action, WebPolicyDecision decision){
+			unowned string uri = req.get_uri();
+			log_debug("New window request: %s", uri);
+			
+			if(this.sandbox.match(uri)){
+				// Oh wait! This page belongs to the main wiew!
+				this.frame.open(uri);
+			}
+			else{
+				open_uri_with_fallback(uri);
+			}
+			decision.ignore();
+			return true;
+		}
+		
+		/**
+		 * Installs JavaScript API binded to this service
+		 */
+		private void install_service(WebKit.WebFrame frame, void* context, void* window_object){
+			if(frame != this.frame.get_main_frame()) return;
+			log_debug("Installing service to the new window object");
+			JSApi.install_service(context, window_object, this);
+			this.frame.execute_script("window._Nuvola.log = window.console.log;");
+		}
+		
+		/**
+		 * Executes scripts when frame is loaded.
+		 */
+		private void on_frame_loaded(WebFrame frame){
+			if(id == null) return;
+			unowned string uri = frame.get_uri();
+			if(uri == null || frame != this.frame.get_main_frame()) return;
+			this.load_scripts();
+		}	
+		
+		/**
+		 * Loads scripts for service view */
+		private void load_scripts(){
+			this.frame.load_script(SERVICES_DIRNAME + "/" + MAIN_SCRIPT_FILENAME);
+			this.frame.load_script(SERVICES_DIRNAME + "/"
+				+ this.id + "/" + INTEGRATION_FILENAME);
+			#if USERSCRIPTS_ENABLED
+				this.frame.load_user_scripts(this.id);
+			#endif
+		}
+		
+		
+		//== Static public fields ==//
+		
+		/**
+		 * Prefix used for service configuration options.
+		 */
+		public static const string CONFIG_PREFIX = "service"; 
+		
+		//== Static private fields ==//
+		
+		/**
+		 * Name of directory with service integrations.
+		 */
+		private static const string SERVICES_DIRNAME = "services";
+		
+		/**
+		 * Name of file with metadata.
+		 */
+		private static const string METADATA_FILENAME = "metadata.conf";
+		
+		/**
+		 * Name of file with service description in HTML.
+		 */
+		private static const string DESCRIPTION_FILENAME = "description.html";
+		
+		/**
+		 * Name of file with integration script.
+		 */
+		private static const string INTEGRATION_FILENAME = "integration.js";
+		
+		/**
+		 * Name of file with main script
+		 */
+		private static const string MAIN_SCRIPT_FILENAME = "main.js";
+		
+		/**
+		 * Path to file with HTML template for service selector.
+		 * Relative to Nuvola's data directory.
+		 */
+		private static const string SELECTOR_TEMPLATE_PATH = "selector/template.html";
+		
+		/**
+		 * Regular expression to check validity of service identifier
+		 */
+		private static Regex id_regex;
+		
+		
+		//== Static public functions ==//
+		
+		/**
+		 * Lists available services
+		 * 
+		 * Note: use read_metadata() function to check if metadata file is valid
+		 * 
+		 * @return array with identifiers of available services
+		 */
+		public static string[] list_services(string[] blacklist){
+			string[] result = {};
+			FileInfo file_info;
+			foreach(weak File dir in get_data_dirs(APPNAME + "/" + SERVICES_DIRNAME)){
+				try{
+					var enumerator = dir.enumerate_children(FILE_ATTRIBUTE_STANDARD_NAME, 0);
+					while((file_info = enumerator.next_file()) != null){
+						string name = file_info.get_name();
+						if(!check_id(name)) continue;
+						if(name in result) continue;
+						if(name in blacklist){
+							log_warning("Service %s is blacklisted.", name);
+							continue;
+						}
+						var item = dir.get_child(name);
+						if(item.query_file_type(0) != FileType.DIRECTORY) continue;
+						if(item.get_child(INTEGRATION_FILENAME).query_file_type(0) != FileType.REGULAR) continue;
+						if(item.get_child(METADATA_FILENAME).query_file_type(0) != FileType.REGULAR) continue;
+						if(item.get_child(DESCRIPTION_FILENAME).query_file_type(0) != FileType.REGULAR) continue;
+						
+						result += name;
+					}
+				}
+				catch(Error e){
+					continue; // Not a directory?
+				} 
+			}
+			return result;
+		}
+		
+		/**
+		 * Loads description for service. Description is in HTML format.
+		 * 
+		 * @param service Service id
+		 * @return description or null on failure
+		 */
+		public static string? get_description(string service){
+			var file = get_data_file(APPNAME + "/" + SERVICES_DIRNAME + "/"
+				+ service + "/" + DESCRIPTION_FILENAME);
+			if(file == null){
+				log_warning("Unable to find description for service '%s'", service);
+				return null;
+			}
+			try{
+				return read_file(file);
+			}
+			catch(Error e){
+				log_critical("Unable to read description file '%s': %s",
+					file.get_path(), e.message);
+				return null;
+			}
+		}
+		
+		/**
+		 * Reads service integration metadata
+		 *
+		 * @param service_id service identifier
+		 * @param name name of the service
+		 * @param home_page main page of the web interface for music playback
+		 * @param sandbox pages not matching this regular expression will be opened in the default web browser
+		 * @param version version of the integration
+		 * @param maintainer_name name of the maintainer of the service integration
+		 * @param maintainer_link link to page with contact to maintainer
+		 * @return true if all metadata have been succesfully obtained, otherwise false
+		 */
+		public static bool read_metadata(string service_id, out string name,
+			out string home_page, out Regex sandbox, out int version,
+			out string maintainer_name, out string maintainer_link
+			){
+			var file = get_data_file(APPNAME + "/"
+				+ SERVICES_DIRNAME + "/" + service_id + "/" + METADATA_FILENAME);
+			return read_metadata_from_file(file, out name,
+			out home_page, out sandbox, out version,
+			out maintainer_name, out maintainer_link);
+		}
+		
+		/**
+		 * Reads service integration metadata from file.
+		 * 
+		 * @param metadata file with metadata
+		 * @param name name of the service (not id)
+		 * @param home_page main page of the web interface for music playback
+		 * @param sandbox pages not matching this regular expression will be opened in the default web browser
+		 * @param version version of the integration
+		 * @param maintainer_name name of the maintainer of the service integration
+		 * @param maintainer_link link to page with contact to maintainer
+		 * @return true if all metadata have been succesfully obtained, otherwise false
+		 */
+		public static bool read_metadata_from_file(File metadata, out string name,
+			out string home_page, out Regex sandbox, out int version,
+			out string maintainer_name, out string maintainer_link
+			){
+			bool valid = true;
+			var map = new MapFile(metadata, true);
+			name = map["name"] ?? "";
+			if(name == ""){
+				log_warning("Empty 'name' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			var sandbox_pattern = map["sandbox_pattern"] ?? "";
+			if(sandbox_pattern == ""){
+				log_warning("Empty 'sandbox_pattern' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			try{
+				sandbox = new Regex(sandbox_pattern,
+						RegexCompileFlags.CASELESS | RegexCompileFlags.ANCHORED);
+				log_debug("Valid 'sandbox_pattern = %s' in %s.", sandbox_pattern, metadata.get_path());
+			}
+			catch(RegexError e){
+				log_warning("Invalid 'sandbox_pattern' in %s: %s", metadata.get_path(), e.message);
+				sandbox = null;	
+				valid = false;
+			}
+			
+			maintainer_name = map["maintainer_name"] ?? "";
+			if(maintainer_name == ""){
+				log_warning("Empty 'maintainer_name' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			home_page = map["home_page"] ?? "";
+			if(!home_page.has_prefix("http://";)
+			&&  !home_page.has_prefix("https://";)){
+				log_warning("Empty or invalid 'home_page' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			maintainer_link = map["maintainer_link"] ?? "";
+			if(!maintainer_link.has_prefix("http://";)
+			&&  !maintainer_link.has_prefix("https://";)){
+				log_warning("Empty or invalid 'maintainer_link' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			version = map.get_int("version", 0);
+			if(version <= 0){
+				log_warning("Invalid 'version' in %s", metadata.get_path());
+				valid = false;
+			}
+			
+			return valid;
+		}
+		
+		/**
+		 * Check if the service identifier is valid
+		 * 
+		 * @param id service identifier
+		 * @return true if id is valid
+		 */
+		public static bool check_id(string id){
+			if(id_regex == null){
+				try{
+					id_regex = new Regex("^\\w+$");
+				}
+				catch(RegexError e){
+					log_error("Unable to compile regular expression /^\\w+$/.");	
+				}
+			}
+			return id_regex.match(id);
+		}
+>>>>>>> MERGE-SOURCE
 	}
 		
 	

=== modified file 'src/core/settings.vala'
--- src/core/settings.vala	2012-03-03 21:44:20 +0000
+++ src/core/settings.vala	2012-06-15 15:20:27 +0000
@@ -38,6 +38,7 @@
 		private const string NOTIFICATIONS = "notifications";
 		private const string DOCK_MANAGER = "dock_manager";
 		private const string UNITY_QUICK_LIST = "unity_quick_list";
+<<<<<<< TREE
 		private const string PAGE_CACHE = "page_cache";
 		private const string DATA_CACHE = "data_cache";
 		private const string DATA_CACHE_SIZE = "data_cache_size";
@@ -45,6 +46,10 @@
 		private const string WEB_PLUGINS = "web_plugins";
 		private const string SPACE_KEY = "space_key";
 		private const string SONG_LYRICS = "song_lyrics";
+=======
+		#endif
+		private const string SPACE_KEY = "space_key";
+>>>>>>> MERGE-SOURCE
 	}
 	
 	
@@ -75,6 +80,7 @@
 		public abstract bool dock_manager{ get; set; }
 		[Description(nick = "Unity Quick List", blurb = "Enables or disables dynamic quick list of Unity Launcher.")]
 		public abstract bool unity_quick_list{ get; set; }
+<<<<<<< TREE
 		[Description(nick = "Auto play", blurb = "Whether automatically start playback (if possible).")]
 		public abstract bool auto_play{ get; set; }
 		[Description(nick = "Web plugins", blurb = "Whether web plugins are enabled.")]
@@ -89,6 +95,11 @@
 		public abstract bool space_key{ get; set; }
 		[Description(nick = "Fetch song lyrics", blurb = "Whether it is allowed to fetch song lyrics.")]
 		public abstract bool song_lyrics{ get; set; }
+=======
+		#endif
+		[Description(nick = "Use space key", blurb = "Whether it is allowed to use space key in keybindings.")]
+		public abstract bool space_key{ get; set; }
+>>>>>>> MERGE-SOURCE
 	}
 	
 	/**
@@ -210,6 +221,7 @@
 		
 		public bool unity_quick_list{
 			get{
+<<<<<<< TREE
 				return get_bool(UNITY_QUICK_LIST, true);
 			}
 			set{
@@ -285,5 +297,24 @@
 				set_bool(SONG_LYRICS, value);
  			}
  		}
+=======
+				return this.get_bool(UNITY_QUICK_LIST, true);
+			}
+			set{
+				this.set_bool(UNITY_QUICK_LIST, value);
+			}
+		}
+		#endif
+		
+		public bool space_key{
+			get{
+				return get_bool(SPACE_KEY, true);
+ 			}
+ 			
+ 			set{
+				set_bool(SPACE_KEY, value);
+ 			}
+ 		}
+>>>>>>> MERGE-SOURCE
 	}
 }

=== modified file 'src/core/storage.vala'
=== modified file 'src/gui/actions.vala'
--- src/gui/actions.vala	2012-03-01 20:54:53 +0000
+++ src/gui/actions.vala	2012-06-15 15:20:27 +0000
@@ -31,6 +31,7 @@
 		TOOLBAR;
 	}
 	
+<<<<<<< TREE
 	public class UIActions : Gtk.UIManager{
 		private weak Application app;
 		public UIActionsMode mode{
@@ -43,6 +44,25 @@
 		
 		private bool _has_data_cache = true;
 		public bool has_data_cache{
+=======
+	public class Actions : GLib.Object{
+		private Application app;
+		private Player player;
+		private MainView frame;
+		private ActionsMode mode = ActionsMode.MENUBAR;
+		public Toolbar toolbar;
+		public MenuBar menubar;
+		private Gtk.Menu? menu;
+		private Gtk.Action pp_action;
+		private Gtk.Action action_next;
+		private Gtk.Action action_prev;
+		public Gtk.ActionGroup actions { get; private set;}
+		private static Gtk.ActionEntry[] normal_entries;
+		private static RadioActionEntry[] radio_entries;
+		private Gtk.Window window;
+		private bool _enable_navigation = true;
+		public bool enable_navigation{
+>>>>>>> MERGE-SOURCE
 			get{
 				return this._has_data_cache;
 			}
@@ -66,10 +86,37 @@
 			create_actions();
 			insert_action_group(actions, 0);
 			
+			app.config.notify["space-key"].connect_after(() => {
+				uint key;
+				Gdk.ModifierType mods;
+				Gtk.accelerator_parse(get_pp_accel(), out key, out mods);
+				Gtk.AccelMap.change_entry(
+					"<Actions>/nuvola/toggle-play", key, mods, false);
+			});
 		}
 		
+<<<<<<< TREE
 		
 		private void create_actions(){
+=======
+		public void set_mode(ActionsMode mode){
+			if(this.mode == mode) return;
+			this.mode = mode;
+			this.create();
+		}
+		
+		private string get_pp_accel(){
+			return app.config.space_key ? "<ctrl>space" : "<ctrl>P";
+		}
+		
+		private void update_navigation(){
+			this.actions.get_action("home").sensitive = this._enable_navigation;
+			this.actions.get_action("back").sensitive = this._enable_navigation && this.frame.can_go_back();
+			this.actions.get_action("forward").sensitive = this._enable_navigation && this.frame.can_go_forward();
+		}
+		
+		private void create(){
+>>>>>>> MERGE-SOURCE
 			/* 
 			 * NOTE: Vala supports easy creation of constant array of struct:
 			
@@ -89,6 +136,13 @@
 			int i = 0;
 			
 			/* Normal items. Name, stock id, label, accelerator, tooltip, callback */
+<<<<<<< TREE
+=======
+			normal_entries = new Gtk.ActionEntry[29];
+			int i = 0;
+			void* self = this;
+			
+>>>>>>> MERGE-SOURCE
 			// Service
 			/// Menu Service
 			normal_entries[i++] = {"service", null, _("_Service"), null, null, null};
@@ -99,6 +153,11 @@
 			// Control
 			/// Menu Control
 			normal_entries[i++] = {"control", null, _("_Control"), null, null, null};
+<<<<<<< TREE
+=======
+			normal_entries[i++] = {"prev", Stock.MEDIA_PREVIOUS, null, "<alt>Left", null, this.cb};
+			normal_entries[i++] = {"next", Stock.MEDIA_NEXT, null, "<alt>Right", null, this.cb};
+>>>>>>> MERGE-SOURCE
 			
 			// View
 			/// Menu View
@@ -158,6 +217,7 @@
 			action = new Gtk.Action("website", _("About release %s").printf(RELEASE), null, Gtk.Stock.INFO);
 			action.activate.connect(this.cb);
 			actions.add_action(action);
+<<<<<<< TREE
 		}
 		
 		
@@ -172,6 +232,19 @@
 				ui_merge_id = 0;
 			}
 						
+=======
+			
+			var manager = new UIManager();
+			
+			Gtk.Action play_pause_action;
+ 			play_pause_action = new Gtk.Action("toggle-play", null, null, Gtk.Stock.MEDIA_PLAY);
+ 			play_pause_action.activate.connect(this.cb);
+ 			actions.add_action_with_accel(play_pause_action, get_pp_accel());
+
+			manager.insert_action_group(actions, 0);
+			var accels = manager.get_accel_group();
+			window.add_accel_group(accels);
+>>>>>>> MERGE-SOURCE
 			string ui_file;
 			switch(this.mode){
 			case UIActionsMode.BOTH: ui_file = "/ui/actions_mode_both.xml"; break;
@@ -198,6 +271,7 @@
 			add_ui_request();
 			
 			switch(this.mode){
+<<<<<<< TREE
 			case UIActionsMode.BOTH:
 				menubar = get_widget("/menubar") as Gtk.MenuBar;
 				toolbar = get_widget("/toolbar") as Gtk.Toolbar;
@@ -213,6 +287,17 @@
 				var nuvola_item = get_widget("/menubar/nuvola") as Gtk.MenuItem;
 				menubar.remove(nuvola_item);
 				menubar = null;
+=======
+			case ActionsMode.BOTH:
+				this.menubar.show_all();
+				this.toolbar.show_all();
+				break;
+			case ActionsMode.TOOLBAR:
+				this.menubar.hide();
+				this.toolbar.show_all();
+				var nuvola_item = manager.get_widget("/menubar/nuvola") as Gtk.MenuItem;
+				this.menubar.remove(nuvola_item);
+>>>>>>> MERGE-SOURCE
 				this.menu = nuvola_item.submenu;
 				nuvola_item.submenu = null;
 				toolbar = get_widget("/toolbar") as Gtk.Toolbar;

=== modified file 'src/gui/preferences.vala'
--- src/gui/preferences.vala	2012-03-26 20:22:28 +0000
+++ src/gui/preferences.vala	2012-06-15 15:20:27 +0000
@@ -155,6 +155,7 @@
 			this.hide_window_buttons[2].toggled.connect(this.hide_window_toggled);
 			
 			/// Settings dialog - tab General
+<<<<<<< TREE
 			var space_key = new Gtk.CheckButton.with_label(_("Enable keybindings with Space key."));
 			space_key.active = app.config.space_key;
 			space_key.toggled.connect(() => {
@@ -163,6 +164,43 @@
 			box.pack_start(space_key, false, false, 10);
 			
 						
+=======
+			label = new Label(_("Show tray icon"));
+			label.xalign = 0.0f;
+			box.pack_start(label, false, false, 10);
+			this.tray_buttons = new RadioButton[3];
+			/// Settings dialog - tab General, always show tray icon
+			this.tray_buttons[0] = new RadioButton.with_label(null, _("Always"));
+			box.pack_start(this.tray_buttons[0], false, false, 0);
+			/// Settings dialog - tab General, show tray icon if needed
+			this.tray_buttons[1] = new RadioButton.with_label(this.tray_buttons[0].get_group(), _("If needed"));
+			box.pack_start(this.tray_buttons[1], false, false, 0);
+			/// Settings dialog - tab General, never show tray icon
+			this.tray_buttons[2] = new RadioButton.with_label(this.tray_buttons[0].get_group(), _("Never"));
+			box.pack_start(this.tray_buttons[2], false, false, 0);
+			
+			
+			switch(this.app.config.tray_icon){
+				case TrayIconMode.ALWAYS: this.tray_buttons[0].active = true; break;
+				case TrayIconMode.NEVER: this.tray_buttons[2].active = true; break;
+				default: this.tray_buttons[1].active = true; break;
+			}
+			
+			this.tray_buttons[0].toggled.connect(this.tray_toggled);
+			this.tray_buttons[1].toggled.connect(this.tray_toggled);
+			this.tray_buttons[2].toggled.connect(this.tray_toggled);
+			
+			var space_key = new Gtk.CheckButton.with_label(_("Enable keybindings with Space key."));
+			space_key.active = app.config.space_key;
+			space_key.toggled.connect(() => {
+				app.config.space_key = space_key.active;
+			});
+			box.pack_start(space_key, false, false, 10);
+			
+			
+			
+			
+>>>>>>> MERGE-SOURCE
 			box = new Gtk.VBox(false, 2);
 			box.border_width = 10; 
 			/// Settings dialog tab

=== modified file 'src/gui/windows.vala'
--- src/gui/windows.vala	2012-04-26 19:38:00 +0000
+++ src/gui/windows.vala	2012-06-15 15:20:27 +0000
@@ -69,8 +69,13 @@
 			
 			if(DEV_CHANNEL == "unstable"){
 				/// Warning for unstable builds, %1$s = version, %2$s and %3$s = links
+<<<<<<< TREE
 				var dev_label = new Gtk.Label(_("You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in <a href='%4$s'>stable and beta builds</a>.</i>")
 					.printf(app.version, "http://goo.gl/SvtXK";, "http://l.fenryxo.cz/nuvolachangelog";, "http://projects.fenryxo.cz/Nuvola_Player/Download/";));
+=======
+				var dev_label = new Label(_("You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in <a href='%4$s'>stable and beta builds</a>.</i>")
+					.printf(app.version, "http://goo.gl/SvtXK";, "http://l.fenryxo.cz/nuvolachangelog";, "http://projects.fenryxo.cz/Nuvola_Player/Download/";));
+>>>>>>> MERGE-SOURCE
 				dev_label.selectable = true;
 				dev_label.use_markup = true;
 				dev_label.can_focus = false;
@@ -110,25 +115,41 @@
 			
 			base.add(this.box);
 			this.box.show_all();
-
 			
-			/* Restore last window state */
 			int w = 0;
 			int h = 0;
-			var opt_w = this.app.ui_state["window_w"];
-			if(opt_w != null) w = int.parse(opt_w);
-			var opt_h = this.app.ui_state["window_h"];
-			if(opt_h != null) h = int.parse(opt_h);
-			this.set_default_size(w > 0 ? w: 1010, h > 0 ? h : 600);
+			string? opt_w;
+			string? opt_h;
 			
-			var opt_x = this.app.ui_state["window_x"];
-			var opt_y = this.app.ui_state["window_y"];
-			if(opt_x != null && opt_y != null){
-				this.move(int.parse(opt_x), int.parse(opt_y));
+			if(WebKit.MAJOR_VERSION == 1
+			&& (WebKit.MINOR_VERSION == 7 || WebKit.MINOR_VERSION == 8)){
+				// Workaround for LP:958154
+				opt_w = this.app.ui_state["bug958154_window_w"];
+				if(opt_w != null) w = int.parse(opt_w);
+				opt_h = this.app.ui_state["bug958154_window_h"];
+				if(opt_h != null) h = int.parse(opt_h);
+				w = w > 0 ? w: 1010;
+				h = h > 0 ? h : 534;
+				log_warning("Bug 958154 window size: %d×%d", w, h);
+				this.set_default_size(w, h);
 			}
-			
-			if(this.app.ui_state.get_bool("window_maximized", false)){
-				this.maximize();
+			else{
+				/* Restore last window state */
+				opt_w = this.app.ui_state["window_w"];
+				if(opt_w != null) w = int.parse(opt_w);
+				opt_h = this.app.ui_state["window_h"];
+				if(opt_h != null) h = int.parse(opt_h);
+				this.set_default_size(w > 0 ? w: 1010, h > 0 ? h : 600);
+				
+				var opt_x = this.app.ui_state["window_x"];
+				var opt_y = this.app.ui_state["window_y"];
+				if(opt_x != null && opt_y != null){
+					this.move(int.parse(opt_x), int.parse(opt_y));
+				}
+				
+				if(this.app.ui_state.get_bool("window_maximized", false)){
+					this.maximize();
+				}
 			}
 
 			
@@ -253,11 +274,19 @@
 	}
 	
 	public class CrashDialog: Gtk.Dialog{
+<<<<<<< TREE
 		public Gtk.CheckButton reset_config;
 		public Gtk.CheckButton reset_ui_state;
 		public Gtk.CheckButton purge_cookies;
 		public Gtk.CheckButton? disable_proxy;
 		public Gtk.CheckButton disable_check;
+=======
+		public CheckButton reset_config;
+		public CheckButton reset_ui_state;
+		public CheckButton purge_cookies;
+		public CheckButton? disable_proxy;
+		public CheckButton disable_check;
+>>>>>>> MERGE-SOURCE
 		
 		#if LIBSOUP_CACHE
 			public Gtk.CheckButton purge_browser;
@@ -335,6 +364,7 @@
 			label.use_markup = true;
 			label.wrap_mode = Pango.WrapMode.WORD;
 			label.wrap = true;
+<<<<<<< TREE
 			label.justify = Gtk.Justification.FILL;
 			
 			content.pack_start(label, true, true, 0);
@@ -360,6 +390,33 @@
 			/// Crash dialog
 			this.disable_check = new Gtk.CheckButton.with_label(_("Do not show crash dialog again."));
 			box.pack_start(this.disable_check, false, false, 0);
+=======
+			label.justify = Justification.FILL;
+			
+			content.pack_start(label, true, true, 0);
+			
+			label = new Label(
+				/// Crash dialog
+				_("Another cause may be session/login manager, if it doesn't notify Nuvola Player to quit properly when user is about to logout.")
+				);
+			label.xalign = 0;
+			label.xpad = 15;
+			label.ypad = 0;
+			label.use_markup = true;
+			label.wrap_mode = Pango.WrapMode.WORD;
+			label.wrap = true;
+			label.justify = Justification.FILL;
+			
+			content.pack_start(label, true, true, 0);
+			
+			box = new VBox(false, 0);
+			box.border_width = 15;
+			content.pack_start(box, false, false, 0);
+			
+			/// Crash dialog
+			this.disable_check = new CheckButton.with_label(_("Do not show crash dialog again."));
+			box.pack_start(this.disable_check, false, false, 0);
+>>>>>>> MERGE-SOURCE
 			content.show_all();
 			
 		}

=== modified file 'src/plugins/media_keys.vala'
--- src/plugins/media_keys.vala	2012-03-24 22:48:53 +0000
+++ src/plugins/media_keys.vala	2012-06-15 15:20:27 +0000
@@ -169,8 +169,14 @@
 				this.media_keys = Bus.get_proxy_sync(BusType.SESSION,
 				"org.gnome.SettingsDaemon",
 				"/org/gnome/SettingsDaemon/MediaKeys");
+<<<<<<< TREE
 				/* Vala includes "return false" if DBus method call fails! */
 				this.media_keys.grab_media_player_keys(app.app_name, 0);
+=======
+				
+				/* Vala includes "return false" if DBus method call fails! */
+				this.media_keys.grab_media_player_keys(this.app_name, 0);
+>>>>>>> MERGE-SOURCE
 				this.media_keys.media_player_key_pressed.connect(this.on_media_key_pressed);
 				return true;
 				

=== modified file 'src/plugins/mpris.vala'
=== modified file 'src/plugins/trayicon.vala'
--- src/plugins/trayicon.vala	2012-02-19 17:19:24 +0000
+++ src/plugins/trayicon.vala	2012-06-15 15:20:27 +0000
@@ -55,6 +55,7 @@
 	 * 
 	 * The tray icon is shown only if Ubuntu Sound menu is not detected.
 	 */
+<<<<<<< TREE
 	public class Plugin:  Object, Nuvola.Plugin{
 		private string id = "trayicon";
 		private weak Nuvola.Application app;
@@ -65,6 +66,42 @@
 		public string get_id(){
 			return id;
 		}
+=======
+	public class TrayIcon:  BaseHelper{
+		[Description(nick = "Availibility of hide action.", blurb = "If true the main window can be hidden to a tray icon or Ubuntu Sound menu.")]
+		public bool can_hide{
+			get{
+#if GLIB_DBUS
+				return this.ubuntu_sound_menu.visible || this.icon != null;
+#else
+				return this.icon != null;
+#endif
+				
+			}
+		}
+		
+		private TrayIconMode _mode;
+		[Description(nick = "TrayIcon mode.", blurb = "Specifies visibility ob the tray icon")]
+		public TrayIconMode mode{
+			get{
+				return this._mode;
+			}
+			set{
+				this._mode = value;
+				this.update();
+			}
+		}
+		
+		private Gtk.Menu? menu;
+		private StatusIcon? icon;
+#if GLIB_DBUS
+		private UbuntuSoundMenu ubuntu_sound_menu;
+		// It will be set to false if Ubuntu Sound Menu is not found
+		private bool icon_needed = false;
+#else
+		private bool icon_needed = true;
+#endif
+>>>>>>> MERGE-SOURCE
 		
 		/**
 		 * Loads Tray icon

=== modified file 'translations/LINGUAS'
--- translations/LINGUAS	2012-02-13 19:25:11 +0000
+++ translations/LINGUAS	2012-06-15 15:20:27 +0000
@@ -3,11 +3,13 @@
 ca@valencia
 cs
 de
+el
 en_GB
 es
 et
 fi
 fr
+hu
 ia
 it
 ja
@@ -19,6 +21,13 @@
 pt
 ru
 sl
+sq
 sv
-te
-tr
+<<<<<<< TREE
+te
+tr
+=======
+te
+tr
+zh_CN
+>>>>>>> MERGE-SOURCE

=== added file 'translations/el.po'
--- translations/el.po	1970-01-01 00:00:00 +0000
+++ translations/el.po	2012-06-15 15:20:27 +0000
@@ -0,0 +1,453 @@
+# Greek translation for nuvola-player
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the nuvola-player package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nuvola-player\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-12-16 10:33+0100\n"
+"PO-Revision-Date: 2012-02-28 16:42+0000\n"
+"Last-Translator: Stathis Iosifidis <Unknown>\n"
+"Language-Team: Greek <el@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-02-29 05:23+0000\n"
+"X-Generator: Launchpad (build 14874)\n"
+
+#. / Shown if unsupported command line argument is used
+#: src/main.vala:194
+msgid "Error: Option parsing failed:"
+msgstr "Σφάλμα: Αποτυχία Ανάλυσης Επιλογών:"
+
+#. / Short label for command 'start or resume playback'
+#: src/player.vala:57
+msgid "Play"
+msgstr "Αναπαραγωγή"
+
+#. / Short label for command 'pause playback'
+#: src/player.vala:59
+msgid "Pause"
+msgstr "Παύση"
+
+#. / Short label for command 'skip to previous song'
+#: src/player.vala:61
+msgid "Previous song"
+msgstr "Προηγούμενο τραγούδι"
+
+#. / Short label for command 'skip to next song'
+#: src/player.vala:63
+msgid "Next song"
+msgstr "Επόμενο τραγούδι"
+
+#. / Short label for command 'thumb up' or 'like this song' (see Google Music buttons)
+#: src/player.vala:65
+msgid "Thumbs Up"
+msgstr "Μου αρέσει"
+
+#. / Short label for command 'thumb down' or 'dislike this song' (see Google Music buttons)
+#: src/player.vala:67
+msgid "Thumbs Down"
+msgstr "Δεν μου αρέσει"
+
+#. / Short label for command 'add this song to favorites'
+#: src/player.vala:69
+msgid "Favorite"
+msgstr "Αγαπημένο"
+
+#. / Short label for command 'quit application'
+#: src/player.vala:71
+msgid "Quit"
+msgstr "Έξοδος"
+
+#. / Initial notification
+#: src/player.vala:166
+msgid "Version"
+msgstr "Έκδοση"
+
+#. / Shown in notification if both artist and album are unknown
+#: src/player.vala:301
+msgid "by unknown artist"
+msgstr "κατά άγνωστο καλλιτέχνη"
+
+#. / Shown in notification if artist is unknown, %s will be replaced by album name
+#: src/player.vala:305
+msgid "by unknown artist from %s"
+msgstr "κατά άγνωστο καλλιτέχνη από %s"
+
+#. / Shown in notification if album is unknown, %s will be replaced by artist name
+#: src/player.vala:309
+msgid "by %s"
+msgstr "κατά %s"
+
+#. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
+#: src/player.vala:313
+msgid "by %1$s from %2$s"
+msgstr "κατά %1$s από %2$s"
+
+#. / Shown in Service selector if service doesn't provide description
+#: src/service.vala:189
+msgid "No description provided for this service."
+msgstr "Δεν παρέχεται λεπτομέρειες για αυτή την υπηρεσία."
+
+#. / Shown as heading in Service selector
+#: src/service.vala:193
+msgid "Select cloud music service"
+msgstr "Επιλογή υπηρεσίας μουσικής cloud"
+
+#. / Shown as label of Cancel button in Service selector
+#: src/service.vala:197
+msgid "Cancel"
+msgstr "Άκυρο"
+
+#. / Menu Service
+#: src/gui/actions.vala:110
+msgid "_Service"
+msgstr "_Υπηρεσία"
+
+#. / Menu item to switch service
+#: src/gui/actions.vala:117
+msgid "_Switch Service"
+msgstr "_Εναλλαγή Υπηρεσίας"
+
+#. / Menu Control
+#: src/gui/actions.vala:121
+msgid "_Control"
+msgstr "_Control"
+
+#. / Menu View
+#: src/gui/actions.vala:128
+msgid "_View"
+msgstr "_Προβολή"
+
+#. / Menu Options
+#: src/gui/actions.vala:135
+msgid "_Options"
+msgstr "_Επιλογές"
+
+#. / Menu item to purge cookies
+#. / Crash dialog
+#: src/gui/actions.vala:137 src/gui/windows.vala:243
+msgid "Purge cookies"
+msgstr "Εκκαθάριση cookies"
+
+#. / Menu item to purge album art cache
+#: src/gui/actions.vala:139
+msgid "Purge album art"
+msgstr "Εκκαθάριση άλμπουμ"
+
+#. / Menu item to purge browser cache
+#. / Crash dialog
+#: src/gui/actions.vala:141 src/gui/windows.vala:248
+msgid "Purge browser cache"
+msgstr "Εκκαθάριση λανθάνουσας μνήμης περιηγητή"
+
+#. / Menu Help
+#: src/gui/actions.vala:146
+msgid "_Help"
+msgstr "_Βοήθεια"
+
+#. / Menu item to open online help
+#: src/gui/actions.vala:148
+msgid "Get help online"
+msgstr "Λήψη βοήθειας από το δίκτυο"
+
+#. / Menu item to open bug/issue tracker
+#: src/gui/actions.vala:150
+msgid "Report a problem"
+msgstr "Αναφορά προβλήματος"
+
+#. / Menu item to open feature requests tracker
+#: src/gui/actions.vala:152
+msgid "Suggest new feature"
+msgstr "Υποδείξεις νέων χαρακτηριστικών"
+
+#. / Menu item to open page with information about donations
+#: src/gui/actions.vala:154
+msgid "Donate"
+msgstr "Δωρεά"
+
+#. / Menu item to open Nuvola's page on Google+ social network
+#: src/gui/actions.vala:156
+msgid "Google+ page"
+msgstr "Ιστοσελίδα Google+"
+
+#. / Menu item to open Nuvola's page on Facebook social network
+#: src/gui/actions.vala:158
+msgid "Facebook page"
+msgstr "Ιστοσελίδα Facebook"
+
+#. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
+#: src/gui/actions.vala:162
+msgid "Nuvola Menu"
+msgstr "Μενού Nuvola"
+
+#. / Menu item to show both menu bar and tool bar
+#: src/gui/actions.vala:170
+msgid "Both menubar and toolbar"
+msgstr "Και οι δυο μπάρες μενού και εργαλείων"
+
+#. / Menu item to show only menu bar, tool bar is hidden
+#: src/gui/actions.vala:172
+msgid "Only menubar"
+msgstr "Μόνο μπάρα μενού"
+
+#. / Menu item to show only tool bar, menu bar is hidden
+#: src/gui/actions.vala:174
+msgid "Only toolbar"
+msgstr "Μόνο μπάρα εργαλείων"
+
+#. / Menu item to open web page about the current release
+#: src/gui/actions.vala:183
+msgid "About release %s"
+msgstr "Σχετικά με την έκδοση %s"
+
+#. / Preferences dialog title
+#: src/gui/preferences.vala:33
+msgid "Preferences"
+msgstr "Προτιμήσεις"
+
+#. / Settings dialog, tab General
+#: src/gui/preferences.vala:88
+msgid "General"
+msgstr "Γενικά"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:91
+msgid "Handle multimedia keys."
+msgstr "Διαχείριση πλήκτρων πολυμέσων."
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:97
+msgid "Use Pause (break) key to toggle play/pause"
+msgstr "Χρήση Πλήκτρου Παύσης (διακοπή) για εναλλαγή αναπαραγωγής/παύσης"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:103
+msgid "Show notifications."
+msgstr "Εμφάνιση ειδοποιήσεων."
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:109
+msgid "Hide window if close button is pressed"
+msgstr "Απόκρυψη παραθύρου εάν πατηθεί το πλήκτρο κλεισίματος"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:114
+msgid "Always (may require tray icon)"
+msgstr "Πάντα (μπορεί να απαιτείται εικονίδιο στην μπάρα)"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:117
+msgid "Only if music is playing  (may require tray icon)"
+msgstr ""
+"Μόνο όταν αναπαράγεται μουσική (μπορεί να απαιτείται εικονίδιο στην μπάρα)"
+
+#. / Settings dialog - tab General
+#. / Settings dialog - tab General, never show tray icon
+#: src/gui/preferences.vala:120 src/gui/preferences.vala:145
+msgid "Never"
+msgstr "Ποτέ"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:134
+msgid "Show tray icon"
+msgstr "Εμφάνιση εικονιδίου στην μπάρα"
+
+#. / Settings dialog - tab General, always show tray icon
+#: src/gui/preferences.vala:139
+msgid "Always"
+msgstr "Πάντα"
+
+#. / Settings dialog - tab General, show tray icon if needed
+#: src/gui/preferences.vala:142
+msgid "If needed"
+msgstr "Εάν απαιτείται"
+
+#. / Settings dialog tab
+#: src/gui/preferences.vala:163
+msgid "Network"
+msgstr "Δίκτυο"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:166
+msgid ""
+"Some cloud music services don't work with automatic settings and may require "
+"manual SOCKS proxy settings. New proxy settings is applied after restart of "
+"Nuvola Player."
+msgstr ""
+"Μερικές υπηρεσίες μουσικής cloud δεν δουλεύουν με αυτόματες ρυθμίσεις και "
+"μπορεί να απαιτούν χειροκίνητες ρυθμίσεις διαμεσολάβησης SOCKS. Οι νέες "
+"ρυθμίσεις διαμεσολάβησης εφαρμόζονται μετά την επανεκκίνηση του προγράμματος "
+"Nuvola."
+
+#. / Settings dialog - tab Network, warning shown if a buggy connection library is used
+#: src/gui/preferences.vala:175
+msgid ""
+"<b>Warning:</b> A version of a library used for network connection contained "
+"in your system has issues with HTTPS proxy support and it may cause crash of "
+"Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
+msgstr ""
+"<b>Προσοχή:</b> Η έκδοση της βιβλιοθήκης που χρησιμοποιείται για σύνδεση με "
+"το δίκτυο που περιλαμβάνεται στο σύστημά σας έχει προβλήματα με υποστήριξη "
+"διαμεσολάβησης HTTPS και μπορεί να προκαλέσει κατάρρευση του προγράμματος "
+"Nuvola. Συνίσταται να μην χρησιμοποιήσετε ρυθμίσεις Διαμεσολάβησης HTTP(S)."
+
+#. / Settings dialog - tab Network, shown if tsocks library was not detected
+#: src/gui/preferences.vala:185
+msgid ""
+"<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
+"may not be supported."
+msgstr ""
+"<b>Σημείωση:</b> Η <a href='%s'>βιβλιοθήκη TSOCKS</a> δεν ανιχνεύθηκε. Η "
+"διαμεσολάβηση SOCKS μπορεί να μην υποστηρίζεται."
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:195
+msgid "Use direct connection without a proxy server"
+msgstr "Χρήση άμεσης σύνδεσης χωρίς εξυπηρετητή διαμεσολάβησης"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:199
+msgid "Use system HTTP(S) proxy settings"
+msgstr "Χρήση ρυθμίσεων διαμεσολάβησης συστήματος HTTP(S)"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:203
+msgid "Use manual proxy settings"
+msgstr "Χρήση χειροκίνητων ρυθμίσεων διαμεσολάβησης"
+
+#: src/gui/preferences.vala:212
+msgid "Proxy Type"
+msgstr "Τύπος Διαμεσολάβησης"
+
+#. / Settings dialog - tab Network, proxy type HTTP(S)
+#: src/gui/preferences.vala:215
+msgid "HTTP(S)"
+msgstr "HTTP(S)"
+
+#. / Settings dialog - tab Network, proxy type SOCKS
+#: src/gui/preferences.vala:218
+msgid "SOCKS"
+msgstr "SOCKS"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:228
+msgid "Proxy Server"
+msgstr "Εξυπηρετητής Διαμεσολάβησης"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:238
+msgid "Proxy Server Port"
+msgstr "Θύρα Εξυπηρετητή Διαμεσολάβησης"
+
+#. / Settings dialog, tab User Scripts
+#: src/gui/preferences.vala:280
+msgid "User scripts"
+msgstr "Scripts Χρήστη"
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:283
+msgid ""
+"User scripts are used to enhance web interface of cloud music services."
+msgstr ""
+"Scripts χρήστη που χρησιμοποιούνται για βελτίωση της διεπαφής ιστού των "
+"υπηρεσιών μουσικής cloud."
+
+#. / Settings dialog - tab User Scripts, warning
+#: src/gui/preferences.vala:291
+msgid ""
+"<b>Warning:</b> Support for user scripts is incomplete and experimental. It "
+"may be removed in future releases. User script can send data to third "
+"parties, install only trustworthy user scripts."
+msgstr ""
+"<b>Προσοχή:</b> Η υποστήριξη για sripts χρήστη είναι μη ολοκληρωμένη και "
+"πειραματική. Μπορεί να αφαιρεθεί σε μελλοντικές εκδόσεις. Τα scripts χρήστη "
+"μπορεί να στείλουν δεδομένα σε τρίτους, εγκαταστήστε μόνο έμπιστα scripts "
+"χρήστη."
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:301
+msgid "You have to select service to configure user scripts."
+msgstr "Πρέπει να επιλέξετε υπηρεσία για να ρυθμίσετε τα scripts χρήστη."
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:310
+msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
+msgstr ""
+"Λίστα χωρισμένη με κόμματα των ενεργοποιημένων scripts χρηστών για την "
+"υπηρεσία <b>%s</b>:"
+
+#. / Settings dialog - tab User Scripts, button to open user scripts directory
+#: src/gui/preferences.vala:325
+msgid "Open user scripts directory"
+msgstr "Άνοιγμα καταλόγου scripts χρήστη"
+
+#. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
+#: src/gui/windows.vala:63
+msgid ""
+"You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a "
+"problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
+"<a href='%4$s'>stable and beta builds</a>.</i>"
+msgstr ""
+"Εκτελείτε μια <b>μη σταθερή έκδοση %1$s</b>.<a href='%2$s'>Αναφέρετε ένα "
+"πρόβλημα</a>. <a href='%3$s'>Δείτε το ιστορικό αλλαγών</a>. <i>Αυτή η μπάρα "
+"δεν εμφανίζεται σε <a href='%4$s'>σταθερές και beta εκδόσεις</a>.</i>"
+
+#. / Shown in the About Nuvola Player dialog
+#: src/gui/windows.vala:163
+msgid "Cloud music integration for your Linux desktop"
+msgstr "Ενσωμάτωση υπηρεσίας μουσικής cloud στο σύστημα Linux"
+
+#. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
+#: src/gui/windows.vala:165
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+"  Stathis Iosifidis https://launchpad.net/~diamond-gr";
+
+#. / Title of the Crash dialog
+#: src/gui/windows.vala:205
+msgid "Nuvola Player Crash Dialog"
+msgstr "Παράθυρο Κατάρρευσης Αναπαραγωγέα Nuvola"
+
+#. / Crash dialog
+#: src/gui/windows.vala:220
+msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
+msgstr ""
+"<b>Η προηγούμενη συνεδρία του προγράμματος Nuvola δεν τερματίστηκε σωστά.</b>"
+
+#. / Crash dialog
+#: src/gui/windows.vala:228
+msgid "You can try following options to solve this issue:"
+msgstr ""
+"Μπορείτε να εφαρμόσετε τις παρακάτω επιλογές για να λύσετε αυτό το θέμα:"
+
+#. / Crash dialog
+#: src/gui/windows.vala:237
+msgid "Reset configuration"
+msgstr "Επαναφορά ρυθμίσεων"
+
+#. / Crash dialog
+#: src/gui/windows.vala:240
+msgid "Reset state of user interface"
+msgstr "Κατάσταση επαναφοράς διεπαφής χρήστη"
+
+#. / Crash dialog
+#: src/gui/windows.vala:254
+msgid "Disable HTTP(S) proxy"
+msgstr "Απενεργοποίηση διαμεσολάβησης HTTP(S)"
+
+#. / Crash dialog
+#: src/gui/windows.vala:259
+msgid ""
+"Cloud music services use Flash to play music. Unfortunately, Flash Player is "
+"known not to be very stable and may cause crash of Nuvola Player. Please "
+"visit <a href='%s'>Flash troubleshooting</a>"
+msgstr ""
+"Οι υπηρεσίες μουσικής cloud χρησιμοποιούν Flash για αναπαραγωγή μουσικής. "
+"Δυστυχώς, ο Flash Player είναι γνωστό ότι δεν είναι πολύ σταθερός και μπορεί "
+"να προκαλέσει κατάρρευση του Nuvola. Παρακαλώ επισκεφθείτε την ιστοσελίδα <a "
+"href='%s'>προβλήματα Flash</a>"

=== added file 'translations/hu.po'
--- translations/hu.po	1970-01-01 00:00:00 +0000
+++ translations/hu.po	2012-06-15 15:20:27 +0000
@@ -0,0 +1,447 @@
+# Hungarian translation for nuvola-player
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the nuvola-player package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nuvola-player\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-12-16 10:33+0100\n"
+"PO-Revision-Date: 2012-02-21 12:34+0000\n"
+"Last-Translator: Peter Nagy <Unknown>\n"
+"Language-Team: Hungarian <hu@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-02-22 06:53+0000\n"
+"X-Generator: Launchpad (build 14838)\n"
+
+#. / Shown if unsupported command line argument is used
+#: src/main.vala:194
+msgid "Error: Option parsing failed:"
+msgstr "HIBA: A paraméter nem dolgozható fel:"
+
+#. / Short label for command 'start or resume playback'
+#: src/player.vala:57
+msgid "Play"
+msgstr "Lejátszás"
+
+#. / Short label for command 'pause playback'
+#: src/player.vala:59
+msgid "Pause"
+msgstr "Szünet"
+
+#. / Short label for command 'skip to previous song'
+#: src/player.vala:61
+msgid "Previous song"
+msgstr "Előző szám"
+
+#. / Short label for command 'skip to next song'
+#: src/player.vala:63
+msgid "Next song"
+msgstr "Következő szám"
+
+#. / Short label for command 'thumb up' or 'like this song' (see Google Music buttons)
+#: src/player.vala:65
+msgid "Thumbs Up"
+msgstr "Tetszik"
+
+#. / Short label for command 'thumb down' or 'dislike this song' (see Google Music buttons)
+#: src/player.vala:67
+msgid "Thumbs Down"
+msgstr "Nem tetszik"
+
+#. / Short label for command 'add this song to favorites'
+#: src/player.vala:69
+msgid "Favorite"
+msgstr "Kedvenc"
+
+#. / Short label for command 'quit application'
+#: src/player.vala:71
+msgid "Quit"
+msgstr "Bezárás"
+
+#. / Initial notification
+#: src/player.vala:166
+msgid "Version"
+msgstr "Verzió"
+
+#. / Shown in notification if both artist and album are unknown
+#: src/player.vala:301
+msgid "by unknown artist"
+msgstr "ismeretlen előadó"
+
+#. / Shown in notification if artist is unknown, %s will be replaced by album name
+#: src/player.vala:305
+msgid "by unknown artist from %s"
+msgstr "ismeretlen előadó %s albuma"
+
+#. / Shown in notification if album is unknown, %s will be replaced by artist name
+#: src/player.vala:309
+msgid "by %s"
+msgstr "előadó: %s"
+
+#. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
+#: src/player.vala:313
+msgid "by %1$s from %2$s"
+msgstr "%1$ %2$ albumáról"
+
+#. / Shown in Service selector if service doesn't provide description
+#: src/service.vala:189
+msgid "No description provided for this service."
+msgstr "Nem találom a szolgáltatás leírását"
+
+#. / Shown as heading in Service selector
+#: src/service.vala:193
+msgid "Select cloud music service"
+msgstr "Válassz zenei felhő-szolgáltatást"
+
+#. / Shown as label of Cancel button in Service selector
+#: src/service.vala:197
+msgid "Cancel"
+msgstr "Mégsem"
+
+#. / Menu Service
+#: src/gui/actions.vala:110
+msgid "_Service"
+msgstr "_Szolgáltatás"
+
+#. / Menu item to switch service
+#: src/gui/actions.vala:117
+msgid "_Switch Service"
+msgstr "_Szolgáltatás váltás"
+
+#. / Menu Control
+#: src/gui/actions.vala:121
+msgid "_Control"
+msgstr "_Vezérlés"
+
+#. / Menu View
+#: src/gui/actions.vala:128
+msgid "_View"
+msgstr "_Nézet"
+
+#. / Menu Options
+#: src/gui/actions.vala:135
+msgid "_Options"
+msgstr "Beállítás_ok"
+
+#. / Menu item to purge cookies
+#. / Crash dialog
+#: src/gui/actions.vala:137 src/gui/windows.vala:243
+msgid "Purge cookies"
+msgstr "Sütik törlése"
+
+#. / Menu item to purge album art cache
+#: src/gui/actions.vala:139
+msgid "Purge album art"
+msgstr "Album boritók törlése"
+
+#. / Menu item to purge browser cache
+#. / Crash dialog
+#: src/gui/actions.vala:141 src/gui/windows.vala:248
+msgid "Purge browser cache"
+msgstr "Bögésző gyorsítótár üritése"
+
+#. / Menu Help
+#: src/gui/actions.vala:146
+msgid "_Help"
+msgstr "Súgó (_H)"
+
+#. / Menu item to open online help
+#: src/gui/actions.vala:148
+msgid "Get help online"
+msgstr "Online segítség"
+
+#. / Menu item to open bug/issue tracker
+#: src/gui/actions.vala:150
+msgid "Report a problem"
+msgstr "Probléma jelentése"
+
+#. / Menu item to open feature requests tracker
+#: src/gui/actions.vala:152
+msgid "Suggest new feature"
+msgstr "Új fukció javaslata"
+
+#. / Menu item to open page with information about donations
+#: src/gui/actions.vala:154
+msgid "Donate"
+msgstr "Támogatás"
+
+#. / Menu item to open Nuvola's page on Google+ social network
+#: src/gui/actions.vala:156
+msgid "Google+ page"
+msgstr "Google+ oldal"
+
+#. / Menu item to open Nuvola's page on Facebook social network
+#: src/gui/actions.vala:158
+msgid "Facebook page"
+msgstr "Facebook oldal"
+
+#. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
+#: src/gui/actions.vala:162
+msgid "Nuvola Menu"
+msgstr "Nuvola menü"
+
+#. / Menu item to show both menu bar and tool bar
+#: src/gui/actions.vala:170
+msgid "Both menubar and toolbar"
+msgstr "Menü- és eszközsáv is"
+
+#. / Menu item to show only menu bar, tool bar is hidden
+#: src/gui/actions.vala:172
+msgid "Only menubar"
+msgstr "Csak menüsáv"
+
+#. / Menu item to show only tool bar, menu bar is hidden
+#: src/gui/actions.vala:174
+msgid "Only toolbar"
+msgstr "Csak eszközsáv"
+
+#. / Menu item to open web page about the current release
+#: src/gui/actions.vala:183
+msgid "About release %s"
+msgstr "A %s verzióról"
+
+#. / Preferences dialog title
+#: src/gui/preferences.vala:33
+msgid "Preferences"
+msgstr "Testreszabás"
+
+#. / Settings dialog, tab General
+#: src/gui/preferences.vala:88
+msgid "General"
+msgstr "Általános"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:91
+msgid "Handle multimedia keys."
+msgstr "Mutlimédia gombok kezelése"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:97
+msgid "Use Pause (break) key to toggle play/pause"
+msgstr "Szünet (Pause) gombbal a lejátszás megállítása/elindítása"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:103
+msgid "Show notifications."
+msgstr "Értesítések megjelenítése"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:109
+msgid "Hide window if close button is pressed"
+msgstr "Az ablak elrejtése a Bezárás gombbal"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:114
+msgid "Always (may require tray icon)"
+msgstr "Mindig (tálca ikonra lehet szükség)"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:117
+msgid "Only if music is playing  (may require tray icon)"
+msgstr "Csak ha zenét játszik (tálca ikonra lehet szükség)"
+
+#. / Settings dialog - tab General
+#. / Settings dialog - tab General, never show tray icon
+#: src/gui/preferences.vala:120 src/gui/preferences.vala:145
+msgid "Never"
+msgstr "Soha"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:134
+msgid "Show tray icon"
+msgstr "Tálca ikon megjelenítése"
+
+#. / Settings dialog - tab General, always show tray icon
+#: src/gui/preferences.vala:139
+msgid "Always"
+msgstr "Mindig"
+
+#. / Settings dialog - tab General, show tray icon if needed
+#: src/gui/preferences.vala:142
+msgid "If needed"
+msgstr "Ha szükséges"
+
+#. / Settings dialog tab
+#: src/gui/preferences.vala:163
+msgid "Network"
+msgstr "Hálózat"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:166
+msgid ""
+"Some cloud music services don't work with automatic settings and may require "
+"manual SOCKS proxy settings. New proxy settings is applied after restart of "
+"Nuvola Player."
+msgstr ""
+"Néhány zenei felhő-szolgáltatás nem működik automatikus beállításokkal és "
+"kézi SOCKS proxy beállítást igényelhet. Az új proxy beállítások a Nuvola "
+"Lejátszó újraindítása után lépnek csak érvénybe."
+
+#. / Settings dialog - tab Network, warning shown if a buggy connection library is used
+#: src/gui/preferences.vala:175
+msgid ""
+"<b>Warning:</b> A version of a library used for network connection contained "
+"in your system has issues with HTTPS proxy support and it may cause crash of "
+"Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
+msgstr ""
+"<b>FIGYELEM:</b> A rendszeren található egyik szoftevr könyvtár verziójának "
+"probláémái vannak a HTTP(S) proxy-k használatával és a Nuvola Lejátszó "
+"összeomlását okozhatja. Erősen ellenjavalt a HTTP(S) proxy használata."
+
+#. / Settings dialog - tab Network, shown if tsocks library was not detected
+#: src/gui/preferences.vala:185
+msgid ""
+"<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
+"may not be supported."
+msgstr ""
+"<b>MEGJEGYZÉS:</b> A <a href='%s'>TSOCKS szoftver könyvtár</a>nem található. "
+"A SOCKS proxy támogatás nem biztos, hogy működni fog."
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:195
+msgid "Use direct connection without a proxy server"
+msgstr "Közvetlen kapcsolat használata proxy nélkül."
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:199
+msgid "Use system HTTP(S) proxy settings"
+msgstr "A redszer HTTP(S) proxy beállításainak használata."
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:203
+msgid "Use manual proxy settings"
+msgstr "Kézi proxy beállítás"
+
+#: src/gui/preferences.vala:212
+msgid "Proxy Type"
+msgstr "Proxy típusa"
+
+#. / Settings dialog - tab Network, proxy type HTTP(S)
+#: src/gui/preferences.vala:215
+msgid "HTTP(S)"
+msgstr "HTTP(S)"
+
+#. / Settings dialog - tab Network, proxy type SOCKS
+#: src/gui/preferences.vala:218
+msgid "SOCKS"
+msgstr "SOCKS"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:228
+msgid "Proxy Server"
+msgstr "Proxy-kiszolgáló"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:238
+msgid "Proxy Server Port"
+msgstr "Proxy-kiszolgáló port"
+
+#. / Settings dialog, tab User Scripts
+#: src/gui/preferences.vala:280
+msgid "User scripts"
+msgstr "Felhasználói szkriptek"
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:283
+msgid ""
+"User scripts are used to enhance web interface of cloud music services."
+msgstr ""
+"A felhasználói szkriptek a zenei felhő-szolgáltatások webes felületeinek "
+"feljavítására szolgálnak."
+
+#. / Settings dialog - tab User Scripts, warning
+#: src/gui/preferences.vala:291
+msgid ""
+"<b>Warning:</b> Support for user scripts is incomplete and experimental. It "
+"may be removed in future releases. User script can send data to third "
+"parties, install only trustworthy user scripts."
+msgstr ""
+"<b>FIGYELEM:</b> A felhasználói szkriptek támogatás nem teljes és kísérleti "
+"stádiumban van. Akár eltávolÍtásra is kerülhet a későbbi verziókban. Egy "
+"felhasználói szkript adatokat küldhet harmadik fél számára is ezért csak "
+"megbízható forrásból származót telepítsen."
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:301
+msgid "You have to select service to configure user scripts."
+msgstr "Válasszon szolgáltatást a felhasználói szkriptek beállításához."
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:310
+msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
+msgstr ""
+"A <b>%s</b> szolgáltatáshoz engedélyezett felhasználói szkriptek vesszővel "
+"elválasztva:"
+
+#. / Settings dialog - tab User Scripts, button to open user scripts directory
+#: src/gui/preferences.vala:325
+msgid "Open user scripts directory"
+msgstr "Felhasználói szkriptek mappája"
+
+#. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
+#: src/gui/windows.vala:63
+msgid ""
+"You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a "
+"problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
+"<a href='%4$s'>stable and beta builds</a>.</i>"
+msgstr ""
+"<b>nem stabil %1$s</b> verzió. <a href='%2$s'>Hiba jelentése</a>. <a "
+"href='%3$s'>Változás lista</a>. <i>Ez az eszköztár nem jelenik meg <a "
+"href='%4$s'>stabil és beta verziókban</a>.</i>"
+
+#. / Shown in the About Nuvola Player dialog
+#: src/gui/windows.vala:163
+msgid "Cloud music integration for your Linux desktop"
+msgstr "Felhő-zene integráció Linux asztali környezethez"
+
+#. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
+#: src/gui/windows.vala:165
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+"  Peter Nagy https://launchpad.net/~antronin";
+
+#. / Title of the Crash dialog
+#: src/gui/windows.vala:205
+msgid "Nuvola Player Crash Dialog"
+msgstr "Nuvola Lejátszó Összeomlás Jelentő"
+
+#. / Crash dialog
+#: src/gui/windows.vala:220
+msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
+msgstr "<b>Az előző Nuvola Lejátszó folyamat nem lett lezárva rendesen.</b>"
+
+#. / Crash dialog
+#: src/gui/windows.vala:228
+msgid "You can try following options to solve this issue:"
+msgstr "A következő lehetőségeket próbálhatja ki ennek megoldására:"
+
+#. / Crash dialog
+#: src/gui/windows.vala:237
+msgid "Reset configuration"
+msgstr "A beállítások alapállapotba hozása"
+
+#. / Crash dialog
+#: src/gui/windows.vala:240
+msgid "Reset state of user interface"
+msgstr "Felhasználói felület alapállapotba hozása"
+
+#. / Crash dialog
+#: src/gui/windows.vala:254
+msgid "Disable HTTP(S) proxy"
+msgstr "HTTP(S) proxy kikapcsolása"
+
+#. / Crash dialog
+#: src/gui/windows.vala:259
+msgid ""
+"Cloud music services use Flash to play music. Unfortunately, Flash Player is "
+"known not to be very stable and may cause crash of Nuvola Player. Please "
+"visit <a href='%s'>Flash troubleshooting</a>"
+msgstr ""
+"A zenei felhő-szolgáltatások flash-t használnak a zene lejátszására. Sajnos "
+"a Flash Player híresen instabil és a Nuvola Lejátszó összeomlását okozhatja. "
+"Kérem tekintse meg a <a href='%s'>Flash hibaelhárítót</a>."

=== modified file 'translations/ms.po'
--- translations/ms.po	2012-02-13 19:25:11 +0000
+++ translations/ms.po	2012-06-15 15:20:27 +0000
@@ -8,19 +8,29 @@
 "Project-Id-Version: nuvola-player\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2011-12-16 10:33+0100\n"
+<<<<<<< TREE
 "PO-Revision-Date: 2012-01-07 19:14+0000\n"
 "Last-Translator: abuyop <Unknown>\n"
+=======
+"PO-Revision-Date: 2012-03-19 00:34+0000\n"
+"Last-Translator: abuyop <Unknown>\n"
+>>>>>>> MERGE-SOURCE
 "Language-Team: Malay <ms@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2012-01-08 05:35+0000\n"
 "X-Generator: Launchpad (build 14640)\n"
+=======
+"X-Launchpad-Export-Date: 2012-03-20 05:54+0000\n"
+"X-Generator: Launchpad (build 14969)\n"
+>>>>>>> MERGE-SOURCE
 
 #. / Shown if unsupported command line argument is used
 #: src/main.vala:194
 msgid "Error: Option parsing failed:"
-msgstr ""
+msgstr "Ralat: Penghuraian pilihan gagal:"
 
 #. / Short label for command 'start or resume playback'
 #: src/player.vala:57
@@ -70,12 +80,12 @@
 #. / Shown in notification if both artist and album are unknown
 #: src/player.vala:301
 msgid "by unknown artist"
-msgstr ""
+msgstr "oleh artis tidak diketahui"
 
 #. / Shown in notification if artist is unknown, %s will be replaced by album name
 #: src/player.vala:305
 msgid "by unknown artist from %s"
-msgstr ""
+msgstr "oleh artis tidak diketahui dari %s"
 
 #. / Shown in notification if album is unknown, %s will be replaced by artist name
 #: src/player.vala:309
@@ -85,17 +95,17 @@
 #. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
 #: src/player.vala:313
 msgid "by %1$s from %2$s"
-msgstr ""
+msgstr "oleh %1$s dari %2$s"
 
 #. / Shown in Service selector if service doesn't provide description
 #: src/service.vala:189
 msgid "No description provided for this service."
-msgstr ""
+msgstr "Tiada keterangan disediakan oleh perkhidmatan ini."
 
 #. / Shown as heading in Service selector
 #: src/service.vala:193
 msgid "Select cloud music service"
-msgstr ""
+msgstr "Pilih perkhidmatan muzik awan"
 
 #. / Shown as label of Cancel button in Service selector
 #: src/service.vala:197
@@ -105,27 +115,27 @@
 #. / Menu Service
 #: src/gui/actions.vala:110
 msgid "_Service"
-msgstr ""
+msgstr "Pe_rkhidmatan"
 
 #. / Menu item to switch service
 #: src/gui/actions.vala:117
 msgid "_Switch Service"
-msgstr ""
+msgstr "T_ukar Perkhidmatan"
 
 #. / Menu Control
 #: src/gui/actions.vala:121
 msgid "_Control"
-msgstr ""
+msgstr "Ka_walan"
 
 #. / Menu View
 #: src/gui/actions.vala:128
 msgid "_View"
-msgstr ""
+msgstr "_Lihat"
 
 #. / Menu Options
 #: src/gui/actions.vala:135
 msgid "_Options"
-msgstr ""
+msgstr "_Pilihan"
 
 #. / Menu item to purge cookies
 #. / Crash dialog
@@ -136,7 +146,7 @@
 #. / Menu item to purge album art cache
 #: src/gui/actions.vala:139
 msgid "Purge album art"
-msgstr ""
+msgstr "Singkir seni album"
 
 #. / Menu item to purge browser cache
 #. / Crash dialog
@@ -147,22 +157,22 @@
 #. / Menu Help
 #: src/gui/actions.vala:146
 msgid "_Help"
-msgstr ""
+msgstr "_Bantuan"
 
 #. / Menu item to open online help
 #: src/gui/actions.vala:148
 msgid "Get help online"
-msgstr ""
+msgstr "Dapatkan bantuan atas talian"
 
 #. / Menu item to open bug/issue tracker
 #: src/gui/actions.vala:150
 msgid "Report a problem"
-msgstr ""
+msgstr "Laporkan masalah"
 
 #. / Menu item to open feature requests tracker
 #: src/gui/actions.vala:152
 msgid "Suggest new feature"
-msgstr ""
+msgstr "Cadang fitur baru"
 
 #. / Menu item to open page with information about donations
 #: src/gui/actions.vala:154
@@ -182,22 +192,22 @@
 #. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
 #: src/gui/actions.vala:162
 msgid "Nuvola Menu"
-msgstr ""
+msgstr "Menu Nuvola"
 
 #. / Menu item to show both menu bar and tool bar
 #: src/gui/actions.vala:170
 msgid "Both menubar and toolbar"
-msgstr ""
+msgstr "Kedua-dua palang menu dan palang alat"
 
 #. / Menu item to show only menu bar, tool bar is hidden
 #: src/gui/actions.vala:172
 msgid "Only menubar"
-msgstr ""
+msgstr "Hanya palang menu"
 
 #. / Menu item to show only tool bar, menu bar is hidden
 #: src/gui/actions.vala:174
 msgid "Only toolbar"
-msgstr ""
+msgstr "Hanya palang alat"
 
 #. / Menu item to open web page about the current release
 #: src/gui/actions.vala:183
@@ -207,7 +217,7 @@
 #. / Preferences dialog title
 #: src/gui/preferences.vala:33
 msgid "Preferences"
-msgstr ""
+msgstr "Keutamaan"
 
 #. / Settings dialog, tab General
 #: src/gui/preferences.vala:88
@@ -227,48 +237,48 @@
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:103
 msgid "Show notifications."
-msgstr ""
+msgstr "Papar pemberitahuan."
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:109
 msgid "Hide window if close button is pressed"
-msgstr ""
+msgstr "Sembunyi tetingkap jika butang tutup ditekan"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:114
 msgid "Always (may require tray icon)"
-msgstr ""
+msgstr "Sentiasa (mungkin memerlukan ikon talam)"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:117
 msgid "Only if music is playing  (may require tray icon)"
-msgstr ""
+msgstr "Hanya jika muzik dimainkan (mungkin memerlukan ikon talam)"
 
 #. / Settings dialog - tab General
 #. / Settings dialog - tab General, never show tray icon
 #: src/gui/preferences.vala:120 src/gui/preferences.vala:145
 msgid "Never"
-msgstr ""
+msgstr "Tidak Sesekali"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:134
 msgid "Show tray icon"
-msgstr ""
+msgstr "Papar ikon talam"
 
 #. / Settings dialog - tab General, always show tray icon
 #: src/gui/preferences.vala:139
 msgid "Always"
-msgstr ""
+msgstr "Sentiasa"
 
 #. / Settings dialog - tab General, show tray icon if needed
 #: src/gui/preferences.vala:142
 msgid "If needed"
-msgstr ""
+msgstr "Jika diperlukan"
 
 #. / Settings dialog tab
 #: src/gui/preferences.vala:163
 msgid "Network"
-msgstr ""
+msgstr "Rangkaian"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:166
@@ -277,6 +287,9 @@
 "manual SOCKS proxy settings. New proxy settings is applied after restart of "
 "Nuvola Player."
 msgstr ""
+"Beberapa perkhidmatan muzik awan tidak berfungsi dengan tetapan automatik "
+"dan mungkin memerlukan tetapan proksi SOCKS manual. Tetapan proksi baru "
+"dilaksanakan selepas mula semula Pemain Nuvola."
 
 #. / Settings dialog - tab Network, warning shown if a buggy connection library is used
 #: src/gui/preferences.vala:175
@@ -285,6 +298,10 @@
 "in your system has issues with HTTPS proxy support and it may cause crash of "
 "Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
 msgstr ""
+"<b>Amaran:</b> Versi pustaka yang digunakan untuk sambungan rangkaian "
+"terkandung dalam sistem anda mempunyai isu dengan sokongan proksi dan ia "
+"mungkin menyebabkan kerosakan pada Pemain Nuvola. Adalah sangat disarankan "
+"tidak menggunakan tetapan Proksi HTTP(S)."
 
 #. / Settings dialog - tab Network, shown if tsocks library was not detected
 #: src/gui/preferences.vala:185
@@ -292,45 +309,47 @@
 "<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
 "may not be supported."
 msgstr ""
+"<b>Perhatian:</b> <a href='%s'>TSOCKS library</a> tidak dikesan. Proksi "
+"SOCKS mungkin tidak disokong."
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:195
 msgid "Use direct connection without a proxy server"
-msgstr ""
+msgstr "Guna sambungan langsung tanpa pelayan proksi"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:199
 msgid "Use system HTTP(S) proxy settings"
-msgstr ""
+msgstr "Guna tetapan proksi HTTP(S) sistem"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:203
 msgid "Use manual proxy settings"
-msgstr ""
+msgstr "Guna tetapan proksi manual"
 
 #: src/gui/preferences.vala:212
 msgid "Proxy Type"
-msgstr ""
+msgstr "Jenis Proksi"
 
 #. / Settings dialog - tab Network, proxy type HTTP(S)
 #: src/gui/preferences.vala:215
 msgid "HTTP(S)"
-msgstr ""
+msgstr "HTTP(S)"
 
 #. / Settings dialog - tab Network, proxy type SOCKS
 #: src/gui/preferences.vala:218
 msgid "SOCKS"
-msgstr ""
+msgstr "SOCKS"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:228
 msgid "Proxy Server"
-msgstr ""
+msgstr "Pelayan Proksi"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:238
 msgid "Proxy Server Port"
-msgstr ""
+msgstr "Port Pelayan Proksi"
 
 #. / Settings dialog, tab User Scripts
 #: src/gui/preferences.vala:280
@@ -342,6 +361,8 @@
 msgid ""
 "User scripts are used to enhance web interface of cloud music services."
 msgstr ""
+"Skrip pengguna digunakan untuk tingkatkan antaramuka sesawang bagi "
+"perkhidmatan muzik awan."
 
 #. / Settings dialog - tab User Scripts, warning
 #: src/gui/preferences.vala:291
@@ -350,21 +371,27 @@
 "may be removed in future releases. User script can send data to third "
 "parties, install only trustworthy user scripts."
 msgstr ""
+"<b>Amaran:</b> Sokongan untuk skrip pengguna tidak lengkap dan masih dalam "
+"eksperimen. Ia mungkin dibuang dalam keluaran akan datan. Skrip pengguna "
+"boleh menghantar data ke pihak ketiga, hanya pasang skrip pengguna yang "
+"dipercayai sahaja."
 
 #. / Settings dialog - tab User Scripts
 #: src/gui/preferences.vala:301
 msgid "You have to select service to configure user scripts."
-msgstr ""
+msgstr "Anda mesti pilih perkhidmatan untuk konfigur skrip pengguna."
 
 #. / Settings dialog - tab User Scripts
 #: src/gui/preferences.vala:310
 msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
 msgstr ""
+"Senarai terpisah-koma bagi skrip pengguna yang dibenarkan untuk perkhidmatan "
+"<b>%s</b>:"
 
 #. / Settings dialog - tab User Scripts, button to open user scripts directory
 #: src/gui/preferences.vala:325
 msgid "Open user scripts directory"
-msgstr ""
+msgstr "Buka direktori skrip pengguna"
 
 #. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
 #: src/gui/windows.vala:63
@@ -373,49 +400,58 @@
 "problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
 "<a href='%4$s'>stable and beta builds</a>.</i>"
 msgstr ""
+"Anda sedang menjalankan  <b>binaan tidak stabil %1$s</b>. <a "
+"href='%2$s'>Laporakn masalah</a>. <a href='%3$s'>Lihat log penukaran</a>. "
+"<i>Palang ini tidak dipaparkan dalam <a href='%4$s'>binaan stabil dan "
+"beta</a>.</i>"
 
 #. / Shown in the About Nuvola Player dialog
 #: src/gui/windows.vala:163
 msgid "Cloud music integration for your Linux desktop"
-msgstr ""
+msgstr "Penyepaduan muzik awan untuk desktop Linux anda"
 
 #. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
 #: src/gui/windows.vala:165
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
+<<<<<<< TREE
 "  Jiří Janoušek https://launchpad.net/~janousek.jiri\n";
 "  abuyop https://launchpad.net/~abuyop";
+=======
+"  Jiří Janoušek https://launchpad.net/~fenryxo\n";
+"  abuyop https://launchpad.net/~abuyop";
+>>>>>>> MERGE-SOURCE
 
 #. / Title of the Crash dialog
 #: src/gui/windows.vala:205
 msgid "Nuvola Player Crash Dialog"
-msgstr ""
+msgstr "Dialog Kerosakan Pemain Nuvola"
 
 #. / Crash dialog
 #: src/gui/windows.vala:220
 msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
-msgstr ""
+msgstr "<b>Sesi Pemain Nuvola terdahulu tidak ditutup dengan betul.</b>"
 
 #. / Crash dialog
 #: src/gui/windows.vala:228
 msgid "You can try following options to solve this issue:"
-msgstr ""
+msgstr "Anda boleh cuba pilihan berikut untuk leraikan isu ini:"
 
 #. / Crash dialog
 #: src/gui/windows.vala:237
 msgid "Reset configuration"
-msgstr ""
+msgstr "Tetap semula konfigurasi"
 
 #. / Crash dialog
 #: src/gui/windows.vala:240
 msgid "Reset state of user interface"
-msgstr ""
+msgstr "Tetap semula keadaan antaramuka pengguna"
 
 #. / Crash dialog
 #: src/gui/windows.vala:254
 msgid "Disable HTTP(S) proxy"
-msgstr ""
+msgstr "Lumpuhkan proksi HTTP(S)"
 
 #. / Crash dialog
 #: src/gui/windows.vala:259
@@ -424,3 +460,6 @@
 "known not to be very stable and may cause crash of Nuvola Player. Please "
 "visit <a href='%s'>Flash troubleshooting</a>"
 msgstr ""
+"Perkkhidmatan muzik awan menggunakan Flash untuk main muzik. Malangnya, "
+"Pemain Flash yang diketahui tidak  stabil dan mungkin menyebabkan kerosakan "
+"pada Pemain Nuvola. Sila lawati <a href='%s'>Pencarisilapan Flash</a>"

=== modified file 'translations/nl.po'
--- translations/nl.po	2012-02-13 19:25:11 +0000
+++ translations/nl.po	2012-06-15 15:20:27 +0000
@@ -8,14 +8,24 @@
 "Project-Id-Version: nuvola-player\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2011-12-16 10:33+0100\n"
+<<<<<<< TREE
 "PO-Revision-Date: 2012-02-02 22:11+0000\n"
 "Last-Translator: Hoster <Unknown>\n"
+=======
+"PO-Revision-Date: 2012-03-13 16:16+0000\n"
+"Last-Translator: Yop Spanjers <Unknown>\n"
+>>>>>>> MERGE-SOURCE
 "Language-Team: Dutch <nl@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+<<<<<<< TREE
 "X-Launchpad-Export-Date: 2012-02-03 06:29+0000\n"
 "X-Generator: Launchpad (build 14738)\n"
+=======
+"X-Launchpad-Export-Date: 2012-03-14 05:43+0000\n"
+"X-Generator: Launchpad (build 14933)\n"
+>>>>>>> MERGE-SOURCE
 
 #. / Shown if unsupported command line argument is used
 #: src/main.vala:194
@@ -95,7 +105,7 @@
 #. / Shown as heading in Service selector
 #: src/service.vala:193
 msgid "Select cloud music service"
-msgstr "Selecteer de muziek service"
+msgstr "Selecteer de online muziek service"
 
 #. / Shown as label of Cancel button in Service selector
 #: src/service.vala:197
@@ -237,12 +247,13 @@
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:114
 msgid "Always (may require tray icon)"
-msgstr ""
+msgstr "Altijd (misschien een taakbalk icoon vereist)"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:117
 msgid "Only if music is playing  (may require tray icon)"
 msgstr ""
+"Alleen als er muziek word afgespeeld (wellicht een taakbalk icoon vereist)"
 
 #. / Settings dialog - tab General
 #. / Settings dialog - tab General, never show tray icon
@@ -277,6 +288,9 @@
 "manual SOCKS proxy settings. New proxy settings is applied after restart of "
 "Nuvola Player."
 msgstr ""
+"Sommige cloud muziek diensten werken misschien niet met automatische "
+"instellingen en vereisen misschien handmatige SOCKS proxy instellingen. "
+"Nieuwe proxy instellingen zijn toegepast na het herstarten van Nuvola Player."
 
 #. / Settings dialog - tab Network, warning shown if a buggy connection library is used
 #: src/gui/preferences.vala:175
@@ -384,9 +398,15 @@
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
+<<<<<<< TREE
 "  Hoster https://launchpad.net/~yopspanjers\n";
 "  Jiří Janoušek https://launchpad.net/~fenryxo\n";
 "  Sander Deryckere https://launchpad.net/~sanderd17";
+=======
+"  Jiří Janoušek https://launchpad.net/~fenryxo\n";
+"  Sander Deryckere https://launchpad.net/~sanderd17\n";
+"  Yop Spanjers https://launchpad.net/~yopspanjers";
+>>>>>>> MERGE-SOURCE
 
 #. / Title of the Crash dialog
 #: src/gui/windows.vala:205

=== modified file 'translations/pt_BR.po'
--- translations/pt_BR.po	2011-12-17 22:35:50 +0000
+++ translations/pt_BR.po	2012-06-15 15:20:27 +0000
@@ -8,24 +8,24 @@
 "Project-Id-Version: nuvola-player\n"
 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
 "POT-Creation-Date: 2011-12-16 10:33+0100\n"
-"PO-Revision-Date: 2011-12-16 11:57+0000\n"
-"Last-Translator: Jiří Janoušek <janousek.jiri@xxxxxxxxx>\n"
+"PO-Revision-Date: 2012-03-28 15:55+0000\n"
+"Last-Translator: Belenos Govannnon <Unknown>\n"
 "Language-Team: Brazilian Portuguese <pt_BR@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-12-17 07:02+0000\n"
-"X-Generator: Launchpad (build 14525)\n"
+"X-Launchpad-Export-Date: 2012-03-29 05:21+0000\n"
+"X-Generator: Launchpad (build 15032)\n"
 
 #. / Shown if unsupported command line argument is used
 #: src/main.vala:194
 msgid "Error: Option parsing failed:"
-msgstr ""
+msgstr "Erro: falha ao executar opção:"
 
 #. / Short label for command 'start or resume playback'
 #: src/player.vala:57
 msgid "Play"
-msgstr "Tocar"
+msgstr "Play"
 
 #. / Short label for command 'pause playback'
 #: src/player.vala:59
@@ -45,22 +45,22 @@
 #. / Short label for command 'thumb up' or 'like this song' (see Google Music buttons)
 #: src/player.vala:65
 msgid "Thumbs Up"
-msgstr ""
+msgstr "Curtir"
 
 #. / Short label for command 'thumb down' or 'dislike this song' (see Google Music buttons)
 #: src/player.vala:67
 msgid "Thumbs Down"
-msgstr ""
+msgstr "Não curtir"
 
 #. / Short label for command 'add this song to favorites'
 #: src/player.vala:69
 msgid "Favorite"
-msgstr ""
+msgstr "Favorito"
 
 #. / Short label for command 'quit application'
 #: src/player.vala:71
 msgid "Quit"
-msgstr "Sair"
+msgstr "Fechar"
 
 #. / Initial notification
 #: src/player.vala:166
@@ -70,12 +70,12 @@
 #. / Shown in notification if both artist and album are unknown
 #: src/player.vala:301
 msgid "by unknown artist"
-msgstr ""
+msgstr "por Artista Desconhecido"
 
 #. / Shown in notification if artist is unknown, %s will be replaced by album name
 #: src/player.vala:305
 msgid "by unknown artist from %s"
-msgstr ""
+msgstr "por Artista Desconhecido - %s"
 
 #. / Shown in notification if album is unknown, %s will be replaced by artist name
 #: src/player.vala:309
@@ -85,129 +85,129 @@
 #. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
 #: src/player.vala:313
 msgid "by %1$s from %2$s"
-msgstr ""
+msgstr "por %1$s - %2$s"
 
 #. / Shown in Service selector if service doesn't provide description
 #: src/service.vala:189
 msgid "No description provided for this service."
-msgstr ""
+msgstr "Nenhuma descrição para este serviço."
 
 #. / Shown as heading in Service selector
 #: src/service.vala:193
 msgid "Select cloud music service"
-msgstr ""
+msgstr "Selecione o serviço de música online"
 
 #. / Shown as label of Cancel button in Service selector
 #: src/service.vala:197
 msgid "Cancel"
-msgstr ""
+msgstr "Cancelar"
 
 #. / Menu Service
 #: src/gui/actions.vala:110
 msgid "_Service"
-msgstr ""
+msgstr "_Serviço"
 
 #. / Menu item to switch service
 #: src/gui/actions.vala:117
 msgid "_Switch Service"
-msgstr ""
+msgstr "_Alterar serviço"
 
 #. / Menu Control
 #: src/gui/actions.vala:121
 msgid "_Control"
-msgstr ""
+msgstr "_Controle"
 
 #. / Menu View
 #: src/gui/actions.vala:128
 msgid "_View"
-msgstr ""
+msgstr "_Exibir"
 
 #. / Menu Options
 #: src/gui/actions.vala:135
 msgid "_Options"
-msgstr ""
+msgstr "_Opções"
 
 #. / Menu item to purge cookies
 #. / Crash dialog
 #: src/gui/actions.vala:137 src/gui/windows.vala:243
 msgid "Purge cookies"
-msgstr ""
+msgstr "Limpar cookies"
 
 #. / Menu item to purge album art cache
 #: src/gui/actions.vala:139
 msgid "Purge album art"
-msgstr ""
+msgstr "Limpar capas de álbuns"
 
 #. / Menu item to purge browser cache
 #. / Crash dialog
 #: src/gui/actions.vala:141 src/gui/windows.vala:248
 msgid "Purge browser cache"
-msgstr ""
+msgstr "Limpar o cache do navegador"
 
 #. / Menu Help
 #: src/gui/actions.vala:146
 msgid "_Help"
-msgstr ""
+msgstr "_Ajuda"
 
 #. / Menu item to open online help
 #: src/gui/actions.vala:148
 msgid "Get help online"
-msgstr ""
+msgstr "Obter ajuda online"
 
 #. / Menu item to open bug/issue tracker
 #: src/gui/actions.vala:150
 msgid "Report a problem"
-msgstr ""
+msgstr "Relatar problema"
 
 #. / Menu item to open feature requests tracker
 #: src/gui/actions.vala:152
 msgid "Suggest new feature"
-msgstr ""
+msgstr "Sugira uma nova função"
 
 #. / Menu item to open page with information about donations
 #: src/gui/actions.vala:154
 msgid "Donate"
-msgstr ""
+msgstr "Faça uma Doação"
 
 #. / Menu item to open Nuvola's page on Google+ social network
 #: src/gui/actions.vala:156
 msgid "Google+ page"
-msgstr ""
+msgstr "Página no Google+"
 
 #. / Menu item to open Nuvola's page on Facebook social network
 #: src/gui/actions.vala:158
 msgid "Facebook page"
-msgstr ""
+msgstr "Página no Facebook"
 
 #. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
 #: src/gui/actions.vala:162
 msgid "Nuvola Menu"
-msgstr ""
+msgstr "Menu do Nuvola"
 
 #. / Menu item to show both menu bar and tool bar
 #: src/gui/actions.vala:170
 msgid "Both menubar and toolbar"
-msgstr ""
+msgstr "Barra de menu e barra de ferramentas"
 
 #. / Menu item to show only menu bar, tool bar is hidden
 #: src/gui/actions.vala:172
 msgid "Only menubar"
-msgstr ""
+msgstr "Apenas a barra de menu"
 
 #. / Menu item to show only tool bar, menu bar is hidden
 #: src/gui/actions.vala:174
 msgid "Only toolbar"
-msgstr ""
+msgstr "Apenas a barra de ferramentas"
 
 #. / Menu item to open web page about the current release
 #: src/gui/actions.vala:183
 msgid "About release %s"
-msgstr ""
+msgstr "Sobre a versão %s"
 
 #. / Preferences dialog title
 #: src/gui/preferences.vala:33
 msgid "Preferences"
-msgstr ""
+msgstr "Preferências"
 
 #. / Settings dialog, tab General
 #: src/gui/preferences.vala:88
@@ -217,58 +217,58 @@
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:91
 msgid "Handle multimedia keys."
-msgstr "Manipular  teclas de multimídia."
+msgstr "Usar teclas multimídia"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:97
 msgid "Use Pause (break) key to toggle play/pause"
-msgstr "Use a tecla Pause(break) para alternar entre tocar/pausar"
+msgstr "Usar a tecla Pause para tocar/pausar"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:103
 msgid "Show notifications."
-msgstr ""
+msgstr "Exibir notificações"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:109
 msgid "Hide window if close button is pressed"
-msgstr ""
+msgstr "Esconder a janela ao fechar"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:114
 msgid "Always (may require tray icon)"
-msgstr ""
+msgstr "Sempre (ícone de notificação será exibido)"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:117
 msgid "Only if music is playing  (may require tray icon)"
-msgstr ""
+msgstr "Ao reproduzir (ícone de notificação será exibido)"
 
 #. / Settings dialog - tab General
 #. / Settings dialog - tab General, never show tray icon
 #: src/gui/preferences.vala:120 src/gui/preferences.vala:145
 msgid "Never"
-msgstr ""
+msgstr "Nunca"
 
 #. / Settings dialog - tab General
 #: src/gui/preferences.vala:134
 msgid "Show tray icon"
-msgstr ""
+msgstr "Mostrar ícone de notificação"
 
 #. / Settings dialog - tab General, always show tray icon
 #: src/gui/preferences.vala:139
 msgid "Always"
-msgstr ""
+msgstr "Sempre"
 
 #. / Settings dialog - tab General, show tray icon if needed
 #: src/gui/preferences.vala:142
 msgid "If needed"
-msgstr ""
+msgstr "Se necessário"
 
 #. / Settings dialog tab
 #: src/gui/preferences.vala:163
 msgid "Network"
-msgstr ""
+msgstr "Rede"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:166
@@ -277,6 +277,9 @@
 "manual SOCKS proxy settings. New proxy settings is applied after restart of "
 "Nuvola Player."
 msgstr ""
+"Alguns serviços de música online não funcionarão com configurações "
+"automáticas e requerem configurações manuais de proxy SOCKS. Novas "
+"configurações de proxy serão aplicadas após reiniciar o Nuvola Player."
 
 #. / Settings dialog - tab Network, warning shown if a buggy connection library is used
 #: src/gui/preferences.vala:175
@@ -285,6 +288,10 @@
 "in your system has issues with HTTPS proxy support and it may cause crash of "
 "Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
 msgstr ""
+"<b>Atenção:</b> Uma versão da biblioteca usada para a conexão de rede em seu "
+"sistema está com erros de suporte no proxy HTTPS e pode fazer com que o "
+"Nuvola Player pare de funcionar. O uso de configuração de proxy HTTP(S) não "
+"é recomendado."
 
 #. / Settings dialog - tab Network, shown if tsocks library was not detected
 #: src/gui/preferences.vala:185
@@ -292,56 +299,60 @@
 "<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
 "may not be supported."
 msgstr ""
+"<b>Atenção:</b> Nenhuma <a href='%s'>bliblioteca TSOCKS</a> foi encontrada. "
+"Proxy SOCKS não é suportado."
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:195
 msgid "Use direct connection without a proxy server"
-msgstr ""
+msgstr "Usar conexão direta, sem servidor proxy"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:199
 msgid "Use system HTTP(S) proxy settings"
-msgstr ""
+msgstr "Usar sistema HTTP(S) de configuração de proxy"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:203
 msgid "Use manual proxy settings"
-msgstr ""
+msgstr "Usar configuração manual de proxy"
 
 #: src/gui/preferences.vala:212
 msgid "Proxy Type"
-msgstr ""
+msgstr "Tipo de Proxy"
 
 #. / Settings dialog - tab Network, proxy type HTTP(S)
 #: src/gui/preferences.vala:215
 msgid "HTTP(S)"
-msgstr ""
+msgstr "HTTP(S)"
 
 #. / Settings dialog - tab Network, proxy type SOCKS
 #: src/gui/preferences.vala:218
 msgid "SOCKS"
-msgstr ""
+msgstr "SOCKS"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:228
 msgid "Proxy Server"
-msgstr ""
+msgstr "Servidor Proxy"
 
 #. / Settings dialog - tab Network
 #: src/gui/preferences.vala:238
 msgid "Proxy Server Port"
-msgstr ""
+msgstr "Porta do Servidor Proxy"
 
 #. / Settings dialog, tab User Scripts
 #: src/gui/preferences.vala:280
 msgid "User scripts"
-msgstr ""
+msgstr "Scripts do usuário"
 
 #. / Settings dialog - tab User Scripts
 #: src/gui/preferences.vala:283
 msgid ""
 "User scripts are used to enhance web interface of cloud music services."
 msgstr ""
+"Scripts do usuário são utilizados para aprimorar a interface web dos "
+"serviços de música online."
 
 #. / Settings dialog - tab User Scripts, warning
 #: src/gui/preferences.vala:291
@@ -350,21 +361,29 @@
 "may be removed in future releases. User script can send data to third "
 "parties, install only trustworthy user scripts."
 msgstr ""
+"<b>Atenção:</b> O suporte a scripts do usuário está incompleto e é "
+"experimental, podendo ser removido em versões futuras. Os scripts do usuário "
+"podem enviar informações para terceiros — instale apenas scripts de sua "
+"confiança."
 
 #. / Settings dialog - tab User Scripts
 #: src/gui/preferences.vala:301
 msgid "You have to select service to configure user scripts."
 msgstr ""
+"Você deve primeiro selecionar o serviço, então configure os scripts de "
+"usuários."
 
 #. / Settings dialog - tab User Scripts
 #: src/gui/preferences.vala:310
 msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
 msgstr ""
+"Listas de scripts de usuário (separados por vírgula) ativos no serviço "
+"<b>%s</b>:"
 
 #. / Settings dialog - tab User Scripts, button to open user scripts directory
 #: src/gui/preferences.vala:325
 msgid "Open user scripts directory"
-msgstr ""
+msgstr "Abrir o diretório dos scripts do usuário"
 
 #. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
 #: src/gui/windows.vala:63
@@ -373,48 +392,55 @@
 "problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
 "<a href='%4$s'>stable and beta builds</a>.</i>"
 msgstr ""
+"Você está usando a <b>versão instável %1$s</b>. <a href='%2$s'>Reporte um "
+"bug</a>. <a href='%3$s'>Veja o changelog</a>. <i>Este aviso não é mostrado "
+"nas versões <a href='%4$s'>finais e beta</a>.</i>"
 
 #. / Shown in the About Nuvola Player dialog
 #: src/gui/windows.vala:163
 msgid "Cloud music integration for your Linux desktop"
-msgstr ""
+msgstr "Integração de música online para seu desktop Linux."
 
 #. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
 #: src/gui/windows.vala:165
 msgid "translator-credits"
 msgstr ""
 "Launchpad Contributions:\n"
-"  Jiří Janoušek https://launchpad.net/~janousek.jiri";
+"  Belenos Govannnon https://launchpad.net/~belenos\n";
+"  Darlildo Lima https://launchpad.net/~darlildo-cefetce\n";
+"  Jiří Janoušek https://launchpad.net/~fenryxo\n";
+"  Ron Alon https://launchpad.net/~ro2342";
 
 #. / Title of the Crash dialog
 #: src/gui/windows.vala:205
 msgid "Nuvola Player Crash Dialog"
-msgstr ""
+msgstr "Fechamento inesperado do Nuvola Player"
 
 #. / Crash dialog
 #: src/gui/windows.vala:220
 msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
 msgstr ""
+"<b>A sessão anterior do Nuvola Player não foi fechada corretamente.</b>"
 
 #. / Crash dialog
 #: src/gui/windows.vala:228
 msgid "You can try following options to solve this issue:"
-msgstr ""
+msgstr "Você pode corrigir este problema com as opções a seguir:"
 
 #. / Crash dialog
 #: src/gui/windows.vala:237
 msgid "Reset configuration"
-msgstr ""
+msgstr "Reiniciar Configuração"
 
 #. / Crash dialog
 #: src/gui/windows.vala:240
 msgid "Reset state of user interface"
-msgstr ""
+msgstr "Resetar o estado da interface do usuário"
 
 #. / Crash dialog
 #: src/gui/windows.vala:254
 msgid "Disable HTTP(S) proxy"
-msgstr ""
+msgstr "Desabilitar o proxy HTTP(S)"
 
 #. / Crash dialog
 #: src/gui/windows.vala:259
@@ -423,3 +449,7 @@
 "known not to be very stable and may cause crash of Nuvola Player. Please "
 "visit <a href='%s'>Flash troubleshooting</a>"
 msgstr ""
+"Serviços de música na nuvem utilizam o Flash para tocar músicas. "
+"Infelizmente o Flash Player é conhecido por não ser muito estável e pode "
+"causar o fechamento inesperado do Nuvola Player. Por favor, visite a <a "
+"href='%s'>solução de problemas</a> do Flash."

=== added file 'translations/sq.po'
--- translations/sq.po	1970-01-01 00:00:00 +0000
+++ translations/sq.po	2012-06-15 15:20:27 +0000
@@ -0,0 +1,425 @@
+# Albanian translation for nuvola-player
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the nuvola-player package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nuvola-player\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-12-16 10:33+0100\n"
+"PO-Revision-Date: 2012-03-25 19:19+0000\n"
+"Last-Translator: tomson <mendimiilire@xxxxxxxxx>\n"
+"Language-Team: Albanian <sq@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-03-26 05:33+0000\n"
+"X-Generator: Launchpad (build 15008)\n"
+
+#. / Shown if unsupported command line argument is used
+#: src/main.vala:194
+msgid "Error: Option parsing failed:"
+msgstr ""
+
+#. / Short label for command 'start or resume playback'
+#: src/player.vala:57
+msgid "Play"
+msgstr "Luaj"
+
+#. / Short label for command 'pause playback'
+#: src/player.vala:59
+msgid "Pause"
+msgstr "Pushim"
+
+#. / Short label for command 'skip to previous song'
+#: src/player.vala:61
+msgid "Previous song"
+msgstr "Kënga e mëparshme"
+
+#. / Short label for command 'skip to next song'
+#: src/player.vala:63
+msgid "Next song"
+msgstr "Kënga tjetër"
+
+#. / Short label for command 'thumb up' or 'like this song' (see Google Music buttons)
+#: src/player.vala:65
+msgid "Thumbs Up"
+msgstr "Më pëlqen kjo këngë"
+
+#. / Short label for command 'thumb down' or 'dislike this song' (see Google Music buttons)
+#: src/player.vala:67
+msgid "Thumbs Down"
+msgstr "S'më pëlqen kjo këngë"
+
+#. / Short label for command 'add this song to favorites'
+#: src/player.vala:69
+msgid "Favorite"
+msgstr "Parapëlqej"
+
+#. / Short label for command 'quit application'
+#: src/player.vala:71
+msgid "Quit"
+msgstr "Mbylle"
+
+#. / Initial notification
+#: src/player.vala:166
+msgid "Version"
+msgstr ""
+
+#. / Shown in notification if both artist and album are unknown
+#: src/player.vala:301
+msgid "by unknown artist"
+msgstr "prej artistit të panjohur"
+
+#. / Shown in notification if artist is unknown, %s will be replaced by album name
+#: src/player.vala:305
+msgid "by unknown artist from %s"
+msgstr "prej artistit të panjohur nga %s"
+
+#. / Shown in notification if album is unknown, %s will be replaced by artist name
+#: src/player.vala:309
+msgid "by %s"
+msgstr "prej %s"
+
+#. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
+#: src/player.vala:313
+msgid "by %1$s from %2$s"
+msgstr "prej %1$s nga %2$s"
+
+#. / Shown in Service selector if service doesn't provide description
+#: src/service.vala:189
+msgid "No description provided for this service."
+msgstr "S'ka përshkrim për këtë shërbim."
+
+#. / Shown as heading in Service selector
+#: src/service.vala:193
+msgid "Select cloud music service"
+msgstr "Zgjidh shërbimin e jashtëm të muzikës"
+
+#. / Shown as label of Cancel button in Service selector
+#: src/service.vala:197
+msgid "Cancel"
+msgstr "Fshije"
+
+#. / Menu Service
+#: src/gui/actions.vala:110
+msgid "_Service"
+msgstr "_Shërbim"
+
+#. / Menu item to switch service
+#: src/gui/actions.vala:117
+msgid "_Switch Service"
+msgstr "_Ndërro Shërbim"
+
+#. / Menu Control
+#: src/gui/actions.vala:121
+msgid "_Control"
+msgstr ""
+
+#. / Menu View
+#: src/gui/actions.vala:128
+msgid "_View"
+msgstr "_Pamje"
+
+#. / Menu Options
+#: src/gui/actions.vala:135
+msgid "_Options"
+msgstr "_Mundësitë"
+
+#. / Menu item to purge cookies
+#. / Crash dialog
+#: src/gui/actions.vala:137 src/gui/windows.vala:243
+msgid "Purge cookies"
+msgstr ""
+
+#. / Menu item to purge album art cache
+#: src/gui/actions.vala:139
+msgid "Purge album art"
+msgstr ""
+
+#. / Menu item to purge browser cache
+#. / Crash dialog
+#: src/gui/actions.vala:141 src/gui/windows.vala:248
+msgid "Purge browser cache"
+msgstr ""
+
+#. / Menu Help
+#: src/gui/actions.vala:146
+msgid "_Help"
+msgstr "_Ndihmë"
+
+#. / Menu item to open online help
+#: src/gui/actions.vala:148
+msgid "Get help online"
+msgstr "Merr ndihmë në linjë"
+
+#. / Menu item to open bug/issue tracker
+#: src/gui/actions.vala:150
+msgid "Report a problem"
+msgstr ""
+
+#. / Menu item to open feature requests tracker
+#: src/gui/actions.vala:152
+msgid "Suggest new feature"
+msgstr ""
+
+#. / Menu item to open page with information about donations
+#: src/gui/actions.vala:154
+msgid "Donate"
+msgstr "Dhuro"
+
+#. / Menu item to open Nuvola's page on Google+ social network
+#: src/gui/actions.vala:156
+msgid "Google+ page"
+msgstr "Faqja e Google+"
+
+#. / Menu item to open Nuvola's page on Facebook social network
+#: src/gui/actions.vala:158
+msgid "Facebook page"
+msgstr "Faqja e Facebook"
+
+#. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
+#: src/gui/actions.vala:162
+msgid "Nuvola Menu"
+msgstr "Menuja e Nuvola-s"
+
+#. / Menu item to show both menu bar and tool bar
+#: src/gui/actions.vala:170
+msgid "Both menubar and toolbar"
+msgstr ""
+
+#. / Menu item to show only menu bar, tool bar is hidden
+#: src/gui/actions.vala:172
+msgid "Only menubar"
+msgstr ""
+
+#. / Menu item to show only tool bar, menu bar is hidden
+#: src/gui/actions.vala:174
+msgid "Only toolbar"
+msgstr ""
+
+#. / Menu item to open web page about the current release
+#: src/gui/actions.vala:183
+msgid "About release %s"
+msgstr ""
+
+#. / Preferences dialog title
+#: src/gui/preferences.vala:33
+msgid "Preferences"
+msgstr "Parapëlqimet"
+
+#. / Settings dialog, tab General
+#: src/gui/preferences.vala:88
+msgid "General"
+msgstr "Të përgjithshme"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:91
+msgid "Handle multimedia keys."
+msgstr ""
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:97
+msgid "Use Pause (break) key to toggle play/pause"
+msgstr ""
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:103
+msgid "Show notifications."
+msgstr "Shfaq njoftimet."
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:109
+msgid "Hide window if close button is pressed"
+msgstr "Fshihe dritaren nqs shtypet butoni mbylle."
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:114
+msgid "Always (may require tray icon)"
+msgstr ""
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:117
+msgid "Only if music is playing  (may require tray icon)"
+msgstr ""
+
+#. / Settings dialog - tab General
+#. / Settings dialog - tab General, never show tray icon
+#: src/gui/preferences.vala:120 src/gui/preferences.vala:145
+msgid "Never"
+msgstr "Kurrë"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:134
+msgid "Show tray icon"
+msgstr "Shfaq ikonën në shirit"
+
+#. / Settings dialog - tab General, always show tray icon
+#: src/gui/preferences.vala:139
+msgid "Always"
+msgstr "Gjithmonë"
+
+#. / Settings dialog - tab General, show tray icon if needed
+#: src/gui/preferences.vala:142
+msgid "If needed"
+msgstr "Nqs nevojitet"
+
+#. / Settings dialog tab
+#: src/gui/preferences.vala:163
+msgid "Network"
+msgstr "Rrjet"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:166
+msgid ""
+"Some cloud music services don't work with automatic settings and may require "
+"manual SOCKS proxy settings. New proxy settings is applied after restart of "
+"Nuvola Player."
+msgstr ""
+
+#. / Settings dialog - tab Network, warning shown if a buggy connection library is used
+#: src/gui/preferences.vala:175
+msgid ""
+"<b>Warning:</b> A version of a library used for network connection contained "
+"in your system has issues with HTTPS proxy support and it may cause crash of "
+"Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
+msgstr ""
+
+#. / Settings dialog - tab Network, shown if tsocks library was not detected
+#: src/gui/preferences.vala:185
+msgid ""
+"<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
+"may not be supported."
+msgstr ""
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:195
+msgid "Use direct connection without a proxy server"
+msgstr ""
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:199
+msgid "Use system HTTP(S) proxy settings"
+msgstr ""
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:203
+msgid "Use manual proxy settings"
+msgstr ""
+
+#: src/gui/preferences.vala:212
+msgid "Proxy Type"
+msgstr ""
+
+#. / Settings dialog - tab Network, proxy type HTTP(S)
+#: src/gui/preferences.vala:215
+msgid "HTTP(S)"
+msgstr "HTTP(S)"
+
+#. / Settings dialog - tab Network, proxy type SOCKS
+#: src/gui/preferences.vala:218
+msgid "SOCKS"
+msgstr "SOCKS"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:228
+msgid "Proxy Server"
+msgstr ""
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:238
+msgid "Proxy Server Port"
+msgstr ""
+
+#. / Settings dialog, tab User Scripts
+#: src/gui/preferences.vala:280
+msgid "User scripts"
+msgstr ""
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:283
+msgid ""
+"User scripts are used to enhance web interface of cloud music services."
+msgstr ""
+
+#. / Settings dialog - tab User Scripts, warning
+#: src/gui/preferences.vala:291
+msgid ""
+"<b>Warning:</b> Support for user scripts is incomplete and experimental. It "
+"may be removed in future releases. User script can send data to third "
+"parties, install only trustworthy user scripts."
+msgstr ""
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:301
+msgid "You have to select service to configure user scripts."
+msgstr ""
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:310
+msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
+msgstr ""
+
+#. / Settings dialog - tab User Scripts, button to open user scripts directory
+#: src/gui/preferences.vala:325
+msgid "Open user scripts directory"
+msgstr ""
+
+#. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
+#: src/gui/windows.vala:63
+msgid ""
+"You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a "
+"problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
+"<a href='%4$s'>stable and beta builds</a>.</i>"
+msgstr ""
+
+#. / Shown in the About Nuvola Player dialog
+#: src/gui/windows.vala:163
+msgid "Cloud music integration for your Linux desktop"
+msgstr ""
+
+#. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
+#: src/gui/windows.vala:165
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+"  tomson https://launchpad.net/~mendimiilire";
+
+#. / Title of the Crash dialog
+#: src/gui/windows.vala:205
+msgid "Nuvola Player Crash Dialog"
+msgstr ""
+
+#. / Crash dialog
+#: src/gui/windows.vala:220
+msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
+msgstr ""
+
+#. / Crash dialog
+#: src/gui/windows.vala:228
+msgid "You can try following options to solve this issue:"
+msgstr ""
+
+#. / Crash dialog
+#: src/gui/windows.vala:237
+msgid "Reset configuration"
+msgstr "Rivendos konfigurmin"
+
+#. / Crash dialog
+#: src/gui/windows.vala:240
+msgid "Reset state of user interface"
+msgstr ""
+
+#. / Crash dialog
+#: src/gui/windows.vala:254
+msgid "Disable HTTP(S) proxy"
+msgstr ""
+
+#. / Crash dialog
+#: src/gui/windows.vala:259
+msgid ""
+"Cloud music services use Flash to play music. Unfortunately, Flash Player is "
+"known not to be very stable and may cause crash of Nuvola Player. Please "
+"visit <a href='%s'>Flash troubleshooting</a>"
+msgstr ""

=== added file 'translations/zh_CN.po'
--- translations/zh_CN.po	1970-01-01 00:00:00 +0000
+++ translations/zh_CN.po	2012-06-15 15:20:27 +0000
@@ -0,0 +1,432 @@
+# Chinese (Simplified) translation for nuvola-player
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the nuvola-player package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: nuvola-player\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2011-12-16 10:33+0100\n"
+"PO-Revision-Date: 2012-03-07 09:24+0000\n"
+"Last-Translator: Wang Dianjin <Unknown>\n"
+"Language-Team: Chinese (Simplified) <zh_CN@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-03-08 05:23+0000\n"
+"X-Generator: Launchpad (build 14914)\n"
+
+#. / Shown if unsupported command line argument is used
+#: src/main.vala:194
+msgid "Error: Option parsing failed:"
+msgstr "错误:操作解析失败;"
+
+#. / Short label for command 'start or resume playback'
+#: src/player.vala:57
+msgid "Play"
+msgstr "播放"
+
+#. / Short label for command 'pause playback'
+#: src/player.vala:59
+msgid "Pause"
+msgstr "暂停"
+
+#. / Short label for command 'skip to previous song'
+#: src/player.vala:61
+msgid "Previous song"
+msgstr "上一首"
+
+#. / Short label for command 'skip to next song'
+#: src/player.vala:63
+msgid "Next song"
+msgstr "下一首"
+
+#. / Short label for command 'thumb up' or 'like this song' (see Google Music buttons)
+#: src/player.vala:65
+msgid "Thumbs Up"
+msgstr "喜欢的歌曲"
+
+#. / Short label for command 'thumb down' or 'dislike this song' (see Google Music buttons)
+#: src/player.vala:67
+msgid "Thumbs Down"
+msgstr "不喜欢的歌曲"
+
+#. / Short label for command 'add this song to favorites'
+#: src/player.vala:69
+msgid "Favorite"
+msgstr "收藏"
+
+#. / Short label for command 'quit application'
+#: src/player.vala:71
+msgid "Quit"
+msgstr "退出"
+
+#. / Initial notification
+#: src/player.vala:166
+msgid "Version"
+msgstr "版本"
+
+#. / Shown in notification if both artist and album are unknown
+#: src/player.vala:301
+msgid "by unknown artist"
+msgstr "未知艺人"
+
+#. / Shown in notification if artist is unknown, %s will be replaced by album name
+#: src/player.vala:305
+msgid "by unknown artist from %s"
+msgstr "未知艺人,专辑: %2$"
+
+#. / Shown in notification if album is unknown, %s will be replaced by artist name
+#: src/player.vala:309
+msgid "by %s"
+msgstr "艺人:%s"
+
+#. / Shown in notification, %1$s will be replaced by artist name, %2$s will be replaced by album name
+#: src/player.vala:313
+msgid "by %1$s from %2$s"
+msgstr "艺人:%1$,专辑: %2$"
+
+#. / Shown in Service selector if service doesn't provide description
+#: src/service.vala:189
+msgid "No description provided for this service."
+msgstr "没有提供该服务的描述。"
+
+#. / Shown as heading in Service selector
+#: src/service.vala:193
+msgid "Select cloud music service"
+msgstr "选择云端音乐服务"
+
+#. / Shown as label of Cancel button in Service selector
+#: src/service.vala:197
+msgid "Cancel"
+msgstr "取消"
+
+#. / Menu Service
+#: src/gui/actions.vala:110
+msgid "_Service"
+msgstr "服务(_S)"
+
+#. / Menu item to switch service
+#: src/gui/actions.vala:117
+msgid "_Switch Service"
+msgstr "切换服务(_S)"
+
+#. / Menu Control
+#: src/gui/actions.vala:121
+msgid "_Control"
+msgstr "控制(_C)"
+
+#. / Menu View
+#: src/gui/actions.vala:128
+msgid "_View"
+msgstr "查看(_V)"
+
+#. / Menu Options
+#: src/gui/actions.vala:135
+msgid "_Options"
+msgstr "选项(_O)"
+
+#. / Menu item to purge cookies
+#. / Crash dialog
+#: src/gui/actions.vala:137 src/gui/windows.vala:243
+msgid "Purge cookies"
+msgstr "清除 cookie"
+
+#. / Menu item to purge album art cache
+#: src/gui/actions.vala:139
+msgid "Purge album art"
+msgstr "清除专辑封面"
+
+#. / Menu item to purge browser cache
+#. / Crash dialog
+#: src/gui/actions.vala:141 src/gui/windows.vala:248
+msgid "Purge browser cache"
+msgstr "清除浏览缓存"
+
+#. / Menu Help
+#: src/gui/actions.vala:146
+msgid "_Help"
+msgstr "帮助(_H)"
+
+#. / Menu item to open online help
+#: src/gui/actions.vala:148
+msgid "Get help online"
+msgstr "在线帮助"
+
+#. / Menu item to open bug/issue tracker
+#: src/gui/actions.vala:150
+msgid "Report a problem"
+msgstr "报告问题"
+
+#. / Menu item to open feature requests tracker
+#: src/gui/actions.vala:152
+msgid "Suggest new feature"
+msgstr "开发建议"
+
+#. / Menu item to open page with information about donations
+#: src/gui/actions.vala:154
+msgid "Donate"
+msgstr "捐赠"
+
+#. / Menu item to open Nuvola's page on Google+ social network
+#: src/gui/actions.vala:156
+msgid "Google+ page"
+msgstr "Google+ 页面"
+
+#. / Menu item to open Nuvola's page on Facebook social network
+#: src/gui/actions.vala:158
+msgid "Facebook page"
+msgstr "Facebook 页面"
+
+#. / Special tool bar item shown if menu bar is not shown, triggers menu with items not available on tool bar
+#: src/gui/actions.vala:162
+msgid "Nuvola Menu"
+msgstr "Nuvola 菜单"
+
+#. / Menu item to show both menu bar and tool bar
+#: src/gui/actions.vala:170
+msgid "Both menubar and toolbar"
+msgstr "显示菜单栏和工具条"
+
+#. / Menu item to show only menu bar, tool bar is hidden
+#: src/gui/actions.vala:172
+msgid "Only menubar"
+msgstr "只显示菜单栏"
+
+#. / Menu item to show only tool bar, menu bar is hidden
+#: src/gui/actions.vala:174
+msgid "Only toolbar"
+msgstr "只显示工具条"
+
+#. / Menu item to open web page about the current release
+#: src/gui/actions.vala:183
+msgid "About release %s"
+msgstr "关于版本 %s"
+
+#. / Preferences dialog title
+#: src/gui/preferences.vala:33
+msgid "Preferences"
+msgstr "首选项"
+
+#. / Settings dialog, tab General
+#: src/gui/preferences.vala:88
+msgid "General"
+msgstr "常规"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:91
+msgid "Handle multimedia keys."
+msgstr "控制多媒体按键"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:97
+msgid "Use Pause (break) key to toggle play/pause"
+msgstr "使用暂停(中断)键切换播放/暂停"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:103
+msgid "Show notifications."
+msgstr "显示消息通知。"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:109
+msgid "Hide window if close button is pressed"
+msgstr "点击关闭按钮时隐藏窗口"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:114
+msgid "Always (may require tray icon)"
+msgstr "总是(可能需要托盘图标)"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:117
+msgid "Only if music is playing  (may require tray icon)"
+msgstr "只在音乐播放时(可能需要托盘图标)"
+
+#. / Settings dialog - tab General
+#. / Settings dialog - tab General, never show tray icon
+#: src/gui/preferences.vala:120 src/gui/preferences.vala:145
+msgid "Never"
+msgstr "从不"
+
+#. / Settings dialog - tab General
+#: src/gui/preferences.vala:134
+msgid "Show tray icon"
+msgstr "显示托盘图标"
+
+#. / Settings dialog - tab General, always show tray icon
+#: src/gui/preferences.vala:139
+msgid "Always"
+msgstr "总是"
+
+#. / Settings dialog - tab General, show tray icon if needed
+#: src/gui/preferences.vala:142
+msgid "If needed"
+msgstr "如果需要"
+
+#. / Settings dialog tab
+#: src/gui/preferences.vala:163
+msgid "Network"
+msgstr "网络"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:166
+msgid ""
+"Some cloud music services don't work with automatic settings and may require "
+"manual SOCKS proxy settings. New proxy settings is applied after restart of "
+"Nuvola Player."
+msgstr "一些旧的音乐服务无法在自动设置下工作,可能需要手动 SOCKS 代理设置。新的代理设置会在 Nuvola 播放器重启后生效。"
+
+#. / Settings dialog - tab Network, warning shown if a buggy connection library is used
+#: src/gui/preferences.vala:175
+msgid ""
+"<b>Warning:</b> A version of a library used for network connection contained "
+"in your system has issues with HTTPS proxy support and it may cause crash of "
+"Nuvola Player. It's highly recommended not to use HTTP(S) Proxy settings."
+msgstr ""
+"<b>警告:</b> 您的系统包含的网络连接使用的库文件版本无法支持 HTTP 代理,这有可能导致 Nuvola 播放器崩溃。严重推荐您不要使用 "
+"HTTP(S) 代理设置。"
+
+#. / Settings dialog - tab Network, shown if tsocks library was not detected
+#: src/gui/preferences.vala:185
+msgid ""
+"<b>Note:</b> <a href='%s'>TSOCKS library</a> was not detected. SOCKS proxy "
+"may not be supported."
+msgstr "<b>提示:</b> 没有检测到 <a href='%s'>TSOCKS 库</a>。可能无法支持 SOCKS 代理。"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:195
+msgid "Use direct connection without a proxy server"
+msgstr "无代理,直接连接网络"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:199
+msgid "Use system HTTP(S) proxy settings"
+msgstr "使用系统 HTTP(S) 代理设置"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:203
+msgid "Use manual proxy settings"
+msgstr "手动配置代理"
+
+#: src/gui/preferences.vala:212
+msgid "Proxy Type"
+msgstr "代理类型"
+
+#. / Settings dialog - tab Network, proxy type HTTP(S)
+#: src/gui/preferences.vala:215
+msgid "HTTP(S)"
+msgstr "HTTP(S)"
+
+#. / Settings dialog - tab Network, proxy type SOCKS
+#: src/gui/preferences.vala:218
+msgid "SOCKS"
+msgstr "SOCKS"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:228
+msgid "Proxy Server"
+msgstr "代理服务器"
+
+#. / Settings dialog - tab Network
+#: src/gui/preferences.vala:238
+msgid "Proxy Server Port"
+msgstr "代理服务器端口"
+
+#. / Settings dialog, tab User Scripts
+#: src/gui/preferences.vala:280
+msgid "User scripts"
+msgstr "用户脚本"
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:283
+msgid ""
+"User scripts are used to enhance web interface of cloud music services."
+msgstr "用户脚本用来增强云端音乐服务的网络界面。"
+
+#. / Settings dialog - tab User Scripts, warning
+#: src/gui/preferences.vala:291
+msgid ""
+"<b>Warning:</b> Support for user scripts is incomplete and experimental. It "
+"may be removed in future releases. User script can send data to third "
+"parties, install only trustworthy user scripts."
+msgstr ""
+"<b>警告:</b>对用户脚本的支持目前尚未完成,处于测试阶段。在功能版本中可能会移除。用户脚本可发送数据到第三方,只安装值得信任的用户脚本。"
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:301
+msgid "You have to select service to configure user scripts."
+msgstr "您必须选择服务以配置用户脚本。"
+
+#. / Settings dialog - tab User Scripts
+#: src/gui/preferences.vala:310
+msgid "Comma-separated list of user scripts enabled for service <b>%s</b>:"
+msgstr "支持服务 <b>%s</b> 的用户脚本,若有多个脚本请用逗号隔开:"
+
+#. / Settings dialog - tab User Scripts, button to open user scripts directory
+#: src/gui/preferences.vala:325
+msgid "Open user scripts directory"
+msgstr "打开用户脚本目录"
+
+#. / Warning for unstable builds, %1$s = version, %2$s and %3$s = links
+#: src/gui/windows.vala:63
+msgid ""
+"You are running <b>unstable build %1$s</b>. <a href='%2$s'>Report a "
+"problem</a>. <a href='%3$s'>See changelog</a>. <i>This bar is not shown in "
+"<a href='%4$s'>stable and beta builds</a>.</i>"
+msgstr ""
+"您正在运行 <b>非稳定构建版本 %1$s</b>。<a href='%2$s'>报告问题</a>。<a "
+"href='%3$s'>查看修改记录</a>。<i>该栏不会显示在 <a href='%4$s'>稳定版本和测试版本</a>中。</i>"
+
+#. / Shown in the About Nuvola Player dialog
+#: src/gui/windows.vala:163
+msgid "Cloud music integration for your Linux desktop"
+msgstr "移植云端音乐服务到您的 Linux 桌面"
+
+#. / Names of translators (shown in the translator credits accessed from the About Nuvola Player dialog)
+#: src/gui/windows.vala:165
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+"  Wang Dianjin https://launchpad.net/~tuhaihe";
+
+#. / Title of the Crash dialog
+#: src/gui/windows.vala:205
+msgid "Nuvola Player Crash Dialog"
+msgstr "Nuvola 播放器崩溃对话框"
+
+#. / Crash dialog
+#: src/gui/windows.vala:220
+msgid "<b>Previous Nuvola Player session was not closed correctly.</b>"
+msgstr "<b>前一个 Nuvola 播放器会话没有正常关闭。</b>"
+
+#. / Crash dialog
+#: src/gui/windows.vala:228
+msgid "You can try following options to solve this issue:"
+msgstr "您可以尝试下面选项来解决该问题:"
+
+#. / Crash dialog
+#: src/gui/windows.vala:237
+msgid "Reset configuration"
+msgstr "重置配置"
+
+#. / Crash dialog
+#: src/gui/windows.vala:240
+msgid "Reset state of user interface"
+msgstr "重置用户界面状态"
+
+#. / Crash dialog
+#: src/gui/windows.vala:254
+msgid "Disable HTTP(S) proxy"
+msgstr "禁用 HTTP(S) 代理"
+
+#. / Crash dialog
+#: src/gui/windows.vala:259
+msgid ""
+"Cloud music services use Flash to play music. Unfortunately, Flash Player is "
+"known not to be very stable and may cause crash of Nuvola Player. Please "
+"visit <a href='%s'>Flash troubleshooting</a>"
+msgstr ""
+"云端音乐服务使用 Flash 播放音乐。不幸的是,Flash 播放器不是非常稳定,这可能导致 Nuvola 播放器崩溃。请访问 <a "
+"href='%s'>Flash 故障排除</a>"

=== renamed file 'vapi/libsoup-2.4-for-vala-gte-0.15.vapi' => 'vapi/libsoup-cache-2.4-vala-0.15.vapi'
=== modified file 'wscript'
--- wscript	2012-05-12 12:26:29 +0000
+++ wscript	2012-06-15 15:20:27 +0000
@@ -11,7 +11,11 @@
 RELEASE = "1.1" 
 
 # format "x.y.z~foo"
+<<<<<<< TREE
 VERSION = '1.1~unstable'
+=======
+VERSION = '1.0.6~unstable'
+>>>>>>> MERGE-SOURCE
 
 # "unstable", "stable"
 CHANNEL = "unstable" 
@@ -35,8 +39,8 @@
 	'VERSION': VERSION,
 	'RELEASE': RELEASE,
 	'RELEASE_URL': WEBSITE_URL + "Releases/" + RELEASE + "/",
-	'TIPS_URL': "http://projects.fenryxo.cz/Google_Music_Frame/Tips/";,
-	'DONATE_URL': "http://projects.fenryxo.cz/Google_Music_Frame/Contribute/#donate";,
+	'TIPS_URL': WEBSITE_URL + "Tips/",
+	'DONATE_URL': WEBSITE_URL + "Contribute/#donate",
 	'GOOGLE_PLUS_URL': "https://plus.google.com/110794636546911932554";,
 	'FACEBOOK_URL': "https://www.facebook.com/nuvolaplayer";,
 	'TWITTER_URL': "https://www.twitter.com/NuvolaPlayer";,
@@ -77,10 +81,6 @@
 		raise ValueError("Wrong channel for stable version")
 	VALA_DEFINES = []
 
-GTK3 = False
-# Google Music Frame can be compiled using GTK+ 3, but:
-# a) Maverick is not shipped with GTK+3 theme
-# b) Flash isn't loaded (https://bugzilla.redhat.com/show_bug.cgi?id=695184)
 
 top = '.'
 out = 'build'
@@ -94,8 +94,11 @@
 	ctx.add_option('--without-glib-dbus', action='store_false', default=True, dest="glib_dbus", help='Build without native DBus support in GLib/GIO (>= 2.26)')
 	ctx.add_option('--with-indicator-sound-maverick', action='store_true', default=False, dest="indicator_sound_maverick", help='Build with support for Indicator Sound (Ubuntu Maverick version)')
 	ctx.add_option('--with-debug-symbols', action='store_true', default=False, dest="debug_symbols", help='Build with debug symbols')
+<<<<<<< TREE
 	ctx.add_option('--enable-experimental', action='store_true', default=False, dest="experimental", help='Enable experimental features')
 	ctx.add_option('--allow-buggy-webkit', action='store_true', default=False, dest="buggy_webkit", help='Allow to build with buggy WebKitGTK+')
+=======
+>>>>>>> MERGE-SOURCE
 	
 def configure(conf):
 	
@@ -129,18 +132,14 @@
 	else:
 		ctx.msg("libnotify VAPI fix will be applied", "no", "GREEN")
 	check_package(conf, 'x11', 'XLIB', '0.5')
-	if GTK3:
-		check_package(conf, 'webkitgtk-3.0', 'WEBKIT', '1.0')
-		check_package(conf, 'gtk+-3.0', 'GTK+', '2.22.0')
+	if check_package(conf, 'webkit-1.0', 'WEBKIT', '1.5', False) is None:
+		# webkit >= 1.5 not found, but older version can be used
+		check_package(conf, 'webkit-1.0', 'WEBKIT', '1.0')
 	else:
-		if check_package(conf, 'webkit-1.0', 'WEBKIT', '1.5', False) is None:
-			# webkit >= 1.5 not found, but older version can be used
-			check_package(conf, 'webkit-1.0', 'WEBKIT', '1.0')
-		else:
-			# webkit >= 1.5 has separate package for javascriptcore
-			check_package(conf, 'javascriptcoregtk-1.0', 'JSCORE', '1.5')
-		check_package(conf, 'gtk+-2.0', 'GTK+', '2.20.0')
-		check_package(conf, 'gdk-2.0', 'GDK', '2.20.0')
+		# webkit >= 1.5 has separate package for javascriptcore
+		check_package(conf, 'javascriptcoregtk-1.0', 'JSCORE', '1.5')
+	check_package(conf, 'gtk+-2.0', 'GTK+', '2.20.0')
+	check_package(conf, 'gdk-2.0', 'GDK', '2.20.0')
 		
 	ctx.env.WEBKITGTK_VERSION = map(int, conf.check_cfg(modversion='webkit-1.0').split("."))
 	
@@ -166,7 +165,7 @@
 	else:
 		check_package(conf, 'glib-2.0', 'GLIB', '2.22')
 		check_package(conf, 'gio-2.0', 'GIO', '2.22')
-		print ">>> Building without DBus support"
+		#~ print ">>> Building without DBus support"
 	#~ check_package(conf, 'atk', 'ATK', '2.0')
 	
 	conf.check_cfg(modversion='libsoup-2.4');
@@ -180,11 +179,23 @@
 		ctx.msg("SoupCache for remote objects", "disabled", "YELLOW")
 	
 	check_package(conf, 'unique-1.0', 'UNIQUE', '0.9')
+<<<<<<< TREE
 	check_package(conf, 'json-glib-1.0', 'JSON-GLIB', '0.7')
 	
 	if check_package(conf, 'unity', 'UNITY', '3.0', False) \
 		and check_package(conf, 'dbusmenu-glib-0.4', 'DBUSMENU', '0.4', False):
 		ctx.msg("Integration with Unity Launcher Quick List", "enabled", "GREEN")
+=======
+	
+	if ctx.options.indicator_sound_maverick:
+		check_package(conf, 'indicate', 'INDICATE', '0.4') # Maverick
+		check_package(conf, 'dbusmenu-glib', 'DBUSMENU', '0.3') # Maverick
+		ctx.env.VALA_DEFINES.append("INDICATOR_SOUND_MAVERICK")
+	
+	if check_package(conf, 'unity', 'UNITY', '3.0', False) \
+		and check_package(conf, 'dbusmenu-glib-0.4', 'DBUSMENU', '0.4', False):
+		ctx.msg("Integration with Unity Launcher Quick List", "enabled", "GREEN")
+>>>>>>> MERGE-SOURCE
 		ctx.env.VALA_DEFINES.append("UNITY_QUICK_LIST")
 	else:
 		ctx.msg("Integration with Unity Launcher Quick List", "disabled", "YELLOW")
@@ -262,6 +273,59 @@
 	packages += ' x11 unique-1.0 javascriptcore libfenryxo posix json-glib-1.0'
 	uselib = 'DL GLIB GTK+ GDK GEE SOUP ATK UNIQUE WEBKIT NOTIFY XLIB JSON-GLIB'
 	
+<<<<<<< TREE
+	if ctx.env.GEE_GTE_0_6:
+		packages += " gee-1.0"
+	else:
+		packages += " gee-when-lt-0.6"
+=======
+
+def build(ctx):
+	# build graphics
+	size = 16
+	ctx(
+		rule='%s -w %s -h %s ${SRC} -o ${TGT}' % (ctx.env["RSVG-CONVERT"], size, size),
+		source='graphics/nuvola-player.bigger-cloud-and-play.svg',
+		target='data/icons/hicolor/%sx%s/apps/nuvolaplayer.png' % (size, size)
+		)
+	for size in 22, 24:
+		ctx(
+			rule='%s -w %s -h %s ${SRC} -o ${TGT}' % (ctx.env["RSVG-CONVERT"], size, size),
+			source='graphics/nuvola-player.bigger-cloud.svg',
+			target='data/icons/hicolor/%sx%s/apps/nuvolaplayer.png' % (size, size)
+		)
+	for size in 32, 48:
+		ctx(
+			rule='%s -w %s -h %s ${SRC} -o ${TGT}' % (ctx.env["RSVG-CONVERT"], size, size),
+			source='graphics/nuvola-player.orig.svg',
+			target='data/icons/hicolor/%sx%s/apps/nuvolaplayer.png' % (size, size)
+		)
+
+	if ctx.env.SCOUR:
+		ctx(
+			rule='%s -i ${SRC} -o ${TGT}' % ctx.env.SCOUR,
+			source='graphics/nuvola-player.orig.svg',
+			target='data/icons/hicolor/scalable/apps/nuvolaplayer.svg'
+		)
+	else:
+		ctx(
+			rule='cp ${SRC} ${TGT}',
+			source='graphics/nuvola-player.orig.svg',
+			target='data/icons/hicolor/scalable/apps/nuvolaplayer.svg'
+		)
+
+	ctx(
+		rule='%s -w 35 -h 26 ${SRC} -o ${TGT}' % ctx.env["RSVG-CONVERT"],
+		source='graphics/cloud.orig.svg',
+		target='data/nuvolaplayer/selector/arrow.png'
+	)
+
+	# build binaries
+	packages = 'glib-2.0 gio-2.0 libsoup-2.4 config'
+	packages += ' x11 unique-1.0 javascriptcore libfenryxo posix'
+	uselib = 'DL GLIB GTK+ GDK GEE SOUP ATK UNIQUE WEBKIT NOTIFY XLIB'
+>>>>>>> MERGE-SOURCE
+	
 	if ctx.env.GEE_GTE_0_6:
 		packages += " gee-1.0"
 	else:
@@ -276,15 +340,31 @@
 			else: vala_defines.append(key[:-1])
 	if "HAVE_JSCORE" in bld.env.table:
 		uselib += " JSCORE"
+<<<<<<< TREE
 	if bld.env["VALAC_VERSION"] >= (0, 15, 0):
 		vala_defines.append('VALAC_0_15')
 		packages += " libsoup-2.4-for-vala-gte-0.15"
 	elif bld.env["VALAC_VERSION"] >= (0, 13, 0):
+=======
+	if bld.env["VALAC_VERSION"] >= (0, 15, 0):
+		vala_defines.append('VALAC_0_15')
+		packages += " libsoup-cache-2.4-vala-0.15"
+	elif bld.env["VALAC_VERSION"] >= (0, 13, 0):
+>>>>>>> MERGE-SOURCE
 		vala_defines.append('VALAC_0_13')
+<<<<<<< TREE
 		packages += " libsoup-2.4-for-vala-lt-0.15"
+=======
+		packages += " libsoup-cache-2.4"
+>>>>>>> MERGE-SOURCE
 	else:
+<<<<<<< TREE
 		vala_defines.append('VALAC_0_12')
 		packages += " libsoup-2.4-for-vala-lt-0.15"
+=======
+		vala_defines.append('VALAC_0_12')
+		packages += " libsoup-cache-2.4"
+>>>>>>> MERGE-SOURCE
 	
 	if DEV_STAGE != "stable" or ctx.options.debug_symbols:
 		vala_defines.append('DEV_BUILD')
@@ -385,7 +465,26 @@
 		'libfenryxo/tools.vala',
 	]
 	
+<<<<<<< TREE
 	task = ctx.program(
+=======
+	if "INDICATOR_SOUND_MAVERICK" in vala_defines:
+		packages += " Dbusmenu-Glib-0.2 Indicate-0.2"
+		uselib += " DBUSMENU INDICATE"
+		
+	if "UNITY_QUICK_LIST" in vala_defines:	
+		packages += " unity Dbusmenu-0.4"
+		uselib += " UNITY DBUSMENU"
+	
+	packages += " gtk+-2.0 gdk-2.0 webkit-1.0 gdk-x11-2.0"
+	if ctx.env.LIBNOTIFY_VERSION < [0, 7, 0]:
+		packages += " libnotify-fix"
+	else:
+		packages += " libnotify"
+		
+	
+	task = bld.program(
+>>>>>>> MERGE-SOURCE
 		target = target,
 		packages = packages,
 		uselib = uselib,
@@ -414,6 +513,7 @@
 	 podir=GETTEXT_PO_DIR,
 	 install_path="${LOCALEDIR}")
 	
+<<<<<<< TREE
 	data_dir = ctx.path.find_dir('data')
 	ctx.install_files('${PREFIX}/share', data_dir.ant_glob('**'),
 				cwd=data_dir, relative_trick=True)
@@ -497,6 +597,19 @@
         cmd = 'build_test'
         fun = 'build_test'
         
+=======
+	data_dir = bld.path.find_dir('data')
+	bld.install_files('${PREFIX}/share', data_dir.ant_glob('**'),
+				cwd=data_dir, relative_trick=True)
+	data_dir = bld.path.find_dir("build/data")
+	
+	if data_dir:
+		bld.install_files('${PREFIX}/share', data_dir.ant_glob('**'),
+				cwd=data_dir, relative_trick=True)
+	
+	
+
+>>>>>>> MERGE-SOURCE
 def dist(ctx):
 	ctx.algo = "tar.gz"
 	ctx.excl = ' .bzr build/* **/.waf-1* **/*~ **/*.swp **/.lock-w* bzrcommit.txt' 


Follow ups