From ad1607cd37713f39896b577135b2dc6c0e26c25d Mon Sep 17 00:00:00 2001 From: Xeevis Date: Thu, 16 Jan 2020 23:39:47 +0100 Subject: [PATCH] Update Czech translations --- docs/cs/CLI.md | 18 ++++ docs/cs/Entity-Framework-Core-PostgreSQL.md | 77 +++++------------- docs/cs/docs-nav.json | 59 +++++++++++--- docs/cs/images/docs-section-ui.png | Bin 0 -> 9624 bytes .../Volo/Abp/Emailing/Localization/cs.json | 24 ++++++ .../Resources/AbpLocalization/cs.json | 7 ++ .../Account/Localization/Resources/cs.json | 6 +- .../Volo/Docs/Localization/Domain/cs.json | 3 +- .../Volo/Abp/Identity/Localization/cs.json | 28 ++++++- 9 files changed, 150 insertions(+), 72 deletions(-) create mode 100644 docs/cs/images/docs-section-ui.png create mode 100644 framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/cs.json create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/cs.json diff --git a/docs/cs/CLI.md b/docs/cs/CLI.md index 2779ba64f3..7d2ab4c479 100644 --- a/docs/cs/CLI.md +++ b/docs/cs/CLI.md @@ -129,6 +129,24 @@ abp update [možnosti] * `--npm`: Aktualizuje pouze balíčky NPM. * `--nuget`: Aktualizuje pouze balíčky NuGet. +### login + +Některé funkce CLI vyžadují přihlášení k platformě abp.io. Chcete-li se přihlásit pomocí svého uživatelského jména, napište + +```bash +abp login +``` + +Všimněte si, že nové přihlášení s již aktivní relací ukončí předchozí relaci a vytvoří novou. + +### logout + +Odhlásí vás odebráním tokenu relace z počítače. + +``` +abp logout +``` + ### help Vypíše základní informace k používání CLI. diff --git a/docs/cs/Entity-Framework-Core-PostgreSQL.md b/docs/cs/Entity-Framework-Core-PostgreSQL.md index 9d4f685316..3a39c7485d 100644 --- a/docs/cs/Entity-Framework-Core-PostgreSQL.md +++ b/docs/cs/Entity-Framework-Core-PostgreSQL.md @@ -1,74 +1,39 @@ -## Entity Framework Core PostgreSQL integrace +# Přepnutí na EF Core PostgreSQL providera -> Podívejte se na [Entity Framework Core integrační dokument](../Entity-Framework-Core.md) pro základy integrace EF Core. +Tento dokument vysvětluje, jak přepnout na poskytovatele databáze **PostgreSQL** pro **[spouštěcí šablonu aplikace](Startup-Templates/Application.md)**, která je dodávána s předem nakonfigurovaným SQL poskytovatelem. -### Aktualizace projektu EntityFrameworkCore +## Výměna balíku Volo.Abp.EntityFrameworkCore.SqlServer -- V projektu `Acme.BookStore.EntityFrameworkCore` nahraďte balík `Volo.Abp.EntityFrameworkCore.SqlServer` za `Volo.Abp.EntityFrameworkCore.PostgreSql` -- Aktualizace pro použití PostgreSQL v `BookStoreEntityFrameworkCoreModule` - - Nahraďte `AbpEntityFrameworkCoreSqlServerModule` za `AbpEntityFrameworkCorePostgreSqlModule` - - Nahraďte `options.UseSqlServer()` za `options.UsePostgreSql()` -- V jiných projektech aktualizujte PostgreSQL connection string v nezbytných `appsettings.json` souborech - - Více informací v [PostgreSQL connection strings](https://www.connectionstrings.com/postgresql/), v tomto dokumentu věnujte pozornost sekci `Npgsql` +Projekt `.EntityFrameworkCore` v řešení závisí na NuGet balíku [Volo.Abp.EntityFrameworkCore.SqlServer](https://www.nuget.org/packages/Volo.Abp.EntityFrameworkCore.SqlServer). Odstraňte tento balík a přidejte stejnou verzi balíku [Volo.Abp.EntityFrameworkCore.PostgreSql](https://www.nuget.org/packages/Volo.Abp.EntityFrameworkCore.PostgreSql). -### Aktualizace projektu EntityFrameworkCore.DbMigrations -- Aktualizace pro použití PostgreSQL v `XXXMigrationsDbContextFactory` - - Nahraďte `new DbContextOptionsBuilder().UseSqlServer()` za `new DbContextOptionsBuilder().UseNpgsql()` +## Nahrazení závislosti modulu +Najděte třídu ***YourProjectName*EntityFrameworkCoreModule** v projektu `.EntityFrameworkCore`, odstraňte `typeof(AbpEntityFrameworkCoreSqlServerModule)` z atributu `DependsOn`, přidejte `typeof(AbpEntityFrameworkCorePostgreSqlModule)` (také nahraďte `using Volo.Abp.EntityFrameworkCore.SqlServer;` za `using Volo.Abp.EntityFrameworkCore.PostgreSql;`). -### Odstranění stávajících migrací +## UsePostgreSql() -Smažte všechny stavající migrační soubory (včetně `DbContextModelSnapshot`) +Najděte volání `UseSqlServer()` v *YourProjectName*EntityFrameworkCoreModule.cs uvnitř projektu `.EntityFrameworkCore` a nahraďte za `UsePostgreSql()`. -![postgresql-delete-initial-migrations](images/postgresql-delete-initial-migrations.png) +Najděte volání `UseSqlServer()` v *YourProjectName*MigrationsDbContextFactory.cs uvnitř projektu `.EntityFrameworkCore.DbMigrations` a nahraďte za `UseNpgsql()`. -### Znovu vygenerujte počáteční migraci +> V závislosti na struktuře řešení můžete najít více volání `UseSqlServer()`, které je třeba změnit. -Nastavte správný spouštěcí projekt (obvykle web projekt) +## Změna connection stringů -![set-as-startup-project](../images/set-as-startup-project.png) +PostgreSql connection stringy se od těch pro SQL Server liší. Je proto potřeba zkontrolovat všechny soubory `appsettings.json` v řešení a connection stringy v nich nahradit. Podívejte se na [connectionstrings.com](https://www.connectionstrings.com/postgresql/) pro více detailů o možnostech PostgreSql connection stringů. -Otevřete **Package Manager Console** (Tools -> Nuget Package Manager -> Package Manager Console), zvolte `.EntityFrameworkCore.DbMigrations` jako **Default project** a proveďte následující příkaz: +Typicky je potřeba změnit `appsettings.json` v projektech `.DbMigrator` a `.Web` projects, ale to záleží na vaší struktuře řešení. -Proveďte příkaz `Add-Migration`: -```` -PM> Add-Migration Initial -```` +## Regenerace migrací -### Aktualizace databáze +Startovací šablona používá [Entity Framework Core Code First migrace](https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/). EF Core migrace závisí na zvoleném DBMS poskytovateli. Tudíž změna DBMS poskytovatele způsobí selhání migrace. +* Smažte složku Migrations v projektu `.EntityFrameworkCore.DbMigrations` and znovu sestavte řešení. +* Spusťte `Add-Migration "Initial"` v Package Manager Console (je nutné zvolit `.DbMigrator` (nebo `.Web`) projekt jako startovací projekt v Solution Explorer a zvolit projekt `.EntityFrameworkCore.DbMigrations` jako výchozí v Package Manager Console). -K vytvoření databáze máte dvě možnosti. +Tímto vytvoříte migraci databáze se všemi nakonfigurovanými databázovými objekty (tabulkami). -#### Použití DbMigrator aplikace +Spusťte projekt `.DbMigrator` k vytvoření databáze a vložení počátečních dat. -Řešení obsahuje konzolovou aplikaci (v tomto příkladu nazvanou `Acme.BookStore.DbMigrator`), která může vytvářet databáze, aplikovat migrace a vkládat seed data. Je užitečná jak pro vývojové, tak pro produkční prostředí. +## Spuštění aplikace -> Projekt `.DbMigrator` má vlastní `appsettings.json`. Takže pokud jste změnili connection string uvedený výše, musíte změnit také tento. - -Klikněte pravým na projekt `.DbMigrator` a vyberte **Set as StartUp Project**: - -![set-as-startup-project](images/set-as-startup-project.png) - -Zmáčkněte F5 (nebo Ctrl+F5) ke spuštění aplikace. Výstup bude vypadat následovně: - -![set-as-startup-project](images/db-migrator-app.png) - -#### Použití EF Core Update-Database příkazu - -Ef Core má `Update-Database` příkaz, který v případě potřeby vytvoří databázi a aplikuje čekající migrace. - -Nastavte správný spouštěcí projekt (obvykle web projekt) - -![set-as-startup-project](../images/set-as-startup-project.png) - -Otevřete **Package Manager Console** (Tools -> Nuget Package Manager -> Package Manager Console), vyberte projekt `.EntityFrameworkCore.DbMigrations` jako **Default Project** and spusťte následující příkaz: - -```` -PM> Update-Database -```` - -Dojde k vytvoření nové databáze na základě nakonfigurovaného connection stringu. - -![postgresql-update-database](images/postgresql-update-database.png) - -> Použití nástroje `.DbMigrator` je doporučený způsob, jelikož zároveň vloží seed data nutné k správnému běhu webové aplikace. +Vše je připraveno. Stačí už jen spustit aplikaci a užívat si kódování. diff --git a/docs/cs/docs-nav.json b/docs/cs/docs-nav.json index 2854966a10..6c05d77dcf 100644 --- a/docs/cs/docs-nav.json +++ b/docs/cs/docs-nav.json @@ -60,6 +60,10 @@ "text": "Konfigurace", "path": "Configuration.md" }, + { + "text": "Možnosti", + "path": "Options.md" + }, { "text": "Vkládání závislostí", "path": "Dependency-Injection.md", @@ -83,7 +87,14 @@ "path": "Exception-Handling.md" }, { - "text": "Validace" + "text": "Validace", + "path": "Validation.md", + "items": [ + { + "text": "FluentValidation integrace", + "path": "FluentValidation.md" + } + ] }, { "text": "Autorizace", @@ -257,24 +268,46 @@ }, { "text": "Přístup k datům", + "path": "Data-Access.md", "items": [ { - "text": "Entity Framework Core integrace", - "path": "Entity-Framework-Core.md", + "text": "Connection stringy", + "path": "Connection-Strings.md" + }, + { + "text": "Poskytovatelé databází", "items": [ { - "text": "PostgreSQL integrace", - "path": "Entity-Framework-Core-PostgreSQL.md" + "text": "Entity Framework Core", + "path": "Entity-Framework-Core.md", + "items": [ + { + "text": "Přepnutí na MySQL", + "path": "Entity-Framework-Core-MySQL.md" + }, + { + "text": "Přepnutí na PostgreSQL", + "path": "Entity-Framework-Core-PostgreSQL.md" + }, + { + "text": "Přepnutí na SQLite", + "path": "Entity-Framework-Core-SQLite.md" + }, + { + "text": "Přepnutí na jiný DBMS", + "path": "Entity-Framework-Core-Other-DBMS.md" + } + ] + }, + { + "text": "MongoDB", + "path": "MongoDB.md" + }, + { + "text": "Dapper", + "path": "Dapper.md" } ] - }, - { - "text": "MongoDB integrace", - "path": "MongoDB.md" - }, - { - "text": "Dapper integrace", - "path": "Dapper.md" } ] }, diff --git a/docs/cs/images/docs-section-ui.png b/docs/cs/images/docs-section-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..7856454e5d0ad9723cadeff680477aa0fe9d87e8 GIT binary patch literal 9624 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