Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.303
diff -u -p -r1.303 locale.module
--- modules/locale/locale.module	9 Oct 2010 17:38:41 -0000	1.303
+++ modules/locale/locale.module	22 Oct 2010 09:29:25 -0000
@@ -923,7 +923,8 @@ function locale_block_view($type) {
     $path = drupal_is_front_page() ? '<front>' : $_GET['q'];
     $links = language_negotiation_get_switch_links($type, $path);
 
-    if (isset($links->links) && count($links->links > 1)) {
+    if (isset($links->links)) {
+      drupal_add_css(drupal_get_path('module', 'locale') . '/locale.css');
       $class = "language-switcher-{$links->provider}";
       $variables = array('links' => $links->links, 'attributes' => array('class' => array($class)));
       $block['content'] = theme('links__locale_block', $variables);
Index: modules/translation/translation.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v
retrieving revision 1.88
diff -u -p -r1.88 translation.module
--- modules/translation/translation.module	9 Oct 2010 17:38:41 -0000	1.88
+++ modules/translation/translation.module	22 Oct 2010 09:22:22 -0000
@@ -484,7 +484,7 @@ function translation_supported_type($typ
 function translation_path_get_translations($path) {
   $paths = array();
   // Check for a node related path, and for its translations.
-  if ((preg_match("!^node/([0-9]+)(/.+|)$!", $path, $matches)) && ($node = node_load((int)$matches[1])) && !empty($node->tnid)) {
+  if ((preg_match("!^node/(\d+)(/.+|)!", $path, $matches)) && ($node = node_load((int)$matches[1])) && !empty($node->tnid)) {
     foreach (translation_node_get_translations($node->tnid) as $language => $translation_node) {
       $paths[$language] = 'node/' . $translation_node->nid . $matches[2];
     }
@@ -510,7 +510,8 @@ function translation_language_switch_lin
       }
       else {
         // No translation in this language, or no permission to view.
-        unset($links[$langcode]);
+        unset($links[$langcode]['href']);
+        $links[$langcode]['attributes']['class'] = 'locale-untranslated';
       }
     }
   }
Index: themes/bartik/css/style.css
===================================================================
RCS file: /cvs/drupal/drupal/themes/bartik/css/style.css,v
retrieving revision 1.25
diff -u -p -r1.25 style.css
--- themes/bartik/css/style.css	8 Oct 2010 03:36:03 -0000	1.25
+++ themes/bartik/css/style.css	21 Oct 2010 13:32:51 -0000
@@ -419,7 +419,7 @@ h1#site-name,
   width: 154px;
 }
 /* Language switcher block in region header. */
-#block-locale-language ul li {
+.region-header .block-locale ul li {
   display: inline;
   padding: 0 0.5em;
 }
