NetteTranslator (GettextTranslator & Nette Translation Panel)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
sKopheK
Člen | 207
+
0
-

ic napsal(a):

sKopheK napsal(a):

A ještě jeden dotaz: Jak nejlépe udělám překlad částí url? Samozřejmě zachovám parametr lang, ale pak bych podle něj chtěl mít „uzivatel“ namisto „user“ apod.

Kdysi dávno se tohle dělalo v bootstrapu → https://github.com/…ootstrap.php#L57 dneska možná v .noen confugu kdoví.

On to je docela začarovaný kruh – napřed router zjistí parametr lang, pak podle něj může natáhnout správný překlad z .mo Gettextovych souborů a až pak určovat, co se má volat za presenter. Díky za tip, zkusím si s tím nějak pohrát.

Ivorius
Nette Blogger | 119
+
0
-

Po aktualizaci na nejnovější verzi z githubu, se mi začalo do logů ukládat

PHP Notice: Undefined index: front in ..libs/schmutzka/gettexttranslator/GettextTranslator/Gettext.php:156

Přičemž front normálně používám a i překlady to zobrazuje. Nevít co by to mohlo být?

sKopheK
Člen | 207
+
0
-

Poradí někdo jak na text obsahující znak nového řádku?

Petrik.a.dost
Člen | 72
+
0
-

PHP 5.3.24 nette 2.1

Dobrý den,

při instalaci jsem postupoval podle návodu, který je popsán v addonu gettextTranslatoru a laděnka vyhazuje vyjímku:

Nette\DI\ServiceCreationException

No service of type App\GettextTranslator\Gettext found. Make sure the type hint in App\BasePresenter::injectTranslator() is written correctly and service of this type is registered.

v indexu při spouštění aplikace: $container->application->run(); nevíte někdo v čem je problém?

Předem děkuji Petr

Petrik.a.dost
Člen | 72
+
0
-

tak vyřešeno teď laděnka ale naopak píše:

GettextTranslator\DI\InvalidConfigException

At least one language file must be defined

kde a jak se má soubor s jazykem definovat, nevíte někdo prosím??

Petrik.a.dost
Člen | 72
+
0
-

prosím poradte někdo už hledám řešení už několik hodin…#

.......
common:
gettextTranslator:
lang: cs
files:
front: %appDir%/lang
layout: horizontal
height: 450

extensions:
gettextTranslator: GettextTranslator\DI\Extension

services
Model\UserManager
App\RouterFactory

router: @App\RouterFactory::createRouter
mailService: MailService(@gettextTranslator.translator)

jestli jsem to spravne pochopil tak toto „front: %appDir%/lang“ je cesta k souboru, kde se má generovat soubor s jazyky ale nevím co je %appDir% výchozí složka, jesli je to složka config a když bych chtěl generovat jazyk jinam třeba ve složce app tak nastavit %appDir%/../lang a nebo jesli appDir znamená že už jsem v app takže stačí pouze front: %appDir%/lang… a jak registrovat jazyky, protože podle toho co jsem našel by se soubory .mo a .po měly vygenerovat, ale proč to tedy háže vyjímku:

GettextTranslator\DI\InvalidConfigException

At least one language file must be defined

nevím kde by mohla být chyba poradite někdo prosím?? jsem nováček a gettext-translátor jsem ještě nepoužíval takže nevím jak na to a nikde jsem nenašel nejakou dokumentaci ani na gitu a všechny návody odkazují na https://addons2.nette.org/…xttranslator a podle toho jsem postupoval a stejne to háže vyjímku…

poradíte něko ? díky moc Petr

t0x1c
Člen | 151
+
0
-

Ahoj, stahnu tuto rep ještě někde? Git rep už není a ja jsem nenašel jiny plugin než toto. To co psal Schmutzka ten Kdyby/Translation mi zab oha nejdea jiny (aktualni) plugin jsem nenašel.

Ivorius
Nette Blogger | 119
+
0
-

To je teda paráda :( Vezme vývoj někdo jiný?

sKopheK
Člen | 207
+
0
-

Tomu říkám odpovědnost a profesionalita Schmutzka. Je takový problém nechat repo v současné verzi funkční? Mohl si dát alepsoň nějaké přesměrování a/nebo to smazat/upravit taky v dokumentaci. Aspoň díky, že jsi doporučil jiný schopný projekt.

Teď ale k věci – neřešil jste někdo skloňování podle rodu? Jde to vůbec nějak v gettextu? Např. public – veřejný, veřejná, veřejné… ?

Editoval sKopheK (8. 11. 2013 19:28)

voda
Člen | 561
+
0
-

Teď ale k věci – neřešil jste někdo skloňování podle rodu? Jde to vůbec nějak v gettextu? Např. public – veřejný, veřejná, veřejné… ?

K tomu lze v gettextu použít volání s kontextem:

{_p'comment', 'public'} // přeloží se jako veřejný
{_p'event', 'public'} // přeloží se jako veřejná

Kontext je pak součástí katalogu překladů, ale nevypisuje se. Je například podporován v TemplateTranslatoru.

sKopheK
Člen | 207
+
0
-

Díky. O důvod víc, proč jít pryč od GettextTranslatoru.

Tomáš Votruba
Moderator | 1114
+
0
-

„GettextTranslator nefunguje…“

Taky to znáte? Založil jsem topic pro funkční translator, který používám nyní.
Budete-li mít s Kdyby\Translation nějaký problém, pište tam. Budu-li vědět, poradím.

Filip Procházka
Moderator | 4668
+
0
-

@t0x1c: pokud ti Kdyby/Translation nefunguje, tak jsi si pravděpodobně nainstaloval špatnou verzi. @Schmutzkův příspěvek jsem si dovolil poupravit a doplnit do něj přesné instrukce.

hejdav
Člen | 50
+
0
-

Stihl jsme si udělat fork, změnil jsem úložiště z PO/MO na libovolně implementovatelné (třeba databázi). Pojmenoval jsem to LiveTranslator.

Editoval hejdav (15. 11. 2013 18:50)

jspetrak
Člen | 15
+
0
-

Vypadá to, že se GettextTranslator dočká dalšího života, viz https://github.com/…t-translator.

Beliarr
Člen | 2
+
+1
-

Ahoj,
Mal som dnes ten isty problem, filemanager sa ti neinjectuje, v construktore v Gettext.php som len pridal $this->fileManager = new FileManager(); a uz mi to fici

dufam ze pomohlo aj ked neskoro :)

Sense napsal(a):

Edit: Tak už jsem to vyřešil stažením verze 2.0.6 z adresy (https://addons2.nette.org/…tor/versions). Teď to funguje skvěle bez jakýkoliv úprav.


Potřeboval bych maličko popostrčit. Používám Nette 2.0.12, PHP verze 5.4.11 a GettextTranslator 2.0.12 (dnes stažený z GITu). Moje soubory vypadají takto:

1. config.neon

common:
  gettextTranslator:
    lang: cs
    files:
      application: %appDir%/i18n

2. bootstrap.php

<?php
$configurator->onCompile[] = function ($configurator, $compiler) {
  $compiler->addExtension('gettextTranslator', new GettextTranslator\DI\Extension);
};
?>

3. SecuredPresenter

<?php
abstract class SecuredPresenter extends BasePresenter {

  public $lang;
  public $translator;

  public function injectTranslator(GettextTranslator\Gettext $translator) {
    $this->translator = $translator;
  }

  protected function startup() {

    parent::startup();
    $user = $this->getUser();

    if (!$user->isLoggedIn()) {
      $this->redirect('Sign:in');
    }

    if (!$user->identity->lang) $user->identity->lang = $this->translator->getLang();
    $this->lang = $user->identity->lang;
    $this->translator->setLang($this->lang);

  }

}
?>

4. formulář:

<?php
protected function createComponentUserProfileForm() {
  $form = new Form;
  $form->setTranslator($this->translator);
  ...
?>

Po načtení presenteru na mě nejdříve vyskočila první chybová hláška, stejná, jako zde řešil uživatel zool. Nicméně u mě to bylo naopak, místo:

<?php
Nette\Diagnostics\Debugger::getBar()->addPanel(...)
?>

jsem použil:

<?php
Nette\Diagnostics\Debugger::$bar->addPanel(...)
?>

a problém zmizel.

Teď se mi v debug baru objevuje vlaječka a načtou se mi všechny texty ve formuláři. Když ale udělám jakoukoliv úpravu a kliknu na Save, tak se mi objeví Unexpected error a vyskočí pop-up okno s chybou:

Fatal error: Call to a member function generateMetadata() on a non-object in C:\Dev\www1\libs\GettextTranslator\Gettext.php on line 314

což je řádek:

<?php
$metadata = $this->fileManager->generateMetadata($file, $this->metadata);
?>

Nevíte, kde by mohla být chyba? Děkuji za pomoc.

dada-amater
Bronze Partner | 52
+
0
-

Zkousel nekdo rozjet Gettext Extractor od Ondry? Mam na mysli predevsim makra v sablonach, i ta parova {_}Text{/_}. Me to v tech sablonach nefunguje.

Filip Procházka
Moderator | 4668
+
0
-

@dada-amater Pokud vím, tak Kdyby/Translation umí načítat gettext slovníky a zvládá i párová makra :)

voda
Člen | 561
+
0
-

@dada-amater: Párová makra jsem nikdy nepoužíval, takže v extractoru nejsou. Můžeš ale založit nové issue.

kralik
Člen | 230
+
0
-

Ahoj lidi,
mooc prosím o radu.
Zvolil jsem pro více jazyžný web komponentu LiveTranslator

Když to zkouším na lokálu tak přepínání jazyků bez problémů funguje.

Pokud ale web spustím na produkčním serveru tak přepínání jazyků nefunguje. Nedojde k žádné chybě a k přepnutí na jiný jazyk také ne.

Prostředí(lokál a produkční) je prakticky totožné, jak web server tak databáze, i když ta s tím nesouvisí.

Nevím zda je problém v nějaké konfiguraci na webserveru či v oprávněních s souboru s překladem nebo někde úplně jinde.

Nemáte s tím někdo zkušenosti?
Psal jsem na foru přímo LiveTranslatoru, ale nikdo se doposud neozval.

Předem moc díky

CZechBoY
Člen | 3608
+
0
-

A je problem development vs production mod nebo tvuj webserver vs produkcni server?

kralik
Člen | 230
+
0
-

Problém je v webserver vs. produkční server.
Nezáleží jestli se na produkčním serveru jedná o produkční nebo develop mod, v obou nelze na produkčním serveru přepnout jazyk.

Moc díky