Index: SqueezeOS.pm
===================================================================
--- SqueezeOS.pm	(revision 29378)
+++ SqueezeOS.pm	(working copy)
@@ -46,6 +46,13 @@
 	_checkMediaAtStartup($prefs);
 	
 	$prefs->setChange( \&_onAudiodirChange, 'audiodir', 'FIRST' );
+
+	eval {
+		require Slim::Utils::OS::SqueezeOS::PrefSync;
+		Slim::Utils::OS::SqueezeOS::PrefSync::init();
+	};
+	
+	Slim::Utils::Log::logError("Squeezeplay <-> Squeezebox Server prefs syncing failed to initialize: $@") if $@;
 }
 
 sub sqlHelperClass { 'Slim::Utils::SQLiteHelper' }
Index: SqueezeOS/PrefSync.pm
===================================================================
--- SqueezeOS/PrefSync.pm	(revision 0)
+++ SqueezeOS/PrefSync.pm	(revision 0)
@@ -0,0 +1,53 @@
+package Slim::Utils::OS::SqueezeOS::PrefSync;
+
+use strict;
+
+use Slim::Utils::Log;
+use Slim::Utils::Prefs;
+
+use Linux::Inotify2;
+
+my ($i, $w);
+
+my $handlers = {
+	'SetupLanguage.lua' => sub {
+		my $data = shift;
+        
+		if ($$data && $$data =~ /locale="([A-Z][A-Z])"/) {
+			preferences('server')->set('language', uc($1));
+		}
+	},
+                                                        
+};
+
+sub init {
+	$i = Linux::Inotify2->new() or die "Unable to start Inotify watcher: $!";
+
+	$i->watch('/etc/squeezeplay/userpath/settings/', IN_MOVED_TO, \&_parseEvent)
+		or logError("Unable to add Inotify watcher: $!");
+
+	$w = AnyEvent->io(
+		fh => $i->fileno,
+		poll => 'r',
+		cb => sub { $i->poll },
+	);
+}
+
+sub _parseEvent {
+	my $ev = shift;
+
+	if (defined $ev->fullname && defined $ev->name && $handlers->{$ev->name} && -r $ev->fullname ) {
+
+		require File::Slurp;
+                
+                my $data = File::Slurp::read_file($ev->fullname);
+
+		#eval {
+			&{ $handlers->{$ev->name} }(\$data);
+		#};
+	}
+}
+
+
+1;