Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e3be9ed41 |
No files matched your search
@@ -167,6 +167,10 @@ The Android release key: alias `meweb`, certificate SHA-256
|
||||
right-to-left languages the `Localizer` wraps the name in U+2066/U+2069 (left-to-right isolate), the English fallback
|
||||
included: without it Avalonia lays out ”me-web?“ alone on a line as `me-web?”“`, and inside a sentence the `?`
|
||||
jumps to the other end of the name. A left-to-right mark after the name was tried and does not fix the lone title.
|
||||
- **Avalonia 12 refreshes an indexer binding only on `PropertyChanged("Item")`.** `{s:Tr Key}` binds `Localizer.Instance[Key]`;
|
||||
the WPF name `"Item[]"` and `""` refresh nothing, so until 0.7.1 changing the language left every `{s:Tr}` text in
|
||||
the old one while the view models' `*Formatted` strings followed. The screenshot tool draws each `start-<code>`
|
||||
shot by switching from English on a live view, which is the check that would have caught it.
|
||||
- **Values worth copying are read-only text boxes with a copy button inside** (`Views/CopyField`): addresses, the
|
||||
router, the network, the reverse name, the route, the STUN answers and a submission's code. The box is
|
||||
left-to-right in every language and copies the raw value, never the bidi marks `Texts.Isolate` adds to display
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>0.7.0</Version>
|
||||
<Version>0.7.1</Version>
|
||||
<Product>“me-web?”</Product>
|
||||
<Company>Arasaka di Hvozdikov Yevheniy</Company>
|
||||
<Copyright>© 2026 Arasaka di Hvozdikov Yevheniy</Copyright>
|
||||
|
||||
@@ -53,7 +53,7 @@ public sealed class Localizer : INotifyPropertyChanged
|
||||
Culture = CultureFor(Language.Code);
|
||||
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.DefaultThreadCurrentUICulture = Culture;
|
||||
CultureInfo.CurrentCulture = CultureInfo.CurrentUICulture = Culture;
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item"));
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(string.Empty));
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,9 @@
|
||||
<Grid>
|
||||
<DockPanel>
|
||||
<Grid DockPanel.Dock="Top" ColumnDefinitions="*,Auto,Auto" Margin="20,14,20,6">
|
||||
<TextBlock Grid.Column="0" Classes="title" Text="{s:Tr AppName}" VerticalAlignment="Center" />
|
||||
<Viewbox Grid.Column="0" StretchDirection="DownOnly" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0,0,10,0">
|
||||
<TextBlock Classes="title" Text="{s:Tr AppName}" />
|
||||
</Viewbox>
|
||||
<Button Grid.Column="1" Classes="round" Margin="0,0,10,0" VerticalAlignment="Center"
|
||||
AutomationProperties.AutomationId="main-contacts"
|
||||
AutomationProperties.Name="{s:Tr Contacts}"
|
||||
|
||||
@@ -19,6 +19,7 @@ Directory.CreateDirectory(output);
|
||||
var session = HeadlessUnitTestSession.StartNew(typeof(ScreenshotEntry));
|
||||
await session.Dispatch(async () =>
|
||||
{
|
||||
var saved = AppSettings.Read();
|
||||
var run = await App.Services.GetRequiredService<CheckRunner>().Run((_, _) => { }, CancellationToken.None);
|
||||
Console.WriteLine($"run: {string.Join(", ", run.Findings.Select(f => $"{f.Id}={f.Outcome}"))}");
|
||||
foreach (var (width, height, label) in new[] { (1100, 1500, "desktop"), (400, 8000, "phone") })
|
||||
@@ -29,7 +30,8 @@ await session.Dispatch(async () =>
|
||||
Shoot(width, height, $"main-{label}-{code}", model => model.Replay(run));
|
||||
if (label != "desktop")
|
||||
{
|
||||
Shoot(width, 860, $"start-{code}", _ => { });
|
||||
Localizer.Instance.SetLanguage(Languages.Fallback);
|
||||
Shoot(width, 860, $"start-{code}", model => model.SelectedLanguage = Languages.Find(code) ?? Languages.Fallback);
|
||||
continue;
|
||||
}
|
||||
Shoot(width, 900, $"contacts-{code}", model => model.ShowContacts = true);
|
||||
@@ -40,6 +42,7 @@ await session.Dispatch(async () =>
|
||||
});
|
||||
}
|
||||
}
|
||||
AppSettings.Write(saved);
|
||||
return 0;
|
||||
}, CancellationToken.None);
|
||||
Environment.Exit(0);
|
||||
|
||||
Reference in new issue
Block a user