Nette 4.0 jaký doplněk na překlady je kompatibilní?

iru
Člen | 110
+
0
-

Zdravím a prosím o pomoc.

V původním starém webu jsem používala Kdyby/translation, po převodu na Nette3.2 už nefungovalo, nebylo kompatibilní. Tedy jsem přešla krátce po spuštění Nette 4.0 na tuto verzi, abych mohla zprovoznit překlady. Ale bohužel Kdyby/translation mi u této verze zase nefunguje, protože není kompatibilní. Našla jsem doporučení používat pro novější projekty Contribute/translation. Dobře, zkusila jsem, Composer mi opět hlásí neprovedenou instalaci:

 Problem 1
    - contributte/translation[dev-nette-2.4, 0.0.1, ..., v0.4.1] require php ^7.1 -> your php version (8.2.0) does not satisfy that requirement.
    - contributte/translation[dev-master, v2.0.3, ..., 2.0.x-dev] require nette/routing ^3.0 -> found nette/routing[v3.0.0, ..., v3.0.x-dev] but the package is fixed to 4.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
    - contributte/translation[v0.4.2, ..., v0.9.3] require latte/latte ^2.5 -> found latte/latte[v2.5.0, ..., v2.11.x-dev] but it conflicts with your root composer.json require (^3.0).
    - contributte/translation v0.5.0 requires php ^7.2.9 -> your php version (8.2.0) does not satisfy that requirement.
    - contributte/translation[v0.6.0, ..., v0.7.1] require php ^7.1.3 -> your php version (8.2.0) does not satisfy that requirement.
    - contributte/translation[dev-php74_symfony5, v0.9.4, v1.0.0, ..., v1.1.0] require latte/latte ^2.6 -> found latte/latte[v2.6.0, ..., v2.11.x-dev] but it conflicts with your root composer.json require (^3.0).
    - contributte/translation v2.0.0 requires nette/http ^3.0 -> found nette/http[v3.0.0, ..., v3.2.x-dev] but it conflicts with your root composer.json require (^4.0).
    - contributte/translation[v2.0.1, ..., v2.0.2] require nette/http ^3.0.7 -> found nette/http[v3.0.7, ..., v3.2.x-dev] but it conflicts with your root composer.json require (^4.0).
    - contributte/translation 2.0.x-dev is an alias of contributte/translation dev-master and thus requires it to be installed too.
    - Root composer.json requires contributte/translation * -> satisfiable by contributte/translation[dev-master, dev-nette-2.4, dev-php74_symfony5, 0.0.1, ..., v0.9.4, v1.0.0, ..., v1.1.0, v2.0.0, ..., 2.0.x-dev (alias of dev-master)].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require contributte/translation:*" to figure out if any version is installable, or "composer require contributte/translation:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Prosím co používáte na překlady s Nette 4.0?

můj composer.json:

"name": "nette/web-project",
	"description": "Nette: Standard Web Project",
	"keywords": ["nette"],
	"type": "project",
	"license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
	"require": {
		"php": ">= 8.0",
		"nette/application": "^4.0",
		"nette/bootstrap": "^3.2 || ^4.0",
		"nette/caching": "^3.2 || ^4.0",
		"nette/database": "^4.0",
		"nette/di": "^3.2 || ^4.0",
		"nette/forms": "^4.0",
		"nette/http": "^4.0",
		"nette/mail": "^4.0",
		"nette/php-generator": "^4.0",
		"nette/robot-loader": "^4.0",
		"nette/safe-stream": "^3.0",
		"nette/security": "^4.0",
		"nette/utils": "^4.0",
		"latte/latte": "^3.0",
		"tracy/tracy": "^2.10 || ^3.0"

	},
	"require-dev": {
		"nette/tester": "^2.0"
	},
	"autoload": {
		"psr-4": {
			"App\\": "app/"
		}
	},
	"minimum-stability": "dev"
}

Díky za vaše doporučení. PHP na serveru mám 8.2

nightfish
Člen | 483
+
0
-

@iru V composer.json změň "nette/http": "^4.0" na "nette/http": "^3.0" a zkus contributte/translation nainstalovat znovu – na první pohled mi to přijde jako jediná kolidující verze.
A zkus při composer require uvést i konkrétní verzi, trošku to zpřehlední chybové hlášky, protože se composer nebude pokoušet nainstalovat několik let starou verzi: composer require contributte/translation:^2.

iru
Člen | 110
+
0
-

nightfish napsal(a):

@iru V composer.json změň "nette/http": "^4.0" na "nette/http": "^3.0" a zkus contributte/translation nainstalovat znovu – na první pohled mi to přijde jako jediná kolidující verze.
A zkus při composer require uvést i konkrétní verzi, trošku to zpřehlední chybové hlášky, protože se composer nebude pokoušet nainstalovat několik let starou verzi: composer require contributte/translation:^2.

Díky za nápad, tak jsem to zkusila, ale zase tohle:

The "2" constraint for "contributte/translation" appears too strict and will likely not match what you want. See https://getcomposer.org/constraints
./composer.json has been updated
Running composer update contributte/translation
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires nette/http ^3.0, found nette/http[v3.0.0, ..., v3.2.x-dev] but the package is fixed to 4.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
  Problem 2
    - Root composer.json requires contributte/translation 2 -> satisfiable by contributte/translation[v2.0.0].
    - contributte/translation v2.0.0 requires nette/http ^3.0 -> found nette/http[v3.0.0, ..., v3.2.x-dev] but the package is fixed to 4.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Zkusila jsem „composer update“ s tou úpravou na „nette/http“: „^3.0“,

Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - nette/application dev-master requires nette/http ^4.0 -> found nette/http[dev-master, 4.0.x-dev (alias of dev-master)] but it conflicts with your root composer.json require (^3.0).
    - nette/application 4.0.x-dev is an alias of nette/application dev-master and thus requires it to be installed too.
    - Root composer.json requires nette/application ^4.0 -> satisfiable by nette/application[4.0.x-dev (alias of dev-master)].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

Už jsem z toho docela nešťastná, protože kvůli překladům jsem nechala přeinstalovat celý server, aby měl PHP 8.2 a já mohla používat Nette4.0, kde jsem doufala, že když budu mít aktuální aplikaci, že to už bude fungovat a místo toho nevím stále co s tím…

Editoval iru (20. 11. 2023 19:08)

nightfish
Člen | 483
+
+1
-

@iru
Vyzkoušel jsem u sebe. Stav je takový, že většina těch balíčků ještě nemá vydané verze „4“ – kvůli "minimum-stability": "dev" se však nainstalují i vývojové verze balíčků, které nejsou kompatibilní s contributte/translation.

Když upravím composer.json na:

{
    "name": "nette/web-project",
    "description": "Nette: Standard Web Project",
    "keywords": ["nette"],
    "type": "project",
    "license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
    "require": {
        "php": ">= 8.0",
        "latte/latte": "^3.0",
        "nette/application": "^3.1",
        "nette/bootstrap": "^3.2",
        "nette/caching": "^3.2 || ^4.0",
        "nette/database": "^3",
        "nette/di": "^3.1",
        "nette/forms": "^3",
        "nette/http": "^3",
        "nette/mail": "^4.0",
        "nette/php-generator": "^4.0",
        "nette/robot-loader": "^4.0",
        "nette/safe-stream": "^3.0",
        "nette/security": "^3",
        "nette/utils": "^4.0",
        "tracy/tracy": "^2.10 || ^3.0"
    },
    "require-dev": {
        "nette/tester": "^2.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

(odstraněna minimum-stability, protože používání této konfigurace imho není vůbec dobrý nápad; verze nette balíčků sníženy na poslední vydané stable verze)
a zavolám composer update, tak mi pak následně jde zavolat composer require contributte/translation:^2 a balíček se v pořádku nainstaluje.

iru
Člen | 110
+
0
-

nightfish napsal(a):

@iru
Vyzkoušel jsem u sebe. Stav je takový, že většina těch balíčků ještě nemá vydané verze „4“ – kvůli "minimum-stability": "dev" se však nainstalují i vývojové verze balíčků, které nejsou kompatibilní s contributte/translation.

Když upravím composer.json na:

{
    "name": "nette/web-project",
    "description": "Nette: Standard Web Project",
    "keywords": ["nette"],
    "type": "project",
    "license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
    "require": {
        "php": ">= 8.0",
        "latte/latte": "^3.0",
        "nette/application": "^3.1",
        "nette/bootstrap": "^3.2",
        "nette/caching": "^3.2 || ^4.0",
        "nette/database": "^3",
        "nette/di": "^3.1",
        "nette/forms": "^3",
        "nette/http": "^3",
        "nette/mail": "^4.0",
        "nette/php-generator": "^4.0",
        "nette/robot-loader": "^4.0",
        "nette/safe-stream": "^3.0",
        "nette/security": "^3",
        "nette/utils": "^4.0",
        "tracy/tracy": "^2.10 || ^3.0"
    },
    "require-dev": {
        "nette/tester": "^2.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

(odstraněna minimum-stability, protože používání této konfigurace imho není vůbec dobrý nápad; verze nette balíčků sníženy na poslední vydané stable verze)
a zavolám composer update, tak mi pak následně jde zavolat composer require contributte/translation:^2 a balíček se v pořádku nainstaluje.

Moc děkuji za tvoji ochotu. Zkopírovala jsem tvoje sestavení a dala „composer update“

Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 20 updates, 0 removals
  - Downgrading latte/latte (dev-master 3e0a15a => v3.0.12)
  - Downgrading nette/application (dev-master 08a3723 => v3.1.14)
  - Downgrading nette/bootstrap (dev-master 0fd3637 => v3.2.1)
  - Downgrading nette/caching (dev-master 31a50f4 => v3.2.3)
  - Downgrading nette/component-model (dev-master 0b091e3 => v3.0.3)
  - Downgrading nette/database (dev-master 7899cbc => v3.1.9)
  - Downgrading nette/di (v3.2.x-dev c9ead27 => v3.1.8)
  - Locking nette/finder (v3.0.0)
  - Downgrading nette/forms (dev-master 82706a0 => v3.1.14)
  - Downgrading nette/http (dev-master a20fb8f => v3.2.3)
  - Downgrading nette/mail (dev-master 34639bf => v4.0.2)
  - Downgrading nette/neon (dev-master 0da28e1 => v3.4.1)
  - Downgrading nette/php-generator (dev-master 561dc1a => v4.1.2)
  - Downgrading nette/robot-loader (dev-master 3ccc6fd => v4.0.1)
  - Downgrading nette/routing (dev-master 859bcbe => v3.0.5)
  - Downgrading nette/safe-stream (dev-master b9a275f => v3.0.0)
  - Downgrading nette/schema (v1.2.x-dev 22f7675 => v1.2.5)
  - Downgrading nette/security (dev-master 40afa82 => v3.1.8)
  - Downgrading nette/tester (dev-master c5eff68 => v2.5.1)
  - Downgrading nette/utils (dev-master c99f377 => v4.0.3)
  - Downgrading tracy/tracy (dev-master aab82d5 => v2.10.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 20 updates, 0 removals
  - Downloading latte/latte (v3.0.12)
  - Downloading nette/utils (v4.0.3)
  - Downloading nette/http (v3.2.3)
  - Downloading nette/routing (v3.0.5)
  - Downloading nette/application (v3.1.14)
  - Downloading nette/schema (v1.2.5)
  - Downloading nette/robot-loader (v4.0.1)
  - Downloading nette/php-generator (v4.1.2)
  - Downloading nette/neon (v3.4.1)
  - Downloading nette/di (v3.1.8)
  - Downloading nette/bootstrap (v3.2.1)
  - Downloading nette/caching (v3.2.3)
  - Downloading nette/database (v3.1.9)
  - Downloading nette/forms (v3.1.14)
  - Downloading nette/mail (v4.0.2)
  - Downloading nette/safe-stream (v3.0.0)
  - Downloading nette/security (v3.1.8)
  - Downloading nette/tester (v2.5.1)
  - Downloading tracy/tracy (v2.10.5)
  - Downgrading latte/latte (dev-master 3e0a15a => v3.0.12): Extracting archive
  - Downgrading nette/utils (dev-master c99f377 => v4.0.3): Extracting archive
  - Downgrading nette/http (dev-master a20fb8f => v3.2.3): Extracting archive
  - Downgrading nette/routing (dev-master 859bcbe => v3.0.5): Extracting archive
  - Downgrading nette/component-model (dev-master 0b091e3 => v3.0.3): Extracting archive
  - Downgrading nette/application (dev-master 08a3723 => v3.1.14): Extracting archive
  - Downgrading nette/schema (v1.2.x-dev 22f7675 => v1.2.5): Extracting archive
  - Downgrading nette/robot-loader (dev-master 3ccc6fd => v4.0.1): Extracting archive
  - Downgrading nette/php-generator (dev-master 561dc1a => v4.1.2): Extracting archive
  - Downgrading nette/neon (dev-master 0da28e1 => v3.4.1): Extracting archive
  - Downgrading nette/di (v3.2.x-dev c9ead27 => v3.1.8): Extracting archive
  - Downgrading nette/bootstrap (dev-master 0fd3637 => v3.2.1): Extracting archive
  - Installing nette/finder (v3.0.0): Extracting archive
  - Downgrading nette/caching (dev-master 31a50f4 => v3.2.3): Extracting archive
  - Downgrading nette/database (dev-master 7899cbc => v3.1.9): Extracting archive
  - Downgrading nette/forms (dev-master 82706a0 => v3.1.14): Extracting archive
  - Downgrading nette/mail (dev-master 34639bf => v4.0.2): Extracting archive
  - Downgrading nette/safe-stream (dev-master b9a275f => v3.0.0): Extracting archive
  - Downgrading nette/security (dev-master 40afa82 => v3.1.8): Extracting archive
  - Downgrading nette/tester (dev-master c5eff68 => v2.5.1): Extracting archive
  - Downgrading tracy/tracy (dev-master aab82d5 => v2.10.5): Extracting archive
Generating autoload files
No security vulnerability advisories found

Vyzkoušela aplikaci po tomto kroku, zdálo se vše v pořádku. Následně jsem zadala: „composer require contributte/translation:^2“

The "2" constraint for "contributte/translation" appears too strict and will likely not match what you want. See https://getcomposer.org/constraints
./composer.json has been updated
Running composer update contributte/translation
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires contributte/translation 2 -> satisfiable by contributte/translation[v2.0.0].
    - contributte/translation v2.0.0 requires nette/finder ^2.5.2 -> found nette/finder[v2.5.2, v2.5.3, v2.5.4, v2.6.0] but the package is fixed to v3.0.0 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.
Pavel Kravčík
Člen | 1186
+
+1
-

minimum-stability, protože používání této konfigurace imho není vůbec dobrý nápad; verze nette balíčků sníženy na poslední vydané stable verze.

Dovolím si lehce nesouhlasit. V případně, pokud chceš přecházet na nejnovější verze „rychle“ není to úplně špatný nápad. Ale je dobré přidat prefer-stable.

minimum-stability: "dev"
prefer-stable: true
...
nette/di: "^3"
nette/forms: "^3"
some/translation: "master-dev"

A v composeru si vypsat konkrétní vývojové větve, které chceš. Zbytek nechat stabilní. Takhle si vybereš jen konkrétní větve, které chceš a které máš otestované. Poskytne to o trochu větší kontrolu.

nightfish
Člen | 483
+
+3
-

@iru Mám pocit, že jsi místo composer require contributte/translation:^2 napsala composer require contributte/translation:2, takže jsi po Composeru chtěla nainstalovat verzi 2(.0.0), která však není kompatibilní s „novým“ nette/finder balíčkem. Správný zápis verze je ^2, který je v tomto případě ve významu >=2.0.0 <3.0.0 a dovolí nainstalovat verzi 2.0.3, která je kompatibilní i s nette/finder 3.0.0. Jinak s vypnutým minimum-stability: dev by nemusel být problém nechat composer, aby zjistil použitelnou verzi balíčku: composer require contributte/translation (bez uvedení verze, mělo by taktéž nainstalovat 2.0.3).

@PavelKravčík Máš pravdu, že s prefer-stable: true je minimum-stability: dev použitelnější, nicméně pro úroveň znalosti Composeru, kterou v tomto vlákně řešíme, mi to přijde jako zbytná komplikace a zdroj problémů.

iru
Člen | 110
+
0
-

Pavel Kravčík napsal(a):

minimum-stability, protože používání této konfigurace imho není vůbec dobrý nápad; verze nette balíčků sníženy na poslední vydané stable verze.

Dovolím si lehce nesouhlasit. V případně, pokud chceš přecházet na nejnovější verze „rychle“ není to úplně špatný nápad. Ale je dobré přidat prefer-stable.

minimum-stability: "dev"
prefer-stable: true
...
nette/di: "^3"
nette/forms: "^3"
some/translation: "master-dev"

A v composeru si vypsat konkrétní vývojové větve, které chceš. Zbytek nechat stabilní. Takhle si vybereš jen konkrétní větve, které chceš a které máš otestované. Poskytne to o trochu větší kontrolu.

Já jsem tam to minimum-stability měla, ale nejsem schopna ani v jednom případě nainstalovat contribute/translation, případně něco jiného než contribute/translation, potřebuji hlavně web ve více jazycích. Já myslím, že vícejazyčný web není zase taková výjimka, že už to někdo snad řešil pro Nette 4…

iru
Člen | 110
+
0
-

nightfish napsal(a):

@iru Mám pocit, že jsi místo composer require contributte/translation:^2 napsala composer require contributte/translation:2, takže jsi po Composeru chtěla nainstalovat verzi 2(.0.0), která však není kompatibilní s „novým“ nette/finder balíčkem. Správný zápis verze je ^2, který je v tomto případě ve významu >=2.0.0 <3.0.0 a dovolí nainstalovat verzi 2.0.3, která je kompatibilní i s nette/finder 3.0.0. Jinak s vypnutým minimum-stability: dev by nemusel být problém nechat composer, aby zjistil použitelnou verzi balíčku: composer require contributte/translation (bez uvedení verze, mělo by taktéž nainstalovat 2.0.3).

@PavelKravčík Máš pravdu, že s prefer-stable: true je minimum-stability: dev použitelnější, nicméně pro úroveň znalosti Composeru, kterou v tomto vlákně řešíme, mi to přijde jako zbytná komplikace a zdroj problémů.

Měla jsem tam opravdu „composer require contributte/translation:^2“ kopíruji přes schránku z konzole…

Ale zkusila jsem i tvůj další návrh „composer require contributte/translation“ bez uvedení verze a to vypadá, že konečně prošlo :-)

C:\Users\............................>composer require contributte/translation
./composer.json has been updated
Running composer update contributte/translation
Loading composer repositories with package information
Updating dependencies
Lock file operations: 8 installs, 0 updates, 0 removals
  - Locking contributte/translation (v2.0.3)
  - Locking symfony/config (v6.3.8)
  - Locking symfony/deprecation-contracts (v3.4.0)
  - Locking symfony/filesystem (v6.3.1)
  - Locking symfony/polyfill-ctype (v1.28.0)
  - Locking symfony/polyfill-mbstring (v1.28.0)
  - Locking symfony/translation (v6.3.7)
  - Locking symfony/translation-contracts (v3.4.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 8 installs, 0 updates, 0 removals
  - Downloading symfony/translation-contracts (v3.4.0)
  - Downloading symfony/deprecation-contracts (v3.4.0)
  - Downloading symfony/translation (v6.3.7)
  - Downloading symfony/filesystem (v6.3.1)
  - Downloading symfony/config (v6.3.8)
  - Downloading contributte/translation (v2.0.3)
  - Installing symfony/translation-contracts (v3.4.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.28.0): Extracting archive
  - Installing symfony/deprecation-contracts (v3.4.0): Extracting archive
  - Installing symfony/translation (v6.3.7): Extracting archive
  - Installing symfony/polyfill-ctype (v1.28.0): Extracting archive
  - Installing symfony/filesystem (v6.3.1): Extracting archive
  - Installing symfony/config (v6.3.8): Extracting archive
  - Installing contributte/translation (v2.0.3): Extracting archive
Generating autoload files
8 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
Using version ^2.0 for contributte/translation

Editoval iru (21. 11. 2023 7:31)

nightfish
Člen | 483
+
+3
-

iru napsal(a):
Měla jsem tam opravdu „composer require contributte/translation:^2“ kopíruji přes schránku z konzole…

Composer ti vypsal upozornění The "2" constraint for "contributte/translation" appears too strict and will likely not match what you want., takže se do něj dostala jenom dvojka. Nicméně podle tvého posledního příspěvku to vypadá, že používáš Windows, takže je možné všechno – včetně toho, že PowerShell z ^2 udělá 2 (což je nahlášeno jako chyba Composeru, ovšem z pohledu composeru je to neopravitelné, protože se o ^ nemá jak dozvědět).

Můžeš si vyzkoušet řešení v podobě composer require contributte/translation:^^^^2, to by údajně mělo na Windows fungovat.

iru
Člen | 110
+
+2
-

nightfish napsal(a):

iru napsal(a):
Měla jsem tam opravdu „composer require contributte/translation:^2“ kopíruji přes schránku z konzole…

Composer ti vypsal upozornění The "2" constraint for "contributte/translation" appears too strict and will likely not match what you want., takže se do něj dostala jenom dvojka. Nicméně podle tvého posledního příspěvku to vypadá, že používáš Windows, takže je možné všechno – včetně toho, že PowerShell z ^2 udělá 2 (což je nahlášeno jako chyba Composeru, ovšem z pohledu composeru je to neopravitelné, protože se o ^ nemá jak dozvědět).

Můžeš si vyzkoušet řešení v podobě composer require contributte/translation:^^^^2, to by údajně mělo na Windows fungovat.

Ano máš pravdu, používám windows, to bude tím. Potvrzuji, že tvoje řešení pro windows funguje, právě jsem to pro zajímavost vyzkoušela. A třeba to tu pomůže ještě někomu dalšímu v budoucnu. Ještě jednou velké díky!