Compare commits

...

5 Commits

Author SHA1 Message Date
5917e79635 Fix letters 'q' and 'z' not being in the dictionary
Enfore that all one-grams are present in the dictionary to make sure
it's possible to write any sentence
2025-05-17 00:25:51 +02:00
623888851b Remove Test project 2025-05-16 23:37:59 +02:00
b036cddb07 Add Web UI page title 2025-05-16 23:14:13 +02:00
1b0cfa58be Fix Web UI clear button 2025-05-16 23:10:17 +02:00
218389ae06 Add translator web ui 2025-05-16 22:53:32 +02:00
20 changed files with 773 additions and 357 deletions

View File

@@ -56,7 +56,7 @@ Console.WriteLine("Computing ngrams");
var ngrams = new Dictionary<string, long>(); var ngrams = new Dictionary<string, long>();
const int MaxLength = 8; const int MaxLength = 8;
const int MinLength = 1; const int MinLength = 2;
foreach (var (word, frequency) in wordFrequencies) foreach (var (word, frequency) in wordFrequencies)
{ {
@@ -112,9 +112,15 @@ Console.WriteLine("Generating dictionary...");
var dictionary = new Dictionary<string, string>(); var dictionary = new Dictionary<string, string>();
var ngramIndex = 0; var ngramIndex = 0;
// Prepend base letters to make sure all words are writeable
string[] oneGrams = [
" ", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
];
var fullNgrams = oneGrams.Concat(orderedNgrams.Select(p => p.Key)).ToArray();
foreach (var letter in Alphabet.BaseAlphabet) foreach (var letter in Alphabet.BaseAlphabet)
{ {
dictionary[letter] = orderedNgrams[ngramIndex].Key; dictionary[letter] = fullNgrams[ngramIndex];
ngramIndex++; ngramIndex++;
} }

View File

@@ -1,25 +0,0 @@
// See https://aka.ms/new-console-template for more information
using System.Text;
using PoyoLang.Translator;
Console.OutputEncoding = Encoding.UTF8;
var text = "Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a location, it could come from a parsed string, text from a tool editor buffer, etc.";
Console.WriteLine("Original:");
Console.WriteLine(text);
Console.WriteLine();
var translator = new PoyoLangTranslator();
var translated = translator.TranslateToPoyo(text);
Console.WriteLine("Translated to Poyo:");
Console.WriteLine(translated);
Console.WriteLine();
var original = translator.TranslateFromPoyo(translated);
Console.WriteLine("Translated back from Poyo:");
Console.WriteLine(original);

View File

@@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<base href="/"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"/>
<link href=@Assets["_content/MudBlazor/MudBlazor.min.css"] rel="stylesheet"/>
<ImportMap/>
<link rel="icon" type="image/ico" href="favicon.ico"/>
<HeadOutlet @rendermode="InteractiveServer"/>
</head>
<body>
<Routes @rendermode="InteractiveServer"/>
<script src="_framework/blazor.web.js"></script>
<script src=@Assets["_content/MudBlazor/MudBlazor.min.js"]></script>
</body>
</html>

View File

@@ -0,0 +1,101 @@
@inherits LayoutComponentBase
<MudThemeProvider Theme="@_theme" IsDarkMode="_isDarkMode"/>
<MudPopoverProvider/>
<MudDialogProvider/>
<MudSnackbarProvider/>
<MudLayout>
<MudAppBar Elevation="1">
<MudText Typo="Typo.h5" Class="ml-3">PoyoLang</MudText>
<MudSpacer />
<MudIconButton Icon="@(DarkLightModeButtonIcon)" Color="Color.Inherit" OnClick="@DarkModeToggle" />
<MudIconButton Icon="@Icons.Custom.Brands.GitHub" Color="Color.Inherit" Edge="Edge.End"
Href="https://git.ilysix.fr/Eveldee/PoyoLang" Target="_blank" />
</MudAppBar>
<MudMainContent Class="pt-16 pa-4">
<MudContainer MaxWidth="MaxWidth.Large">
@Body
</MudContainer>
</MudMainContent>
</MudLayout>
<div id="blazor-error-ui" data-nosnippet>
An unhandled error has occurred.
<a href="." class="reload">Reload</a>
<span class="dismiss">🗙</span>
</div>
@code {
private bool _drawerOpen = true;
private bool _isDarkMode = true;
private MudTheme? _theme = null;
protected override void OnInitialized()
{
base.OnInitialized();
_theme = new()
{
PaletteLight = _lightPalette,
PaletteDark = _darkPalette,
LayoutProperties = new LayoutProperties()
};
}
private void DrawerToggle()
{
_drawerOpen = !_drawerOpen;
}
private void DarkModeToggle()
{
_isDarkMode = !_isDarkMode;
}
private readonly PaletteLight _lightPalette = new()
{
Black = "#110e2d",
AppbarText = "#424242",
AppbarBackground = "rgba(255,255,255,0.8)",
DrawerBackground = "#ffffff",
GrayLight = "#e8e8e8",
GrayLighter = "#f9f9f9",
};
private readonly PaletteDark _darkPalette = new()
{
Primary = "#7e6fff",
Surface = "#1e1e2d",
Background = "#1a1a27",
BackgroundGray = "#151521",
AppbarText = "#92929f",
AppbarBackground = "rgba(26,26,39,0.8)",
DrawerBackground = "#1a1a27",
ActionDefault = "#74718e",
ActionDisabled = "#9999994d",
ActionDisabledBackground = "#605f6d4d",
TextPrimary = "#b2b0bf",
TextSecondary = "#92929f",
TextDisabled = "#ffffff33",
DrawerIcon = "#92929f",
DrawerText = "#92929f",
GrayLight = "#2a2833",
GrayLighter = "#1e1e2d",
Info = "#4a86ff",
Success = "#3dcb6c",
Warning = "#ffb545",
Error = "#ff3f5f",
LinesDefault = "#33323e",
TableLines = "#33323e",
Divider = "#292838",
OverlayLight = "#1e1e2d80",
};
public string DarkLightModeButtonIcon => _isDarkMode switch
{
true => Icons.Material.Rounded.AutoMode,
false => Icons.Material.Outlined.DarkMode,
};
}

View File

@@ -0,0 +1,19 @@
@page "/counter"
<PageTitle>Counter</PageTitle>
<MudText Typo="Typo.h3" GutterBottom="true">Counter</MudText>
<MudText Typo="Typo.body1" Class="mb-4">Current count: @currentCount</MudText>
<MudButton Color="Color.Primary" Variant="Variant.Filled" @onclick="IncrementCount">Click me</MudButton>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}

View File

@@ -0,0 +1,38 @@
@page "/Error"
@using System.Diagnostics
<PageTitle>Error</PageTitle>
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@code{
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
private string? RequestId { get; set; }
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
protected override void OnInitialized() =>
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
}

View File

@@ -0,0 +1,146 @@
@page "/"
@using PoyoLang.Translator
@inject PoyoLangTranslator Translator
@inject IJSRuntime JsRuntime
@inject ISnackbar Snackbar
<PageTitle>PoyoLang Translator</PageTitle>
<MudText Typo="Typo.h3" GutterBottom="true" Class="mt-5">PoyoLang Translator</MudText>
<MudText Class="mb-5">Using this website you can freely translate from and to the Poyo language.
This language only use variations of the word "poyo" (320 of them!) to write sentences using the latin alphabet.
If you want more information about how this language works and how it is possible to translate to and from it,
check out the <MudLink href="https://git.ilysix.fr/Eveldee/PoyoLang" Target="_blank">source code</MudLink> of this whole project.</MudText>
<MudToggleGroup T="string" @bind-Value="_sourceLanguage" @bind-Value:after="SourceLanguageUpdated"
SelectionMode="SelectionMode.SingleSelection" Color="Color.Primary" CheckMark="true" FixedContent="true"
Class="mb-1" Style="max-width: 30em;">
<MudToggleItem Value="EnglishSourceLanguage" Text="English" />
<MudToggleItem Value="PoyoSourceLanguage" Text="Poyo" />
</MudToggleGroup>
@* Wide screen display *@
<MudHidden Breakpoint="Breakpoint.MdAndUp" Invert="true">
<MudStack Row="true" StretchItems="StretchItems.StartAndEnd" Class=".d-none .d-md-flex">
<MudStack>
<MudTextField @bind-Value="_sourceText" @bind-Value:after="UpdateTranslatedText" DebounceInterval="500"
Variant="Variant.Outlined" Label="Source text" Lines="15" />
</MudStack>
<MudStack Spacing="1" Row="false">
<MudTooltip Text="Swap languages">
<MudIconButton Icon="@Icons.Material.Filled.SwapHoriz" Color="Color.Primary" OnClick="SwapArrowClicked"/>
</MudTooltip>
<MudTooltip Text="Copy translation result">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Color="Color.Primary" OnClick="CopyResultClicked"/>
</MudTooltip>
<MudTooltip Text="Clear source text">
<MudIconButton Icon="@Icons.Material.Filled.Clear" Color="Color.Error" OnClick="ClearButtonClicked"/>
</MudTooltip>
</MudStack>
<MudStack>
<MudTextField @bind-Value="_translatedText" ReadOnly="true"
Variant="Variant.Outlined" Label="Translation result" Lines="15" />
</MudStack>
</MudStack>
</MudHidden>
@* Mobile display *@
<MudHidden Breakpoint="Breakpoint.MdAndUp">
<MudStack Row="false" StretchItems="StretchItems.StartAndEnd">
<MudStack>
<MudTextField @bind-Value="_sourceText" @bind-Value:after="UpdateTranslatedText" DebounceInterval="500"
Variant="Variant.Outlined" Label="Source text" Lines="15" />
</MudStack>
<MudStack Spacing="1" Row="true">
<MudTooltip Text="Swap languages">
<MudIconButton Icon="@Icons.Material.Filled.SwapHoriz" Color="Color.Primary" OnClick="SwapArrowClicked"/>
</MudTooltip>
<MudTooltip Text="Copy translation result">
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Color="Color.Primary" OnClick="CopyResultClicked"/>
</MudTooltip>
<MudTooltip Text="Clear source text">
<MudIconButton Icon="@Icons.Material.Filled.Clear" Color="Color.Error" OnClick="ClearButtonClicked"/>
</MudTooltip>
</MudStack>
<MudStack>
<MudTextField @bind-Value="_translatedText" ReadOnly="true"
Variant="Variant.Outlined" Label="Translation result" Lines="15" />
</MudStack>
</MudStack>
</MudHidden>
@code {
private const string EnglishSourceLanguage = "English";
private const string PoyoSourceLanguage = "PoyoLang";
private string _sourceText = "";
private string _translatedText = "";
private string _sourceLanguage = EnglishSourceLanguage;
protected override void OnInitialized()
{
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.BottomCenter;
}
private void SourceLanguageUpdated()
{
UpdateTranslatedText();
}
private void SwapArrowClicked()
{
_sourceLanguage = _sourceLanguage switch
{
PoyoSourceLanguage => EnglishSourceLanguage,
_ => PoyoSourceLanguage
};
SwapLanguages();
}
private void SwapLanguages()
{
_sourceText = _translatedText;
UpdateTranslatedText();
}
private void UpdateTranslatedText()
{
string result;
if (_sourceLanguage is PoyoSourceLanguage)
{
result = Translator.TranslateFromPoyo(_sourceText);
}
else
{
result = Translator.TranslateToPoyo(_sourceText);
}
_translatedText = result;
}
private async Task CopyResultClicked()
{
await JsRuntime.InvokeVoidAsync("navigator.clipboard.writeText", _translatedText);
Snackbar.Add("Translation result copied to clipboard!", Severity.Info);
}
private void ClearButtonClicked()
{
_sourceText = string.Empty;
_translatedText = string.Empty;
}
}

View File

@@ -0,0 +1,6 @@
<Router AppAssembly="typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)"/>
<FocusOnNavigate RouteData="routeData" Selector="h1"/>
</Found>
</Router>

View File

@@ -0,0 +1,12 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using MudBlazor
@using MudBlazor.Services
@using PoyoLang.Translator.Web
@using PoyoLang.Translator.Web.Components

View File

@@ -1,14 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>PoyoLang.Translator.Web</RootNamespace>
<Version>0.1.2</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="MudBlazor" Version="8.*"/>
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\PoyoLang.Translator\PoyoLang.Translator.csproj" /> <ProjectReference Include="..\PoyoLang.Translator\PoyoLang.Translator.csproj" />
</ItemGroup> </ItemGroup>
</Project>
</Project>

View File

@@ -0,0 +1,34 @@
using MudBlazor.Services;
using PoyoLang.Translator;
using PoyoLang.Translator.Web.Components;
var builder = WebApplication.CreateBuilder(args);
// Add MudBlazor services
builder.Services.AddMudServices();
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddSingleton<PoyoLangTranslator>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.Run();

View File

@@ -0,0 +1,23 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5083",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7137;http://localhost:5083",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,320 +1,320 @@
poyo= poyo=
poyó=e poyó=a
poyò=t poyò=b
poyô=a poyô=c
poyö=o poyö=d
poyõ=i poyõ=e
poyō=n poyō=f
poyǒ=e poyǒ=g
póyo=r póyo=h
póyó=h póyó=i
póyò=s póyò=j
póyô=l póyô=k
póyö=d póyö=l
póyõ=c póyõ=m
póyō=th póyō=n
póyǒ=u póyǒ=o
pòyo=t pòyo=p
pòyó=he pòyó=q
pòyò=m pòyò=r
pòyô=b pòyô=s
pòyö=f pòyö=t
pòyõ=y pòyõ=u
pòyō=p pòyō=v
pòyǒ=the pòyǒ=w
pôyo=n pôyo=x
pôyó=w pôyó=y
pôyò=g pôyò=z
pôyô=he pôyô=e
pôyö=in pôyö=th
pôyõ=y pôyõ=t
pôyō=d pôyō=he
pôyǒ=r pôyǒ=the
pöyo=an pöyo=n
pöyó=er pöyó=he
pöyò=the pöyò=in
pöyô=be pöyô=y
pöyö=at pöyö=d
pöyõ=re pöyõ=r
pöyō=v pöyō=an
pöyǒ=on pöyǒ=er
põyo=o põyo=the
põyó=nd põyó=be
põyò=or põyò=at
põyô=be põyô=re
põyö=ha põyö=on
põyõ=en põyõ=o
põyō=to põyō=nd
põyǒ=ve põyǒ=or
pōyo=ou pōyo=be
pōyó=nd pōyó=ha
pōyò=it pōyò=en
pōyô=st pōyô=to
pōyö=l pōyö=ve
pōyõ=k pōyõ=ou
pōyō=te pōyō=nd
pōyǒ=al pōyǒ=it
pǒyo=ti pǒyo=st
pǒyó=f pǒyó=l
pǒyò=and pǒyò=te
pǒyô=s pǒyô=al
pǒyö=er pǒyö=ti
pǒyõ=nt pǒyõ=f
pǒyō=and pǒyō=and
pǒyǒ=of pǒyǒ=s
payo=ar payo=er
payó=a payó=nt
payò=se payò=and
payô=to payô=of
payö=ea payö=ar
payõ=hi payõ=a
payō=of payō=se
payǒ=me payǒ=to
páyo=le páyo=ea
páyó=on páyó=hi
páyò=h páyò=of
páyô=co páyô=me
páyö=is páyö=le
páyõ=in páyõ=on
páyō=at páyō=h
páyǒ=ro páyǒ=co
pàyo=ll pàyo=is
pàyó=ve pàyó=in
pàyò=de pàyò=at
pàyô=es pàyô=ro
pàyö=ng pàyö=ll
pàyõ=io pàyõ=ve
pàyō=om pàyō=de
pàyǒ=ne pàyǒ=es
pâyo=ic pâyo=ng
pâyó=li pâyó=io
pâyò=ri pâyò=om
pâyô=ra pâyô=ne
pâyö=as pâyö=ic
pâyõ=ce pâyõ=li
pâyō=g pâyō=ri
pâyǒ=ho pâyǒ=ra
päyo=ion päyo=as
päyó=ca päyó=ce
päyò=or päyò=g
päyô=ta päyô=ho
päyö=ut päyö=ion
päyõ=el päyõ=ca
päyō=ch päyō=or
päyǒ=m päyǒ=ta
pãyo=hat pãyo=ut
pãyó=ma pãyó=el
pãyò=hat pãyò=ch
pãyô=ur pãyô=m
pãyö=k pãyö=hat
pãyõ=ng pãyõ=ma
pãyō=fo pãyō=hat
pãyǒ=re pãyǒ=ur
pāyo=no pāyo=k
pāyó=si pāyó=ng
pāyò=her pāyò=fo
pāyô=av pāyô=re
pāyö=nt pāyö=no
pāyõ=tha pāyõ=si
pāyō=ion pāyō=her
pāyǒ=il pāyǒ=av
pǎyo=ent pǎyo=nt
pǎyó=et pǎyó=tha
pǎyò=la pǎyò=ion
pǎyô=us pǎyô=il
pǎyö=ac pǎyö=ent
pǎyõ=ly pǎyõ=et
pǎyō=ing pǎyō=la
pǎyǒ=wh pǎyǒ=us
piyo=ow piyo=ac
piyó=ave piyó=ly
piyò=pe piyò=ing
piyô=ec piyô=wh
piyö=ly piyö=ow
piyõ=ot piyõ=ave
piyō=tio piyō=pe
piyǒ=ll piyǒ=ec
píyo=tion píyo=ly
píyó=wi píyó=ot
píyò=ave píyò=tio
píyô=se píyô=ll
píyö=al píyö=tion
píyõ=ing píyõ=wi
píyō=ge píyō=ave
píyǒ=it píyǒ=se
pìyo=so pìyo=al
pìyó=that pìyó=ing
pìyò=that pìyò=ge
pìyô=for pìyô=it
pìyö=ay pìyö=so
pìyõ=st pìyõ=that
pìyō=lo pìyō=that
pìyǒ=pr pìyǒ=for
pîyo=ee pîyo=ay
pîyó=hav pîyó=st
pîyò=have pîyò=lo
pîyô=have pîyô=pr
pîyö=tr pîyö=ee
pîyõ=sh pîyõ=hav
pîyō=le pîyō=have
pîyǒ=w pîyǒ=have
pïyo=mo pïyo=tr
pïyó=an pïyó=sh
pïyò=tion pïyò=le
pïyô=ut pïyô=w
pïyö=un pïyö=mo
pïyõ=ce pïyõ=an
pïyō=ct pïyō=tion
pïyǒ=ay pïyǒ=ut
pĩyo=me pĩyo=un
pĩyó=di pĩyó=ce
pĩyò=ss pĩyò=ct
pĩyô=ed pĩyô=ay
pĩyö=i pĩyö=me
pĩyõ=we pĩyõ=di
pĩyō=ol pĩyō=ss
pĩyǒ=yo pĩyǒ=ed
pīyo=ul pīyo=i
pīyó=rt pīyó=we
pīyò=te pīyò=ol
pīyô=em pīyô=yo
pīyö=th pīyö=ul
pīyõ=ter pīyõ=rt
pīyō=do pīyō=te
pīyǒ=ke pīyǒ=em
pǐyo=po pǐyo=th
pǐyó=ir pǐyó=ter
pǐyò=thi pǐyò=do
pǐyô=nc pǐyô=ke
pǐyö=you pǐyö=po
pǐyõ=his pǐyõ=ir
pǐyō=im pǐyō=thi
pǐyǒ=is pǐyǒ=nc
puyo=oo puyo=you
puyó=all puyó=his
puyò=ent puyò=im
puyô=ig puyô=is
puyö=pa puyö=oo
puyõ=ate puyõ=all
puyō=p puyō=ent
puyǒ=ati puyǒ=ig
púyo=ld púyo=pa
púyó=fi púyó=ate
púyò=his púyò=p
púyô=en púyô=ati
púyö=ver púyö=ld
púyõ=na púyõ=fi
púyō=mi púyō=his
púyǒ=ry púyǒ=en
pùyo=ai pùyo=ver
pùyó=pl pùyó=na
pùyò=ow pùyò=mi
pùyô=gh pùyô=ry
pùyö=wo pùyö=ai
pùyõ=sa pùyõ=pl
pùyō=ad pùyō=ow
pùyǒ=her pùyǒ=gh
pûyo=ld pûyo=wo
pûyó=ev pûyó=sa
pûyò=su pûyò=ad
pûyô=os pûyô=her
pûyö=iv pûyö=ld
pûyõ=for pûyõ=ev
pûyō=ther pûyō=su
pûyǒ=wa pûyǒ=os
püyo=ni püyo=iv
püyó=ry püyó=for
püyò=ith püyò=ther
püyô=am püyô=wa
püyö=bo püyö=ni
püyõ=u püyõ=ry
püyō=ch püyō=ith
püyǒ=ab püyǒ=am
pũyo=ou pũyo=bo
pũyó=you pũyó=u
pũyò=op pũyò=ch
pũyô=id pũyô=ab
pũyö=wit pũyö=ou
pũyõ=ne pũyõ=you
pũyō=bu pũyō=op
pũyǒ=with pũyǒ=id
pūyo=fe pūyo=wit
pūyó=tu pūyó=ne
pūyò=bl pūyò=bu
pūyô=ere pūyô=with
pūyö=atio pūyö=fe
pūyõ=x pūyõ=tu
pūyō=ed pūyō=bl
pūyǒ=ation pūyǒ=ere
pǔyo=ome pǔyo=atio
pǔyó=out pǔyó=ed
pǔyò=con pǔyò=ation
pǔyô=ke pǔyô=ome
pǔyö=ns pǔyö=out
pǔyõ=rea pǔyõ=con
pǔyō=eve pǔyō=ke
pǔyǒ=ci pǔyǒ=ns
peyo=ie peyo=rea
peyó=com peyó=eve
peyò=ar peyò=ci
peyô=et peyô=ie
peyö=ith peyö=com
peyõ=vi peyõ=ar
peyō=ty peyō=et
peyǒ=with peyǒ=ith
péyo=ear péyo=vi
péyó=fr péyó=ty
péyò=if péyò=with
péyô=ag péyô=ear
péyö=res péyö=fr
péyõ=ate péyõ=if
péyō=do péyō=ag
péyǒ=mp péyǒ=res
pèyo=ey pèyo=ate
pèyó=ive pèyó=do
pèyò=ia pèyò=mp
pèyô=pro pèyô=ey
pèyö=ba pèyö=ive
pèyõ=ov pèyõ=ia
pèyō=nce pèyō=pro
pèyǒ=as pèyǒ=ba
pêyo=ck pêyo=ov
pêyó=sta pêyó=nce
pêyò=sp pêyò=as
pêyô=ty pêyô=ck
pêyö=gr pêyö=sta
pêyõ=ter pêyõ=sp
pêyō=ation pêyō=ty
pêyǒ=hin pêyǒ=gr
pëyo=ess pëyo=ter
pëyó=ak pëyó=ation
pëyò=ge pëyò=hin
pëyô=ill pëyô=ess
pëyö=go pëyö=ak
pëyõ=out pëyõ=ge
pëyō=our pëyō=ill
pëyǒ=ot pëyǒ=go
pẽyo=ey pẽyo=out
pẽyó=fa pẽyó=our
pẽyò=ss pẽyò=ot
pẽyô=igh pẽyô=ey
pẽyö=not pẽyö=fa
pẽyõ=int pẽyõ=ss
pẽyō=ex pẽyō=igh
pẽyǒ=j pẽyǒ=not
pēyo=om pēyo=int
pēyó=one pēyó=ex
pēyò=ap pēyò=om
pēyô=men pēyô=one
pēyö=all pēyö=ap
pēyõ=od pēyõ=men
pēyō=here pēyō=all
pēyǒ=est pēyǒ=od
pěyo=up pěyo=here
pěyó=ive pěyó=est
pěyò=rs pěyò=up
pěyô=ere pěyô=ive
pěyö=ove pěyö=rs
pěyõ=nce pěyõ=ere
pěyō=ide pěyō=ove
pěyǒ=uc pěyǒ=nce

View File

@@ -2,14 +2,14 @@
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Dictionary", "PoyoLang.Dictionary\PoyoLang.Dictionary.csproj", "{2D875AAD-BE17-4D15-A876-19DF1DCC57F5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Dictionary", "PoyoLang.Dictionary\PoyoLang.Dictionary.csproj", "{2D875AAD-BE17-4D15-A876-19DF1DCC57F5}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Test", "PoyoLang.Test\PoyoLang.Test.csproj", "{4CB193B2-44F2-4926-A56E-9A0CDCBC828C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Dictionary.Generation", "PoyoLang.Dictionary.Generation\PoyoLang.Dictionary.Generation.csproj", "{43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Dictionary.Generation", "PoyoLang.Dictionary.Generation\PoyoLang.Dictionary.Generation.csproj", "{43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Translator.SourceGenerator", "PoyoLang.Translator.SourceGenerator\PoyoLang.Translator.SourceGenerator.csproj", "{0411CE3E-B80E-4AC3-839F-307AD0A16774}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Translator.SourceGenerator", "PoyoLang.Translator.SourceGenerator\PoyoLang.Translator.SourceGenerator.csproj", "{0411CE3E-B80E-4AC3-839F-307AD0A16774}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Translator", "PoyoLang.Translator\PoyoLang.Translator.csproj", "{079808D0-16FB-4D01-A502-5366018312CB}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Translator", "PoyoLang.Translator\PoyoLang.Translator.csproj", "{079808D0-16FB-4D01-A502-5366018312CB}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoyoLang.Translator.Web", "PoyoLang.Translator.Web\PoyoLang.Translator.Web.csproj", "{4620AA2D-D39E-4393-980C-E4DD25E624C3}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -20,10 +20,6 @@ Global
{2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Debug|Any CPU.Build.0 = Debug|Any CPU {2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Release|Any CPU.ActiveCfg = Release|Any CPU {2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Release|Any CPU.Build.0 = Release|Any CPU {2D875AAD-BE17-4D15-A876-19DF1DCC57F5}.Release|Any CPU.Build.0 = Release|Any CPU
{4CB193B2-44F2-4926-A56E-9A0CDCBC828C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CB193B2-44F2-4926-A56E-9A0CDCBC828C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4CB193B2-44F2-4926-A56E-9A0CDCBC828C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4CB193B2-44F2-4926-A56E-9A0CDCBC828C}.Release|Any CPU.Build.0 = Release|Any CPU
{43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Debug|Any CPU.Build.0 = Debug|Any CPU {43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Release|Any CPU.ActiveCfg = Release|Any CPU {43FFCEF2-A4AA-49A1-9731-CB6DAD9863F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -36,5 +32,9 @@ Global
{079808D0-16FB-4D01-A502-5366018312CB}.Debug|Any CPU.Build.0 = Debug|Any CPU {079808D0-16FB-4D01-A502-5366018312CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{079808D0-16FB-4D01-A502-5366018312CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {079808D0-16FB-4D01-A502-5366018312CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{079808D0-16FB-4D01-A502-5366018312CB}.Release|Any CPU.Build.0 = Release|Any CPU {079808D0-16FB-4D01-A502-5366018312CB}.Release|Any CPU.Build.0 = Release|Any CPU
{4620AA2D-D39E-4393-980C-E4DD25E624C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4620AA2D-D39E-4393-980C-E4DD25E624C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4620AA2D-D39E-4393-980C-E4DD25E624C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4620AA2D-D39E-4393-980C-E4DD25E624C3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

12
docker-publish.sh Normal file
View File

@@ -0,0 +1,12 @@
#!/bin/sh
version=$(grep -oPm1 "(?<=<Version>)[^<]+" PoyoLang.Translator.Web/PoyoLang.Translator.Web.csproj)
dotnet.exe publish PoyoLang.Translator.Web \
-c Release \
-r linux-x64 \
-p:PublishProfile=DefaultContainer \
-p:InvariantGlobalization=true \
-p:ContainerFamily=alpine \
-p:ContainerRegistry=git.ilysix.fr \
-p:ContainerRepository=Eveldee/PoyoLang \
-p:ContainerImageTags="\"latest;$version\""