{"id":14965185,"url":"https://github.com/semack/tekdeq.localization","last_synced_at":"2025-04-12T02:41:23.407Z","repository":{"id":131654963,"uuid":"611449949","full_name":"semack/TekDeq.Localization","owner":"semack","description":"Localization library for .NET Core","archived":false,"fork":false,"pushed_at":"2023-03-10T23:40:27.000Z","size":152,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T21:17:23.621Z","etag":null,"topics":["avalonia","avalonia-ui","avaloniaui","avaloniui","json","localisation","localization","net","netcore"],"latest_commit_sha":null,"homepage":"https://github.com/semack/TekDeq.Localization","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-08T21:13:10.000Z","updated_at":"2024-09-24T02:23:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1b5c7a3-00c6-431e-8966-5041523716d2","html_url":"https://github.com/semack/TekDeq.Localization","commit_stats":{"total_commits":24,"total_committers":2,"mean_commits":12.0,"dds":0.25,"last_synced_commit":"c5c8486fb319f813ae82dafa61375ae117d27260"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semack%2FTekDeq.Localization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semack%2FTekDeq.Localization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semack%2FTekDeq.Localization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semack%2FTekDeq.Localization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semack","download_url":"https://codeload.github.com/semack/TekDeq.Localization/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248507468,"owners_count":21115607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","avalonia-ui","avaloniaui","avaloniui","json","localisation","localization","net","netcore"],"created_at":"2024-09-24T13:34:20.299Z","updated_at":"2025-04-12T02:41:23.388Z","avatar_url":"https://github.com/semack.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TekDeq.Localization [![Create and Publish Packages](https://github.com/semack/TekDeq.Localization/actions/workflows/dotnet.yml/badge.svg?branch=master)](https://github.com/semack/TekDeq.Localization/actions/workflows/dotnet.yml)\n\nYet another localization library with its own abstractions gives the possibility to \ncreate localization infrastructure with examples.  It contains basic Json Localization \nProvider implementation (other types will be added in the future).\n\n## Library\n### Installation\nBefore using the library, install following Nuget packages:\n\n| Name | Description | Version |\n|:-|:-|:-|\n| [TekDeq.Localization.Core](https://www.nuget.org/packages/TekDeq.Localization.Core/) | Core library | ![Nuget](https://badgen.net/nuget/v/TekDeq.Localization.Core) | \n| [TekDeq.Localization.DependencyInjection](https://www.nuget.org/packages/TekDeq.Localization.DependencyInjection/) | Microsoft DI extensions | ![Nuget](https://badgen.net/nuget/v/TekDeq.Localization.DependencyInjection) |\n| [TekDeq.Localization.Avalonia](https://www.nuget.org/packages/TekDeq.Localization.Avalonia/) | Avalonia Localization and Extensions | ![Nuget](https://badgen.net/nuget/v/TekDeq.Localization.Avalonia) |\n\n## Using the library\nTo create additional Localization Providers, please look at \n[ILocalizationProvider](https://github.com/semack/TekDeq.Localization/blob/master/TekDeq.Localization.Core/Providers/Interfaces/ILocalizationProvider.cs)\nand \n[LocalizationProviderBase](https://github.com/semack/TekDeq.Localization/blob/master/TekDeq.Localization.Core/Providers/Abstract/LocalizationProviderBase.cs)\nabstractions. As an example of usage please look at \n[JsonLocalizationProvider](https://github.com/semack/TekDeq.Localization/blob/master/TekDeq.Localization.Core/Providers/JsonLocalizationProvider.cs) \nand \n[AvaloniaJsonLocalizationProvider](https://github.com/semack/TekDeq.Localization/blob/master/TekDeq.Localization.Avalonia/Providers/AvaloniaJsonLocalizationProvider.cs)\nimplementation.\nIf you are using dependency injection in your project, an example of the usage could be found in \n[App.axaml.cs](https://github.com/semack/TekDeq.Localization/blob/master/Samples/TeqDeq.Avalonia.Sample/App.axaml.cs)\nof the demo project.\n\n```csharp\n    public override void OnFrameworkInitializationCompleted()\n    {\n        var host = Host.CreateDefaultBuilder()\n            .ConfigureServices((context, services) =\u003e\n            {\n                services.UseMicrosoftDependencyResolver();\n                // Initialize Splat\n                var resolver = Locator.CurrentMutable;\n                resolver.InitializeSplat();\n                resolver.InitializeReactiveUI();\n\n                // Register Views and ViewModels\n                services.AddTransient\u003cMainWindow\u003e();\n                services.AddTransient\u003cMainWindowViewModel\u003e();\n\n                // Register Localization\n                services.AddLocalization\u003cAvaloniaJsonLocalizationProvider\u003e(() =\u003e\n                {\n                    var options = new AvaloniaLocalizationOptions(\n                        // cultures support localization\n                        new List\u003cCultureInfo\u003e\n                        {\n                            new(\"en-US\"),\n                            new(\"uk-UA\")\n                        },\n                        // defaultCulture, it uses for setting if currentCulture is not in cultures list\n                        // and as fallback culture mor missing localization entries.\n                        new CultureInfo(\"en-US\"),\n                        // currentCulture sets when infrastructure loads,\n                        // could be received from app settings or so.\n                        Thread.CurrentThread.CurrentCulture,\n                        // path to assets with json files of localization.\n                        $\"{typeof(App).Namespace}/Assets/i18n\");\n                    return options;\n                });\n            }).Build();\n\n\n        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)\n        {\n            desktop.MainWindow = new MainWindow\n            {\n                DataContext = host.Services.GetRequiredService\u003cMainWindowViewModel\u003e()\n            };\n        }\n\n        base.OnFrameworkInitializationCompleted();\n    }\n```\nFor start using the markup localization in Avalonia by \n[Localize](https://github.com/semack/TekDeq.Localization/blob/master/TekDeq.Localization.Avalonia/Extensions/LocalizeExtension.cs) \nmarkup extension, it needs the namespace to be added to the markup.\n\n```xamlml\n\u003cWindow xmlns=\"https://github.com/avaloniaui\"\n...\n        xmlns:i18n=\"clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia\"\n...\n\u003e\n```\nAfter this it could be used for localization of UI\n```xamlml\n    \u003cStackPanel\n...\n        \u003cTextBlock Text=\"{i18n:Localize Greeting}\" /\u003e\n...\n    \u003c/StackPanel\u003e\n```\n\n## AvaloniaUI demo project\nThe [DEMO](https://github.com/semack/TekDeq.Localization/tree/master/Samples/TeqDeq.Avalonia.Sample)\nproject included to the repository, just open and run it in Visual Studio.\n\n## License\nThis project is licensed under the terms of the \n[MIT license](https://github.com/semack/TekDeq.Localization/blob/master/LICENSE.md).\n\n## Contribute\nContributions are welcome. Just open an Issue or submit a new [PR](https://github.com/semack/TekDeq.Localization/pulls). \n\n## Contact\nYou can reach me via my [email](mailto://semack@gmail.com).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemack%2Ftekdeq.localization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemack%2Ftekdeq.localization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemack%2Ftekdeq.localization/lists"}