it-swarm.com.de

Wie kann ich die Standardsprache von Drupal programmgesteuert ändern?

Ich versuche, die Standardsprache des Drupal programmgesteuert zu ändern, habe aber die Codes/Funktionen nicht gefunden. Irgendwelche Vorschläge?

5
sukrit

Hier ist eine korrigierte und getestete Version des Codes, der von @Clive in einem Kommentar zum OP veröffentlicht wurde:

$langs = language_list(); // Note: No argument
// debug($langs, '$langs');
$langcode = 'en';
variable_set('language_default', $langs[$langcode]);

Das obige Codefragment setzt voraus, dass der zweistellige Code, den Sie $langcode Zuweisen, aktiviert ist. Kommentieren Sie den Aufruf von debug aus, um zu sehen, welche Sprachen auf Ihrer Site aktiviert sind und welche Array-Indizes sie verwenden.

Beachten Sie, dass die Einstellung erst beim nächsten Laden der Seite wirksam wird.

9
Free Radical

Ich habe den Code gefunden und es ist ziemlich einfach.

//Set Default language
    $default_language = array('language' => 'en-US', 
                            'name' => 'English', 
                            'native' => 'English', 
                            'direction' => LANGUAGE_LTR, 
                            'enabled' => (int) TRUE, 
                            'plurals' => 0, 
                            'formula' =>'',
                            'domain' => '', 
                            'weight' => 0, 
                            'javascript' => '');
variable_set('language_default', (object) $default_language) ;
1
sukrit

Durch Implementieren des folgenden Hooks: hook_language_negotiation_info () und hier ist ein vollständiges Beispiel

http://tassaf.moriamedia.com/drupal-7-default-language-after-translation/

0
Tareq Assaf

Das Einstellen der Variablen reicht nicht immer aus. Zu diesem Zeitpunkt wurde die Sprachaushandlungsfunktion Drupal) möglicherweise bereits ausgeführt und reagiert nicht auf diese Variablenänderung. Der richtige Weg, dies zu tun, ist wie folgt:

// Get the list of languages
$languages = language_list();

// Set up the new language code
$new_lang_code = 'fr';

// Make sure the required language object is actually set
if (isset($languages[$new_lang_code])) {
  // Overwrite the global language object
  global $language;
  $language = $languages[$new_lang_code];
}

Dies wurde in anderen Fragen dokumentiert wie: Funktion zum Ändern des Sprachobjekts

Eine zusätzliche Option besteht darin, einen eigenen benutzerdefinierten Sprachverhandlungs-Hook zu schreiben: https://api.drupal.org/api/drupal/modules!system!language.api.php/function/hook_language_negotiation_info/7

0
Andrew Craswell