Merged global resx into BlazingCoffee.Shared

This commit is contained in:
Ed Charbeneau 2020-07-22 14:35:04 -04:00
Родитель 3380bfd5f2
Коммит c6f2945035
15 изменённых файлов: 524 добавлений и 97 удалений

Просмотреть файл

@ -32,6 +32,7 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_AutoCreateNewLanguageFiles = False
SolutionGuid = {76189520-AA6D-4932-9B9C-908171584431}
EndGlobalSection
EndGlobal

Просмотреть файл

@ -30,10 +30,4 @@
<ProjectReference Include="..\Shared\BlazingCoffee.Shared.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\Pages\Index.resx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
</Project>

Просмотреть файл

@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace BlazingCoffee.Client
{
public class Global
{
}
}

Просмотреть файл

@ -1,39 +1,37 @@
@page "/"
@inject IStringLocalizer<Index> L
@inject IStringLocalizer<Global> G
@inject ITelerikStringLocalizer L
<div class="card-menu">
<Card Title="@L["Sales"]" ImageUrl="./img/Sales.jpg">
<CardContent>
<p>@L["Sales_Card_Title"]</p>
<p>@L["Index_SalesCard_Description"]</p>
</CardContent>
<ActionTemplate>
<span class="k-card-action"><a href="/sales" class="k-button k-flat k-primary">@L["Sales"]</a></span>
</ActionTemplate>
<FooterTemplate>
<span title="@G["Login_Required_ToolTip"]"><TelerikIcon Icon="@IconName.Lock" /></span>
<span title="@L["ToolTip_LoginRequired"]"><TelerikIcon Icon="@IconName.Lock" /></span>
</FooterTemplate>
</Card>
<Card Title="@G["Human_Capital"]" ImageUrl="./img/Schedule.jpg">
<Card Title="@L["HumanCapital"]" ImageUrl="./img/Schedule.jpg">
<CardContent>
<p>@L["HumanCapital_Card_Title"]</p>
<p>@L["Index_SalesCard_Description"]</p>
</CardContent>
<ActionTemplate>
<span class="k-card-action"><a href="/manage-employees" class="k-button k-flat k-primary">@G["Human_Capital"]</a></span>
<span class="k-card-action"><a href="/manage-employees" class="k-button k-flat k-primary">@L["HumanCapital"]</a></span>
</ActionTemplate>
<FooterTemplate>
<span title="@G["Login_Required_ToolTip"]"><TelerikIcon Icon="@IconName.Lock" /></span>
<span title="@L["ToolTip_LoginRequired"]"><TelerikIcon Icon="@IconName.Lock" /></span>
</FooterTemplate>
</Card>
<Card Title="@G["Manage_Products"]" ImageUrl="./img/coffee.jpg">
<Card Title="@L["ManageProducts"]" ImageUrl="./img/coffee.jpg">
<CardContent>
<p>@L["ManageProducts_Card_Title"]</p>
<p>@L["Index_ProductsCard_Description"]</p>
</CardContent>
<ActionTemplate>
<span class="k-card-action"><a href="/manage-products" class="k-button k-flat k-primary">@G["Manage_Products"]</a></span>
<span class="k-card-action"><a href="/manage-products" class="k-button k-flat k-primary">@L["ManageProducts"]</a></span>
</ActionTemplate>
<FooterTemplate>
<span title="@G["Login_Required_ToolTip"]"><TelerikIcon Icon="@IconName.Lock" /></span>
<span title="@L["ToolTip_LoginRequired"]"><TelerikIcon Icon="@IconName.Lock" /></span>
</FooterTemplate>
</Card>
<TelerikTooltip TargetSelector=".k-card-footer>span[title]" Position=@TooltipPosition.Top ShowOn="@TooltipShowEvent.Hover" />

Просмотреть файл

@ -9,6 +9,7 @@
@inject HttpClient Http
@inject NavigationManager NavigationManager
@inject IAccessTokenProvider accessTokenProvider
@inject ITelerikStringLocalizer L
<CardContainer Title="Manage Products">
<TelerikGrid Data="Products" Groupable="true" EditMode="GridEditMode.Popup"
@ -82,10 +83,10 @@
</EditorTemplate>
</GridColumn>
<GridCommandColumn>
<GridCommandButton Command="Edit" Icon="edit" Class="k-primary">Edit</GridCommandButton>
<GridCommandButton Command="Save" Icon="save" Class="k-primary" ShowInEdit="true">Update</GridCommandButton>
<GridCommandButton Command="Cancel" Icon="cancel" ShowInEdit="true">Cancel</GridCommandButton>
<GridCommandButton Command="Delete" Icon="delete" ShowInEdit="false">Delete</GridCommandButton>
<GridCommandButton Command="Edit" Icon="edit" Class="k-primary">@L["Grid_Edit"]</GridCommandButton>
<GridCommandButton Command="Save" Icon="save" Class="k-primary" ShowInEdit="true">@L["Grid_Update"]</GridCommandButton>
<GridCommandButton Command="Cancel" Icon="cancel" ShowInEdit="true">@L["Grid_Cancel"]</GridCommandButton>
<GridCommandButton Command="Delete" Icon="delete" ShowInEdit="false">@L["Grid_Delete"]</GridCommandButton>
</GridCommandColumn>
</GridColumns>
</TelerikGrid>

Просмотреть файл

@ -1,19 +1,14 @@
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
using System.Xml.Serialization;
using BlazingCoffee.Services;
using Telerik.Blazor.Services;
using BlazingCoffee.Shared.Localization;
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.JSInterop;
using System;
using System.Globalization;
using System.Net.Http;
using System.Threading.Tasks;
using Telerik.Blazor.Services;
namespace BlazingCoffee.Client
{
@ -23,20 +18,9 @@ namespace BlazingCoffee.Client
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTelerikBlazor();
builder.Services.AddHttpClient<PublicClient>(client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
builder.Services.AddHttpClient("BlazingCoffee.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
ConfigureServices(builder);
// Supply HttpClient instances that include access tokens when making requests to the server project
builder.Services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("BlazingCoffee.ServerAPI"));
builder.Services.AddApiAuthorization();
builder.Services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; });
// register a custom localizer for the Telerik components, after registering the Telerik services
builder.Services.AddSingleton(typeof(ITelerikStringLocalizer), typeof(TelerikLocalizer));
var host = builder.Build();
var jsInterop = host.Services.GetRequiredService<IJSRuntime>();
var result = await jsInterop.InvokeAsync<string>("blazorCulture.get");
@ -49,5 +33,22 @@ namespace BlazingCoffee.Client
await host.RunAsync();
}
private static void ConfigureServices(WebAssemblyHostBuilder builder)
{
builder.Services.AddTelerikBlazor();
builder.Services.AddHttpClient<PublicClient>(client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
builder.Services.AddHttpClient("BlazingCoffee.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
// Supply HttpClient instances that include access tokens when making requests to the server project
builder.Services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("BlazingCoffee.ServerAPI"));
builder.Services.AddApiAuthorization();
// register a custom localizer for the Telerik components, after registering the Telerik services
builder.Services.AddSingleton<ITelerikStringLocalizer, TelerikLocalizer>();
builder.Services.AddLocalization();
}
}
}

Просмотреть файл

@ -1,8 +1,11 @@
@namespace BlazingCoffee.Client.Shared
@inherits LayoutComponentBase
@inject NavigationManager navigationManger
@inject IStringLocalizer<Global> G
@using BlazingCoffee.Shared.Resources
@using BlazingCoffee.Client.Shared.NavMenu
@inject NavigationManager navigationManger
@inject ITelerikStringLocalizer L
<TelerikRootComponent>
<TelerikDrawer @bind-Expanded="@Expanded" Width="280px" Data="Data" Mode="DrawerMode.Push" Position="DrawerPosition.Left" MiniMode="true">
@ -65,19 +68,16 @@
new List<DrawerItem>
{
new DrawerItem{ Text = "Home", Icon = IconName.ArrowRoot, Url="/", Group = "app"},
new DrawerItem{ Text = G["Sales"], Icon = IconName.Dollar, Url="/sales", Group = "app"},
new DrawerItem{ Text = G["Human_Capital"], Icon = IconName.TellAFriend, Url="/manage-employees", Group = "app"},
new DrawerItem{ Text = G["Manage_Products"], Icon = IconName.Grid, Url="/manage-products", Group = "app"},
new DrawerItem{ Text = L["Sales"], Icon = IconName.Dollar, Url="/sales", Group = "app"},
new DrawerItem{ Text = L["HumanCapital"], Icon = IconName.TellAFriend, Url="/manage-employees", Group = "app"},
new DrawerItem{ Text = L["ManageProducts"], Icon = IconName.Grid, Url="/manage-products", Group = "app"},
new DrawerItem{ Text = "GitHub", Icon = IconName.Share, Url="https://github.com/telerik/blazing-coffee", Group = "ext"},
new DrawerItem{ Text = "Telerik", Icon = IconName.HyperlinkGlobe, Url="https://telerik.com", Group = "ext"},
new DrawerItem{ Text = "Documentation", Icon = IconName.Html, Url="https://docs.telerik.com/blazor-ui/introduction", Group = "ext"},
new DrawerItem{ Text = "Support", Icon = IconName.Question, Url="https://www.telerik.com/account/support-tickets", Group = "ext"}
};
};
string SelectedTheme = "auto";
IEnumerable<string> Themes => new List<string> { "auto" }; // TODO add manual settings, "light", "dark" };
string SelectedLanguage = "en";
IEnumerable<string> Languages => new List<string> { "en" }; // TODO add Globalization
}

Просмотреть файл

@ -1,19 +1,20 @@
@using System.Net.Http
@using System.Net.Http.Json
@using System.Collections.ObjectModel
@using Microsoft.JSInterop
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.JSInterop
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.AspNetCore.Authorization
@using Microsoft.Extensions.Localization
@using Telerik.DataSource
@using Telerik.Blazor
@using Telerik.Blazor.Components
@using Telerik.Blazor.Services
@using BlazingCoffee.Client
@using BlazingCoffee.Client.Shared
@using BlazingCoffee.Shared
@using BlazingCoffee.Shared.Models
@using Telerik.Blazor.Components
@using Telerik.DataSource
@using Telerik.Blazor
@using System.Collections.ObjectModel
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.WebAssembly.Authentication
@using Microsoft.Extensions.Localization
@using BlazingCoffee.Shared.Models

Просмотреть файл

@ -5,13 +5,19 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="3.1.6" />
<PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
<PackageReference Include="System.Text.Json" Version="4.7.1" />
<PackageReference Include="Telerik.UI.for.Blazor" Version="2.15.0" />
</ItemGroup>
<ItemGroup>
<Compile Update="Resources\TelerikMessages.designer.cs">
<Compile Update="Resources\Global.designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Global.resx</DependentUpon>
</Compile>
<Compile Update="Resources\TelerikMessages.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>TelerikMessages.resx</DependentUpon>
@ -19,6 +25,10 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\Global.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Global.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Resources\TelerikMessages.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>TelerikMessages.Designer.cs</LastGenOutput>

Просмотреть файл

@ -1,25 +1,28 @@
using BlazingCoffee.Shared.Resources;
using System;
using System.Collections.Generic;
using System.Text;
using Telerik.Blazor.Resources;
using Microsoft.Extensions.Localization;
using Telerik.Blazor.Services;
namespace BlazingCoffee.Shared.Localization
{
public class TelerikLocalizer : ITelerikStringLocalizer
{
public string this[string name]
private readonly IStringLocalizer<Global> globalLocalizer;
public TelerikLocalizer(IStringLocalizer<Global> globalLocalizer)
{
get
{
return GetStringFromResource(name);
}
this.globalLocalizer = globalLocalizer;
}
public string this[string name] => GetStringFromResource(name);
public string GetStringFromResource(string key)
{
return TelerikMessages.ResourceManager.GetString(key, TelerikMessages.Culture);
var localString = TelerikMessages.ResourceManager.GetString(key, TelerikMessages.Culture);
if (string.IsNullOrWhiteSpace(localString))
{
return globalLocalizer.GetString(key);
}
return localString;
}
}
}

126
BlazingCoffee/Shared/Resources/Global.Designer.cs сгенерированный Normal file
Просмотреть файл

@ -0,0 +1,126 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace BlazingCoffee.Shared.Resources {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Global {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Global() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BlazingCoffee.Shared.Resources.Global", typeof(Global).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Human Capital.
/// </summary>
public static string HumanCapital {
get {
return ResourceManager.GetString("HumanCapital", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Manage employees and teams..
/// </summary>
public static string Index_EmployeesCard_Description {
get {
return ResourceManager.GetString("Index_EmployeesCard_Description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Manage products and nutrition information..
/// </summary>
public static string Index_ProductsCard_Description {
get {
return ResourceManager.GetString("Index_ProductsCard_Description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Report on Sales over time..
/// </summary>
public static string Index_SalesCard_Description {
get {
return ResourceManager.GetString("Index_SalesCard_Description", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Manage Products.
/// </summary>
public static string ManageProducts {
get {
return ResourceManager.GetString("ManageProducts", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sales.
/// </summary>
public static string Sales {
get {
return ResourceManager.GetString("Sales", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Login required.
/// </summary>
public static string ToolTip_LoginRequired {
get {
return ResourceManager.GetString("ToolTip_LoginRequired", resourceCulture);
}
}
}
}

Просмотреть файл

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Sales" xml:space="preserve">
<value>Продажби</value>
</data>
<data name="HumanCapital" xml:space="preserve">
<value>човешки капитал</value>
</data>
<data name="Index_EmployeesCard_Description" xml:space="preserve">
<value>Управление на служители и екипи.</value>
</data>
<data name="Index_ProductsCard_Description" xml:space="preserve">
<value>Управлявайте информация за продуктите и хранителните стойности.</value>
</data>
<data name="Index_SalesCard_Description" xml:space="preserve">
<value>Отчет за продажбите във времето.</value>
</data>
<data name="ManageProducts" xml:space="preserve">
<value>Управление на продукти</value>
</data>
<data name="ToolTip_LoginRequired" xml:space="preserve">
<value>Изисква се вход</value>
</data>
</root>

Просмотреть файл

@ -117,13 +117,25 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HumanCapital_Card_Title" xml:space="preserve">
<value>Manage employees and teams.</value>
<data name="Sales" xml:space="preserve">
<value>Vertrieb</value>
</data>
<data name="ManageProducts_Card_Title" xml:space="preserve">
<value>Manage products and nutrition information.</value>
<data name="HumanCapital" xml:space="preserve">
<value>Humankapital</value>
</data>
<data name="Sales_Card_Title" xml:space="preserve">
<value>Report on Sales over time.</value>
<data name="Index_ProductsCard_Description" xml:space="preserve">
<value>Verwalten Sie Produkte und Nährwertangaben.</value>
</data>
<data name="Index_SalesCard_Description" xml:space="preserve">
<value>Umsatzbericht im Zeitverlauf.</value>
</data>
<data name="ManageProducts" xml:space="preserve">
<value>Produkte verwalten</value>
</data>
<data name="ToolTip_LoginRequired" xml:space="preserve">
<value>Anmeldung erforderlich</value>
</data>
<data name="Index_EmployeesCard_Description" xml:space="preserve">
<value>Verwalten Sie Mitarbeiter und Teams.</value>
</data>
</root>

Просмотреть файл

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Sales" xml:space="preserve">
<value>Ventas</value>
</data>
<data name="HumanCapital" xml:space="preserve">
<value>Capital Humano</value>
</data>
<data name="Index_EmployeesCard_Description" xml:space="preserve">
<value>Gestionar empleados y equipos.</value>
</data>
<data name="Index_ProductsCard_Description" xml:space="preserve">
<value>Gestionar productos e información nutricional.</value>
</data>
<data name="Index_SalesCard_Description" xml:space="preserve">
<value>Informe sobre ventas a lo largo del tiempo.</value>
</data>
<data name="ManageProducts" xml:space="preserve">
<value>Administrar productos</value>
</data>
<data name="ToolTip_LoginRequired" xml:space="preserve">
<value>Se requiere iniciar sesión</value>
</data>
</root>

Просмотреть файл

@ -117,16 +117,25 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Human_Capital" xml:space="preserve">
<data name="HumanCapital" xml:space="preserve">
<value>Human Capital</value>
</data>
<data name="Login_Required_ToolTip" xml:space="preserve">
<value>Login required.</value>
<data name="Index_EmployeesCard_Description" xml:space="preserve">
<value>Manage employees and teams.</value>
</data>
<data name="Manage_Products" xml:space="preserve">
<data name="Index_ProductsCard_Description" xml:space="preserve">
<value>Manage products and nutrition information.</value>
</data>
<data name="Index_SalesCard_Description" xml:space="preserve">
<value>Report on Sales over time.</value>
</data>
<data name="ManageProducts" xml:space="preserve">
<value>Manage Products</value>
</data>
<data name="Sales" xml:space="preserve">
<value>Sales</value>
</data>
<data name="ToolTip_LoginRequired" xml:space="preserve">
<value>Login required</value>
</data>
</root>