it-swarm.com.de

Wie erhält man den übersetzten Taxonomiebegriff programmgesteuert?

Ich habe es versucht

$term = taxonomy_term_load($tid);

und das:

$term = i18n_taxonomy_localize_terms(taxonomy_term_load($tid));

Beide geben den Standardbegriff (Englisch) zurück

Ich benutze D7.

6
znat

Versuchen

$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_term_get_translation($term, $langcode);

Ein guter Ort, um nach weiteren Informationen zu suchen: /sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module

8
Bisonbleu

Um eine Zeichenfolge zu übersetzen, sollten Sie zwei Funktionen verwenden, je nachdem, welchen i18n-Modus Sie verwenden:

Lokalisierungsmodus: i18n_string_translation_update ()

<?php
  $result_translation = i18n_string_translation_update(
    array('taxonomy', 'term', $tid, 'name'), // Path where to store source and translation.
    $translated_string,
    $language,
    $source_string
  );
?>

Übersetzungsmodus: i18n_translation_set_create ()

<?php
  // 1. Load or create a translation set.
  $translation_set = ($source_term->i18n_tsid) ?
    i18n_translation_set_load($source_term->i18n_tsid) :
    i18n_translation_set_create('taxonomy_term', $vocabulary->machine_name);

      // 2. Add the full source term in this set.
  $translation_set->add_item($source_term, $source_term->language);

      // 3. Add the full translated term in this set.
  $translation_set->add_item($translated_term, $translated_term->language);
  $translation_set->save(TRUE);
?>

Zeichenfolgen für andere Inhalte und Module

Wenn ein Modul seine eigenen Zeichenfolgen definiert, muss es einige zusätzliche Funktionen verwenden, damit diese Zeichenfolgen verfolgt und aktualisiert werden können.

Definieren Sie die Textgruppe, indem Sie hook_i18n_string_info() implementieren. So sieht es aus (i18n_taxonomy-Modul)

<?php
/**
 * Implements hook_i18n_string_info()
 */
function i18n_taxonomy_i18n_string_info() {
  $groups['taxonomy'] = array(
    'title' => t('Taxonomy'),
    'description' => t('Vocabulary titles and term names for localizable vocabularies.'),
    'format' => FALSE, // This group doesn't have strings with format
    'list' => FALSE, // This group cannot list all strings
    'refresh callback' => 'i18n_taxonomy_i18n_string_refresh',
  );
  return $groups;
}
?>

Lesen Sie mehr unter: Verwenden der i18n-API aus anderen Modulen

Verbunden:

Wie kann die Übersetzung eines neuen Begriffs programmgesteuert mit dem ursprünglich vorhandenen Begriff verknüpft werden?

2
kenorb

i18n_taxonomy_localize_terms arbeitet daran, die Site-Sprache abzurufen

bitte überprüfen Sie Start "Administration" Konfiguration "Regional und Sprache" Sprachen, um sicherzustellen, dass die Erkennung der Site-Sprache wie gewünscht funktioniert

ich habe dies getan, wenn sich die Websitesprachen je nach Präferenz der Benutzersprache ändern

0
Draconid

So schreiben Sie die Finder-Menüanzeige mit lokalisierten Taxonomiebegriffen um:

<?php
$query = new EntityFieldQuery;
$result = $query
->entityCondition('entity_type', 'taxonomy_term')
->propertyCondition('name', $display)
->propertyCondition('vid', 3) // Change this to Your ID!!
->execute();

$found_tid = array_shift($result['taxonomy_term'])->tid;
// print $found_tid;

$tid = $found_tid;
$term = taxonomy_term_load($tid);
$translated_term = i18n_taxonomy_localize_terms($term);
print $translated_term->name;
?>
0
Florian Limmer