Index: transliteration.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/transliteration/transliteration.inc,v
retrieving revision 1.1.6.1
diff -u -p -r1.1.6.1 transliteration.inc
--- transliteration.inc	20 Mar 2008 09:50:19 -0000	1.1.6.1
+++ transliteration.inc	9 May 2008 14:03:42 -0000
@@ -8,14 +8,17 @@
  *
  * @param string $filename
  *   A file name.
+ * @param string $langcode
+ *   Optional ISO 639 language code used to import language specific
+ *   replacements. Defaults to the current display language.
  * @return string
  *   Cleaned file name.
  */
-function transliteration_clean_filename($filename) {
+function transliteration_clean_filename($filename, $langcode = NULL) {
   // Trim any leading/trailing dots.
   $filename = trim($filename, '.');
   // Transliterate to ASCII.
-  $filename = _transliteration_process($filename, '');
+  $filename = transliteration_process($filename, '', $langcode);
   // Replace whitespace.
   $filename = str_replace(' ', '_', $filename);
   // Remove any remaining non-safe characters.
@@ -25,10 +28,22 @@ function transliteration_clean_filename(
 }
 
 /**
+ * Transliterate UTF-8 input to plain ASCII.
+ *
  * Based on Mediawiki's UtfNormal::quickIsNFCVerify().
+ *
+ * @param string $string
+ *   UTF-8 text input.
+ * @param string $unknown
+ *   Replacement for unknown characters and illegal UTF-8 sequences.
+ * @param string $langcode
+ *   Optional ISO 639 language code used to import language specific
+ *   replacements. Defaults to the current display language.
+ * @return string
+ *   Plain ASCII output.
  * @see transliteration_get()
  */
-function _transliteration_process($string, $unknown = '?') {
+function transliteration_process($string, $unknown = '?', $langcode = NULL) {
   // Screen out some characters that eg won't be allowed in XML.
   $string = preg_replace('/[\x00-\x08\x0b\x0c\x0e-\x1f]/', $unknown, $string);
 
@@ -126,7 +141,7 @@ function _transliteration_process($strin
         else if ($n <= 0xf7) { $ord = ($n-240)*262144 + (ord($sequence{1})-128)*4096 + (ord($sequence{2})-128)*64 + (ord($sequence{3})-128); }
         else if ($n <= 0xfb) { $ord = ($n-248)*16777216 + (ord($sequence{1})-128)*262144 + (ord($sequence{2})-128)*4096 + (ord($sequence{3})-128)*64 + (ord($sequence{4})-128); }
         else if ($n <= 0xfd) { $ord = ($n-252)*1073741824 + (ord($sequence{1})-128)*16777216 + (ord($sequence{2})-128)*262144 + (ord($sequence{3})-128)*4096 + (ord($sequence{4})-128)*64 + (ord($sequence{5})-128); }
-        $result .= _transliteration_replace($ord, $unknown);
+        $result .= _transliteration_replace($ord, $unknown, $langcode);
         $head = '';
       } elseif ($c < "\x80") {
         // ASCII byte.
@@ -148,18 +163,20 @@ function _transliteration_process($strin
 }
 
 /**
- * Load transliteration database and replace a character.
+ * Lookup and replace a character from the transliteration database.
  *
  * @param integer $ord
  *   A unicode ordinal character code.
  * @param string $unknown
  *   Replacement for unknown characters.
+ * @param string $langcode
+ *   Optional ISO 639 language code used to import language specific
+ *   replacements. Defaults to the current display language.
  * @return string
  *   Plain ASCII replacement character.
  * @see transliteration_get()
  */
-function _transliteration_replace($ord, $unknown = '?') {
-  global $locale;
+function _transliteration_replace($ord, $unknown = '?', $langcode = NULL) {
   static $banks = array();
 
   $bank = $ord >> 8;
@@ -167,9 +184,13 @@ function _transliteration_replace($ord, 
     $file = drupal_get_path('module', 'transliteration') .'/data/'. sprintf('x%02x', $bank) .'.php';
     if (file_exists($file)) {
       $charmap = include($file);
-      // Merge locale specific replacements
-      if ($locale && isset($charmap[$locale])) {
-        $banks[$bank] = array_merge($charmap['default'], $charmap[$locale]);
+      // Merge language specific replacements
+      if (!isset($langcode)) {
+        global $language;
+        $langcode = $language->language;
+      }
+      if (isset($charmap[$langcode])) {
+        $banks[$bank] = array_merge($charmap['default'], $charmap[$langcode]);
       }
       else {
         $banks[$bank] = $charmap['default'];
Index: transliteration.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/transliteration/transliteration.module,v
retrieving revision 1.2
diff -u -p -r1.2 transliteration.module
--- transliteration.module	20 Mar 2008 09:44:43 -0000	1.2
+++ transliteration.module	9 May 2008 14:03:28 -0000
@@ -12,16 +12,24 @@
 /**
  * Transliterate UTF-8 input to plain ASCII.
  *
+ * This function loads the required include file and returns the result of the
+ * main function, transliteration_process().
+ *
  * @param string $input
  *   UTF-8 text input.
  * @param string $unknown
- *   Replacement for unknown or illegal characters.
+ *   Replacement for unknown characters and illegal UTF-8 sequences.
+ * @param string $langcode
+ *   Optional ISO 639 language code used to import language specific
+ *   replacements. See data/x00.php for an example. Defaults to the
+ *   current display language.
  * @return string
  *   Plain ASCII output.
+ * @see transliteration_process()
  */
-function transliteration_get($input, $unknown = '?') {
+function transliteration_get($input, $unknown = '?', $langcode = NULL) {
   require_once(drupal_get_path('module', 'transliteration') .'/transliteration.inc');
-  return _transliteration_process($input, $unknown);
+  return transliteration_process($input, $unknown, $langcode);
 }
 
 /**
@@ -32,8 +40,9 @@ function transliteration_get($input, $un
 function transliteration_init() {
   if (!empty($_FILES['files'])) {
     require_once(drupal_get_path('module', 'transliteration') .'/transliteration.inc');
+    $langcode = !empty($_POST['language']) ? $_POST['language'] : NULL;
     foreach ($_FILES['files']['name'] as $field => $filename) {
-      $_FILES['files']['name'][$field] = transliteration_clean_filename($filename);
+      $_FILES['files']['name'][$field] = transliteration_clean_filename($filename, $langcode);
     }
   }
 }
