Index: trunk/extensions/LanguageSelector/LanguageSelector.php |
— | — | @@ -174,14 +174,26 @@ |
175 | 175 | || !array_key_exists( $wgContLang->getCode(), $languages ) ) |
176 | 176 | { |
177 | 177 | |
| 178 | + $supported = wfGetLanguageSelectorLanguages(); |
178 | 179 | // look for a language that is acceptable to the client |
179 | 180 | // and known to the wiki. |
180 | 181 | foreach( $languages as $reqCode => $q ) { |
181 | | - if ( in_array( $reqCode, wfGetLanguageSelectorLanguages() ) ) { |
| 182 | + if ( in_array( $reqCode, $supported ) ) { |
182 | 183 | $code = $reqCode; |
183 | 184 | break; |
184 | 185 | } |
185 | 186 | } |
| 187 | + |
| 188 | + // Apparently Safari sends stupid things like "de-de" only. |
| 189 | + // Try again with stripped codes. |
| 190 | + foreach( $languages as $reqCode => $q ) { |
| 191 | + $stupidPHP = explode( '-', $reqCode, 2 ); |
| 192 | + $bareCode = array_shift( $stupidPHP ); |
| 193 | + if ( in_array( $bareCode, $supported ) ) { |
| 194 | + $code = $bareCode; |
| 195 | + break; |
| 196 | + } |
| 197 | + } |
186 | 198 | } |
187 | 199 | } |
188 | 200 | } |