D8 modul fordítások (.po)

makgab képe

Üdv!
D8 esetén a fordítás betöltése nem automatikus?
Pl. itt is

Nekem se települt fel automatikusan. Kézzel be tudom importálni a konfigurációban.

# mymodule.info.yml
name: mymodule
core: 8.x
version: 1
type: module
package: mymodule
description: My module.
interface translation project: mymodule
interface translation server pattern: modules/mymodule/translations/%language.po

A drush sem olvasta be:

drush locale-check
drush locale-update
drush cr

Mi a pontos módja D8 esetén a .po fájlok betöltésének? Vagy meg kell hívni a modulban a hook_locale_translation_projects_alter-t?

Drupal verzió: 
makgab képe

Ez a jó?

interface translation server pattern: modules/mymodule/translations/%project-%language.po

A fordítás ott van:
mymodule/translations/mymodule-hu.po

Az .info fájl szerint egy szerverről tölti le és ezért nem töltődik be(?).
Telepítéskor helyből miért nem töltődik be?

0
0
makgab képe

function mymodule_locale_translation_projects_alter(&$projects) {
  // The translations
  $projects['mymodule'] = array(
    'info' => array(
      'interface translation server pattern' => 'modules/mymodule/translations/%project-%language.po',
    ),
  );
}

Ez kellene? Ez mikor frissíti a .po fájlokból a fordításokat?

0
0
makgab képe

Nem működik.
Töröltem a modult, majd reinstall, de a .po nem töltődik be? A drush parancsok sem töltik be.
Csak importálni tudom a fordításokat (.po).

mi a hiba? :(

0
0
szantog képe

de nekünk működött:
Nem .pozunk, egyszerű yml-ből dolgozzuk fel a fordítást.

  1. /**
  2.  * Add a user interface translation to the translation storage.
  3.  *
  4.  * Found here: https://drupal.stackexchange.com/a/233121
  5.  *
  6.  * @param $source_string - English string.
  7.  * @param $langcode - Language to translate to.
  8.  * @param $translated_string - Translated string.
  9.  */
  10. function MODULE_translation_add_translation($source_string, $langcode, $translated_string) {
  11. // Find existing source string.
  12. $storage = \Drupal::service('locale.storage');
  13. $string = $storage->findString(['source' => $source_string]);
  14. if (is_null($string)) {
  15. $string = new SourceString();
  16. $string->setString($source_string);
  17. $string->setStorage($storage);
  18. $string->save();
  19. }
  20. // Create translation. If one already exists, it will be replaced.
  21. $translation = $storage->createTranslation([
  22. 'lid' => $string->lid,
  23. 'language' => $langcode,
  24. 'translation' => $translated_string,
  25. ]);
  26. $translation->save();
  27. }
  28.  
  29. /**
  30.  * Import all translations for this module.
  31.  */
  32. function MODULE_translation_import_translations($path, $langcode) {
  33.  
  34. // Parse the file.
  35. $translations = Yaml::parse(file_get_contents($path));
  36.  
  37. // Save each translation.
  38. foreach ($translations as $english => $translation) {
  39. MODULE_translation_add_translation($english, $langcode, $translation);
  40. }
  41. }

A ymlbe soronként kell szépen a szövegpárokat felvinni:
"Original": "Translation"

2
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

makgab képe

Köszönöm!
A yml-t pedig a modul főkönyvtárában kellene elhelyezni? pl. mymodule.hu.yml

0
0
szantog képe

Ahogy jólesik. A $path-ben azt adsz meg, amit akarsz.

1
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

makgab képe

Köszönöm!

0
0